| TOC |
|
The OInvite protocol standardizes the manner in which communications relationships (e.g., friend-requests) are initiated between two users in a decentralized communications network.
This document specifies OInvite Core, a binding-independent request/response format and verification protocol to initiate and respond to communications relationship requests originating across social-network and/or domain boundaries (e.g., a Google Buzz user desiring to follow a Twitter user's protected feed on Twitter).
1.
Definitions
1.1.
Requirements Notation
1.2.
Definitions
2.
Protocol Overview
2.1.
Out of Scope
3.
OInvite Discovery
4.
OInvite Verification Procedure
4.1.
OInvite Verification Extensions (OVE)
5.
OInvite Document Structure
5.1.
Common Document Data Types
5.1.1.
String Values
5.1.2.
URI Values
5.1.3.
Date/Time Values
5.2.
OInvite Request Document Structure
5.2.1.
XML Schema Elements
5.2.2.
XML Schema
5.3.
OInvite Response Document Structure
5.3.1.
XML Schema Elements
5.3.2.
OInvite Response Schema
6.
Security Considerations
Appendix A.
Non-Normative Examples
Appendix A.1.
Example: OInvite Request
Appendix A.2.
Example: OInvite Response
7.
References
7.1.
Normative References
7.2.
Informative References
§
Author's Address
| TOC |
| TOC |
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT","SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" inthis document are to be interpreted as described in [RFC2119] (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.) .
| TOC |
- Communications Relationship (CR)
- An agreement between two parties to engage in some form of communication.
- OInvite
- An XML document representing an invitation to join a CR.
- Invitor
- The sender of an OInvite.
- Invitee
- The recipient of an OInvite.
- OInvite Response
- An XML document representing the Invitee's response to an OInvite.
- Participant
- An Invitor who has sent an OInvite, or an Invitee who has accepted an OInvite.
- OInvite Verification Mechanism
- A pluggable mechanism acceptable to Invitor and Invitee that is used to verify various aspects of an OInvite (e.g., authenticity, spaminess, etc).
| TOC |
| TOC |
The following are out of scope for OInvite Core and may be defined by OInvite extensions or other specifications:
- OInvite Client-Server Interaction
- This document does not define an API or other protocol to allow an end-user to interact with an OInvite server to perform various operations on the user's established or pending OInvites (e.g., approving, rejecting, querying, editing or deleting OInvites).
- Transport
- OInvite messages are not restricted to any particular transport binding.
- OInvite Termination
- This document does not specify how to terminate a Communications Relationship (often, this can be done silently).
| TOC |
This document does not formalize any particular discovery mechanism for OInvite Identifiers, which are URI's. Instead, each implementation or an OInvite extension MAY determine appropriate discovery mechansims in order to find out more information about a particular Identifier, as well as which transport to use to send and receive OInvites, and where to send them.
| TOC |
Before accepting a particular OInvite and otherwise prompting or alerting an Invitee, implementations MUST verify the contents of an OInvite per the following procedure:
| TOC |
OInvite Core leaves room for verification extensions that can be used to aid a recipient in trying to determine if a particular OInvite is valid and authentic, and whether or not the invitation should be forwarded to an actual user or processed automatically.
As an example, see [oinvite‑ev‑pow] (Fuelling, D., “OInvite POW Verification,” 2010.) for an example of one such OEV that details a system to help prevent invitation spam.
| TOC |
OInvite specifies a message format using XML Schema. The following sub-sections detail the elements, attributes, and schema of all OInvite Core message types.
| TOC |
| TOC |
All OInvite string values have the type xs:string, which is built in to the W3C [xml‑schema‑datatypes] (Biron, P. and A. Malhotra, “XML Schema Datatypes,” 2004.) specification. Unless otherwise noted in this specification or extensions, all strings in OInvite documents MUST consist of at least one non-whitespace character (whitespace is defined in section 2.3 of [xml‑1.0] (Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and F. Yergeau, “Extensible Markup Language (XML) 1.0,” 2008.) ).
| TOC |
All OInvite URI reference values have the type xs:anyURI, which is built in to the W3C [xml‑schema‑datatypes] (Biron, P. and A. Malhotra, “XML Schema Datatypes,” 2004.) specification. Unless otherwise noted in this specification or extensions, all URIs in an OInvite document MUST consist of at least one non-whitespace character (whitespace is defined in section 2.3 of [xml‑1.0] (Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and F. Yergeau, “Extensible Markup Language (XML) 1.0,” 2008.) ). Additionally, Comparison of this value MUST be performed using the scheme-specific normalization rules for the URI, as specified in Section 6.2.3 of [RFC3986] (Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifier (URI): Generic Syntax,” January 2005.)
| TOC |
All OInvite date and time values have the type xs:dateTime, which is built in to the W3C [XML Schema Datatypes] specification. Time values MUST be represented with the UTC designator 'Z'. OInvite providers MUST NOT generate time instants that specify leap seconds.
| TOC |
| TOC |
| TOC |
This attribute, of type xs:ID, is defined by [xml‑id] (Marsh, J., Veillard, D., and N. Walsh, “xml:id,” 2005.) and provides a unique identifier for an OInvite.
| TOC |
The date/time that this OInvite was created.
| TOC |
A URI that identifies the sender of an OInvite. This value MUST
be
an absolute URI.
.
Note that it will be desirable if this identifier is resolvable
in
order to provide the Invitee with more information about the
Invitor.
| TOC |
An optional full name for the Invitor, limited to 30 UTF-8 characters.
| TOC |
A URI that identifies the recipient of an OInvite. This value MUST be an absolute URI.
| TOC |
One of either 'READ', 'WRITE', or 'BOTH'.
'READ' is used to indicate that the Invitor would like to receive information from the Invitee, but does not desire to send information (i.e., this is a 1-way communications relationship). A potential example of this type of CR is one where the Invitor desires to read information that the Invitee is posting to a private news feed or activity stream.
'WRITE' is used to indicate that the Invitor would like to send information to the Invitee, but does not desire to receive information back (i.e., this is a 1-way communications relationship). A potential example of this type of CR is one where the Invitor desires to send information to a resource controlled by the Invitee, such as a comment feed.
'BOTH' is used to indicate that the Invitor would like to both send and receive information to and from the Invitee (a bi-direcitonal communications relationship).
| TOC |
A URI specifying the type of verification extension that should be used to verify this OInvite, as defined in an OInvite Verification Extension document.
| TOC |
A list of URIs, with each URI representing the indicated resources that this OInvite pertains to.
| TOC |
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.oinvite.net/core/1.0"
xmlns="http://www.oinvite.net/core/1.0" elementFormDefault="qualified">
<xs:element name="oirequest">
<xs:attribute name="xml:id" type="xs:ID"/>
<xs:complexType>
<xs:sequence>
<xs:element name="creationDate" type="xs:dateTime"/>
<xs:element name="invitorId" type="xs:anyURI"/>
<xs:element name="invitorName" type="xs:string"/>
<xs:element name="inviteeId" type="xs:anyURI"/>
<xs:element name="requestType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="READ"/>
<xs:enumeration value="WRITE"/>
<xs:enumeration value="BOTH"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="subjects" minOccurs="0" maxOccurs="1">
<xs:sequence>
<xs:element name="subject" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:element>
<xs:element name="verificationExtensionType" type="xs:anyURI"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
| TOC |
| TOC |
| TOC |
This attribute, of type xs:ID, is defined by [xml‑id] (Marsh, J., Veillard, D., and N. Walsh, “xml:id,” 2005.) and provides a unique identifier for an OInvite.
| TOC |
The date/time that this OInvite Response was created.
| TOC |
The xml:id of the OInvite Request that this document is in response to.
| TOC |
One of either 'ACCEPT', 'DENY', or 'INVALID'.
'ACCEPT' is used to indicate that the Invitee has accepted the OInvite and agrees to enter into a communications relationship specified by the OInvite Request.
'DENY' is used to indicate that the Invitee has declined the OInvite, and does not wish to enter into a communications relationship as specified by the OInvite Request.
'INVALID' is used to indicate that the OInvite was invalid or otherwise unacceptable to the Invitee's OInvite server.
| TOC |
An optional textual string that can be used to augment the 'response', such as and error message explaining why an OInvite failed or was invalid.
| TOC |
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.oinvite.net/core/1.0"
xmlns="http://www.oinvite.netcore/1.0" elementFormDefault="qualified">
<xs:element name="oiresponse">
<xs:attribute name="xml:id" type="xs:ID"/>
<xs:complexType>
<xs:sequence>
<xs:element name="creationDate" type="xs:dateTime"/>
<xs:element name="requestId" type="xs:anyURI"/>
<xs:element name="response">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ACCEPT"/>
<xs:enumeration value="DENY"/>
<xs:enumeration value="INVALID"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="reason" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
| TOC |
- Identity Verification
- This specification does not address the question of Invitor nor Invitee identifier verification. Implementations should take care to employ best practices and/or OInvite Extension Verification callbacks for spam-prevention and increased security.
- OInvite Content Inspection
- OInvite does not place any restrictions on the contents of certain OInvite document fields, such as the InvitorName. Likewise, extensions may define document content that is free-form in nature. For this reason, implementations should take care to ensure that the content of any OInvite element is suitable for display to, and use by, end-users.
| TOC |
| TOC |
The following is a non-normative example of a simple OInvite Request:
Example:
<oirequest xmlns="http://www.oinvite.net/core/1.0"
xml:id="tag:foo.com,2005:8.3093">
<creationDate>2009-06-01T18:30:02.25Z</creationDate>
<invitorId>bob@example.com</invitorId>
<fullName>Bob Smith</fullName>
<inviteeId>alice@example.net</inviteeId>
<requestType>BOTH</requestType>
<subjects>
<subject>http://example.com/userposts</subject>
</subjects>
<verificationExtension/>
</oirequest>
| TOC |
The following is non-normative example of a OInvite Response where an Invitee has accepted an OInvite:
<oiresponse xmlns="http://www.oinvite.net/core/1.0"
xml:id="tag:foo.com,2005:8.3093">
<requestId>tag:foo.com,2005:8.3094</requestId>
<response>ACCEPT</response>
<creationDate>2009-06-01T18:30:02.25Z</creationDate>
</oiresponse>
| TOC |
| TOC |
| [RFC2119] | Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” BCP 14, RFC 2119, March 1997 (TXT, HTML, XML). |
| [RFC3986] | Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifier (URI): Generic Syntax,” STD 66, RFC 3986, January 2005 (TXT, HTML, XML). |
| [XRD] | Hammer-Lahav, E., Norris, W., Davis, P., and D. Reed, “Extensible Resource Descriptor (XRD) Version 1.0 (Draft 15),” 2010. |
| [xml-1.0] | Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and F. Yergeau, “Extensible Markup Language (XML) 1.0,” 2008. |
| [xml-id] | Marsh, J., Veillard, D., and N. Walsh, “xml:id,” 2005. |
| [xml-schema-datatypes] | Biron, P. and A. Malhotra, “XML Schema Datatypes,” 2004. |
| TOC |
| [RFC3920] | Saint-Andre, P., Ed., “Extensible Messaging and Presence Protocol (XMPP): Core,” RFC 3920, October 2004 (TXT, HTML, XML). |
| [RFC4151] | Kindberg, T. and S. Hawke, “The 'tag' URI Scheme,” RFC 4151, October 2005 (TXT). |
| [RFC4287] | Nottingham, M., Ed. and R. Sayre, Ed., “The Atom Syndication Format,” RFC 4287, December 2005 (TXT, HTML, XML). |
| [oinvite-ev-pow] | Fuelling, D., “OInvite POW Verification,” 2010. |
| [oinvite-identifier-discovery] | Fuelling, D., “OInvite Identifier Discovery,” 2010. |
| TOC |
| David Fuelling | |
| Sappenin Technologies, LLC | |
| Salt Lake City, UT 84117 | |
| USA | |
| Email: | sappenin@gmail.com |
| URI: | http://www.oinvite.net |