roster item
Click on the red underlined text to get to the source
...
Note: There are important interactions between subscriptions and
rosters; these are defined under Integration of Roster Items and
Presence Subscriptions (Section 8), and the reader must refer to that
...
... In XMPP, one's contact list is called a roster, which consists of any
number of specific roster items, each roster item being identified by
a unique JID ...
... XMPP, one's contact list is called a roster, which consists of any
number of specific roster items, each roster item being identified by
a unique JID (usually of the form <contact@domain ...
...
Note: There are important interactions between rosters and
subscriptions; these are defined under Integration of Roster Items
and Presence Subscriptions (Section 8), and the reader must refer to
...
... query/> element MAY contain one or more <item/> children, each
describing a unique roster item or "contact".
The "key" or unique identifier ...
... The state of the presence subscription in relation to a roster item
is captured in the 'subscription' attribute of the <item/> element.
...
... group/> child elements,
for use in collecting roster items into various categories. The XML
character data of the <group/> element ...
... client SHOULD check the "from" address of a "roster push" (incoming
IQ of type "set" containing a roster item) to ensure that it is from
a trusted source; specifically, the stanza MUST either have no 'from'
...
... Adding a Roster Item ...
... Updating a Roster Item ...
...
Updating an existing roster item (e.g., changing the group) is done
in the same way as adding a new roster item ...
... roster item (e.g., changing the group) is done
in the same way as adding a new roster item, i.e., by sending the
roster item in an IQ set to the server.
...
... in the same way as adding a new roster item, i.e., by sending the
roster item in an IQ set to the server.
Example: User updates roster item ...
...
As with adding a roster item, when updating a roster item the server
MUST update the roster information in persistent storage, and also
...
... Deleting a Roster Item ...
...
As with adding a roster item, when deleting a roster item the server
MUST update the roster information in persistent storage, initiate a
...
... For further information about the implications of this command, see
Removing a Roster Item and Cancelling All Subscriptions (Section
8.6).
...
... Integration of Roster Items and Presence Subscriptions ...
...
Some level of integration between roster items and presence
subscriptions is normally expected by an instant messaging user
...
...
Narrative explanations of how these subscription states interact with
roster items in order to complete certain defined use cases are
provided in the following sub-sections. Full details regarding
server and client ...
... The process by which a user subscribes to a contact, including the
interaction between roster items and subscription states, is
described below.
...
... subscription, the user's client SHOULD perform a "roster set" for
the new roster item. This request consists of sending an IQ
stanza of type='set' containing a <query ...
... namespace, which in turn contains an
<item/> element that defines the new roster item; the <item/>
element MUST possess a 'jid' attribute, MAY possess a 'name'
...
...
2. As a result, the user's server (1) MUST initiate a roster push
for the new roster item to all available resources associated
with this user that have requested the roster, setting the
'subscription' attribute to a value of "none"; and (2) MUST reply
...
... state is denoted by
the inclusion of the ask='subscribe' attribute in the roster
item:
<iq type='set'>
...
...
Note: If the user did not create a roster item before sending the
subscription request, the server MUST now create ...
... delivery when this condition
is next met; normally this is done by adding a roster item for
the contact to the user's roster, with a state of "None + Pending
...
... state of "None + Pending
In" as defined under Subscription States (Section 9), however a
server SHOULD NOT push or deliver roster items in that state to
the contact). No matter when the subscription request ...
... 7. As a result, the contact's server (1) MUST initiate a roster push
to all available resources associated with the contact that have
requested the roster, containing a roster item for the user with
the subscription state set to 'from' (the server MUST send this
...
... MUST initiate a roster push to all of the user's available
resources that have requested the roster, containing an updated
roster item for the contact with the 'subscription' attribute set
to a value of "to"; and (3) MUST deliver the available presence
stanza ...
... presence stanza to the user and (2) MUST initiate a roster push
to all of the user's available resources that have requested the
roster, containing an updated roster item for the contact with
the 'subscription' attribute set to a value of "none" and with no
'ask' attribute:
...
... state but with a pending 'to' subscription denoted
by the inclusion of the ask='subscribe' attribute in the roster
item; and (2) MUST route the presence stanza of type "subscribe ...
... 4. As a result, the user's server (1) MUST initiate a roster push to
all of the user's available resources that have requested the
roster, containing a roster item for the contact with the
'subscription' attribute set to a value of "both"; (2) MUST route
...
... the contact; (2) MUST initiate a roster push to all available
resources associated with the contact that have requested the
roster, containing an updated roster item for the user with the
'subscription' attribute set to a value of "both"; and (3) MUST
deliver the available presence stanza ...
... roster push to all available resources associated with the
contact that have requested the roster, containing an updated
roster item for the user with the 'subscription' attribute set to
a value of "from" and with no 'ask' attribute:
...
... 2. As a result, the user's server (1) MUST send a roster push to all
of the user's available resources that have requested the roster,
containing an updated roster item for the contact with the
'subscription' attribute set to a value of "none"; and (2) MUST
route ...
... a roster push to all available resources associated with the
contact that have requested the roster, containing an updated
roster item for the user with the 'subscription' attribute set to
a value of "none" (if the contact is unavailable or has not
...
... a value of "none" (if the contact is unavailable or has not
requested the roster, the contact's server MUST modify the roster
item and send that modified item the next time the contact
requests the roster); and (2) MUST deliver the "unsubscribe"
...
... 2. As a result, the user's server (1) MUST send a roster push to all
of the user's available resources that have requested the roster,
containing an updated roster item for the contact with the
'subscription' attribute set to a value of "from"; and (2) MUST
route ...
... a roster push to all available resources associated with the
contact that have requested the roster, containing an updated
roster item for the user with the 'subscription' attribute set to
a value of "to" (if the contact is unavailable or has not
...
... a value of "to" (if the contact is unavailable or has not
requested the roster, the contact's server MUST modify the roster
item and send that modified item the next time the contact
requests the roster); and (2) MUST deliver the "unsubscribe"
...
... state change to the user (see Section 9.4).
Note: Obviously this does not result in removal of the roster item
from the user's roster, and the contact still has a subscription to
the user's presence information. In order to both completely cancel
...
...
a mutual subscription and fully remove the roster item from the
user's roster, the user SHOULD update the roster item ...
... roster item from the
user's roster, the user SHOULD update the roster item with
subscription='remove' as defined under Removing ...
... subscription='remove' as defined under Removing a Roster Item and
Cancelling All Subscriptions (Section 8.6).
...
... 2. As a result, the contact's server (1) MUST send a roster push to
all of the contact's available resources that have requested the
roster, containing an updated roster item for the user with the
'subscription' attribute set to a value of "none"; (2) MUST route
...
... addressed to the user, the user's server (1) MUST initiate a
roster push to all of the user's available resources that have
requested the roster, containing an updated roster item for the
contact with the 'subscription' attribute set to a value of
"none" (if the user is unavailable ...
... "none" (if the user is unavailable or has not requested the
roster, the user's server MUST modify the roster item and send
that modified item the next time the user requests the roster);
(2) MUST deliver the "unsubscribed ...
... 2. As a result, the contact's server (1) MUST send a roster push to
all of the contact's available resources that have requested the
roster, containing an updated roster item for the user with the
'subscription' attribute set to a value of "to"; (2) MUST route
...
... addressed to the user, the user's server (1) MUST initiate a
roster push to all of the user's available resources that have
requested the roster, containing an updated roster item for the
contact with the 'subscription' attribute set to a value of
"from" (if the user is unavailable ...
... "from" (if the user is unavailable or has not requested the
roster, the user's server MUST modify the roster item and send
that modified item the next time the user requests the roster);
and (2) MUST deliver the "unsubscribed ...
... state change to the user (see Section 9.4).
Note: Obviously this does not result in removal of the roster item
from the contact's roster, and the contact still has a subscription
to the user's presence information. In order to both completely
...
... to the user's presence information. In order to both completely
cancel a mutual subscription and fully remove the roster item from
the contact's roster, the contact should update ...
...
the contact's roster, the contact should update the roster item with
subscription='remove' as defined under Removing ...
... subscription='remove' as defined under Removing a Roster Item and
Cancelling All Subscriptions (Section 8.6).
...
... Removing a Roster Item and Cancelling All Subscriptions ...
... Because there may be many steps involved in completely removing a
roster item and cancelling subscriptions in both directions, the
roster management protocol includes a "shortcut" method ...
... between the user and the contact (both 'to' and 'from' as
appropriate); (2) MUST remove the roster item from the user's roster
and inform all of the user's available resources that have requested
the roster of the roster item ...
... roster item from the user's roster
and inform all of the user's available resources that have requested
the roster of the roster item removal; (3) MUST inform the resource
that initiated the removal of success; and (4) SHOULD send
unavailable presence ...
... contact's server (1) MUST initiate a roster push to all available
resources associated with the contact that have requested the roster,
containing an updated roster item for the user with the
'subscription' attribute set to a value of "to" (if the contact is
unavailable ...
... unavailable or has not requested the roster, the contact's server
MUST modify the roster item and send that modified item the next time
the contact requests the roster); and (2) MUST also deliver the
"unsubscribe ...
... contact's server (1) MUST initiate a roster push to all available
resources associated with the contact that have requested the roster,
containing an updated roster item for the user with the
'subscription' attribute set to a value of "none" (if the contact is
unavailable ...
... unavailable or has not requested the roster, the contact's server
MUST modify the roster item and send that modified item the next time
the contact requests the roster); and (2) MUST also deliver the
"unsubscribe ...
... state of "none"; in order to
completely remove the roster item for the user, the contact needs to
also send a roster removal request.
...
... subscription request but user
has not replied yet (note: contact's server SHOULD NOT push or
deliver roster items in this state, but instead SHOULD wait until
contact has approved subscription request ...
... "remove" (see Removing a Roster Item and Cancelling All Subscriptions
(Section 8.6)), the server MUST treat a roster remove request as
...
... presence stanzas (and
corresponding generation of roster pushes) specified in
Integration of Roster Items and Presence Subscriptions (Section
8).
...
... 9. If a change to the subscription state or roster group of a roster
item defined in an active or default list occurs during a user's
...
