Base de datos de leads

Las API de base de datos de posibles clientes de Marketo son las API que Marketo proporciona con mayor frecuencia, ya que permiten el intercambio de datos de personas y datos relacionados con personas de Marketo, como actividades, oportunidades y empresas.

Objetos

Los objetos de base de datos de posibles clientes incluyen:

  • Clientes potenciales
  • Compañías/Cuentas
  • Cuentas nombradas
  • Oportunidades
  • OpportunityRoles
  • SalesPersons
  • Objetos personalizados
  • Actividades
  • Pertenencia a lista y programa

La mayoría de estos objetos incluyen al menos los métodos Create, Read, Update y Delete. También se incluye un método "Describe" que proporciona una lista de los campos disponibles para cada tipo, y una lista de los campos utilizados para la deduplicación (para los objetos que no son de cliente potencial), y qué campos se pueden buscar para la recuperación de registros. El conjunto más completo se proporciona para clientes potenciales, ya que tienen la mayor variedad de capacidades dentro de las aplicaciones de Marketo.

API

Para obtener una lista completa de los extremos de la API de la base de datos de posibles clientes, incluidos los parámetros y la información de modelado, consulte la Referencia de extremo de la API de la base de datos de posibles clientes.

En las instancias con una integración nativa de CRM habilitada (Microsoft Dynamics o Salesforce.com), las API Compañía, Oportunidad, Rol de oportunidad y Vendedor están deshabilitadas. Los registros se administran mediante el CRM cuando están habilitados y no se puede acceder ni actualizar a través de las API de Marketo.

  • Tamaño máximo del lote (estándar): 300 registros
  • Tamaño máximo del lote (masivo): archivo de 10 MB
  • Tamaño predeterminado del lote: 300 registros
  • Encabezado de tipo de contenido (estándar): application/json
  • Encabezado de tipo de contenido (masivo): multipart/form-data

Describir

Se proporciona una descripción de la API de para posibles clientes, empresas, oportunidades, funciones, vendedores y objetos personalizados. Al llamar a esto, se recuperan los metadatos del objeto y una lista de campos disponibles para actualizar y consultar. Describir es una parte crucial del diseño de una integración adecuada con Marketo. Proporciona metadatos enriquecidos sobre cómo se puede interactuar con los objetos y cómo no, así como sobre cómo se pueden crear, actualizar y consultar. Aparte de Describir posibles clientes, cada uno de ellos devuelve una lista de claves disponibles para deduplication en el parámetro de respuesta dedupeFields. Hay disponible una lista de campos como claves para consultar en el parámetro de respuesta searchableFields.

GET /rest/v1/opportunities/roles/describe.json
{
   "requestId":"185d6#14b51985ff0",
   "success":true,
   "result":[
      {
         "name":"opportunityRole",
         "displayName":"Opportunity Role",
         "createdAt":"2015-02-03T22:36:23Z",
         "updatedAt":"2015-02-03T22:36:24Z",
         "idField":"marketoGUID",
         "dedupeFields":[
            "externalOpportunityId",
            "leadId",
            "role"
         ],
         "searchableFields":[
            [
               "externalOpportunityId",
               "leadId",
               "role"
            ],
            [
               "marketoGUID"
            ],
            [
               "leadId"
            ],
            [
               "externalOpportunityId"
            ]
         ],
         "fields":[
            {
               "name":"marketoGUID",
               "displayName":"Marketo GUID",
               "dataType":"string",
               "length":36,
               "updateable":false
            },
            {
               "name":"externalOpportunityId",
               "displayName":"External Opportunity Id",
               "dataType":"string",
               "length":50,
               "updateable":false
            },
            {
               "name":"leadId",
               "displayName":"Lead Id",
               "dataType":"integer",
               "updateable":false
            },
            {
               "name":"role",
               "displayName":"Role",
               "dataType":"string",
               "length":50,
               "updateable":false
            },
            {
               "name":"isPrimary",
               "displayName":"Is Primary",
               "dataType":"boolean",
               "updateable":true
            },
            {
               "name":"externalCreatedDate",
               "displayName":"External Created Date",
               "dataType":"datetime",
               "updateable":true
            }
         ]
      }
   ]
}

En este ejemplo, dedupeFields es en realidad una clave compuesta. Esto significa que en futuras actualizaciones y creaciones, al usar el modo dedupeFields, debe incluir los tres de externalOpportunityId, leadId y role para cada rol. La matriz searchableFields también proporciona la lista de campos disponibles para consultar registros de roles. Esto también incluye la clave compuesta de externalOpportunityId, leadId y role.

También hay un parámetro de respuesta de campos, que proporcionará el nombre de cada campo, el displayName tal como aparece en la interfaz de usuario de Marketo, el tipo de datos del campo, si se puede actualizar después de la creación y la longitud del campo si corresponde.

Consulta

Todos los objetos de la base de datos de posibles clientes comparten un patrón básico para consultar claves simples, donde solo se hace referencia a un campo.

GET /rest/v1/{type}.json?filterType={field to query}&filterValues={comma-separated list of possible values}

