Criar uma conexão de transmissão da API HTTP usando a API Flow Service
O Serviço de fluxo é usado para coletar e centralizar dados do cliente de diferentes fontes na Adobe Experience Platform. O serviço fornece uma interface de usuário e a API RESTful a partir da qual todas as fontes compatíveis são conectáveis.
Este tutorial usa a Flow Service API para orientá-lo nas etapas de criação de uma conexão de streaming usando a API Flow Service.
Introdução
Este manual necessita de uma compreensão funcional dos seguintes componentes da Adobe Experience Platform:
- Experience Data Model (XDM): A estrutura padronizada pela qual o Experience Platform organiza os dados de experiência.
- Real-Time Customer Profile: Fornece um perfil de consumidor unificado em tempo real com base em dados agregados de múltiplas fontes.
Além disso, a criação de uma conexão de transmissão exige que você tenha um esquema XDM de destino e um conjunto de dados. Para aprender a criar essas séries, leia o tutorial em streaming de dados de registro ou o tutorial em streaming de dados de série temporal.
Uso de APIs do Experience Platform
Para obter informações sobre como fazer chamadas para APIs do Experience Platform com êxito, consulte o manual sobre introdução às APIs do Experience Platform.
Criar uma conexão básica
Uma conexão base especifica a origem e contém as informações necessárias para tornar o fluxo compatível com as APIs de assimilação de streaming. Ao criar uma conexão básica, você tem a opção de criar uma conexão não autenticada e autenticada.
Conexão não autenticada
As conexões não autenticadas são a conexão de transmissão padrão que você pode criar quando quiser transmitir dados para o Experience Platform.
Para criar uma conexão base não autenticada, faça uma solicitação POST para o ponto de extremidade /connections
ao fornecer um nome para a conexão, o tipo de dados e a ID de especificação da conexão da API HTTP. Esta ID é bc7b00d6-623a-4dfc-9fdb-f1240aeadaeb
.
Formato da API
POST /flowservice/connections
Solicitação
A solicitação a seguir cria uma conexão básica para a API HTTP.
code language-shell |
---|
|
code language-shell |
---|
|
name
description
connectionSpec.id
bc7b00d6-623a-4dfc-9fdb-f1240aeadaeb
.auth.params.dataType
xdm
e raw
.auth.params.name
Resposta
Uma resposta bem-sucedida retorna o status HTTP 201 com detalhes da conexão recém-criada, incluindo seu identificador exclusivo (id
).
{
"id": "a59d368a-1152-4673-a46e-bd52e8cdb9a9",
"etag": "\"f50185ed-0000-0200-0000-637e8fad0000\""
}
id
id
da sua conexão base recém-criada.etag
Conexão autenticada
As conexões autenticadas devem ser usadas quando for necessário diferenciar entre registros provenientes de fontes confiáveis e não confiáveis. Os usuários que desejam enviar informações com Informações de identificação pessoal (PII) devem criar uma conexão autenticada ao transmitir informações para o Experience Platform.
Para criar uma conexão de base autenticada, você deve incluir o parâmetro authenticationRequired
em sua solicitação e especificar seu valor como true
. Durante essa etapa, também é possível fornecer uma ID de origem para a conexão de base autenticada. Este parâmetro é opcional e usará o mesmo valor que o atributo name
, se ele não for fornecido.
Formato da API
POST /flowservice/connections
Solicitação
A solicitação a seguir cria uma conexão básica autenticada para a API HTTP.
code language-shell |
---|
|
code language-shell |
---|
|
auth.params.sourceId
name
, se ele não for fornecido.auth.params.authenticationRequired
authenticationRequired
estiver definido como true
, a autenticação deverá ser fornecida para a conexão de streaming. Se authenticationRequired
estiver definido como false
, a autenticação não será necessária.Resposta
Uma resposta bem-sucedida retorna o status HTTP 201 com detalhes da conexão recém-criada, incluindo seu identificador exclusivo (id
).
{
"id": "a59d368a-1152-4673-a46e-bd52e8cdb9a9",
"etag": "\"f50185ed-0000-0200-0000-637e8fad0000\""
}
Obter URL de ponto de extremidade de streaming
Com a conexão base criada, agora é possível recuperar o URL do ponto de extremidade de streaming.
Formato da API
GET /flowservice/connections/{BASE_CONNECTION_ID}
{BASE_CONNECTION_ID}
id
da conexão criada anteriormente.Solicitação
curl -X GET https://platform.adobe.io/data/foundation/flowservice/connections/{BASE_CONNECTION_ID} \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
Resposta
Uma resposta bem-sucedida retorna o status HTTP 200 com informações detalhadas sobre a conexão solicitada. A URL da extremidade de streaming é criada automaticamente com a conexão e pode ser recuperada usando o valor inletUrl
.
{
"items": [
{
"id": "a59d368a-1152-4673-a46e-bd52e8cdb9a9",
"createdAt": 1669238699119,
"updatedAt": 1669238699119,
"createdBy": "acme@AdobeID",
"updatedBy": "acme@AdobeID",
"createdClient": "{CREATED_CLIENT}",
"updatedClient": "{UPDATED_CLIENT}",
"sandboxId": "{SANDBOX_ID}",
"sandboxName": "{SANDBOX_NAME}",
"imsOrgId": "{ORG_ID}",
"name": "ACME Streaming Connection XDM Data",
"description": "ACME streaming connection for customer data",
"connectionSpec": {
"id": "bc7b00d6-623a-4dfc-9fdb-f1240aeadaeb",
"version": "1.0"
},
"state": "enabled",
"auth": {
"specName": "Streaming Connection",
"params": {
"sourceId": "ACME Streaming Connection XDM Data",
"inletUrl": "https://dcs.adobedc.net/collection/667b41cf2dbf3509927da1ebf7e93c20afa727cc8d8373e51da18b62e1b985ec",
"authenticationRequired": false,
"inletId": "667b41cf2dbf3509927da1ebf7e93c20afa727cc8d8373e51da18b62e1b985ec",
"dataType": "xdm",
"name": "ACME Streaming Connection XDM Data"
}
},
"version": "\"f50185ed-0000-0200-0000-637e8fad0000\"",
"etag": "\"f50185ed-0000-0200-0000-637e8fad0000\""
}
]
}
Criar uma conexão de origem source
Para criar uma conexão de origem, faça uma solicitação POST para o ponto de extremidade /sourceConnections
enquanto fornece a ID da conexão base.
Formato da API
POST /flowservice/sourceConnections
Solicitação
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": "ACME Streaming Source Connection for Customer Data",
"description": "A streaming source connection for ACME XDM Customer Data",
"baseConnectionId": "a59d368a-1152-4673-a46e-bd52e8cdb9a9",
"connectionSpec": {
"id": "bc7b00d6-623a-4dfc-9fdb-f1240aeadaeb",
"version": "1.0"
}
}'
Resposta
Uma resposta bem-sucedida retorna o status HTTP 201 com detalhes da conexão de origem recém-criada, incluindo seu identificador exclusivo (id
).
{
"id": "34ece231-294d-416c-ad2a-5a5dfb2bc69f",
"etag": "\"d505125b-0000-0200-0000-637eb7790000\""
}
Criar um esquema XDM de destino target-schema
Para que os dados de origem sejam usados no Experience 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 do Experience 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 executando 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
Uma conexão de destino representa a conexão com o destino onde os dados assimilados chegam. Para criar uma conexão de destino, faça uma solicitação POST para /targetConnections
enquanto fornece IDs para seu conjunto de dados de destino e esquema XDM de destino. Durante essa etapa, você também deve fornecer a ID de especificação da conexão do data lake. Esta ID é c604ff05-7f1a-43c0-8e18-33bf874cb11c
.
Formato da API
POST /flowservice/targetConnections
Solicitação
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": "ACME Streaming Target Connection",
"description": "ACME Streaming Target Connection",
"data": {
"schema": {
"id": "https://ns.adobe.com/{TENANT}/schemas/7f682c29f887512a897791e7161b90a1ae7ed3dd07a177b1",
"version": "application/vnd.adobe.xed-full+json;version=1.0"
}
},
"params": {
"dataSetId": "637eb7fadc8a211b6312b65b"
},
"connectionSpec": {
"id": "c604ff05-7f1a-43c0-8e18-33bf874cb11c",
"version": "1.0"
}
}'
Resposta
Uma resposta bem-sucedida retorna o status HTTP 201 com detalhes da conexão de destino recém-criada, incluindo seu identificador exclusivo (id
).
{
"id": "07f2f6ff-1da5-4704-916a-c615b873cba9",
"etag": "\"340680f7-0000-0200-0000-637eb8730000\""
}
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.
Para criar um conjunto de mapeamento, faça uma solicitação POST para o ponto de extremidade mappingSets
da Data Prep API enquanto fornece o esquema XDM de destino $id
e os detalhes dos conjuntos de mapeamento que deseja criar.
Formato da API
POST /mappingSets
Solicitação
curl -X POST \
'https://platform.adobe.io/data/foundation/mappingSets' \
-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}' \
-H 'Content-Type: application/json' \
-d '{
"version": 0,
"xdmSchema": "https://ns.adobe.com/{TENANT}/schemas/7f682c29f887512a897791e7161b90a1ae7ed3dd07a177b1",
"xdmVersion": "1.0",
"mappings": [
{
"destinationXdmPath": "person.name.firstName",
"sourceAttribute": "firstName",
"identity": false,
"version": 0
},
{
"destinationXdmPath": "person.name.lastName",
"sourceAttribute": "lastName",
"identity": false,
"version": 0
}
]
}'
xdmSchema
$id
do esquema XDM de destino.Resposta
Uma resposta bem-sucedida retorna detalhes do mapeamento recém-criado, incluindo seu identificador exclusivo (id
). Essa ID é necessária em uma etapa posterior para criar um fluxo de dados.
{
"id": "79a623960d3f4969835c9e00dc90c8df",
"version": 0,
"createdDate": 1669249214031,
"modifiedDate": 1669249214031,
"createdBy": "acme@AdobeID",
"modifiedBy": "acme@AdobeID"
}
Criar um fluxo de dados
Com as conexões de origem e de destino criadas, agora é possível criar um fluxo de dados. O 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 para o ponto de extremidade /flows
.
Formato da API
POST /flows
Solicitação
A solicitação a seguir cria um fluxo de dados de transmissão para dados XDM.
code language-shell |
---|
|
As solicitações a seguir criam um fluxo de dados de transmissão para dados brutos.
Ao criar um fluxo de dados com transformações, o parâmetro name
não pode ser alterado. Este valor deve ser sempre configurado para Mapping
.
code language-shell |
---|
|
name
description
flowSpec.id
c1a19761-d2c7-4702-b9fa-fe91f0613e81
. Para criar um fluxo de dados sem transformações, use d8a6f005-7eaf-4153-983e-e8574508b877
.sourceConnectionIds
targetConnectionIds
transformations.params.mappingId
Resposta
Uma resposta bem-sucedida retorna o status HTTP 201 com detalhes do fluxo de dados recém-criado, incluindo o identificador exclusivo (id
).
{
"id": "f2ae0194-8bd8-4a40-a4d9-f07bdc3e6ce2",
"etag": "\"dc0459ae-0000-0200-0000-637ebaec0000\""
}
Publicar dados que serão assimilados no Experience Platform ingest-data
Agora que você criou o fluxo, é possível enviar a mensagem JSON para o ponto de extremidade de streaming criado anteriormente.
Formato da API
POST /collection/{INLET_URL}
{INLET_URL}
/connections
enquanto fornece sua ID de conexão base.{FLOW_ID}
Solicitação
code language-shell |
---|
|
Ao enviar dados brutos, você pode especificar sua ID de fluxo como um parâmetro de consulta ou como parte de seu cabeçalho HTTP. O exemplo a seguir especifica a ID do fluxo como um cabeçalho HTTP.
code language-shell |
---|
|
Ao enviar dados brutos, você pode especificar sua ID de fluxo como um parâmetro de consulta ou como um cabeçalho HTTP. O exemplo a seguir especifica a ID de fluxo como um parâmetro de consulta.
code language-shell |
---|
|
Resposta
Uma resposta bem-sucedida retorna o status HTTP 200 com detalhes das informações recém-assimiladas.
{
"inletId": "{BASE_CONNECTION_ID}",
"xactionId": "1584479347507:2153:240",
"receivedTimeMs": 1584479347507
}
{BASE_CONNECTION_ID}
xactionId
receivedTimeMs
Próximas etapas
Ao seguir este tutorial, você criou uma conexão HTTP de transmissão, permitindo usar o terminal de transmissão para assimilar dados na Experience Platform. Para obter instruções sobre como criar uma conexão de streaming na interface, leia o tutorial sobre criação de uma conexão de streaming.
Para saber como transmitir dados para o Experience Platform, leia o tutorial sobre transmissão de dados de série temporal ou o tutorial sobre transmissão de dados de registro.
Apêndice
Esta seção fornece informações adicionais sobre como criar conexões de transmissão usando a API.
Envio de mensagens a uma conexão de streaming autenticada
Se uma conexão de streaming tiver autenticação habilitada, o cliente precisará adicionar o cabeçalho Authorization
à solicitação.
Se o cabeçalho Authorization
não estiver presente ou um token de acesso inválido/expirado for enviado, uma resposta HTTP 401 Não autorizado será retornada, com uma resposta semelhante à abaixo:
Resposta
{
"type": "https://ns.adobe.com/adobecloud/problem/data-collection-service-authorization",
"status": "401",
"title": "Authorization",
"report": {
"message": "[id] Ims service token is empty"
}
}