Configuration de la spécification source pour les sources en libre-service (SDK par lots)

Les spécifications de source contiennent des informations spécifiques à une source, notamment des attributs relatifs à la catégorie d’une source, au statut bêta et à l’icône de catalogue. Elles contiennent également des informations utiles telles que les paramètres d’URL, le contenu, l’en-tête et le planning. Les spécifications de source décrivent également le schéma des paramètres requis pour créer une connexion source à partir d’une connexion de base. Le schéma est nécessaire pour créer une connexion source.

Voir annexe pour un exemple de spécification de source entièrement rempli.

"sourceSpec": {
  "attributes": {
    "uiAttributes": {
      "isSource": true,
      "isPreview": true,
      "isBeta": true,
      "category": {
        "key": "protocols"
      },
      "icon": {
        "key": "genericRestIcon"
      },
      "description": {
        "key": "genericRestDescription"
      },
      "label": {
        "key": "genericRestLabel"
      }
    },
    "spec": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "type": "object",
      "description": "Defines static and user input parameters to fetch resource values.",
      "properties": {
        "urlParams": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string",
              "description": "Enter resource url host path.",
              "example": "https://{domain}.api.mailchimp.com"
            },
            "path": {
              "type": "string",
              "description": "Enter resource path",
              "example": "/3.0/reports/campaignId/email-activity"
            },
            "method": {
              "type": "string",
              "description": "HTTP method type.",
              "enum": [
                "GET",
                "POST"
              ]
            },
            "queryParams": {
              "type": "object",
              "description": "The query parameters in json format",
            }
          },
          "required": [
            "host",
            "path",
            "method"
          ]
        },
        "headerParams": {
          "type": "object",
          "description": "The header parameters in json format",
        },
        "contentPath": {
          "type": "object",
          "description": "The parameters required for main collection content.",
          "properties": {
            "path": {
              "description": "The path to the main content.",
              "type": "string",
              "example": "$.emails"
            },
            "skipAttributes": {
              "type": "array",
              "description": "The list of attributes that needs to be skipped while fattening the array.",
              "example": "[total_items]",
              "items": {
                "type": "string"
              }
            },
            "keepAttributes": {
              "type": "array",
              "description": "The list of attributes that needs to be kept while fattening the array.",
              "example": "[total_items]",
              "items": {
                "type": "string"
              }
            },
            "overrideWrapperAttribute": {
              "type": "string",
              "description": "The new name to be used for the root content path node.",
              "example": "email"
            }
          },
          "required": [
            "path"
          ]
        },
        "explodeEntityPath": {
          "type": "object",
          "description": "The parameters required for the sub-array content.",
          "properties": {
            "path": {
              "description": "The path to the sub-array content.",
              "type": "string",
              "example": "$.email.activity"
            },
            "skipAttributes": {
              "type": "array",
              "description": "The list of attributes that needs to be skipped while fattening sub-array.",
              "example": "[total_items]",
              "items": {
                "type": "string"
              }
            },
            "keepAttributes": {
              "type": "array",
              "description": "The list of attributes that needs to be kept while fattening the sub-array.",
              "example": "[total_items]",
              "items": {
                "type": "string"
              }
            },
            "overrideWrapperAttribute": {
              "type": "string",
              "description": "The new name to be used for the  root content path node.",
              "example": "activity"
            }
          },
          "required": [
            "path"
          ]
        },
        "paginationParams": {
          "type": "object",
          "description": "The parameters required to fetch data using pagination.",
          "properties": {
            "type": {
              "description": "The pagination fetch type.",
              "type": "string",
              "enum": [
                "OFFSET",
                "POINTER"
              ]
            },
            "limitName": {
              "type": "string",
              "description": "The limit property name",
              "example": "limit or count"
            },
            "limitValue": {
              "type": "integer",
              "description": "The number of records to fetch per page.",
              "example": "limit=10 or count=10"
            },
            "offsetName": {
              "type": "string",
              "description": "The offset property name",
              "example": "offset"
            },
            "pointerPath": {
              "type": "string",
              "description": "The path to pointer property",
              "example": "$.paging.next"
            }
          },
          "required": [
            "type",
            "limitName",
            "limitValue"
          ]
        },
        "scheduleParams": {
          "type": "object",
          "description": "The parameters required to fetch data for batch schedule.",
          "properties": {
            "scheduleStartParamName": {
              "type": "string",
              "description": "The order property name to get the order by date."
            },
            "scheduleEndParamName": {
              "type": "string",
              "description": "The order property name to get the order by date."
            },
            "scheduleStartParamFormat": {
              "type": "string",
              "description": "The order property name to get the order by date.",
              "example": "yyyy-MM-ddTHH:mm:ssZ"
            },
            "scheduleEndParamFormat": {
              "type": "string",
              "description": "The order property name to get the order by date.",
              "example": "yyyy-MM-ddTHH:mm:ssZ"
            }
          },
          "required": [
            "scheduleStartParamName",
            "scheduleEndParamName"
          ]
        }
      },
      "required": [
        "urlParams",
        "contentPath",
        "paginationParams",
        "scheduleParams"
      ]
    }
  },
}
Propriété
Description
Exemple
sourceSpec.attributes
Contient des informations sur la source spécifique à l’interface utilisateur ou à l’API.
sourceSpec.attributes.uiAttributes
Affiche des informations sur la source spécifique à l’interface utilisateur.
sourceSpec.attributes.uiAttributes.isBeta
Attribut booléen qui indique si la source nécessite davantage de commentaires de la part des clients à ajouter à sa fonctionnalité.
  • true
  • false
