<p>It's been too long since I read RFC 7641. I agree that an app can find it useful to specify if a resource is observable. At the same time, to allow for minimal resource use, I would rather not <em>require</em> that the app does so.</p>
<p>At least for now, I suggest allowing this specification to be defined solely by the application. So, I see that they have two choices. Let's use the gcoap example app.</p>
<ol>
<li>
<p>Add the 'obs' attribute to the <code>_link_params</code> array for a particular resource. This is the simplest solution.</p>
</li>
<li>
<p>Add a locally defined constant to the coap_resource_t <code>methods</code> attribute. This attribute might be like COAP_OBSERVABLE or COAP_NOT_OBSERVABLE depending on what makes the most sense as a default. Then in <code>_encode_link()</code>, append the 'obs' link attribute based on the value in 'methods'.</p>
</li>
</ol>
<p>Neither of these solutions have the advantage of enforcing this property of observability in <code>_handle_req()</code>, as in this PR. In other words, a client could still set up an observation for a resource that won't generation notifications. But really in this case there is a breakdown. The server has publicized its API via <code>/.well-known/core</code> or a resource directory. However, the client is making a request that the server has declared is not valid.</p>
<p>As you and I have discussed, we would like to see a more featureful application framework that can support the level of functionality in this PR. I just don't think we're there yet.</p>
<p>If you agree, then I think it would be worthwhile to create an alternate PR with two elements: Add 'obs' to the _link_params array for <code>/cli/stats</code> in the gcoap example. Also add a sentence or two to the Observe Server section of the module documentation to remind the reader of the 'obs' hint. Since I'm the troublemaker, I'd be glad to write it if you'll review it. :-)</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/RIOT-OS/RIOT/pull/11587?email_source=notifications&email_token=ABE7WYCJVCYYTJC7B6HRQATQIWBIFA5CNFSM4HP3CZSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6F34NI#issuecomment-529251893">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABE7WYF2QRXVJ7K3GO3RQ2DQIWBIFANCNFSM4HP3CZSA">mute the thread</a>.<img src="https://github.com/notifications/beacon/ABE7WYD7ZM4XZSBTHO7IMVLQIWBIFA5CNFSM4HP3CZSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6F34NI.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/RIOT-OS/RIOT/pull/11587?email_source=notifications\u0026email_token=ABE7WYCJVCYYTJC7B6HRQATQIWBIFA5CNFSM4HP3CZSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6F34NI#issuecomment-529251893",
"url": "https://github.com/RIOT-OS/RIOT/pull/11587?email_source=notifications\u0026email_token=ABE7WYCJVCYYTJC7B6HRQATQIWBIFA5CNFSM4HP3CZSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6F34NI#issuecomment-529251893",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>