How to use the Ushahidi API


#1

Hello

I need to manage the Ushahidi API to create new users from an external code on PHP. I use the ProcessMaker API on this way: http://wiki.processmaker.com/index.php/ProcessMaker_WSDL_Servicios_Web#Web_Services_Functions

But i can not find how can i do the same with Ushahidi.

When i put this: http://ushahidi.technoar.co/api

It says this: The requested URL /api was not found on this server.

But that web page is based on ushahidi, so what can i do?

Thank you for your help.


Support for the Ushahidi Platforms API
#2

cc @rjmackay @sara


#3

Hi!

I already solved the problem, now i’m developing this code to create a new user:

<html>
<head>
	<title>Uso de API de ProcessMaker</title>

	<meta charset="UTF-8">
	<?php include "NuevoCaso.php"?>
</head>
<body>

	<?php

	 $user = 'admin';
	 //$pass = '**Fi3';
	 $pass = '12345';

	 ini_set("soap.wsdl_cache_enabled", "0");
	 $cliente = new SoapClient("http://pqrd.pastovivedigital.gov.co:80/sysPQRS/es/classic/services/wsdl2");	 
	 
	 $parametros = array(array('userid'=>$user, 'password'=>$pass));

	 $resultado = $cliente->__SoapCall('login', $parametros);
	 
	 if($resultado->status_code == 0)
	 {
	 	echo "Sesión iniciada exitosamente <br><br>";
	 	$sessionId = $resultado->message;
	 		 	
	 	/*Listar los usuarios*/
	 	echo "<br><br> Lista de usuarios_____________________________________<br>";
	 	$parametros = array(array('sessionId'=>$sessionId));	 	 
	 	$resultado = $cliente->__SoapCall('userList', $parametros);	 	
	 	$usersArray = $resultado->users;
 		if (is_array($usersArray))
 		{
 			foreach ($usersArray as $user)
 			{
 				echo "User name: $user->name, User ID: $user->guid <br>"; 			
 			}		           
 		}		      
		else
		{
			echo "Error: $usersArray->name <br>";
		} 

		/*Crear un nuevo usuario*/
		echo "<br><br> Nuevo Usuario_____________________________________<br>";
		$parametros = array(array('sessionId'=>$sessionId, 'userId' => 'JoseO',
		    'firstname'=>'Jose', 'lastname'=>'Ojeda', 'email'=>'JoseO@gmail.com', 
		    'role'=>'PROCESSMAKER_OPERATOR', 'password'=>'123456'));
		//$resultado = $cliente->__SoapCall('createUser', $parametros);
		if ($resultado->status_code == 0) 
		{
			echo "$resultado->message <br> User UID: $resultado->userUID";
			
			$session = curl_init();
			curl_setopt($session, CURLOPT_URL, 'smart.parquesoftpasto.com/api?task=MY_New_User');
			curl_setopt ($session, CURLOPT_POST, 1);

			$email="JoseO@gmail.com";
			$name="Jose";
			$password="123456";
			$apellido="Ojeda";
			$identificacion="123456";			

			//le decimos qué paramáetros enviamos (pares nombre/valor, también acepta un array)
			curl_setopt ($session, CURLOPT_POSTFIELDS, "$email&$password&$name&$apellido&$identificacion");
			curl_setopt($session,CURLOPT_RETURNTRANSFER,true);
			
			//curl_setopt($session, CURLOPT_URL, 'informando.pastovivedigital.gov.co/api');

			/*curl_setopt($session, CURLOPT_HEADER, 0);
			curl_setopt($session, CURLOPT_POST, FALSE);
			curl_setopt($session, CURLOPT_POSTFIELDS, $fields);
			curl_setopt($session, CURLOPT_RETURNTRANSFER, true);*/
			
			$respuesta = curl_exec($session);	

			if($respuesta == 0)
			{
				echo "<br>Usuario creado exitosamente en Ushahidi!!!!";
			}		
			else
			{
				echo "<br>Imposible crear usuario en base de datos de ushahidi";
				$error = curl_error($ch);
				echo "<br>".$error;
			} 
		}
		    
		else
		{
			echo "<br>Incapaz de crear usuario.<br>Error Number: $resultado->status_code<br>"."Mensaje de Error: $resultado->message<br>";
		}
		    

		/*Listar Casos*/ /*
		echo "<br><br> Lista de Casos_____________________________________<br>";
		$parametros = array(array('sessionId'=>$sessionId));
		 $resultado = $cliente->__SoapCall('caseList', $parametros);
		 $casosArray = $resultado->cases; 
		 $n=0;
		 if ($casosArray != NULL)
		 {
		 	foreach ($casosArray as $caso)
		 	{
		 		//while($n<count($casosArray))
		 		//{
		 			echo "Nombre del Caso: $caso->name, Caso ID: $caso->gd, Estado: $caso->status, Index: $caso->delIndex <br><br>";
		 			$n++;
		 		//}
		 	}		           	
		 }		      
		else 
		{
			echo "<br> Hay cero casos. <br><br>";
		} */


		/*Lista de Procesos*/ /*
		echo "<br><br> Lista de Procesos_____________________________________<br>";
		$parametros = array(array('sessionId'=>$sessionId));
		$resultado = $cliente->__SoapCall('processList', $parametros);
		$processesArray = $resultado->processes;
		 
		 if ($processesArray != NULL)
		{
		    if (is_array($processesArray))
		    {
		        foreach ($processesArray as $process)
		        {
		        	echo "Process name: $process->name, Process ID: $process->guid <br>";		        	
		        }		            
		    }
		    else
		    {
		        echo "Process name: $processesArray->name, Process ID: $processesArray->guid <br>";
		    }
		 }
		 else
		 {
		 	echo "Error: $processesArray->name <br>";
		 } */


		 /*Lista de Tareas*/ /*
		 echo "<br><br> Lista de tareas_____________________________________<br>";
		 $parametros = array(array('sessionId'=>$sessionId));
		 $resultado = $cliente->__SoapCall('taskList', $parametros);
		 $tasksArray = $resultado->tasks;
		 if ($tasksArray != (object) NULL)
		 {
		 	foreach ($tasksArray as $task)
		 	{
		 		echo "<br> Nombre de la tarea: $task->name, Task ID: $task->guid <br>";
		 	}		           
		 }		      
		else 
		{
			echo "<br> Hay cero tareas asignadas a este usuario. <br>";
		} */
		      
		    	

		/* Crear Nuevo Caso */ /*
		
		echo "<br><br> Nuevo Caso_____________________________________<br>";
		$name = new variableStruct();
		$vars = array('APPLICANT_NAME'=>'Carlos', 'APPLICANT_LAST'=>'Jaramillo', 
		     'APPLICANT_ID'=>'123456', 'APPLICANT_EMAIL'=>'cjaramillo@gmail.com',
		     '$APPLICANT_EMPLOYER'=>'ParqueSoft');
		$aVars = array();
		 foreach ($vars as $key => $val)
		 { 
		      $obj = new variableStruct();
		      $obj->name = $key;
		      $obj->value = $val;
		      $aVars[] = $obj;	 
		 }*/
		

		/*Use las funciones Lista de procesos () y Lista de tareas () para buscar los IDs para el  
		proceso y su primera tarea.*/  /*
		$parametros = array(array('sessionId'=>$sessionId, 'processId'=>'82624301853c85a89813cd8090028969', 
		     'taskId'=>'182114808548079fa7decf8034689551', 'variables'=>$aVars));
		 $resultado = $cliente->__SoapCall('newCase', $parametros);
		 if ($resultado->status_code == 0)
		 {
		 	echo "Nuevo ID de caso: $resultado->caseId, Caso No: $resultado->caseNumber \n";
		 }
		      
		else
		{
			echo "Error al crear caso: $resultado->message \n";
		}*/
	 }
	 else
	 {
	 	echo $resultado->status_code;
	 }

	?>

</body>
</html>  

So i create the MY_New_User.php inside of the API folder that conteins:

<?php defined('SYSPATH') or die('No direct script access.');
//Este módulo ingresa nuevos usuarios que se hayan registrado en ProcessMaker dentro de la base de datos de ushahidi

echo "El usuario que intenta ingresar en la BD de Ushahidi es:";

echo "<br>Nombre: ".$_POST['name'];
echo "<br>Apellido: ".$_POST['apellido'];
echo "<br>Email: ".$_POST['email'];
echo "<br>Identificacion: ".$_POST['identificacion'];
echo "<br>Contraseña: ".$_POST['password'];

?>

But when i run the fist file, it don’t show me the text that should show me in My_new_user