sourceSpec.attributes.uiAttributes.category
Définit la catégorie de la source.
  • advertising
  • crm
  • customer success
  • database
  • ecommerce
  • marketing automation
  • payments
  • protocols
sourceSpec.attributes.uiAttributes.icon
Définit l’icône utilisée pour le rendu de la source dans l’interface utilisateur de Platform.
mailchimp-icon.svg
sourceSpec.attributes.uiAttributes.description
Affiche une brève description de la source.
sourceSpec.attributes.uiAttributes.label
Affiche le libellé à utiliser pour le rendu de la source dans l’interface utilisateur de Platform.
sourceSpec.attributes.spec.properties.urlParams
Contient des informations sur le chemin d’accès à la ressource URL, la méthode et les paramètres de requête pris en charge.
sourceSpec.attributes.spec.properties.urlParams.properties.path
Définit le chemin d’accès à la ressource à partir duquel récupérer les données.
/3.0/reports/${campaignId}/email-activity
sourceSpec.attributes.spec.properties.urlParams.properties.method
Définit la méthode HTTP à utiliser pour que la requête à la ressource récupère les données.
GET, POST
sourceSpec.attributes.spec.properties.urlParams.properties.queryParams
Définit les paramètres de requête pris en charge qui peuvent être utilisés pour ajouter l’URL source lors d’une requête de récupération de données. Remarque  : toute valeur de paramètre fournie par l’utilisateur doit être formatée en tant qu’espace réservé. Par exemple : ${USER_PARAMETER}.
"queryParams" : {"key" : "value", "key1" : "value1"} sera ajouté à l’URL source en tant que : /?key=value&key1=value1.
sourceSpec.attributes.spec.properties.spec.properties.headerParams
Définit les en-têtes qui doivent être fournis dans la requête HTTP à l’URL source lors de la récupération des données.
"headerParams" : {"Content-Type" : "application/json", "x-api-key" : "key"}
sourceSpec.attributes.spec.properties.bodyParams
Cet attribut peut être configuré pour envoyer un corps HTTP par le biais d’une requête de POST.
sourceSpec.attributes.spec.properties.contentPath
Définit le nœud qui contient la liste des éléments requis à ingérer dans Platform. Cet attribut doit respecter une syntaxe de chemin d’accès JSON valide et doit pointer vers un tableau particulier.
Afficher la variable section ressources supplémentaires pour un exemple de la ressource contenue dans un chemin d’accès au contenu.
sourceSpec.attributes.spec.properties.contentPath.path
Chemin d’accès qui pointe vers les enregistrements de collection à ingérer dans Platform.
$.emails
sourceSpec.attributes.spec.properties.contentPath.skipAttributes
Cette propriété vous permet d’identifier des éléments spécifiques de la ressource identifiée dans le chemin d’accès du contenu qui doivent être exclus de l’ingestion.
[total_items]
sourceSpec.attributes.spec.properties.contentPath.keepAttributes
Cette propriété vous permet de spécifier explicitement les attributs individuels que vous souhaitez conserver.
[total_items]
sourceSpec.attributes.spec.properties.contentPath.overrideWrapperAttribute
Cette propriété vous permet de remplacer la valeur du nom d’attribut que vous avez spécifiée dans contentPath.
email
sourceSpec.attributes.spec.properties.explodeEntityPath
Cette propriété vous permet d’aplatir deux tableaux et de transformer les données de ressource en ressource Platform.
sourceSpec.attributes.spec.properties.explodeEntityPath.path
Le chemin d’accès qui pointe vers les enregistrements de collection que vous souhaitez aplatir.
$.email.activity
sourceSpec.attributes.spec.properties.explodeEntityPath.skipAttributes
Cette propriété vous permet d’identifier des éléments spécifiques de la ressource identifiée dans le chemin d’accès de l’entité qui doivent être exclus de l’ingestion.
[total_items]
sourceSpec.attributes.spec.properties.explodeEntityPath.keepAttributes
Cette propriété vous permet de spécifier explicitement les attributs individuels que vous souhaitez conserver.
[total_items]
sourceSpec.attributes.spec.properties.explodeEntityPath.overrideWrapperAttribute
Cette propriété vous permet de remplacer la valeur du nom d’attribut que vous avez spécifiée dans explodeEntityPath.
activity
sourceSpec.attributes.spec.properties.paginationParams
Définit les paramètres ou les champs qui doivent être fournis pour obtenir un lien vers la page suivante à partir de la réponse de page active de l’utilisateur ou lors de la création d’une URL de page suivante.
sourceSpec.attributes.spec.properties.paginationParams.type
Affiche le type de pagination pris en charge pour votre source.
  • OFFSET : ce type de pagination vous permet d’analyser les résultats en spécifiant un index à partir duquel démarrer le tableau associé, ainsi qu’une limite du nombre de résultats renvoyés.
  • POINTER : ce type de pagination permet d’utiliser une variable pointer pour pointer vers un élément particulier qui doit être envoyé avec une requête. La pagination du type de pointeur nécessite un chemin d’accès dans la payload qui pointe vers la page suivante…
  • CONTINUATION_TOKEN: ce type de pagination vous permet d’ajouter vos paramètres de requête ou d’en-tête avec un jeton de continuation pour récupérer les données renvoyées restantes de votre source, qui n’ont pas été renvoyées initialement en raison d’un maximum prédéterminé.
  • PAGE: ce type de pagination vous permet d’ajouter votre paramètre de requête avec un paramètre de pagination à parcourir par les données renvoyées par pages, à partir de la page zéro.
  • NONE: ce type de pagination peut être utilisé pour les sources qui ne prennent en charge aucun des types de pagination disponibles. Type de pagination NONE renvoie l’intégralité des données de réponse après une requête.
