CUM API
CUM API är alltså API:et till CUM. Och tro det eller ej så finns det någon form av version av detta tillgängligt, redan. Denna sida samlar dokumentation av API:et så att godtycklig hacker kan hacka fram ett klientbibliotek. Det här är inte så värst fin dokumentation, men vi får väl jobba på det.
Saker att komma ihåg
- UTF-8-kodning
- ...
Grundstruktur
Klient
Ett call till CUM's API ser ut såhär:
<cum> <apiKey>%apiKey%</apiKey> <command>%kommando%</command> <params> ... </params> </cum>
Om man t.ex. vill kontrollera en användares användarnamn och lösenord mot API:et kan ett riktigt call se ut:
<cum> <apiKey>a3b4b2F2C2hg3ifs7</apiKey> <command>auth</command> <params> <username>användarnamn</username> <password>md5-summa-av-lösenord</password> </params> </cum>
Server
Serversidans XML-svar är snarlikt, och är på formen:
<cum> <responseCode>%responseCode%</responseCode> [<result> ... </result>] </cum>
Som svar på ovanstående klientsnutt skulle man t.ex. kunna få som svar:
<cum> <responseCode>102</responseCode> </cum>
som talar om att lösenordet är felaktigt.
Returkoder
Globala returkoder
Serversidan svarar alltid med en returkod. Det finns några "globala" returkoder, som följer i listan nedan:
- INVALID_APIKEY - API-nyckeln är felaktig, d.v.s. värdet %apiKey% är felaktigt.
- INPUT_ERROR - Servern kunde inte tolka data du skickade, vilket förmodligen beror på felaktig XML-kod eller felstavade saker.
Vid dessa felmeddelanden medföljer inget <result>...</result>, utan endast vid returkoder markerade med grön färg.
Returkodsöversättningstabell
Här är en tabell som översätter siffror till namn och vice versa, om man så vill.
Returkodsöversättningstabell | |||
---|---|---|---|
Namn | Kod | ||
INVALID_APIKEY | 100 | ||
AUTH_SUCCESS | 101 | ||
AUTH_INVALID_PASSWORD | 102 | ||
AUTH_INVALID_USERNAME | 103 | ||
OK | 111 | ||
NO_DATA | 112 | ||
INPUT_ERROR | 200 |
Kommandon
%apiKey% är rakt igenom din API-nyckel.
auth
Skickar en begäran om autentisering av en användare.
Struktur
<cum> <apiKey>%apiKey%</apiKey> <command>auth</command> <params> <username>%username%</username> <password>%password</username> [<persistent>1</persistent>] </params> </cum>
Params
- %username% - Användarnamnet som skall kontrolleras.
- %password% - MD5-summa av lösenordet för användaren.
- persistent - Om given, talar om för API:et att skapa en persistant session.
Returvärden
- AUTH_SUCCESS - Både användarnamn och lösenord är korrekta, användare följer.
<cum> ... <result> <user> <id>%id%</id> <username>%username%</username> <email>%email</email> <displayname>%displayname</displayname> <lastlogin>%lastlogin%</lastlogin> </user> [<sessionid>%sessionid%</sessionid>] </result> </cum>
- AUTH_INVALID_PASSWORD - Användaren finns men lösenordet för denna användare är felaktigt.
- AUTH_INVALID_USERNAME - Användaren finns inte.
userlist
Skickar förfrågan om en lista på alla användare och returnerar (oftast) en sådan lista. Eh.
Struktur
<cum> <apiKey>%apiKey%</apiKey> <command>userlist</command> </cum>
Params
Uppenbarligen inga..
Returvärden
- OK - Användarlista följer.
<cum> ... <result> <user> <id>%id%</id> <username>%username%</username> <email>%email</email> <displayname>%displayname</displayname> <lastlogin>%lastlogin%</lastlogin> </user> ... <user> <id>%id%</id> <username>%username%</username> <email>%email</email> <displayname>%displayname</displayname> <lastlogin>%lastlogin%</lastlogin> </user> </result> </cum>
checksession
Kontrollerar ett sessionid mot databasen och returnerar, om det finns, en användare.
Struktur
<cum> <apiKey>%apiKey%</apiKey> <command>checksession</command> <params> <value>%sessionid</value> </params> </cum>
Params
- %sessionid% - Ett sessionid, förmodligen hämtat från en kaka i en klientwebbläsare.
Returvärden
- NO_DATA - Sessionid:t finns inte.
- OK - Sessionen finns, användare följer.
<cum> ... <result> <user> <id>%id%</id> <username>%username%</username> <email>%email</email> <displayname>%displayname</displayname> <lastlogin>%lastlogin%</lastlogin> </user> </result> </cum>
clearsession
Tar bort en session ur databasen.
Struktur
<cum> <apiKey>%apiKey%</apiKey> <command>clearsession</command> <params> <value>%sessionid</value> </params> </cum>
Params
- %sessionid% - Det ID som ska tas bort.
Returvärden
- OK - Sessionen borttagen.