Conflicting descriptions for NotificationEventType E and expirationTime attribute
The description of NotificationEventType (NET) type E (Retrieve_of_Container_Resource_With_No_Child_Resource) in TS-0001, table 9.6.8-3, is as follows:
E. - An attempt to retrieve a direct-child-resource of a subscribed-to resource is performed while this child resource is an obsolete resource or the reference used for retrieving this resource is not assigned. This retrieval is performed by a RETRIEVE request targeting the subscribed-to resource with the Result Content parameter set to either "child-resources" or "attributes+child-resources". This value for the notificationEventType tag implies that the subscribed-to resource shall be an resource. Otherwise this setting is not valid.
There are problems with the highlighted part.
Obsolete resource
What does "obsolete" even mean? There is a mention in the definition of expirationTime:
expirationTime - Time/date after which the resource will be deleted by the Hosting CSE. This attribute can be provided by the Originator, and in such a case it will be regarded as a hint to the Hosting CSE on the lifetime of the resource. The Hosting CSE shall configure the expirationTime value. If the Hosting CSE configures the new expirationTime attribute value rather than the Originator suggested value, the new value can be sent back to the Originator depending on the Result Content value.
The lifetime of the resource can be extended by providing a new value for this attribute in an UPDATE operation. Or by deleting the attribute value, e.g. by updating the attribute with NULL when doing a full UPDATE, in which case the Hosting CSE can decide on a new value.
If the Originator does not provide a value in the CREATE operation the system shall assign an appropriate value depending on its local policies and/or M2M service subscription agreements.
A resource is known as 'obsolete' when the resource contains the attribute "expirationTime" and the lifetime of this resource has reached the value of this attribute. If the 'obsolete' resource had a reference to an Application Entity Resource ID, the Hosting CSE shall send a NOTIFY request to the IN-CSE, requesting to delete the entry from the resource.
Both highlights are contradictions. Either a resource is "deleted by the hosting CSE", or it is not deleted but is not in "obsolete" state and can still be used, e.g. for the procedure of NET E, or even to the extra procedure at the end of the last paragraph. But when is it deleted then? Is it still accessible?
Actually, this is an important procedure for one specific resource that should not be in the attribute definition here.
Not assigned reference
What is this? Does this mean that if an AE tries to RETRIEVE a non-existing <contentInstance>, but instead of returning a 4004 response, the procedure is triggered? This can basically only happen when using a structured ID, targeting a non-existing resource under a <container>, AND when assuming that the "phantom" resource would be a <contentInstance> resource.
It seems that this NET is only valid in certain RETRIEVE requests with RCN either "child-resources" or "attributes+child-resources". But what reference in such a request could be "invalid"?
There is also description in TS-0004, Table 6.3.4.2.19 1: Interpretation of notificationEventType:
Context: A RETRIEVE request targets a subscribed-to <container> resource with the Result Content parameter set to either "child-resources" or "attributes+child-resources".
A notification is initiated if the child resource is obsolete or not present in the targeted parent resource.
Does this mean, that such a container will always only have a single <contentInstance> child resource? What happens if it contains multiple <contentInstance> resources?
The whole procedure is not clear and also introduces contradictions with definition of the common attribute "expirationTime".