sourceSpec.attributes.spec.properties.paginationParams.limitName
Nom de la limite avec laquelle l’API peut spécifier le nombre d’enregistrements à récupérer dans une page.
limit ou count.
sourceSpec.attributes.spec.properties.paginationParams.limitValue
Nombre d’enregistrements à récupérer dans une page.
limit=10 ou count=10.
sourceSpec.attributes.spec.properties.paginationParams.offSetName
Nom de l’attribut offset. Obligatoire si le type de pagination est défini sur offset.
offset
sourceSpec.attributes.spec.properties.paginationParams.pointerPath
Nom de l’attribut du pointeur. Exige un chemin d’accès json vers l’attribut qui pointe vers la page suivante. Obligatoire si le type de pagination est défini sur pointer.
pointer
sourceSpec.attributes.spec.properties.scheduleParams
Contient des paramètres qui définissent les formats de planification pris en charge pour votre source. Les paramètres de planification incluent startTime et endTime, qui vous permettent de définir des intervalles de temps spécifiques pour des exécutions par lots, ce qui garantit que les enregistrements récupérés lors d’une exécution par lots précédente ne soient pas récupérés à nouveau.
sourceSpec.attributes.spec.properties.scheduleParams.scheduleStartParamName
Définit le nom du paramètre d’heure de début.
since_last_changed
sourceSpec.attributes.spec.properties.scheduleParams.scheduleEndParamName
Définit le nom du paramètre d’heure de fin.
before_last_changed
sourceSpec.attributes.spec.properties.scheduleParams.scheduleStartParamFormat
Définit le format pris en charge pour la variable scheduleStartParamName.
yyyy-MM-ddTHH:mm:ssZ
sourceSpec.attributes.spec.properties.scheduleParams.scheduleEndParamFormat
Définit le format pris en charge pour la variable scheduleEndParamName.
yyyy-MM-ddTHH:mm:ssZ
sourceSpec.spec.properties
Définit les paramètres fournis par l’utilisateur pour récupérer les valeurs de ressource.
Voir ressources supplémentaires pour un exemple de paramètres entrés par l’utilisateur pour spec.properties.

