Por nome
Para por nome, você pode opcionalmente passar uma pasta para pesquisar somente nessa pasta.
GET /rest/asset/v1/email/byName.json?name=My Email&folder={"id":1056,"type"="Folder"}
{
"success":true,
"warnings":[
],
"errors":[
],
"requestId":"3a7f#14c484de875",
"result":[
{
"id":1032,
"name":"My Email",
"description":"eCjxjIHmYPLtecoSphkvIXlrygOBDLhgyQKnsKMpiKWgSCKhkPMUFvFPUvEylmFiLjQGnffXGaiNLxAwiFOmIDvxEINoaSYascJw",
"createdAt":"2015-03-23T20:23:25Z+0000",
"updatedAt":"2015-03-23T20:23:25Z+0000",
"subject":{
"type":"Text",
"value":"ezyKBmDcyCcUIrXASrLSvRuWQgWpRZxQstJoStgMSLEBASGKMpAnVeWrgJsaVFoFJUEXhEIPpDAWpzajzingUruFpiMcRRwtoBzU"
},
"fromName":{
"type":"Text",
"value":"dAiqRNJOdY"
},
"fromEmail":{
"type":"Text",
"value":"ilZxG@testmail.com"
},
"replyEmail":{
"type":"Text",
"value":"VYsCS@testmail.com"
},
"folder":{
"type":"folder",
"value":1056
},
"operational":false,
"textOnly":false,
"publishToMSI":false,
"webView":false,
"status":"draft",
"template":32,
"workspace":"Default",
"isOpenTrackingDisabled": false,
"version": 2,
"autoCopyToText": true,
"ccFields": [
{
"attributeId": "157",
"objectName": "lead",
"displayName": "Lead Owner Email Address",
"apiName": null
}
],
"preHeader": "My awesome preheader!"
}
]
}
Navegar
A navegação de pastas funciona como outros pontos de extremidade de navegação da API de ativos e permite a filtragem opcional em status
, folder
, earliestUpdatedAt
/latestUpdatedAt
, maxReturn
e offset
. status
está Aprovado ou Rascunho. folder
é um objeto JSON contendo id
e type
. maxReturn
é um número inteiro que limita o número de resultados (o padrão é 20, o máximo é 200) e offset
é um número inteiro que pode ser usado com maxReturn
para ler grandes conjuntos de resultados (o padrão é 0).
GET /rest/asset/v1/emails.json?maxReturn=3&folder={"id":341,"type":"Folder"}
{
"success": true,
"warnings": [],
"errors": [],
"requestId": "17576#14e22eb29cb",
"result": [
{
"id": 2137,
"name": "Social Sharing in Email",
"description": "",
"createdAt": "2011-03-04T17:12:42Z+0000",
"updatedAt": "2011-03-04T19:04:36Z+0000",
"url": null,
"subject": {
"type": "Text",
"value": "Republish this content to your favorite social site!"
},
"fromName": {
"type": "Text",
"value": "Demo Master Marketo"
},
"fromEmail": {
"type": "Text",
"value": "demomaster@marketo.com"
},
"replyEmail": {
"type": "Text",
"value": "demomaster@marketo.com"
},
"folder": {
"type": "Folder",
"value": 341,
"folderName": "Social Media"
},
"operational": false,
"textOnly": false,
"publishToMSI": false,
"webView": true,
"status": "approved",
"template": null,
"workspace": "Default",
"isOpenTrackingDisabled": false,
"version": 2,
"autoCopyToText": true,
"ccFields": [
{
"attributeId": "157",
"objectName": "lead",
"displayName": "Lead Owner Email Address",
"apiName": null
}
],
"preHeader": "My awesome preheader!"
}
]
}
Conteúdo da consulta
Você pode recuperar as seções editáveis disponíveis para um email consultando seu conteúdo e, opcionalmente, filtrar o status para obter as seções das versões Aprovado ou Rascunho.
GET /rest/asset/v1/email/1356/content.json
{
"success":true,
"warnings":[ ],
"errors":[ ],
"requestId":"8a44#14c484de8c8",
"result":[
{
"htmlId":"edit_text_3",
"value":[
{
"type":"HTML",
"value":"Content from testCreateEmailTemplate2"
},
{
"type":"Text",
"value":"Content from testCreateEmailTemplate2"
}
],
"contentType":"Text"
}
]
}
As seções podem retornar como tendo um tipo de dynamicContent. Consulte a seção Conteúdo dinâmico para obter mais informações.
Campos de Consulta CC
Você pode recuperar o conjunto de campos habilitado para Email CC na instância de destino chamando o ponto de extremidade Obter Campos de Email CC.
GET /rest/asset/v1/email/ccFields.json
{
"success":true,
"errors":[ ],
"requestId":"e54b#16796fdbd4e",
"warnings":[ ],
"result":[
{
"attributeId":"157",
"objectName":"lead",
"displayName":"Lead Owner Email Address",
"apiName":"leadOwnerEmailAddress"
},
{
"attributeId":"396",
"objectName":"company",
"displayName":"Account Owner Email Address",
"apiName":"accountOwnderEmailAddress"
}
]
}
Criar e atualizar
Os emails são criados com base em um modelo de origem e têm uma lista de seções editáveis derivadas de cada elemento de HTML separado nesse modelo com uma classe de "mktEditable" e uma propriedade de id exclusiva. A criação de um email com a API cria um registro com base no modelo, juntamente com quaisquer metadados adicionais transmitidos. Os seguintes parâmetros são necessários para uma chamada Criar email bem-sucedida: nome, modelo, pasta.
Os seguintes parâmetros são opcionais para criação: subject
, fromName
, fromEmail
, replyEmail
, operational
, isOpenTrackingDisabled
. Se não for definido, subject
ficará vazio, fromName
, fromEmail
e replyEmail
será definido para os padrões de instância, e operational
e isOpenTrackingDisabled
será falso. isOpenTrackingDisabled
determina se o pixel de rastreamento aberto é incluído em um email quando enviado.
POST /rest/asset/v1/emails.json
Content-Type: application/x-www-form-urlencoded
name=My New Email 02 - deverly&folder={"id":1017,"type":"Program"}&template=24&description=This is a test email&subject=Hey There&fromName=SomeBody&fromEmail=somebody@marketo.com&replyEmail=somebody@marketo.com
{
"success": true,
"warnings": [],
"errors": [],
"requestId": "f557#14e22db88d9",
"result": [
{
"id": 2212,
"name": "My New Email 02 - deverly",
"description": "This is a test email",
"createdAt": "2015-06-23T23:58:09Z+0000",
"updatedAt": "2015-06-23T23:58:09Z+0000",
"url": "https://app-abm.marketo.com/#EM2212A1LA1",
"subject": {
"type": "Text",
"value": "Hey There"
},
"fromName": {
"type": "Text",
"value": "SomeBody"
},
"fromEmail": {
"type": "Text",
"value": "somebody@marketo.com"
},
"replyEmail": {
"type": "Text",
"value": "somebody@marketo.com"
},
"folder": {
"type": "Program",
"value": 1017,
"folderName": "Landing Page - promotion"
},
"operational": false,
"textOnly": false,
"publishToMSI": false,
"webView": false,
"status": "draft",
"template": 24,
"workspace": "Default",
"isOpenTrackingDisabled": false,
"version": 2,
"autoCopyToText": false,
"ccFields": null,
"preHeader": null
}
]
}
A atualização de um registro de email pode ser feita por id. Isso permite atualizar a descrição ou o nome do email.
POST /rest/asset/v1/email/{id}.json
Content-Type: application/x-www-form-urlencoded
description=This is an Email&name=Updated Email
{
"success": true,
"warnings": [],
"errors": [],
"requestId": "f557#14e22db88d9",
"result": [
{
"id": 2212,
"name": "Updated Email",
"description": "This is an Email",
"createdAt": "2015-06-23T23:58:09Z+0000",
"updatedAt": "2015-06-23T23:58:09Z+0000",
"url": "https://app-abm.marketo.com/#EM2212A1LA1",
"subject": {
"type": "Text",
"value": "Hey There"
},
"fromName": {
"type": "Text",
"value": "SomeBody"
},
"fromEmail": {
"type": "Text",
"value": "somebody@marketo.com"
},
"replyEmail": {
"type": "Text",
"value": "somebody@marketo.com"
},
"folder": {
"type": "Program",
"value": 1017,
"folderName": "Landing Page - promotion"
},
"operational": false,
"textOnly": false,
"publishToMSI": false,
"webView": false,
"status": "draft",
"template": 24,
"workspace": "Default",
"isOpenTrackingDisabled": false,
"version": 2,
"autoCopyToText": false,
"ccFields": null,
"preHeader": null
}
]
}
Seção de conteúdo, tipo e atualização
O conteúdo de cada seção de um email deve ser atualizado individualmente, além do assunto, fromName, fromEmail e replyEmail, que são atualizados usando o ponto de extremidade Atualizar Conteúdo de Email. Ao usar esse endpoint, esses valores também podem ser definidos para usar conteúdo dinâmico em vez de conteúdo estático. Cada parâmetro é um objeto JSON de tipo/valor, em que o tipo é "Texto" ou "Conteúdo dinâmico" e o valor é o valor de texto apropriado ou a ID da segmentação a ser usada para o conteúdo dinâmico. Os dados são transmitidos como POST x-www-form-urlencoded, não como JSON. isOpenTrackingDisabled pode ser definido com a Atualização de conteúdo de email
POST /rest/asset/v1/email/{id}/content.json
Content-Type: application/x-www-form-urlencoded
subject={"type":"Text","value":"Gettysburg Address"}&fromEmail={"type":"Text","value":"abe@testmail.com"}&fromName={"type":"Text","value":"Abe Lincoln"}&replyTO={"type":"Text","value":"replies@testmail.com"}
{
"success":true,
"warnings":[ ],
"errors":[ ],
"requestId":"c865#14a1832afac",
"result":[
{
"id":1356
}
]
}
Se estiver configurando uma seção para usar conteúdo dinâmico, a ID da seção deve ser recuperada por meio da chamada Obter conteúdo de email.
Atualizar seção editável
As seções editáveis são atualizadas por seus htmlIds individuais. Somente a id do email e htmlId da seção são necessários como parâmetros de caminho, enquanto type, value e textValue são opcionais. O tipo pode ser "Text", "DynamicContent" ou "Snippet" e afetará o que é transmitido no valor. Se o tipo for Texto, o valor será uma string contendo o conteúdo HTML da seção. Se for DynamicContent, será um bloco JSON, com três membros, tipo, que será "DynamicContent", segmentação que é a ID da segmentação a ser usada para o conteúdo, e padrão, que é uma string que contém o conteúdo HTML padrão da seção. O parâmetro opcional textValue é uma string que contém a versão de texto da seção. Os dados são transmitidos como POST x-www-form-urlencoded, não como JSON.
POST /rest/asset/v1/email/{id}/content/{htmlId}.json
Content-Type: application/x-www-form-urlencoded
type=Text&value=<h1>Hello World!</h1>&textValue=Hello World!
{
"success": true,
"warnings": [ ],
"errors": [ ],
"requestId": "155ac#14d58dfa9ad",
"result": [
{
"id": 2179
}
]
}
Observação: se a cópia automática no texto estiver desativada para um trecho incorporado em um email, o valor de HTML do trecho for atualizado e, em seguida, a versão de texto de outra seção no email for atualizada, a versão de texto do email terá o texto refletindo o valor atualizado do HTML do trecho, não a versão anterior, como seria esperado com a cópia automática desativada.