Para todos los objetos, excepto los posibles clientes, puede seleccionar su {field to query} de los searchableFields de la llamada descrita correspondiente y componer una lista separada por comas de hasta 300 valores. También existen estos parámetros de consulta opcionales:

  • batchSize: un recuento entero del número de resultados que se van a devolver. El valor predeterminado y máximo es 300.
  • nextPageToken: token devuelto por una llamada anterior para paginación. Consulte Tokens de paginación para obtener más información.
  • fields: lista de nombres de campo separados por comas que se devolverán para cada registro. Consulte la descripción correspondiente para obtener una lista de los campos válidos. Si se solicita un campo en particular, pero no se devuelve, el valor se entiende como nulo.
  • _method: se usa para enviar consultas mediante el método HTTP del POST. Consulte _method=GET para ver su uso.

Para ver un ejemplo rápido, veamos las oportunidades de consulta:

GET /rest/v1/opportunities.json?filterType=idField&filterValues=dff23271-f996-47d7-984f-f2676861b5fa&dff23271-f996-47d7-984f-f2676861b5fc,dff23271-f996-47d7-984f-f2676861b5fb
{
   "requestId":"e42b#14272d07d78",
   "success":true,
   "result":[
      {
         "seq":0,
         "marketoGUID":"dff23271-f996-47d7-984f-f2676861b5fa ",
         "externalOpportunityId":"19UYA31581L000000",
         "name":"Chairs",
         "description":"Chairs",
         "amount":"1604.47",
         "source":"Inbound Sales Call/Email"
      },
      {
         "seq":1,
         "marketoGUID":"dff23271-f996-47d7-984f-f2676861b5fc ",
         "externalOpportunityId":"29UYA31581L000000",
         "name":"Big Dog Day Care-Phase12",
         "description":"Big Dog Day Care-Phase12",
         "amount":"1604.47",
         "source":"Email"
      }
   ]
}

El filterType especificado en esta llamada es "idField" y no "marketoGUID". Tanto este como "dedupeFields" son casos especiales, en los que el campo correspondiente al idField o dedupeFields se puede asignar un alias de este modo. "marketoGUID" sigue siendo el campo de búsqueda resultante en la llamada, pero no se establece explícitamente en la llamada. Los campos o conjuntos de campos indicados por idField y dedupeFields de una descripción de objeto siempre serán válidos filterTypes para una consulta. Esta llamada busca los registros que coinciden con los GUID incluidos en filterValues y devuelve todos los registros coincidentes. Si no se encuentran registros utilizando este método, la respuesta indicará éxito. Sin embargo, la matriz de resultados estará vacía, ya que la búsqueda se ejecutó correctamente, pero no hubo registros que devolver.

Si el conjunto de registros de la consulta supera los 300 o el batchSize que se especificó, el que sea menor, la respuesta tendrá un miembro moreResult con un valor true y un nextPageToken, que se pueden incluir en una llamada posterior para recuperar más del conjunto. Consulte Tokens de paginación para obtener más información.

URI largos

A veces, como cuando se consulta por GUID, el URI puede ser largo y superar los 8 KB permitidos por el servicio REST. En este caso, debe utilizar el método POST HTTP en lugar de GET y agregar un parámetro de consulta _method=GET. Además, el resto de los parámetros de consulta deben pasarse en el cuerpo del POST como una cadena "application/x-www-form-urlencoded" y pasar el encabezado Content-type asociado.

POST /rest/v1/opportunities.json?_method=GET
Content-Type: application/x-www-form-urlencoded
filterType=idField&filterValues=dff23271-f996-47d7-984f-f2676861b5fa&dff23271-f996-47d7-984f-f2676861b5fc,dff23271-f996-47d7-984f-f2676861b5fb,544fb7f5-2ddf-4fca-ae32-7e6ef1415e9f,f1ba41a2-69d1-4a35-9807-0e159d66f2c9,f7521272-3331-4a89-a768-222baff2f894

Además de los URI largos, este parámetro también es necesario al consultar claves compuestas.

Claves compuestas

El patrón para consultar claves compuestas es diferente de las claves simples, ya que requiere enviar un POST con un cuerpo JSON. Esto no es necesario en todos los casos, solo en aquellos en los que se usa la opción dedupeFields con varios campos como filterType. Actualmente, las claves compuestas solo se utilizan en funciones de oportunidad y en algunos objetos personalizados. Veamos un ejemplo de una consulta para roles de oportunidad con la clave compuesta de dedupeFields:

POST /rest/v1/opportunities/roles.json?_method=GET
{
   "filterType":"dedupeFields",
   "fields":[
      "marketoGuid",
      "externalOpportunityId",
      "leadId",
      "role"
   ],
   "input":[
      {
        "externalOpportunityId":"Opportunity1",
        "leadId": 1,
        "role": "Captain"
      },
      {
        "externalOpportunityId":"Opportunity2",
        "leadId": 1872,
        "role": "Commander"
      },
      {
        "externalOpportunityId":"Opportunity3",
        "leadId": 273891,
        "role": "Lieutenant Commander"
      }
   ]
}

