Wiki source code of API V2.0
Last modified by Treyfane Dingo on 2024/03/10 02:07
Hide last authors
author | version | line-number | content |
---|---|---|---|
![]() |
3.1 | 1 | The L.A.S.S.I.E. API V 2.0 can be reached via |
![]() |
1.1 | 2 | |
![]() |
8.1 | 3 | {{{https://api.lassie.online/v2.0}}} |
![]() |
1.1 | 4 | |
5 | === Required POST Parameters === | ||
6 | |||
7 | The parameters have to be send as **URLencoded form data**. The API needs at least two parameters to work: | ||
8 | |||
9 | * apikey | ||
10 | * request | ||
11 | * command (optional) | ||
12 | |||
![]() |
7.1 | 13 | The API-Key has to be set in "System Settings" → "API Keys". Preferrably a longer and unique key (like a MD5SUM). An specific API key can only be used for a corresponding request type. |
![]() |
1.1 | 14 | |
![]() |
1.2 | 15 | (% style="width:50%" %) |
16 | |=(% colspan="3" %)Requests and Commands | ||
17 | |=(% scope="col" %)Request|=Command|=Description | ||
![]() |
1.1 | 18 | |(% rowspan="4" %)lostandfounddb|lostandfound|(Default) Returns all active (not returned) lost & found items from the Lost & Found Database |
19 | |lost|Returns all active (not returned) lost items from the Lost & Found Database | ||
20 | |found|Returns all active (not returned) found items from the Lost & Found Database | ||
21 | |returned|Returns all inactive / returned items from the Lost & Found Database | ||
22 | |briefings| |Returns all briefings (i.e. Security News) classified as PUBLIC | ||
![]() |
11.1 | 23 | |(% colspan="1" rowspan="2" %)assets|checkout|Checks out an item described by data array |
24 | |checkin|Checks in an item described by data array | ||
25 | |(% colspan="1" rowspan="2" %)attendee|lockerservice|Returns Attendee Information described by data for the LockerService | ||
26 | |onfl|Returns Attendee Information described by data for the OverNight Fursuit Locker | ||
![]() |
1.1 | 27 | |
28 | The request "lostandfounddb" without a command will return the active Lost & Found Database entries for the respective Convention as a JSON. This includes Links to the uploaded images. Thus, the information can be processed on an external Website, e.g. the convention's homepage. | ||
29 | |||
30 | === Example (CURL) === | ||
31 | |||
![]() |
8.1 | 32 | {{{curl -X POST -d "apikey=ae629a834729fd3aac6d1f827b1793b0" -d "request=lostandfounddb" https://api.lassie.online/v2.0}}} |
![]() |
1.1 | 33 | |
34 | This example will display the entire Lost & Found Database of FTC. | ||
35 | |||
![]() |
8.1 | 36 | {{{curl -X POST -d "apikey=ae629a834729fd3aac6d1f827b1793b0" -d "request=lostandfounddb" -d "command=lost" https://api.lassie.online/v2.0}}} |
![]() |
1.1 | 37 | |
38 | This example will display only the lost items of the Lost & Found Database of FTC. | ||
39 | |||
![]() |
6.1 | 40 | === Test API Keys === |
41 | |||
42 | The API Keys for FurtherTestCon (FTC) are: | ||
43 | |||
44 | {{{ae629a834729fd3aac6d1f827b1793b2 Attendee Database | ||
45 | ae629a834729fd3aac6d1f827b1793b1 Operatives Database | ||
46 | ae629a834729fd3aac6d1f827b1793b0 Lost & Found Database | ||
![]() |
11.1 | 47 | ae629a834729fd3aac6d1f827b1793b3 Briefings Database |
48 | ae629a834729fd3aac6d1f827b1793b4 Personal Assets Database}}} | ||
![]() |
6.1 | 49 | |
![]() |
1.1 | 50 | === Output === |
51 | |||
52 | The output of an valid request to the API will be a JSON-Object like the following examples: | ||
53 | |||
54 | ==== Lost & Found Database ==== | ||
55 | |||
![]() |
1.3 | 56 | {{box}} |
![]() |
10.1 | 57 | { |
58 | "data": [ | ||
59 | { | ||
60 | "id": 1925, | ||
61 | "image": null, | ||
62 | "thumb": null, | ||
63 | "title": "Image", | ||
64 | "description": "invisible, watercolour, found in Schroedinger's box", | ||
65 | "status": "F", | ||
66 | "lost_timestamp": null, | ||
67 | "found_timestamp": "2023-11-24 00:27:24", | ||
68 | "return_timestamp": null | ||
69 | }, | ||
70 | { | ||
71 | "id": 1921, | ||
72 | "image": "https:~/~/api.lassie.furcom.org/images/lostandfound_db/fe3c6670a33d8f4199ffa95a5c23b622.png", | ||
73 | "thumb": "https:~/~/api.lassie.furcom.org/images/lostandfound_db/thumbnail/fe3c6670a33d8f4199ffa95a5c23b622.png", | ||
74 | "title": "Sense of Taste", | ||
75 | "description": "lost in Hotel Restaurant", | ||
76 | "status": "L", | ||
77 | "lost_timestamp": "2023-11-01 16:13:02", | ||
78 | "found_timestamp": null, | ||
79 | "return_timestamp": null | ||
80 | }, | ||
81 | { | ||
82 | "id": 1920, | ||
83 | "image": "https:~/~/api.lassie.furcom.org/images/lostandfound_db/bc7c343fb3807d4d41b7e04fa909aad5.png", | ||
84 | "thumb": "https:~/~/api.lassie.furcom.org/images/lostandfound_db/thumbnail/bc7c343fb3807d4d41b7e04fa909aad5.png", | ||
85 | "title": "Vape", | ||
86 | "description": "black / rainbow, \"GEEKVAPE\", found at Open Stage", | ||
87 | "status": "F", | ||
88 | "lost_timestamp": null, | ||
89 | "found_timestamp": "2023-09-30 23:52:38", | ||
90 | "return_timestamp": null | ||
91 | } | ||
92 | ] | ||
93 | } | ||
![]() |
1.3 | 94 | {{/box}} |
![]() |
1.1 | 95 | |
![]() |
1.2 | 96 | (% style="width:50%" %) |
97 | |=(% colspan="3" %)Lost & Found fieldset | ||
98 | |=(% scope="col" %)Key|=Field|=NULL | ||
![]() |
1.1 | 99 | |id|Numeric value, PRIMARY KEY|- |
100 | |image|URL|null | ||
![]() |
4.3 | 101 | |thumb|URL|null |
![]() |
1.1 | 102 | |title|Text|empty string |
103 | |description|Text|empty string | ||
104 | |status|L ~| F ~| R (Lost, Found or Returned)|- | ||
105 | |lost_timestamp|ISO date|null | ||
106 | |found_timestamp|ISO date|null | ||
107 | |return_timestamp|ISO date|null | ||
108 | |||
109 | ==== Briefings Database ==== | ||
110 | |||
![]() |
1.3 | 111 | {{box}} |
![]() |
10.1 | 112 | { |
113 | "data": [ | ||
114 | { | ||
115 | "id": "17", | ||
116 | "class": "P", | ||
117 | "topic": "UPDATE - Security News 21.12.2021", | ||
118 | "content": "<div id=\"briefing_content_content\"><div><b>Germany cancelled New Years Eve</b></div><div>Although it might calendar wise be unwise, Germany just cancelled New Years Eve. Further information can be obtained elsewhere.</div><div><br></div><div><b>Some things found</b></div><div>Security\r\n wants to remind all attendees that information about lost or found \r\nitems can be obtained via the APP or the Website of the convention. Lost\r\n & Found is maintained by security and located in the security \r\noffice.</div><div><br></div><div><b>Quote of the day</b></div><div>\"Where is your neighbour?\"</div><div>\"He's in the garden ...\"</div><div>\"I can't see him ...\"</div><div>\"Oh, you'd have to dig quite a bit ...\"<br></div><div><br></div></div>", | ||
119 | "ops_id": "112", | ||
120 | "datetime_creation": "2021-12-21 22:19:45", | ||
121 | "datetime_lastchange": "", | ||
122 | "datetime": "2021-12-21 22:19:45" | ||
123 | } | ||
124 | ] | ||
125 | } | ||
![]() |
1.3 | 126 | {{/box}} |
![]() |
1.1 | 127 | |
![]() |
1.2 | 128 | (% style="width:50%" %) |
129 | |=(% colspan="3" %)Briefings fieldset | ||
130 | |=(% scope="col" %)Key|=Field|=NULL | ||
![]() |
1.1 | 131 | |id|Numeric value, PRIMARY KEY|- |
132 | |class|P (hopefully only P)|- | ||
133 | |topic|Text|empty string | ||
134 | |content|HTML|empty string | ||
135 | |ops_id|Numeric value, the L.A.S.S.I.E. ID of the creator|- | ||
136 | |datetime_creation|ISO date|- | ||
137 | |datetime_lastchange|ISO date|null | ||
138 | |datetime|ISO date which should be displayed. Is creation or lastchange whatever is bigger.|- | ||
139 | |||
![]() |
11.1 | 140 | ==== (% id="cke_bm_27662S" style="display:none" %) (%%)Personal Assets Database ==== |
141 | |||
142 | When giving a command to the Personal Assets Database, a data array has to be POSTed along with the request and command. | ||
143 | |||
144 | (% style="width:955px" %) | ||
145 | |(% colspan="3" style="width:182px" %)**Data Array** | ||
146 | |(% style="width:182px" %)**Key**|(% colspan="2" rowspan="1" style="width:652px" %)**Field Content** | ||
147 | |(% style="width:182px" %)ops_id|(% colspan="2" rowspan="1" style="width:652px" %)Numeric Value, Collar ID of the Operative | ||
148 | |(% style="width:182px" %)attendee|(% colspan="2" rowspan="1" style="width:652px" %)Numeric Value, Attendee Badge ID | ||
149 | |(% style="width:182px" %)type|(% colspan="2" rowspan="1" style="width:652px" %)Numeric Value, the id of the Personal Asset type | ||
150 | |(% style="width:182px" %)serial|(% colspan="2" rowspan="1" style="width:652px" %)Text, the Serial Number of the Personal Asset | ||
151 | |||
152 | {{box}} | ||
153 | { | ||
154 | "data":{ | ||
155 | "command":"checkin", | ||
156 | "id":1715, | ||
157 | "attendee":12, | ||
158 | "type":"Donation Bag", | ||
159 | "serial":"123456789", | ||
160 | "out":"10.03.2024 02:51", | ||
161 | "out_by":112, | ||
162 | "in":"10.03.2024 02:51", | ||
163 | "in_by":112 | ||
164 | } | ||
165 | } | ||
166 | {{/box}} | ||
167 | |||
168 | (% style="width:50%" %) | ||
169 | |=(% colspan="3" %)Personal Assets fieldset | ||
170 | |=(% scope="col" %)Key|=Field|=NULL | ||
171 | |command|Text, the originally issued command|- | ||
172 | |id|Numeric Value, PRIMARY KEY|- | ||
173 | |attendee|Numeric Value|- | ||
174 | |type|Text|- | ||
175 | |serial|Text|- | ||
176 | |out|DE date|- | ||
177 | |out_by|Numeric Value|- | ||
178 | |in|DE date|NULL | ||
179 | |in_by|Numeric Value|NULL | ||
180 | |||
181 | ==== (% id="cke_bm_301917S" style="display:none" %) (%%)Attendee Database ==== | ||
182 | |||
183 | When giving a command to the Personal Assets Database, a data payload has to be POSTed along with the request and command. | ||
184 | |||
185 | (% style="width:955px" %) | ||
186 | |(% style="width:182px" %)**Key**|(% colspan="2" rowspan="1" style="width:652px" %)**Field Content** | ||
187 | |(% style="width:182px" %)data|(% colspan="2" rowspan="1" style="width:652px" %)Numeric Value, Attendee Badge ID | ||
188 | |||
189 | {{box}} | ||
190 | { | ||
191 | "data": { | ||
192 | "id": 1, | ||
193 | "nick": "GLaDOS", | ||
194 | "firstname": "Genetic Lifeform", | ||
195 | "lastname": "and Disk Operating System", | ||
196 | "checkletter": "A" | ||
197 | } | ||
198 | } | ||
199 | {{/box}} | ||
200 | |||
201 | (% style="width:50%" %) | ||
202 | |=(% colspan="3" %)Attendee fieldset | ||
203 | |=(% scope="col" %)Key|=Field|=NULL | ||
204 | |id|Numeric Value, PRIMARY KEY|- | ||
205 | |firstname|Text|- | ||
206 | |lastname|Text|- | ||
207 | |checkletter|Text|NULL | ||
208 | |||
![]() |
1.1 | 209 | ==== Empty Object ==== |
210 | |||
![]() |
1.3 | 211 | {{box}} |
![]() |
10.1 | 212 | { |
213 | "data": [] | ||
214 | } | ||
![]() |
1.3 | 215 | {{/box}} |
![]() |
1.1 | 216 | |
217 | === Error Codes === | ||
218 | |||
219 | The API will send a JSON-Object upon errors | ||
220 | |||
![]() |
1.3 | 221 | {{box}} |
![]() |
10.1 | 222 | { |
223 | "error": { | ||
224 | "code": "503", | ||
225 | "message": "Maintenance Mode enabled - please try again later" | ||
226 | } | ||
227 | } | ||
![]() |
1.3 | 228 | {{/box}} |
![]() |
1.1 | 229 | |
230 | The following error codes are implemented: | ||
231 | |||
![]() |
1.2 | 232 | (% style="width:50%" %) |
233 | |=(% colspan="3" %)Error Codes | ||
234 | |=(% scope="col" %)Code|=Message|=Description | ||
![]() |
1.1 | 235 | |401|Unauthorized|API-Key is not correct or no API-Key provided. |
![]() |
11.1 | 236 | |422|Unprocessable Data|The data payload can not be processed due to an error |
![]() |
1.1 | 237 | |500|Internal server error|Most likely the mySQL-Connection failed. A certain Dingo might be rather busy at this time. |
238 | |501|Bad or no request|Whatever you send, it wasn't a valid request. | ||
239 | |503|Maintenance Mode enabled - please try again later|Might follow an error 500 and the Dingo is still busy ... |