レジストレーションの更新 (Updating registrations)¶
コンテキストのレジストレーション・リクエスト (標準とコンビニエンスの両方) に対するレスポンスには、レジストレーション ID (24桁の16進数) が含まれています :
{
"duration": "PT24H",
"registrationId": "51bf1e0ada053170df590f20"
}
この ID を使用してレジストレーションを更新することができます。レジストレーションを更新する特別なオペレーションはありません (この意味では、updateContextSubscription オペレーションと updateContextAvailabilitySubscription オペレーションを持つコンテキスト・サブスクリプションとコンテキスト・アベイラビリティ・サブスクリプションとは異なります)。registerId を設定して、新しい registerContextRequest を発行して更新を行います :
(curl localhost:1026/v1/registry/registerContext -s -S --header 'Content-Type: application/json' \
--header 'Accept: application/json' -d @- | python -mjson.tool) <<EOF
{
"contextRegistrations": [
{
"entities": [
{
"type": "Room",
"isPattern": "false",
"id": "Room8"
}
],
"attributes": [
{
"name": "humidity",
"type": "percentage",
"isDomain": "false"
}
],
"providingApplication": "http://mysensors.com/Rooms"
}
],
"duration": "P1M",
"registrationId": "51bf1e0ada053170df590f20"
}
EOF
この "update registration" は、その ID に関連付けられた既存のレジストレーションを、期限切れ再計算を含む新しい内容で置き換えます。
驚いたことに、NGSI にレジストレーションを取り消す方法はありません。この問題を回避するには、存在しないエンティティと期間 (duration) 0で更新してください。実際の削除を行うには、データベースからレジストレーションを削除する必要があります。データベースの管理についての管理マニュアルを参照してください。
サブスクリプションの更新¶
このドキュメントでは、コンテキスト・サブスクリプションとコンテキスト・アベイラビリティ・サブスクリプションを更新できることを以前に見てきました。しかし、registerContext とは異なり、すべてを更新することはできません。サブスクリプションの種類によって、これを詳しく見ていきましょう。
コンテキスト・サブスクリプションで更新できるものは何ですか?¶
updateContextSubscription のペイロードは、subscribeContext リクエストのペイロードに似ています。ただし、すべてを更新することはできないため、すべてのフィールドを含めることはできません。特に、次のフィールドは更新できません :
- subscriptionId (サブスクリプションを参照するには updateContextSubscription に含める必要があります)
- entities
- attributes
- reference
ただし、次のフィールドは変更できます :
- notifyConditions
- throttling
- duration
- restriction
コンテキスト・アベイラビリティ・サブスクリプションで更新できるものは何ですか?¶
updateContextAvailabilitySubscription によって使用されるペイロードは、subscribeContextAvailability リクエストのものとかなり類似しています。ただし、すべてが更新可能であるわけではないので、すべてのフィールドを含めることはできません。特に、以下は更新可能ではありません :
- subscriptionId (サブスクリプションを参照するには updateContextSubscription に含める必要があります)
- reference
したがって、以下が更新可能です :
- entities (実際には、すべての updateContextAvailabilitySubscription で必須です)
- attributes
- duration