","cmd":"getVersion"}' '
/?p=api' Methods without key: -------------------- getVersion Description: Returns API version. Parameters: nothing Return Example: {"status":"success","version": "1"} getApiKey Description: Returns API Key version. Parameters: user (string) pw (string) Return Example: {"status":"success","Key":"1234567890123456789012"} Methods with Key: ----------------- getRoom Description: Returns a list of all Rooms (no id set) or details of a single Room (requested id) Parameters: id (integer) - Room ID Return Example: [{"RID":"1"},{"RID":"2"},{"RID":"3"},{"RID":"4"}] {"RID":"1","Name":"Room Name","Man":null,"FromPentabarf":"","show":"Y","Number":"0"} getAngelType Description: Returns a list of all Angel Types (no id set) or details of a single Angel Type (requested id) Parameters: id (integer) - Type ID Return Example: [{"id":"8"},{"id":"9"}] {"id":"9","name":"Angeltypes 2","restricted":"0"} getUser Description: Returns a list of all Users (no id set) or details of a single User (requested id) Parameters: id (integer) - User ID Return Example: [{"UID":"1"},{"UID":"23"},{"UID":"42"}] {"UID":"1","Nick":"admin","Name":"Gates","Vorname":"Bill","Telefon":"","DECT":"","Handy":"","email":"","ICQ":"","jabber":"","Avatar":"115"} getShift Description: Returns a list of all Shifte (no id set, filter is optional) or details of a single Shift (requested id) Parameters: id (integer) - Shift ID filterRoom (Array of integer) - Array of Room IDs (optional, for list request) filterTask (Array of integer) - Array if Task (optional, for list request) filterOccupancy (integer) - Occupancy state: (optional, for list request) 1 occupied 2 free 3 occupied and free Return Example: [{"SID":"1"},{"SID":"2"},{"SID":"3"}] {"SID":"10","start":"1388264400","end":"1388271600","RID":"1","name":"Shift 1","URL":null,"PSID":null,\ "ShiftEntry":[{"TID":"8","UID":"4","freeloaded":"0"}], "NeedAngels":[{"TID":"8","count":"1","restricted":"0","taken":1},{"TID":"9","count":"2","restricted":"0","taken":0}]} getMessage Description: Returns a list of all Messages (no id set) or details of a single Message (requested id) Parameters: id (integer) - Message ID Return Example: [{"id":"1"},{"id":"2"},{"id":"3"}] {"id":"3","Datum":"1388247583","SUID":"23","RUID":"42","isRead":"N","Text":"message text"} ************************************************************************************************/ /** * General API Controller */ function api_controller() { global $DataJson, $_REQUEST; header("Content-Type: application/json; charset=utf-8"); // decode JSON request $input = file_get_contents("php://input"); $input = json_decode($input, true); $_REQUEST = $input; // get command $cmd=''; if (isset($_REQUEST['cmd']) ) $cmd = strtolower( $_REQUEST['cmd']); // decode commands, without key switch( $cmd) { case 'getversion': getVersion(); die( json_encode($DataJson)); break; case 'getapikey': getApiKey(); die( json_encode($DataJson)); break; } // get API KEY if (isset($_REQUEST['key']) && preg_match("/^[0-9a-f]{32}$/", $_REQUEST['key'])) $key = $_REQUEST['key']; else die( json_encode( array ( 'status' => 'failed', 'error' => 'Missing parameter "key".' ))); // check API key $user = User_by_api_key($key); if ($user === false) die( json_encode( array ( 'status' => 'failed', 'error' => 'Unable to find user' ))); if ($user == null) die( json_encode( array ( 'status' => 'failed', 'error' => 'Key invalid.' ))); // decode command switch( $cmd) { case 'getroom': getRoom(); break; case 'getangeltype': getAngelType(); break; case 'getuser': getUser(); break; case 'getshift': getShift(); break; case 'getmessage': getMessage(); break; default: $DataJson = array ( 'status' => 'failed', 'error' => 'Unknown Command "'. $cmd. '"' ); } // check if( $DataJson === false) { $DataJson = array ( 'status' => 'failed', 'error' => 'DataJson === false' ); } echo json_encode($DataJson); die(); } /** * Get Version of API */ function getVersion(){ global $DataJson; $DataJson = array( 'status' => 'success', 'Version' => 1); } /** * Get API Key */ function getApiKey(){ global $DataJson, $_REQUEST; if (!isset($_REQUEST['user']) ) { $DataJson = array ( 'status' => 'failed', 'error' => 'Missing parameter "user".' ); } elseif (!isset($_REQUEST['pw']) ) { $DataJson = array ( 'status' => 'failed', 'error' => 'Missing parameter "pw".' ); } else { $Erg = sql_select( "SELECT `UID`, `Passwort`, `api_key` FROM `User` WHERE `Nick`='" . sql_escape($_REQUEST['user']) . "'"); if (count($Erg) == 1) { $Erg = $Erg[0]; if (verify_password( $_REQUEST['pw'], $Erg["Passwort"], $Erg["UID"])) { $key = $Erg["api_key"]; $DataJson = array( 'status' => 'success', 'Key' => $key); } else { $DataJson = array ( 'status' => 'failed', 'error' => 'PW wrong' ); } } else { $DataJson = array ( 'status' => 'failed', 'error' => 'User not found.' ); } } sleep(1); } /** * Get Room */ function getRoom(){ global $DataJson, $_REQUEST; if (isset($_REQUEST['id']) ) { $DataJson = mRoom( $_REQUEST['id']); } else { $DataJson = mRoomList(); } } /** * Get AngelType */ function getAngelType(){ global $DataJson, $_REQUEST; if (isset($_REQUEST['id']) ) { $DataJson = mAngelType( $_REQUEST['id']); } else { $DataJson = mAngelTypeList(); } } /** * Get User */ function getUser(){ global $DataJson, $_REQUEST; if (isset($_REQUEST['id']) ) { $DataJson = mUser_Limit( $_REQUEST['id']); } else { $DataJson = mUserList(); } } /** * Get Shift */ function getShift(){ global $DataJson, $_REQUEST; if (isset($_REQUEST['id']) ) { $DataJson = mShift( $_REQUEST['id']); } else { $DataJson = mShiftList(); } } /** * Get Message */ function getMessage(){ global $DataJson, $_REQUEST; if (isset($_REQUEST['id']) ) { $DataJson = mMessage( $_REQUEST['id']); } else { $DataJson = mMessageList(); } } ?>