diff --git a/up-l3/usubscription/v3/README.adoc b/up-l3/usubscription/v3/README.adoc index 37f3e28..2b2e822 100644 --- a/up-l3/usubscription/v3/README.adoc +++ b/up-l3/usubscription/v3/README.adoc @@ -121,24 +121,15 @@ When a client calls the `Unsubscribe()` function for a topic that it has not sub When the last client subscribed to a topic calls the `Unsubscribe()` function on that topic, uSubscription service *MUST* stop generating subscription change notifications for that topic. -- -[.specitem,oft-sid="req~usubscription-unsubscribe-topic-not-empty~1",oft-needs="impl,utest"] --- -When receiving a `Unsubscribe()` call with an empty topic, uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="req~usubscription-unsubscribe-topic-authority~1",oft-needs="impl,utest"] --- -When receiving a `Unsubscribe()` call with a topic that contains a _wildcard_ authority, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="req~usubscription-unsubscribe-topic-entity-id~1",oft-needs="impl,utest"] --- -When receiving a `Unsubscribe()` call that contains a topic with a _wildcard_ uEntity ID (`ue_id`), a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +[.specitem,oft-sid="dsn~usubscription-unsubscribe-invalid-topic~1",oft-needs="impl,utest"] -- +When receiving a `Unsubscribe()` request that contains a topic that +* is not a valid xref:../../../basics/uri.adoc[uProtocol URI] or +* contains a _wildcard_ authority or +* contains a _wildcard_ uEntity ID (`ue_id`) or +* contains a _wildcard_ resource ID, -[.specitem,oft-sid="req~usubscription-unsubscribe-topic-resource-id~1",oft-needs="impl,utest"] --- -When receiving a `Unsubscribe()` call that contains a topic with a _wildcard_ resource ID, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. -- [#fetch-subscribers-operation] @@ -154,24 +145,15 @@ The uSubscription service `FetchSubscribers()` function *MUST* implement the cor When a client calls the `FetchSubscribers()` function, uSubscription service *MUST* return a list of subscribers that are currently subscribed to a given topic. -- -[.specitem,oft-sid="req~usubscription-fetch-subscribers-topic-not-empty~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscribers()` call with an empty topic, uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="req~usubscription-fetch-subscribers-topic-authority~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscribers()` call with a topic that contains a _wildcard_ authority, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="req~usubscription-fetch-subscribers-topic-entity-id~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscribers()` call that contains a topic with a _wildcard_ uEntity ID (`ue_id`), a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +[.specitem,oft-sid="dsn~usubscription-fetch-subscribers-invalid-topic~1",oft-needs="impl,utest"] -- +When receiving a `FetchSubscribers()` request that contains a topic that +* is not a valid xref:../../../basics/uri.adoc[uProtocol URI] or +* contains a _wildcard_ authority or +* contains a _wildcard_ uEntity ID (`ue_id`) or +* contains a _wildcard_ resource ID, -[.specitem,oft-sid="req~usubscription-fetch-subscribers-topic-resource-id~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscribers()` call that contains a topic with a _wildcard_ resource ID, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. -- [.specitem,oft-sid="req~usubscription-fetch-subscribers-stable-sorting~1",oft-needs="impl,utest"] @@ -207,44 +189,26 @@ When a client calls the `FetchSubscriptions()` function with a `SubscriberInfo` When a client calls the `FetchSubscriptions()` function with a topic UURI argument, uSubscription service *MUST* return a list of subscribers that are currently subscribed to the given topic. -- -[.specitem,oft-sid="req~usubscription-fetch-subscriptions-topic-not-empty~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscriptions()` call with an empty topic, uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="req~usubscription-fetch-subscriptions-topic-authority~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscriptions()` call with a topic that contains a _wildcard_ authority, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="req~usubscription-fetch-subscriptions-topic-entity-id~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscriptions()` call that contains a topic with a _wildcard_ uEntity ID (`ue_id`), a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="req~usubscription-fetch-subscriptions-topic-resource-id~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscriptions()` call that contains a topic with a _wildcard_ resource ID, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="req~usubscription-fetch-subscriptions-subscriber-not-empty~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscriptions()` call with an empty subscriber URI, uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +[.specitem,oft-sid="dsn~usubscription-fetch-subscriptions-invalid-topic~1",oft-needs="impl,utest"] -- +When receiving a `FetchSubscriptions()` request that contains a topic that +* is not a valid xref:../../../basics/uri.adoc[uProtocol URI] or +* contains a _wildcard_ authority or +* contains a _wildcard_ uEntity ID (`ue_id`) or +* contains a _wildcard_ resource ID, -[.specitem,oft-sid="req~usubscription-fetch-subscriptions-subscriber-authority~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscriptions()` call with a subscriber URI that contains a _wildcard_ authority, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. -- -[.specitem,oft-sid="req~usubscription-fetch-subscriptions-subscriber-entity-id~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscriptions()` call that contains a subscriber URI with a _wildcard_ uEntity ID (`ue_id`), a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +[.specitem,oft-sid="dsn~usubscription-fetch-subscriptions-invalid-subscriber~1",oft-needs="impl,utest"] -- +When receiving a `FetchSubscriptions()` request that contains a subscriber URI that +* is not a valid xref:../../../basics/uri.adoc[uProtocol URI] or +* contains a _wildcard_ authority or +* contains a _wildcard_ uEntity ID (`ue_id`) or +* contains a _wildcard_ resource ID, -[.specitem,oft-sid="req~usubscription-fetch-subscriptions-subscriber-resource-id~1",oft-needs="impl,utest"] --- -When receiving a `FetchSubscriptions()` call that contains a subscriber URI with a _wildcard_ resource ID, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. -- [.specitem,oft-sid="req~usubscription-fetch-subscriptions-has-more-records~1",oft-needs="impl,utest"] @@ -443,24 +407,15 @@ The uSubscription service `RegisterForNotifications()` function *MUST* implement When a client has registered to receive notifications on a custom topic via `RegisterForNotifications()`, uSubscription service *MUST* send subscription change notification messages for any subscriptions of that client to that notification topic. -- -[.specitem,oft-sid="dsn~usubscription-register-notifications-topic-not-empty~1",oft-needs="impl,utest"] --- -When receiving a `RegisterForNotifications()` call with an empty topic, uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="dsn~usubscription-register-notifications-topic-authority~1",oft-needs="impl,utest"] --- -When receiving a `RegisterForNotifications()` call with a topic that contains a _wildcard_ authority, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="dsn~usubscription-register-notifications-topic-entity-id~1",oft-needs="impl,utest"] --- -When receiving a `RegisterForNotifications()` call that contains a topic with a _wildcard_ uEntity ID (`ue_id`), a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +[.specitem,oft-sid="dsn~usubscription-register-notifications-invalid-topic~1",oft-needs="impl,utest"] -- +When receiving a `RegisterForNotifications()` request that contains a topic that +* is not a valid xref:../../../basics/uri.adoc[uProtocol URI] or +* contains a _wildcard_ authority or +* contains a _wildcard_ uEntity ID (`ue_id`) or +* contains a _wildcard_ resource ID, -[.specitem,oft-sid="dsn~usubscription-register-notifications-topic-resource-id~1",oft-needs="impl,utest"] --- -When receiving a `RegisterForNotifications()` call that contains a topic with a _wildcard_ resource ID, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. -- [#unregister-for-notifications-operation] @@ -476,24 +431,15 @@ The uSubscription service `UnregisterForNotifications()` function *MUST* impleme After they have unregistered to receive such custom notifications via `UnregisterForNotifications()`, uSubscription service *MUST* stop sending subscription change notification messages to clients on a custom topic of their choice. -- -[.specitem,oft-sid="dsn~usubscription-unregister-notifications-topic-not-empty~1",oft-needs="impl,utest"] --- -When receiving a `UnregisterForNotifications()` call with an empty topic, uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="dsn~usubscription-unregister-notifications-topic-authority~1",oft-needs="impl,utest"] --- -When receiving a `UnregisterForNotifications()` call with a topic that contains a _wildcard_ authority, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. --- - -[.specitem,oft-sid="dsn~usubscription-unregister-notifications-topic-entity-id~1",oft-needs="impl,utest"] --- -When receiving a `UnregisterForNotifications()` call that contains a topic with a _wildcard_ uEntity ID (`ue_id`), a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +[.specitem,oft-sid="dsn~usubscription-unregister-notifications-invalid-topic~1",oft-needs="impl,utest"] -- +When receiving a `UnregisterForNotifications()` request that contains a topic that +* is not a valid xref:../../../basics/uri.adoc[uProtocol URI] or +* contains a _wildcard_ authority or +* contains a _wildcard_ uEntity ID (`ue_id`) or +* contains a _wildcard_ resource ID, -[.specitem,oft-sid="dsn~usubscription-unregister-notifications-topic-resource-id~1",oft-needs="impl,utest"] --- -When receiving a `UnregisterForNotifications()` call that contains a topic with a _wildcard_ resource ID, a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. +a uSubscription service *MUST* return a failure status message with link:../../../up-core-api/uprotocol/v1/ucode.proto[`UCode`] `INVALID_ARGUMENT`. -- == Timeout & Retry Logic