Ressources supplémentaires appendix

Les sections suivantes apportent des informations sur les configurations supplémentaires que vous pouvez effectuer dans votre sourceSpec, notamment la planification avancée et les schémas personnalisés.

Exemple de chemin de contenu content-path

Voici un exemple de contenu de la propriété contentPath dans une spécification de connexion MailChimp Members.

"contentPath": {
  "path": "$.members",
  "skipAttributes": [
    "_links",
    "total_items",
    "list_id"
  ],
  "overrideWrapperAttribute": "member"
}

Exemple d’entrée utilisateur spec.properties user-input

Voici un exemple de variable spec.properties fournie par l’utilisateur à l’aide d’une spécification de connexion MailChimp Members.

Dans cet exemple, listId est fourni comme faisant partie de urlParams.path. Si vous devez récupérer le listId d’un client, vous devez également le définir comme faisant partie de spec.properties.

"urlParams": {
        "path": "/3.0/lists/${listId}/members",
        "method": "GET"
      }
"spec": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "type": "object",
      "description": "Define user input parameters to fetch resource values.",
      "properties": {
        "listId": {
          "type": "string",
          "description": "listId for which members need to fetch."
        }
      }
    }

Exemple de spécification de source source-spec

Voici une spécification de source complétée à l’aide de MailChimp Members :

  "sourceSpec": {
    "attributes": {
      "uiAttributes": {
        "isSource": true,
        "isPreview": true,
        "isBeta": true,
        "category": {
          "key": "marketingAutomation"
        },
        "icon": {
          "key": "mailchimpMembersIcon"
        },
        "description": {
          "key": "mailchimpMembersDescription"
        },
        "label": {
          "key": "mailchimpMembersLabel"
        }
      },
      "urlParams": {
        "host": "https://{domain}.api.mailchimp.com",
        "path": "/3.0/lists/${listId}/members",
        "method": "GET"
      },
      "contentPath": {
        "path": "$.members",
        "skipAttributes": [
          "_links",
          "total_items",
          "list_id"
        ],
        "overrideWrapperAttribute": "member"
      },
      "paginationParams": {
        "type": "OFFSET",
        "limitName": "count",
        "limitValue": "100",
        "offSetName": "offset"
      },
      "scheduleParams": {
        "scheduleStartParamName": "since_last_changed",
        "scheduleEndParamName": "before_last_changed",
        "scheduleStartParamFormat": "yyyy-MM-ddTHH:mm:ss:fffffffK",
        "scheduleEndParamFormat": "yyyy-MM-ddTHH:mm:ss:fffffffK"
      }
    },
    "spec": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "type": "object",
      "description": "Define user input parameters to fetch resource values.",
      "properties": {
        "listId": {
          "type": "string",
          "description": "listId for which members need to fetch."
        }
      }
    }
  }

