Simply proporciona una interfaz de programación de aplicaciones (API) simple, potente y segura para trabajar con las entidades almacenadas en su interior. Para usar este documento, debe tener una familiaridad básica con el desarrollo de software, los servicios web y Simply CRM .
El servicio web proporciona una manera más fácil de integrar Simply con sus otros sistemas de software.
Las características de la llamada a la API
REST: la API se basa en REST, lo que significa que toda la comunicación entre el cliente y el servidor puede realizarse a través de HTTP en forma de solicitudes GET o POST.
JSON: JSON se utiliza para codificar la respuesta y la solicitud.
Solicitudes y respuestas: su aplicación de cliente prepara y envía una solicitud de servicio a la API. La API procesa la solicitud y devuelve una respuesta, y luego la aplicación cliente maneja la respuesta.
Confirmado automáticamente: cada operación que escribe en un objeto Simply se confirma automáticamente. Esto es análogo a la configuración AUTOCOMMIT en SQL.
La respuesta de la API
Objeto de respuesta
Todas las respuestas tendrán uno de los siguientes dos formatos.
Si la solicitud se procesa con éxito:
<código>Respuesta{
exito:Booleano=verdadero
result:Object //El objeto de resultado de la operación
}
</código>
Si se produce un error al procesar la solicitud:
<código>Respuesta{
exito:Booleano=falso
error: Objeto de error
}
</código>
Objeto de error
<código>ObjetoError{
errorCode:String //Representación de cadena del tipo de error
errorMessage:String //Mensaje de error de la API.
}
</código>
errorCode es una representación de cadena del tipo de error.
Manejo de errores
La respuesta para cualquier solicitud de servicio web es un objeto JSON. El objeto tiene un campo éxito que tendrá el valor verdadero si la operación fue exitosa y falso en caso contrario. Si el éxito es falso, el objeto de respuesta contendrá un error de campo que contendrá el objeto JSON. El objeto de error contendrá dos campos errorType, una descripción de una sola palabra del error y errorMsg, una cadena que contiene una descripción del error.
El código de ejemplo está escrito en PHP y tiene dos dependencias, la biblioteca Laminas y Http_Request2.
Los requisitos para ejecutar los ejemplos dados en el tutorial.
- Una instalación de Simply con el servicio web;
- Php para ejecutar el código de ejemplo;
- HTTP_Request2 que se puede instalar haciendo una
pear install HTTP_Request2
; - Laminas, para lo cual necesitarás descargar el framework Laminas .
Iniciando sesión
La API no utiliza la contraseña para los inicios de sesión. En su lugar, Simply proporciona una clave de acceso única para cada usuario. Para obtener la clave de usuario, vaya al panel Mis preferencias de un usuario específico. Allí encontrará el campo Clave de acceso.
Importante : es necesario ingresar la IP en el campo IP de la lista blanca en Mis preferencias en el perfil del usuario en Simply CRM que se utiliza para acceder a la API.
Cada inicio de sesión inicia una sesión de cliente con el servidor, autentica al usuario y devuelve un ID de sesión que se utilizará para todas las comunicaciones posteriores con el servidor.
Iniciar sesión es un proceso de dos pasos. En el primer paso, el cliente obtiene el token de desafío del servidor, que se utiliza junto con la clave de acceso del usuario para iniciar sesión.
Obtener desafío
Obtenga un token de desafío del servidor. Debe ser una solicitud GET.
formato de URL
<código>Tipo de solicitud: GET
http://Simply_url/webservice.php?operation=getchallenge
&nombre de usuario=[nombre de usuario]
</código>
Ejemplo de GetChallenge
Para obtener el token de desafío, debe ejecutar el siguiente código.
<?php
require_once 'HTTP/Solicitud2.php';
$endpointUrl = 'https://tr.simply-crm.dk/webservice.php';
//nombre de usuario del usuario que va a iniciar sesión.
$nombreDeUsuario="API";
tratar {
$solicitud = new HTTP_Request2($endpointUrl . "?operation=getchallenge&username=" . $userName, HTTP_Request2::METHOD_GET);
$respuesta = $solicitud->enviar();
if (200 == $respuesta->getStatus()) {
$jsonResponse = json_decode($respuesta->getBody(),true);
$challengeToken = $jsonResponse['resultado']['token'];
echo $token de desafío;
} demás {
echo 'Estado HTTP inesperado: ' . $respuesta->getStatus() . ' ' .
$respuesta->getReasonPhrase();
}
}capturar (HTTP_Request2_Exception $e) {
echo 'Error: '. $e->getMessage();
}
?>
Obtener resultado del desafío
Un objeto que representa el resultado de la respuesta de una operación getchallenge.
<código>Obtenerresultado del desafío{
token:String //Token de desafío del servidor.
serverTime:TimeStamp //La hora actual del servidor.
expireTime:TimeStamp //La hora en que caduca el token.
}
</código>
Ahora que tiene el token de desafío, puede continuar con el inicio de sesión. El campo de clave de acceso en la operación de inicio de sesión es la suma de verificación md5 de la concatenación del token de desafío y la clave de acceso del usuario. La operación de inicio de sesión, a diferencia de getchallenge, es una solicitud posterior.
Acceso
Inicie sesión en el servidor utilizando el token de desafío obtenido en la operación getchallenge.
formato de URL
<código>Tipo de solicitud: POST
http://Simply_url/webservice.php?operation=login
&nombre de usuario=[nombre de usuario]
&accessKey=[clave de acceso]
</código>
Para accessKey, cree una cadena md5 después de concatenar la clave de acceso del usuario de la página Mi preferencia y el token de desafío obtenido del resultado de getchallenge.
Ejemplo de inicio de sesión
El ID de sesión se utiliza para identificar la sesión actual y será un parámetro común en todas las solicitudes posteriores.
Resultado de inicio de sesión
Un objeto que representa el resultado de la respuesta de una operación de inicio de sesión.
<code>Resultado de inicio de sesión{
sessionId:String //Identificador único para la sesión
userId:String //La identificación de Simply para el usuario que inició sesión
version:String //La versión de la API de servicios web
SimplyVersion:String //La versión de Simply crm.
}
</código>
Consiguiendo información
La API proporciona dos operaciones para obtener información sobre los objetos Simply disponibles.
El primero es listtypes, que proporciona una lista de módulos disponibles. Esta lista solo contiene módulos a los que tiene acceso el usuario que ha iniciado sesión.
Tipos de lista
Enumere los nombres de todos los objetos Simply disponibles a través de la API.
formato de URL
<código>Tipo de solicitud: GET
http://Simply_url/webservice.php?operation=listtypes
&sessionName=[id de sesión]
</código>
Devuelve un mapa que contiene los 'tipos' clave con el valor de una lista de los nombres de objetos de Simply.
Ejemplo de tipos de lista
<code>//la solicitud de tipo de lista debe ser una solicitud GET.
$httpc->get("$endpointUrl?sessionName=$sessionId&operation=listtypes");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('listar tipos fallidos:'.$jsonResponse['error']['errorMsg']);
//Obtener la Lista de todos los módulos accesibles.
$módulos = $jsonResponse['resultado']['tipos'];
</código>
La segunda operación es describe y proporciona información de tipo detallada sobre un objeto Simply.
Describir
Obtenga la información de tipo sobre un objeto Simply dado.
formato de URL
<código>Tipo de solicitud: GET
http://Simply_url/webservice.php?operation=describe
&sessionName=[id de sesión]
&elementType=[elementType]
</código>
Describir ejemplo
<código>//por ejemplo
//Simplemente Nombre del objeto que se necesita describir o cuya información se solicita.
$moduleName = 'Contactos';
//usar sessionId creado en el momento del inicio de sesión.
$params = "sessionName=$sessionId&operation=describe&elementType=$moduleName";
//describir la solicitud debe ser una solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('error en la descripción del objeto:'.$jsonResponse['error']['errorMsg']);
// obtener descripción del objeto de resultado. $descripción = $jsonResponse['resultado'];
</código>
La descripción consta de los siguientes campos:
Cada elemento en la matriz de campos describe un campo particular en el objeto.
Nombre | Descripción |
Nombre | El nombre del campo, como lo usa internamente Simply. |
Etiqueta | La etiqueta utilizada para mostrar el nombre del campo. |
Obligatorio | Un booleano que especifica si el campo es obligatorio. Los campos obligatorios deben proporcionarse al crear un nuevo objeto. |
Escribe | Un mapa que describe la información de tipo para el campo. |
Por defecto | El valor predeterminado para el campo. |
nullable | Un valor booleano que especifica si el campo se puede establecer en nulo. |
Editable | Un valor booleano que especifica si el campo se puede modificar. |
El campo de tipo es particularmente importante ya que describe qué tipo de campo es. Este es un mapa que contendrá al menos un elemento llamado nombre, que especifica el nombre del tipo.
Nombre | Descripción |
Cuerda | Un campo de texto de una línea. |
Texto | Un campo de texto de varias líneas. |
Entero | Un campo de texto de varias líneas. |
Doble | Un campo para números de coma flotante. |
booleano | Un campo booleano, que puede tener los valores verdadero o falso. |
Hora | Una cadena con el formato hh:mm, que se basa en la configuración del formato de hora del usuario. |
Fecha | Una cadena que representa una fecha, el tipo de mapa contendrá otro elemento llamado formato, que es el formato en el que se espera el valor de este campo, se basa en el formato de fecha de configuración del usuario. |
Fecha y hora | Una cadena que representa la fecha y la hora, que se basa en la configuración de formato de fecha del usuario. |
Auto generado | Los campos para los que Simply genera automáticamente los valores. Suele ser el campo ID de un objeto. |
Referencia | Un campo que muestra una relación con otro objeto. El mapa de tipo contendrá otro elemento llamado se refiere a, que es una matriz que contiene los módulos a los que puede apuntar el campo. |
lista de selección | Un campo que puede contener uno de una lista de valores. El mapa contendrá dos elementos, picklistValues, que es una lista de valores posibles, y defaultValue, que es el valor predeterminado para la lista de selección. |
Lista de selección múltiple | Un campo de lista de selección donde se pueden seleccionar varios valores. |
Teléfono | Un campo utilizado para almacenar números de teléfono. |
Correo electrónico | Un campo utilizado para almacenar ID de correo electrónico. |
URL | Un campo utilizado para almacenar direcciones URL. |
skype | Un campo utilizado para almacenar ID de Skype o números de teléfono. |
Clave | Un campo utilizado para almacenar contraseñas. |
Dueño | Un campo que define el propietario del campo, que puede ser un grupo o un usuario individual. |
Describir resultado
<code>DescribirResultado{
label:String //etiqueta del módulo.
name:String //nombre del módulo, como se proporciona en la solicitud.
createable:Boolean //true si el usuario registrado puede crear registros de tipo y false en caso contrario.
updateable:Boolean //true si el usuario que ha iniciado sesión puede actualizar registros de tipo y false en caso contrario.
deleteable:Boolean //true si el usuario que ha iniciado sesión puede eliminar registros de tipo y false en caso contrario.
recuperable:Booleano //verdadero si el usuario que ha iniciado sesión puede recuperar registros de tipo y falso en caso contrario.
campos:Array //array de tipo Field.
}
</código>
Campo
Tipo de campo
<código>Tipo de campo{
<pre class="_fck_mw_lspace"> nombre:Tipo //tipo de campo
se refiere a: matriz // una matriz de nombres de objetos simples de tipos de registro a los que el campo puede referirse, solo se define para referencia FieldType.
picklistValues:Array //una matriz de tipo tipo PicklistValue. solo se define para la lista de selección Tipo de campo.
defaultValue:String //un valor del valor predeterminado de la lista de selección seleccionada, solo se define para el tipo de campo de la lista de selección.
format:String //formato de fecha en el que el campo de tipo de fecha debe completarse, por ejemplo, mm-dd-yyyy. solo se define para el tipo de campo de fecha.
}
</código>
El valor del campo de la lista de selección debe proporcionarse explícitamente.
<código>Valor de lista de selección{
name:String //nombre de la opción de lista de selección.
value:String //valor de la opción de lista de selección.
}
</código>
Un ejemplo de objeto describeResult
//$descripción del ejemplo anterior. Por ejemplo, print_r($description)
podría mostrar:
<código>matriz
(
[etiqueta] => Contactos
[nombre] => Contactos
[creable] => 1
[actualizable] => 1
[eliminable] => 1
[recuperable] => 1
[campos] => Matriz
(
[0] => Matriz
(
[nombre] => cuenta_id
[etiqueta] => Nombre de cuenta
[obligatorio] =>
[tipo] => Matriz
(
[nombre] => referencia,
[se refiere a] => Matriz
(
"Cuentas"
)
)
[predeterminado] =>
[anulable] => 1
[editable] => 1
)
)
)
</código>
Operaciones CRUD
La API proporciona operaciones para crear, recuperar, actualizar y eliminar objetos de entidad de CRM.
Crear
Cree una nueva entrada en el servidor.
formato de URL
<código>Tipo de solicitud: POST
http://Simply_url/webservice.php?operation=create
&sessionName=[id de sesión]
&elemento=[objeto]
&elementType=[tipo de objeto]
</código>
Crear ejemplo
Ejemplo 1
Puede crear un contacto mediante la operación de creación. En este caso, los campos obligatorios son apellido e id_usuario_asignado.
$savedObject
es un mapa que contiene los campos del nuevo objeto, incluido un campo de ID que se puede usar para hacer referencia al objeto.
Ejemplo 2
Cree un contacto y asócielo con una cuenta existente.
<código>//p. ej. 2
//Cree un contacto y asócielo con una cuenta existente.
$resultadodelaconsulta = hacerConsulta("seleccione nombre de cuenta, id de cuentas donde nombre de cuenta='Simplemente';");
$cuentaId = $resultadodelaconsulta[0]['id'];
//Para obtener más detalles sobre cómo realizar una solicitud de consulta, consulte el ejemplo de operación de consulta.
//completar los detalles de los contactos.userId se obtiene de loginResult.
$contactData = array('lastname'=>'Valiant', 'assigned_user_id'=>$userId,'account_id'=>$accountId);
//codifica el objeto en formato JSON para comunicarse con el servidor.
$objetoJson = Zend_JSON::encode($contactData);
//nombre del módulo para el que se debe crear la entrada.
$moduleName = 'Contactos';
//sessionId se obtiene de loginResult.
$params = array("sessionName"=>$sessionId, "operación"=>'crear',
"elemento"=>$objectJson, "elementType"=>$moduleName);
//Crear debe ser Solicitud POST.
$httpc->post("$endpointUrl", $params, true);
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('crear falló:'.$jsonResponse['error']['errorMsg']);
$objetoGuardado = $jsonResponse['resultado'];
$id = $objetoGuardado['id'];
</código>
Ejemplo 3
Cree un contacto y asócielo con una nueva cuenta.
<código>//p. ej. 3
<p>//Cree un contacto y asócielo con una nueva cuenta.
</p><p>//rellenar los datos de las Cuentas. userId se obtiene de loginResult.
$accountData = array('accountname'=>'Simplemente', 'assigned_user_id'=>$userId);
//codifica el objeto en formato JSON para comunicarse con el servidor.
$objetoJson = Zend_JSON::encode($cuentaDatos);
//nombre del módulo para el que se debe crear la entrada.
$moduleName = 'Cuentas';
</p><p>//sessionId se obtiene de loginResult.
$params = array("sessionName"=>$sessionId, "operación"=>'crear',
</p>
<pre class="_fck_mw_lspace"> "element"=>$objectJson, "elementType"=>$moduleName);
//Crear debe ser Solicitud POST. $httpc->post(“$endpointUrl”, $params, true); $respuesta = $httpc->respuestaactual(); // decodifica la respuesta de codificación json del servidor. $jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('crear falló:'.$jsonResponse['error']['errorMsg']);
$cuenta = $jsonResponse['resultado']; $cuentaId = $cuenta['id'];
$contactData = array('lastname'=>'Valiant', 'assigned_user_id'=>$userId,'account_id'=>$accountId);
//codifica el objeto en formato JSON para comunicarse con el servidor. $objetoJson = Zend_JSON::encode($contactData); //nombre del módulo para el que se debe crear la entrada. $moduleName = 'Contactos';
//sessionId se obtiene de loginResult.
$parámetros = array(“nombreSesión”=>$IdSesión, “operación”=>'crear',
"elemento"=>$objectJson, "elementType"=>$moduleName);
//Crear debe ser Solicitud POST. $httpc->post(“$endpointUrl”, $params, true); $respuesta = $httpc->respuestaactual(); // decodifica la respuesta de codificación json del servidor. $jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('crear falló:'.$jsonResponse['error']['errorMsg']);
$objetoGuardado = $jsonResponse['resultado']; $id = $objetoGuardado['id'];
</código></pre>
CrearResultado
Recuperar
Recuperar una entrada existente del servidor.
formato de URL
<código>Tipo de solicitud: GET
http://Simply_url/webservice.php?operation=retrieve
&session_name=[id de sesión]
&id=[id del objeto
</código>
Recuperar ejemplo
Para recuperar un objeto utilizando su ID, utilice la operación de recuperación. Puede recuperar el contacto creado en el ejemplo de creación.
<code>//sessionId se obtiene de loginResult.
$params = "sessionName=$sessionId&operation=retrieve&id=$id";
//La recuperación debe ser una solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('recuperación fallida:'.$jsonResponse['error']['errorMsg']);
$objetorecuperado = $jsonResponse['resultado'];
</código>
RecuperarResultado
Un mapa que representa el contenido de un objeto basado en una entidad de CRM. Todos los campos de referencia se representan mediante el tipo de Id . Una clave llamada ID de tipo Id representa la ID única del objeto. Este campo está presente para cualquier objeto obtenido de la base de datos.
Actualizar
Para actualizar un objeto recuperado o recién creado, puede utilizar la operación de actualización.
formato de URL
<código>Tipo de solicitud: POST
http://Simply_url/webservice.php?operation=update
&sessionName=[id de sesión]
&elemento=[objeto]
</código>
Actualizar ejemplo
Puede agregar un nombre al contacto.
<código>//Objeto recuperado del ejemplo anterior (Ejemplo 1).
$objetorecuperado['nombre'] = 'Príncipe';
//codifica el objeto en formato JSON para comunicarse con el servidor.
$objetoJson = Zend_JSON::encode($objetorecuperado);
//sessionId se obtiene del resultado de la operación de inicio de sesión.
$params = array("sessionName"=>$sessionId, "operación"=>'actualizar',
"elemento"=>$objetoJson);
//la actualización debe ser una solicitud POST.
$httpc->post("$endpointUrl", $params, true);
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta. if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('actualización fallida:'.$jsonResponse['error']['errorMsg']);
//actualizar objeto de resultado.
$objetoactualizado = $jsonResponse['resultado'];
</código>
ActualizarResultado
Un mapa que representa el contenido de un objeto basado en la realidad. Todos los campos de referencia se representan mediante el tipo de Id . Una clave llamada ID de tipo Id representa la ID única del objeto. Este campo está presente para cualquier objeto obtenido de la base de datos.
Borrar
Para eliminar un objeto, utilice la operación de eliminación.
formato de URL
<código>Tipo de solicitud: POST
http://Simply_url/webservice.php?operation=delete
&sessionName=[id de sesión]
&id=[id del objeto]
</código>
Borrar ejemplo
La operación de eliminación no tiene ningún resultado. El indicador de éxito es suficiente para saber si la operación fue exitosa.
Consultas
Simplemente proporciona un lenguaje de consulta simple para obtener datos. Este lenguaje es bastante similar a las consultas de selección en SQL. Existen limitaciones: las consultas funcionan en un solo módulo, las consultas incrustadas no son compatibles y no admite combinaciones. Pero esta sigue siendo una forma poderosa de obtener datos de Simply.
Query siempre limita su salida a 100 registros. La aplicación cliente puede usar el operador de límite para obtener diferentes registros.
formato de URL
<código>Tipo de solicitud: GET
http://Simply_url/webservice.php?operation=query
&sessionName=[id de sesión]
&query=[cadena de consulta]
</código>
Ejemplo de consulta
Ejemplo 1
<código>//consulta para seleccionar datos del servidor.
$consulta = "select * from Contacts where lastname='Valiant';";
//urlencode a como se envía a través de http.
$queryParam = urlencode($consulta);
//sessionId se obtiene del resultado de inicio de sesión.
$params = "sessionName=$sessionId&operation=query&query=$queryParam";
//la consulta debe ser Solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta. if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('consulta fallida:'.$jsonResponse['errorMsg']);
//Array de objetos simples
$objetosrecuperados = $jsonResponse['resultado'];
</código>
Ejemplo 2
Especifique las columnas que se recuperarán para cada registro.
<código>//consulta para seleccionar datos del servidor.
$consulta = "seleccione apellido,nombre,id_cuenta,id_usuario_asignado de Contactos donde apellido='Valiant';";
//urlencode a como se envía a través de http.
$queryParam = urlencode($consulta);
//sessionId se obtiene del resultado de inicio de sesión.
$params = "sessionName=$sessionId&operation=query&query=$queryParam";
//la consulta debe ser Solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('consulta fallida:'.$jsonResponse['errorMsg']);
//Array de objetos simples
$objetosrecuperados = $jsonResponse['resultado'];
</código>
Esto devolverá una matriz que contiene matrices que representan los campos de cada objeto que coincidió con la consulta.
Resultado de la consulta
QueryResult es una matriz de SimplyObjects.
SimplementeObjeto
Un mapa que representa el contenido de un objeto basado en la realidad. Todos los campos de referencia se representan mediante el tipo de Id . Una clave llamada ID de tipo Id representa la ID única del objeto. Este campo está presente para cualquier objeto obtenido de la base de datos.
formato de consulta
<código>seleccionar * | <lista_columnas> | <cuenta(*)>
from <objeto> [donde <condicionales>]
[ordenar por <column_list>] [límite [<m>, ]<n>];
</código>
La lista de columnas en la cláusula order by puede tener como máximo dos nombres de columna.
sincronizar
Sync devolverá un objeto SyncResult que contiene los detalles de los cambios después de modifiedTime.
formato de URL
<código>Tipo de solicitud: GET
http://Simply_url/webservice.php?operation=sync
&sessionName=[id de sesión]
&modifiedTime=[marca de tiempo]
&elementType=[elementType]
</código>
elementType: este es un parámetro opcional. Si se especifica, solo se devuelven los cambios para ese módulo después del tiempo dado. De lo contrario, se devuelven los cambios en todos los módulos accesibles por el usuario después del tiempo dado.
TimeStamp: una representación larga del número de segundos desde la época de Unix.
Ejemplo 1
Cree una cuenta y captúrela en la API de sincronización.
<código>//tiempo después del cual se necesitan todos los cambios en el servidor.
$stiempo = tiempo();
//Cree algunos datos ahora para que sean capturados por la respuesta de API de sincronización.
//Crear una cuenta.
//completar los detalles de Accounts.userId se obtiene de loginResult.
$accountData = array('accountname'=>'Simplemente', 'assigned_user_id'=>$userId);
//codifica el objeto en formato JSON para comunicarse con el servidor. $objetoJson = Zend_JSON::encode($cuentaDatos);
//nombre del módulo para el que se debe crear la entrada.
$moduleName = 'Cuentas';
//sessionId se obtiene de loginResult.
$params = array("sessionName"=>$sessionId, "operación"=>'crear',
"elemento"=>$objectJson, "elementType"=>$moduleName);
//Crear debe ser Solicitud POST.
$httpc->post("$endpointUrl", $params, true);
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('crear falló:'.$jsonResponse['error']['errorMsg']);
$createResult = $jsonResponse['resultado'];
$params = "operación=sync&modifiedTime=$stime&sessionName=$sessionId";
// la sincronización debe ser una solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('consulta fallida:'.$jsonResponse['errorMsg']);
//Array de objetos simples
$objetosrecuperados = $jsonResponse['resultado'];
</código>
La respuesta contiene la cuenta que se creó.
Ejemplo 2
Cree una cuenta y un contacto, use la API de sincronización solo para el módulo Cuentas, solo se devuelven los cambios en el módulo Cuentas.
Resultado de sincronización
Un objeto que representa la respuesta de una operación de sincronización.
<código>Resultado de sincronización{
actualizado:[Objeto] //Lista de Objetos creados o modificados.
eliminado:[Id] //Lista de *Id* de objetos eliminados.
lastModifiedTime:Timstamp //hora del último cambio. que se puede usar en la próxima llamada a la API de sincronización para obtener todos los cambios más recientes que el cliente no ha obtenido.
}
</código>
Saliendo de tu cuenta
Cerrar sesión
Cierre la sesión del servicio web, lo que deja la sesión del servicio web inválida para su uso posterior.
formato de URL
<código>Tipo de solicitud: GET
http://Simply_url/webservice.php?operation=logout
&sessionName=[id de sesión]
</código>
Ejemplo
<code>//SessionId es la sesión que se va a terminar.
$params = "operación=cerrar sesión&sessionName=$sessionId";
//el cierre de sesión debe ser una solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('consulta fallida:'.$jsonResponse['errorMsg']);
//cierre de sesión exitoso sesión terminada.
</código>
Ampliación del cliente web de Simply mediante el servicio web
Extender sesión
Extiende la sesión actual del cliente web de Simply al servicio web y devuelve un ID de sesión de servicio web. Cuando trabaja desde el cliente web de Simply, el usuario puede reutilizar la sesión autenticada actual en lugar de iniciar sesión en Simply nuevamente para acceder al servicio web.
Nota: si el usuario extiende una sesión, la sesión se vinculará, por lo que al cerrar sesión en uno (el servicio web o el cliente web) también se cerrará la sesión del otro. Para que la operación de extensión de sesión funcione, las cookies deben estar habilitadas en el navegador del cliente.
formato de URL
<código>Tipo de solicitud: POST
http://Simply_url/webservice.php?operation=extendsession
</código>
Ejemplo
<código>
</código>
Este ejemplo está escrito en Javascript, ya que la sesión extendida solo es válida desde el cliente web de Simply.
Requisitos para ejecutar el ejemplo
- Biblioteca JQUERY: para realizar la solicitud http de ajax.
- Biblioteca JSON: archivo json2.js disponible con Simply en json.org.
Ejemplo 1
<código>
//parámetros de operación.
var params = "operación=sesión extendida";
//punto final de los servicios.
var endPointUrl = "http://Simply_url/webservice.php";
//extendSession es una solicitud de publicación, invoque la solicitud de publicación jquery http.
$.post(endPointUrl, params, function(resultado){
// decodifica la respuesta de codificación json del servidor.
var jsonResponse = json.parse(resultado);
//la operación fue exitosa obtener el token de la respuesta.
if(jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('inicio de sesión fallido:'+jsonResponse['error']['errorMsg']);
//Inicio de sesión exitoso, extraiga el ID de sesión y el ID de usuario de LoginResult para que pueda usarse para futuras llamadas.
var sessionId = jsonResponse['resultado']['nombre de sesión'];
var userId = jsonResponse['resultado']['userId'];
});
</código>