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!"
      }
   ]
}

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.