Configuration de différents types de pagination pour votre source pagination

Vous trouverez ci-dessous des exemples d’autres types de pagination pris en charge par les sources en libre-service (SDK par lots) :

Décalage

Ce type de pagination vous permet d’analyser les résultats en spécifiant un index à partir duquel démarrer le tableau résultant, ainsi qu’une limite sur le nombre de résultats renvoyés. Par exemple :

code language-json
"paginationParams": {
        "type": "OFFSET",
        "limitName": "limit",
        "limitValue": "4",
        "offSetName": "offset",
        "endConditionName": "$.hasMore",
        "endConditionValue": "Const:false"
}
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2
Propriété Description
type Type de pagination utilisé pour renvoyer des données.
limitName Nom de la limite avec laquelle l’API peut spécifier le nombre d’enregistrements à récupérer dans une page.
limitValue Nombre d’enregistrements à récupérer dans une page.
offSetName Nom de l’attribut offset. Obligatoire si le type de pagination est défini sur offset.
endConditionName Une valeur définie par l’utilisateur qui indique la condition qui mettra fin à la boucle de pagination dans la requête HTTP suivante. Vous devez indiquer le nom de l’attribut sur lequel vous souhaitez mettre la condition de fin.
endConditionValue La valeur d’attribut sur laquelle vous souhaitez mettre la condition de fin.
Pointer

Ce type de pagination permet d’utiliser une pointer pour pointer vers un élément particulier qui doit être envoyé avec une requête. La pagination du type de pointeur nécessite un chemin dans la payload qui pointe vers la page suivante. Par exemple :

code language-json
{
 "type": "POINTER",
 "limitName": "limit",
 "limitValue": 1,
 "pointerPath": "paging.next"
}
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2
Propriété Description
type Type de pagination utilisé pour renvoyer des données.
limitName Nom de la limite avec laquelle l’API peut spécifier le nombre d’enregistrements à récupérer dans une page.
limitValue Nombre d’enregistrements à récupérer dans une page.
pointerPath Nom de l’attribut du pointeur. Exige un chemin d’accès json vers l’attribut qui pointe vers la page suivante.
Jeton de maintien

Un type de pagination de jeton de continuation renvoie un jeton de chaîne qui signifie qu’il existe d’autres éléments qui n’ont pas pu être renvoyés, en raison d’un nombre maximal d’éléments prédéterminé qui peuvent être renvoyés dans une seule réponse.

Une source qui prend en charge le type de pagination des jetons de continuation peut avoir un paramètre de pagination similaire à :

code language-json
"paginationParams": {
  "type": "CONTINUATION_TOKEN",
  "continuationTokenPath": "$.meta.after_cursor",
  "parameterType": "QUERYPARAM",
  "parameterName": "page[after]",
  "delayRequestMillis": "850"
}
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2
Propriété Description
type Type de pagination utilisé pour renvoyer des données.
continuationTokenPath La valeur qui doit être ajoutée aux paramètres de requête afin de passer à la page suivante des résultats renvoyés.
parameterType La variable parameterType définit l’emplacement où parameterName doit être ajouté. La variable QUERYPARAM vous permet d’ajouter votre requête à l’aide de la propriété parameterName. La variable HEADERPARAM vous permet d’ajouter parameterName à votre requête d’en-tête.
parameterName Nom du paramètre utilisé pour incorporer le jeton de continuation. Le format est le suivant : {PARAMETER_NAME}={CONTINUATION_TOKEN}.
delayRequestMillis La variable delayRequestMillis dans la pagination, vous permet de contrôler le taux de requêtes envoyées à votre source. Certaines sources peuvent avoir une limite au nombre de requêtes que vous pouvez effectuer par minute. Par exemple : Zendesk est limitée à 100 requêtes par minute et définit delayRequestMillis to 850 vous permet de configurer la source pour effectuer des appels à environ 80 demandes par minute, bien en dessous du seuil de 100 demandes par minute.

Voici un exemple de réponse renvoyée à l’aide du type de pagination du jeton de continuation :

