API V2.0

Last modified by Treyfane Dingo on 2024/03/10 02:07

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
RequestCommandDescription
lostandfounddblostandfound(Default) Returns all active (not returned) lost & found items from the Lost & Found Database
lostReturns all active (not returned) lost items from the Lost & Found Database
foundReturns all active (not returned) found items from the Lost & Found Database
returnedReturns all inactive / returned items from the Lost & Found Database
briefings Returns all briefings (i.e. Security News) classified as PUBLIC
assetscheckoutChecks out an item described by data array
checkinChecks in an item described by data array
attendeelockerserviceReturns Attendee Information described by data for the LockerService
onflReturns 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
KeyFieldNULL
idNumeric value, PRIMARY KEY-
imageURLnull
thumbURLnull
titleTextempty string
descriptionTextempty string
statusL | F | R (Lost, Found or Returned)-
lost_timestampISO datenull
found_timestampISO datenull
return_timestampISO datenull

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 &amp; 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
KeyFieldNULL
idNumeric value, PRIMARY KEY-
classP (hopefully only P)-
topicTextempty string
contentHTMLempty string
ops_idNumeric value, the L.A.S.S.I.E. ID of the creator-
datetime_creationISO date-
datetime_lastchangeISO datenull
datetimeISO 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
KeyField Content
ops_idNumeric Value, Collar ID of the Operative
attendeeNumeric Value, Attendee Badge ID
typeNumeric Value, the id of the Personal Asset type
serialText, 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
KeyFieldNULL
commandText, the originally issued command-
idNumeric Value, PRIMARY KEY-
attendeeNumeric Value-
typeText-
serialText-
outDE date-
out_byNumeric Value-
inDE dateNULL
in_byNumeric ValueNULL

Attendee Database

When giving a command to the Personal Assets Database, a data payload has to be POSTed along with the request and command.

KeyField Content
dataNumeric Value, Attendee Badge ID

{
  "data": {
    "id": 1,
    "nick": "GLaDOS",
    "firstname": "Genetic Lifeform",
    "lastname": "and Disk Operating System",
    "checkletter": "A"
  }
}

Attendee fieldset
KeyFieldNULL
idNumeric Value, PRIMARY KEY-
firstnameText-
lastnameText-
checkletterTextNULL

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
CodeMessageDescription
401UnauthorizedAPI-Key is not correct or no API-Key provided.
422Unprocessable DataThe data payload can not be processed due to an error
500Internal server errorMost likely the mySQL-Connection failed. A certain Dingo might be rather busy at this time.
501Bad or no requestWhatever you send, it wasn't a valid request.
503Maintenance Mode enabled - please try again laterMight follow an error 500 and the Dingo is still busy ...