2009/dap/contacts Overview.html,1.5,1.6

Update of /sources/public/2009/dap/contacts
In directory hutz:/tmp/cvs-serv16638/contacts

Modified Files:
	Overview.html 
Log Message:
Contacts pass one; some fixes

Index: Overview.html
===================================================================
RCS file: /sources/public/2009/dap/contacts/Overview.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- Overview.html	30 Sep 2009 15:24:54 -0000	1.5
+++ Overview.html	5 Oct 2009 17:14:03 -0000	1.6
@@ -3,10 +3,7 @@
   <head>
     <title>The Contacts API</title>
     <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>
-    <script src='../ReSpec.js/js/simple-node.js' class='remove'></script>
-    <script src='../ReSpec.js/js/shortcut.js' class='remove'></script>
     <script src='../ReSpec.js/js/respec.js' class='remove'></script>
-    <script src='../ReSpec.js/bibref/biblio.js' class='remove'></script>
     <script class='remove'>
       var respecConfig = {
           specStatus:           "ED",
@@ -21,44 +18,37 @@
   </head>
   <body>
     <section id='abstract'>
-      This is the abstract for your specification.
+      This specification defines an API that provides access to the device's address book.
     </section>
     
-    <section id='conformance'></section>
-    
     <section>
-      <h2>Requirements</h2>
+      <h2>Introduction</h2>
       <p>
-        The Contacts API:
-      </p>
-      <ul>
-        <li>MUST enable listing all available address books on the device</li>
-        <li>MUST enable listing all contacts in the address book(s)</li>
-        <li>MUST enable reading the details for a contact</li>
-        <li>SHOULD enable creating a new contact</li>
-        <li>SHOULD enable updating a contact</li>
-        <li>SHOULD enable deleting a contact</li>
-        <li>SHOULD enable filtering the list of contacts to search for a subset</li>
-        <li>MUST support asynchronous, cancellable operation when methods may take a long time to complete</li>
-      </ul>
-      <p class='issue'>
-        Are there convincing use cases for supporting multiple address books in v1 (as opposed to just
-        a default one, and maybe exposing more later)?
+        Rather than each application having its own address book for its own purposes (email, phone,
+        driving directions) it is more practical for the user to have a single address book which
+        multiple applications share. That is what this specification exposes.
       </p>
-      <p class='issue'>
-        Do we need support for groups (currently not listed) in v1?
+      <p>
+        The requirements for this set of interfaces are listed in the Device API Requirements
+        document [[DAP-REQS]].
       </p>
     </section>
-
     
+    <section id='conformance'>
+      <p>
+        This specification defines conformance criteria that apply to a single product:
+        <dfn>user agents</dfn> that implement the interfaces that it contains.
+      </p>
+    </section>
+        
     <section>
       <h2>The <a>AddressBook</a> interface</h2>
       <p>
         The <a>AddressBook</a> interface exposes an interface to a database collecting addresses,
         such that they may be created, found, read, updated, and deleted.
       </p>
-      <dl title='interface AddressBook' class='idl'>
-        <dt>void addContact ()</dt>
+      <dl title='[NoInterfaceObject] interface AddressBook' class='idl'>
+        <dt>void add ()</dt>
         <dd>
           Adds a contact to the address book.
           <dl class='parameters'>
@@ -68,7 +58,17 @@
             </dd>
           </dl>
         </dd>
-        <dt>sequence&lt;Contact> findContacts ()</dt>
+        <dt>void remove ()</dt>
+        <dd>
+          Removes a contact from the address book.
+          <dl class='parameters'>
+            <dt>Contact contact</dt>
+            <dd>
+              The contact that is being removed.
+            </dd>
+          </dl>
+        </dd>
+        <dt>sequence&lt;Contact> find ()</dt>
         <dd>
           Uses a filter in order to find corresponding contacts in the address book.
           <dl class='parameters'>
@@ -86,7 +86,7 @@
       <p>
         The <a>Contact</a> interface captures a single contact item.
       </p>
-      <dl title='interface Contact' class='idl'>
+      <dl title='[NoInterfaceObject] interface Contact' class='idl'>
         <dt>attribute sequence&lt;DOMString> givenNames</dt>
         <dd>
           The contact's given names.
@@ -116,17 +116,61 @@
         <dd>
           The addresses of the contact.
         </dd>
-        <dt>attribute sequence&lt;DOMString> phones</dt>
+        <dt>attribute sequence&lt;PhoneNumber> phones</dt>
         <dd>
           The phones of the contact.
         </dd>
-        <dt>attribute sequence&lt;DOMString> emails</dt>
+        <dt>attribute sequence&lt;EmailAddress> emails</dt>
         <dd>
-          The email of the contact.
+          The emails of the contact.
+        </dd>
+        <dt>attribute sequence&lt;URIAddress> uris</dt>
+        <dd>
+          The URIs of the contact.
+        </dd>
+        <dt>attribute sequence&lt;IMHandle> ims</dt>
+        <dd>
+          The IMs of the contact.
+        </dd>
+        <dt>attribute File photo</dt>
+        <dd>
+          A picture of the contact.
+        </dd>
+        <dt>attribute DOMString prefix</dt>
+        <dd>
+          <p>
+            The prefix for the contact's name.
+          </p>
+          <p class='issue'>
+            Should this be called "honorific"?
+          </p>
+        </dd>
+        <dt>attribute DOMString suffix</dt>
+        <dd>
+          The suffix for the contact's name.
+        </dd>
+        <dt>attribute DOMString jobTitle</dt>
+        <dd>
+          The contact's job title.
+        </dd>
+        <dt>attribute Date birthday</dt>
+        <dd>
+          The contact's birthday.
+        </dd>
+        <dt>attribute DOMString phoneticName</dt>
+        <dd>
+          The contact's phonetic name.
         </dd>
         <dt>void save ()</dt>
         <dd>
           Saves the modified contact to the address book.
+          <dl class='exception' title='ContactsException'>
+            <dt>NO_BOOK_ERR</dt>
+            <dd>
+              The contact does not belong to an address book at this point in time and therefore
+              cannot be saved.
+            </dd>
+          </dl>
         </dd>
         <dt>DOMString getFullName ()</dt>
         <dd>
@@ -136,16 +180,226 @@
       </dl>
     </section>
 
+    <section>
+      <h2>The <a>Address</a> interface</h2>
+      <p>
+        The <a>Address</a> interface is used to describe a physical street address.
+      </p>
+      <dl title='[NoInterfaceObject] interface Address' class='idl'>
+        <dt>attribute DOMString street</dt>
+        <dd>
+          The address's street.
+        </dd>
+        <dt>attribute DOMString postalCode</dt>
+        <dd>
+          The address's postal code.
+        </dd>
+        <dt>attribute DOMString city</dt>
+        <dd>
+          The address's city.
+        </dd>
+        <dt>attribute DOMString region</dt>
+        <dd>
+          The address's region or state.
+        </dd>
+        <dt>attribute DOMString countryCode</dt>
+        <dd>
+          <p>
+            The address's ISO country code.
+          </p>
+          <p class='issue'>
+            This may not be or even guessable if the original address only stores the
+            country as a user-provided string. 
+          </p>
+        </dd>
+        <dt>attribute DOMString country</dt>
+        <dd>
+          The address's country, as a human-readable string.
+        </dd>
+        <dt>attribute DOMString building</dt>
+        <dd>
+          The address's building.
+        </dd>
+        <dt>attribute DOMString floor</dt>
+        <dd>
+          The address's floor.
+        </dd>
+        <dt>attribute DOMString accessCode</dt>
+        <dd>
+          The access code for that address.
+        </dd>
+      </dl>
+    </section>
+
+    <section>
+      <h2>The <a>PhoneNumber</a> interface</h2>
+      <p>
+        The <a>PhoneNumber</a> interface describes a phone number.
+      </p>
+      <dl title='[NoInterfaceObject] interface PhoneNumber' class='idl'>
+        <dt>attribute DOMString number</dt>
+        <dd>
+          The phone number.
+        </dd>
+        <dt>attribute DOMString type</dt>
+        <dd>
+          The type of the phone number (e.g. mobile, home, work, etc.).
+        </dd>
+      </dl>
+    </section>
+
+    <section>
+      <h2>The <a>EmailAddress</a> interface</h2>
+      <p>
+        The <a>EmailAddress</a> interface describes an email address.
+      </p>
+      <dl title='[NoInterfaceObject] interface EmailAddress' class='idl'>
+        <dt>attribute DOMString address</dt>
+        <dd>
+          The email address.
+        </dd>
+        <dt>attribute DOMString type</dt>
+        <dd>
+          The type of the email address (e.g. mobile, home, work, etc.).
+        </dd>
+      </dl>
+    </section>
+
+    <section>
+      <h2>The <a>URIAddress</a> interface</h2>
+      <p>
+        The <a>URIAddress</a> interface describes a URI.
+      </p>
+      <dl title='[NoInterfaceObject] interface URIAddress' class='idl'>
+        <dt>attribute DOMString address</dt>
+        <dd>
+          The URI.
+        </dd>
+        <dt>attribute DOMString type</dt>
+        <dd>
+          The type of the URI (e.g. blog, work, etc.).
+        </dd>
+      </dl>
+    </section>
+
+    <section>
+      <h2>The <a>IMHandle</a> interface</h2>
+      <p>
+        The <a>IMHandle</a> interface describes an IM handle.
+      </p>
+      <dl title='[NoInterfaceObject] interface IMHandle' class='idl'>
+        <dt>attribute DOMString address</dt>
+        <dd>
+          The IM handle.
+        </dd>
+        <dt>attribute DOMString type</dt>
+        <dd>
+          The type of the IM handle (e.g. home, work, etc.).
+        </dd>
+        <dt>attribute DOMString network</dt>
+        <dd>
+          The network of the IM handle (e.g. Jabber, IRC, iChat, etc.).
+        </dd>
+      </dl>
+    </section>
+
+    <section>
+      <h2>The <a>ContactFilter</a> interface</h2>
+      <p>
+        The <a>ContactFilter</a> interface captures a filter that enables simple searches
+        within the address book. Fields that are set to <code>null</code> are considered to match anything.
+      </p>
+      <dl title='[NoInterfaceObject] interface ContactFilter' class='idl'>
+        <dt>attribute DOMString givenName</dt>
+        <dd>
+          The given name that is being looked for.
+        </dd>
+        <dt>attribute DOMString familyName</dt>
+        <dd>
+          The family name that is being looked for.
+        </dd>
+        <dt>attribute DOMString nickname</dt>
+        <dd>
+          The nickname that is being looked for.
+        </dd>
+        <dt>attribute DOMString companyName</dt>
+        <dd>
+          The company name that is being looked for.
+        </dd>
+        <dt>attribute boolean isCompany</dt>
+        <dd>
+          True if a company is being looked for.
+        </dd>
+        <dt>attribute Address address</dt>
+        <dd>
+          The addresses that is being looked for, with its fields set to <code>null</code> where they
+          are expected to match anything.
+        </dd>
+        <dt>attribute DOMString phone</dt>
+        <dd>
+          The phone number that is being looked for.
+        </dd>
+        <dt>attribute DOMString email</dt>
+        <dd>
+          The email address that is being looked for.
+        </dd>
+        <dt>attribute DOMString uri</dt>
+        <dd>
+          The URI that is being looked for.
+        </dd>
+        <dt>attribute DOMString im</dt>
+        <dd>
+          The IM that is being looked for.
+        </dd>
+        <dt>attribute DOMString prefix</dt>
+        <dd>
+          The prefix that is being looked for.
+        </dd>
+        <dt>attribute DOMString suffix</dt>
+        <dd>
+          The suffix that is being looked for.
+        </dd>
+        <dt>attribute DOMString jobTitle</dt>
+        <dd>
+          The job title that is being looked for.
+        </dd>
+        <dt>attribute Date birthday</dt>
+        <dd>
+          <p>
+            The birthday that is being looked for.
+          </p>
+          <p class='issue'>
+            We probably want to look by day/month, not by year here.
+          </p>
+        </dd>
+        <dt>attribute DOMString phoneticName</dt>
+        <dd>
+          The phonetic name that is being looked for.
+        </dd>
+      </dl>
+    </section>
+
+    <section>
+      <h2>The ContactsException exception</h2>
+      <p>
+        The <a>ContactsException</a> exception class encapsulates all errors in the manipulation
+        of objects in the Contacts API.
+      </p>
+      <dl title='[NoInterfaceObject] exception ContactsException' class='idl'>
+        <dt>const unsigned short NO_BOOK_ERR = 0</dt>
+        <dd>
+          An object was manipulated in a way that requires it to belong to an address
+          book, but it hasn't been added to one yet.
+        </dd>
+      </dl>
+    </section>
+
     <section class='appendix'>
       <h2>Features for Future Consideration</h2>
       <p>
-        This is a list of features that have been discussed with respect to this version of the
-        API but for which it has been decided that if they are included it will be in a future
-        revision.
+        The requirements document contains a list of features that were considered for this version
+        but deferred to future work [[DAP-REQS]].
       </p>
-      <ul>
-        <li>...</li>
-      </ul>
     </section>
 
     <section class='appendix'>

Received on Monday, 5 October 2009 17:14:12 UTC