La versión 1.0 de las API de Zoho CRM está en el período final de su vida útil y quedará obsoleta el 31 de diciembre del 2018. Recomendamos que pruebe la nueva y mejorada versión API 2.0.
Cambios en la versión 1.0 de la API - Cumplimiento del RGPD
¿Qué es el RGPD?
El RGPD es un conjunto integral de reglas que sustituirá a la actual Directiva de protección de datos o Directiva 95/46/CE, y se aplicará en toda la UE. Está diseñado para facultar a los residentes de la UE otorgándoles el control directo respecto de la manera en que se procesan sus datos y en relación con la protección de la privacidad de estos frente a la cada vez más compleja naturaleza de la transmisión de datos en el mundo.
Nota:
- El contenido presentado en este documento no debe interpretarse como asesoramiento jurídico. Comuníquese con su asesor legal para saber cómo afecta el RGPD a su organización y qué debe hacer para cumplir con este reglamento.
Novedades de la API
Campos
Detalles de la base de procesamiento de datos
Un nuevo campo denominado "Detalles de la base de procesamiento de datos" llevará la base de procesamiento legal de datos para el registro en particular. Puede determinar los valores en este campo en función de cómo desea procesar los datos de su cliente.
En la actualidad, este campo solo se admite en los módulos de clientes potenciales, contactos, proveedores y en los módulos personalizados.
El valor del campo puede ser:
No aplicable, Intereses legítimos, Contrato, Obligación jurídica, Intereses vitales, Intereses públicos, Consentimiento pendiente, Esperando consentimiento, Con consentimiento, Consentimiento sin respuesta, Detener el procesamiento, Consentimiento denegado, Eliminar.
Nota:
- Consentimiento pendiente: aún no se envía el enlace o formulario de consentimiento al cliente.
- Esperando consentimiento: ya se envió el enlace o formulario de consentimiento al cliente y se espera su respuesta.
- Consentimiento obtenido: ya se envió el enlace o formulario de consentimiento al cliente, y este brindo "acceso", es decir, aceptó.
- Consentimiento denegado: se envió el formulario de consentimiento y el cliente respondió "detener el procesamiento".
Etiquetas
Consentimiento
Esta nueva etiqueta contiene los detalles del formulario de consentimiento aceptado por el cliente. En otro sentido, dentro de una solicitud, esta etiqueta se puede utilizar para agregar detalles de consentimiento a un registro determinado.
Atributos
Privado
Se agregó a las API un atributo de la etiqueta de consentimiento denominado "private" para marcar el campo como protegido. El tipo de datos de esta clave es booleano, es decir, true o false.
Tipo privado
Se agregó un atributo de la etiqueta de consentimiento denominado "private_type". El valor de esta clave puede ser "High", "Low" o "null". Los valores "High" y "Low" corresponden a los valores "Sensitive" y "Normal", como en la IU de CRM.
Detener el procesamiento
Cuando la clave de detención del procesamiento de un registro en particular sea "true", entonces el registro pasa a ser de solo lectura. El valor de esta clave es del tipo de dato booleano, es decir, true o false.
Ejemplo:
<FL val="$stop_processing">true</FL>
Algunas situaciones en las que esta clave gana importancia:
- Se envía un formulario de consentimiento al cliente, quien pide la detención temporal de su solicitud. Después, se enviará una petición para detener el procesamiento.
- Un controlador de datos, es decir, un administrador (CEO) de una organización puede configurar su organización de manera tal que cada vez que la etapa sea "Consentimiento pendiente" o "Esperando consentimiento", se active la detención del procesamiento en las opciones de privacidad.
API de campos
Los cambios realizados a la API de campos como consecuencia de la implementación de la nueva política de privacidad son los siguientes:
- El atributo "private" indica si un campo está protegido (privado). El tipo de datos de esta clave es booleano, es decir, true o false.
- El atributo "private_type" indica el nivel de confidencialidad de los datos. Por ejemplo, si la confidencialidad de los datos está configurada para ser alta, entonces private_type="High"
Nota:
- Para los campos que no son privados, es decir, private="false", será private_type="null".
- Los campos privados no se pueden buscar a través de criterios.
URL: {module}/getFields, {module}/getAllFields
Ejemplo de respuesta
<FL id="111111000000000861" req="false" type="Lookup" isreadonly="false" private="false" private_type="null" export="false" isQcreate="false" maxlength="120" label="Lead Owner" dv="Lead Owner" colName="SMOWNERID" ></FL>
<FL id="111111000000000863" req="true" type="Text" isreadonly="false" private="true" private_type="High" export="false" isQcreate="true" maxlength="100" label="Company" dv="Company" colName="COMPANY" ></FL>
<FL id="111111000000000871" req="false" type="Text" isreadonly="false" private="true" private_type="High" export="false" isQcreate="false" maxlength="100" label="Designation" dv="Title" colName="DESIGNATION" ></FL>
<FL id="111111000000000873" req="false" type="Email" isreadonly="false" private="true" private_type="Low" export="false" isQcreate="true" maxlength="100" label="Email" dv="Email" colName="EMAIL" ></FL>
API de ingreso
Una nueva etiqueta con el nombre de "consentimiento" que contiene los detalles del formulario de consentimiento aceptado por el cliente. En otro sentido, dentro de una solicitud, esta etiqueta se puede utilizar para agregar detalles de consentimiento a un registro determinado.
Los cambios realizados a la API de ingreso como consecuencia de la implementación de la nueva política de privacidad son los siguientes:
- No se puede proporcionar el CONSENTID en los datos de entrada (no se puede asociar el consentimiento existente)
- No se puede proporcionar el correo electrónico en el consentimiento (es decir, en <consent></consent>)
- La API de ingreso no generará ningún error en relación con el ID de correo electrónico para detener el procesamiento. En su lugar, se creará un registro con el ID del correo electrónico para detener el procesamiento y se lo moverá a Detener procesamiento.
- Si se proporciona un correo electrónico no válido en el registro (es decir, en <row></row>), se lo validará.
Nota:
Los casos de uso mencionados anteriormente solo son aplicables en las siguientes circunstancias:
- La opción Ajustes de conformidad está habilitada para la organización (acción realizada por Zoho).
- El usuario habilita la opción Cumplimiento de RGPD (habilitada por el usuario).
- El módulo al que se accede debe ser uno de los módulos de privacidad de datos (el usuario lo puede seleccionar a través de la opción Administrar la privacidad de los datos del módulo).
Ejemplo de entrada
<Postulantes>
<row no="1">
<FL val="Last Name">Patricia</FL>
<FL val="Email">p.boyle@zylker.com</FL>
<FL val="Data Processing Basis Details">
<consent>
<FL val="Contact through Email">true</FL>
<FL val="Contact Through Phone">false</FL>
<FL val="Contact Through Survey">false</FL>
<FL val="Contact Through Social Handles">false</FL>
<FL val="Consent Through">Email</FL>
<FL val="Consent Date">2018-04-27</FL>
<FL val="Allow Other Service">true</FL>
<FL val="Consent Remarks">Consent approved by customer</FL>
<FL val="Data Processing Basis">Obtained</FL>
</consent>
</FL>
</row>
</Leads>
API de actualización
Los cambios realizados a la API de actualización como consecuencia de la implementación de la nueva política de privacidad son los siguientes:
- No se puede proporcionar el CONSENTID en los datos de entrada (no se puede asociar el consentimiento existente).
- No se puede proporcionar el correo electrónico en el consentimiento (es decir, en <consent></consent>)
- Si se proporciona un correo electrónico no válido en el registro (es decir, en <row></row>), se lo validará.
Nota:
Los casos de uso mencionados anteriormente solo son aplicables en las siguientes circunstancias:
- La opción Ajustes de conformidad está habilitada para la organización (acción realizada por Zoho).
- El usuario habilita la opción Cumplimiento de RGPD (habilitada por el usuario).
- El módulo al que se accede debe ser uno de los módulos de privacidad de datos (el usuario lo puede seleccionar a través de la opción Administrar la privacidad de los datos del módulo).
Ejemplo de entrada
<Postulantes>
<row no="1">
<FL val="Last Name">Patricia</FL>
<FL val="Email">p.boyle@zylker.com</FL>
<FL val="Data Processing Basis Details">
<consent>
<FL val="Contact through Email">true</FL>
<FL val="Contact Through Phone">false</FL>
<FL val="Contact Through Survey">false</FL>
<FL val="Contact Through Social Handles">false</FL>
<FL val="Consent Through">Email</FL>
<FL val="Consent Date">2018-04-27</FL>
<FL val="Allow Other Service">true</FL>
<FL val="Consent Remarks">Consent approved by customer</FL>
<FL val="Data Processing Basis">Obtained</FL>
</consent>
</FL>
</row>
</Leads>
API de obtención
Los cambios realizados a la API de obtención (getRecords/getRecordById/getRelatedRecords/searchRecords/searchRecordsByPDC/getSearchRecords) como consecuencia de la implementación de la nueva política de privacidad son los siguientes:
- Cuando se especifique include_pi_fields=true, entonces los campos privados del módulo serán brindados en registros API GET.
- La clave $stop_processing se proporciona en todas las respuestas GET de la API
Nota:
Los casos de uso mencionados anteriormente solo son aplicables en las siguientes circunstancias:
- La opción Ajustes de conformidad está habilitada para la organización (acción realizada por Zoho).
- El usuario habilita la opción Cumplimiento de RGPD (habilitada por el usuario).
- El módulo al que se accede debe ser uno de los módulos de privacidad de datos (el usuario lo puede seleccionar a través de la opción Administrar la privacidad de los datos del módulo).
Ejemplo de respuesta
<response uri="/crm/private/xml/Leads/getRecords">
<pi_fields>
<FL id="111111000000000863" label="Company" private="true" private_type="High" export="false"></FL>
<FL id="111111000000000873" label="Email" private="true" private_type="Low" export="false"></FL>
<FL id="111111000000000875" label="Phone" private="true" private_type="High" export="false"></FL>
<FL id="111111000000000877" label="Fax" private="true" private_type="High" export="false"></FL>
</pi_fields>
<result>
<Postulantes>
<row no="1">
<FL val="LEADID">111111000000056343</FL>
<FL val="$stop_processing">false</FL>
<FL val="SMOWNERID">111111000000031431</FL>
…
</row>
</Leads>
</result>
</response>
Respuestas con los detalles de la base de procesamiento de datos:
Ejemplo de respuesta
<FL val="Data Processing Basis Details">
<consent>
<FL val="CONSENTID">111111000000032361</FL>
<FL val="Contact through Email">true</FL>
<FL val="Contact Through Phone">false</FL>
<FL val="Contact Through Survey">false</FL>
<FL val="Contact Through Social Handles">false</FL>
<FL val="Email">null</FL>
<FL val="SMCREATORID">111111000000031431</FL>
<FL val="Created By">Boyle GDPR</FL>
<FL val="MODIFIEDBY">111111000000031431</FL>
<FL val="Modified By">Boyle GDPR</FL>
<FL val="SMOWNERID">111111000000031431</FL>
<FL val="Consent Owner">Boyle GDPR</FL>
<FL val="Created Time">2018-04-26 20:33:34</FL>
<FL val="Modified Time">2018-04-26 20:33:34</FL>
<FL val="Consent Through">Email</FL>
<FL val="Consent Date">2018-04-27</FL>
<FL val="Consent Ends On">null</FL>
<FL val="Allow Other Service">false</FL>
<FL val="Consent Remarks">Consent accepted by the customer.</FL>
<FL val="Data Processing Basis">Obtained</FL>
<FL val="Mail Sent Time">null</FL>
<FL val="Consent Lawful Details">null</FL>
<FL val="Consent Other Details">null</FL>
</consent>
</FL>
API de búsqueda de registros
NO SE PUEDE obtener los campos marcados como privados a través de criterios de búsqueda, searchCondition, searchColumn y customview. Si se busca un campo privado, se mostrará la siguiente respuesta:
Ejemplo de respuesta
<?xml version="1.0" encoding="UTF-8" ?>
<response uri="/crm/private/xml/Leads/searchRecords">
<error>
<code>4899</code>
<message>La solicitud de API no se puede completar como un campo privado determinado en criteria/searchCondition/searchColumn/customview</message>
</error>
</response>
Mensajes de error
El siguiente mensaje de error se produce en relación con las API de ingreso, actualización, upsert, convertLead y sendMail.
Ejemplo de respuesta
<response uri="/crm/private/xml/Leads/convertLead">
<error>
<code>4202</code>
<message>La solicitud de API no se puede completar dado que el registro está en Detener procesamiento</message>
</error>
</response>
Nota:
Bloqueado: se puede agregar el estado Bloqueado a un registro, el que se utiliza para bloquear o cerrar un registro específico, convirtiendo el campo "Correo electrónico" en el campo de identificación. En otras palabras, si se bloquea un registro con un determinado correo electrónico, entonces no se podrá agregar ni actualizar los registros con la misma dirección de correo electrónico.