1 <?xml version='1.0' encoding='UTF-8'?>
2 <system xmlns='com/interrupt/bookkeeping'
3 xmlns:users='com/interrupt/bookkeeping/users'
4 xmlns:bkell='com/interrupt/bookkeeping/cc/bkell'
5 xmlns:command='com/interrupt/bookkeeping/cc/bkell/command'
6 xmlns:interpret='com/interrupt/bookkeeping/interpret'
7 xmlns:aauth='com/interrupt/bookkeeping/cc/bkell/aauth'
10 <!-- Authentication & Authorization information will not be given at this time.
11 Should use an open, tested system for A & A. This is just an interface to that system.
13 <aauth:aauthentication id='main.authentication' sessiontimeout="6000" >
15 <users:groups id="aauth.groups" >
16 <users:group id="webkell" name="Webkell" owner="root" >
18 <!-- for now, the account levels will { FREE | PAID }
20 <users:user id="root" />
25 <!-- actions that a user is allowed to do -->
26 <users:users id="aauth.users" >
28 <!-- this user has a default 10 minute session timeout period (1000 * 60 * 10 = 600'000 milliseconds) -->
29 <users:user id="root" username="root" password="password" logintimeout="600000"
30 accountLevel="FREE" defaultGroup='webkell' authenticated="" >
32 <users:userSession id='' groupid='' userid='' >
33 <aauth:aauthentication />
35 <aauth:allowedActions id="root.allowedActions" >
36 <command:command name='create' />
37 <command:command name='add' />
38 <command:command name='remove' />
39 <command:command name='reverse' />
40 <command:command name='find' />
41 <command:command name='load' />
42 <command:command name='list' />
43 <command:command name='print' />
44 <command:command name='commit' />
45 <command:command name='login' />
46 <command:command name='logout' />
47 <command:command name='exit' />
48 </aauth:allowedActions>
50 <users:profileDetails id='user.details' >
51 <users:profileDetail name='first.name' value='' />
52 <users:profileDetail name='last.name' value='' />
53 <users:profileDetail name='email' value='' />
54 <users:profileDetail name='country' value='' />
55 </users:profileDetails>
60 </aauth:aauthentication>
63 <users:groups id="main.groups" >
64 <users:group id="webkell" name="Webkell" owner="root" >
66 <users:profileDetails id='group.details' >
67 <users:profileDetail name='defaultCurrency' value='' />
68 </users:profileDetails>
71 xmlns='com/interrupt/bookkeeping'
72 xmlns:account='com/interrupt/bookkeeping/account'
73 xmlns:journal='com/interrupt/bookkeeping/journal'
74 xmlns:currency='com/interrupt/bookkeeping/currency'
75 id='main.bookkeeping' >
79 1. no 2 currencies can have the same 'id'
80 2. An account MUST specify in which currency it is denominated
81 3. Entry(s) should balance in the default currency unless otherwise specified
82 4. DebitPointer(s) / Debit(s) must be put in Account(s) of the same currency
84 <currency:currencies id='main.currencies' default='CDN' >
85 <currency:currency id='CDN' name='Canadian Dollar' />
86 <currency:currency id='USD' name='US Dollar' />
87 <currency:currency id='BP' name='British Pound' />
88 <currency:currency id='EUR' name='Euoropean Euro' />
89 <currency:currency id='JPN' name='Japanese Yen' />
90 </currency:currencies>
93 <!-- 1. account types are: asset, liability, expense, revenue
94 2. each account has a given counter weight
96 <account:account type="asset" id="" name="" counterWeight="debit" />
97 <account:account type="expense" id="" name="" counterWeight="debit" />
98 <account:account type="liability" id="" name="" counterWeight="credit"/>
99 <account:account type="revenue" id="" name="" counterWeight="credit" />
101 <account:accounts id='main.accounts' >
102 <account:account type="asset" id="" name="" counterWeight="debit" />
105 <journal:journals id='main.journals' >
106 <journal:journal id='generalledger' name='generalledger' type='' balance=''>
107 <journal:entries id='main.entries' >
110 <journal:entry id='qwertySTUB' entrynum='' state='' journalid='generalledger' date='' currency='CDN' >
111 <account:debit id='dtS' amount='120.00' entryid='qwertySTUB' accountid='05' account='' currency='CDN' />
112 <account:credit id='crS' amount='120.00' entryid='qwertySTUB' accountid='06' account='' currency='CDN' />
124 <users:groups id="group.attic" >
128 <!-- The bkell(shell) sub-system
130 <bkell:bkell id='bkell.main' >
134 <!-- command results are put into a generic XML root -->
138 <!-- the memory sub-system, a list of user inputs -->
139 <command:memory id='main.memory' >
141 <command:variable name="" />
145 <!-- these are the commands and all the tokens that command can use -->
146 <command:commands id='commands.def' >
148 <command:command name='create' >
150 <command:tokens id='create.tokens' >
152 <command:token name='system' />
153 <command:token name='debit' />
154 <command:token name='credit' />
155 <command:token name='entry' />
156 <command:token name='entries' />
157 <command:token name='journal' />
158 <command:token name='journals' />
159 <command:token name='transaction' />
160 <command:token name='account' />
161 <command:token name='accounts' />
162 <command:token name='user' />
163 <command:token name='users' />
165 <command:token name='group' />
166 <command:token name='groups' />
167 <command:token name='allowedActions' />
168 <command:token name='command' />
169 <command:token name='profileDetails' />
170 <command:token name='profileDetail' />
171 <command:token name='userSession' />
174 <command:tokenLiterals id='input.tokens' />
178 <command:command name='add' />
179 <command:command name='remove' />
180 <command:command name='reverse' />
182 <command:command name='find' >
184 <command:tokens id='find.tokens' >
186 <command:token name='system' />
187 <command:token name='debit' />
188 <command:token name='credit' />
189 <command:token name='entry' />
190 <command:token name='entries' />
191 <command:token name='journal' />
192 <command:token name='journals' />
193 <command:token name='transaction' />
194 <command:token name='account' />
195 <command:token name='accounts' />
196 <command:token name='user' />
197 <command:token name='users' />
199 <command:token name='group' />
200 <command:token name='groups' />
201 <command:token name='allowedActions' />
202 <command:token name='command' />
203 <command:token name='profileDetails' />
204 <command:token name='profileDetail' />
205 <command:token name='userSession' />
209 <command:command name='load' >
211 <command:tokens id='load.tokens' >
213 <command:token name='system' />
214 <command:token name='debit' />
215 <command:token name='credit' />
216 <command:token name='entry' />
217 <command:token name='entries' />
218 <command:token name='journal' />
219 <command:token name='journals' />
220 <command:token name='transaction' />
221 <command:token name='account' />
222 <command:token name='accounts' />
223 <command:token name='user' />
224 <command:token name='users' />
226 <command:token name='group' />
227 <command:token name='groups' />
228 <command:token name='allowedActions' />
229 <command:token name='command' />
230 <command:token name='profileDetails' />
231 <command:token name='profileDetail' />
232 <command:token name='userSession' />
236 <command:command name='list' >
238 <command:tokens id='list.tokens' >
240 <command:token name='system' />
241 <command:token name='debit' />
242 <command:token name='credit' />
243 <command:token name='entry' />
244 <command:token name='entries' />
245 <command:token name='journal' />
246 <command:token name='journals' />
247 <command:token name='transaction' />
248 <command:token name='account' />
249 <command:token name='accounts' />
250 <command:token name='user' />
251 <command:token name='users' />
253 <command:token name='group' />
254 <command:token name='groups' />
255 <command:token name='allowedActions' />
256 <command:token name='command' />
257 <command:token name='profileDetails' />
258 <command:token name='profileDetail' />
259 <command:token name='userSession' />
263 <command:command name='commit' >
265 <command:tokens id='find.tokens' >
267 <command:token name='system' />
268 <command:token name='debit' />
269 <command:token name='credit' />
270 <command:token name='entry' />
271 <command:token name='entries' />
272 <command:token name='journal' />
273 <command:token name='journals' />
274 <command:token name='transaction' />
275 <command:token name='account' />
276 <command:token name='accounts' />
277 <command:token name='user' />
278 <command:token name='users' />
280 <command:token name='group' />
281 <command:token name='groups' />
282 <command:token name='allowedActions' />
283 <command:token name='command' />
284 <command:token name='profileDetails' />
285 <command:token name='profileDetail' />
286 <command:token name='userSession' />
290 <command:command name='login' >
291 <command:tokens id='list.tokens' >
293 <command:token name='user' />
298 <command:command name='logout' />
299 <command:command name='exit' />
308 <!-- The definitions of all the tokens and thier possible options
310 <command:tokens id='tokens.def' >
313 <command:token name='debit' optionRequired='false' >
315 <command:optionSet id='oset' >
317 <command:options id='entry.option' >
318 <command:option name='entryid' value='0876-42356523-2456' />
319 <command:option name='accountid' value='tims-34577143' />
320 <command:option name='amount' value='155000.00' />
322 <command:options id='entryid.single.option' >
323 <command:option name='entryid' value='' />
325 <command:options id='accountid.single.option' >
326 <command:option name='accountid' value='' />
328 <command:options id='amount.single.option' >
329 <command:option name='amount' value='' />
331 <command:options id='id.single.option' >
332 <command:option name='id' value='' />
339 <command:token name='credit' optionRequired='false' >
341 <command:optionSet id='oset' >
343 <command:options id='entry.option' >
344 <command:option name='entryid' value='' />
345 <command:option name='accountid' value='' />
346 <command:option name='amount' value='' />
348 <command:options id='entryid.single.option' >
349 <command:option name='entryid' value='' />
351 <command:options id='accountid.single.option' >
352 <command:option name='accountid' value='' />
354 <command:options id='amount.single.option' >
355 <command:option name='amount' value='' />
357 <command:options id='id.option' >
358 <command:option name='id' value='' />
365 <command:token name='entry' optionRequired='false' >
367 <command:optionSet id='oset' >
369 <command:options id='entrynum.option' >
370 <command:option name='entrynum' value='' />
371 <command:option name='journal' value='' />
372 <command:option name='date' value='' />
374 <command:options id='entrynum.single.option' >
375 <command:option name='entrynum' value='' />
377 <command:options id='journal.single.option' >
378 <command:option name='journal' value='' />
380 <command:options id='date.single.option' >
381 <command:option name='date' value='' />
383 <command:options id='id.single.option' >
384 <command:option name='id' value='' />
391 <command:token name='journal' optionRequired='false' >
393 <command:optionSet id='oset' >
395 <command:options id='name.option' >
396 <command:option name='name' value='' />
398 <command:options id='id.option' >
399 <command:option name='id' value='' />
407 <command:token name='transaction' optionRequired='false' >
409 <command:optionSet id='oset' >
411 <command:options id='name.option' >
412 <command:option name='name' value='' />
414 <command:options id='id.option' >
415 <command:option name='id' value='' />
423 <command:token name='account' optionRequired='false' >
425 <command:optionSet id='oset' >
427 <command:options id='cweight.option' >
428 <command:option name='name' value='' />
429 <command:option name='type' value='' />
430 <command:option name='counterWeight' value='' />
433 <command:options id='name.single.option' >
434 <command:option name='name' value='' />
436 <command:options id='id.single.option' >
437 <command:option name='id' value='' />