source: trunk/phpgwapi/doc/xmlrpc/gw_interface.lyx @ 2

Revision 2, 8.5 KB checked in by niltonneto, 17 years ago (diff)

Removida todas as tags usadas pelo CVS ($Id, $Source).
Primeira versão no CVS externo.

  • Property svn:executable set to *
  • Property svn:mime-type set to application/octet-stream
Line 
1#LyX 1.1 created this file. For more info see http://www.lyx.org/
2\lyxformat 218
3\textclass docbook
4\language english
5\inputencoding auto
6\fontscheme default
7\graphics default
8\paperfontsize default
9\spacing single
10\papersize Default
11\paperpackage a4
12\use_geometry 0
13\use_amsmath 0
14\paperorientation portrait
15\secnumdepth 3
16\tocdepth 3
17\paragraph_separation indent
18\defskip medskip
19\quotes_language english
20\quotes_times 2
21\papercolumns 1
22\papersides 1
23\paperpagestyle default
24
25\layout Title
26
27Proposal for a Common Groupware Interface Standard
28\layout Author
29
30(C) 2001-2004 Miles Lott <milos@groupwhere.org>
31\layout Date
32
33September 13, 2001 and December 29, 2003
34\layout Standard
35
36
37\begin_inset LatexCommand \tableofcontents{}
38
39\end_inset
40
41
42\layout Section
43
44Scope
45\layout Standard
46
47As many different opensource and freesoftware groupware systems are being
48 developed, the full realization of the dream of a connected world should
49 be prefaced by an agreement to interoperate.
50 There are limited ways in which cooperation with these and commercial groupware
51 systems may be achecived, the majority if not all of which were derived
52 via the establishment of open standards.
53 These might include email (POP3/IMAP), contacts(LDAP,vcard), or scheduling(ical
54/vcal).
55 It is felt that while these have proven themselves to be very useful, they
56 are insufficient to satisfy the real needs of a typical business environment.
57\layout Standard
58
59This document hopes to provide a reasonable, if limited, recommendation
60 for a set of standardized methods to be used for groupware services interaction.
61 More specifically, it hopes to address the need for such a standard as
62 well as to spur discussion about the common service names and methods themselve
63s.
64\layout Standard
65
66Examples will be given for implementations in XML-RPC, since this standard
67 is relatively fixed and open.
68\layout Standard
69
70This document does not provide recommendations for the underlying access
71 control system which would allow or deny a particular action.
72\layout Standard
73
74Also not discussed here is login and authorization to be used for initial
75 access to a service provider.
76\layout Section
77
78The Services
79\layout Subsection
80
81Overview
82\layout Standard
83
84There are a few common services types that will be needed for minimum useability
85 of a groupware server or application.
86 They are:
87\layout Itemize
88
89Contacts
90\layout Itemize
91
92Schedule
93\layout Itemize
94
95Notes
96\layout Itemize
97
98Todo
99\layout Standard
100
101These services are represented already in places such as existing groupware
102 client-server applications and also in the PalmOS basic-4 buttons and applicati
103ons.
104 Different systems may have different names for these services internally,
105 e.g.
106 Contacts - addresses, addressbook, people, Schedule - calendar, agenda,
107 meetings.
108\layout Standard
109
110Within each of these services are some common methods that would be called
111 to store, retreive, or update data:
112\layout Itemize
113
114read_list
115\layout Itemize
116
117read
118\layout Itemize
119
120save
121\layout Itemize
122
123delete
124\layout Subsection
125
126Detail
127\layout Subsubsection
128
129Contacts
130\layout Standard
131
132The concept of contacts may encompass local addressbooks, LDAP, and lists
133 stored in other media.
134 The purpose of the contacts service is not to duplicate or attempt to replace
135 these.
136 In some respects, it might do just that.
137 But its goal is more so to provide a common and shareable way for the other
138 core services to create, edit, and read a common user and address list.
139 All of the other services may use the contact service to obtain record
140 owner information to be used in access control.
141 They would also use them when it is required to share this data, as with
142 a meeting where other local and non-local users will be invited to attend.
143\layout Standard
144
145Contacts may include the local installed user base, users on other cooperative
146 servers, or email addresses used for limited cooperation with other groupware
147 services that are not compliant with this service scheme or implementations
148 thereof.
149 It could also include individuals using web-based or local ISP email services.
150 The scope of this document, however, is to define the service with regard
151 to the common methods to be used for server-server and client-server communicat
152ions:
153\layout Itemize
154
155read_list
156\layout Standard
157
158This method is used to list contacts, with or without limits, filters, or
159 search criteria.
160 In this way it can be used for simple lists or to search for contact records
161 and their identifiers.
162 The optional search criteria includes:
163\layout Enumerate
164
165start - Start at this identifier (integer: default 0)
166\layout Enumerate
167
168limit - Limit to this number of records returned(integer: unlimited by default)
169\layout Enumerate
170
171fieldlist - limit to showing only these fields (array: default to identifier,
172 owner identifier, possibly firstname and lastname)
173\layout Enumerate
174
175filter - Show records that are public or private only, or other system-specific
176 filters, e.g group or company(string: default '')
177\layout Enumerate
178
179query - Search internal fieldlist for a value (string: default '')
180\layout Standard
181
182The return for this method includes:
183\layout Enumerate
184
185count of number of records returned(integer)
186\layout Enumerate
187
188array consisting of: array: identifier => (array: fieldlist key => value
189 pairs)
190\layout Itemize
191
192read
193\layout Standard
194
195Once the identifier for a single contact record is known, the contact may
196 be read for more detail using this method.
197 This takes two parameters:
198\layout Enumerate
199
200identifier - (integer: no default)
201\layout Enumerate
202
203fieldlist - limit to showing only these fields (array: default to identifier,
204 owner identifier, possibly firstname and lastname)
205\layout Standard
206
207And returns:
208\layout Enumerate
209
210array consisting of: array: identifier => (array: fieldlist key => value
211 pairs)
212\layout Itemize
213
214save
215\layout Standard
216
217This is a method used to save an existing record or create a new one.
218 If the identifier for an existing record is not passed, a new entry will
219 be created.
220\layout Itemize
221
222delete
223\layout Standard
224
225This will allow deletion of a record by passing its identifier.
226\layout Subsubsection
227
228Schedule
229\layout Subsubsection
230
231Notes
232\layout Subsubsection
233
234Todo
235\layout Subsection
236
237Examples in XML-RPC
238\layout Standard
239
240Query the contacts service for read_list, using only start and limit to
241 grab the first 5 records, starting with identifier 1.
242 Additionally, return only the firstname and lastname fields n_given and
243 n_family (firstname and lastname in pseudo vcard format):
244\layout Code
245
246<methodCall>
247\layout Code
248
249<methodName>service.contacts.read_list</methodName>
250\layout Code
251
252<params>
253\layout Code
254
255<param>
256\layout Code
257
258<value><struct>
259\layout Code
260
261<member><name>start</name>
262\layout Code
263
264<value><string>1</string></value>
265\layout Code
266
267</member>
268\layout Code
269
270<member><name>limit</name>
271\layout Code
272
273<value><string>5</string></value>
274\layout Code
275
276</member>
277\layout Code
278
279<member><name>fields</name>
280\layout Code
281
282<value><struct>
283\layout Code
284
285<member><name>n_given</name>
286\layout Code
287
288<value><string>n_given</string></value>
289\layout Code
290
291</member>
292\layout Code
293
294<member><name>n_family</name>
295\layout Code
296
297<value><string>n_family</string></value>
298\layout Code
299
300</member>
301\layout Code
302
303</struct></value>
304\layout Code
305
306</member>
307\layout Code
308
309<member><name>query</name>
310\layout Code
311
312<value><string></string></value>
313\layout Code
314
315</member>
316\layout Code
317
318<member><name>filter</name>
319\layout Code
320
321<value><string></string></value>
322\layout Code
323
324</member>
325\layout Code
326
327</struct></value>
328\layout Code
329
330</param>
331\layout Code
332
333</params>
334\layout Code
335
336</methodCall>
337\layout Section
338
339Conclusion
340\layout Standard
341
342This document outlined the following services and methods:
343\layout Subsection
344
345Contacts:
346\layout Itemize
347
348service.contacts.read_list([search criteria])
349\layout Itemize
350
351service.contacts.read(identifier,[fieldlist])
352\layout Itemize
353
354service.contacts.save(fields)
355\layout Itemize
356
357service.contacts.delete(identifier)
358\layout Subsection
359
360Schedule:
361\layout Itemize
362
363service.schedule.read_list([search criteria])
364\layout Itemize
365
366service.schedule.read(identifier,[fieldlist])
367\layout Itemize
368
369service.schedule.save(fields)
370\layout Itemize
371
372service.schedule.delete(identifier)
373\layout Subsection
374
375Notes:
376\layout Itemize
377
378service.notes.read_list([search criteria])
379\layout Itemize
380
381service.notes.read(identifier,[fieldlist])
382\layout Itemize
383
384service.notes.save(fields)
385\layout Itemize
386
387service.notes.delete(identifier)
388\layout Subsection
389
390Todo:
391\layout Itemize
392
393service.todo.read_list(search criteria)
394\layout Itemize
395
396service.todo.read(identifer,[fieldlist])
397\layout Itemize
398
399service.todo.save(fields)
400\layout Itemize
401
402service.todo.delete(identifier)
403\the_end
Note: See TracBrowser for help on using the repository browser.