code language-json
{
  "results": [
    {
      "id": 5624716025745,
      "url": "https://dev.zendesk.com/api/v2/users/5624716025745.json",
      "name": "newinctest@zenaep.com",
      "email": "newinctest@zenaep.com",
      "created_at": "2022-04-22T10:27:30Z",

    }
  ],
  "facets": null,
  "meta": {
    "has_more": false,
    "after_cursor": "eyJmaWVsZCI6ImNyZWF0ZWRfYXQiLCJk",
    "before_cursor": null
  },
  "links": {
    "prev": null,
    "next": "https://dev.zendesk.com/api/v2/search/export.json?filter%5Btype%5D=user&page%5Bafter%5D=eyJmaWVsZCI6"
  }
}
Page

La variable PAGE type de pagination permet de parcourir les données renvoyées par nombre de pages commençant par zéro. Lorsque vous utilisez PAGE type pagination, vous devez indiquer le nombre d'enregistrements sur une seule page.

code language-json
"paginationParams": {
  "type": "PAGE",
  "limitName": "pageSize",
  "limitValue": 100,
  "initialPageIndex": 1,
  "endPageIndex": "headers.x-pagecount",
  "pageParamName": "pageNumber",
  "maximumRequest": 10000
}
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 layout-auto
Propriété Description
type Type de pagination utilisé pour renvoyer des données.
limitName Nom de la limite avec laquelle l’API peut spécifier le nombre d’enregistrements à récupérer dans une page.
limitValue Nombre d’enregistrements à récupérer dans une page.
initialPageIndex (Facultatif) L’index de page initial définit le numéro de page à partir duquel la pagination commencera. Ce champ peut être utilisé pour les sources où la pagination ne commence pas par 0. Si elle n’est pas fournie, l’index de page initial est défini par défaut sur 0. Ce champ exige un entier.
endPageIndex (Facultatif) L’index de page de fin vous permet d’établir une condition de fin et d’arrêter la pagination. Ce champ peut être utilisé lorsque les conditions de fin par défaut pour arrêter la pagination ne sont pas disponibles. Ce champ peut également être utilisé si le nombre de pages à ingérer ou le numéro de la dernière page est fourni par le biais de l’en-tête de réponse, ce qui est courant lors de l’utilisation de PAGE pagination de type . La valeur de l’index de page de fin peut être le dernier numéro de page ou une valeur d’expression de type chaîne de l’en-tête de réponse. Par exemple, vous pouvez utiliser headers.x-pagecount pour affecter l’index de page de fin à la variable x-pagecount de l’en-tête de la réponse. Remarque: x-pagecount est un en-tête de réponse obligatoire pour certaines sources et contient la valeur nombre de pages à ingérer.
pageParamName Nom du paramètre que vous devez ajouter aux paramètres de requête pour parcourir les différentes pages des données renvoyées. Par exemple : https://abc.com?pageIndex=1 renvoie la deuxième page de la charge utile renvoyée par une API.
maximumRequest Nombre maximal de requêtes qu’une source peut effectuer pour une exécution incrémentielle donnée. La limite par défaut actuelle est de 10 000.
Aucun

La variable NONE Le type de pagination peut être utilisé pour les sources qui ne prennent en charge aucun des types de pagination disponibles. Sources qui utilisent le type de pagination de NONE renvoyez simplement tous les enregistrements récupérables lorsqu’une demande de GET est effectuée.

code language-json
"paginationParams": {
  "type": "NONE"
}

Planification avancée pour les sources en libre-service (SDK par lots)

Configurez le planning incrémentiel et de renvoi de votre source à l’aide d’une planification avancée. La variable incremental vous permet de configurer un planning dans lequel votre source n’ingèrera que des enregistrements nouveaux ou modifiés, tandis que la propriété backfill vous permet de créer un planning pour l’ingestion de données historiques.

Avec la planification avancée, vous pouvez utiliser des expressions et des fonctions spécifiques à votre source pour configurer les plannings incrémentiels et de renvoi. Dans l’exemple ci-dessous, la variable Zendesk La source nécessite que le planning incrémentiel soit formaté comme type:user updated > {START_TIME} updated < {END_TIME} et renvoyer comme type:user updated < {END_TIME}.

