home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_s_z / draft-spencer-swtp-00.txt < prev    next >
Text File  |  1996-07-02  |  69KB  |  1,915 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.        Internet-Draft                                     Bill Spencer, Ph.D.
  9.        Scheduling Protocol                                      Mark M. Smith
  10.        draft-spencer-swtp-00.txt                  Phase2 Software Corporation
  11.        Expires in 6 months                                       24 June 1996
  12.  
  13.                       Scheduling Wide-area Transport Protocol
  14.                                         SWTP
  15.  
  16.  
  17.  
  18.        1.  Status of this Document
  19.  
  20.        This document is an Internet-Draft.  Internet-Drafts are working docu-
  21.        ments of the Internet Engineering Task Force (IETF),  its  areas,  and
  22.        its  working groups.  Note that other groups may also distribute work-
  23.        ing documents as Internet-Drafts.
  24.  
  25.        Internet-Drafts are draft documents valid for a maximum of six  months
  26.        and  may  be updated, replaced, or obsoleted by other documents at any
  27.        time.  It is inappropriate to use Internet-Drafts as  reference  mate-
  28.        rial or to cite them other than as "work in progress."
  29.  
  30.        To  learn  the  current status of any Internet-Draft, please check the
  31.        "1id-abstracts.txt" listing  contained in the  Internet-Drafts  Shadow
  32.        Directories   on   ds.internic.net   (US  East  Coast),  nic.nordu.net
  33.        (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim).
  34.  
  35.  
  36.  
  37.        2.  Abstract
  38.  
  39.        This  document  describes  the Scheduling Wide-area Transport Protocol
  40.        (SWTP), a protocol designed to allow calendar and scheduling  informa-
  41.        tion  repositories  to  be accessed in a uniform and consistent manner
  42.        across the network.
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.                                       CONTENTS
  67.  
  68.  
  69.  
  70.        1.  Status of this Document .............................. 1
  71.  
  72.        2.  Abstract ............................................. 1
  73.  
  74.        3.  Overview ............................................. 4
  75.  
  76.        4.  History and Motivation for this Protocol ............. 4
  77.            4.1  Enterprise-wide Scheduling ...................... 4
  78.  
  79.        5.   Protocol Overview ................................... 5
  80.            5.1  Synchronous Requests ............................ 5
  81.            5.2  Connecting via SWTP ............................. 5
  82.  
  83.        6.  Transport Services ................................... 6
  84.            6.1  Transmission Control Protocol (TCP) ............. 6
  85.  
  86.        7.  Protocol Definitions ................................. 6
  87.            7.1  Character strings ............................... 6
  88.            7.2  Dates ........................................... 6
  89.            7.3  Request Message ................................. 7
  90.            7.4  Response Message ................................ 9
  91.            7.5  Error Messages .................................. 9
  92.  
  93.        8.  Operations .......................................... 10
  94.            8.1  Bind Operation ................................. 10
  95.            8.2  Bindserver Operation ........................... 12
  96.            8.3  Unbind Operation ............................... 12
  97.            8.4  Id Operation ................................... 13
  98.            8.5  List Operation ................................. 13
  99.            8.6  Add Operation .................................. 14
  100.            8.7  Replace Operation .............................. 14
  101.            8.8  Delete Operation ............................... 15
  102.            8.9  Compare Operation .............................. 15
  103.            8.10 FreeTimeSearch Operation ....................... 15
  104.            8.11 Projection Operation ........................... 15
  105.            8.12 Confirmation Operation ......................... 15
  106.            8.13 AccessPermission Operation ..................... 15
  107.            8.14 Abandon Operation .............................. 15
  108.            8.15 SetCalendar Operation .......................... 16
  109.  
  110.        9.  Name Directory Operations ........................... 16
  111.  
  112.  
  113.  
  114.                                      i
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.            9.1  Add/Replace/Delete/List/Forward Name ........... 17
  125.            9.2  Forward ........................................ 17
  126.            9.3  Delete ......................................... 17
  127.  
  128.        10. Protocol Element Encodings .......................... 17
  129.  
  130.        11. Security Considerations ............................. 18
  131.  
  132.        12. Appendix A. Definition of Scheduling Operations ..... 20
  133.  
  134.        13. Appendix B. BNF Description of SWTP ................. 22
  135.  
  136.        14. Appendix C. Attribute Definitions ................... 26
  137.            14.1 Event Attributes ............................... 26
  138.            14.2 Name Attributes ................................ 29
  139.            14.3 Other Attributes ............................... 30
  140.  
  141.        15. Appendix D. Access to a Demonstration Server ........ 32
  142.  
  143.        16. Appendix E. Bibliography ............................ 32
  144.  
  145.        17. Appendix F. Authors' Address ........................ 32
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.                                     ii
  173.  
  174.  
  175.  
  176.  
  177.  
  178.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  179.  
  180.  
  181.  
  182.        3.  Overview
  183.  
  184.        The practical implications of widespread adoption of a scheduling pro-
  185.        tocol  is  to  allow  easy  dissemination of calendar information like
  186.        sports schedules, entertainment schedules, etc., and to allow users to
  187.        invite  other  users to meetings, or to reserve resources like meeting
  188.        rooms, or other mundane scheduling tasks by  passing  simple  messages
  189.        across  the Internet. An important aspect of any scheduling service is
  190.        that it interface consistently with existing directory services.  This
  191.        protocol  is designed to work with RFC822 [3] compliant addresses like
  192.        bspencer@p2software.com and in  the  future,  can  be  compliant  with
  193.        directory access protocols such as LDAP [1].
  194.  
  195.        The protocol is designed to be simple, and "lightweight". A scheduling
  196.        agent (or client software) does not need to know a  great  deal  about
  197.        the  network  to  use this protocol.  All data elements are encoded as
  198.        ordinary strings, and are managed in manner similar to other  internet
  199.        protocols.
  200.  
  201.        Some  care  has  been taken here to define scheduling operations which
  202.        are common to most commercial group scheduling software packages.   In
  203.        this way, gateways to this protocol can be quickly built, and users of
  204.        competing scheduling packages could communicate with each other.
  205.  
  206.  
  207.        4.  History and Motivation for this Protocol
  208.  
  209.        4.1  Enterprise-wide Scheduling
  210.  
  211.        In the past, most group scheduling has confined itself to  just  that,
  212.        groups.   Within  a  business,  engineering  formed a group, marketing
  213.        formed a group, or a building defined a group.  If people  used  group
  214.        schedulers  at  all,  each group would have its own scheduler, and ran
  215.        that scheduler on its own preferred platform.  There was little commu-
  216.        nication between scheduling software located in different locations.
  217.  
  218.        To extend this model to the larger enterprise, people will continue to
  219.        work and schedule in groups, however those groups must  be  connected.
  220.        Individual  groups  may  have their own scheduling server, however, it
  221.        must appear to an individual scheduling within one logical group, that
  222.        scheduling  an  individual  in  another  group, is exactly the same as
  223.        scheduling one in the local group.
  224.  
  225.        We also must allow a wide variety of personal scheduling  software  to
  226.        communicate with with other scheduling software across the enterprise.
  227.        People are very attached to the interface presented by their  personal
  228.  
  229.  
  230.        Spencer                                             [Page 4]
  231.  
  232.  
  233.  
  234.  
  235.  
  236.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  237.  
  238.  
  239.  
  240.        scheduler, even though the basic attributes of an event can be handled
  241.        by almost any scheduler.
  242.  
  243.        This is possible using the internet, and its  resources.   Scaling  to
  244.        the enterprise level is done using a collection of servers communicat-
  245.        ing via this protocol, instead of the massive mainframe,  or  high-end
  246.        database  software  approach.   Third  party  scheduling  software can
  247.        interoperate with  this  protocol  or  through  an  intermediate  HTTP
  248.        server.
  249.  
  250.  
  251.        5.  Protocol Overview
  252.  
  253.        The  model  for  this protocol is that of a client performing protocol
  254.        operations against a server.  The client transmits a data set  includ-
  255.        ing  an  operation, and a response format definition.  Upon completion
  256.        of the request, the server returns a response containing  any  results
  257.        or errors to the client.  In preparing the response, the server itself
  258.        may act as a client to other SWTP servers on the  network.   There  is
  259.        not  the  need  for  the  client to prepare multiple requests to other
  260.        servers on the network, nor is there the need for the client to expect
  261.        that  the  server  will refer the client to another server on the net-
  262.        work.   Instead, the  server  will  initiate  the  contact,  and  pass
  263.        through the results from the other server in the appropriate manner to
  264.        the client.
  265.  
  266.        5.1  Synchronous Requests
  267.  
  268.        Certain of the protocol requests require  synchronicity.   The  client
  269.        must  observe  this when requesting add/delete/modify, particularly of
  270.        the same record.  The server will process the requests  in  the  order
  271.        they  are  received, with the sole exception being the abort or unbind
  272.        requests which will cause all pending requests to be removed, and back
  273.        out of the current request as much as is possible.
  274.  
  275.        Generally,  multiple servers may be operating on the same data reposi-
  276.        tory.  This eliminates the need for one server to manage multiple ses-
  277.        sions.
  278.  
  279.  
  280.        5.2  Connecting via SWTP
  281.  
  282.        SWTP is connection oriented.  To utilize SWTP, the client must put the
  283.        server through a binding process, followed by a sequence of  requested
  284.        operations,  then an unbind operation.  In theory, there could be many
  285.        clients maintaining open sessions  to  the  SWTP  server(s)  for  long
  286.  
  287.  
  288.        Spencer                                             [Page 5]
  289.  
  290.  
  291.  
  292.  
  293.  
  294.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  295.  
  296.  
  297.  
  298.        periods  of  time.   In  practice,  most  scheduling operations do not
  299.        require remaining in an open session for a long period of time.  It is
  300.        usually  more  of  a  retrieve and display operation.  When building a
  301.        client, or gateway to the SWTP server, the developer is encouraged  to
  302.        take  advantage  of  the long periods of wait time between user opera-
  303.        tions to break the connection and re-establish it again.  This can  be
  304.        especially  useful  for  users  utilizing expensive phone-line connec-
  305.        tions.
  306.  
  307.  
  308.  
  309.        6.  Transport Services
  310.  
  311.  
  312.        This protocol is designed to run  over  connection-oriented,  reliable
  313.        transports,  with all 8 bits in an octet being significant in the data
  314.        stream.  Specifications for two underlying services are defined  here,
  315.        though others are also possible.
  316.  
  317.  
  318.        6.1  Transmission Control Protocol (TCP)
  319.  
  320.  
  321.        Server  implementations running over the TCP should provide a protocol
  322.        listener on port 5551. (Note: This is an unregistered user level port,
  323.        and may change in later revisions of the document.)
  324.  
  325.  
  326.  
  327.        7.  Protocol Definitions
  328.  
  329.        7.1  Character strings
  330.  
  331.        Legal characters in the strings are encoded as 8 bit bytes, limited to
  332.        the International IA5 character set.
  333.  
  334.        7.2  Dates
  335.  
  336.        Understanding when a event occurs requires three parameters:
  337.  
  338.          1.  The date using an unambiguous format (eg.  16-Oct-1996).  (Note:
  339.              multiple formats are accepted, see the appendix for a full list.
  340.              )
  341.  
  342.          2.  The time formatted by a 24 hour clock (eg. 14:23).
  343.  
  344.  
  345.  
  346.        Spencer                                             [Page 6]
  347.  
  348.  
  349.  
  350.  
  351.  
  352.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  353.  
  354.  
  355.  
  356.          3.  The timezone.  This is always specified at the beginning of  the
  357.              session  during  the "bind" operation.  Generally, the client is
  358.              expected to specify its own timezone.  Timezones should be  gen-
  359.              erally  specified  in a manner understood by the UNIX tzset sub-
  360.              routine, or using the +/-hhmm offset described in RFC1036 [4].
  361.  
  362.        Communication between the client and the server will occur  using  the
  363.        timezone  specified  by  the  client during the binding process.  This
  364.        need not be UTC, or GMT!  The reason for this is that when  scheduling
  365.        many  events,  we  must not only keep track of the universal time when
  366.        the event occurs, but the day interval which surrounds it as well.
  367.  
  368.        Note that 9:00PM in New York on 16-Oct-1996 is the same time as 2:00AM
  369.        on  17-Oct-1997  in  London,  so a date of 16-Oct-1996 is not the same
  370.        world over.  Also note that an event occuring  every  Tuesday  in  New
  371.        York,  may  occur  every  Wednesday when viewed from London.  Thus the
  372.        definition of the day of the week is very dependent on  the  timezone,
  373.        and it is insufficient to just give times in UTC based units when cou-
  374.        pled with a repeating parameter.
  375.  
  376.        A more complicated example is an event which occurs on the  first  Wed
  377.        of  January every year may on some years occur on Tueday of the previ-
  378.        ous month in the previous year when viewed from a different  timezone.
  379.        To  keep  all  this  straight,  and  to  allow for timezone definition
  380.        changes in the future, it is beneficial to  be  able  to  perform  the
  381.        extra computations in the server rather than communicate in UTC, which
  382.        is the natural tendency for network communications.
  383.  
  384.        The protocol also allows the specification of the timezone for  commu-
  385.        nication  of dates between the client and server for individual opera-
  386.        tions.  Thus, an event scheduled in New York in EST, involving a meet-
  387.        ing in San Francisco, can be specified as occuring at 2:00 PM PST.
  388.  
  389.        7.3  Request Message
  390.  
  391.        For  the  purposes  of protocol exchanges, all protocol request opera-
  392.        tions are encapsulated in a common format, as follows:
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.        Spencer                                             [Page 7]
  405.  
  406.  
  407.  
  408.  
  409.  
  410.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  411.  
  412.  
  413.  
  414.        ; swtprequest - This is the formulation of the message to the server
  415.        swtprequest:
  416.             messageID newline
  417.             "operation =" operationname newline
  418.             *[ attributename "=" attributevalue  newline ]
  419.             newline
  420.  
  421.        messageID:
  422.             1*[digits]
  423.  
  424.  
  425.        (A full description of the protocol may be found in Appendix C.   This
  426.        uses  the modified BNF form found in RFC1738 [2]. ) Note that all nor-
  427.        mal request messages consist of a set of name-value pairs,  terminated
  428.        by  a blank line.  All values are URI encoded (see description below).
  429.        The sequence of possible name-value pairs is defined in an appendix.
  430.  
  431.        Depending on the value of the variable  with  name  "operation",  only
  432.        certain  name-value  pairs have meaning in the context of a given mes-
  433.        sage.  The 4 basic database operations are "add", "delete", "replace",
  434.        and "list", which may be modified by "name" to gather or update infor-
  435.        mation in the calendar directory service.  For  example  the  sequence
  436.        item
  437.  
  438.             operation=add name
  439.  
  440.        defines  that  this request is to add a named calendar to the calendar
  441.        data repository.  There are an additional set  of  calendar  operation
  442.        modifiers which combined cause special operations, for example,
  443.  
  444.             listtype="search 'other'"
  445.             operation=list
  446.  
  447.        will  cause  a  listing of all events that contain the word "other" in
  448.        them within the domain restricted by the other name=value pairs.
  449.  
  450.        The format for the request message is the same for all  SWTP  messages
  451.        except  the  "id"  function described below.  The function of the SWTP
  452.        message is to provide an envelope containing common fields required in
  453.        all protocol exchanges. The only common field is the message ID, which
  454.        is required to have a value different from the  values  of  any  other
  455.        requests  outstanding  in  the SWTP session of which this message is a
  456.        part.  The message ID "0" is treated as special.  A server receiving a
  457.        message  ID  0 will stop processing the current operation, and perform
  458.        ID 0 before continuing.  Generally use of this number is restricted to
  459.        the   passing   of  the  "abort",  or  "unbind"  messages  which  will
  460.  
  461.  
  462.        Spencer                                             [Page 8]
  463.  
  464.  
  465.  
  466.  
  467.  
  468.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  469.  
  470.  
  471.  
  472.        discontinue any processing in an orderly fashion.
  473.  
  474.  
  475.        7.4  Response Message
  476.  
  477.        The message ID value must be echoed  in  all  SWTP  message  envelopes
  478.        encapsulting  responses  corresponding to the request contained in the
  479.        SWTP message in which the message ID value was originally used.
  480.  
  481.  
  482.  
  483.        ; swtpresponse - This is the response of the server.
  484.        ; A "0" response indicates success
  485.        ; A "1" response indicates error
  486.        swtpresponse:
  487.             messageID newline
  488.             1*[ "0" newline |
  489.             "0" data newline |
  490.             "1" errormsg newline ]
  491.             newline
  492.  
  493.  
  494.        In the event of a success, a resultcode of 0 is returned, and optional
  495.        set  of  data.  If a sequence of non-zero error responses is returned,
  496.        there will be no "0" response.
  497.  
  498.        The data returned is a table of information  representing  a  list  of
  499.        events,  tasks,  or calendar names.   The first line is an ordered set
  500.        of attribute field names.  All subsequent lines contain  corresponding
  501.        data in that same order.
  502.  
  503.  
  504.        7.5  Error Messages
  505.  
  506.        In  the  event  of an error, the response SWTPmessage will have a non-
  507.        zero response code, and an error message.  The error messages are for-
  508.        matted with a numeric entry, followed by an English translation of the
  509.        result code.  For example the result message:
  510.  
  511.  
  512.             1
  513.             1  0023 Invalid user name: bill
  514.  
  515.        says that this is a response to message #1.  There is an  error,  with
  516.        error  code  0023, which in English says that the user "bill" is not a
  517.        valid user name.  The presence of the error  codes  allow  non-English
  518.  
  519.  
  520.        Spencer                                             [Page 9]
  521.  
  522.  
  523.  
  524.  
  525.  
  526.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  527.  
  528.  
  529.  
  530.        clients to translate the error codes to an appropriate language.
  531.  
  532.  
  533.  
  534.        8.  Operations
  535.  
  536.        This  is  the  list  of operations which the server may perform.  Each
  537.        operation is specified within a message by the variable  name  "opera-
  538.        tion". For example, the name=value pair of
  539.  
  540.             operation=bind
  541.  
  542.  
  543.        specifies the "bind" operation.
  544.  
  545.        8.1  Bind Operation
  546.  
  547.  
  548.        The  function  of the Bind Operation is to initiate a protocol session
  549.        between a client and a server, and to allow the authentication of  the
  550.        client  to  the server. The Bind Operation must be the first operation
  551.        request received by a server from a client in a protocol session.  The
  552.        Bind Request is defined as follows:
  553.  
  554.             1
  555.             operation=bind
  556.             user=UserName
  557.             password=Password
  558.             version=SWTPversion
  559.             timezone=Timezone
  560.             [currentdate=date]
  561.             [locale=Locale]
  562.  
  563.  
  564.        Parameters of the Bind Request are:
  565.  
  566.          version           A  version  number  indicating  the version of the
  567.                            protocol to be  used  in  this  protocol  session.
  568.                            Note  that this is set by the client.  The version
  569.                            defined by this protocol definition is 2.
  570.  
  571.  
  572.          user              The name of an allowed user of this  SWTP  server.
  573.                            This  request  will  not  be  forwarded  to  other
  574.                            servers, so if this name is  not  known  here,  it
  575.                            fails.
  576.  
  577.  
  578.        Spencer                                            [Page 10]
  579.  
  580.  
  581.  
  582.  
  583.  
  584.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  585.  
  586.  
  587.  
  588.          password          Initially  we  only do simple authentication.  The
  589.                            password  is  unencrypted  and  easily   viewable.
  590.                            Later versions are expected to have an authentica-
  591.                            tion attribute, which could be set to kerberos for
  592.                            example.  Then the password could be more complex.
  593.  
  594.  
  595.          timezone          This indicates the timezone that the  conversation
  596.                            between  the  server  and client will be conducted
  597.                            in.  This may only be set once, at  the  beginning
  598.                            of  the session.  All dates and times will be con-
  599.                            verted by the server to this timezone.  All  dates
  600.                            and  times  sent by the client will be interpreted
  601.                            in this timezone.  Allowed values are those of the
  602.                            tzset call in UNIX, or a numerical offset relative
  603.                            to UTC (formerly GMT) in minutes (see [4]).   Note
  604.                            that  repeating  events  which  cross the Daylight
  605.                            savings time barrier prefer the use the tzset UNIX
  606.                            format  to be treated correctly in all other time-
  607.                            zones.  The interpretation of an  individual  time
  608.                            may  be overridden by appending a time zone speci-
  609.                            fication.
  610.  
  611.          currentdate       This is an optional field.  This is the  date  and
  612.                            time  as  viewed  by the client in the given time-
  613.                            zone.  This time formatted as specified in RFC1036
  614.                            [4]. There are several other date formats commonly
  615.                            recognized on the Internet, and it is  recommended
  616.                            that  the  server  recognize these as well.  These
  617.                            are also mentioned in [4].  The server  uses  this
  618.                            to  validate  its  understanding  of  the time and
  619.                            timezone reference of the client.   If  the  times
  620.                            agree  within  15  minutes of each other, then the
  621.                            server will continue  with  the  binding  process,
  622.                            otherwise  an  error  will  be printed, giving the
  623.                            server's understanding of the current time in  the
  624.                            given timezone.  The client could make adjustments
  625.                            and attempt a  re-connect,  or  the  client  could
  626.                            choose  to  ignore  the  error,  and attempt a re-
  627.                            connect without specifying this optional field.
  628.  
  629.          locale            This is an optional  field.   This  specifies  the
  630.                            locale  of the client.  The primary effect here is
  631.                            on the format of dates.  In version 2 of the  SWTP
  632.                            server,  only  the  standard American date formats
  633.                            and English weekday names  are  guaranteed  to  be
  634.  
  635.  
  636.        Spencer                                            [Page 11]
  637.  
  638.  
  639.  
  640.  
  641.  
  642.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  643.  
  644.  
  645.  
  646.                            understood correctly.
  647.  
  648.        Upon  receipt of a Bind Request, the SWTP server will authenticate the
  649.        requesting client, and set up a protocol session with that client. The
  650.        server will then return a response to the client indicating the status
  651.        of the session setup request.  Note that the bind operation is  always
  652.        the first request, and usually is given the messageID of 1.
  653.  
  654.  
  655.        8.2  Bindserver Operation
  656.  
  657.        This operation is to facilitate server to server communication.
  658.  
  659.             operation=bindserver
  660.             name=Name
  661.             password=Password
  662.             version=SWTPversion
  663.             timezone=Timezone
  664.             currentdate=date
  665.  
  666.        For the purposes of allowing unknown servers to connect as a client to
  667.        a given server, the name "anonymous" using the permissions granted  to
  668.        anonymous  by  the  local administrator are used.  It is expected that
  669.        the anonymous name will use a password of the e-mail address  obtained
  670.        by  the  "id" operation.  Known servers are known by "Name" located at
  671.        DomainName, and are given a Password.  This allows  known  servers  to
  672.        have a higher level of access permission than the anonymous name would
  673.        allow.  Servers may maintain their own set of Name and  Passwords  for
  674.        accessing  different servers through the network.  Authenticated peers
  675.        should have the "Full" permission level to allow complete  transparent
  676.        inter-server scheduling.
  677.  
  678.  
  679.        8.3  Unbind Operation
  680.  
  681.  
  682.        The  function  of the Unbind Operation is to terminate a protocol ses-
  683.        sion.  The Unbind Operation is defined as follows:
  684.  
  685.             0
  686.             operation=unbind
  687.  
  688.        Upon receipt of the unbind request, the SWTP server will terminate the
  689.        session.   The  use  of  messageID 0 is not required here.  The use of
  690.        messageID 0 will terminate all processing of all current operations if
  691.        necessary.
  692.  
  693.  
  694.        Spencer                                            [Page 12]
  695.  
  696.  
  697.  
  698.  
  699.  
  700.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  701.  
  702.  
  703.  
  704.        There is no response required from this request.
  705.  
  706.  
  707.        8.4  Id Operation
  708.  
  709.        This  request  may be performed on any server, without first authenti-
  710.        cating, or binding to the server.  The operation  simply  consists  of
  711.        "id"  followed  by  two  newline's.   The server will respond with the
  712.        date, time and timezone of the server, the fully qualified domainname,
  713.        a  serial  number  and product name, and optionally, an e-mail address
  714.        which can be used to report problems.  The response message is  termi-
  715.        nated by two newline's.
  716.  
  717.        8.5  List Operation
  718.  
  719.  
  720.        The  List  operation  outputs  information about events on the current
  721.        calendar.  Rather than outputing all information, the desired list  of
  722.        attributes may be specified to minimize the response size.
  723.  
  724.        ListRequest:
  725.             messageID newline
  726.             "operation = list" newline
  727.             [ "attributes = " 1*attributename newline ]
  728.             [ "listtype" = SearchCriteria newline ]
  729.             [ "sizeLimit =" digits newline ]
  730.             [ "timeLimit =" digits newline ]
  731.             newline
  732.  
  733.        SearchCriteria:
  734.             daterange |
  735.             searchpattern |
  736.             taskonly |
  737.             eventonly |
  738.             undonetasks |
  739.             category
  740.  
  741.  
  742.        Parameters of the List Request are:
  743.  
  744.          sizeLimit         A  sizelimit  that restricts the maximum number of
  745.                            entries to be returned as a result of the list.  A
  746.                            value  of  0 in this field indicates that no size-
  747.                            limit restrictions are in effect for the list.
  748.  
  749.  
  750.  
  751.  
  752.        Spencer                                            [Page 13]
  753.  
  754.  
  755.  
  756.  
  757.  
  758.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  759.  
  760.  
  761.  
  762.          timelimit         A timelimit that restricts  th  maximum  time  (in
  763.                            seconds)  allowed for a list. A value of 0 in this
  764.                            field indicates that no timelimit restrictions are
  765.                            in effect for the list.
  766.  
  767.          listtype          A  filter that defines the conditions that must be
  768.                            fulfilled in order for a given entry to be listed.
  769.  
  770.          attributes        A  list of the attributes from each entry found as
  771.                            a result of the list operation to be returned.  An
  772.                            empty list signifies that all attributes from each
  773.                            entry found  in  the  list  operation  are  to  be
  774.                            returned.  Attributes which the user/calendar does
  775.                            not have permission to see  will  be  returned  as
  776.                            empty  fields.   Several  special  attributes  are
  777.                            defined for the purposes of being confirmcookie --
  778.                            a  magic  number indicating that this event can be
  779.                            confirmed by  a  sending  the  server  an  unbound
  780.                            cookie message in the form of an HTTP message.
  781.  
  782.  
  783.        8.6  Add Operation
  784.  
  785.        The  add  operation adds an event to the calendar database.  There are
  786.        three major complicating factors.  The first is a conflict check, con-
  787.        firming  that no attendees have a conflict at the indicated time.  The
  788.        second is resource pooling, allowing the server to  select  at  random
  789.        one  or  more resources from a pool of resources that may be available
  790.        at the indicated time. And third  is  setting  up  a  methodology  for
  791.        another user confirming that they can attend an event.
  792.  
  793.        The  conflict check returns an error if the flag "ignoreconflicts" has
  794.        not been set and there  are  timing  conflicts  between  resources  or
  795.        users.   Users  of the FreeTimeSearch operation should still check for
  796.        this error, even if a time has previously been found to be free.
  797.  
  798.        The  add  operation  also  allows  the  definition  of  "non-standard"
  799.        attributes.   These  attributes  allow  developers  to define links to
  800.        other databases through unique  id  fields,  or  whatever  they  need.
  801.        There  is  a  set of standard attributes  and reserved attribute names
  802.        defined in a separate document.
  803.  
  804.        8.7  Replace Operation
  805.  
  806.        This takes the new attributes, replaces them  in  an  existing  event,
  807.        then  replaces that event in the database.  The same conditions of the
  808.  
  809.  
  810.        Spencer                                            [Page 14]
  811.  
  812.  
  813.  
  814.  
  815.  
  816.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  817.  
  818.  
  819.  
  820.        "Add" operation apply here.
  821.  
  822.        8.8  Delete Operation
  823.  
  824.        This deletes the existing event.  If the user is not the originator of
  825.        the  event, it is only deleted within their schedule.  A deleted event
  826.        serves to indicate that a person will not attend a  given  event.   If
  827.        the  event  is  updated  by the originator, and the users name has not
  828.        been removed from the original list, the user will again be  scheduled
  829.        for the event.
  830.  
  831.        8.9  Compare Operation
  832.  
  833.        Find  an  event  in  the current schedule matching the attributes set.
  834.        The list operation is generally better at finding events than this.
  835.  
  836.        8.10  FreeTimeSearch Operation
  837.  
  838.        This operation searches for the next n  freetimes  for  the  indicated
  839.        event within a specified timerange.
  840.  
  841.        8.11  Projection Operation
  842.  
  843.        This  operation displays a projection of the busy times for a calendar
  844.        or calendars during a time interval.
  845.  
  846.        8.12  Confirmation Operation
  847.  
  848.        This operation confirms a persons attendance at an event.  This is  an
  849.        isolated  operation,  which  is  performed  without a "bind".  A magic
  850.        cookie value is used to bind to the server, perform  the  confirmation
  851.        then automatically unbind.  Only an acknowledgement that the operation
  852.        has been performed is given.
  853.  
  854.        8.13  AccessPermission Operation
  855.  
  856.        This operation sets/resets the permissions other  users  have  to  the
  857.        current calendar.  Note that this is an attribute of the calendar, not
  858.        of the user.  Thus, it is a calendar operation, not a  Name  Directory
  859.        operation.
  860.  
  861.        8.14  Abandon Operation
  862.  
  863.        The  function of the Abandon Operation is to allow a client to request
  864.        that the server abandon an outstanding operation.  The Abandon Request
  865.        is defined as follows:
  866.  
  867.  
  868.        Spencer                                            [Page 15]
  869.  
  870.  
  871.  
  872.  
  873.  
  874.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  875.  
  876.  
  877.  
  878.        abandon:
  879.             messageID newline
  880.             "operation=abandon" newline
  881.             "messageid=" messageID
  882.             newline
  883.  
  884.  
  885.        There  is no response defined in the Abandon Operation. Upon transmis-
  886.        sion of an Abandon Operation, a client may expect that  the  operation
  887.        identityfied  by  the Message ID in the Abandon Request has been aban-
  888.        doned. In the event that a server receives an  Abandon  Request  on  a
  889.        Search  Operation  in  the  midst  of  transmitting  responses to that
  890.        search, that server should cease transmitting responses to  the  aban-
  891.        doned search immediately.
  892.  
  893.  
  894.        8.15  SetCalendar Operation
  895.  
  896.        This  operation  changes  the current calendar to another calendar, or
  897.        group of calendars.  The success of this operation is  heavily  depen-
  898.        dant on the permission structure allowed for the currently bound user.
  899.  
  900.  
  901.  
  902.        9.  Name Directory Operations
  903.  
  904.        Names within the SWTP protocol mirror the  RFC822  [3]  mail  counter-
  905.        parts.   The schedule for Bill Spencer at p2software.com is maintained
  906.        as bspencer@p2software.com.  Unlike  mail,  there  are  addresses  for
  907.        resources,  for  example  projector1@p2software.com,  or equivalently,
  908.        calendar addresses can be set up for projects or any activity.   Since
  909.        there  are  often  reasons to not use a persons mail address for their
  910.        calendar address, the calendar address must always be viewed as  sepa-
  911.        rate  from  the  mail  address.   Also, group objects, such as a group
  912.        called "projectors" can have a modifier to select one or  more  avail-
  913.        able  resources  from  that  group,  in  which case it is addressed as
  914.        1*projectors@p2software.com.
  915.  
  916.        Locally, SWTP  maintains a directory of 7 different  types  of  names.
  917.        These  are user schedule names, resource schedule names, remote server
  918.        names, group names, local system names,  aliases,  and  remote  names.
  919.        All  SWTP servers with full scheduling capability within an enterprise
  920.        maintain at minimum their own local user, resource, and group schedule
  921.        names,  as well as redundant information about servers on the network.
  922.        Remote names are maintained for convenience only.  These  are  created
  923.        on  a  temporary  basis  when a local scheduling operation occurs, and
  924.  
  925.  
  926.        Spencer                                            [Page 16]
  927.  
  928.  
  929.  
  930.  
  931.  
  932.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  933.  
  934.  
  935.  
  936.        confirmed with the remote SWTP server.  If  the  name  on  the  remote
  937.        server  is  modified,  changes  do  not occur immediately on the local
  938.        server, but any scheduling operation will cause an update of the  name
  939.        information to occur.  In this way the directory information regarding
  940.        remote names is not always up to date, but self-corrects in the appro-
  941.        priate way over time.
  942.  
  943.        The SWTP server hides many of the ugly attributes of the management of
  944.        these names, however, at a later time this may be supplanted by direct
  945.        connections to an LDAP [1] server.
  946.  
  947.        9.1  Add/Replace/Delete/List/Forward Name
  948.  
  949.        These  are  the set of operations which may be performed on a schedule
  950.        name.  The add, replace,  and list operations  are  standard  database
  951.        operations  which  use  the  set  of attributes given in the Appendix.
  952.        These operations are encapsulated in the same type of message  as  the
  953.        calendar operation.
  954.  
  955.        9.2  Forward
  956.  
  957.        Forward  allows  a calendar to be moved from one server to another (or
  958.        within the same server) without disruption of events already scheduled
  959.        for  that  calendar.   Unlike  mail, the fact that a calendar has been
  960.        forwarded is automatically passed back to local server,  so  a  remote
  961.        name  reference  will  be updated to the new forwarded name as part of
  962.        the self-correcting nature of the SWTP directory.
  963.  
  964.        9.3  Delete
  965.  
  966.        The delete operation under standard database rules can  cause  hideous
  967.        referential  integrity  problems  in  a  wide-area scheduling service.
  968.        Rather than try  to  trace  all  references  to  a  name  within  that
  969.        database,  these  references are allowed to persist.  When referenced,
  970.        these references are indicated as being  UNKNOWN,  and  then  dropped.
  971.        This  allows  the  referential  integrity  of the database to be self-
  972.        correcting over time, without incurring the  overhead  of  maintaining
  973.        exact referential integrity.
  974.  
  975.  
  976.        10.  Protocol Element Encodings
  977.  
  978.        All  variables  and constructs passed to and from the server are indi-
  979.        vidually 'URI-encoded'.  This encoding is described in section 2.2  of
  980.        [2].   In a URI encoded string an escape sequence is a percent charac-
  981.        ter ("%") followed by two hexadecimal digits which form an  OCTET.   A
  982.  
  983.  
  984.        Spencer                                            [Page 17]
  985.  
  986.  
  987.  
  988.  
  989.  
  990.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  991.  
  992.  
  993.  
  994.        newline  (see  the  definition  in  Appendix  C)  is used to delimit a
  995.        name=value pair, and the messageID.  The message starts with the first
  996.        non-newline  character,  and  is  terminated with a newline.  Thus the
  997.        message ends with two sequential  newlines,  one  for  delimiting  the
  998.        final parameter, and the other for delimiting the envelope.
  999.  
  1000.  
  1001.        11.  Security Considerations
  1002.  
  1003.        There  are  basic  security  mechanisms  which are required for proper
  1004.        operation of SWTP.  These are
  1005.  
  1006.          1.  User authentication for session binding purposes. At the present
  1007.              time  the protocol only provides for simple authentication using
  1008.              a cleartext password.
  1009.  
  1010.          2.  Permission levels permitting or denying access to  other  calen-
  1011.              dars after binding.  SWTP recognizes 6 different levels of secu-
  1012.              rity here.
  1013.  
  1014.              Full                A user is granted  full  access  to  another
  1015.                                  persons calendar and may modify schedules as
  1016.                                  if that user.
  1017.  
  1018.              ViewInvite          A user may view another calendar, and invite
  1019.                                  that  person to meetings, but may not other-
  1020.                                  wise modify that calendar.
  1021.  
  1022.              Invite              A user may invite another to  meetings,  and
  1023.                                  determine  if  that person is available, but
  1024.                                  may not view specific data on that calendar.
  1025.  
  1026.              ViewOnly            A  user  may  view another schedule, but not
  1027.                                  invite that person to meetings.
  1028.  
  1029.              None                A user may not view  another  calendar,  nor
  1030.                                  invite them to meetings.
  1031.  
  1032.          3.  An  administrative  permission  level.   This  is the user named
  1033.              "admin" within the local server's directory.  This user can per-
  1034.              form  neccessary  housekeeping  functions  within the server, in
  1035.              particular, the maintenance of the directory.
  1036.        The SWTP server takes care of handling  these  permission  levels.   A
  1037.        request  for  a listing of events from another calendar which you have
  1038.        "None" permission will yield no listing.  A  request  for  listing  of
  1039.        events  from  another calendar which you have "Invite" permission will
  1040.  
  1041.  
  1042.        Spencer                                            [Page 18]
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1049.  
  1050.  
  1051.  
  1052.        yield a list of events, but with no details other than date  and  time
  1053.        filled in.
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.        Spencer                                            [Page 19]
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1107.  
  1108.  
  1109.  
  1110.        12.  Appendix A. Definition of Scheduling Operations
  1111.  
  1112.         Operation                             Description
  1113.        -----------------------------------------------------------------------
  1114.        add name            Add  a  new directory entry to the list.  Uses the
  1115.                            name attributes defined in Appendix  C.   Requires
  1116.                            administrator level permission.
  1117.  
  1118.        add                 Add  a new event or task entry to the current cal-
  1119.                            endar.   Uses  the  event  attributes  defined  in
  1120.                            Appendix C.
  1121.  
  1122.        bind                Bind  the  named  user into the session.  Requires
  1123.                            attributes "user", "password", "timezone".
  1124.  
  1125.        bindserver          Bind the named server into the session.   Requires
  1126.                            the attributes "name", "password", ...
  1127.  
  1128.        confirm             Confirm  attendance  at  an  event.   Requires the
  1129.                            attributes  "event_id",  "user",  "calendar",  and
  1130.                            "confirmcookie".
  1131.  
  1132.        delete name         Delete  a directory entry from the list.  Uses the
  1133.                            name attributes defined in Appendix  C.   Requires
  1134.                            administrator level permission.
  1135.  
  1136.        delete              Delete an event.  Requires the attribute event_id.
  1137.                            Requires full permission to current calendar.
  1138.  
  1139.        forward name        Enter a forwarding record  into the current calen-
  1140.                            dar's directory to indicate that this named direc-
  1141.                            tory entry has moved to a new location.   Requires
  1142.                            the  attributes "handle", of the new address.  The
  1143.                            new address must already exist.  No existing  cal-
  1144.                            endar  data  is  forwarded,  but the local data is
  1145.                            automatically deleted.  It  is  assumed  that  the
  1146.                            data  has already been forwarded using other means
  1147.                            within this protocol.  Requires full permission to
  1148.                            the current calendar, and to the forwarding calen-
  1149.                            dar.
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.        Spencer                                            [Page 20]
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1165.  
  1166.  
  1167.  
  1168.        freetime            Do a free time  search.   Uses  event  attributes,
  1169.                            "workhours", "workdays", "searchmax", and "search-
  1170.                            days".  Returns an array of  "date",   "time"  and
  1171.                            "projection", which match the required conditions.
  1172.                            No more than "searchmax" matches will be returned.
  1173.  
  1174.        list name           List users registered on the current server.  Uses
  1175.                            "listtype".
  1176.  
  1177.        list                List events on the current calendar or  calendars.
  1178.                            Uses "listtype".
  1179.  
  1180.        modify name         Modify  the attributes of a directory entry.  Uses
  1181.                            the  name  attributes.   Requires   administrative
  1182.                            level permission.
  1183.  
  1184.        modify              Modify the attributes of an event.  Uses the event
  1185.                            attributes.  The "event_id" must be specified.
  1186.  
  1187.        projection          Produce a projection of  available  time  for  the
  1188.                            current   calendar(s).    Requires   "searchdays",
  1189.                            "interval", "date".
  1190.  
  1191.        setcalendar         Set the current calendar to be one or more  calen-
  1192.                            dars.  Uses "calendar".
  1193.  
  1194.        unbind              Terminate a session.
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.        Spencer                                            [Page 21]
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1223.  
  1224.  
  1225.  
  1226.        13.  Appendix B. BNF Description of SWTP
  1227.  
  1228.        This  is  a  BNF-like description of the SWTP syntax, using the syntax
  1229.        conventions found in RFC1738.   Briefly,  "|"  is  used  to  designate
  1230.        alternatives,  and  brackets  []  are used around optional or repeated
  1231.        elements, literals are quoted with "", optional elements are  enclosed
  1232.        in  [brackets],  and elements may be preceded with <n>* to designate n
  1233.        or more repetitions of the following element; n defaults to 0.
  1234.  
  1235.  
  1236.        ; swtpsession - A generic view of the connection
  1237.        swtpsession:
  1238.             specialrequest |
  1239.             *[ swtprequest swtpresponse ]
  1240.  
  1241.        ; swtprequest - This is the formulation of the message to the server
  1242.        swtprequest:
  1243.             messageID newline
  1244.             "operation =" operationname newline ; ignore space around '='
  1245.             *[ attributename "=" attributevalue  newline ]
  1246.             newline
  1247.  
  1248.        messageID:
  1249.             1*[digits]
  1250.  
  1251.        ; swtpresponse - This is the response of the server.
  1252.        ; A "0" response indicates success
  1253.        ; A "1" response indicates error
  1254.        swtpresponse:
  1255.             messageID newline
  1256.             1*[ "0" newline |
  1257.             "0" data newline |
  1258.             "1" errormsg newline ]
  1259.             newline
  1260.  
  1261.        ; These are the operations which can be requested of the server
  1262.        operationname:
  1263.             "list"  |
  1264.             "setcalendar" |
  1265.             "add"  |
  1266.             "delete" |
  1267.             "modify" |
  1268.             "confirm" |
  1269.             "freetime" |
  1270.             "projection" |
  1271.             "accesspermission" |
  1272.  
  1273.  
  1274.        Spencer                                            [Page 22]
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1281.  
  1282.  
  1283.  
  1284.             "add name" |
  1285.             "delete name" |
  1286.             "list name" |
  1287.             "forward name" |
  1288.             "modify name" |
  1289.             "bind" |
  1290.             "bindserver" |
  1291.             "unbind"
  1292.  
  1293.        ; This describes the data returned by a server request.
  1294.        ; It is always in table format.
  1295.        data:
  1296.             headerrow
  1297.             *[datarows]
  1298.  
  1299.        headerrow:
  1300.             *[attributename fieldsep] attributename recordsep
  1301.        datarow:
  1302.             *[attributevalue fieldsep] attributevalue recordsep
  1303.  
  1304.        recordsep:
  1305.             "\r\n"
  1306.        fieldsep:
  1307.             "&"
  1308.  
  1309.        ; Although the cr-lf pair is the definition, servers should be able to accept
  1310.        ; a single '\n' or a single '\r' as a delimeter
  1311.        newline:
  1312.             "\r\n"
  1313.  
  1314.        ; This is a list of attributes recognized by the SWTP server.
  1315.        eventattributename:
  1316.             "date" |
  1317.             "due date" |
  1318.             "start date" |
  1319.             "repeat" |
  1320.             "duration" |
  1321.             "time" |
  1322.             "subject" |
  1323.             "task" |
  1324.             "type" |
  1325.             "users" |
  1326.             "attendees" |
  1327.             "delegate to" |
  1328.             "send to" |
  1329.             "resources" |
  1330.  
  1331.  
  1332.        Spencer                                            [Page 23]
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1339.  
  1340.  
  1341.  
  1342.             "location" |
  1343.             "who_did_it" |
  1344.             "scheduled by" |
  1345.             "sent by" |
  1346.             "delegated by" |
  1347.             "originator" |
  1348.             "event_id" |
  1349.             "priority" |
  1350.             "project" |
  1351.             "status" |
  1352.             "done_date" |
  1353.             "event_status" |
  1354.             "r_msg" |
  1355.             "r_cmd" |
  1356.             "old_who" |
  1357.             "last_modified" |
  1358.             "scheduler" |
  1359.             "task_duration" |
  1360.             "task_start_date" |
  1361.             "desc_fp" |
  1362.             "description" |
  1363.             "timezone" |
  1364.             "calendar"
  1365.  
  1366.        nameattributename:
  1367.             "pid" |
  1368.             "userId" |
  1369.             "name" |
  1370.             "handle" |
  1371.             "description" |
  1372.             "commonName" |
  1373.             "owner" |
  1374.             "administrator" |
  1375.             "mailaddress" |
  1376.             "rfc822mailbox" |
  1377.             "password" |
  1378.             "userPassword" |
  1379.             "server" |
  1380.             "fqdnServer" |
  1381.             "members" |
  1382.             "type" |
  1383.             "attr" |
  1384.             "where" |
  1385.             "perm" |
  1386.             "dbname"
  1387.  
  1388.  
  1389.  
  1390.        Spencer                                            [Page 24]
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1397.  
  1398.  
  1399.  
  1400.        otherattributename:
  1401.             "formatted" |
  1402.             "attributes" |
  1403.             "operation" |
  1404.             "sizeLimit" |
  1405.             "timeLimit" |
  1406.             "searchdays" |
  1407.             "searchmax" |
  1408.             "workdays" |
  1409.             "workhours" |
  1410.             "interval"
  1411.  
  1412.        attributename:
  1413.             eventattributename |
  1414.             nameattributename |
  1415.             otherattributename
  1416.  
  1417.        ; The repeat syntax is specified here, because it's too complicated to
  1418.        ; put into words.  It relys on the date having been specified.
  1419.        ; In the examples , the date is May 15, 1996
  1420.        repeat:
  1421.             "yearly" |     ; yearly on this May 15
  1422.             "yearly every" nth 1*weekday |     ; yearly every 3rd Sun in May
  1423.             "monthly" |    ; monthly on the 15th of the month
  1424.             "monthly every" nth 1*weekday |    ; monthly, every 3rd Sun
  1425.             "On the" nth "month," |  ; Every 3rd month, on the 15th
  1426.             "every" 1*weekday | ; weekly on  Sun, Mon
  1427.             "every" nth 1*weekday |  ; every 3rd Sun
  1428.  
  1429.        weekday:
  1430.             "Sun" | "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat"
  1431.  
  1432.        nth:
  1433.             "1st" | "2nd" | "3rd" | "4th" | "5th" | "6th"
  1434.  
  1435.  
  1436.        This completes the BNF definition of the protocol with  the  exception
  1437.        of  the  definition  of  attributevalue,  and a specification of which
  1438.        attributes are appropriate for a given operation.  These can be speci-
  1439.        fied  in a BNF format, however a more useful reference are the follow-
  1440.        ing tables, which allows a discussion of some of the attributes.  Some
  1441.        attributes are very complex in themselves, for example "repeat".
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.        Spencer                                            [Page 25]
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1455.  
  1456.  
  1457.  
  1458.        14.  Appendix C. Attribute Definitions
  1459.  
  1460.        This  defines  the  attributes understood by the SWTP server.  In some
  1461.        cases, the same attribute may go by multple names.  These  are  listed
  1462.        as  a  group  to the left of the description.  The attributevalues are
  1463.        always individually URI-encoded.
  1464.  
  1465.        14.1  Event Attributes
  1466.  
  1467.           Attribute                          Description
  1468.        -----------------------------------------------------------------------
  1469.        date             The date of the event, the due date of the  task,  or
  1470.        due date         the  starting  date  of  a  repeating  event or task.
  1471.        start date       Dates should be input in the form  day-month-year  as
  1472.                         in  13-Oct-1996,  or  13-10-1996.  The former is pre-
  1473.                         ferred as it leads to less confusion with some  other
  1474.                         styles  of  date  presentation.   The  year should be
  1475.                         specified with its full four  digits.   If  only  two
  1476.                         digits  are  present,  it  will automatically be con-
  1477.                         verted to a year less than 50  years  away  from  the
  1478.                         present  date,  either  in  the  future  or  the past
  1479.                         depending upon which is closer.  To specify a date in
  1480.                         the year 96 A.D., use 13-Oct-0096.
  1481.  
  1482.        repeat           See below for a BNF description of the repeat syntax.
  1483.        duration         Durations   are   normally   specified  in  the  form
  1484.                         hours:minutes, for example, 2:35 is 2 hours  35  min-
  1485.                         utes.   For  long  events, lasting days, use the form
  1486.                         days:hours:minutes.  For example 31:2:35 is 31  days,
  1487.                         2 hours, 35  minutes.
  1488.  
  1489.        time             Time  is  specified  on a 24 hour clock, as in 18:32,
  1490.                         which is 6:32PM.  An optional timezone may be  speci-
  1491.                         fied, as in 18:32 PDT, or 18:32 EST.  If the timezone
  1492.                         is not known, then an offset to UTC may be  specified
  1493.                         as  18:32  +0630  or 18:32 -0630.  This gives a 6 and
  1494.                         one half hour offset from UTC east or west of the UTC
  1495.                         zone  respectively.   Setting  the  timezone here, is
  1496.                         identical to setting the timezone field listed below.
  1497.  
  1498.        subject          A  short  description  of the event or task, suitable
  1499.        task             for identification. Maximum of 128 characters.
  1500.  
  1501.        type             This has allowed values "event", or "task", with  the
  1502.                         default being "event".
  1503.  
  1504.  
  1505.  
  1506.        Spencer                                            [Page 26]
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1513.  
  1514.  
  1515.  
  1516.        users            A  comma  separated  list  of  schedules, or users on
  1517.        attendees        whose calendars this task or event will appear.   The
  1518.        delegate to      format  for  specifying  a  name uses the RFC822 mail
  1519.        send to          address syntax.  Names local to  the  current  server
  1520.                         may  be specified without using the host server name.
  1521.                         Groups may be specified, but the group name  must  be
  1522.                         known  within  the context of the current server, and
  1523.                         will be resolved to an appropriate list of names.  In
  1524.                         a  later  specification, it is expected that a brack-
  1525.                         eted set of attributes [ ] will describe confirmation
  1526.                         status,  and  resource  pooling  by  appending to the
  1527.                         name.
  1528.  
  1529.        resources        For the purposes of  this  protocol,  a  resource  is
  1530.                         identical  to  an  attendee.  The distinction is made
  1531.                         because client software may wish to handle  conflicts
  1532.                         differently for resources, than for users.
  1533.  
  1534.        location         The  location  of the event.  This is often not used,
  1535.                         as the location is put in the description. Maximum of
  1536.                         128 characters.
  1537.  
  1538.        originator       The  name  of  the user, or calendar which originated
  1539.        who_did_it       this event.
  1540.        scheduled by
  1541.  
  1542.        event_id         The event_id must be unique across all  SWTP  systems
  1543.                         and  all  events. Although the actual format is arbi-
  1544.                         trary, the format used  on  the  first  SWTP  systems
  1545.                         embeds  a  product identifier, a serial number, and a
  1546.                         sequential number into a 32 character field.  Another
  1547.                         alternative  is  to embed the servers fully qualified
  1548.                         domain name with a sequential number.   The  event_id
  1549.                         is created and assigned by the server.
  1550.  
  1551.        priority         The priority has values of "hi", "med", and "lo", and
  1552.                         is primarily used for ranking tasks.
  1553.  
  1554.        project          A field used to categorize tasks or  events.  Maximum
  1555.        category         of 32 characters.
  1556.  
  1557.        status           The  status  of  a  task.   Has values of "done", and
  1558.                         "undone".  done_date T{ The date the  task  was  com-
  1559.                         pleted.  This is a date, and not a time.
  1560.  
  1561.  
  1562.  
  1563.  
  1564.        Spencer                                            [Page 27]
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1571.  
  1572.  
  1573.  
  1574.        event_status     A  flag  indicating  that this is a new event, or has
  1575.                         changed recently.  This is useful to client  software
  1576.                         in announcing changed events to users.  Has values of
  1577.                         "not read", or "attention", or "clear".
  1578.  
  1579.        r_msg            Reserved. Later this may be used as a  reminder  mes-
  1580.                         sage to be sent to the calendar owner.
  1581.  
  1582.        r_cmd            Reserved.   Later this may be used as a reminder com-
  1583.                         mand to be executed at the reminder offset.
  1584.  
  1585.        old_who          If  a  task  is  re-delegated,  this  points  to  the
  1586.                         assignee.
  1587.  
  1588.        r_offset         Reserved.   Later this may be used as an offset indi-
  1589.                         cating the amount  of  time  prior  to  the  event  a
  1590.                         reminder needs to be sent.  Measured in minutes.
  1591.  
  1592.        last_modified    The  date  and  time (UTC) of when the event was last
  1593.                         modified.  Read only.
  1594.  
  1595.        scheduler        Indicates whether the originator should  be  included
  1596.                         in   the  list  of  attendees  or  not.   Has  values
  1597.                         "include" or "exclude".
  1598.  
  1599.        task_duration    Reserved. Later this may be  used  to  represent  the
  1600.                         number of man-hours required for a given task.
  1601.  
  1602.        task_start_date  Reserved.   Later  this  may be used to represent the
  1603.                         actual starting date of a task.
  1604.  
  1605.        desc_fp          This is  an  identifier  which  is  assigned  by  the
  1606.                         server,  and is used as a pointer to the description.
  1607.                         In the case of the same description being assigned to
  1608.                         multiple  events,  storage  space  can  be  saved  by
  1609.                         retrieving this value, and using it  instead  of  the
  1610.                         description on subsequent events.
  1611.  
  1612.        description      This  field  is  of  arbitrary  length,  and  gives a
  1613.                         detailed description of the event.
  1614.  
  1615.        timezone         Specifies the timezone for which to  interpret  dates
  1616.                         for this event.
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.        Spencer                                            [Page 28]
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1629.  
  1630.  
  1631.  
  1632.        calendar         Specifies  the  calendar this event appears in.  This
  1633.                         is single valued.
  1634.  
  1635.        extensions       A free field, with a minimum of 256 characters  which
  1636.                         can be used to relate an event with some other exter-
  1637.                         nal application.  The proper form for information  in
  1638.                         this  field  is for example "APP_special_id=234xabc".
  1639.                         This indicates that application  APP  is  related  to
  1640.                         this  field with special_id "234xabc".  Multiple name
  1641.                         value pairs should be separated by "&".
  1642.  
  1643.        confirmcookie    This is a read-only field, and is a string of charac-
  1644.                         ters  which  uniquely identify this event, the calen-
  1645.                         dar, and the list of attendees.  This is used by  the
  1646.                         confirm  operation  to allow users who may not other-
  1647.                         wise have access to a calendar to perform  a  confirm
  1648.                         operation on the indicated event.
  1649.  
  1650.  
  1651.        14.2  Name Attributes
  1652.  
  1653.          Attribute                            Description
  1654.        -----------------------------------------------------------------------
  1655.        pid                 An  internal  id  maintained  by the local server.
  1656.        userId              This id should be used when modifying names on the
  1657.                            local server.
  1658.        name                The  name of the calendar resource, calendar user,
  1659.        handle              group, alias, or server.  For example, "bill".  If
  1660.                            this  is  a  remote user, or remote resource, this
  1661.                            should be qualified with  the  appropriate  domain
  1662.                            name.   If  this  is a server name, it should be a
  1663.                            fully qualified hostname.
  1664.  
  1665.        description         A  more  descriptive  name,   like   "William   P.
  1666.        commonName          Spencer".  Because this attribute name matches one
  1667.                            used in LDAP, users are encouraged to use the full
  1668.                            name  of  the  user.  For a resource, a commonName
  1669.                            like "Conference Room 316" is appropriate, with  a
  1670.                            handle of "conf316".
  1671.  
  1672.        owner               Resources  require administrators, as well as some
  1673.        administrator       user calendars, and servers.  This is  the  handle
  1674.                            of the user who administers this entity.  For most
  1675.                            users, this is identical to the users handle.
  1676.  
  1677.  
  1678.  
  1679.  
  1680.        Spencer                                            [Page 29]
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1687.  
  1688.  
  1689.  
  1690.        mailaddress         The electronic mail address of the user who should
  1691.        rfc822mailbox       receive  mail about this calendar.  Generally this
  1692.                            should be the owner's mail address.
  1693.  
  1694.        password            A password used to identify access to this  calen-
  1695.        userPassword        dar  through the "bind" operation.  In the initial
  1696.                            release of this specification, this provides  only
  1697.                            minimal  security  through the use of a clear text
  1698.                            passwarod.
  1699.  
  1700.        server              The server on which the calendar for this user  or
  1701.        fqdnServer          resource resides.  If the handle is a fully quali-
  1702.                            fied domain name, then this server should coincide
  1703.                            with  that  information.  A value of "LocalServer"
  1704.                            means that the information resides on  the  local-
  1705.                            host.
  1706.  
  1707.        members             A  comma  separated  list  of users, resources, or
  1708.                            other groups which make up this  group.   If  this
  1709.                            name is an alias, then only one name should appear
  1710.                            here.
  1711.  
  1712.        type                The type of entry.  Valid  values  are  "invalid",
  1713.                            "user",    "resource",   "group",   "alias",   and
  1714.                            "server".
  1715.  
  1716.        perm                This is a read-only value, and specifies the  type
  1717.                            of  permission  this user and calendar has to this
  1718.                            calendar  resource.   Valid  values  are   "None",
  1719.                            "Check",  "ViewOnly",  "ViewInvite", "InviteOnly",
  1720.                            and "Full" .
  1721.  
  1722.  
  1723.  
  1724.        14.3  Other Attributes
  1725.  
  1726.         Attribute                             Description
  1727.        -----------------------------------------------------------------------
  1728.        formatted           Reserved.  Later this  attribute  will  specify  a
  1729.                            format  for  presenting  a  event.   As  part of a
  1730.                            response from the server, this is will be the for-
  1731.                            matted event itself.
  1732.  
  1733.        attributes          This  specifies  the  list  of  attributes  to  be
  1734.                            returned as a response.
  1735.  
  1736.  
  1737.  
  1738.        Spencer                                            [Page 30]
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1745.  
  1746.  
  1747.  
  1748.        operation           This specifies the  operation  the  server  should
  1749.                            perform.
  1750.  
  1751.        sizeLimit           This specifies the maximum number of event records
  1752.                            to be returned by a "list"  operation.  "0"  indi-
  1753.                            cates no limit.
  1754.  
  1755.        timeLimit           This  specifies  the maximum number of seconds the
  1756.                            server should work on a response to a "list" oper-
  1757.                            ation. "0" indicates forever.
  1758.  
  1759.        currentdate         This  is  the  date  and  time as perceived by the
  1760.                            client during the bind process.   The  format  for
  1761.                            this  date is "weekday day-mon-year hh:mm:ss time-
  1762.                            zone", for example "Tuesday 13-OCT-1996 14:03:1996
  1763.                            EST"
  1764.  
  1765.        calendar            A  comma  separated list of calendars used as part
  1766.                            of the setcalendar operation.
  1767.  
  1768.        workdays            In a free time search use only these days as  part
  1769.                            of       the       search.       For      example,
  1770.                            "Mon,Tue,Wed,Thu,Fri".
  1771.  
  1772.        workhours           In a free time search use only these hours as part
  1773.                            to  the search.  The format is timestart-timestop,
  1774.                            for example, "8:00-18:30".  A timezone  specifica-
  1775.                            tion is not allowed here.
  1776.  
  1777.        interval            The  time  interval  granualarity in minutes for a
  1778.                            "projection".   The default is 15 minutes.
  1779.  
  1780.        projection          A projection is a string of characters, 1  charac-
  1781.                            ter per time "interval", which indicates free time
  1782.                            within a period defined  by  "workhours".   A  '0'
  1783.                            indicates  that  the  time  is  available, and any
  1784.                            other single digit indicates the  number  of  con-
  1785.                            flicts  at  that  particular time.  If that number
  1786.                            exceeds 9, then a
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.        Spencer                                            [Page 31]
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1803.  
  1804.  
  1805.  
  1806.        15.  Appendix D. Access to a Demonstration Server
  1807.  
  1808.        A   prototype   version   of   this   server    is    accessible    at
  1809.        www.p2software.com,  on  port  5551.   Both a perl-based API, and a C-
  1810.        based API, in source code format are available. Software for utilizing
  1811.        Netscape  or  other  browser  as  a client is also avaliable in source
  1812.        form.  Please send e-mail  to  bspencer@p2software.com,  and  we  will
  1813.        respond  with  the  requirements  for accessing it. Please include the
  1814.        keyword "SWTP" in the subject line of your e-mail.
  1815.  
  1816.        The ClockWise(R) scheduling data repository is used as the  basis  for
  1817.        this server.
  1818.  
  1819.  
  1820.  
  1821.        16.  Appendix E. Bibliography
  1822.  
  1823.        [1]       Yeong,  W.,  Howes, T., and S. Kille, "Lightweight Directory
  1824.                  Access Protocol," RFC  1777,  Performance  Systems  Interna-
  1825.                  tional,  University  of  Michigan,  ISODE  Consortium, March
  1826.                  1995.  <URL:ftp://ds.internic.net/rfc/rfc1777.txt>
  1827.  
  1828.        [2]       Berners-Lee, T., Masinter, L.,  and  M.  McCahill,  Editors,
  1829.                  "Uniform  Resource  Locators  (URL)",  RFC 1738, CERN, Xerox
  1830.                  Corporation,  University  of   Minnesota,   December   1994.
  1831.                  <URL:ftp://ds.internic.net/rfc/rfc1738.txt>
  1832.  
  1833.        [3]       Crocker,  D., "Standard for the Format of ARPA Internet Text
  1834.                  Messages",   STD   11,   RFC   822,   UDEL,   August   1982.
  1835.                  <URL:ftp://ds.internic.net/rfc/rfc1822.txt>
  1836.  
  1837.        [4]       Horton, M. and R. Adams, "Standard For Interchange of USENET
  1838.                  Messages", RFC 1036,  AT&T  Bell  Laboratories,  Center  for
  1839.                  Seismic           Studies,           December          1987.
  1840.                  <URL:ftp://ds.internic.net/rfc/rfc1036.txt>
  1841.  
  1842.  
  1843.  
  1844.        17.  Appendix F. Authors' Address
  1845.  
  1846.        Bill Spencer, Ph.D.
  1847.        Phase II Software Corporation
  1848.        910 Boston Post Road, #260
  1849.        Marlboro, MA  01752
  1850.        bspencer@p2software.com
  1851.  
  1852.  
  1853.  
  1854.        Spencer                                            [Page 32]
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.        Internet-Draft    SWTP Scheduling Protocol        June, 1996
  1861.  
  1862.  
  1863.  
  1864.        Mark M. Smith
  1865.        Phase II Software Corporation
  1866.        910 Boston Post Road, #260
  1867.        Marlboro, MA  01752
  1868.        msmith@p2software.com
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.        Spencer                                            [Page 33]
  1913.  
  1914.  
  1915.