source: trunk/grails-app/views/api/index.gsp

Last change on this file was 2240, checked in by ferryjagers@…, 10 years ago

templateAdmin role, only users with this role are allowed to modify templates.

File size: 21.3 KB
Line 
1<html>
2<head>
3    <meta name="layout" content="main"/>
4    <style type="text/css">
5        .api {
6            margin-top: -40px;
7        }
8
9        .api .header {
10            color: #ffda27;
11            font-size: 24px;
12            height: 40px;
13        }
14
15        .api h1 {
16            background-color: #006DBA;
17            padding-left: 10px;
18            margin-top: 40px;
19            height: 30px;
20            padding-top: 10px;
21            color: #fff;
22            text-shadow: 0 1px 2px rgba(0, 0, 0, 0.68);
23        }
24
25        .api h2 {
26            font-size: 12px;
27            background-color: #d7e6f1;
28            padding-left: 10px;
29            margin-top: 10px;
30            height: 20px;
31            padding-top: 5px;
32            font-weight: bold;
33            color: #006DBA;
34            text-shadow: 0 1px 1px rgba(0, 0, 0, 0.28);
35        }
36
37        .api h3 {
38            font-size: 12px;
39            font-weight: bold;
40            color: #ee7624;
41            text-shadow: 0 1px 1px rgba(0, 0, 0, 0.28);
42        }
43       
44        .api li {
45            margin-left: 30px;
46        }
47    </style>
48</head>
49<body>
50<div class="api">
51<h1 class="header">API specification</h1>
52
53The API allows third party software to interface with GSCF and connected modules.
54
55<h2>prerequisites</h2>
56    <li>a valid username / password with role ROLE_CLIENT (see <a href="#authenticate">authenticate</a>)</li>
57    <li>an api key (used to calculate the validation md5 hash.
58        <sec:ifLoggedIn>
59            Get your api key <g:link controller="userRegistration" action="profile">here</g:link>
60        </sec:ifLoggedIn>
61        <sec:ifNotLoggedIn>
62            Login to get your api key
63        </sec:ifNotLoggedIn>
64    )</li>
65    <li>a deviceID / clientID (look <a href="https://github.com/4np/UIDevice-with-UniqueIdentifier-for-iOS-5" target="_new">here</a> for iOS)</li>
66
67<h2>available API calls</h2>
68    <li><a href="#authenticate">authenticate</a> - set up / synchronize client-server session</li>
69    <li><a href="#getStudies">getStudies</a> - fetch all (readable) studies</li>
70    <li><a href="#getSubjectsForStudy">getSubjectsForStudy</a> - fetch all subjects in a given study</li>
71    <li><a href="#getAssaysForStudy">getAssaysForStudy</a> - fetch all assays in a given study</li>
72    <li><a href="#getSamplesForAssay">getSamplesForAssay</a> - fetch all samples in a given assay</li>
73    <li><a href="#getMeasurementDataForAssay">getMeasurementDataForAssay</a> - fetch all measurement data for a given assay</li>
74
75<h2>SDK packages</h2>
76    <li><a href="https://github.com/4np/gscf4php" target="_new">PHP</a> - Object Oriented SDK for interacting with GSCF</li>
77    <li><a href="https://github.com/thomaskelder/R2GSCF" target="_new">R</a> - R Client to connect to GSCF</li>
78
79<a name="authenticate"></a>
80<h1>authenticate</h1>
81<h3>url: <g:createLink controller="api" action="authenticate" absolute="true" /></h3>
82<p>
83    Authenticate a client using <a href="http://en.wikipedia.org/wiki/Basic_access_authentication" target="_new">HTTP BASIC authentication</a>.
84    This API call is used to:
85    <li>initially set up a client/server session</li>
86    <li>re-synchronise client/server sessions that become out of sync (e.g. <i>sequence</i> differences)</li>
87<p>
88
89<p>
90    After successful authentication, a session token is returned which should the client should store locally. This session token
91    should be used in all subsequent calls to calculate the validation md5 hash.
92</p>
93<p>
94    This call should also be performed whenever a client/server sessions becomes out of sync (e.g. the client's sequence count
95    differs from the server's sequence count) as the server's sequence count will be returned after successfully authenticating.
96    For security reasons this api method is designed to be called only once (or when sessions are out of sync) as HTTP BASIC authentication
97    is not really secure (if someone is able to sniff your traffic, the authentication md5 hash is easily stolen). API calls are
98    validated using the calculated md5 hash.
99</p>
100<p>
101    Every subsequent request the client does, needs to contain the validation MD5 hash, which is a MD5 sum of the concatenation of the device token,
102    the request sequence and the api key (e.g. <i>md5sum( token + sequence + api key )</i> ).<br/>
103    <i>Note that in order to be able to successfully authenticate or use the API in general, the user should have the ROLE_CLIENT assigned!</i>
104
105    <h2>Request parameters</h2>
106    <table>
107        <thead>
108            <th>argument</th>
109            <th>type</th>
110            <th>length</th>
111            <th>description</th>
112            <th>example</th>
113            <th>required</th>
114        </thead>
115        <tr>
116            <td>deviceID</td>
117            <td>string</td>
118            <td>32</td>
119            <td>a unique ID of the client device / application performing the call (<a href="https://github.com/4np/UIDevice-with-UniqueIdentifier-for-iOS-5" target="_new">iOS example</a>)</td>
120            <td>9ae87836-d38d-4b86-be6a-eff93f2b049a</td>
121            <td>yes</td>
122        </tr>
123    </table>
124
125    <h2>Reply parameters</h2>
126    <table>
127        <thead>
128            <th>argument</th>
129            <th>type</th>
130            <th>length</th>
131            <th>description</th>
132            <th>example</th>
133        </thead>
134        <tr>
135            <td>token</td>
136            <td>string</td>
137            <td>36</td>
138            <td>a unique token for setting up a client session</td>
139            <td>9ae87836-d38d-4b86-be6a-eff93f2b049a</td>
140        </tr>
141        <tr>
142            <td>sequence</td>
143            <td>int</td>
144            <td>-</td>
145            <td>the api call count for this session</td>
146            <td>231</td>
147        </tr>
148    </table>
149
150    <h2>example reply</h2>
151    <blockquote>
152        {"token":"78b070a6-e68c-436e-a81b-2db08840e809","sequence":0}
153    </blockquote>
154</p>
155
156<a name="getStudies"></a>
157<h1>getStudies</h1>
158<h3>url: <g:createLink controller="api" action="getStudies" absolute="true" /></h3>
159<p>
160    Returns the studies which are <i>readable</i> and/or <i>writable</i> for the client. If the client should get access to a particular
161    study, the client's username (used to authenticate) should be added as a reader to the study.
162
163    <h2>Request parameters</h2>
164    <table>
165        <thead>
166            <th>argument</th>
167            <th>type</th>
168            <th>length</th>
169            <th>description</th>
170            <th>example</th>
171            <th>required</th>
172        </thead>
173        <tr>
174            <td>deviceID</td>
175            <td>string</td>
176            <td>36 (max)</td>
177            <td>a unique ID of the client device / application performing the call</td>
178            <td>9ae87836-d38d-4b86-be6a-eff93f2b049a</td>
179            <td>yes</td>
180        </tr>
181        <tr>
182            <td>validation</td>
183            <td>string</td>
184            <td>-</td>
185            <td><a href="http://www.miraclesalad.com/webtools/md5.php" target="_new">md5sum</a>( token + sequence + api key )</td>
186            <td>9ae87836d38d4b86be6aeff93f2b049a</td>
187            <td>yes</td>
188        </tr>
189    </table>
190
191    <h2>example reply</h2>
192    <blockquote>
193        {"count":2,"studies":[{"token":"f2e085fb-9138-4ebe-a59f-82f1bdc21d7e","title":"NuGO PPS human study","description":"Human study performed at RRI; centres involved: RRI, IFR, TUM, Maastricht U.","subjects":11,"species":["Homo sapiens"],"assays":["Mass Sequencing module","SAM module for clinical data","Metabolomics module"],"events":1,"uniqueEvents":["start: 3 days, 22 hours, duration: 8 hours"],"samplingEvents":2,"uniqueSamplingEvents":["start: 0 seconds","start: 4 days, 6 hours"],"eventGroups":1,"uniqueEventGroups":["Root group"],"samples":22},{"token":"6b7e85b3-b174-492c-ba27-fbfb71ab9b8b","title":"NuGO PPS3 mouse study leptin module","description":"C57Bl/6 mice were fed a high fat (45 en%) or low fat (10 en%) diet after a four week run-in on low fat diet.","subjects":80,"species":["Mus musculus"],"assays":["SAM module for clinical data","Metabolomics module"],"events":8,"uniqueEvents":["start: 1 hour, duration: 1 week","start: 1 hour, duration: 4 weeks"],"samplingEvents":2,"uniqueSamplingEvents":["start: 1 week, 1 hour"],"eventGroups":8,"uniqueEventGroups":["10% fat + vehicle for 1 week","10% fat + leptin for 1 week","45% fat + vehicle for 1 week","45% fat + leptin for 1 week","10% fat + vehicle for 4 weeks","10% fat + leptin for 4 weeks","45% fat + vehicle for 4 weeks","45% fat + leptin for 4 weeks"],"samples":80}]}
194    </blockquote>
195</p>
196
197<a name="getSubjectsForStudy"></a>
198<h1>getSubjectsForStudy</h1>
199<h3>url: <g:createLink controller="api" action="getSubjectsForStudy" absolute="true" /></h3>
200<p>
201    Returns the subjects for a particular study
202
203    <h2>Request parameters</h2>
204    <table>
205        <thead>
206            <th>argument</th>
207            <th>type</th>
208            <th>length</th>
209            <th>description</th>
210            <th>example</th>
211            <th>required</th>
212        </thead>
213        <tr>
214            <td>deviceID</td>
215            <td>string</td>
216            <td>36 (max)</td>
217            <td>a unique ID of the client device / application performing the call</td>
218            <td>9ae87836-d38d-4b86-be6a-eff93f2b049a</td>
219            <td>yes</td>
220        </tr>
221        <tr>
222            <td>validation</td>
223            <td>string</td>
224            <td>-</td>
225            <td><a href="http://www.miraclesalad.com/webtools/md5.php" target="_new">md5sum</a>( token + sequence + api key )</td>
226            <td>9ae87836d38d4b86be6aeff93f2b049a</td>
227            <td>yes</td>
228        </tr>
229        <tr>
230            <td>studyToken</td>
231            <td>string</td>
232            <td>255</td>
233            <td>study token (see getStudies)</td>
234            <td>b6e0c6f4-d8db-4a43-91fa-a157d2d492f0</td>
235            <td>yes</td>
236        </tr>
237    </table>
238
239    <h2>example reply</h2>
240    <blockquote>
241        {"count":11,"subjects":[{"id":81,"name":"1","species":"Homo sapiens","Gender":"Female","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null},{"id":82,"name":"2","species":"Homo sapiens","Gender":"Male","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null},{"id":83,"name":"3","species":"Homo sapiens","Gender":"Female","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null},{"id":84,"name":"4","species":"Homo sapiens","Gender":"Male","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null},{"id":85,"name":"5","species":"Homo sapiens","Gender":"Female","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null},{"id":86,"name":"6","species":"Homo sapiens","Gender":"Male","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null},{"id":87,"name":"7","species":"Homo sapiens","Gender":"Male","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null},{"id":88,"name":"8","species":"Homo sapiens","Gender":"Male","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null},{"id":89,"name":"9","species":"Homo sapiens","Gender":"Male","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null},{"id":90,"name":"10","species":"Homo sapiens","Gender":"Male","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null},{"id":91,"name":"11","species":"Homo sapiens","Gender":"Female","Age":null,"DOB":null,"Height":null,"Weight":null,"BMI":null,"Race":null,"Waist circumference":null,"Hip circumference":null,"Systolic blood pressure":null,"Diastolic blood pressure":null,"Heart rate":null,"Run-in-food":null}]}
242    </blockquote>
243</p>
244
245<a name="getAssaysForStudy"></a>
246<h1>getAssaysForStudy</h1>
247<h3>url: <g:createLink controller="api" action="getAssaysForStudy" absolute="true" /></h3>
248<p>
249    Returns the assays for a particular study
250
251    <h2>Request parameters</h2>
252    <table>
253        <thead>
254        <th>argument</th>
255        <th>type</th>
256        <th>length</th>
257        <th>description</th>
258        <th>example</th>
259        <th>required</th>
260        </thead>
261        <tr>
262            <td>deviceID</td>
263            <td>string</td>
264            <td>36 (max)</td>
265            <td>a unique ID of the client device / application performing the call</td>
266            <td>9ae87836-d38d-4b86-be6a-eff93f2b049a</td>
267            <td>yes</td>
268        </tr>
269        <tr>
270            <td>validation</td>
271            <td>string</td>
272            <td>-</td>
273            <td><a href="http://www.miraclesalad.com/webtools/md5.php" target="_new">md5sum</a>( token + sequence + api key )</td>
274            <td>9ae87836d38d4b86be6aeff93f2b049a</td>
275            <td>yes</td>
276        </tr>
277        <tr>
278            <td>studyToken</td>
279            <td>string</td>
280            <td>255</td>
281            <td>study token (see getStudies)</td>
282            <td>b6e0c6f4-d8db-4a43-91fa-a157d2d492f0</td>
283            <td>yes</td>
284        </tr>
285    </table>
286
287    <h2>example reply</h2>
288    <blockquote>
289        {"count":6,"assays":[{"token":"253ec24f-9bac-4f2b-b9cf-f84b86376a4e","name":"16S Sequencing assay","module":"Mass Sequencing module","Description":null},{"token":"4df2f49d-1d8c-48bd-8ebd-d267164948ec","name":"18S Sequencing assay","module":"Mass Sequencing module","Description":null},{"token":"828cf2d6-d797-484b-82f9-df9933d76d77","name":"Glucose assay after","module":"SAM module for clinical data","Description":null},{"token":"d68e8fed-41ca-4408-9d8e-f3598eca9183","name":"Glucose assay before","module":"SAM module for clinical data","Description":null},{"token":"32945764-6c5e-497c-8b1e-0d5e0dfa8221","name":"Lipidomics profile after","module":"Metabolomics module","Description":null,"Spectrometry technique":"GC/MS"},{"token":"92f42f77-1c13-4b25-aa57-b444e355fbf4","name":"Lipidomics profile before","module":"Metabolomics module","Description":null,"Spectrometry technique":"GC/MS"}]}
290    </blockquote>
291</p>
292
293<a name="getSamplesForAssay"></a>
294<h1>getSamplesForAssay</h1>
295<h3>url: <g:createLink controller="api" action="getSamplesForAssay" absolute="true" /></h3>
296<p>
297    Returns the samples data for a particular assay
298
299<h2>Request parameters</h2>
300<table>
301    <thead>
302    <th>argument</th>
303    <th>type</th>
304    <th>length</th>
305    <th>description</th>
306    <th>example</th>
307    <th>required</th>
308    </thead>
309    <tr>
310        <td>deviceID</td>
311        <td>string</td>
312        <td>36 (max)</td>
313        <td>a unique ID of the client device / application performing the call</td>
314        <td>9ae87836-d38d-4b86-be6a-eff93f2b049a</td>
315        <td>yes</td>
316    </tr>
317    <tr>
318        <td>validation</td>
319        <td>string</td>
320        <td>-</td>
321        <td><a href="http://www.miraclesalad.com/webtools/md5.php" target="_new">md5sum</a>( token + sequence + api key )</td>
322        <td>9ae87836d38d4b86be6aeff93f2b049a</td>
323        <td>yes</td>
324    </tr>
325    <tr>
326        <td>assayToken</td>
327        <td>string</td>
328        <td>255</td>
329        <td>assay token (see getAssays)</td>
330        <td>b6e0c6f4-d8db-4a43-91fa-a157d2d492f0</td>
331        <td>yes</td>
332    </tr>
333</table>
334
335<h2>example reply</h2>
336<blockquote>
337    {
338    "count":
339    11,
340    "samples":
341    [
342    {
343    "Remarks":
344    null,
345    "Sample measured volume":
346    null,
347    "Text on vial":
348    "T58.66620961739546",
349    "material":
350    "blood plasma",
351    "name":
352    "7_A",
353    "token":
354    "c705668a-81c4-4d80-83df-96bb477aeb0b"
355    },
356    {
357    "Remarks":
358    null,
359    "Sample measured volume":
360    null,
361    "Text on vial":
362    "T39.7483280873287",
363    "material":
364    "blood plasma",
365    "name":
366    "9_A",
367    "token":
368    "d81bdda8-4684-45b9-b254-1ec4756cfc71"
369    },
370    {
371    "Remarks":
372    null,
373    "Sample measured volume":
374    null,
375    "Text on vial":
376    "T43.20628871191769",
377    "material":
378    "blood plasma",
379    "name":
380    "2_A",
381    "token":
382    "2f501b55-ffdd-4bf2-a598-dcf24d3fac63"
383    },
384    {
385    "Remarks":
386    null,
387    "Sample measured volume":
388    null,
389    "Text on vial":
390    "T88.40760089710538",
391    "material":
392    "blood plasma",
393    "name":
394    "8_A",
395    "token":
396    "f908ae2a-3df7-4eb7-be2a-0b8859c20bfc"
397    },
398    {
399    "Remarks":
400    null,
401    "Sample measured volume":
402    null,
403    "Text on vial":
404    "T58.14619508995611",
405    "material":
406    "blood plasma",
407    "name":
408    "11_A",
409    "token":
410    "6763cff4-8113-4614-85b9-ef98fb34beba"
411    },
412    {
413    "Remarks":
414    null,
415    "Sample measured volume":
416    null,
417    "Text on vial":
418    "T71.86067212685215",
419    "material":
420    "blood plasma",
421    "name":
422    "6_A",
423    "token":
424    "5a339aaa-9bb6-4a0a-9ce7-4c42ceaf5771"
425    },
426    {
427    "Remarks":
428    null,
429    "Sample measured volume":
430    null,
431    "Text on vial":
432    "T2.395117860298579",
433    "material":
434    "blood plasma",
435    "name":
436    "3_A",
437    "token":
438    "a9e73abe-aed3-4c43-8fe7-a6b3dfe6e2ed"
439    },
440    {
441    "Remarks":
442    null,
443    "Sample measured volume":
444    null,
445    "Text on vial":
446    "T98.99437236833568",
447    "material":
448    "blood plasma",
449    "name":
450    "10_A",
451    "token":
452    "3e63a493-c69d-4cd4-ba23-eeafe962b17f"
453    },
454    {
455    "Remarks":
456    null,
457    "Sample measured volume":
458    null,
459    "Text on vial":
460    "T25.420102086098005",
461    "material":
462    "blood plasma",
463    "name":
464    "4_A",
465    "token":
466    "34d5611b-7407-489a-b25a-00ad2b0d8789"
467    },
468    {
469    "Remarks":
470    null,
471    "Sample measured volume":
472    null,
473    "Text on vial":
474    "T69.55369597806298",
475    "material":
476    "blood plasma",
477    "name":
478    "1_A",
479    "token":
480    "5c9dce07-ca4d-4bcb-8ac3-c8488bd7247a"
481    },
482    {
483    "Remarks":
484    null,
485    "Sample measured volume":
486    null,
487    "Text on vial":
488    "T50.41146383561054",
489    "material":
490    "blood plasma",
491    "name":
492    "5_A",
493    "token":
494    "21a07d33-6d95-46f9-a80d-cd58d7e140d0"
495    }
496    ]
497    }
498</blockquote>
499</p>
500
501<a name="getMeasurementDataForAssay"></a>
502<h1>getMeasurementDataForAssay</h1>
503<h3>url: <g:createLink controller="api" action="getMeasurementDataForAssay" absolute="true" /></h3>
504<p>
505    Returns the measurement data for a particular assay
506
507<h2>Request parameters</h2>
508<table>
509    <thead>
510    <th>argument</th>
511    <th>type</th>
512    <th>length</th>
513    <th>description</th>
514    <th>example</th>
515    <th>required</th>
516    </thead>
517    <tr>
518        <td>deviceID</td>
519        <td>string</td>
520        <td>36 (max)</td>
521        <td>a unique ID of the client device / application performing the call</td>
522        <td>9ae87836-d38d-4b86-be6a-eff93f2b049a</td>
523        <td>yes</td>
524    </tr>
525    <tr>
526        <td>validation</td>
527        <td>string</td>
528        <td>-</td>
529        <td><a href="http://www.miraclesalad.com/webtools/md5.php" target="_new">md5sum</a>( token + sequence + api key )</td>
530        <td>9ae87836d38d4b86be6aeff93f2b049a</td>
531        <td>yes</td>
532    </tr>
533    <tr>
534        <td>assayToken</td>
535        <td>string</td>
536        <td>255</td>
537        <td>assay token (see getAssays)</td>
538        <td>b6e0c6f4-d8db-4a43-91fa-a157d2d492f0</td>
539        <td>yes</td>
540    </tr>
541</table>
542
543<h2>example reply</h2>
544<blockquote>
545    {
546    "measurements":
547    {
548    "07378e29-3233-4e3f-b4ea-007f9f9b1317":
549    {
550    "Fat Depot":
551    310
552    },
553    "198183b1-d402-4f24-9c5a-396f79bb6a55":
554    {
555    "Fat Depot":
556    1918
557    },
558    "2c719340-eb7f-4a70-8527-c64cc74dc542":
559    {
560    "Fat Depot":
561    1039
562    },
563    "4861fc77-1320-4401-b18a-66b1cd67d2c8":
564    {
565    "Fat Depot":
566    411
567    },
568    "4edff5ad-c3af-41da-8efe-87f5a018912a":
569    {
570    "Fat Depot":
571    368
572    },
573    "6bfe2a0d-3af0-4ed8-8144-56840e934f6e":
574    {
575    "Fat Depot":
576    456
577    },
578    "775666dd-05b1-4f35-ac9c-d36f8257eb1a":
579    {
580    "Fat Depot":
581    2075
582    },
583    "7e9930bc-ec8c-4e74-bd2b-49d6c852eeda":
584    {
585    "Fat Depot":
586    945
587    },
588    "a4d16db8-49f2-4dc2-81bb-910e574c804a":
589    {
590    "Fat Depot":
591    311
592    },
593    "a556b145-dd37-4568-92f1-e3a251653276":
594    {
595    "Fat Depot":
596    1150
597    },
598    "c180d727-8d6c-4673-a5fd-1c28f04b8aaa":
599    {
600    "Fat Depot":
601    347
602    },
603    "e888b1b1-1dc8-45ed-8196-00338fa3b36f":
604    {
605    "Fat Depot":
606    1387
607    },
608    "f7392df1-a754-4957-a1d0-c98bbb91080d":
609    {
610    "Fat Depot":
611    318
612    },
613    "fc755220-b2b4-43ed-adf8-e4323fc62b55":
614    {
615    "Fat Depot":
616    1308
617    }
618    }
619    }
620</blockquote>
621</p>
622
623</div>
624</body>
625</html>
Note: See TracBrowser for help on using the repository browser.