Usando Salesforce Tooling API (Salesforce REST API)

Para la integración de Salesforce con otros sistemas, se establecen diferentes sistemas de comunicación entre los sistemas terceros y Salesforce.

Desde comunicación mediante protocolo SOAP, hasta la el nuevo API de comunicación REST – TOOLING API

La utilización del API REST es muy sencillo, simplemente es necesario logar al usuario y a continuación realizar cualquiera de las operaciones/consultas que nos proporciona este API.

A continuación se detallan los pasos

  • LOGIN

    curl https://login.salesforce.com/services/oauth2/token -d "grant_type=password" -d "client_id=" -d "client_secret=" -d "username=edu.trujillo@xxxxxx.com" -d "password=xxxxxx"

Respecto de la petición descrita arriba, es necesario tener en cuenta lo siguiente:

*  client_id y client_secret: Estos datos los sacaremos de Salesforce, desde el apartado Setup accederemos a Create -> Apps y en el subapartado connected Apps veremos las diferentes aplicaciones con permisos para conectarse contra Salesforce vía TOOLING API. En caso de no existir ninguna aplicación la crearemos.

connected-apps-rest-toolingapi-salesforce.PNG

Dentro del detalle de la aplicación encontraremos tanto el client_id como el client_secret. También es importante configurar el resto de campos de la aplicación como las IPs de confianza o el scope de Full Access

connected-apps-rest-toolingapi-salesforce-app-details

*  userame y password: Son los datos de acceso para la org.

  • ACCESO AL API

La respuesta a la petición anterior nos dará el access_token, es mediante el access_token como accederemos al resto del API. La respuesta tendrá el siguiente aspecto:

{ "access_token": "asd!123.456.789.000.123", "instance_url": "https://xxxxxxx-dev-ed.my.salesforce.com", "id": "https://login.salesforce.com/id/123/456", "token_type": "Bearer", "issued_at": "789", "signature": "vPQRRRRDssssmmmMMMMi9IavSX0="}

Con estos datos, ya seríamos capaces de realizar llamadas a cualquier función/objeto del API. Por ejemplo si se quisiera invocar la ejecución de un determinado TEST se realizaría la siguiente llamada.

curl -d '{"tests":[{"classId":"ID-CLASE_DE_TEST","testMethods": [ "NOMBRE-METODO_DE_TEST" ]}]}' -X POST https://xxxxxxx-dev-ed.my.salesforce.com/services/data/v40.0/tooling/runTestsSynchronous/ -H "Accept: application/json" -H "Content-Type: application/json;charset=UTF-8" -H 'Authorization: Bearer asd!123.456.789.000.123'

Mediante este API existe la posibilidad de realizar aplicaciones externas que ataquen a SFDC o incluso de desarrollar tareas demonio que por ejemplo cada X tiempo ejecute todos los tests de nuestra ORG para no perder de vista la calidad/porcentaje de TEST completados.

Espero que todos los lectores disfrutéis del uso del API y os ahorre futuros dolores de cabeza!

Un Saludo y a seguir trabajando!

Deja un comentario