API V2.0
The L.A.S.S.I.E. API V 2.0 can be reached via
https://api.lassie.online/v2.0
Required POST Parameters
The parameters have to be send as URLencoded form data. The API needs at least two parameters to work:
- apikey
- request
- command (optional)
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.
Requests and Commands | ||
---|---|---|
Request | Command | Description |
lostandfounddb | lostandfound | (Default) Returns all active (not returned) lost & found items from the Lost & Found Database |
lost | Returns all active (not returned) lost items from the Lost & Found Database | |
found | Returns all active (not returned) found items from the Lost & Found Database | |
returned | Returns all inactive / returned items from the Lost & Found Database | |
briefings | Returns all briefings (i.e. Security News) classified as PUBLIC | |
assets | checkout | Checks out an item described by data array |
checkin | Checks in an item described by data array | |
attendee | lockerservice | Returns Attendee Information described by data for the LockerService |
onfl | Returns Attendee Information described by data for the OverNight Fursuit Locker |
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.
Example (CURL)
curl -X POST -d "apikey=ae629a834729fd3aac6d1f827b1793b0" -d "request=lostandfounddb" https://api.lassie.online/v2.0
This example will display the entire Lost & Found Database of FTC.
curl -X POST -d "apikey=ae629a834729fd3aac6d1f827b1793b0" -d "request=lostandfounddb" -d "command=lost" https://api.lassie.online/v2.0
This example will display only the lost items of the Lost & Found Database of FTC.
Test API Keys
The API Keys for FurtherTestCon (FTC) are:
ae629a834729fd3aac6d1f827b1793b2 Attendee Database ae629a834729fd3aac6d1f827b1793b1 Operatives Database ae629a834729fd3aac6d1f827b1793b0 Lost & Found Database ae629a834729fd3aac6d1f827b1793b3 Briefings Database ae629a834729fd3aac6d1f827b1793b4 Personal Assets Database
Output
The output of an valid request to the API will be a JSON-Object like the following examples:
Lost & Found Database
{
"data": [
{
"id": 1925,
"image": null,
"thumb": null,
"title": "Image",
"description": "invisible, watercolour, found in Schroedinger's box",
"status": "F",
"lost_timestamp": null,
"found_timestamp": "2023-11-24 00:27:24",
"return_timestamp": null
},
{
"id": 1921,
"image": "https://api.lassie.furcom.org/images/lostandfound_db/fe3c6670a33d8f4199ffa95a5c23b622.png",
"thumb": "https://api.lassie.furcom.org/images/lostandfound_db/thumbnail/fe3c6670a33d8f4199ffa95a5c23b622.png",
"title": "Sense of Taste",
"description": "lost in Hotel Restaurant",
"status": "L",
"lost_timestamp": "2023-11-01 16:13:02",
"found_timestamp": null,
"return_timestamp": null
},
{
"id": 1920,
"image": "https://api.lassie.furcom.org/images/lostandfound_db/bc7c343fb3807d4d41b7e04fa909aad5.png",
"thumb": "https://api.lassie.furcom.org/images/lostandfound_db/thumbnail/bc7c343fb3807d4d41b7e04fa909aad5.png",
"title": "Vape",
"description": "black / rainbow, \"GEEKVAPE\", found at Open Stage",
"status": "F",
"lost_timestamp": null,
"found_timestamp": "2023-09-30 23:52:38",
"return_timestamp": null
}
]
}
Lost & Found fieldset | ||
---|---|---|
Key | Field | NULL |
id | Numeric value, PRIMARY KEY | - |
image | URL | null |
thumb | URL | null |
title | Text | empty string |
description | Text | empty string |
status | L | F | R (Lost, Found or Returned) | - |
lost_timestamp | ISO date | null |
found_timestamp | ISO date | null |
return_timestamp | ISO date | null |
Briefings Database
{
"data": [
{
"id": "17",
"class": "P",
"topic": "UPDATE - Security News 21.12.2021",
"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>",
"ops_id": "112",
"datetime_creation": "2021-12-21 22:19:45",
"datetime_lastchange": "",
"datetime": "2021-12-21 22:19:45"
}
]
}
Briefings fieldset | ||
---|---|---|
Key | Field | NULL |
id | Numeric value, PRIMARY KEY | - |
class | P (hopefully only P) | - |
topic | Text | empty string |
content | HTML | empty string |
ops_id | Numeric value, the L.A.S.S.I.E. ID of the creator | - |
datetime_creation | ISO date | - |
datetime_lastchange | ISO date | null |
datetime | ISO date which should be displayed. Is creation or lastchange whatever is bigger. | - |
Personal Assets Database
When giving a command to the Personal Assets Database, a data array has to be POSTed along with the request and command.
Data Array | ||
Key | Field Content | |
ops_id | Numeric Value, Collar ID of the Operative | |
attendee | Numeric Value, Attendee Badge ID | |
type | Numeric Value, the id of the Personal Asset type | |
serial | Text, the Serial Number of the Personal Asset |
{
"data":{
"command":"checkin",
"id":1715,
"attendee":12,
"type":"Donation Bag",
"serial":"123456789",
"out":"10.03.2024 02:51",
"out_by":112,
"in":"10.03.2024 02:51",
"in_by":112
}
}
Personal Assets fieldset | ||
---|---|---|
Key | Field | NULL |
command | Text, the originally issued command | - |
id | Numeric Value, PRIMARY KEY | - |
attendee | Numeric Value | - |
type | Text | - |
serial | Text | - |
out | DE date | - |
out_by | Numeric Value | - |
in | DE date | NULL |
in_by | Numeric Value | NULL |
Attendee Database
When giving a command to the Personal Assets Database, a data payload has to be POSTed along with the request and command.
Key | Field Content | |
data | Numeric Value, Attendee Badge ID |
{
"data": {
"id": 1,
"nick": "GLaDOS",
"firstname": "Genetic Lifeform",
"lastname": "and Disk Operating System",
"checkletter": "A"
}
}
Attendee fieldset | ||
---|---|---|
Key | Field | NULL |
id | Numeric Value, PRIMARY KEY | - |
firstname | Text | - |
lastname | Text | - |
checkletter | Text | NULL |
Empty Object
{
"data": []
}
Error Codes
The API will send a JSON-Object upon errors
{
"error": {
"code": "503",
"message": "Maintenance Mode enabled - please try again later"
}
}
The following error codes are implemented:
Error Codes | ||
---|---|---|
Code | Message | Description |
401 | Unauthorized | API-Key is not correct or no API-Key provided. |
422 | Unprocessable Data | The data payload can not be processed due to an error |
500 | Internal server error | Most likely the mySQL-Connection failed. A certain Dingo might be rather busy at this time. |
501 | Bad or no request | Whatever you send, it wasn't a valid request. |
503 | Maintenance Mode enabled - please try again later | Might follow an error 500 and the Dingo is still busy ... |