Extraction de membre de programme en bloc
Référence de point d’entrée d’extraction de membre de programme en bloc
L’ensemble d’API REST d’extraction de membres de programme en bloc fournit une interface de programmation pour récupérer de grands ensembles d’enregistrements de membres de programme en dehors de Marketo. Il s’agit de l’interface recommandée pour les cas d’utilisation qui nécessitent un échange continu de données entre Marketo et un ou plusieurs systèmes externes, à des fins d’ETL, d’entreposage de données et d’archivage.
Autorisations
Les API Bulk Program Member Extract nécessitent que l'utilisateur propriétaire de l'API dispose d'un rôle avec l'une ou l'autre des autorisations Read-Only Lead (Lead en lecture seule) ou Read-Write Lead (Lead en lecture-écriture).
Décrire
Décrire le membre de programme est la principale source de vérité pour savoir si les champs sont disponibles et pour connaître les métadonnées sur ces champs. L’attribut name contient le nom de l’API REST.
GET /rest/v1/programs/members/describe.json
{
"requestId": "f813#1791563c7cc",
"result": [
{
"name": "API Program Membership",
"description": "Map for API program membership fields",
"createdAt": "2021-03-20T01:30:05Z",
"updatedAt": "2021-03-20T01:30:05Z",
"dedupeFields": [
"leadId",
"programId"
],
"searchableFields": [
[
"leadId"
],
[
"myCustomField"
],
[
"reachedSuccess"
],
[
"statusName"
]
],
"fields": [
{
"name": "acquiredBy",
"displayName": "acquiredBy",
"dataType": "boolean",
"updateable": false,
"crmManaged": false
},
{
"name": "attendanceLikelihood",
"displayName": "attendanceLikelihood",
"dataType": "integer",
"updateable": false,
"crmManaged": false
},
{
"name": "createdAt",
"displayName": "createdAt",
"dataType": "datetime",
"updateable": false,
"crmManaged": false
},
{
"name": "isExhausted",
"displayName": "isExhausted",
"dataType": "boolean",
"updateable": false,
"crmManaged": false
},
{
"name": "leadId",
"displayName": "leadId",
"dataType": "integer",
"updateable": false,
"crmManaged": false
},
{
"name": "membershipDate",
"displayName": "membershipDate",
"dataType": "datetime",
"updateable": false,
"crmManaged": false
},
{
"name": "nurtureCadence",
"displayName": "nurtureCadence",
"dataType": "string",
"length": 4,
"updateable": false,
"crmManaged": false
},
{
"name": "program",
"displayName": "program",
"dataType": "string",
"length": 255,
"updateable": false,
"crmManaged": false
},
{
"name": "programId",
"displayName": "programId",
"dataType": "integer",
"updateable": false,
"crmManaged": false
},
{
"name": "reachedSuccess",
"displayName": "reachedSuccess",
"dataType": "boolean",
"updateable": false,
"crmManaged": false
},
{
"name": "reachedSuccessDate",
"displayName": "reachedSuccessDate",
"dataType": "datetime",
"updateable": false,
"crmManaged": false
},
{
"name": "registrationLikelihood",
"displayName": "registrationLikelihood",
"dataType": "integer",
"updateable": false,
"crmManaged": false
},
{
"name": "statusName",
"displayName": "statusName",
"dataType": "string",
"length": 255,
"updateable": false,
"crmManaged": false
},
{
"name": "statusReason",
"displayName": "statusReason",
"dataType": "string",
"length": 255,
"updateable": false,
"crmManaged": false
},
{
"name": "trackName",
"displayName": "trackName",
"dataType": "string",
"length": 255,
"updateable": false,
"crmManaged": false
},
{
"name": "updatedAt",
"displayName": "updatedAt",
"dataType": "datetime",
"updateable": false,
"crmManaged": false
},
{
"name": "waitlistPriority",
"displayName": "waitlistPriority",
"dataType": "integer",
"updateable": false,
"crmManaged": false
},
{
"name": "myCustomField",
"displayName": "myCustomField",
"dataType": "string",
"length": 255,
"updateable": true,
"crmManaged": false
},
{
"name": "registrationCode",
"displayName": "registrationCode",
"dataType": "string",
"length": 100,
"updateable": true,
"crmManaged": false
},
{
"name": "webinarUrl",
"displayName": "webinarUrl",
"dataType": "string",
"length": 2000,
"updateable": true,
"crmManaged": false
}
]
}
],
"success": true
}
Filtres
Les membres du programme prennent en charge diverses options de filtre. Plusieurs types de filtre peuvent être spécifiés pour une tâche. Dans ce cas, ils sont ET combinés. Vous devez spécifier le filtre programId ou programIds. Tous les autres filtres sont facultatifs. Le filtre updatedAt nécessite des composants d’infrastructure supplémentaires qui n’ont pas encore été déployés sur tous les abonnements.
Le type de filtre n’est pas disponible pour certains abonnements. Si vous n’êtes pas disponible pour votre abonnement, vous recevez une erreur lors de l’appel du point d’entrée Créer une tâche de membre du programme d’exportation (« 1035, Type de filtre non pris en charge pour l’abonnement cible »). Les clients peuvent contacter l’assistance Marketo pour que cette fonctionnalité soit activée dans leur abonnement.
Options
Le point d’entrée Créer une tâche de membre du programme d’exportation fournit plusieurs options de formatage. Ces options permettent à l’utilisateur ou à l’utilisatrice de :
- Spécifier les champs à inclure dans le fichier exporté
- Renommer les en-têtes de colonne de ces champs
- Spécifier le format du fichier exporté
LeadCustom LeadProgram MemberCustom ProgramMember. Spécifiez un champ à l’aide de son nom d’API REST qui peut être récupéré à l’aide des points d’entrée Décrire le lead2 et/ou Décrire le membre de programme .Création d’un traitement
Les paramètres de la tâche sont définis avant le lancement de l’exportation à l’aide du point d’entrée Créer une tâche de membre du programme d’exportation. Nous devons définir les filter contenant l’ID du programme et les fields nécessaires à l’exportation. En option, nous pouvons définir le format du fichier et le columnHeaderNames.
POST /bulk/v1/program/members/export/create.json
{
"format": "CSV",
"fields": [
"firstName",
"lastName",
"email",
"membershipDate",
"program",
"statusName",
"leadId",
"reachedSuccess",
"leadCustomField01",
"leadCustomField02",
"pMCustomField01",
"pMCustomField02"
],
"filter": {
"programId":1044
}
}
{
"requestId": "4d44#16f92734f6e",
"result": [
{
"exportId": "b5ca52a9-5ecb-4966-b5a9-11659a8b4c2b",
"format": "CSV",
"status": "Created",
"createdAt": "2020-01-11T02:33:48Z"
}
],
"success": true
}
Cette opération renvoie une réponse de statut indiquant que la tâche a été créée. La tâche a été définie et créée, mais elle n'a pas encore été lancée. Pour ce faire, le point d’entrée Mettre en file d’attente la tâche du membre du programme d’exportation doit être appelé à l’aide du exportId de la réponse de statut de création :
POST /bulk/v1/program/members/export/{exportId}/enqueue.json
{
"requestId": "d70b#16f9273ae32",
"result": [
{
"exportId": "b5ca52a9-5ecb-4966-b5a9-11659a8b4c2b",
"format": "CSV",
"status": "Queued",
"createdAt": "2020-01-11T02:33:48Z",
"queuedAt": "2020-01-11T02:34:13Z"
}
],
"success": true
}
Cela répondra avec une status initiale de « Mise en file d’attente », après quoi cela sera défini sur « Traitement » lorsqu’un emplacement d’exportation sera disponible.
Interroger le statut de la tâche
Remarque : le statut ne peut être récupéré que pour les tâches créées par le même utilisateur de l’API.
Puisqu’il s’agit d’un point d’entrée asynchrone, après avoir créé la tâche, nous devons interroger son statut pour déterminer sa progression. Effectuez une enquête à l’aide du point d’entrée Obtenir le statut de la tâche du membre du programme d’exportation. Le statut n’est mis à jour qu’une fois toutes les 60 secondes. Il est donc déconseillé d’utiliser une fréquence d’interrogation inférieure à cette fréquence, qui reste excessive dans presque tous les cas. Le champ de statut peut répondre avec l’une des options suivantes : Créé, En file d’attente, Traitement, Annulé, Terminé, En échec.
GET /bulk/v1/program/members/export/{exportId}/status.json
{
"requestId": "9a40#16f9274d250",
"result": [
{
"exportId": "b5ca52a9-5ecb-4966-b5a9-11659a8b4c2b",
"format": "CSV",
"status": "Processing",
"createdAt": "2020-01-11T02:33:48Z",
"queuedAt": "2020-01-11T02:34:13Z",
"startedAt": "2020-01-11T02:35:19Z"
}
],
"success": true
}
Le point d’entrée de statut répond indiquant que la tâche est toujours en cours de traitement et que le fichier n’est donc pas encore disponible pour récupération. Une fois que le status de traitement est remplacé par « Terminé », il peut être téléchargé.
{
"requestId": "11ad1#16f9ff6da23",
"result": [
{
"exportId": "1118dc83-273b-4d44-becb-4d212fece550",
"format": "CSV",
"status": "Completed",
"createdAt": "2020-01-11T02:33:48Z",
"queuedAt": "2020-01-11T02:34:13Z",
"startedAt": "2020-01-11T02:35:19Z"
"finishedAt": "2020-01-11T02:36:12Z",
"numberOfRecords": 13,
"fileSize": 1752,
"fileChecksum": "sha256:b3c8e70e6e501cf1025e345a66b409d4fd07364c7da773cfa68a2b68ce1a7212"
}
],
"success": true
}
Récupération de vos données
Pour récupérer le fichier d'une exportation de membre de programme terminée, appelez simplement le point d'entrée Obtenir le fichier de membre de programme d'exportation avec votre exportId.
La réponse contient un fichier formaté selon la configuration de la tâche. Le point d’entrée répond avec le contenu du fichier . Si un champ de membre de programme demandé est vide (ne contient aucune donnée), null est placé dans le champ correspondant dans le fichier d’exportation.
GET /bulk/v1/program/members/export/{exportId}/file.json
firstName,lastName,email,Member Date,Program,Status,Lead Id,Success,leadCustomField01,leadCustomField02,pMCustomField01,pMCustomField02
Meera,Reed,mree@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1789,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Jon,Umber,jumb@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1790,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Lyanna,Mormont,lmor@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1791,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Rickon,Stark,rsta@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1792,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Hodor,null,hodor@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1793,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Osha,null,osha@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1794,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Jojen,Reed,Jree@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1795,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Rickard,Karstark,rkar@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1796,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Maester,Luwin,mluw@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1797,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Rodrik,Cassel,rcas@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1798,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Jory,Cassel,jcas@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1799,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Septa,Mordane,smor@housestark.com,2020-01-08T18:10:26Z,PMCF Program,On List,1800,false,Lead01_Value,Lead02_Value,PM01_Value,PM02_Value
Pour prendre en charge la récupération partielle et conviviale des données extraites, le point d’entrée du fichier prend éventuellement en charge la plage d’en-têtes HTTP du type octets. Si l’en-tête n’est pas défini, l’intégralité du contenu est renvoyée. Vous pouvez en savoir plus sur l’utilisation de l’en-tête de plage avec Marketo Extraction en bloc.
Annulation d’un traitement
Si une tâche n’a pas été configurée correctement ou devient inutile, elle peut facilement être annulée à l’aide du point d’entrée Annuler la tâche du membre du programme d’exportation :
POST /bulk/v1/program/members/export/{exportId}/cancel.json
{
"requestId": "bb4f#16f86727f89",
"result": [
{
"exportId": "f0d3520c-3a60-4568-9e71-2e619d3805a4",
"format": "CSV",
"status": "Cancelled",
"createdAt": "2020-01-07T21:47:35Z"
}
],
"success": true
}
Cette opération répond avec un status indiquant que la tâche a été annulée.