Crear un flujo de datos para Mailchimp Members mediante la API de Flow Service
El siguiente tutorial lo acompañará durante los pasos para crear una conexión de origen y un flujo de datos para llevar datos de Mailchimp Members a Platform mediante la Flow Service API.
Requisitos previos
Antes de poder conectar Mailchimp a Adobe Experience Platform mediante el código de actualización de OAuth 2, primero debe recuperar el token de acceso de MailChimp… Consulte la Mailchimp guía de OAuth 2 para obtener instrucciones detalladas sobre cómo encontrar el token de acceso.
Crear una conexión base base-connection
Una vez que haya recuperado sus credenciales de autenticación Mailchimp, ahora puede iniciar el proceso de creación del flujo de datos para llevar los datos de Mailchimp Members a Platform. El primer paso para crear un flujo de datos es crear una conexión base.
Una conexión base retiene información entre el origen y Platform, incluidas las credenciales de autenticación del origen, el estado actual de la conexión y el ID único de conexión base. El ID de conexión base le permite explorar y navegar por archivos desde el origen e identificar los elementos específicos que desea introducir, incluida la información sobre sus tipos de datos y formatos.
Mailchimp admite tanto la autenticación básica como el código de actualización de OAuth 2. Consulte los siguientes ejemplos para obtener instrucciones sobre cómo autenticarse con cualquiera de los tipos de autenticación.
Crear una conexión base Mailchimp mediante autenticación básica
Para crear una conexión base de Mailchimp con autenticación básica, realice una solicitud de POST al extremo /connections
de la API Flow Service y proporcione las credenciales para authorizationTestUrl
, username
y password
.
Formato de API
POST /connections
Solicitud
La siguiente solicitud crea una conexión base para Mailchimp:
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/connections' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
-d '{
"name": "Mailchimp base connection with basic authentication",
"description": "Mailchimp Members base connection with basic authentication",
"connectionSpec": {
"id": "2e8580db-6489-4726-96de-e33f5f60295f",
"version": "1.0"
},
"auth": {
"specName": "Basic Authentication",
"params": {
"authorizationTestUrl": "https://login.mailchimp.com/oauth2/metadata",
"username": "{USERNAME}",
"password": "{PASSWORD}"
}
}
}'
name
description
connectionSpec.id
auth.specName
auth.params.authorizationTestUrl
auth.params.username
auth.params.password
Respuesta
Una respuesta correcta devuelve la conexión base recién creada, incluido su identificador de conexión único (id
). Este ID es necesario para explorar la estructura de archivos y el contenido de origen en el siguiente paso.
{
"id": "4cea039f-f1cc-4fa5-9136-db8dd4c7fbfa",
"etag": "\"4000cff7-0000-0200-0000-6154bad60000\""
}
Crear una conexión base Mailchimp mediante el código de actualización de OAuth 2
Para crear una conexión base Mailchimp con el código de actualización de OAuth 2, realice una solicitud de POST al extremo /connections
y proporcione las credenciales para authorizationTestUrl
y accessToken
.
Formato de API
POST /connections
Solicitud
La siguiente solicitud crea una conexión base para Mailchimp:
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/connections' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
-d '{
"name": "MailChimp base connection with OAuth 2 refresh code",
"description": "MailChimp Members base connection with OAuth 2 refresh code",
"connectionSpec": {
"id": "2e8580db-6489-4726-96de-e33f5f60295f",
"version": "1.0"
},
"auth": {
"specName": "oAuth2RefreshCode",
"params": {
"authorizationTestUrl": "https://login.mailchimp.com/oauth2/metadata",
"accessToken": "{ACCESS_TOKEN}"
}
}
}'
name
description
connectionSpec.id
auth.specName
auth.params.authorizationTestUrl
auth.params.accessToken
Respuesta
Una respuesta correcta devuelve la conexión base recién creada, incluido su identificador de conexión único (id
). Este ID es necesario para explorar la estructura de archivos y el contenido de origen en el siguiente paso.
{
"id": "4cea039f-f1cc-4fa5-9136-db8dd4c7fbfa",
"etag": "\"4000cff7-0000-0200-0000-6154bad60000\""
}
Explorar su origen explore
Con el ID de conexión base que generó en el paso anterior, puede explorar archivos y directorios realizando solicitudes de GET.
{SOURCE_PARAMS}
, debe codificar toda la cadena list_id
en base64. Por ejemplo, "list_id": "10c097ca71"
codificado en base64 equivale a eyJsaXN0SWQiOiIxMGMwOTdjYTcxIn0=
.Formato de API
GET /connections/{BASE_CONNECTION_ID}/explore?objectType=rest&object={OBJECT}&fileType={FILE_TYPE}&preview={PREVIEW}&sourceParams={SOURCE_PARAMS}
Al realizar solicitudes para explorar la estructura de archivos y el contenido de origen, debe incluir los parámetros de GET que se enumeran en la tabla siguiente:
{BASE_CONNECTION_ID}
{OBJECT_TYPE}
rest
.{OBJECT}
{FILE_TYPE}
{PREVIEW}
{SOURCE_PARAMS}
list_id
.Solicitud
curl -X GET \
'https://platform.adobe.io/data/foundation/flowservice/connections/05c595e5-edc3-45c8-90bb-fcf556b57c4b/explore?objectType=rest&object=json&fileType=json&preview=true&sourceParams=eyJsaXN0SWQiOiIxMGMwOTdjYTcxIn0=' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
Respuesta
Una respuesta correcta devuelve la estructura del archivo consultado.
{
"data": [
{
"list_id": "10c097ca71",
"_links": [
{
"rel": "self",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members",
"method": "GET",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/CollectionResponse.json",
"schema": "https://us6.api.mailchimp.com/schema/3.0/Paths/Lists/Members/Collection.json"
},
{
"rel": "parent",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71",
"method": "GET",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/Response.json"
},
{
"rel": "create",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members",
"method": "POST",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/Response.json",
"schema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/POST.json"
}
],
"members": [
{
"id": "cff65fb4c5f5828666ad846443720efd",
"email_address": "kendallt2134@gmail.com",
"unique_email_id": "72c758cbf1",
"contact_id": "874a0d6e9ddb89d8b4a31e416ead2d6f",
"full_name": "Kendall Roy",
"web_id": 547094062,
"email_type": "html",
"status": "subscribed",
"consents_to_one_to_one_messaging": true,
"merge_fields": {
"FNAME": "Kendall",
"LNAME": "Roy",
"ADDRESS": {
"country": "US"
}
},
"stats": {
"avg_open_rate": 0,
"avg_click_rate": 0
},
"ip_opt": "103.43.112.97",
"timestamp_opt": "2021-06-01T15:31:36+00:00",
"member_rating": 2,
"last_changed": "2021-06-01T15:31:36+00:00",
"vip": false,
"location": {
"latitude": 0,
"longitude": 0,
"gmtoff": 0,
"dstoff": 0
},
"source": "Admin Add",
"tags_count": 0,
"list_id": "10c097ca71",
"_links": [
{
"rel": "self",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members/cff65fb4c5f5828666ad846443720efd",
"method": "GET",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/Response.json"
},
{
"rel": "parent",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members",
"method": "GET",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/CollectionResponse.json",
"schema": "https://us6.api.mailchimp.com/schema/3.0/Paths/Lists/Members/Collection.json"
},
{
"rel": "update",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members/cff65fb4c5f5828666ad846443720efd",
"method": "PATCH",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/Response.json",
"schema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/PATCH.json"
},
{
"rel": "upsert",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members/cff65fb4c5f5828666ad846443720efd",
"method": "PUT",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/Response.json",
"schema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/PUT.json"
},
{
"rel": "delete",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members/cff65fb4c5f5828666ad846443720efd",
"method": "DELETE"
},
{
"rel": "activity",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members/cff65fb4c5f5828666ad846443720efd/activity",
"method": "GET",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/Activity/Response.json"
},
{
"rel": "goals",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members/cff65fb4c5f5828666ad846443720efd/goals",
"method": "GET",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/Goals/Response.json"
},
{
"rel": "notes",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members/cff65fb4c5f5828666ad846443720efd/notes",
"method": "GET",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/Notes/CollectionResponse.json"
},
{
"rel": "events",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members/cff65fb4c5f5828666ad846443720efd/events",
"method": "POST",
"targetSchema": "https://us6.api.mailchimp.com/schema/3.0/Definitions/Lists/Members/Events/POST.json"
},
{
"rel": "delete_permanent",
"href": "https://us6.api.mailchimp.com/3.0/lists/10c097ca71/members/cff65fb4c5f5828666ad846443720efd/actions/delete-permanent",
"method": "POST"
}
]
}
]
}
]
}
Crear una conexión de origen source-connection
Puede crear una conexión de origen realizando una solicitud de POST a la API Flow Service. Una conexión de origen consta de un identificador de conexión, una ruta de acceso al archivo de datos de origen y un identificador de especificación de conexión.
Para crear una conexión de origen, también debe definir un valor de enumeración para el atributo de formato de datos.
Utilice los siguientes valores de enumeración para orígenes basados en archivos:
delimited
json
parquet
Para todos los orígenes basados en tablas, establezca el valor en tabular
.
Formato de API
POST /sourceConnections
Solicitud
La siguiente solicitud crea una conexión de origen para Mailchimp:
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/sourceConnections' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
-d '{
"name": "MailChimp source connection to ingest listId",
"description": "MailChimp Members source connection to ingest listId",
"baseConnectionId": "4cea039f-f1cc-4fa5-9136-db8dd4c7fbfa",
"connectionSpec": {
"id": "2e8580db-6489-4726-96de-e33f5f60295f",
"version": "1.0"
},
"data": {
"format": "json",
},
"params": {
"listId": "10c097ca71"
}
}'
name
description
baseConnectionId
connectionSpec.id
data.format
params.listId
Respuesta
Una respuesta correcta devuelve el identificador único (id
) de la conexión de origen recién creada. Este ID es necesario en un paso posterior para crear un flujo de datos.
{
"id": "a51e4cf6-65ef-45f4-b4bf-4f03da5f01cc",
"etag": "\"6b02b65d-0000-0200-0000-6154bfbe0000\""
}
Creación de un esquema XDM de destino target-schema
Para que los datos de origen se utilicen en Platform, se debe crear un esquema de destino para estructurar los datos de origen según sus necesidades. A continuación, el esquema de destino se utiliza para crear un conjunto de datos de Platform en el que se incluyen los datos de origen.
Se puede crear un esquema XDM de destino realizando una solicitud de POST a la API de Registro de esquemas.
Para ver los pasos detallados sobre cómo crear un esquema XDM de destino, consulte el tutorial de creación de un esquema mediante la API.
Crear un conjunto de datos de destinatario target-dataset
Se puede crear un conjunto de datos de destino realizando una solicitud de POST a la API de servicio de catálogo, que proporcione el ID del esquema de destino en la carga útil.
Para ver los pasos detallados sobre cómo crear un conjunto de datos de destino, consulte el tutorial de creación de un conjunto de datos mediante la API.
Creación de una conexión de destino target-connection
Una conexión de destino representa la conexión con el destino donde aterrizan los datos introducidos. Para crear una conexión de destino, debe proporcionar el identificador de especificación de conexión fija que corresponda a Data Lake. Este identificador es: c604ff05-7f1a-43c0-8e18-33bf874cb11c
.
Ahora tiene los identificadores únicos de un esquema de destino de un conjunto de datos de destino y el ID de especificación de conexión de Data Lake. Con estos identificadores, puede crear una conexión de destino utilizando la API Flow Service para especificar el conjunto de datos que contendrá los datos de origen entrantes.
Formato de API
POST /targetConnections
Solicitud
La siguiente solicitud crea una conexión de destino para Mailchimp:
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
-d '{
"name": "MailChimp target connection",
"description": "MailChimp Members target connection",
"connectionSpec": {
"id": "c604ff05-7f1a-43c0-8e18-33bf874cb11c",
"version": "1.0"
},
"data": {
"format": "parquet_xdm",
"schema": {
"id": "https://ns.adobe.com/{TENANT_ID}/schemas/570630b91eb9d5cf5db0436756abb110d02912917a67da2d",
"version": "application/vnd.adobe.xed-full+json;version=1"
}
},
"params": {
"dataSetId": "6155e3a9bd13651949515f14"
}
}'
name
description
connectionSpec.id
c604ff05-7f1a-43c0-8e18-33bf874cb11c
.data.format
params.dataSetId
Respuesta
Una respuesta correcta devuelve el identificador único (id
) de la nueva conexión de destino. Este ID es necesario en pasos posteriores.
{
"id": "8db5fb4a-6ce8-4370-afc0-1765e39535a5",
"etag": "\"960093ce-0000-0200-0000-6154da3e0000\""
}
Creación de una asignación mapping
Para que los datos de origen se incorporen en un conjunto de datos de destino, primero deben asignarse al esquema de destino al que se adhiere el conjunto de datos de destino. Esto se logra realizando una solicitud de POST a la Data Prep API con asignaciones de datos definidas dentro de la carga útil de la solicitud.
Formato de API
POST /conversion/mappingSets
Solicitud
curl -X POST \
'https://platform.adobe.io/data/foundation/conversion/mappingSets' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
-d '{
"version": 0,
"xdmSchema": "_{TENANT_ID}.schemas.570630b91eb9d5cf5db0436756abb110d02912917a67da2d",
"xdmVersion": "1.0",
"mappings": [
{
"destinationXdmPath": "person.name.firstName",
"sourceAttribute": "merge_fields.FNAME",
"identity": false,
"version": 0
},
{
"destinationXdmPath": "person.name.lastName",
"sourceAttribute": "merge_fields.LNAME",
"identity": false,
"version": 0
}
]
}'
xdmSchema
mappings.destinationXdmPath
mappings.sourceAttribute
mappings.identity
Respuesta
Una respuesta correcta devuelve detalles de la asignación recién creada, incluido su identificador único (id
). Este valor es necesario en un paso posterior para crear un flujo de datos.
{
"id": "5a365b23962d4653b9d9be25832ee5b4",
"version": 0,
"createdDate": 1597784069368,
"modifiedDate": 1597784069368,
"createdBy": "{CREATED_BY}",
"modifiedBy": "{MODIFIED_BY}"
}
Creación de un flujo flow
El último paso para llevar los datos de Mailchimp a Platform es crear un flujo de datos. Por ahora, tiene preparados los siguientes valores obligatorios:
Un flujo de datos es responsable de programar y recopilar datos de una fuente. Puede crear un flujo de datos realizando una solicitud de POST mientras proporciona los valores mencionados anteriormente dentro de la carga útil.
Para programar una ingesta, primero debe establecer el valor de la hora de inicio en un tiempo récord en segundos. A continuación, debe establecer el valor de frecuencia en una de las cinco opciones: once
, minute
, hour
, day
o week
. El valor de intervalo designa el periodo entre dos ingestas consecutivas y la creación de una ingesta única no requiere que se establezca un intervalo. Para todas las demás frecuencias, el valor del intervalo debe establecerse en igual o mayor que 15
.
Formato de API
POST /flows
Solicitud
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/flows' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
-d '{
"name": "MailChimp Members dataflow",
"description": "MailChimp Members dataflow",
"flowSpec": {
"id": "6499120c-0b15-42dc-936e-847ea3c24d72",
"version": "1.0"
},
"sourceConnectionIds": [
"a51e4cf6-65ef-45f4-b4bf-4f03da5f01cc"
],
"targetConnectionIds": [
"8db5fb4a-6ce8-4370-afc0-1765e39535a5"
],
"transformations": [
{
"name": "Mapping",
"params": {
"mappingId": "5a365b23962d4653b9d9be25832ee5b4",
"mappingVersion": 0
}
}
],
"scheduleParams": {
"startTime": "1632809759",
"frequency": "minute",
"interval": 15
}
}'
name
description
flowSpec.id
6499120c-0b15-42dc-936e-847ea3c24d72
.flowSpec.version
1.0
.sourceConnectionIds
targetConnectionIds
transformations
transformations.name
transformations.params.mappingId
transformations.params.mappingVersion
0
.scheduleParams.startTime
scheduleParams.frequency
once
, minute
, hour
, day
o week
.scheduleParams.interval
once
y debe ser mayor o igual que 15
para otros valores de frecuencia.Respuesta
Una respuesta correcta devuelve el identificador (id
) del flujo de datos recién creado. Puede utilizar este ID para monitorizar, actualizar o eliminar el flujo de datos.
{
"id": "209812ad-7bef-430c-b5b2-a648aae72094",
"etag": "\"2e01f11d-0000-0200-0000-615649660000\""
}
Apéndice
En la siguiente sección se proporciona información sobre los pasos que puede seguir para monitorizar, actualizar y eliminar el flujo de datos.
Monitorización del flujo de datos
Una vez creado el flujo de datos, puede monitorizar los datos que se están introduciendo a través de él para ver información sobre las ejecuciones de flujo, el estado de finalización y los errores. Para ver ejemplos completos de API, lee la guía sobre supervisión de los flujos de datos de origen mediante la API.
Actualizar el flujo de datos
Actualice los detalles del flujo de datos, como su nombre y descripción, así como su programación de ejecución y los conjuntos de asignaciones asociados realizando una solicitud del PATCH al extremo /flows
de la API Flow Service, proporcionando al mismo tiempo el ID del flujo de datos. Al realizar una solicitud de PATCH, debe proporcionar el etag
único del flujo de datos en el encabezado If-Match
. Para ver ejemplos completos de la API, lea la guía sobre actualización de orígenes y flujos de datos mediante la API.
Actualice su cuenta
Actualice el nombre, la descripción y las credenciales de su cuenta de origen realizando una solicitud de PATCH a la API Flow Service y proporcionando al mismo tiempo el identificador de conexión base como parámetro de consulta. Al realizar una solicitud de PATCH, debe proporcionar el etag
único de su cuenta de origen en el encabezado If-Match
. Para ver ejemplos completos de API, lee la guía de actualización de tu cuenta de origen mediante la API.
Eliminar el flujo de datos
Elimine el flujo de datos realizando una solicitud de DELETE a la API Flow Service mientras proporciona el ID del flujo de datos que desea eliminar como parte del parámetro query. Para ver ejemplos completos de API, lea la guía sobre eliminación de flujos de datos mediante la API.
Eliminar su cuenta
Elimine la cuenta realizando una solicitud de DELETE a la API Flow Service y proporcionando al mismo tiempo el identificador de conexión base de la cuenta que desea eliminar. Para ver ejemplos completos de API, lee la guía sobre eliminar tu cuenta de origen mediante la API.