"scheduleParams": {
        "type": "ADVANCE",
        "paramFormat": "yyyy-MM-ddTHH:mm:ssK",
        "incremental": "type:user updated > {START_TIME} updated < {END_TIME}",
        "backfill": "type:user updated < {END_TIME}"
      }
Propriété
Description
scheduleParams.type
Le type de planification que votre source utilisera. Définissez cette valeur sur ADVANCE pour utiliser le type de planification avancé.
scheduleParams.paramFormat
Le format défini de votre paramètre de planification. Cette valeur peut être identique à celle de la source scheduleStartParamFormat et scheduleEndParamFormat valeurs.
scheduleParams.incremental
Requête incrémentale de votre source. Incrémentiel fait référence à une méthode d’ingestion dans laquelle seules les données nouvelles ou modifiées sont ingérées.
scheduleParams.backfill
Requête de renvoi de la source. Le renvoi désigne une méthode d’ingestion dans laquelle des données historiques sont ingérées.

Une fois que vous avez configuré la planification avancée, vous devez alors vous référer à la section scheduleParams dans la section des paramètres d’URL, de corps ou d’en-tête, selon ce que votre source particulière prend en charge. Dans l’exemple ci-dessous, {SCHEDULE_QUERY} est un espace réservé utilisé pour spécifier où les expressions de planification incrémentielle et de renvoi seront utilisées. Dans le cas d’un Zendesk source, query est utilisé dans la variable queryParams pour spécifier une planification avancée.

"urlParams": {
        "path": "/api/v2/search/export@{if(empty(coalesce(pipeline()?.parameters?.ingestionStart,'')),'?query=type:user&filter[type]=user&','')}",
        "method": "GET",
        "queryParams": {
          "query": "{SCHEDULE_QUERY}",
          "filter[type]": "user"
        }
      }

Ajout d’un schéma personnalisé pour définir les attributs dynamiques de la source

Vous pouvez inclure un schéma personnalisé à votre sourceSpec pour définir tous les attributs requis pour votre source, y compris les attributs dynamiques dont vous pourriez avoir besoin. Vous pouvez mettre à jour la spécification de connexion correspondante de votre source en adressant une requête de PUT à la fonction /connectionSpecs point d’entrée du Flow Service lors de la fourniture de votre schéma personnalisé dans la variable sourceSpec de votre spécification de connexion.

Voici un exemple de schéma personnalisé que vous pouvez ajouter à la spécification de connexion de votre source :

      "schema": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "organization_id": {
                  "type": "integer",
                  "minimum": -9007199254740992,
                  "maximum": 9007199254740991
                }
                "active": {
                  "type": "boolean"
                },
                "created_at": {
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "iana_time_zone": {
                  "type": "string"
                },
                "id": {
                  "type": "integer"
                },
                "locale": {
                  "type": "string"
                },
                "locale_id": {
                  "type": "integer"
                },
                "moderator": {
                  "type": "boolean"
                },
                "name": {
                  "type": "string"
                },
                "only_private_comments": {
                  "type": "boolean"
                },
                "report_csv": {
                  "type": "boolean"
                },
                "restricted_agent": {
                  "type": "boolean"
                },
                "result_type": {
                  "type": "string"
                },
                "role": {
                  "type": "integer"
                },
                "shared": {
                  "type": "boolean"
                },
                "shared_agent": {
                  "type": "boolean"
                },
                "suspended": {
                  "type": "boolean"
                },
                "ticket_restriction": {
                  "type": "string"
                },
                "time_zone": {
                  "type": "string"
                },
                "two_factor_auth_enabled": {
                  "type": "boolean"
                },
                "updated_at": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "verified": {
                  "type": "boolean"
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }

Étapes suivantes

Une fois vos spécifications de source renseignées, vous pouvez procéder à la configuration des spécifications d’exploration pour la source que vous souhaitez intégrer à Platform. Consultez le document sur configuration des spécifications d’exploration pour plus d’informations.

recommendation-more-help
337b99bb-92fb-42ae-b6b7-c7042161d089