Activation des audiences vers des destinations basées sur des fichiers à l’aide de l’API Flow Service
- Rubriques :
- Destinations
Créé pour :
- Administration
- Utilisateur ou utilisatrice
Utilisez les fonctionnalités d’exportation de fichiers améliorées pour accéder à une fonctionnalité de personnalisation améliorée lors de l’exportation de fichiers hors d’Experience Platform :
- Options de dénomination de fichier supplémentaires.
- Possibilité de définir des en-têtes de fichier personnalisés dans vos fichiers exportés via l’étape de mappage améliorée.
- Possibilité de sélectionner le type de fichier du fichier exporté.
- Possibilité de personnaliser le formatage des fichiers de données CSV exportés.
Cette fonctionnalité est prise en charge par les six cartes de stockage dans le cloud répertoriées ci-dessous :
Cet article explique le workflow requis pour utiliser l’ API Flow Service afin d’exporter des profils qualifiés de Adobe Experience Platform vers l’un des emplacements de stockage dans le cloud liés ci-dessus.
Commencer
Ce guide nécessite une compréhension professionnelle des composants suivants d’Adobe Experience Platform :
- Experience Data Model (XDM) System : cadre normalisé selon lequel Experience Platform organise les données de l’expérience client.
- Segmentation Service : Adobe Experience Platform Segmentation Service vous permet de créer des audiences et de générer des audiences dans Adobe Experience Platform à partir de vos données Real-Time Customer Profile.
- Sandboxes : Experience Platform fournit des sandbox virtuels qui divisent une instance Platform unique en environnements virtuels distincts pour favoriser le développement et l’évolution d’applications d’expérience digitale.
Les sections suivantes apportent des informations supplémentaires dont vous avez besoin pour activer les données vers des destinations basées sur des fichiers dans Platform.
Autorisations nécessaires
Pour exporter des profils, vous avez besoin des , activer les destinations, afficher les profils et afficher les segments autorisations de contrôle d’accès}. Lisez la présentation du contrôle d’accès ou contactez votre administrateur ou administratrice du produit pour obtenir les autorisations requises.
Pour exporter des identités, vous avez besoin de l'autorisation Afficher le graphique d'identités 🔗.
Lecture d’exemples d’appels API
Ce tutoriel fournit des exemples d’appels API pour démontrer comment formater vos requêtes. Il s’agit notamment de chemins d’accès, d’en-têtes requis et de payloads de requêtes correctement formatés. L’exemple JSON renvoyé dans les réponses de l’API est également fourni. Pour plus d’informations sur les conventions utilisées dans la documentation pour les exemples d’appels d’API, voir la section concernant la lecture d’exemples d’appels d’API dans le guide de dépannage Experience Platform.
Collecter des valeurs pour les en-têtes obligatoires et facultatifs
Pour lancer des appels vers des API Platform, vous devez d’abord suivre le tutoriel sur l’authentification Experience Platform. Le tutoriel d’authentification fournit les valeurs de chacun des en-têtes requis dans tous les appels d’API Experience Platform, comme indiqué ci-dessous :
- Authorization: Bearer
{ACCESS_TOKEN}
- x-api-key :
{API_KEY}
- x-gw-ims-org-id :
{ORG_ID}
Les ressources dans Experience Platform peuvent être isolées dans des sandbox spécifiques. Dans les requêtes aux API Platform, vous pouvez spécifier le nom et l’identifiant du sandbox dans lequel l’opération aura lieu. Il s’agit de paramètres facultatifs.
- x-sandbox-name :
{SANDBOX_NAME}
Toutes les requêtes contenant une payload (POST
, PUT
, PATCH
) nécessitent un en-tête de type de média supplémentaire :
- Content-Type:
application/json
Documentation de référence sur les API
Ce tutoriel vous permet de trouver la documentation de référence relative à toutes les opérations API. Reportez-vous à la documentation Flow Service - Destinations API sur le site web Adobe Developer. Nous vous recommandons de consulter ce tutoriel et la documentation de référence sur les API en parallèle.
Glossaire
Pour obtenir des descriptions des termes que vous rencontrerez dans ce tutoriel sur l’API, consultez la section de glossaire de la documentation de référence sur l’API.
Sélectionner la destination vers laquelle exporter les audiences
Avant de démarrer le workflow pour exporter des profils, identifiez les spécifications de connexion et les identifiants de spécification de flux de la destination vers laquelle vous envisagez d’exporter des audiences. Utilisez le tableau ci-dessous à titre de référence.
4fce964d-3f37-408f-9778-e597338a21ee
1a0514a6-33d4-4c7f-aff8-594799c47549
6d6b59bf-fb58-4107-9064-4d246c0e5bb2
752d422f-b16f-4f0d-b1c6-26e448e3b388
be2c3209-53bc-47e7-ab25-145db8b873e1
17be2013-2549-41ce-96e7-a70363bec293
10440537-2a7b-4583-ac39-ed38d4b848e8
cd2fc47e-e838-4f38-a581-8fff2f99b63a
c5d93acb-ea8b-4b14-8f53-02138444ae99
585c15c4-6cbf-4126-8f87-e26bff78b657
36965a81-b1c6-401b-99f8-22508f1e6a26
fd36aaa4-bf2b-43fb-9387-43785eeeb799
Vous avez besoin de ces identifiants pour construire différentes entités de service de flux dans les étapes suivantes de ce tutoriel. Vous devez également vous référer à certaines parties de la spécification de connexion elle-même pour configurer certaines entités afin que vous puissiez récupérer la spécification de connexion à partir des API de service de flux. Consultez les exemples ci-dessous de récupération des spécifications de connexion pour toutes les destinations dans le tableau :
Requête
curl --location --request GET 'https://platform.adobe.io/data/foundation/flowservice/connectionSpecs/4fce964d-3f37-408f-9778-e597338a21ee' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}'
Réponse
{
"items": [
{
"id": "4fce964d-3f37-408f-9778-e597338a21ee",
"name": "Amazon S3",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
//...
Requête
curl --location --request GET 'https://platform.adobe.io/data/foundation/flowservice/connectionSpecs/6d6b59bf-fb58-4107-9064-4d246c0e5bb2' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}'
Réponse
{
"items": [
{
"id": "6d6b59bf-fb58-4107-9064-4d246c0e5bb2",
"name": "Azure Blob Storage",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
//...
Requête
curl --location --request GET 'https://platform.adobe.io/data/foundation/flowservice/connectionSpecs/be2c3209-53bc-47e7-ab25-145db8b873e1' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}'
Réponse
{
"items": [
{
"id": "be2c3209-53bc-47e7-ab25-145db8b873e1",
"name": "Azure Data Lake Gen2",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
//...
Requête
curl --location --request GET 'https://platform.adobe.io/data/foundation/flowservice/connectionSpecs/10440537-2a7b-4583-ac39-ed38d4b848e8' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}'
Réponse
{
"items": [
{
"id": "10440537-2a7b-4583-ac39-ed38d4b848e8",
"name": "Data Landing Zone",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
//...
Requête
curl --location --request GET 'https://platform.adobe.io/data/foundation/flowservice/connectionSpecs/c5d93acb-ea8b-4b14-8f53-02138444ae99' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}'
Réponse
{
"items": [
{
"id": "c5d93acb-ea8b-4b14-8f53-02138444ae99",
"name": "Google Cloud Storage",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
//...
Requête
curl --location --request GET 'https://platform.adobe.io/data/foundation/flowservice/connectionSpecs/36965a81-b1c6-401b-99f8-22508f1e6a26' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}'
Réponse
{
"items": [
{
"id": "36965a81-b1c6-401b-99f8-22508f1e6a26",
"name": "SFTP",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
//...
Suivez les étapes ci-dessous pour configurer un flux de données d’exportation d’audience vers une destination de stockage dans le cloud. Pour certaines étapes, les requêtes et les réponses diffèrent entre les différentes destinations de stockage dans le cloud. Dans ce cas, utilisez les onglets de la page pour récupérer les requêtes et réponses spécifiques à la destination à laquelle vous souhaitez vous connecter et exporter des audiences. Veillez à utiliser les connection spec
et flow spec
corrects pour la destination que vous configurez.
Création d’une connexion Source
Après avoir décidé de la destination vers laquelle vous exportez des audiences, vous devez créer une connexion source. La connexion source représente la connexion à la banque de profils Experience Platform interne.
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/sourceConnections' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name":"Connect to Profile store",
"description":"Optional",
"connectionSpec":{
"id":"8a9c3494-9708-43d7-ae3f-cda01e5030e1", // this connection spec ID is always the same for Source Connections
"version":"1.0"
}
}'
Réponse
{
"id": "900df191-b983-45cd-90d5-4c7a0326d650",
"etag": "\"0500ebe1-0000-0200-0000-63e28d060000\""
}
Une réponse réussie renvoie l’identifiant (id
) de la nouvelle connexion source et un etag
. Notez l’identifiant de connexion source, car vous en aurez besoin ultérieurement lors de la création du flux de données.
Créer une connexion de base
Une connexion de base stocke en toute sécurité les informations d’identification vers votre destination. Selon le type de destination, les informations d’identification nécessaires pour s’authentifier sur cette destination peuvent varier. Pour trouver ces paramètres d’authentification, récupérez d’abord les connection spec
correspondant à la destination souhaitée, comme décrit dans la section Sélectionner la destination où exporter des audiences, puis regardez le authSpec
de la réponse. Référencez les onglets ci-dessous pour les propriétés authSpec
de toutes les destinations prises en charge.
Notez la ligne mise en surbrillance avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournit des informations supplémentaires sur l’emplacement des paramètres d’authentification dans connection spec.
{
"items": [
{
"id": "4fce964d-3f37-408f-9778-e597338a21ee",
"name": "amazon-s3",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [
{
"name": "Access Key",
"type": "KeyBased",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Defines auth params required for connecting to amazon-s3",
"type": "object",
"properties": {
"s3AccessKey": {
"description": "Access key id",
"type": "string",
"pattern": "^[A-Z2-7]{20}$"
},
"s3SecretKey": {
"description": "Secret access key for the user account",
"type": "string",
"format": "password",
"pattern": "^[A-Za-z0-9\\/+]{40}$"
}
},
"required": [
"s3SecretKey",
"s3AccessKey"
]
}
},
{
"name": "Assumed Role",
"type": "S3RoleBased",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Defines role based auth params required for connecting to amazon-s3",
"type": "object",
"properties": {
"s3Role": {
"title": "Role",
"description": "S3 role",
"type": "string",
"format": "password"
}
},
"required": [
"s3Role"
]
}
}
],
//...
Notez la ligne mise en surbrillance avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournit des informations supplémentaires sur l’emplacement des paramètres d’authentification dans connection spec.
{
"items": [
{
"id": "6d6b59bf-fb58-4107-9064-4d246c0e5bb2",
"name": "Azure Blob Storage",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [ // describes the authentication parameters
{
"name": "ConnectionString",
"type": "ConnectionString",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Connection String for Azure Blob based destinations",
"type": "object",
"properties": {
"connectionString": {
"description": "connection string for login",
"type": "string",
"format": "password"
}
},
"required": [
"connectionString"
]
}
}
],
//...
Notez la ligne mise en surbrillance avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournit des informations supplémentaires sur l’emplacement des paramètres d’authentification dans connection spec.
{
"items": [
{
"id": "be2c3209-53bc-47e7-ab25-145db8b873e1",
"name": "Azure Data Lake Gen2",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [ // describes the authentication parameters
{
"name": "Azure Service Principal Auth",
"type": "AzureServicePrincipal",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "defines auth params required for connecting to adlsgen2 using service principal",
"type": "object",
"properties": {
"url": {
"description": "Endpoint for Azure Data Lake Storage Gen2.",
"type": "string"
},
"servicePrincipalId": {
"description": "Service Principal Id to connect to ADLSGen2.",
"type": "string"
},
"servicePrincipalKey": {
"description": "Service Principal Key to connect to ADLSGen2.",
"type": "string",
"format": "password"
},
"tenant": {
"description": "Tenant information(domain name or tenant ID).",
"type": "string"
}
},
"required": [
"servicePrincipalKey",
"url",
"tenant",
"servicePrincipalId"
]
}
}
],
//...
{
"items": [
{
"id": "10440537-2a7b-4583-ac39-ed38d4b848e8",
"name": "Data Landing Zone",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [],
//...
Notez la ligne mise en surbrillance avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournit des informations supplémentaires sur l’emplacement des paramètres d’authentification dans connection spec.
{
"items": [
{
"id": "c5d93acb-ea8b-4b14-8f53-02138444ae99",
"name": "Google Cloud Storage",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [ // describes the authentication parameters
{
"name": "Google Cloud Storage authentication credentials",
"type": "GoogleCloudStorageAuth",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "defines auth params required for connecting to google cloud storage connector.",
"type": "object",
"properties": {
"accessKeyId": {
"description": "Access Key Id for the user account",
"type": "string"
},
"secretAccessKey": {
"description": "Secret Access Key for the user account",
"type": "string",
"format": "password"
}
},
"required": [
"accessKeyId",
"secretAccessKey"
]
}
}
],
//...
Notez la ligne mise en surbrillance avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournit des informations supplémentaires sur l’emplacement des paramètres d’authentification dans connection spec.
{
"items": [
{
"id": "36965a81-b1c6-401b-99f8-22508f1e6a26",
"name": "SFTP",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [ // describes the authentication parameters
{
"name": "SFTP with Password",
"type": "SFTP",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "defines auth params required for connecting to sftp locations with a password",
"type": "object",
"properties": {
"domain": {
"description": "Domain of server",
"type": "string"
},
"username": {
"description": "Username",
"type": "string"
},
"password": {
"description": "Password",
"type": "string",
"format": "password"
}
},
"required": [
"password",
"domain",
"username"
]
}
},
{
"name": "SFTP with SSH Key",
"type": "SFTP",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "defines auth params required for connecting to sftp locations using SSH Key",
"type": "object",
"properties": {
"domain": {
"description": "Domain of server",
"type": "string"
},
"username": {
"description": "Username",
"type": "string"
},
"sshKey": {
"description": "Base64 string of the private SSH key",
"type": "string",
"format": "password",
"contentEncoding": "base64",
"uiAttributes": {
"tooltip": {
"id": "platform_destinations_connect_sftp_ssh",
"fallbackUrl": "http://www.adobe.com/go/destinations-sftp-connection-parameters-en "
}
}
}
},
"required": [
"sshKey",
"domain",
"username"
]
}
}
],
//...
En utilisant les propriétés spécifiées dans la spécification d’authentification (c’est-à-dire authSpec
à partir de la réponse), vous pouvez créer une connexion de base avec les informations d’identification requises, spécifiques à chaque type de destination, comme illustré dans les exemples ci-dessous :
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/connections' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Amazon S3 Base Connection",
"auth": {
"specName": "Access Key",
"params": {
"s3SecretKey": "<Add secret key>",
"s3AccessKey": "<Add access key>"
}
},
"connectionSpec": {
"id": "4fce964d-3f37-408f-9778-e597338a21ee", // Amazon S3 connection spec
"version": "1.0"
}
}'
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/connections' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Amazon S3 Base Connection",
"auth": {
"specName": "Assumed Role",
"params": {
"s3Role": "<Add s3 role>"
}
},
"connectionSpec": {
"id": "4fce964d-3f37-408f-9778-e597338a21ee", // Amazon S3 connection spec
"version": "1.0"
}
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/connections' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Azure Blob Storage Base Connection",
"auth": {
"specName": "ConnectionString",
"params": {
"connectionString": "<Add Azure Blob connection string>"
}
},
"connectionSpec": {
"id": "6d6b59bf-fb58-4107-9064-4d246c0e5bb2", // Azure Blob Storage connection spec
"version": "1.0"
}
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/connections' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Azure Data Lake Gen 2(ADLS Gen2) Base Connection",
"auth": {
"specName": "Azure Service Principal Auth",
"params": {
"servicePrincipalKey": "<Add servicePrincipalKey>",
"url": "<Add url>",
"tenant": "<Add tenant>",
"servicePrincipalId": "<Add servicePrincipalId>"
}
},
"connectionSpec": {
"id": "be2c3209-53bc-47e7-ab25-145db8b873e1", // Azure Data Lake Gen 2(ADLS Gen2) connection spec
"version": "1.0"
}
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/connections' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Data Landing Zone(DLZ) Base Connection"
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/connections' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Google Cloud Storage Base Connection",
"auth": {
"specName": "Google Cloud Storage authentication credentials",
"params": {
"accessKeyId": "<Add accessKeyId>",
"secretAccessKey": "<Add secret Access Key>"
}
},
"connectionSpec": {
"id": "c5d93acb-ea8b-4b14-8f53-02138444ae99", // Google Cloud Storage connection spec
"version": "1.0"
}
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/connections' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "SFTP with password Base Connection",
"auth": {
"specName": "SFTP with Password",
"params": {
"domain": "<Add domain>",
"username": "<Add username>",
"password": "<Add password>",
"port": "<Add port>"
}
},
"connectionSpec": {
"id": "36965a81-b1c6-401b-99f8-22508f1e6a26", // SFTP connection spec
"version": "1.0"
}
}'
specName
SFTP with Password
.domain
username
password
port
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/connections' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "SFTP with SSH key Base Connection",
"auth": {
"specName": "SFTP with SSH Key",
"params": {
"domain": "<Add domain>",
"username": "<Add username>",
"sshKey": "<Add SSH key>",
"port": "<Add port>"
}
},
"connectionSpec": {
"id": "36965a81-b1c6-401b-99f8-22508f1e6a26", // SFTP connection spec
"version": "1.0"
}
}'
specName
SFTP with Password
.domain
username
sshKey
port
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Ajout d’un chiffrement aux fichiers exportés
Vous pouvez éventuellement ajouter un chiffrement à vos fichiers exportés. Pour ce faire, vous devez ajouter des éléments de encryptionSpecs
. Consultez l’exemple de requête ci-dessous avec les paramètres obligatoires mis en surbrillance :
"encryptionSpecs": [
{
"name": "File PGP/GPG Encryption",
"type": "FileAsymmetric",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Defines parameters required for capturing user's inputs for encryption",
"type": "object",
"properties": {
"publicKey": {
"description": "Base64 encoded RSA public key",
"type": "string",
"contentEncoding": "base64"
},
"encryptionAlgo": {
"description": "Algorithm for encryption.",
"type": "string",
"default": "PGPGPG",
"enum": [
"PGPGPG",
"NONE"
]
}
},
"required": [
"encryptionAlgo",
"publicKey"
]
}
}
]
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/connections' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "SFTP with SSH key Base Connection",
"auth": {
"specName": "SFTP with SSH Key",
"params": {
"domain": "<Add domain>",
"username": "<Add username>",
"sshKey": "<Add SSH key>"
}
},
"encryptionSpecs":{
"specName": "Encryption spec",
"params": {
"encryptionAlgo":"PGPGPG",
"publicKey":"<Add public key>"
}
},
"connectionSpec": {
"id": "36965a81-b1c6-401b-99f8-22508f1e6a26", // SFTP connection spec
"version": "1.0"
}
}'
Réponse
{
"id": "900df191-b983-45cd-90d5-4c7a0326d650",
"etag": "\"0500ebe1-0000-0200-0000-63e28d060000\""
}
Notez l’identifiant de connexion de la réponse. Cet identifiant sera requis à l’étape suivante lors de la création de la connexion cible.
Créer une connexion cible
Vous devez ensuite créer une connexion cible. Les connexions Target stockent les paramètres d’exportation pour les audiences exportées. Les paramètres d’exportation incluent l’emplacement d’exportation, le format de fichier, la compression et d’autres détails. Par exemple, pour les fichiers CSV, vous pouvez sélectionner plusieurs options d’exportation. Obtenez des informations détaillées sur toutes les options d’exportation CSV prises en charge dans la page de configuration du formatage de fichier.
Reportez-vous aux propriétés targetSpec
fournies dans le connection spec
de la destination pour comprendre les propriétés prises en charge pour chaque type de destination. Référencez les onglets ci-dessous pour les propriétés targetSpec
de toutes les destinations prises en charge.
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournissent des informations supplémentaires sur l’emplacement des paramètres target spec dans la spécification de connexion. Vous pouvez également voir dans l’exemple ci-dessous les paramètres de cible et non applicables aux destinations d’exportation d’audience.
{
"items": [
{
"id": "4fce964d-3f37-408f-9778-e597338a21ee",
"name": "Amazon S3",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [...],
"encryptionSpecs": [...],
"targetSpec": { //describes the target connection parameters
"name": "User based target",
"type": "UserNamespace",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"bucketName": {
"title": "Bucket name",
"description": "Bucket name",
"type": "string",
"pattern": "(?=^.{3,63}$)(?!^(\\d+\\.)+\\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)",
"uiAttributes": {
"tooltip": {
"id": "platform_destinations_connect_s3_bucket",
"fallbackUrl": "http://www.adobe.com/go/destinations-amazon-s3-connection-parameters-en"
}
}
},
"path": {
"title": "Folder path",
"description": "Output path for copying files",
"type": "string",
"pattern": "^[0-9a-zA-Z\/\\!\\-_\\.\\*\\''\\(\\)]*((\\%SEGMENT_(NAME|ID)\\%)?\/?)+$",
"uiAttributes": {
"tooltip": {
"id": "platform_destinations_connect_s3_folderpath",
"fallbackUrl": "http://www.adobe.com/go/destinations-amazon-s3-connection-parameters-en"
}
}
},
"fileType": {
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "NOT_CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"CSV",
"JSON",
"PARQUET"
]
},
"datasetFileType": { // does not apply to audience export destinations
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"JSON",
"PARQUET"
]
},
"csvOptions": {
"conditional": {
"field": "fileType",
"operator": "EQUALS",
"value": "CSV"
},
"title": "CSV Options",
"description": "Select your CSV options",
"type": "object",
"properties": {
"quote": {
"title": "Quote Character",
"description": "Select your Quote character",
"type": "string",
"oneOf": [
{
"title": "Double Quotes (\")",
"const": "\""
},
{
"title":"Null Character (\\)",
"const": ""
}
],
"default": ""
},
"escape": {
"title": "Escape Character",
"description": "Select your Escape character",
"type": "string",
"oneOf": [
{
"title": "Back Slash (\\)",
"const": "\\"
},
{
"title": "Single Quote (')",
"const": "'"
}
],
"default": "\\"
},
"delimiter": {
"title": "Delimiter",
"description": "Select your Delimiter",
"type": "string",
"oneOf": [
{
"title": "Comma (,)",
"const": ","
},
{
"title": "Tab (\\t)",
"const": "\t"
},
{
"title": "Pipe (|)",
"const": "|"
},
{
"title": "Semicolon (;)",
"const": ";"
},
{
"title": "Colon (:)",
"const": ":"
}
],
"default": ","
},
"nullValue": {
"title": "Null Value",
"description": "Select the output value of 'null' fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": "null"
},
"emptyValue": {
"title": "Empty Value",
"description": "Select the output value of blank fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": ""
}
}
},
"compression": {
"title": "Compression format",
"description": "Select the desired file compression format.",
"type": "string",
"enum": [
"NONE",
"GZIP"
]
}
},
"required": [
"bucketName",
"path",
"datasetFileType",
"compression",
"fileType"
]
}
//...
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournissent des informations supplémentaires sur l’emplacement des paramètres target spec dans la spécification de connexion. Vous pouvez également voir dans l’exemple ci-dessous les paramètres de cible et non applicables aux destinations d’exportation d’audience.
{
"items": [
{
"id": "6d6b59bf-fb58-4107-9064-4d246c0e5bb2",
"name": "Azure Blob Storage",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [...],
"encryptionSpecs": [...],
"targetSpec": { // describes the target connection parameters
"name": "User based target",
"type": "UserNamespace",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"path": {
"title": "Folder path",
"description": "Output path (relative) indicating where to upload the data",
"type": "string",
"pattern": "^[0-9a-zA-Z\/\\!\\-_\\.\\*\\'\\(\\)]+$"
},
"container": {
"title": "Container",
"description": "Container within the storage where to upload the data",
"type": "string",
"pattern": "^[a-z0-9](?!.*--)[a-z0-9-]{1,61}[a-z0-9]$"
},
"fileType": {
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "NOT_CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"CSV",
"JSON",
"PARQUET"
]
},
"datasetFileType": { // does not apply to audience export destinations
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"JSON",
"PARQUET"
]
},
"csvOptions": {
"conditional": {
"field": "fileType",
"operator": "EQUALS",
"value": "CSV"
},
"title": "CSV Options",
"description": "Select your CSV options",
"type": "object",
"properties": {
"quote": {
"title": "Quote Character",
"description": "Select your Quote character",
"type": "string",
"oneOf": [
{
"title": "Double Quotes (\")",
"const": "\""
},
{
"title":"Null Character (\\)",
"const": ""
}
],
"default": ""
},
"escape": {
"title": "Escape Character",
"description": "Select your Escape character",
"type": "string",
"oneOf": [
{
"title": "Back Slash (\\)",
"const": "\\"
},
{
"title": "Single Quote (')",
"const": "'"
}
],
"default": "\\"
},
"delimiter": {
"title": "Delimiter",
"description": "Select your Delimiter",
"type": "string",
"oneOf": [
{
"title": "Comma (,)",
"const": ","
},
{
"title": "Tab (\\t)",
"const": "\t"
},
{
"title": "Pipe (|)",
"const": "|"
},
{
"title": "Semicolon (;)",
"const": ";"
},
{
"title": "Colon (:)",
"const": ":"
}
],
"default": ","
},
"nullValue": {
"title": "Null Value",
"description": "Select the output value of 'null' fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": "null"
},
"emptyValue": {
"title": "Empty Value",
"description": "Select the output value of blank fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": ""
}
}
},
"compression": {
"title": "Compression format",
"description": "Select the desired file compression format.",
"type": "string",
"enum": [
"NONE",
"GZIP"
]
}
},
"required": [
"container",
"path",
"datasetFileType",
"compression",
"fileType"
]
}
//...
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournissent des informations supplémentaires sur l’emplacement des paramètres target spec dans la spécification de connexion. Vous pouvez également voir dans l’exemple ci-dessous les paramètres de cible et non applicables aux destinations d’exportation d’audience.
{
"items": [
{
"id": "be2c3209-53bc-47e7-ab25-145db8b873e1",
"name": "Azure Data Lake Gen2",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [...],
"encryptionSpecs": [...],
"targetSpec": { // describes the target connection parameters
"name": "User based target",
"type": "UserNamespace",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"path": {
"title": "Folder path",
"description": "Enter the path to your Azure Data Lake Storage folder",
"type": "string"
},
"fileType": {
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "NOT_CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"CSV",
"JSON",
"PARQUET"
]
},
"datasetFileType": { // does not apply to audience export destinations
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"JSON",
"PARQUET"
]
},
"csvOptions": {
"conditional": {
"field": "fileType",
"operator": "EQUALS",
"value": "CSV"
},
"title": "CSV Options",
"description": "Select your CSV options",
"type": "object",
"properties": {
"quote": {
"title": "Quote Character",
"description": "Select your Quote character",
"type": "string",
"oneOf": [
{
"title": "Double Quotes (\")",
"const": "\""
},
{
"title":"Null Character (\\)",
"const": ""
}
],
"default": ""
},
"escape": {
"title": "Escape Character",
"description": "Select your Escape character",
"type": "string",
"oneOf": [
{
"title": "Back Slash (\\)",
"const": "\\"
},
{
"title": "Single Quote (')",
"const": "'"
}
],
"default": "\\"
},
"delimiter": {
"title": "Delimiter",
"description": "Select your Delimiter",
"type": "string",
"oneOf": [
{
"title": "Comma (,)",
"const": ","
},
{
"title": "Tab (\\t)",
"const": "\t"
},
{
"title": "Pipe (|)",
"const": "|"
},
{
"title": "Semicolon (;)",
"const": ";"
},
{
"title": "Colon (:)",
"const": ":"
}
],
"default": ","
},
"nullValue": {
"title": "Null Value",
"description": "Select the output value of 'null' fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": "null"
},
"emptyValue": {
"title": "Empty Value",
"description": "Select the output value of blank fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": ""
}
}
},
"compression": {
"title": "Compression format",
"description": "Select the desired file compression format.",
"type": "string",
"enum": [
"NONE",
"GZIP"
]
}
},
"required": [
"path",
"datasetFileType",
"compression",
"fileType"
]
}
//...
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournissent des informations supplémentaires sur l’emplacement des paramètres target spec dans la spécification de connexion. Vous pouvez également voir dans l’exemple ci-dessous les paramètres de cible et non applicables aux destinations d’exportation d’audience.
"items": [
{
"id": "10440537-2a7b-4583-ac39-ed38d4b848e8",
"name": "Data Landing Zone",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [],
"encryptionSpecs": [],
"targetSpec": { // describes the target connection parameters
"name": "User based target",
"type": "UserNamespace",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"path": {
"title": "Folder path",
"description": "Enter the path to your Azure Data Lake Storage folder",
"type": "string"
},
"fileType": {
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "NOT_CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"CSV",
"JSON",
"PARQUET"
]
},
"datasetFileType": { // does not apply to audience export destinations
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"JSON",
"PARQUET"
]
},
"csvOptions": {
"conditional": {
"field": "fileType",
"operator": "EQUALS",
"value": "CSV"
},
"title": "CSV Options",
"description": "Select your CSV options",
"type": "object",
"properties": {
"quote": {
"title": "Quote Character",
"description": "Select your Quote character",
"type": "string",
"oneOf": [
{
"title": "Double Quotes (\")",
"const": "\""
},
{
"title":"Null Character (\\)",
"const": ""
}
],
"default": ""
},
"escape": {
"title": "Escape Character",
"description": "Select your Escape character",
"type": "string",
"oneOf": [
{
"title": "Back Slash (\\)",
"const": "\\"
},
{
"title": "Single Quote (')",
"const": "'"
}
],
"default": "\\"
},
"delimiter": {
"title": "Delimiter",
"description": "Select your Delimiter",
"type": "string",
"oneOf": [
{
"title": "Comma (,)",
"const": ","
},
{
"title": "Tab (\\t)",
"const": "\t"
},
{
"title": "Pipe (|)",
"const": "|"
},
{
"title": "Semicolon (;)",
"const": ";"
},
{
"title": "Colon (:)",
"const": ":"
}
],
"default": ","
},
"nullValue": {
"title": "Null Value",
"description": "Select the output value of 'null' fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": "null"
},
"emptyValue": {
"title": "Empty Value",
"description": "Select the output value of blank fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": ""
}
}
},
"compression": {
"title": "Compression format",
"description": "Select the desired file compression format.",
"type": "string",
"enum": [
"NONE",
"GZIP"
]
}
},
"required": [
"path",
"datasetFileType",
"compression",
"fileType"
]
}
//...
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournissent des informations supplémentaires sur l’emplacement des paramètres target spec dans la spécification de connexion. Vous pouvez également voir dans l’exemple ci-dessous les paramètres de cible et non applicables aux destinations d’exportation d’audience.
{
"items": [
{
"id": "c5d93acb-ea8b-4b14-8f53-02138444ae99",
"name": "Google Cloud Storage",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [...],
"encryptionSpecs": [...],
"targetSpec": { // describes the target connection parameters
"name": "User based target",
"type": "UserNamespace",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"bucketName": {
"title": "Bucket name",
"description": "Bucket name",
"type": "string",
"pattern": "(?!^goog.*$)(?!^.*g(o|0)(o|0)gle.*$)(((?=^.{3,63}$)(^([a-z0-9]|[a-z0-9][a-z0-9\\-_]*)[a-z0-9]$))|((?=^.{3,222}$)(?!^(\\d+\\.)+\\d+$)(^(([a-z0-9]{1,63}|[a-z0-9][a-z0-9\\-_]{1,61}[a-z0-9])\\.)*([a-z0-9]{1,63}|[a-z0-9][a-z0-9\\-_]{1,61}[a-z0-9])$)))"
},
"path": {
"title": "Folder path",
"description": "Output path for copying files",
"type": "string",
"pattern": "^[0-9a-zA-Z\/\\!\\-_\\.\\*\\''\\(\\)]*((\\%SEGMENT_(NAME|ID)\\%)?\/?)+$"
},
"fileType": {
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "NOT_CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"CSV",
"JSON",
"PARQUET"
]
},
"datasetFileType": { // does not apply to audience export destinations
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"JSON",
"PARQUET"
]
},
"csvOptions": {
"conditional": {
"field": "fileType",
"operator": "EQUALS",
"value": "CSV"
},
"title": "CSV Options",
"description": "Select your CSV options",
"type": "object",
"properties": {
"quote": {
"title": "Quote Character",
"description": "Select your Quote character",
"type": "string",
"oneOf": [
{
"title": "Double Quotes (\")",
"const": "\""
},
{
"title":"Null Character (\\)",
"const": ""
}
],
"default": ""
},
"escape": {
"title": "Escape Character",
"description": "Select your Escape character",
"type": "string",
"oneOf": [
{
"title": "Back Slash (\\)",
"const": "\\"
},
{
"title": "Single Quote (')",
"const": "'"
}
],
"default": "\\"
},
"delimiter": {
"title": "Delimiter",
"description": "Select your Delimiter",
"type": "string",
"oneOf": [
{
"title": "Comma (,)",
"const": ","
},
{
"title": "Tab (\\t)",
"const": "\t"
},
{
"title": "Pipe (|)",
"const": "|"
},
{
"title": "Semicolon (;)",
"const": ";"
},
{
"title": "Colon (:)",
"const": ":"
}
],
"default": ","
},
"nullValue": {
"title": "Null Value",
"description": "Select the output value of 'null' fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": "null"
},
"emptyValue": {
"title": "Empty Value",
"description": "Select the output value of blank fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": ""
}
}
},
"compression": {
"title": "Compression format",
"description": "Select the desired file compression format.",
"type": "string",
"enum": [
"NONE",
"GZIP"
]
}
},
"required": [
"bucketName",
"path",
"datasetFileType",
"compression",
"fileType"
]
}
//...
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple connection spec ci-dessous, qui fournissent des informations supplémentaires sur l’emplacement des paramètres target spec dans la spécification de connexion. Vous pouvez également voir dans l’exemple ci-dessous les paramètres de cible et non applicables aux destinations d’exportation d’audience.
{
"items": [
{
"id": "36965a81-b1c6-401b-99f8-22508f1e6a26",
"name": "SFTP",
"providerId": "14e34fac-d307-11e9-bb65-2a2ae2dbcce4",
"version": "1.0",
"authSpec": [...],
"encryptionSpecs": [...],
"targetSpec": { // describes the target connection parameters
"name": "User based target",
"type": "UserNamespace",
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"remotePath": {
"title": "Folder path",
"description": "Enter your folder path",
"type": "string"
},
"fileType": {
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "NOT_CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"CSV",
"JSON",
"PARQUET"
]
},
"datasetFileType": { // does not apply to audience export destinations
"conditional": {
"field": "flowSpec.attributes._workflow",
"operator": "CONTAINS",
"value": "DATASETS"
},
"title": "File Type",
"description": "Select file format",
"type": "string",
"enum": [
"JSON",
"PARQUET"
]
},
"csvOptions": {
"conditional": {
"field": "fileType",
"operator": "EQUALS",
"value": "CSV"
},
"title": "CSV Options",
"description": "Select your CSV options",
"type": "object",
"properties": {
"quote": {
"title": "Quote Character",
"description": "Select your Quote character",
"type": "string",
"oneOf": [
{
"title": "Double Quotes (\")",
"const": "\""
},
{
"title":"Null Character (\\)",
"const": ""
}
],
"default": ""
},
"escape": {
"title": "Escape Character",
"description": "Select your Escape character",
"type": "string",
"oneOf": [
{
"title": "Back Slash (\\)",
"const": "\\"
},
{
"title": "Single Quote (')",
"const": "'"
}
],
"default": "\\"
},
"delimiter": {
"title": "Delimiter",
"description": "Select your Delimiter",
"type": "string",
"oneOf": [
{
"title": "Comma (,)",
"const": ","
},
{
"title": "Tab (\\t)",
"const": "\t"
},
{
"title": "Pipe (|)",
"const": "|"
},
{
"title": "Semicolon (;)",
"const": ";"
},
{
"title": "Colon (:)",
"const": ":"
}
],
"default": ","
},
"nullValue": {
"title": "Null Value",
"description": "Select the output value of 'null' fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": "null"
},
"emptyValue": {
"title": "Empty Value",
"description": "Select the output value of blank fields",
"type": "string",
"oneOf": [
{
"title": "null",
"const": "null"
},
{
"title": "\"\"",
"const": "\"\""
},
{
"title": "Empty String",
"const": ""
}
],
"default": ""
}
}
},
"compression": {
"title": "Compression format",
"description": "Select the desired file compression format.",
"type": "string",
"enum": [
"GZIP",
"NONE"
]
}
},
"required": [
"remotePath",
"datasetFileType",
"compression",
"fileType"
]
},
//...
En utilisant la spécification ci-dessus, vous pouvez créer une requête de connexion cible spécifique à la destination de stockage dans le cloud souhaitée, comme indiqué dans les onglets ci-dessous.
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Amazon S3 Target Connection",
"baseConnectionId": "<FROM_STEP_CREATE_BASE_CONNECTION>",
"params": {
"mode": "Server-to-server",
"bucketName": "your-bucket-name",
"path": "folder/subfolder",
"compression": "NONE",
"fileType": "JSON"
},
"connectionSpec": {
"id": "4fce964d-3f37-408f-9778-e597338a21ee", // Amazon S3 connection spec id
"version": "1.0"
}
}'
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name":"Amazon S3 Target Connection",
"baseConnectionId":"<FROM_STEP_CREATE_BASE_CONNECTION>",
"params":{
"mode":"Server-to-server",
"bucketName":"your-bucket-name",
"path":"folder/subfolder",
"compression":"GZIP",
"fileType":"CSV",
"csvOptions":{
"nullValue":"null",
"emptyValue":"",
"escape":"\\",
"quote":"",
"delimiter":","
}
},
"connectionSpec":{
"id":"4fce964d-3f37-408f-9778-e597338a21ee",
"version":"1.0"
}
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Azure Blob Storage Target Connection",
"baseConnectionId": "<FROM_STEP_CREATE_BASE_CONNECTION>",
"params": {
"mode": "Server-to-server",
"container": "your-container-name",
"path": "folder/subfolder",
"compression": "NONE",
"fileType": "JSON"
},
"connectionSpec": {
"id": "6d6b59bf-fb58-4107-9064-4d246c0e5bb2", // Azure Blob Storage connection spec id
"version": "1.0"
}
}'
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name":"Azure Blob Storage Target Connection",
"baseConnectionId":"<FROM_STEP_CREATE_BASE_CONNECTION>",
"params":{
"mode":"Server-to-server",
"bucketName":"your-bucket-name",
"path":"folder/subfolder",
"compression":"GZIP",
"fileType":"CSV",
"csvOptions":{
"nullValue":"null",
"emptyValue":"",
"escape":"\\",
"quote":"",
"delimiter":","
}
},
"connectionSpec":{
"id":"6d6b59bf-fb58-4107-9064-4d246c0e5bb2",
"version":"1.0"
}
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Azure Data Lake Gen 2(ADLS Gen2) Target Connection",
"baseConnectionId": "<FROM_STEP_CREATE_BASE_CONNECTION>",
"params": {
"mode": "Server-to-server",
"path": "folder/subfolder",
"compression": "NONE",
"fileType": "JSON"
},
"connectionSpec": {
"id": "be2c3209-53bc-47e7-ab25-145db8b873e1", // Azure Data Lake Gen 2(ADLS Gen2) connection spec id
"version": "1.0"
}
}'
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name":"Azure Data Lake Gen 2(ADLS Gen2)",
"baseConnectionId":"<FROM_STEP_CREATE_BASE_CONNECTION>",
"params":{
"mode":"Server-to-server",
"bucketName":"your-bucket-name",
"path":"folder/subfolder",
"compression":"GZIP",
"fileType":"CSV",
"csvOptions":{
"nullValue":"null",
"emptyValue":"",
"escape":"\\",
"quote":"",
"delimiter":","
}
},
"connectionSpec":{
"id":"be2c3209-53bc-47e7-ab25-145db8b873e1",
"version":"1.0"
}
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Data Landing Zone Target Connection",
"baseConnectionId": "<FROM_STEP_CREATE_BASE_CONNECTION>",
"params": {
"mode": "Server-to-server",
"path": "folder/subfolder",
"compression": "NONE",
"fileType": "JSON"
},
"connectionSpec": {
"id": "10440537-2a7b-4583-ac39-ed38d4b848e8", // Data Landing Zone connection spec id
"version": "1.0"
}
}'
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name":"Data Landing Zone Target Connection",
"baseConnectionId":"<FROM_STEP_CREATE_BASE_CONNECTION>",
"params":{
"mode":"Server-to-server",
"bucketName":"your-bucket-name",
"path":"folder/subfolder",
"compression":"GZIP",
"fileType":"CSV",
"csvOptions":{
"nullValue":"null",
"emptyValue":"",
"escape":"\\",
"quote":"",
"delimiter":","
}
},
"connectionSpec":{
"id":"10440537-2a7b-4583-ac39-ed38d4b848e8",
"version":"1.0"
}
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Google Cloud Storage Target Connection",
"baseConnectionId": "<FROM_STEP_CREATE_BASE_CONNECTION>",
"params": {
"mode": "Server-to-server",
"bucketName": "your-bucket-name",
"path": "folder/subfolder",
"compression": "NONE",
"fileType": "JSON"
},
"connectionSpec": {
"id": "c5d93acb-ea8b-4b14-8f53-02138444ae99", // Google Cloud Storage connection spec id
"version": "1.0"
}
}'
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name":"Google Cloud Storage Target Connection",
"baseConnectionId":"<FROM_STEP_CREATE_BASE_CONNECTION>",
"params":{
"mode":"Server-to-server",
"bucketName":"your-bucket-name",
"path":"folder/subfolder",
"compression":"GZIP",
"fileType":"CSV",
"csvOptions":{
"nullValue":"null",
"emptyValue":"",
"escape":"\\",
"quote":"",
"delimiter":","
}
},
"connectionSpec":{
"id":"c5d93acb-ea8b-4b14-8f53-02138444ae99",
"version":"1.0"
}
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "SFTP Target Connection",
"baseConnectionId": "<FROM_STEP_CREATE_BASE_CONNECTION>",
"params": {
"mode": "Server-to-server",
"remotePath": "folder/subfolder",
"compression": "NONE",
"fileType": "JSON"
},
"connectionSpec": {
"id": "36965a81-b1c6-401b-99f8-22508f1e6a26", // SFTP connection spec id
"version": "1.0"
}
}'
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name":"SFTP Target Connection",
"baseConnectionId":"<FROM_STEP_CREATE_BASE_CONNECTION>",
"params":{
"mode":"Server-to-server",
"bucketName":"your-bucket-name",
"path":"folder/subfolder",
"compression":"GZIP",
"fileType":"CSV",
"csvOptions":{
"nullValue":"null",
"emptyValue":"",
"escape":"\\",
"quote":"",
"delimiter":","
}
},
"connectionSpec":{
"id":"36965a81-b1c6-401b-99f8-22508f1e6a26",
"version":"1.0"
}
}'
Réponse
{
"id": "12401496-2573-4ca7-8137-fef1aeb9dd4c",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Notez le target connection ID
de la réponse. Cet identifiant sera requis à l’étape suivante lors de la création du flux de données pour exporter des audiences.
Une réponse réussie renvoie l’identifiant (id
) de la nouvelle connexion source cible et un etag
. Notez l’identifiant de connexion cible, car vous en aurez besoin ultérieurement lors de la création du flux de données.
Créer un flux de données
L’étape suivante de la configuration de destination consiste à créer un flux de données. Un flux de données relie les entités créées précédemment et fournit également des options pour configurer le planning d’exportation de l’audience. Pour créer le flux de données, utilisez les payloads ci-dessous, en fonction de la destination de stockage dans le cloud souhaitée, et remplacez les identifiants d’entité de flux des étapes précédentes. Notez que dans cette étape, vous n’ajoutez aucune information relative à l’attribut ou au mappage d’identité au flux de données. Cela va suivre l'étape suivante.
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/flows' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Activate audiences to an Amazon S3 cloud storage destination",
"description": "This operation creates a dataflow to export audiences to an Amazon S3 cloud storage destination",
"flowSpec": {
"id": "1a0514a6-33d4-4c7f-aff8-594799c47549", // Amazon S3 flow spec ID
"version": "1.0"
},
"sourceConnectionIds": [
"<FROM_STEP_CREATE_SOURCE_CONNECTION>"
],
"targetConnectionIds": [
"<FROM_STEP_CREATE_TARGET_CONNECTION>"
],
"transformations": []
}'
Réponse
{
"id": "eb54b3b3-3949-4f12-89c8-64eafaba858f",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/flows' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Activate audiences to an Azure Blob Storage cloud storage destination",
"description": "This operation creates a dataflow to export audiences to an Azure Blob Storage cloud storage destination",
"flowSpec": {
"id": "752d422f-b16f-4f0d-b1c6-26e448e3b388", // Azure Blob Storage flow spec ID
"version": "1.0"
},
"sourceConnectionIds": [
"<FROM_STEP_CREATE_SOURCE_CONNECTION>"
],
"targetConnectionIds": [
"<FROM_STEP_CREATE_TARGET_CONNECTION>"
],
"transformations": [
{
"name": "GeneralTransform",
"params": {
"mandatoryFields": [],
"primaryFields": [],
"profileMapping": {},
"segmentSelectors": {
"selectors": []
}
}
}
]
}'
Réponse
{
"id": "eb54b3b3-3949-4f12-89c8-64eafaba858f",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/flows' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Activate audiences to an Azure Data Lake Gen 2(ADLS Gen2) cloud storage destination",
"description": "This operation creates a dataflow to export audiences to an Azure Data Lake Gen 2(ADLS Gen2) cloud storage destination",
"flowSpec": {
"id": "17be2013-2549-41ce-96e7-a70363bec293", // Azure Data Lake Gen 2(ADLS Gen2) flow spec ID
"version": "1.0"
},
"sourceConnectionIds": [
"<FROM_STEP_CREATE_SOURCE_CONNECTION>"
],
"targetConnectionIds": [
"<FROM_STEP_CREATE_TARGET_CONNECTION>"
],
"transformations": []
}'
Réponse
{
"id": "eb54b3b3-3949-4f12-89c8-64eafaba858f",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/flows' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Activate audiences to a Data Landing Zone cloud storage destination",
"description": "This operation creates a dataflow to export audiences to a Data Landing Zone cloud storage destination",
"flowSpec": {
"id": "cd2fc47e-e838-4f38-a581-8fff2f99b63a", // Data Landing Zone flow spec ID
"version": "1.0"
},
"sourceConnectionIds": [
"<FROM_STEP_CREATE_SOURCE_CONNECTION>"
],
"targetConnectionIds": [
"<FROM_STEP_CREATE_TARGET_CONNECTION>"
],
"transformations": []
}'
Réponse
{
"id": "eb54b3b3-3949-4f12-89c8-64eafaba858f",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/flows' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Activate audiences to a Google Cloud Storage cloud storage destination",
"description": "This operation creates a dataflow to export audiences to a Google Cloud Storage destination",
"flowSpec": {
"id": "585c15c4-6cbf-4126-8f87-e26bff78b657", // Google Cloud Storage flow spec ID
"version": "1.0"
},
"sourceConnectionIds": [
"<FROM_STEP_CREATE_SOURCE_CONNECTION>"
],
"targetConnectionIds": [
"<FROM_STEP_CREATE_TARGET_CONNECTION>"
],
"transformations": []
}'
Réponse
{
"id": "eb54b3b3-3949-4f12-89c8-64eafaba858f",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Requête
Notez les lignes surlignées avec des commentaires intégrés dans l’exemple de requête, qui fournissent des informations supplémentaires. Supprimez les commentaires insérés dans la requête lorsque vous copiez-collez la requête dans votre terminal de votre choix.
curl --location --request POST 'https://platform.adobe.io/data/foundation/flowservice/flows' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw '{
"name": "Activate audiences to an SFTP cloud storage destination",
"description": "This operation creates a dataflow to export audiences to an SFTP cloud storage destination",
"flowSpec": {
"id": "fd36aaa4-bf2b-43fb-9387-43785eeeb799", // SFTP flow spec ID
"version": "1.0"
},
"sourceConnectionIds": [
"<FROM_STEP_CREATE_SOURCE_CONNECTION>"
],
"targetConnectionIds": [
"<FROM_STEP_CREATE_TARGET_CONNECTION>"
],
"transformations": []
}'
Réponse
{
"id": "eb54b3b3-3949-4f12-89c8-64eafaba858f",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Notez l’identifiant du flux de données de la réponse. Cet identifiant sera nécessaire lors d’étapes ultérieures.
Ajouter des audiences à l'export
Au cours de cette étape, vous pouvez également sélectionner les audiences à exporter vers la destination. Pour obtenir des informations détaillées sur cette étape et le format de requête afin d’ajouter une audience au flux de données, consultez les exemples de la section Mise à jour d’un flux de données de destination de la documentation de référence de l’API.
Configuration du mappage des attributs et des identités
Après avoir créé votre flux de données, vous devez configurer le mappage pour les attributs et les identités que vous souhaitez exporter. Il comprend trois étapes, répertoriées ci-dessous :
- Création d’un schéma d’entrée
- Création d’un schéma de sortie
- Configuration d’un jeu de mappages pour connecter les schémas créés
Par exemple, pour obtenir le mappage suivant affiché dans l’interface utilisateur, vous devez passer en revue les trois étapes répertoriées ci-dessus et détaillées dans les en-têtes suivants.
Création d’un schéma d’entrée
Pour créer un schéma d’entrée, vous devez d’abord récupérer votre schéma d’union et les identités qui peuvent être exportées vers la destination. Il s’agit du schéma des attributs et des identités que vous pouvez sélectionner comme mapping source.
Vous trouverez ci-dessous des exemples de requêtes et de réponses pour récupérer des attributs et des identités.
Requête pour obtenir des attributs
curl --location --request GET 'https://platform.adobe.io/data/core/ups/config/entityTypes/_xdm.context.profile?property=fullSchema==true&property=includeRelationshipDescriptors==true' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
Réponse
La réponse ci-dessous a été raccourcie pour plus de concision.
"person": {
"title": "Person",
"description": "An individual actor, contact, or owner.",
"meta:referencedFrom": [
"https://ns.adobe.com/xdm/context/person"
],
"type": "object",
"meta:xdmType": "object",
"properties": {
"birthDate": {
"meta:xdmType": "date",
"type": "string",
"format": "date",
"title": "Birth date(YYYY-MM-DD)",
"description": "The full date a person was born."
},
"birthDayAndMonth": {
"type": "string",
"meta:xdmType": "string",
"title": "Birth date (MM-DD)",
"description": "The day and month a person was born, in the format MM-DD. This field should be used when the day and month of a person's birth is known, but not the year."
},
"birthYear": {
"meta:xdmType": "short",
"type": "integer",
"minimum": 1,
"maximum": 32767,
"title": "Birth year",
"description": "The year a person was born including the century, for example, 1983. This field should be used when only the person's age is known, not the full birth date."
},
"gender": {
"type": "string",
"meta:xdmType": "string",
"title": "Gender",
"description": "Gender identity of the person.\n",
"enum": [
"male",
"female",
"not_specified",
"non_specific"
],
"meta:enum": {
"male": "Male",
"female": "Female",
"not_specified": "Not Specified",
"non_specific": "Non-specific"
},
"default": "not_specified"
},
"maritalStatus": {
"type": "string",
"meta:xdmType": "string",
"title": "Marital Status",
"description": "Describes a person's relationship with a significant other.",
"enum": [
"married",
"single",
"divorced",
"widowed",
"not_specified"
],
"meta:enum": {
"divorced": "Divorced",
"not_specified": "Not Specified",
"married": "Married",
"single": "Single",
"widowed": "Widowed"
},
"default": "not_specified"
},
"name": {
"title": "Full name",
"description": "The person's full name.",
"meta:referencedFrom": [
"https://ns.adobe.com/xdm/context/person-name"
],
"type": "object",
"meta:xdmType": "object",
"properties": {
"courtesyTitle": {
"type": "string",
"meta:xdmType": "string",
"title": "Courtesy title",
"description": "Normally an abbreviation of a persons title, honorific, or salutation. The `courtesyTitle` is used in front of full or last name in opening texts. For example, Mr. Miss. or Dr."
},
"firstName": {
"type": "string",
"meta:xdmType": "string",
"title": "First name",
"description": "The first audience of the name in the writing order most commonly accepted in the language of the name. In many cultures this is the preferred personal or given name. The `firstName` and `lastName` properties have been introduced to maintain compatibility with existing systems that model names in a simplified, non-semantic, and non-internationalizable way. Using `xdm:fullName` is always preferable."
},
"fullName": {
"type": "string",
"meta:xdmType": "string",
"title": "Full name",
"description": "The full name of the person, in writing order most commonly accepted in the language of the name."
},
"lastName": {
"type": "string",
"meta:xdmType": "string",
"title": "Last name",
"description": "The last audience of the name in the writing order most commonly accepted in the language of the name. In many cultures this is the inherited family name, surname, patronymic, or matronymic name. The `firstName` and `lastName` properties have been introduced to maintain compatibility with existing systems that model names in a simplified, non-semantic, and non-internationalizable way. Using `xdm:fullName` is always preferable."
},
"middleName": {
"type": "string",
"meta:xdmType": "string",
"title": "Middle name",
"description": "Middle, alternative, or additional names supplied between the first name and last name."
},
"suffix": {
"type": "string",
"meta:xdmType": "string",
"title": "Suffix",
"description": "A group of letters provided after a person's name to provide additional information. The `suffix` is used at the end of someones name. For example Jr., Sr., M.D., PhD, I, II, III, etc."
}
}
},
"nationality": {
"type": "string",
"meta:xdmType": "string",
"title": "Nationality",
"description": "The legal relationship between a person and their state represented using the ISO 3166-1 Alpha-2 code."
},
"taxId": {
"type": "string",
"meta:xdmType": "string",
"title": "Tax ID",
"description": "The Tax / Fiscal ID of the person, e.g. the TIN in the US or the CIF/NIF in Spain.",
"meta:status": "deprecated"
},
"type": {
"type": "string",
"meta:xdmType": "string",
"title": "Type",
"description": "The type of individual in different business contexts like B2C."
}
}
}
Demande d’obtention d’identités
curl --location --request GET 'https://platform.adobe.io/data/core/idnamespace/identities' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
Réponse
La réponse renvoie les identités que vous pouvez utiliser lors de la création du schéma d’entrée. Notez que cette réponse renvoie les espaces de noms d’identité standard et custom que vous avez configurés dans Experience Platform.
[
{
"updateTime": 1551688425455,
"code": "CORE",
"status": "ACTIVE",
"description": "Adobe Audience Manger UUID",
"id": 0,
"createTime": 1551688425455,
"idType": "COOKIE",
"namespaceType": "Standard",
"name": "CORE",
"custom": false
},
{
"updateTime": 1551688425455,
"code": "ECID",
"status": "ACTIVE",
"description": "Adobe Experience Cloud ID",
"id": 4,
"createTime": 1551688425455,
"idType": "COOKIE",
"namespaceType": "Standard",
"name": "ECID",
"custom": false
},
{
"updateTime": 1551688425455,
"code": "AdCloud",
"status": "ACTIVE",
"description": "Adobe AdCloud - ID Syncing Partner",
"id": 411,
"createTime": 1551688425455,
"idType": "COOKIE",
"namespaceType": "Standard",
"name": "AdCloud",
"custom": false
},
{
"updateTime": 1551688425455,
"code": "Email_LC_SHA256",
"status": "ACTIVE",
"description": "Email addresses need to be hashed using SHA256 and lowercased. Please also note that leading and trailing spaces need to be trimmed before an email address is normalized. You won't be able to change this setting later",
"id": 11,
"createTime": 1551688425455,
"idType": "Email",
"namespaceType": "Standard",
"name": "Emails (SHA256, lowercased)",
"custom": false,
"hashFunction": "SHA256",
"transform": "lowercase"
},
{
"updateTime": 1597996026101,
"code": "Phone_E.164",
"status": "ACTIVE",
"description": "Namespace for raw phone numbers in E.164 format. + sign is required",
"id": 17,
"createTime": 1597996026101,
"idType": "Phone",
"namespaceType": "Standard",
"name": "Phone (E.164)",
"custom": false
},
{
"updateTime": 1551688425455,
"code": "GAID",
"status": "ACTIVE",
"description": "This datasource is associated to a Google Ad ID",
"id": 20914,
"createTime": 1551688425455,
"idType": "DEVICE",
"namespaceType": "Standard",
"name": "Google Ad ID (GAID)",
"custom": false
},
{
"updateTime": 1476993749000,
"code": "IDFA",
"status": "ACTIVE",
"description": "Apple ID for Advertisers. See: https://support.apple.com/en-us/HT202074 for more info.",
"id": 20915,
"createTime": 1476993749000,
"idType": "DEVICE",
"namespaceType": "Standard",
"name": "Apple IDFA (ID for Advertisers)",
"custom": false
},
{
"updateTime": 1551688425455,
"code": "AAID",
"status": "ACTIVE",
"description": "Adobe Analytics (Legacy ID)",
"id": 10,
"createTime": 1551688425455,
"idType": "COOKIE",
"namespaceType": "Standard",
"name": "Adobe Analytics (Legacy ID)",
"custom": false
},
{
"updateTime": 1551688425455,
"code": "Email",
"status": "ACTIVE",
"description": "Email",
"id": 6,
"createTime": 1551688425455,
"idType": "Email",
"namespaceType": "Standard",
"name": "Email",
"custom": false
},
{
"updateTime": 1551688425455,
"code": "WAID",
"status": "ACTIVE",
"description": "Windows AID",
"id": 8,
"createTime": 1551688425455,
"idType": "DEVICE",
"namespaceType": "Standard",
"name": "Windows AID",
"custom": false
},
{
"updateTime": 1551688425455,
"code": "TNTID",
"status": "ACTIVE",
"description": "Adobe Target (TNTID)",
"id": 9,
"createTime": 1551688425455,
"idType": "COOKIE",
"namespaceType": "Standard",
"name": "TNTID",
"custom": false
},
{
"updateTime": 1556676464714,
"code": "Google",
"status": "ACTIVE",
"id": 771,
"createTime": 1556676464714,
"idType": "COOKIE",
"namespaceType": "Integration",
"name": "Google",
"custom": false
},
{
"updateTime": 1604597776019,
"code": "Phone_SHA256_E.164",
"status": "ACTIVE",
"description": "Phone numbers need to be hashed using SHA256 without any dashes. Hash should be completed by customers on raw phone numbers in E.164 format. Please note that some destinations may have different phone number formatting requirements. Refer to documentation or consult your Adobe representative",
"id": 18,
"createTime": 1604597776019,
"idType": "Phone",
"namespaceType": "Standard",
"name": "Phone (SHA256_E.164)",
"custom": false,
"hashFunction": "SHA256"
},
{
"updateTime": 1604597776019,
"code": "Phone_SHA256",
"status": "ACTIVE",
"description": "Remove symbols, letters, and any leading zeroes before hashing. Prefix the country code before hashing. Please note that some destinations may have different phone number formatting requirements. Refer to documentation or consult your Adobe representative",
"id": 15,
"createTime": 1597995542594,
"idType": "Phone",
"namespaceType": "Standard",
"name": "Phone (SHA256)",
"custom": false,
"hashFunction": "SHA256"
},
{
"updateTime": 1551688425455,
"code": "Phone",
"status": "ACTIVE",
"description": "Phone",
"id": 7,
"createTime": 1551688425455,
"idType": "PHONE_NUMBER",
"namespaceType": "Standard",
"name": "Phone",
"custom": false
}
]
Ensuite, vous devez copier la réponse ci-dessus et l’utiliser pour créer votre schéma d’entrée. Vous pouvez copier la réponse JSON entière de la réponse ci-dessus et la placer dans l’objet jsonSchema
indiqué ci-dessous.
Demande de création d’un schéma d’entrée
curl --location --request POST 'https://platform.adobe.io/data/foundation/conversion/schemas/' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name":"Sample Schema for Flow Mapping",
"jsonSchema":{...insert response from union schema response here}
'
Réponse
{
"id":"8db56468c2ab475dbf17c2621f92c0f8",
"version":0,
"jsonSchema":{
"title":"XDM Individual Profile",
"description":"An XDM Individual Profile forms a singular representation of the attributes and interests of both identified and partially-identified individuals. Less-identified profiles may contain only anonymous behavioral signals, such as browser cookies, while highly-identified profiles may contain detailed personal information such as name, date of birth, location, and email address. As a profile grows, it becomes a robust repository of personal information, identification information, contact details, and communication preferences for an individual.",
"type":"object",
"properties":{ // this section returns the contents that you have added to the jsonSchema object in the request
}
}
}
L’identifiant dans la réponse représente l’identifiant unique du schéma d’entrée que vous avez créé. Copiez l’identifiant de la réponse, car vous le réutiliserez ultérieurement.
Création d’un schéma de sortie
Vous devez ensuite configurer le schéma de sortie de votre export. Tout d’abord, vous devez rechercher et examiner votre schéma de partenaire existant.
Requête
Notez que l’exemple ci-dessous utilise connection spec ID
pour Amazon S3. Remplacez cette valeur par l’identifiant de spécification de connexion spécifique à votre destination.
curl --location --request GET 'https://platform.adobe.io/data/foundation/flowservice/connectionSpecs/4fce964d-3f37-408f-9778-e597338a21ee' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-api-key: {API_KEY}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
Réponse avec un exemple de schéma
Inspect la réponse que vous obtenez lorsque vous effectuez l’appel ci-dessus. Vous devez descendre dans la hiérarchie de la réponse pour trouver l'objet targetSpec.attributes.partnerSchema.jsonSchema
{
"title":"defaultschema",
"type":"object",
"properties":{
"attributes":{
"type":"object",
"meta:xdmType":"map",
"additionalProperties":{
"type":"object",
"properties":{
"value":{
"type":"string",
"title":"Value"
}
},
"meta:xdmType":"object"
}
},
"identityMap":{
"type":"object",
"meta:xdmField":"xdm:identityMap",
"meta:xdmType":"map",
"additionalProperties":{
"type":"array",
"items":{
"type":"object",
"properties":{
"id":{
"type":"string",
"title":"Identifier",
"description":"Identity of the consumer in the related namespace.",
"meta:xdmType":"string",
"meta:xdmField":"xdm:id"
},
"primary":{
"type":"boolean",
"title":"Primary",
"default":false,
"description":"Indicates this identity is the preferred identity. Is used as a hint to help systems better organize how identities are queried.",
"meta:xdmType":"boolean",
"meta:xdmField":"xdm:primary"
},
"authenticatedState":{
"enum":[
"ambiguous",
"authenticated",
"loggedOut"
],
"type":"string",
"default":"ambiguous",
"meta:enum":{
"ambiguous":"Ambiguous",
"loggedOut":"User was identified by a login action at some point of time previously, but is not currently logged in.",
"authenticated":"User identified by a login or similar action that was valid at the time of the event observation."
},
"description":"The state this identity is authenticated as for this observed ExperienceEvent.",
"meta:xdmType":"string",
"meta:xdmField":"xdm:authenticatedState"
}
},
"meta:xdmType":"object",
"meta:referencedFrom":"https://ns.adobe.com/xdm/context/identityitem"
},
"meta:xdmType":"array"
}
},
"segmentMembership":{
"title":"Segment membership map",
"type":"object",
"meta:xdmField":"xdm:segmentMembership",
"meta:xdmType":"map",
"additionalProperties":{
"type":"object",
"title":"Segment membership per namespace",
"meta:xdmType":"map",
"additionalProperties":{
"type":"object",
"properties":{
"status":{
"enum":[
"realized",
"exited"
],
"type":"string",
"title":"Status",
"default":"realized",
"meta:enum":{
"exited":"Entity is exiting the segment.",
"realized":"Entity is entering the segment."
},
"description":"Is the audience participation realized as part of the current request.",
"meta:xdmType":"string",
"meta:xdmField":"xdm:status"
},
"payload":{
"type":"object",
"title":"Payload",
"required":[
"payloadType"
],
"properties":{
"payloadType":{
"enum":[
"boolean",
"number",
"propensity",
"string"
],
"type":"string",
"title":"Payload Type",
"meta:enum":{
"number":"Number",
"string":"String",
"boolean":"Boolean",
"propensity":"Propensity"
},
"description":"The type of payload.",
"meta:xdmType":"string",
"meta:xdmField":"xdm:payloadType"
},
"payloadNumberValue":{
"type":"number",
"title":"Value",
"description":"The number.",
"meta:xdmType":"number",
"meta:xdmField":"xdm:payloadNumberValue"
},
"payloadStringValue":{
"type":"string",
"title":"Value",
"description":"The string value.",
"meta:xdmType":"string",
"meta:xdmField":"xdm:payloadStringValue"
},
"payloadBooleanValue":{
"type":"boolean",
"title":"Value",
"description":"The boolean value.",
"meta:xdmType":"boolean",
"meta:xdmField":"xdm:payloadBooleanValue"
},
"payloadPropensityValue":{
"type":"number",
"title":"Value",
"maximum":1,
"description":"The propensity.",
"meta:xdmType":"number",
"meta:xdmField":"xdm:payloadPropensityValue",
"exclusiveMinimum":0
}
},
"description":"Values that are directly related with the audience realization. This payload exists with the same 'validUntil' as the audience realization. Note that the intention is that exactly one payload value be included, as indicated by the payload type. This was originally modeled using 'oneOf', but due to limitations in our tooling that was removed. This more semantically meaningful representation will be re-introduced in the future.",
"meta:xdmType":"object",
"meta:xdmField":"xdm:payload"
},
"version":{
"type":"string",
"title":"Version",
"description":"The version of the audience definition used in this audience assertion. Version can be omitted in audience lists when all memberships versions are the same.",
"meta:xdmType":"string",
"meta:xdmField":"xdm:version"
},
"segmentID":{
"type":"object",
"title":"Segment ID",
"properties":{
"_id":{
"type":"string",
"title":"Identifier",
"format":"uri-reference",
"description":"Identity of the audience in the related namespace.",
"meta:xdmType":"string",
"meta:xdmField":"@id"
},
"xid":{
"type":"string",
"title":"Experience identifier",
"description":"When present, this value represents a cross-namespace identifier that is unique across all namespace-scoped identifiers in all namespaces.",
"meta:xdmType":"string",
"meta:xdmField":"xdm:xid"
},
"namespace":{
"type":"object",
"title":"Namespace",
"required":[
"code"
],
"properties":{
"code":{
"type":"string",
"title":"Code",
"description":"The code is a human readable identifier for the namespace and can be used to request the technical namespace id which is used for identity graph processing.",
"meta:xdmType":"string",
"meta:xdmField":"xdm:code"
}
},
"description":"The namespace associated with the `xid` attribute.",
"meta:xdmType":"object",
"meta:xdmField":"xdm:namespace",
"meta:referencedFrom":"https://ns.adobe.com/xdm/context/namespace"
}
},
"description":"The identity of the audience or snapshot definition in with the domain of the specific system that processes that type of segment. Deprecated.",
"meta:status":"deprecated",
"meta:xdmType":"object",
"meta:xdmField":"xdm:segmentID",
"meta:referencedFrom":"https://ns.adobe.com/xdm/context/segmentidentity"
},
"validUntil":{
"type":"string",
"title":"Valid until",
"format":"date-time",
"description":"The timestamp for when the audienceassertion should no longer be assumed to be valid and should either be ignored or revalidated.",
"meta:xdmType":"date-time",
"meta:xdmField":"xdm:validUntil"
},
"profileStitchID":{
"type":"object",
"properties":{
"_id":{
"type":"string",
"title":"Identifier",
"format":"uri-reference",
"description":"Identity of the profile stitch in the related namespace.",
"meta:xdmType":"string",
"meta:xdmField":"@id"
},
"xid":{
"type":"string",
"title":"Experience identifier",
"description":"When present, this value represents a cross-namespace identifier that is unique across all namespace-scoped identifiers in all namespaces.",
"meta:xdmType":"string",
"meta:xdmField":"xdm:xid"
},
"namespace":{
"type":"object",
"title":"Namespace",
"required":[
"code"
],
"properties":{
"code":{
"type":"string",
"title":"Code",
"description":"The code is a human readable identifier for the namespace and can be used to request the technical namespace id which is used for identity graph processing.",
"meta:xdmType":"string",
"meta:xdmField":"xdm:code"
}
},
"description":"The namespace associated with the `xid` attribute.",
"meta:xdmType":"object",
"meta:xdmField":"xdm:namespace",
"meta:referencedFrom":"https://ns.adobe.com/xdm/context/namespace"
}
},
"meta:xdmType":"object",
"meta:xdmField":"xdm:profileStitchID",
"meta:referencedFrom":"https://ns.adobe.com/xdm/context/profileStitchIdentity"
},
"lastQualificationTime":{
"type":"string",
"title":"Last qualification time",
"format":"date-time",
"description":"The timestamp when the assertion of audience membership was made.",
"meta:xdmType":"date-time",
"meta:xdmField":"xdm:lastQualificationTime"
}
},
"meta:xdmType":"object",
"meta:referencedFrom":"https://ns.adobe.com/xdm/context/segmentmembership"
}
}
}
}
}
Vous devez ensuite créer un schéma de sortie. Copiez la réponse JSON ci-dessus et collez-la dans l’objet jsonSchema
ci-dessous.
Requête
curl --location --request POST 'https://platform.adobe.io/data/foundation/conversion/schemas' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Sample Schema for Flow Mapping",
"jsonSchema":{...insert JSON from the response above here}
}
'
Réponse
{
"id": "2f4fd51934c1409fb1d8207dd9f43dc9",
"version": 0,
"jsonSchema": {
"title": "defaultschema",
"type": "object",
"properties": {
"identityMap": {
"type": "object",
"meta:xdmField": "xdm:identityMap",
"meta:xdmType": "map",
"additionalProperties": {
"meta:xdmType": "array",
"items": {
"meta:referencedFrom": "https://ns.adobe.com/xdm/context/identityitem",
"properties": {
"primary": {
"meta:xdmField": "xdm:primary",
"meta:xdmType": "boolean",
"description": "Indicates this identity is the preferred identity. Is used as a hint to help systems better organize how identities are queried.",
"default": false,
"type": "boolean",
"title": "Primary"
},
"id": {
"meta:xdmField": "xdm:id",
"meta:xdmType": "string",
"description": "Identity of the consumer in the related namespace.",
"type": "string",
"title": "Identifier"
},
"authenticatedState": {
"meta:xdmField": "xdm:authenticatedState",
"meta:xdmType": "string",
"meta:enum": {
"loggedOut": "User was identified by a login action at some point of time previously, but is not currently logged in.",
"authenticated": "User identified by a login or similar action that was valid at the time of the event observation.",
"ambiguous": "Ambiguous"
},
"enum": [
"ambiguous",
"authenticated",
"loggedOut"
],
"default": "ambiguous",
"type": "string",
"description": "The state this identity is authenticated as for this observed ExperienceEvent."
}
},
"meta:xdmType": "object",
"type": "object"
},
"type": "array"
}
},
"segmentMembership": {
"title": "Segment membership map",
"type": "object",
"meta:xdmField": "xdm:segmentMembership",
"meta:xdmType": "map",
"additionalProperties": {
"additionalProperties": {
"meta:referencedFrom": "https://ns.adobe.com/xdm/context/segmentmembership",
"properties": {
"version": {
"meta:xdmField": "xdm:version",
"meta:xdmType": "string",
"description": "The version of the audience definition used in this audience assertion. Version can be omitted in audience lists when all memberships versions are the same.",
"type": "string",
"title": "Version"
},
"validUntil": {
"meta:xdmField": "xdm:validUntil",
"meta:xdmType": "date-time",
"description": "The timestamp for when the audienceassertion should no longer be assumed to be valid and should either be ignored or revalidated.",
"format": "date-time",
"type": "string",
"title": "Valid until"
},
"status": {
"meta:xdmField": "xdm:status",
"meta:xdmType": "string",
"meta:enum": {
"exited": "Entity is exiting the segment.",
"realized": "Entity is entering the segment."
},
"enum": [
"realized",
"exited"
],
"default": "realized",
"description": "Is the audience participation realized as part of the current request.",
"type": "string",
"title": "Status"
},
"segmentID": {
"meta:xdmField": "xdm:segmentID",
"meta:referencedFrom": "https://ns.adobe.com/xdm/context/segmentidentity",
"properties": {
"xid": {
"meta:xdmField": "xdm:xid",
"meta:xdmType": "string",
"description": "When present, this value represents a cross-namespace identifier that is unique across all namespace-scoped identifiers in all namespaces.",
"type": "string",
"title": "Experience identifier"
},
"namespace": {
"meta:xdmField": "xdm:namespace",
"required": [
"code"
],
"meta:referencedFrom": "https://ns.adobe.com/xdm/context/namespace",
"properties": {
"code": {
"meta:xdmField": "xdm:code",
"meta:xdmType": "string",
"description": "The code is a human readable identifier for the namespace and can be used to request the technical namespace id which is used for identity graph processing.",
"type": "string",
"title": "Code"
}
},
"meta:xdmType": "object",
"type": "object",
"description": "The namespace associated with the `xid` attribute.",
"title": "Namespace"
},
"_id": {
"meta:xdmField": "@id",
"meta:xdmType": "string",
"description": "Identity of the audience in the related namespace.",
"format": "uri-reference",
"type": "string",
"title": "Identifier"
}
},
"meta:xdmType": "object",
"type": "object",
"description": "The identity of the audience or snapshot definition in with the domain of the specific system that processes that type of segment. Deprecated.",
"meta:status": "deprecated",
"title": "Segment ID"
},
"profileStitchID": {
"meta:xdmField": "xdm:profileStitchID",
"meta:referencedFrom": "https://ns.adobe.com/xdm/context/profileStitchIdentity",
"properties": {
"xid": {
"meta:xdmField": "xdm:xid",
"meta:xdmType": "string",
"description": "When present, this value represents a cross-namespace identifier that is unique across all namespace-scoped identifiers in all namespaces.",
"type": "string",
"title": "Experience identifier"
},
"namespace": {
"meta:xdmField": "xdm:namespace",
"required": [
"code"
],
"meta:referencedFrom": "https://ns.adobe.com/xdm/context/namespace",
"properties": {
"code": {
"meta:xdmField": "xdm:code",
"meta:xdmType": "string",
"description": "The code is a human readable identifier for the namespace and can be used to request the technical namespace id which is used for identity graph processing.",
"type": "string",
"title": "Code"
}
},
"meta:xdmType": "object",
"type": "object",
"description": "The namespace associated with the `xid` attribute.",
"title": "Namespace"
},
"_id": {
"meta:xdmField": "@id",
"meta:xdmType": "string",
"description": "Identity of the profile stitch in the related namespace.",
"format": "uri-reference",
"type": "string",
"title": "Identifier"
}
},
"meta:xdmType": "object",
"type": "object"
},
"payload": {
"meta:xdmField": "xdm:payload",
"meta:xdmType": "object",
"required": [
"payloadType"
],
"properties": {
"payloadType": {
"meta:xdmField": "xdm:payloadType",
"meta:xdmType": "string",
"description": "The type of payload.",
"meta:enum": {
"string": "String",
"propensity": "Propensity",
"number": "Number",
"boolean": "Boolean"
},
"enum": [
"boolean",
"number",
"propensity",
"string"
],
"type": "string",
"title": "Payload Type"
},
"payloadStringValue": {
"meta:xdmField": "xdm:payloadStringValue",
"meta:xdmType": "string",
"description": "The string value.",
"type": "string",
"title": "Value"
},
"payloadPropensityValue": {
"meta:xdmField": "xdm:payloadPropensityValue",
"meta:xdmType": "number",
"maximum": 1,
"exclusiveMinimum": 0,
"description": "The propensity.",
"type": "number",
"title": "Value"
},
"payloadNumberValue": {
"meta:xdmField": "xdm:payloadNumberValue",
"meta:xdmType": "number",
"description": "The number.",
"type": "number",
"title": "Value"
},
"payloadBooleanValue": {
"meta:xdmField": "xdm:payloadBooleanValue",
"meta:xdmType": "boolean",
"description": "The boolean value.",
"type": "boolean",
"title": "Value"
}
},
"type": "object",
"description": "Values that are directly related with the audience realization. This payload exists with the same 'validUntil' as the audience realization. Note that the intention is that exactly one payload value be included, as indicated by the payload type. This was originally modeled using 'oneOf', but due to limitations in our tooling that was removed. This more semantically meaningful representation will be re-introduced in the future.",
"title": "Payload"
},
"lastQualificationTime": {
"meta:xdmField": "xdm:lastQualificationTime",
"meta:xdmType": "date-time",
"description": "The timestamp when the assertion of audience membership was made.",
"format": "date-time",
"type": "string",
"title": "Last qualification time"
}
},
"meta:xdmType": "object",
"type": "object"
},
"meta:xdmType": "map",
"type": "object",
"title": "Segment membership per namespace"
}
},
"attributes": {
"type": "object",
"meta:xdmType": "map",
"additionalProperties": {
"properties": {
"value": {
"type": "string",
"title": "Value"
}
},
"meta:xdmType": "object",
"type": "object"
}
},
"firstName": {
"title": "firstName",
"type": "string"
},
"Email": {
"title": "Email",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"title": "id",
"type": "string",
"meta:xdmType": "string"
}
},
"meta:xdmType": "object"
},
"meta:xdmType": "array"
}
}
}
}
L’identifiant dans la réponse représente l’identifiant unique du schéma d’entrée que vous avez créé. Copiez l’identifiant de la réponse, car vous le réutiliserez ultérieurement.
Créer un jeu de mappages
Ensuite, utilisez l’ API de préparation de données pour créer le jeu de mappages à l’aide de l’ID de schéma d’entrée, de l’ID de schéma de sortie et des mappages de champ souhaités.
Requête
- Dans l’objet mappings illustré ci-dessous, le paramètre
destination
n’accepte pas les points"."
. Par exemple, vous devez utiliser personalEmail_address ou segmentMembership_status comme indiqué dans l’exemple de configuration. - Il existe un cas particulier où l’attribut source est un attribut d’identité et contient un point. Dans ce cas, l’attribut doit être échappé avec
//
, comme indiqué ci-dessous. - Notez également que même si l’exemple de configuration ci-dessous inclut
Email
etPhone_E.164
, vous ne pouvez exporter qu’un seul attribut d’identité par flux de données.
curl --location --request POST 'https://platform.adobe.io/data/foundation/conversion/mappingSets' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputSchema": {
"id": "81d7fc5376e54eb58d5186fd30d5a8c9"
},
"outputSchema": {
"id": "2f4fd51934c1409fb1d8207dd9f43dc9"
},
"mappings": [
{
"destination": "firstName",
"source": "person.name.firstName",
"sourceType": "ATTRIBUTE"
},
{
"destination": "Email",
"source": "identityMap.Email",
"sourceType": "ATTRIBUTE"
},
{
"destination": "Phone_E_164",
"source": "identityMap.Phone_E//.164",
"sourceType": "ATTRIBUTE"
},
{
"destination": "personalEmail_address",
"source": "personalEmail.address",
"sourceType": "ATTRIBUTE"
},
{
"destination": "segmentMembership_status",
"source": "segmentMembership.ups.seg_id.status",
"sourceType": "ATTRIBUTE"
}
],
"xdmVersion": "1.0"
}'
Réponse
{
"id": "5f0031f8ccd4444dac9c5c391389e9e8",
"version": 0,
"createdDate": 1678999005197,
"modifiedDate": 1678999005197,
"createdBy": "example@AdobeID",
"modifiedBy": "example@AdobeID"
}
Notez l’identifiant du jeu de mappages, car vous en aurez besoin à l’étape suivante pour mettre à jour le flux de données existant avec l’identifiant du jeu de mappages.
Ensuite, obtenez l’identifiant du flux de données que vous souhaitez mettre à jour.
Voir récupération des détails d’un flux de données de destination pour plus d’informations sur la récupération de l’identifiant d’un flux de données.
Enfin, vous devez PATCH
du flux de données avec les informations du jeu de mappages que vous venez de créer.
Requête
curl --location --request PATCH 'https://platform.adobe.io/data/foundation/flowservice/flows/df8245a8-dd8f-42da-a04a-2d3a92654d9e' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'If-Match: ETAG_HERE' \
--data-raw '[
{
"op":"ADD",
"path":"/transformations/0/params/profileMapping",
"value":{
"mappingId":"304ca6a2fff244949c956cad1cd9eae6",
"mappingVersion":0
}
}
]'
Réponse
La réponse de l’API Flow Service renvoie l’identifiant du flux de données mis à jour.
{
"id": "1c246ae4-ba0d-43cd-a0ec-f16fe0a56b55",
"etag": "\"1500c67f-0000-0200-0000-64137ee00000\""
}
Effectuer d’autres mises à jour de flux de données
Pour mettre à jour votre flux de données, utilisez l’opération PATCH
. Par exemple, vous pouvez ajouter une action marketing à vos flux de données. Vous pouvez également mettre à jour vos flux de données pour sélectionner des champs comme clés obligatoires ou clés de déduplication.
Ajout d’une action marketing
Pour ajouter une action marketing, consultez les exemples de requête et de réponse ci-dessous.
If-Match
est requis lors de l’exécution d’une requête PATCH
. La valeur de cet en-tête est la version unique du flux de données que vous souhaitez mettre à jour. La valeur etag est mise à jour à chaque mise à jour réussie d’une entité de flux, telle que le flux de données, la connexion cible, etc.https://platform.adobe.io/data/foundation/flowservice/flows/{ID}
, où {ID}
est l’identifiant de flux de données que vous souhaitez mettre à jour.If-Match
entre guillemets doubles, comme dans les exemples ci-dessous, lors de l’exécution de requêtes PATCH
.Requête
curl --location --request PATCH 'https://platform.adobe.io/data/foundation/flowservice/flows/{DATAFLOW_ID}' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'If-Match: "{ETAG_HERE}"' \
--data-raw '[
{
"op":"add",
"path":"/policy",
"value":{
"enforcementRefs":[
]
}
},
{
"op":"add",
"path":"/policy/enforcementRefs/-",
"value":"/dulepolicy/marketingActions/custom/6b935bc8-bb9e-451b-a327-0ffddfb91e66/constraints"
}
]'
Réponse
Une réponse réussie renvoie le code de réponse 200
avec l’identifiant du flux de données mis à jour et la balise électronique mise à jour.
{
"id": "eb54b3b3-3949-4f12-89c8-64eafaba858f",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Ajouter une clé obligatoire
Pour ajouter une clé obligatoire, consultez les exemples de requête et de réponse ci-dessous.
If-Match
est requis lors de l’exécution d’une requête PATCH
. La valeur de cet en-tête est la version unique du flux de données que vous souhaitez mettre à jour. La valeur etag est mise à jour à chaque mise à jour réussie d’une entité de flux, telle que le flux de données, la connexion cible, etc.https://platform.adobe.io/data/foundation/flowservice/flows/{ID}
, où {ID}
est l’identifiant de flux de données que vous souhaitez mettre à jour.If-Match
entre guillemets doubles, comme dans les exemples ci-dessous, lors de l’exécution de requêtes PATCH
.Requête
curl --location --request PATCH 'https://platform.adobe.io/data/foundation/flowservice/flows/{DATAFLOW_ID}' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'If-Match: "{ETAG_HERE}"' \
--data-raw '
[
{
"op": "add",
"path": "/transformations/0/params/mandatoryFields",
"value": [
"GAID"
]
}
]'
curl --location --request PATCH 'https://platform.adobe.io/data/foundation/flowservice/flows/{DATAFLOW_ID}' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'If-Match: "{ETAG_HERE}"' \
--data-raw '
[
{
"op": "add",
"path": "/transformations/0/params/mandatoryFields",
"value": [
"GAID"
]
}
]'
Réponse
{
"id": "eb54b3b3-3949-4f12-89c8-64eafaba858f",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Ajouter une clé de déduplication
Pour ajouter une clé de déduplication, consultez les exemples de requête et de réponse ci-dessous.
If-Match
est requis lors de l’exécution d’une requête PATCH
. La valeur de cet en-tête est la version unique du flux de données que vous souhaitez mettre à jour. La valeur etag est mise à jour à chaque mise à jour réussie d’une entité de flux, telle que le flux de données, la connexion cible, etc.https://platform.adobe.io/data/foundation/flowservice/flows/{ID}
, où {ID}
est l’identifiant de flux de données que vous souhaitez mettre à jour.If-Match
entre guillemets doubles, comme dans les exemples ci-dessous, lors de l’exécution de requêtes PATCH
.Requête
curl --location --request PATCH 'https://platform.adobe.io/data/foundation/flowservice/flows/{DATAFLOW_ID}' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'If-Match: "{ETAG_HERE}"' \
--data-raw '
[
{
"op": "add",
"path": "/transformations/0/params/primaryFields",
"value": [
{
"identityNamespace": "GAID",
"fieldType": "IDENTITY"
}
]
}
]'
curl --location --request PATCH 'https://platform.adobe.io/data/foundation/flowservice/flows/{DATAFLOW_ID}' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'If-Match: "{ETAG_HERE}"' \
--data-raw '
[
{
"op": "add",
"path": "/transformations/0/params/primaryFields",
"value": [
{
"identityNamespace": "GAID",
"fieldType": "IDENTITY"
}
]
}
]'
Réponse
{
"id": "eb54b3b3-3949-4f12-89c8-64eafaba858f",
"etag": "\"0000d781-0000-0200-0000-63e29f420000\""
}
Validation du flux de données (Obtention des exécutions du flux de données)
Pour vérifier les exécutions d’un flux de données, utilisez l’API des exécutions de flux de données :
Requête
curl --location --request GET 'https://platform.adobe.io/data/foundation/flowservice/runs?property=flowId==eb54b3b3-3949-4f12-89c8-64eafaba858f' \
--header 'accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'x-gw-ims-org-id: {ORG_ID}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-raw ''
Réponse
{
"items": [
{
"id": "4b7728dd-83c9-4c38-95a4-24ddab545404",
"createdAt": 1675807718296,
"updatedAt": 1675807731834,
"createdBy": "aep_activation_batch@AdobeID",
"updatedBy": "acp_foundation_connectors@AdobeID",
"createdClient": "aep_activation_batch",
"updatedClient": "acp_foundation_connectors",
"sandboxId": "7dfdcd30-0a09-11ea-8ea6-7bf93ce86c28",
"sandboxName": "sand-1",
"imsOrgId": "5555467B5D8013E50A494220@AdobeOrg",
"flowId": "aae5ec63-b0ac-4808-9a44-abf2ea67bd5a",
"flowSpec": {
"id": "615d3489-36d2-4671-9467-4ae1129facd3",
"version": "1.0"
},
"providerRefId": "ba56f98e0c49b572adb249980c39b1c7",
"etag": "\"08005e9e-0000-0200-0000-63e2cbf30000\"",
"metrics": {
"durationSummary": {
"startedAtUTC": 1675807719411,
"completedAtUTC": 1675807719416
},
"sizeSummary": {
"inputBytes": 0
},
"recordSummary": {
"inputRecordCount": 0,
"skippedRecordCount": 0,
"sourceSummaries": [
{
"id": "ea2b1205-4692-49de-b448-ebf75b1d188a",
"inputRecordCount": 0,
"skippedRecordCount": 0,
"entitySummaries": [
{
//...
Vous trouverez des informations sur les différents paramètres renvoyés par l’API Dataflow run dans la documentation de référence de l’API.
Gestion des erreurs d’API
Les points de terminaison d’API de ce tutoriel suivent les principes généraux des messages d’erreur de l’API d’Experience Platform. Pour plus d’informations sur l’interprétation des réponses d’erreur, reportez-vous aux codes d’état d’API et erreurs d’en-tête de requête dans le guide de dépannage de Platform.
Étapes suivantes
En suivant ce tutoriel, vous avez réussi à connecter Platform à l’une de vos destinations de stockage dans le cloud préférées et à configurer un flux de données vers la destination correspondante pour exporter des audiences. Consultez les pages suivantes pour plus d’informations, telles que la modification des flux de données existants à l’aide de l’API Flow Service :