Net-RVP
view release on metacpan or search on metacpan
docs/RVP_specification.txt view on Meta::CPAN
4.1 Architecture .......................................... 4
4.1.1 General Interaction ............................... 5
4.1.2 Addressing ........................................ 5
4.2 Authentication ........................................ 6
4.3 Examples .............................................. 6
5. Protocol Methods ........................................... 7
5.1 SUBSCRIBE ............................................. 7
5.1.1 Subscribtion Ids .................................. 7
5.1.2 Leased subscriptions .............................. 7
5.1.3 Notification types ................................ 8
5.1.4 Notification delivery ............................. 8
5.1.5 Changing/discarding subscriptions ................. 9
5.1.6 Response .......................................... 9
5.1.7 Examples .......................................... 9
5.1.7.1 Login Subscription ........................... 9
5.1.7.2 Property subscription ....................... 10
5.2 UNSUBSCRIBE .......................................... 11
5.2.1 Example .......................................... 11
5.3 SUBSCRIPTIONS ........................................ 11
5.3.1 Example .......................................... 12
5.4 PROPFIND ............................................. 13
5.4.1 Example .......................................... 13
5.5 PROPPATCH ............................................ 14
5.5.1 Example .......................................... 15
5.5.2 Implementation considerations .................... 17
5.6 NOTIFY ............................................... 18
5.6.1 Examples ......................................... 19
5.7 ACL .................................................. 24
5.7.1 Access rights .................................... 24
5.7.2 Principals ....................................... 25
5.7.2.1 Credentials ................................. 25
5.7.2.2 ntlm ........................................ 26
5.7.2.3 digest ...................................... 26
5.7.2.4 assertion ................................... 26
Osborne et al 2
RVP
5.7.2.5 internal .................................... 26
5.7.2.6 any ......................................... 26
5.7.3 Examples ......................................... 27
5.8 Other methods ........................................ 28
6. Authentication ............................................ 29
6.1 NT Lan Manager (NTLM) ................................ 29
6.2 Digest Access Authentication ......................... 29
6.3 Example .............................................. 29
7. Headers ................................................... 30
7.1 Existing DAV/HTTP headers ............................ 30
7.2 RVP headers .......................................... 31
8. Return codes .............................................. 31
9. XML Document Type Definition .............................. 32
9.1 RVP elements ......................................... 33
9.1.1 State ............................................ 33
9.1.2 leased-value ..................................... 33
9.1.3 default-value .................................... 33
9.1.4 value ............................................ 33
9.1.5 online ........................................... 33
9.1.6 offline .......................................... 33
9.1.7 away ............................................. 34
9.1.8 busy ............................................. 34
9.1.9 back-soon . ...................................... 34
9.1.10 on-phone ...................................... 34
9.1.11 at-lunch ...................................... 34
9.1.12 view-id ....................................... 34
9.1.13 principal ..................................... 34
9.1.14 rvp-principal ................................. 34
9.1.15 email ... ..................................... 34
9.1.16 mobile-state .................................. 35
9.1.17 mobile-description ............................ 35
9.1.18 notification .................................. 35
9.1.19 propnotification .............................. 35
9.1.20 message ....................................... 35
9.1.21 notification-from ............................. 35
9.1.22 notification-to ............................... 35
9.1.23 msgbody ....................................... 35
9.1.24 contact ....................................... 36
9.1.25 description ................................... 36
9.1.26 mime-data ..................................... 36
10. MIME Payloads ............................................ 36
10.1 Instant Message ...................................... 36
10.2 Typing Message ....................................... 36
10.3 Application Invites .................................. 37
11. References ............................................... 37
12. Authors Addresses ....................................... 38
3. Overview
RVP is designed to enable subscriptions and notifications within
an organization, and across a loosely coupled (federated)
constellation of organizations. These organizations may contain
large, scalable server farms, or may be small one-server
operations.
Osborne et al 3
RVP
RVP is a strict extension of HTTP/1.1. Being used on HTTP allows
RVP to leverage existing flexible and well-known technologies,
such as Firewall support, and Proxies. Also the requirements of
basic Authentication and Redirection have already been addressed
within HTTP.
4. Protocol Introduction
RVP-specific information is general transferred in new methods or
by specifying the RVP namespace in XML-formatted data within the
XML body of an HTTP protocol element. Use of XML in this way
allows an RVP server to coexist with an HTTP server. XML is used
in order to provide flexibility and extensibility.
4.1 Architecture
RVP allows for WATCHERs to obtain PRESENCE INFORMATION, for
PRESENTITYs to determine what WATCHERs are obtaining its
PRESENCE INFORMATION, and send INSTANT MESSAGEs to an INSTANT
MESSAGE INBOX within the current or different domain. To
accomplish this the architecture within Microsoft Exchange 2000
can be as follows (see [MODEL] and [IMPP-REQTS] for definitions
docs/RVP_specification.txt view on Meta::CPAN
<?xml version="1.0" ?>
<D:multistatus xmlns:D="DAV:"
xmlns:Z="http://schemas.microsoft.com/rvp/">
<D:response>
<D:href>
http://im.example.com/instmsg/aliases/stevem
</D:href>
<D:propstat>
<D:prop>
<D:displayname>
Steve Morgan
</D:displayname>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
5.5 PROPPATCH
The PROPPATCH DAV method is used to set a nodes properties. For
RVP, this method can be used to set a PRINCIPALs online status
on a PRESENCE SERVICE or to set other properties maintained by an
RVP implementation. For example, when a PRESENTITY logs on,
the PRESENTITY will issue a PROPPATCH to the PRESENTITYs home
server to set the online-status property to online.
RVP introduces the notion of leased properties. Leased
property values automatically reset to a default value after a
timeout period. They can be used to implement buddy list online
status a PRESENTITYs online status can reset itself to the
offline state unless refreshed. This is useful for scenarios
involving client crashes, network failures, etc. that necessitate
resetting a PRESENTITYs status to offline.
All RVP properties can have leased values, though RVP
implementations may disallow leasing the values of particular
properties.
Osborne et al 14
RVP
PRESENTITYs get and set leased values in the exact same fashion
as they do regular DAV properties - it is up to the PRESENCE
SERVICE to recognize and interpret leased values and enforce
their behavior
An RVP PRESENCE SERVICE may decline to set a property value if
the requested timeout is not permitted by its admin policy.
As there may be multiple PRESENTITYs setting properties for a
certain node (i.e. User logs in from multiple machines), the XML
schema allows for a view identifier element to be specified in
the PROPPATCH requests and responses. This allows state changes
to be replicated amongst all PRESENTITYs, and certain states to
be specific to a PRESENTITY.
For example if a PRINCIPAL has multiple PRESENTITYs logged in,
any state changes to be busy, or out to lunch, will result in
all PRESENTITYs being notified of this status change. However if
a certain PRESENTITY became offline or idle, then no other
PRESENTITYs would be notified of this status change, and the
PRINCIPAL would remain online at a different PRESENTITY.
When a PROPPATCH request does not contain a view identifier, a
successful response will include one. This identifier is unique
to that leased property, and any subsequent PROPPATCH requests
that specify the view identifier. If all leased properties, with
that view identifier, expire then it is no longer valid and
should not be used.
5.5.1 Example
This example sets the online-status value of an RVP PRESENTITY
to online, for an interval of 1 hour. Unless the property is
subsequently reset by the PRESENTITY, the PRESENCE SERVICE will
revert the online value to offline after 1 hour.
>>Request:
PROPPATCH /instmsg/aliases/stevem HTTP/1.1
Host: im.example.com
RVP-Notifications-Version: 1.0
RVP-From-Principal: http://im.example.com/instmsg/aliases/stevem
Content-Type: text/xml
Content-Length: XXXX
<?xml version="1.0"?>
<D:propupdate xmlns:D="DAV:"
xmlns:Z="http://schemas.microsoft.com/rvp/">
<D:set>
<D:prop>
<Z:state>
<Z:leased-value>
<Z:value>
Osborne et al 15
RVP
<Z:online/>
</Z:value>
<Z:default-value>
<Z:offline/>
</Z:default-value>
<Z:timeout>3600</Z:timeout>
</Z:leased-value>
</Z:state>
</D:prop>
</D:set>
</D:propertyupdate>
>>Response:
HTTP/1.1 207 Multi-Status
RVP-Notifications-Version: 1.0
Content-Type: text/xml
Content-Length: XXXX
docs/RVP_specification.txt view on Meta::CPAN
The request could not be applied to the requested node. An
example of its use is when attempting to send an Instant Message
to a PRINCIPAL who is no longer available.
500 Internal Server Error
An example of this use is when a PRINCIPAL has left a discussion
with multiple PRINCIPALs. When the PRINCIPALs INSTANT MESSAGE
INBOX receives a notification for this session, it would use this
return code. The sender of the INSTANT MESSAGE would then be able
to indicate that the PRINCIPAL has left the conversation.
9. XML Document Type Definition
DAV elements
The elements that are used from DAV are as follows:
set
prop
timeout
displayname
subscription
subscription-id
href
subscriptions
multistatus
response
propstat
propertyupdate
9.1 RVP elements
The elements provided by RVP are as follows:
9.1.1 state
Definition: <!Element state (leased-value, view-id?)>
Parent: DAV:<prop>
Purpose: To indicate the current state information for the
node.
9.1.2 leased-value
Definition: <!Element leased-value (value, default-value,
timeout)>
Parent: <state>
Purpose: To indicate the current leased values status
9.1.3 default-value
Definition: <!Element default-value ANY>
Parent: <leased-value>
Osborne et al 32
RVP
Purpose: To indicate the current default status of the node
(currently one of <online> <offline> <away> <busy>
<back-soon> <on-phone> or <at-lunch>)
9.1.4 value
Definition: <!Element value ANY>
Parent: <leased-value>
Purpose: To indicate the current status of the node
(currently one of <online> <offline> <away> <busy>
<back-soon> <on-phone> or <at-lunch>)
9.1.5 online
Definition: <!Element online EMPTY>
Parent: <default-value> | <value>
Purpose: To indicate the online status
9.1.6 offline
Definition: <!Element offline EMPTY>
Parent: <default-value> | <value>
Purpose: To indicate the offline status
9.1.7 away
Definition: <!Element away EMPTY>
Parent: <default-value> | <value>
Purpose: To indicate the away status
9.1.8 busy
Definition: <!Element busy EMPTY>
Parent: <default-value> | <value>
Purpose: To indicate the busy status
9.1.9 back-soon
Definition: <!Element back-soon EMPTY>
Parent: <default-value> | <value>
Purpose: To indicate the back soon status
9.1.10 on-phone
Definition: <!Element on-phone EMPTY>
Parent: <default-value> | <value>
Purpose: To indicate the on the phone status
9.1.11 at-lunch
Definition: <!Element at-lunch EMPTY>
Parent: <default-value> | <value>
Purpose: To indicate the at lunch status
Osborne et al 33
RVP
9.1.12 view-id
Definition: <!Element view-id (#PCDATA)>
Parent: <state>
Purpose: A unique identifier for updates to a node
9.1.13 principal
Definition: <!Element principal (rvp-principal)>
Parent: <subscription>
Purpose: Container for details about the PRINCIPAL
9.1.14 rvp-principal
Definition: <!Element rvp-principal (#PCDATA)>
Parent <principal>
Purpose: To detail the logical URL for a PRINCIPAL
9.1.15 email
Definition: <!Element email (#PCDATA)>
Parent: DAV:<prop>
Purpose: Contains details of the PRINCIPALs email address
9.1.16 mobile-state
Definition: <!Element mobile-state (0 | 1)>
Parent: DAV:<prop>
Purpose: Determines if PRINCIPALs mobile is online
9.1.17 mobile-description
Definition: <!Element mobile-description (#PCDATA)>
Parent: DAV:<prop>
Purpose: Description of PRINCIPALs mobile (e.g. Cell phone
number)
( run in 0.311 second using v1.01-cache-2.11-cpan-df04353d9ac )