La estructura del objeto JSON es básicamente plana y todos los parámetros de consulta de consultas con claves simples son miembros válidos, excepto filterValues. En lugar de un valor de filtro, existe una matriz de "entrada" de objetos JSON, cada uno de los cuales debe tener un miembro para cada uno de los campos de la clave compuesta; en este caso, son externalOpportunityId, leadId y role. Esto ejecuta una consulta para roles, contra las entradas proporcionadas y devuelve los resultados coincidentes. Si la respuesta devuelve un parámetro con moreResult=true y un nextPageToken, debe incluir todas las entradas originales y el nextPageToken para que la consulta se ejecute correctamente.

Crear y actualizar

Las creaciones y actualizaciones para los registros de la base de datos de posibles clientes se realizan mediante publicaciones con cuerpos JSON. La interfaz de Oportunidades, Funciones, Objetos personalizados, Compañías y Vendedores es la misma. La interfaz del posible cliente es un poco diferente y puede leer más sobre ella específicamente.

El único parámetro requerido es una matriz denominada input que contiene hasta 300 objetos, cada uno con los campos que desea insertar o actualizar como miembros. Opcionalmente, también puede incluir un parámetro action que puede ser uno de: createOnly, updateOnly o createOrUpdate. Si se omite la acción, el modo predeterminado es createOrUpdate. dedupeBy es otro parámetro opcional que se puede usar cuando action se establece en createOnly o createOrUpdate.  dedupeBy puede ser idField o dedupeFields. Si se selecciona idField, entonces el idField que aparece en la descripción se usa para la deduplicación y debe incluirse en cada registro. El modo idField no es compatible con el modo createOnly. Si se seleccionan dedupeFields, entonces se usan los dedupeFields enumerados en la descripción del objeto, y cada uno debe incluirse en cada registro. Si se omite el parámetro dedupeBy, el modo predeterminado es dedupeFields.

Al pasar una lista de valores de campo, se escribe un valor de null o una cadena vacía en la base de datos como null.

POST /rest/v1/opportunities.json
{
   "action":"createOrUpdate",
   "dedupeBy":"dedupeFields",
   "input":[
      {
         "externalOpportunityId":"19UYA31581L000000",
         "name":"Chairs",
         "description":"Chairs",
         "amount":"1604.47",
         "source":"Inbound Sales Call/Email"
      },
      {
         "externalOpportunityId":"29UYA31581L000000",
         "name":"Big Dog Day Care-Phase12",
         "description":"Big Dog Day Care-Phase12",
         "amount":"1604.47",
         "source":"Email"
      }
   ]
}
{
   "requestId":"e42b#14272d07d78",
   "success":true,
   "result":[
      {
         "seq":0,
         "status":"updated",
         "marketoGUID":"dff23271-f996-47d7-984f-f2676861b5fb"
      },
      {
         "seq":1,
         "status":"created",
         "marketoGUID":"cff23271-f996-47d7-984f-f2676861b5fb"
      }
   ]
}

Aparte de la API de posibles clientes, las llamadas para crear o actualizar objetos de base de datos de posibles clientes devuelven un campo seq en cada objeto de la matriz result. El número que aparece corresponde al orden del registro actualizado en la solicitud realizada. Cada elemento devuelve el valor de idField para el tipo de objeto y un status. El campo de estado indica uno de "creado", "actualizado" o "omitido".  Si se omite el estado, también habrá una matriz correspondiente de "motivos" con uno o más objetos de motivo que incluya un código y un mensaje, lo que indica por qué se omitió un registro. Consulte códigos de error para obtener más información.

Eliminar

La interfaz para las eliminaciones es estándar para los objetos de base de datos de posibles clientes, además de los posibles clientes. Aparte de la entrada, solo hay un parámetro obligatorio deleteBy, que puede tener un valor de idField o dedupeFields. Veamos cómo se eliminan algunos objetos personalizados.

POST /rest/v1/customobjects/{name}/delete.json
{
   "deleteBy":"dedupeFields",
   "input":[
      {
         "vin":"19UYA31581L000000"
      },
      {
         "vin":"29UYA31581L000000"
      },
      {
         "vin":"39UYA31581L000000"
      }
   ]
}
{
   "requestId":"e42b#14272d07d78",
   "success":true,
   "result":[
      {
         "seq":0,
         "marketoGUID":"dff23271-f996-47d7-984f-f2676861b5fb",
         "status": "deleted"
      },
      {
         "seq":1,
         "marketoGUID":"da42707c-4dc4-4fc1-9fef-f30a3017240a",
         "status": "deleted"
      },
      {
         "seq":2,
         "status": "skipped"
         "reasons":[
            {
               "code":"1013",
               "message":"Object not found"
            }
         ]
      }
   ]
}

seq, status, marketoGUID y reasons ya deberían estar familiarizados con usted.

Para obtener más información sobre cómo trabajar con operaciones CRUD para cada tipo de objeto individual, consulte sus páginas respectivas.

recommendation-more-help
bb269a6d-047a-4bf7-9acd-23ad9a63dc59