From 43523762b9513980d5fb497ab8029eb3e81b69ae Mon Sep 17 00:00:00 2001 From: danielpeintner Date: Tue, 11 Oct 2022 15:10:17 +0200 Subject: [PATCH] add initial version for node-wot --- .../Profile/Results/node-wot.csv | 162 ++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 events/2022.09.Online/Profile/Results/node-wot.csv diff --git a/events/2022.09.Online/Profile/Results/node-wot.csv b/events/2022.09.Online/Profile/Results/node-wot.csv new file mode 100644 index 00000000..1f08f8af --- /dev/null +++ b/events/2022.09.Online/Profile/Results/node-wot.csv @@ -0,0 +1,162 @@ +"Index","ID","Status","Comment","Assertion" +0,"profile-abstract-1","null","not testable with Assertion Tester","A TD that is compliant to the HTTP Basic Profile MUST adhere to both the common constraints and the protocol binding." +1,"profile-why-a-basic-profile-1-x","null","not testable with Assertion Tester","The HTTP Basic Profile contains additional normative requirements that MUST be satisfied by devices to be compliant to the profile." +2,"profiling-mechanism-1","not-impl","not testable with Assertion Tester","In order to conform with a profile, a Web Thing MUST conform with all the normative statements in the profile's specification." +3,"profiling-mechanism-2","not-impl","not testable with Assertion Tester","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]]." +4,"profiling-mechanism-3","not-impl","not testable with Assertion Tester","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." +5,"profiling-mechanism-4","not-impl","not testable with Assertion Tester","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]]." +6,"common-constraints-units","null","user/developer free to choose","It is highly RECOMMENDED to provide a unit, if a value has a physical quantity." +7,"common-constraints-units-metric","null","user/developer free to choose","It is highly RECOMMENDED to use the metric system (SI units) for devices that are used in global deployments." +8,"common-constraints-date-format-1","null","not testable with Assertion Tester","All date and time values MUST use the canonical dateTime representation format defined in section 3.2.7 of [xmlschema-2]." +9,"common-constraints-date-format-2","null","not testable with Assertion Tester","All dateTime values SHOULD use UTC as the time zone and use the 'Z' identifier." +10,"common-constraints-date-format-3","null","not testable with Assertion Tester","A time value of 24:00 is not permitted; the value 00:00 MUST be used instead." +11,"common-constraints-security-1","null","not testable with Assertion Tester","Below is a list of security schemes [[wot-thing-description]] which conformant Web Things MAY use: NoSecurityScheme BasicSecurityScheme DigestSecurityScheme BearerSecurityScheme OAuth2SecurityScheme" +12,"common-constraints-security-2","not-impl","node-wot does not support DigestSecurityScheme","Conformant Consumers MUST support all of these security schemes." +13,"common-constraints-security-3","pass","not testable with Assertion Tester","A Thing MAY implement multiple security schemes." +14,"common-constraints-security-4","impl","not testable with Assertion Tester","Security schemes MUST be applied using the top level security member of a Thing." +15,"common-constraints-security-5","impl","not testable with Assertion Tester","Security schemes MUST NOT be applied to individual Forms." +16,"common-constraints-discovery-1","impl","not testable with Assertion Tester","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]]." +17,"common-constraints-links-1","null","what does supported mean?","The following keywords are defined for the HTTP profiles and MUST be supported by all consumers." +18,"common-constraints-links-2","impl","not testable with Assertion Tester","Other keywords for links MAY be present in a TD, however their interpretation is undefined in the context of the HTTP profiles" +19,"common-constraints-links-3","impl","not testable with Assertion Tester","These keywords MAY be ignored by all profile-compliant consumers." +20,"common-constraints-links-media-types-1","not-impl","Markdown not supported but could be easily added","The following media types from IANA are defined for the link targets of compliant TDs. They MUST be supported by all consumers." +21,"common-constraints-links-media-types-2","impl","not testable with Assertion Tester","Other media types MAY be present in a TD." +22,"common-constraints-links-media-types-3","impl","not testable with Assertion Tester","Their interpretation is undefined in the context of the HTTP profiles and they MAY be ignored by all profile-compliant consumers." +23,"common-constraints-errors-1","pass","not testable with Assertion Tester","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." +24,"common-constraints-errors-2","impl","not testable with Assertion Tester","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" +25,"common-constraints-errors-3","not-impl","not testable with Assertion Tester","A Web Thing MAY respond with 3xx status codes for the purposes of redirection, caching or authentication." +26,"common-constraints-errors-4","not-impl","not testable with Assertion Tester","A Web Thing MUST NOT respond with a 300 Multiple Choices status code." +27,"common-constraints-errors-5","null","not testable with Assertion Tester","Web Things MAY respond with other valid HTTP error codes (e.g. 418 I'm a teapot)." +28,"common-constraints-errors-6","null","not testable with Assertion Tester","Consumers MAY interpret other valid HTTP error codes as a generic 4xx or 5xx error with no special defined behaviour." +29,"common-constraints-errors-7","not-impl","not testable with Assertion Tester","If an HTTP error response contains a body, the content of that body MUST conform with the Problem Details format [[RFC7807]]." +30,"common-constraints-default-language","null","not testable with Assertion Tester","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)." +31,"http-basic-profile-1","not-impl","not testable with Assertion Tester","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." +32,"http-basic-profile-identifier-1","not-impl","not testable with Assertion Tester","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." +33,"profile-5-2-thing-protocol-binding-1","not-impl","Partial?","A Consumer or Web Thing conforming to the HTTP Basic Profile MUST implement this protocol binding." +34,"http-basic-profile-protocol-binding-readproperty-1","impl","not testable with Assertion Tester","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" +35,"http-basic-profile-protocol-binding-readproperty-3","impl","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the Property resource." +36,"http-basic-profile-protocol-binding-readproperty-4","impl","not testable with Assertion Tester","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" +37,"http-basic-profile-protocol-binding-readproperty-6","impl","not testable with Assertion Tester","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" +38,"http-basic-profile-protocol-binding-writeproperty-1","impl","not testable with Assertion Tester","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" +39,"http-basic-profile-protocol-binding-writeproperty-3","impl","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the Property resource." +40,"http-basic-profile-protocol-binding-writeproperty-4","impl","not testable with Assertion Tester","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" +41,"http-basic-profile-protocol-binding-writeproperty-6","null","we seem to have a mixture between 200 and 204","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" +42,"http-basic-profile-protocol-binding-readallproperties-1","impl","not testable with Assertion Tester","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" +43,"http-basic-profile-protocol-binding-readallproperties-3","impl","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the Properties resource." +44,"http-basic-profile-protocol-binding-readallproperties-4","impl","not testable with Assertion Tester","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" +45,"http-basic-profile-protocol-binding-readallproperties-5","impl","not testable with Assertion Tester","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" +46,"http-basic-profile-protocol-binding-writemultipleproperties-1","impl","not testable with Assertion Tester","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" +47,"http-basic-profile-protocol-bindings-writemultipleproperties-3","impl","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the Properties resource." +48,"http-basic-profile-protocol-binding-writemultipleproperties-4","impl","not testable with Assertion Tester","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" +49,"http-basic-profile-protocol-binding-writemultipleproperties-6","null","200 or 204 - not sure","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" +50,"http-basic-profile-protocol-binding-invokeaction-1","impl","not testable with Assertion Tester","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" +51,"http-basic-profile-protocol-binding-invokeaction-3","impl","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the Action resource." +52,"http-basic-profile-protocol-binding-invokeaction-4","impl","not testable with Assertion Tester","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" +53,"http-basic-profile-protocol-binding-invokeaction-6","null","not testable with Assertion Tester","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" +54,"http-basic-profile-protocol-binding-invokeaction-8","not-impl","not testable with Assertion Tester","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." +55,"http-basic-profile-protocol-binding-invokeaction-9","null","not testable with Assertion Tester","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." +56,"http-basic-profile-protocol-binding-invokeaction-10","impl","not testable with Assertion Tester","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." +57,"http-basic-profile-protocol-binding-invokeaction-11a","not-impl","not testable with Assertion Tester","Conforming Consumers MUST support all three types of response to the initial invokeaction request." +58,"http-basic-profile-protocol-binding-invokeaction-11b","not-impl","not testable with Assertion Tester","After the initial request, support for subsequent operations on an ActionStatus resource is OPTIONAL." +59,"http-basic-profile-protocol-binding-invokeaction-12","not-impl","not testable with Assertion Tester","The status of an 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 polled with a queryaction operation to get the latest status of the action, 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, in ISO format [[ISO8601-1]] (see Date format for additional constraints). optional string timeEnded A timestamp indicating the time at which the Thing successfully completed executing the action, or failed to execute the action, in ISO format [[ISO8601-1]] (see Date format for additional constraints). optional string" +60,"http-basic-profile-protocol-binding-invokeaction-13","not-impl","not testable with Assertion Tester","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 an ActionStatus object serialized in JSON" +61,"http-basic-profile-protocol-binding-invokeaction-15","not-impl","not testable with Assertion Tester","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" +62,"http-basic-profile-protocol-binding-queryaction-1a","not-impl","not testable with Assertion Tester","A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MUST also support queryaction operations on that same Action." +63,"http-basic-profile-protocol-binding-queryaction-1b","null","not testable with Assertion Tester","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." +64,"http-basic-profile-protocol-binding-queryaction-2","not-impl","not testable with Assertion Tester","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." +65,"http-basic-profile-protocol-binding-queryaction-3","not-impl","not testable with Assertion Tester","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" +66,"http-basic-profile-protocol-binding-queryaction-5","not-impl","not testable with Assertion Tester","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" +67,"http-basic-profile-protocol-binding-queryaction-7a","not-impl","not testable with Assertion Tester","If the queried action failed to execute, then the status member of the ActionStatus object MUST be set to ""failed""." +68,"http-basic-profile-protocol-binding-queryaction-7b","not-impl","not testable with Assertion Tester","If the queried action failed to execute, then the error member MAY provide additional error information conforming to the Problem Details format [[RFC7807]]." +69,"http-basic-profile-protocol-binding-cancelaction-1a","not-impl","not testable with Assertion Tester","A Web Thing which provides Asynchronous Action Responses to an invokeaction operation on an Action MAY also support cancelaction operations on that same Action." +70,"http-basic-profile-protocol-binding-cancelaction-1b","not-impl","not testable with Assertion Tester","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." +71,"http-basic-profile-protocol-binding-cancelaction-2","not-impl","not testable with Assertion Tester","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." +72,"http-basic-profile-protocol-binding-cancelaction-3","not-impl","not testable with Assertion Tester","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" +73,"http-basic-profile-protocol-binding-cancelaction-5","not-impl","not testable with Assertion Tester","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" +74,"http-basic-profile-protocol-binding-queryallactions-1","not-impl","not testable with Assertion Tester","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" +75,"http-basic-profile-protocol-binding-queryallactions-3","not-impl","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the Actions resource." +76,"http-basic-profile-protocol-binding-queryallactions-4","not-impl","not testable with Assertion Tester","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" +77,"http-basic-profile-protocol-binding-queryallactions-6a","not-impl","not testable with Assertion Tester","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." +78,"http-basic-profile-protocol-binding-queryallactions-6b","not-impl","not testable with Assertion Tester","Each array in the result object MUST be sorted in reverse chronological order such that the most recent action request appears first." +79,"http-sse-profile-1","not-impl","not testable with Assertion Tester","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." +80,"http-sse-profile-identifier-1","not-impl","not testable with Assertion Tester","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." +81,"http-sse-profile-protocol-binding-1","not-impl","not testable with Assertion Tester","A Consumer or Web Thing conforming to the HTTP SSE Profile MUST implement this protocol binding." +82,"http-sse-profile-protocol-binding-observeproperty-1","null","not testable with Assertion Tester","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" +83,"http-sse-profile-protocol-binding-observeproperty-2","null","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the Property resource." +84,"http-sse-profile-protocol-binding-observeproperty-3","null","not testable with Assertion Tester","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." +85,"http-sse-profile-protocol-binding-observeproperty-4","null","not testable with Assertion Tester","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." +86,"http-sse-profile-protocol-binding-observeproperty-5a","null","not testable with Assertion Tester","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." +87,"http-sse-profile-protocol-binding-observeproperty-5b","null","not testable with Assertion Tester","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." +88,"http-sse-profile-protocol-binding-observeproperty-5c","null","not testable with Assertion Tester","The id field SHOULD be set to a unique identifier for the property change, for use when re-establishing a dropped connection (see below)." +89,"http-sse-profile-protocol-binding-observeproperty-5d","null","not testable with Assertion Tester","It is RECOMMENDED that the identifier is a timestamp representing the time at which the property changed, in the ""date-time"" format specified by [[RFC3339]]." +90,"http-sse-profile-protocol-binding-observeproperty-6a","null","not testable with Assertion Tester","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]]." +91,"http-sse-profile-protocol-binding-observeproperty-6b","null","not testable with Assertion Tester","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." +92,"http-sse-profile-protocol-binding-unobserveproperty-1","null","not testable with Assertion Tester","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]]." +93,"http-sse-profile-protocol-binding-observeallproperties-1","null","not testable with Assertion Tester","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" +94,"http-sse-profile-protocol-binding-observeallproperties-2","null","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the properties resource." +95,"http-sse-profile-protocol-binding-observeallproperties-3","null","not testable with Assertion Tester","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." +96,"http-sse-profile-protocol-binding-observeallproperties-4","null","not testable with Assertion Tester","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." +97,"http-sse-profile-protocol-binding-observeallproperties-5a","null","not testable with Assertion Tester","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." +98,"http-sse-profile-protocol-binding-observeallproperties-5b","null","not testable with Assertion Tester","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." +99,"http-sse-profile-protocol-binding-observeallproperties-5c","null","not testable with Assertion Tester","The property data MUST follow the data schema specified in the PropertyAffordance and MUST be serialized in JSON." +100,"http-sse-profile-protocol-binding-observeallproperties-5d","null","not testable with Assertion Tester","The id field SHOULD be set to a unique identifier for the event, for use when re-establishing a dropped connection (see below)." +101,"http-sse-profile-protocol-binding-observeallproperties-5e","null","not testable with Assertion Tester","It is RECOMMENDED that the identifier is a timestamp representing the time at which the property changed, in the ""date-time"" format specified by [[RFC3339]]." +102,"http-sse-profile-protocol-binding-observeallproperties-6a","null","not testable with Assertion Tester","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]]." +103,"http-sse-profile-protocol-binding-observeallproperties-6b","null","not testable with Assertion Tester","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." +104,"http-sse-profile-protocol-binding-unobserveallproperties-1","null","not testable with Assertion Tester","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]]." +105,"http-sse-profile-protocol-binding-subscribeevent-1","null","not testable with Assertion Tester","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" +106,"http-sse-profile-protocol-binding-subscribeevent-3","null","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the Event resource." +107,"http-sse-profile-protocol-binding-subscribeevent-4","null","not testable with Assertion Tester","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." +108,"http-sse-profile-protocol-binding-subscribeevent-5","null","not testable with Assertion Tester","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." +109,"http-sse-profile-protocol-binding-subscribeevent-6a","null","not testable with Assertion Tester","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." +110,"http-sse-profile-protocol-binding-subscribeevent-6b","null","not testable with Assertion Tester","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." +111,"http-sse-profile-protocol-binding-subscribeevent-6c","null","not testable with Assertion Tester","The event data MUST follow the data schema specified in the EventAffordance and be serialized in JSON." +112,"http-sse-profile-protocol-binding-subscribeevent-6d","null","not testable with Assertion Tester","The id field SHOULD be set to a unique identifier for the event, for use when re-establishing a dropped connection (see below)." +113,"http-sse-profile-protocol-binding-subscribeevent-6e","null","not testable with Assertion Tester","It is RECOMMENDED that the identifier is a timestamp representing the time at which the event ocurred, in the ""date-time"" format specified by [[RFC3339]]." +114,"http-sse-profile-protocol-binding-subscribeevent-7a","null","not testable with Assertion Tester","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]]." +115,"http-sse-profile-protocol-binding-subscribeevent-7b","null","not testable with Assertion Tester","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." +116,"http-sse-profile-protocol-binding-unsubscribeevent-1","null","not testable with Assertion Tester","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]]." +117,"http-sse-profile-protocol-binding-subscribeallevents-1","null","not testable with Assertion Tester","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" +118,"http-sse-profile-protocol-binding-subscribeallevents-3b","null","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the events resource." +119,"http-sse-profile-protocol-binding-subscribeallevents-4","null","not testable with Assertion Tester","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." +120,"http-sse-profile-protocol-binding-subscribeallevents-3","null","not testable with Assertion Tester","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." +121,"http-sse-profile-protocol-binding-subscribeallevents-4a","null","not testable with Assertion Tester","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." +122,"http-sse-profile-protocol-binding-subscribeallevents-4b","null","not testable with Assertion Tester","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." +123,"http-sse-profile-protocol-binding-subscribeallevents-4c","null","not testable with Assertion Tester","The event data MUST follow the data schema specified in the EventAffordance and be serialized in JSON." +124,"http-sse-profile-protocol-binding-subscribeallevents-4d","null","not testable with Assertion Tester","The id field SHOULD be set to a unique identifier for the event, for use when re-establishing a dropped connection (see below)." +125,"http-sse-profile-protocol-binding-subscribeallevents-4e","null","not testable with Assertion Tester","It is RECOMMENDED that the identifier is a timestamp representing the time at which the event ocurred, in the ""date-time"" format specified by [[RFC3339]]." +126,"http-sse-profile-protocol-binding-subscribeallevents-5a","null","not testable with Assertion Tester","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]]." +127,"http-sse-profile-protocol-binding-subscribeallevents-5b","null","not testable with Assertion Tester","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." +128,"http-sse-profile-protocol-binding-unsubscribeallevents-1","null","not testable with Assertion Tester","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]]." +129,"http-webhook-profile-protocol-binding-general-1","null","not testable with Assertion Tester","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." +130,"http-webhook-profile-protocol-binding-general-2","null","not testable with Assertion Tester","The HTTP Webhook profile MAY be used as an alternative event mechanism to the HTTP SSE Profile." +131,"http-webhook-profile-protocol-binding-general-3","null","not testable with Assertion Tester","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." +132,"http-webhook-profile-protocol-binding-events-1","null","not testable with Assertion Tester","Depending on the use case, a single listener for multiple things and multiple event types MAY be used." +133,"http-webhook-profile-1","null","not testable with Assertion Tester","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." +134,"http-webhook-profile-message-format-1","null","not testable with Assertion Tester","Event notification messages MUST comply with the following data schema." +135,"http-webhook-profile-protocol-binding-1","null","not testable with Assertion Tester","A Consumer or Web Thing conforming to the HTTP Webhook Profile MUST implement this protocol binding." +136,"http-basic-profile-protocol-binding-subscribeevent-1","null","not testable with Assertion Tester","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""" +137,"http-webhook-profile-protocol-binding-subscribeevent-3","null","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the Event resource." +138,"http-webhook-profile-protocol-binding-subscribeevent-4","null","not testable with Assertion Tester","In order to subscribe to an event, a Consumer MUST provide the listener URL in the data payload of the subscribe operation of the Event resource." +139,"http-webhook-profile-protocol-binding-subscribeevent-5","null","not testable with Assertion Tester","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." +140,"http-webhook-profile-protocol-binding-subscribeevent-6","null","not testable with Assertion Tester","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""]." +141,"http-webhook-profile-protocol-binding-subscribeevent-4b","null","not testable with Assertion Tester","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." +142,"http-webhook-profile-protocol-binding-subscribeallevents-1","null","not testable with Assertion Tester","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""" +143,"http-webhook-profile-protocol-binding-subscribeallevents-3","null","not testable with Assertion Tester","The resolved value of the href member MUST then be used as the URL of the events resource." +144,"http-webhook-profile-protocol-binding-subscribeallevents-4","null","not testable with Assertion Tester","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 text/event-stream Request Payload contains a JSON object with a subscription payload." +145,"http-webhook-profile-protocol-binding-subscribeallevents-5","null","not testable with Assertion Tester","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." +146,"http-webhook-profile-protocol-binding-subscribeallevents-6","null","not testable with Assertion Tester","Whenever an event occurs, the Web Thing MUST send event data to the Consumer using the event payload format defined in section Message Format." +147,"http-webhook-profile-protocol-binding-subscribeallevents-7","null","not testable with Assertion Tester","If the connection between the Web Thing and the Consumer drops, the Web Thing MUST re-establish the connection." +148,"http-webhook-profile-protocol-binding-subscribeallevents-8","null","not testable with Assertion Tester","Once the connection is re-established the Web Thing SHOULD, if possible, send any missed events which occurred since the last successful event notification." +149,"http-webhook-profile-protocol-binding-unsubscribeallevents-1","null","not testable with Assertion Tester","In order to unsubscribe from all events, a Consumer MUST invoke the unsubscribe operation of the Event resource." +150,"http-webhook-profile-protocol-binding-event-connections-1","null","not testable with Assertion Tester","A HTTP(s) connection to the event listener of a Consumer MUST be initiated and managed by the Web Thing." +151,"http-webhook-profile-protocol-binding-event-connections-2","null","not testable with Assertion Tester","A Consumer MUST terminate the subscription with the events endpoint of the Web Thing." +152,"http-webhook-profile-protocol-binding-event-connections-3","null","not testable with Assertion Tester","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." +153,"http-webhook-profile-protocol-binding-event-connections-4","null","not testable with Assertion Tester","After the maximum number of retries was reached, the Web Thing MAY terminate the subscription without having received an unsubscribe or unsubscribeall operation." +154,"http-webhook-profile-protocol-binding--event-connections-5","null","not testable with Assertion Tester","If the connection between the Web Thing and the Consumer drops, the Web Thing MUST attempt to re-establish the connection." +155,"http-webhook-profile-protocol-binding-event-connections-6","null","not testable with Assertion Tester","Once the connection is re-established, the Web Thing SHOULD, if possible, send any missed events which occurred since the last successful event notification." +156,"http-webhook-profile-protocol-binding-event-connections-7","null","not testable with Assertion Tester","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." +157,"http-webhook-profile-protocol-binding--event-connections-8","null","not testable with Assertion Tester","When an event message has been received, the Consumer MUST respond with a ""HTTP 200 OK"" message." +158,"http-webhook-profile-protocol-binding-event-connections-9","null","not testable with Assertion Tester","An (optional) JSON payload MAY be provided to return a response back to the Web Thing via the same communication channel." +159,"privacy-considerations-1","null","not testable with Assertion Tester","The privacy considerations of the WoT Architecture and WoT Thing Description MUST be adopted by compliant implementations." +160,"security-considerations-1","null","not testable with Assertion Tester","The security considerations of the WoT Architecture and WoT Thing Description MUST be adopted by compliant implementations."