Fragmentos
Referencia de extremo de fragmento
Los fragmentos de código son componentes de HTML reutilizables que se pueden incrustar en correos electrónicos y páginas de destino y que se pueden segmentar para obtener contenido dinámico. Los fragmentos de código no tienen plantillas asociadas y se pueden crear e implementar dentro de otros recursos en Marketo.
Consulta
La consulta de fragmentos sigue el patrón estándar de los recursos, excepto que no tiene un método By Name. Los métodos By Id y Browse permiten el uso del campo de estado para recuperar versiones aprobadas o en borrador del fragmento.
Por ID
GET /rest/asset/v1/snippet/{id}.json?status=approved
{
"success":true,
"warnings":[ ],
"errors":[ ],
"requestId":"fa0f#14b04375f0a",
"result":[
{
"id":83,
"name":"BYkHVJEedl",
"description":"yzSLvNFyrmeVmyLzqryUfGlDOJTnvyyfsQTXPDCGdCwcWUlfoCNApUqYgwZGElrUFoxBHJcMdXdqTKvtjtfsmPgokyRgVLeHyJCw",
"createdAt":"2015-01-19T22:01:52Z+0000",
"updatedAt":"2015-01-19T22:01:52Z+0000",
"folder":{
"type":"Folder",
"value":662
},
"status":"approved",
"workspace":"Default"
}
]
}
Examinar
GET /rest/asset/v1/snippets.json?maxReturn=3
{
"success":true,
"warnings":[ ],
"errors":[ ],
"requestId":"f9cc#14b04376181",
"result":[
{
"id":23,
"name":"ADJvMLBMpS",
"description":"XkzFUVLXVHrojLGLJVLPpwguOXuDvhAqaaSkBUVzgHrgDhqqRzyXlULIXSHJvfBHjCSaMwjyEdrdxcjFCRoNFVvdBBTDfSrUJzaR",
"createdAt":"2015-01-15T20:10:39Z+0000",
"updatedAt":"2015-01-15T20:10:39Z+0000",
"url": null,
"folder":{
"type":"Folder",
"value":620,
"folderName": "Snippets"
},
"status":"draft",
"workspace":"Default"
},
{
"id":46,
"name":"Biswa Snippet",
"description":"",
"createdAt":"2015-01-16T05:18:55Z+0000",
"updatedAt":"2015-01-16T05:19:27Z+0000",
"url": null,
"folder":{
"type":"Folder",
"value":630,
"folderName": "Snippets"
},
"status":"draft",
"workspace":"Default"
},
{
"id":12,
"name":"dJJQkKbUYq",
"description":"VXuHkYMREHrhxUSgYbKfaNeLisdFxOromCXQNrgmModvkuoyZdQjtAbXxDUbBvoDVCZmAVbasiHyWoWfTwgrGxnzpKepGrAUvfen",
"createdAt":"2015-01-15T05:12:33Z+0000",
"updatedAt":"2015-01-15T05:12:33Z+0000",
"url": null,
"folder":{
"type":"Folder",
"value":615,
"folderName": "Snippets"
},
"status":"draft",
"workspace":"Default"
}
]
}
Contenido de consulta
El contenido de un fragmento determinado se puede recuperar en función del ID del fragmento.
GET /rest/asset/v1/snippet/{id}/content.json
{
"success":true,
"warnings":[ ],
"errors":[ ],
"requestId":"5c50#14b04376159",
"result":[
{
"type":"HTML",
"content":"draft testUpdateSnippetContent1 HTML Content"
},
{
"type":"Text",
"content":"draft testUpdateSnippetContent1 Text Content"
}
]
}
La llamada devuelve una lista de secciones de contenido, que constan de secciones de tipo HTML o tipo DynamicContent y, opcionalmente, una sección con un tipo de Text.
Crear y actualizar
Los fragmentos de código siguen el complejo patrón de creación de recursos, donde la llamada a crear fragmento y su contenido se realizan por separado, por lo que la primera llamada debe realizarse al extremo de creación, con una descripción opcional. Los datos se pasan como x-www-form-urlencoded, no como JSON.
POST /rest/asset/v1/snippets.json
Content-Type: application/x-www-form-urlencoded
name=Test Snippet 09 - deverly&folder={"id":395,"type":"Folder"}&description=This is a test snippet
{
"success": true,
"warnings": [],
"errors": [],
"requestId": "bd57#14e231ee3a1",
"result": [
{
"id": 13,
"name": "Test Snippet 09 - deverly",
"description": "This is a test snippet",
"createdAt": "2015-06-24T01:11:43Z+0000",
"updatedAt": "2015-06-24T01:11:43Z+0000",
"url": "https://app-abm.marketo.com/#SN13B2ZN395",
"folder": {
"type": "Folder",
"value": 395,
"folderName": "Snippets"
},
"status": "draft",
"workspace": "Default"
}
]
}
La adición o sustitución de contenido en un fragmento se realiza mediante un ID. El contenido puede ser de los tipos Texto, HTML o Contenido dinámico. Si el tipo es Texto, el parámetro de contenido es el punto de conexión de texto sin formato, mientras que si es HTML, es el texto de marcado deseado. Si el tipo se establece en DynamicContent, el parámetro de contenido debe establecerse en el ID de la segmentación que se asociará al fragmento de código.
POST /rest/asset/v1/snippet/{id}/content.json
Content-Type: application/x-www-form-urlencoded
type=HTML&content=draft testUpdateSnippetContent1 HTML Content
{
"success":true,
"warnings":[ ],
"errors":[ ],
"requestId":"73d9#14b04376139",
"result":[
{
"id":82
}
]
}
La actualización de metadatos también se realiza mediante el identificador. Solo se pueden actualizar el nombre y la descripción:
POST /rest/asset/v1/snippet/{id}.json
Content-Type: application/x-www-form-urlencoded
name=Test Snippet&description=New Description
{
"success":true,
"warnings":[ ],
"errors":[ ],
"requestId":"9ad0#14b043762b1",
"result":[
{
"id":82,
"name":"Test Snippet",
"description":"New Description",
"createdAt":"2015-01-19T22:01:52Z+0000",
"updatedAt":"2015-01-19T22:01:53Z+0000",
"url": "https://app-abm.marketo.com/#SN3B2ZN395",
"folder":{
"type":"Folder",
"value":662,
"folderName": "Snippets"
},
"status":"draft",
"workspace":"Default"
}
]
}
Contenido dinámico
Los fragmentos de código siguen el patrón estándar para el contenido dinámico, pero solo representan una sección de contenido completa por sí mismos, por lo que cada fragmento puede contener solo una sección dinámica, con una lista de secciones internas opcionalmente para cada segmento en la segmentación utilizada. El contenido dinámico se puede consultar solo mediante el ID de fragmento, ya que solo puede haber una sección de contenido dinámico en un fragmento.
GET /rest/asset/v1/snippet/{id}/dynamicContent.json
{
"success": true,
"warnings": [ ],
"errors": [ ],
"requestId": "ae3#14c2b499111",
"result": [
{
"createdAt": "2015-03-13T06:24:35Z+0000",
"updatedAt": "2015-03-17T20:29:42Z+0000",
"id": 70,
"segmentation": 1001,
"content": [
{
"id": "Nzk*",
"segmentId": 1001,
"segmentName": "Area",
"content": "Sample HTML for Area",
"type": "HTML"
},
{
"id": "Nzk*",
"segmentId": 1001,
"segmentName": "Area",
"content": "Sample Text for Area",
"type": "Text"
},
{
"id": "Nzk*",
"segmentId": 1002,
"segmentName": "Default",
"content": "Sample HTML for Default",
"type": "HTML"
},
{
"id": "Nzk*",
"segmentId": 1002,
"segmentName": "Default",
"content": "Sample Text for Default",
"type": "Text"
}
]
}
]
}
Aprobación
Los fragmentos de código tienen puntos finales disponibles para aprobar, desaprobar y descartar borradores, que siguen el patrón de recursos estándar. Un fragmento debe estar en estado de borrador para que se apruebe.
Aprobar
POST /rest/asset/v1/snippet/{id}/approveDraft.json
{
"success": true,
"warnings": [ ],
"errors": [ ],
"requestId": "11903#14db1af2f6c",
"result": [
{
"id": 3,
"name": "Test Snippet 02 - deverly",
"description": "hey this is a test snippet!",
"createdAt": "2015-06-02T00:32:37Z+0000",
"updatedAt": "2015-06-02T00:32:37Z+0000",
"url": "https://app-abm.marketo.com/#SN3B2ZN395",
"folder": {
"type": "Folder",
"value": 395,
"folderName": "Snippets"
},
"status": "approved",
"workspace": "Default"
}
]
}
Desaprobar
El extremo unapprove solo se puede usar en fragmentos aprobados.
POST /rest/asset/v1/snippet/{id}/unapprove.json
{
"success": true,
"warnings": [ ],
"errors": [ ],
"requestId": "7d20#14db1c7a2a9",
"result": [
{
"id": 89,
"name": "Test Snippet 01 - deverly",
"description": "",
"createdAt": "2015-05-15T19:01:22Z+0000",
"updatedAt": "2015-05-15T19:07:07Z+0000",
"url": "https://app-abm.marketo.com/#SN1B2ZN395",
"folder": {
"type": "Folder",
"value": 395,
"folderName": "Snippets"
},
"status": "draft",
"workspace": "Default"
}
]
}
Descartar borrador
El fragmento debe estar en estado de borrador para que se descarte. Un fragmento aprobado no se puede descartar.
POST /rest/asset/v1/snippet/{id}/discardDraft.json
{
"success":true,
"warnings":[ ],
"errors":[ ],
"requestId":"674c#14b043760de",
"result":[
{
"id":88
}
]
}
Clonar
Clonar un fragmento con la API es sencillo y sigue el patrón estándar, con un nombre, un identificador del fragmento y la carpeta originales, así como una descripción opcional. Si no existe ninguna versión aprobada, se clona la versión en borrador.
POST /rest/asset/v1/snippet/{id}/clone.json
Content-Type: application/x-www-form-urlencoded
name=Test Snippet Clone 3 - deverly&folder={"id":395,"type":"Folder"}&description=This is a test snippet
{
"success": true,
"warnings": [],
"errors": [],
"requestId": "21c9#14e2327e33d",
"result": [
{
"id": 14,
"name": "Test Snippet Clone 3 - deverly",
"description": "This is a test snippet",
"createdAt": "2015-06-24T01:21:33Z+0000",
"updatedAt": "2015-06-24T01:21:33Z+0000",
"url": "https://app-abm.marketo.com/#SN14B2ZN395",
"folder": {
"type": "Folder",
"value": 395,
"folderName": "Snippets"
},
"status": "draft",
"workspace": "Default"
}
]
}