Criar um fluxo de dados para Mailchimp Members usando a API de Serviço de Fluxo
O tutorial a seguir orienta você pelas etapas para criar uma conexão de origem e um fluxo de dados para trazer dados do Mailchimp Members para a Platform usando a Flow Service API.
Pré-requisitos
Antes de conectar o Mailchimp ao Adobe Experience Platform usando o código de atualização do OAuth 2, você deve primeiro recuperar o token de acesso para MailChimp. Consulte o Mailchimp guia do OAuth 2 para obter instruções detalhadas sobre como localizar o token de acesso.
Criar uma conexão básica base-connection
Depois de recuperar as credenciais de autenticação do Mailchimp, você pode iniciar o processo de criação do fluxo de dados para trazer os dados do Mailchimp Members para a Platform. A primeira etapa na criação de um fluxo de dados é criar uma conexão base.
Uma conexão base retém informações entre sua origem e a Platform, incluindo as credenciais de autenticação da origem, o estado atual da conexão e sua ID de conexão base exclusiva. A ID de conexão básica permite explorar e navegar pelos arquivos de dentro da origem e identificar os itens específicos que deseja assimilar, incluindo informações sobre os tipos de dados e formatos.
O Mailchimp oferece suporte à autenticação básica e ao código de atualização do OAuth 2. Consulte os exemplos a seguir para obter orientação sobre como realizar a autenticação com qualquer um dos tipos de autenticação.
Criar uma conexão base Mailchimp usando autenticação básica
Para criar uma conexão base Mailchimp usando autenticação básica, faça uma solicitação POST para o ponto de extremidade /connections
da API Flow Service enquanto fornece credenciais para o authorizationTestUrl
, username
e password
.
Formato da API
POST /connections
Solicitação
A solicitação a seguir cria uma conexão 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
Resposta
Uma resposta bem-sucedida retorna a conexão base recém-criada, incluindo seu identificador de conexão exclusivo (id
). Essa ID é necessária para explorar a estrutura de arquivos e o conteúdo da fonte na próxima etapa.
{
"id": "4cea039f-f1cc-4fa5-9136-db8dd4c7fbfa",
"etag": "\"4000cff7-0000-0200-0000-6154bad60000\""
}
Criar uma conexão base Mailchimp usando o código de atualização OAuth 2
Para criar uma conexão base Mailchimp usando o código de atualização OAuth 2, faça uma solicitação POST para o ponto de extremidade /connections
ao fornecer credenciais para authorizationTestUrl
e accessToken
.
Formato da API
POST /connections
Solicitação
A solicitação a seguir cria uma conexão 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
Resposta
Uma resposta bem-sucedida retorna a conexão base recém-criada, incluindo seu identificador de conexão exclusivo (id
). Essa ID é necessária para explorar a estrutura de arquivos e o conteúdo da fonte na próxima etapa.
{
"id": "4cea039f-f1cc-4fa5-9136-db8dd4c7fbfa",
"etag": "\"4000cff7-0000-0200-0000-6154bad60000\""
}
Explorar sua fonte explore
Usando a ID de conexão básica gerada na etapa anterior, você pode explorar arquivos e diretórios executando solicitações do GET.
{SOURCE_PARAMS}
, você deve codificar toda a cadeia de caracteres list_id
em base64. Por exemplo, "list_id": "10c097ca71"
codificado em base64 equivale a eyJsaXN0SWQiOiIxMGMwOTdjYTcxIn0=
.Formato da API
GET /connections/{BASE_CONNECTION_ID}/explore?objectType=rest&object={OBJECT}&fileType={FILE_TYPE}&preview={PREVIEW}&sourceParams={SOURCE_PARAMS}
Ao executar solicitações do GET para explorar a estrutura e o conteúdo do arquivo de origem, você deve incluir os parâmetros de consulta listados na tabela abaixo:
{BASE_CONNECTION_ID}
{OBJECT_TYPE}
rest
.{OBJECT}
{FILE_TYPE}
{PREVIEW}
{SOURCE_PARAMS}
list_id
.Solicitação
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}'
Resposta
Uma resposta bem-sucedida retorna a estrutura do arquivo 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"
}
]
}
]
}
]
}
Criar uma conexão de origem source-connection
Você pode criar uma conexão de origem fazendo uma solicitação POST para a API Flow Service. Uma conexão de origem consiste em uma ID de conexão, um caminho para o arquivo de dados de origem e uma ID de especificação de conexão.
Para criar uma conexão de origem, você também deve definir um valor de enumeração para o atributo de formato de dados.
Use os seguintes valores de enumeração para fontes baseadas em arquivo:
delimited
json
parquet
Para todas as fontes baseadas em tabela, defina o valor como tabular
.
Formato da API
POST /sourceConnections
Solicitação
A solicitação a seguir cria uma conexão de origem 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
Resposta
Uma resposta bem-sucedida retorna o identificador exclusivo (id
) da conexão de origem recém-criada. Essa ID é necessária em uma etapa posterior para criar um fluxo de dados.
{
"id": "a51e4cf6-65ef-45f4-b4bf-4f03da5f01cc",
"etag": "\"6b02b65d-0000-0200-0000-6154bfbe0000\""
}
Criar um esquema XDM de destino target-schema
Para que os dados de origem sejam usados na Platform, um esquema de destino deve ser criado para estruturar os dados de origem de acordo com suas necessidades. O esquema de destino é usado para criar um conjunto de dados da Platform no qual os dados de origem estão contidos.
Um esquema XDM de destino pode ser criado executando uma solicitação POST para a API do Registro de Esquema.
Para obter etapas detalhadas sobre como criar um esquema XDM de destino, consulte o tutorial sobre criação de um esquema usando a API.
Criar um conjunto de dados de destino target-dataset
Um conjunto de dados de destino pode ser criado por meio de uma solicitação POST para a API de Serviço de Catálogo, fornecendo a ID do esquema de destino na carga.
Para obter etapas detalhadas sobre como criar um conjunto de dados de destino, consulte o tutorial sobre criação de um conjunto de dados usando a API.
Criar uma conexão de destino target-connection
Uma conexão de destino representa a conexão com o destino onde os dados assimilados chegam. Para criar uma conexão de destino, você deve fornecer a ID de especificação de conexão fixa que corresponde ao Data Lake. Esta ID é: c604ff05-7f1a-43c0-8e18-33bf874cb11c
.
Agora você tem os identificadores exclusivos, um esquema de destino, um conjunto de dados de destino e a ID de especificação da conexão para o Data Lake. Usando esses identificadores, você pode criar uma conexão de destino usando a API Flow Service para especificar o conjunto de dados que conterá os dados de origem de entrada.
Formato da API
POST /targetConnections
Solicitação
A solicitação a seguir cria uma conexão 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
Resposta
Uma resposta bem-sucedida retorna o identificador exclusivo (id
) da nova conexão de destino. Essa ID é necessária nas etapas posteriores.
{
"id": "8db5fb4a-6ce8-4370-afc0-1765e39535a5",
"etag": "\"960093ce-0000-0200-0000-6154da3e0000\""
}
Criar um mapeamento mapping
Para que os dados de origem sejam assimilados em um conjunto de dados de destino, eles devem primeiro ser mapeados para o esquema de destino ao qual o conjunto de dados de destino adere. Isso é feito executando uma solicitação POST para a Data Prep API com mapeamentos de dados definidos na carga da solicitação.
Formato da API
POST /conversion/mappingSets
Solicitação
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
Resposta
Uma resposta bem-sucedida retorna detalhes do mapeamento recém-criado, incluindo seu identificador exclusivo (id
). Esse valor é necessário em uma etapa posterior para criar um fluxo de dados.
{
"id": "5a365b23962d4653b9d9be25832ee5b4",
"version": 0,
"createdDate": 1597784069368,
"modifiedDate": 1597784069368,
"createdBy": "{CREATED_BY}",
"modifiedBy": "{MODIFIED_BY}"
}
Criar um fluxo flow
A última etapa para trazer dados do Mailchimp para a Platform é criar um fluxo de dados. Até agora, você tem os seguintes valores necessários preparados:
Um fluxo de dados é responsável por agendar e coletar dados de uma origem. Você pode criar um fluxo de dados executando uma solicitação POST enquanto fornece os valores mencionados anteriormente na carga.
Para agendar uma assimilação, primeiro defina o valor da hora inicial como a época em segundos. Em seguida, defina o valor de frequência para uma das cinco opções: once
, minute
, hour
, day
ou week
. O valor do intervalo designa o período entre duas assimilações consecutivas e a criação de uma assimilação única não requer que um intervalo seja definido. Para todas as outras frequências, o valor do intervalo deve ser definido como igual ou maior que 15
.
Formato da API
POST /flows
Solicitação
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
ou week
.scheduleParams.interval
once
e deve ser maior ou igual a 15
para outros valores de frequência.Resposta
Uma resposta bem-sucedida retorna a ID (id
) do fluxo de dados recém-criado. Você pode usar essa ID para monitorar, atualizar ou excluir seu fluxo de dados.
{
"id": "209812ad-7bef-430c-b5b2-a648aae72094",
"etag": "\"2e01f11d-0000-0200-0000-615649660000\""
}
Apêndice
A seção a seguir fornece informações sobre as etapas que podem ser seguidas para monitorar, atualizar e excluir o fluxo de dados.
Monitorar seu fluxo de dados
Depois que o fluxo de dados for criado, você poderá monitorar os dados que estão sendo assimilados por meio dele para ver informações sobre execuções de fluxo, status de conclusão e erros. Para obter exemplos completos de API, leia o guia em monitorando seus fluxos de dados de fontes usando a API.
Atualizar seu fluxo de dados
Atualize os detalhes do seu fluxo de dados, como seu nome e descrição, bem como seu agendamento de execução e conjuntos de mapeamento associados fazendo uma solicitação PATCH para o ponto de extremidade /flows
da API Flow Service, ao mesmo tempo em que fornece a ID do seu fluxo de dados. Ao fazer uma solicitação PATCH, você deve fornecer o etag
exclusivo do fluxo de dados no cabeçalho If-Match
. Para obter exemplos completos de API, leia o guia em atualizando fluxos de dados de fontes usando a API.
Atualizar sua conta
Atualize o nome, a descrição e as credenciais da conta de origem executando uma solicitação PATCH para a API Flow Service e fornecendo a ID da conexão base como um parâmetro de consulta. Ao fazer uma solicitação PATCH, você deve fornecer o etag
exclusivo da sua conta de origem no cabeçalho If-Match
. Para obter exemplos completos de API, leia o guia em atualizando a conta de origem usando a API.
Excluir seu fluxo de dados
Exclua seu fluxo de dados executando uma solicitação DELETE para a API Flow Service enquanto fornece a ID do fluxo de dados que você deseja excluir como parte do parâmetro de consulta. Para obter exemplos completos de API, leia o guia em excluindo seus fluxos de dados usando a API.
Excluir sua conta
Exclua sua conta executando uma solicitação DELETE para a API Flow Service enquanto fornece a ID de conexão básica da conta que você deseja excluir. Para obter exemplos completos de API, leia o guia em excluindo sua conta de origem usando a API.