Informations de référence sur le connecteur de données RestApiPoller pour la plateforme de connecteurs sans code
Pour créer un RestApiPoller
connecteur de données avec la plateforme de connecteurs sans code (CCP), utilisez cette référence comme supplément à la documentation de l’API REST Microsoft Sentinel pour les connecteurs de données.
Chacun dataConnector
représente une connexion spécifique d’un connecteur de données Microsoft Sentinel. Un connecteur de données peut avoir plusieurs connexions, qui extraient des données à partir de différents points de terminaison. La configuration JSON créée à l’aide de ce document de référence est utilisée pour terminer le modèle de déploiement pour le connecteur de données CCP.
Pour plus d’informations, consultez Créer un connecteur sans code pour Microsoft Sentinel.
Connecteurs de données - Créer ou mettre à jour
Référencez l’opération Créer ou mettre à jour dans la documentation de l’API REST pour trouver la dernière version stable ou préliminaire de l’API. La différence entre la création et l’opération de mise à jour est que la mise à jour nécessite la valeur etag .
PUT , méthode
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}
Paramètres d’URI
Pour plus d’informations sur la dernière version de l’API, consultez Connecteurs de données - Créer ou mettre à jour des paramètres d’URI.
Nom | Description |
---|---|
dataConnectorId | L’ID du connecteur de données doit être un nom unique et est identique au paramètre dans le name corps de la requête. |
resourceGroupName | Nom du groupe de ressources, pas sensible à la casse. |
subscriptionId | ID de l’abonnement cible. |
workspaceName | Nom de l’espace de travail, et non de l’ID. Modèle d’expression régulière : ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$ |
api-version | Version de l’API à utiliser pour cette opération. |
Corps de la demande
Le corps de la demande d’un RestApiPoller
connecteur de données CCP a la structure suivante :
{
"name": "{{dataConnectorId}}",
"kind": "RestApiPoller",
"etag": "",
"properties": {
"connectorDefinitionName": "",
"auth": {},
"request": {},
"response": {},
"paging": "",
"dcrConfig": ""
}
}
RestApiPoller
RestApiPoller représente un connecteur de données CCP Poller API dans lequel vous personnalisez les charges utiles de pagination, d’autorisation et de requête/réponse pour votre source de données.
Nom | Requise | Type | Description |
---|---|---|---|
nom | True | string | Nom unique de la connexion correspondant au paramètre URI |
kind | True | string | Doit être RestApiPoller |
etag | GUID | Laissez vide pour la création de nouveaux connecteurs. Pour les opérations de mise à jour, l’etag doit correspondre à l’etag (GUID) du connecteur existant. | |
properties.connectorDefinitionName | string | Nom de la ressource DataConnectorDefinition qui définit la configuration de l’interface utilisateur du connecteur de données. Pour plus d’informations, consultez Définition du connecteur de données. | |
Propriétés.Auth | True | JSON imbriqué | Décrit les propriétés d’authentification pour l’interrogation des données. Pour plus d’informations, consultez la configuration de l’authentification. |
Propriétés.demander | True | JSON imbriqué | Décrit la charge utile de la requête pour interroger les données, telles que le point de terminaison de l’API. Pour plus d’informations, consultez Configuration de request. |
Propriétés.réponse | True | JSON imbriqué | Décrit l’objet de réponse et le message imbriqué renvoyés par l’API lors de l’interrogation des données. Pour plus d’informations, consultez Configuration de response. |
Propriétés.pagination | JSON imbriqué | Décrit la charge utile de la pagination lors de l’interrogation des données. Pour plus d’informations, consultez Configuration de paging. | |
Propriétés.dcrConfig | JSON imbriqué | Paramètres obligatoires lorsque les données sont envoyées à une règle de collecte de données (DCR). Pour plus d’informations, consultez configuration DCR. |
Configuration de l'authentification
Le CCP prend en charge les types d’authentification suivants :
Remarque
L’implémentation DE CCP OAuth2 ne prend pas en charge les informations d’identification du certificat client.
En guise de meilleure pratique, utilisez des paramètres dans la section d’authentification au lieu de coder en dur les informations d’identification. Pour plus d’informations, consultez Entrée confidentielle sécurisée.
Pour créer le modèle de déploiement qui utilise également des paramètres, vous devez échapper aux paramètres de cette section avec un démarrage [
supplémentaire. Cela permet aux paramètres d'attribuer une valeur en fonction de l'interaction de l'utilisateur avec le connecteur. Pour plus d’informations, consultez caractères d’échappement des expressions de modèle.
Pour permettre l’entrée des informations d’identification à partir de l’interface utilisateur, la connectorUIConfig
section nécessite instructions
les paramètres souhaités. Pour plus d’informations, consultez la référence des définitions de connecteur de données pour la plateforme de connecteurs sans code.
Authentification de base
Champ | Requis | Type |
---|---|---|
UserName | True | string |
Mot de passe | True | string |
Exemple d’authentification de base à l’aide de paramètres définis dans connectorUIconfig
:
"auth": {
"type": "Basic",
"UserName": "[[parameters('username')]",
"Password": "[[parameters('password')]"
}
APIKey
Champ | Requis | Type | Description | Valeur par défaut |
---|---|---|---|---|
ApiKey | True | string | clé secrète utilisateur | |
ApiKeyName | string | nom de l’en-tête Uri contenant la valeur ApiKey | Authorization |
|
ApiKeyIdentifier | string | valeur de chaîne à ajouter au jeton | token |
|
IsApiKeyInPostPayload | booléen | envoyer un secret dans le corps POST au lieu d’en-tête | false |
Exemples d’authentification APIKey :
"auth": {
"type": "APIKey",
"ApiKey": "[[parameters('apikey')]",
"ApiKeyName": "X-MyApp-Auth-Header",
"ApiKeyIdentifier": "Bearer"
}
Cet exemple montre comment obtenir le secret défini à partir de l’entrée utilisateur envoyée dans l’en-tête suivant : X-MyApp-Auth-Header : Porteur apikey
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
}
Cet exemple utilise les valeurs par défaut et génère l’en-tête suivant : Autorisation : jeton 123123123
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
"ApiKeyName": ""
}
Étant donné que le ApiKeyName
paramètre est défini ""
explicitement sur , le résultat est l’en-tête suivant : Autorisation : 123123123
OAuth2
La plateforme de connecteurs sans code prend en charge l’octroi de code d’autorisation OAuth 2.0 et les informations d’identification du client. Le type d’autorisation du code d’autorisation est utilisé par les clients confidentiels et publics pour échanger un code d’autorisation pour un jeton d’accès. Une fois que l’utilisateur est retourné au client via l’URL de redirection, l’application obtient le code d’autorisation de l’URL et l’utilise pour demander un jeton d’accès.
Champ | Requis | Type | Description |
---|---|---|---|
ClientId | True | Chaîne | ID client |
ClientSecret | True | Chaîne | Secret client |
AuthorizationCode | True quand grantType = authorization_code |
Chaîne | Si le type d’octroi est authorization_code cette valeur de champ correspond au code d’autorisation retourné par le service d’authentification. |
Portée | True pour le type d’octroi authorization_code facultatif pour le type d’octroi client_credentials |
Chaîne | Liste d’étendues séparées par un espace pour le consentement de l’utilisateur. Pour plus d’informations, consultez les étendues et autorisations OAuth2. |
RedirectUri | True quand grantType = authorization_code |
Chaîne | L’URL de redirection doit être https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights |
GrantType | True | Chaîne | authorization_code ou client_credentials |
TokenEndpoint | True | Chaîne | URL permettant d’échanger du code avec un jeton valide dans l’octroi ou l’ID authorization_code client et le secret avec un jeton valide dans client_credentials l’octroi. |
TokenEndpointHeaders | Object | Objet de valeur de clé facultatif pour envoyer des en-têtes personnalisés au serveur de jetons | |
TokenEndpointQueryParameters | Object | Objet de valeur de clé facultatif pour envoyer des analyseurs de requête personnalisés au serveur de jetons | |
AuthorizationEndpoint | True | Chaîne | URL du consentement de l’utilisateur pour authorization_code le flux |
AuthorizationEndpointHeaders | Object | Objet de valeur de clé facultatif pour envoyer des en-têtes personnalisés au serveur d’authentification | |
AuthorizationEndpointQueryParameters | Object | Paire de valeurs de clé facultative utilisée dans la demande de flux de code d’autorisation OAuth2 |
Le flux de code d’authentification permet d’extraire des données pour le compte des autorisations d’un utilisateur et des informations d’identification client est d’extraire des données avec des autorisations d’application. Le serveur de données accorde l’accès à l’application. Étant donné qu’il n’existe aucun utilisateur dans le flux d’informations d’identification du client, aucun point de terminaison d’autorisation n’est nécessaire, qu’un point de terminaison de jeton.
Exemple : type d’octroi OAuth2 authorization_code
"auth": {
"type": "OAuth2",
"ClientId": "[[parameters('appId')]",
"ClientSecret": "[[parameters('appSecret')]",
"tokenEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token",
"authorizationEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/authorize",
"authorizationEndpointHeaders": {},
"authorizationEndpointQueryParameters": {
"prompt": "consent"
},
"redirectUri": "https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights",
"tokenEndpointHeaders": {
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
"TokenEndpointQueryParameters": {},
"scope": "openid offline_access some_scope",
"grantType": "authorization_code"
}
Exemple : type d’octroi OAuth2 client_credentials
"auth": {
"type": "OAuth2",
"ClientId": "[[parameters('appId')]",
"ClientSecret": "[[parameters('appSecret')]",
"tokenEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token",
"tokenEndpointHeaders": {
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
"TokenEndpointQueryParameters": {},
"scope": "openid offline_access some_scope",
"grantType": "client_credentials"
}
Jwt
Exemple : jeton web JSON (JWT)
"auth": {
"type": "JwtToken",
"userName": {
"key":"username",
"value":"[[parameters('UserName')]"
},
"password": {
"key":"password",
"value":"[[parameters('Password')]"
},
"TokenEndpoint": {"https://token_endpoint.contoso.com"},
"IsJsonRequest": true
}
Configuration de requête
La section de requête définit la façon dont le connecteur de données CCP envoie des requêtes à votre source de données, comme le point de terminaison de l’API et la fréquence à laquelle interroger ce point de terminaison.
Champ | Requis | Type | Description |
---|---|---|---|
ApiEndpoint | True | Chaîne | URL du serveur distant. Définit le point de terminaison à partir duquel extraire les données. |
RateLimitQPS | Integer | Définit le nombre d’appels ou de requêtes autorisés en une seconde. | |
QueryWindowInMin | Integer | Définit la fenêtre de requête disponible en minutes. Le minimum est de 1 minute. La valeur par défaut est de 5 minutes. | |
HttpMethod | Chaîne | Définit la méthode d’API : GET (par défaut) ou POST |
|
QueryTimeFormat | Chaîne | Définit le format de date et d’heure attendu par le point de terminaison (serveur distant). Le CCP utilise la date et l’heure actuelles où cette variable est utilisée. Les valeurs possibles sont les constantes : UnixTimestamp , UnixTimestampInMills ou toute autre représentation valide de l’heure de date, par exemple : yyyy-MM-dd , MM/dd/yyyy HH:mm:ss la valeur par défaut est ISO 8601 UTC |
|
RetryCount | Entier (1...6) | Définit 1 les 6 nouvelles tentatives autorisées à récupérer à partir d’un échec. La valeur par défaut est 3 . |
|
TimeoutInSeconds | Entier (1...180) | Définit le délai d’expiration de la requête, en secondes. La valeur par défaut est 20 |
|
IsPostPayloadJson | Boolean | Détermine si la charge utile POST est au format JSON. La valeur par défaut est false |
|
En-têtes | Object | Paires clé-valeur qui définissent les en-têtes de requête. | |
QueryParameters | Object | Paires clé-valeur qui définissent les paramètres de requête de requête. | |
StartTimeAttributeName | True quand est EndTimeAttributeName défini |
Chaîne | Définit le nom du paramètre de requête pour l’heure de début de la requête. Consultez l’exemple. |
EndTimeAttributeName | True quand est StartTimeAttributeName défini |
Chaîne | Définit le nom du paramètre de requête pour l’heure de fin de la requête. |
QueryTimeIntervalAttributeName | Chaîne | Si le point de terminaison nécessite un format spécialisé pour interroger les données sur une période de temps, utilisez cette propriété avec les paramètres et les QueryTimeIntervalPrepend QueryTimeIntervalDelimiter paramètres. Consultez l’exemple. |
|
QueryTimeIntervalPrepend | True quand est QueryTimeIntervalAttributeName défini |
Chaîne | Consultez QueryTimeIntervalAttributeName |
QueryTimeIntervalDelimiter | True quand est QueryTimeIntervalAttributeName défini |
Chaîne | Consultez QueryTimeIntervalAttributeName |
QueryParametersTemplate | Chaîne | Modèle de requête à utiliser lors du passage de paramètres dans des scénarios avancés. br>Par exemple : "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" |
Lorsque l’API nécessite des paramètres complexes, utilisez ou queryParameters
queryParametersTemplate
incluez des variables intégrées.
Variable intégrée | pour une utilisation dans queryParameters |
pour une utilisation dans queryParametersTemplate |
---|---|---|
_QueryWindowStartTime |
Oui | oui |
_QueryWindowEndTime |
oui | oui |
_APIKeyName |
non | Oui |
_APIKey |
non | Oui |
Exemple StartTimeAttributeName
Prenons cet exemple :
StartTimeAttributeName
=from
EndTimeAttributeName
=until
ApiEndpoint
=https://www.example.com
La requête envoyée au serveur distant est la suivante : https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}
Exemple QueryTimeIntervalAttributeName
Prenons cet exemple :
QueryTimeIntervalAttributeName
=interval
QueryTimeIntervalPrepend
=time:
QueryTimeIntervalDelimiter
=..
ApiEndpoint
=https://www.example.com
La requête envoyée au serveur distant est la suivante : https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}
Exemples de requête utilisant Microsoft Graph comme API de source de données
Cet exemple interroge les messages avec un paramètre de requête de filtre. Pour plus d’informations, consultez les paramètres de requête de l’API Microsoft Graph.
"request": {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
"User-Agent": "Example-app-agent"
},
"QueryTimeIntervalAttributeName": "filter",
"QueryTimeIntervalPrepend": "receivedDateTime gt ",
"QueryTimeIntervalDelimiter": " and receivedDateTime lt "
}
L’exemple précédent envoie une GET
requête à https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000
. L’horodatage est mis à jour pour chaque queryWindowInMin
fois.
Les mêmes résultats sont obtenus avec cet exemple :
"request": {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
},
"queryParameters": {
"filter": "receivedDateTime gt {_QueryWindowStartTime} and receivedDateTime lt {_QueryWindowEndTime}"
}
}
Une autre option est lorsque la source de données attend 2 paramètres de requête, un pour l’heure de début et l’autre pour l’heure de fin.
Exemple :
"request": {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/calendarView",
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
},
"StartTimeAttributeName": "startDateTime",
"EndTimeAttributeName": "endDateTime",
}
Cela envoie une GET
demande à https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000
Pour les requêtes complexes, utilisez QueryParametersTemplate
. Cet exemple suivant envoie une POST
requête avec des paramètres dans le corps.
Exemple :
request: {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
"httpMethod": "POST",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
},
"isPostPayloadJson": true,
"queryParametersTemplate": "{\"query":"TableName | where createdTimestamp between (datetime({_QueryWindowStartTime}) .. datetime({_QueryWindowEndTime}))\"}"
}
Configuration de réponse
Définissez la gestion des réponses de votre connecteur de données avec les paramètres suivants :
Champ | Requis | Type | Description |
---|---|---|---|
EventsJsonPaths | True | Liste des chaînes | Définit le chemin d’accès au message dans la réponse JSON. Une expression de chemin d’accès JSON spécifie un chemin d’accès à un élément, ou à un ensemble d’éléments, dans une structure JSON |
SuccessStatusJsonPath | Chaîne | Définit le chemin d’accès au message de réussite dans la réponse JSON. Lorsque ce paramètre est défini, le SuccessStatusValue paramètre doit également être défini. |
|
SuccessStatusValue | Chaîne | Définit le chemin d’accès vers la valeur du message de réussite dans la réponse JSON. | |
IsGzipCompressed | Boolean | Détermine si la réponse est compressée dans un fichier gzip | |
format | True | Chaîne | json ou csv ou xml |
CompressionAlgo | Chaîne | L’algorithme de compression, soit multi-gzip deflate . Pour l’algorithme de compression gzip, configurez IsGzipCompressed simplement pour True définir une valeur pour ce paramètre. |
|
CsvDelimiter | Chaîne | Si le format de réponse est CSV et que vous souhaitez modifier le délimiteur CSV par défaut de "," |
|
Limite de hachage | Boolean | Indiquer si les données CSV ont une limite | |
HasCsvHeader | Boolean | Indiquer si les données CSV ont un en-tête, la valeur par défaut est True |
|
CsvEscape | Chaîne | Caractère d’échappement pour une limite de champ, la valeur par défaut est " Par exemple, un fichier CSV avec des en-têtes id,name,avg et une ligne de données contenant des espaces comme 1,"my name",5.5 nécessite la limite de " champ. |
|
ConvertChildPropertiesToArray | Boolean | Cas particulier dans lequel le serveur distant retourne un objet au lieu d’une liste d’événements où chaque propriété contient des données. |
Remarque
Le type de format CSV est analysé par la spécification RFC4180 .
Exemples de configuration de réponse
Une réponse de serveur au format JSON est attendue, avec les données demandées dans la valeur de propriété. L’état de la propriété de réponse indique d’ingérer les données uniquement si la valeur est success
.
"response": {
"EventsJsonPaths ": ["$.value"],
"format": "json",
"SuccessStatusJsonPath": "$.status",
"SuccessStatusValue": "success",
"IsGzipCompressed: true
}
La réponse attendue dans cet exemple prépare un fichier CSV sans en-tête.
"response": {
"EventsJsonPaths ": ["$"],
"format": "csv",
"HasCsvHeader": false
}
Configuration de pagination
Lorsque la source de données ne peut pas envoyer l’intégralité de la charge utile de réponse en même temps, le connecteur de données CCP doit savoir comment recevoir des parties des données dans les pages de réponse. Les types de pagination à choisir sont les suivants :
Type de pagination | facteur de décision |
---|---|
La réponse de l’API contient-elle des liens vers les pages suivantes et précédentes ? | |
La réponse de l’API a-t-elle un jeton ou un curseur pour les pages suivantes et précédentes ? | |
La réponse de l’API prend-elle en charge un paramètre pour le nombre d’objets à ignorer lors de la pagination ? |
Configurer LinkHeader ou PersistentLinkHeader
Le type de pagination le plus courant est lorsqu’une API de source de données serveur fournit des URL aux pages de données suivantes et précédentes. Pour plus d’informations sur la spécification de l’en-tête de lien, consultez RFC 5988.
LinkHeader
la pagination signifie que la réponse de l’API inclut les éléments suivants :
- en-tête de
Link
réponse HTTP - ou un chemin JSON pour récupérer le lien à partir du corps de la réponse.
PersistentLinkHeader
la pagination a les mêmes propriétés que , sauf que LinkHeader
l’en-tête de lien persiste dans le stockage back-end. Cette option active la pagination des liens entre les fenêtres de requête. Par exemple, certaines API ne prennent pas en charge les heures de début ou les heures de fin des requêtes. Au lieu de cela, ils prennent en charge un curseur côté serveur. Les types de pages persistantes peuvent être utilisés pour mémoriser le curseur côté serveur. Pour plus d’informations, consultez Qu’est-ce qu’un curseur ?.
Remarque
Il ne peut y avoir qu’une seule requête s’exécutant pour le connecteur avec PersistentLinkHeader afin d’éviter les conditions de concurrence sur le curseur côté serveur. Cela peut affecter la latence.
Champ | Requis | Type | Description |
---|---|---|---|
LinkHeaderTokenJsonPath | False | Chaîne | Utilisez cette propriété pour indiquer où obtenir la valeur dans le corps de la réponse. Par exemple, si la source de données retourne le code JSON suivant : { nextPage: "foo", value: [{data}]} LinkHeaderTokenJsonPath $.nextPage |
PageSize | False | Integer | Nombre d’événements par page |
PageSizeParameterName | False | Chaîne | Nom du paramètre de requête pour la taille de page |
Voici quelques exemples :
Paging: {
"pagingType": "LinkHeader",
"linkHeaderTokenJsonPath" : "$.metadata.links.next"
}
Paging: {
"pagingType" : "PersistentLinkHeader",
"pageSizeParameterName" : "limit",
"pageSize" : 500
}
Configurer NextPageUrl
NextPageUrl
la pagination signifie que la réponse de l’API inclut un lien complexe dans le corps de la réponse similaire à LinkHeader
, mais que l’URL est incluse dans le corps de la réponse au lieu de l’en-tête.
Champ | Requis | Type | Description |
---|---|---|---|
PageSize | False | Integer | Nombre d’événements par page |
PageSizeParameterName | False | Chaîne | Nom du paramètre de requête pour la taille de page |
NextPageUrl | False | Chaîne | Uniquement si le connecteur est pour l’API Coralogix |
NextPageUrlQueryParameters | False | Paires de valeurs clé d’objet : ajout d’un paramètre de requête personnalisé à chaque demande de la page suivante | |
NextPageParaName | False | Chaîne | Détermine le nom de la page suivante dans la requête. |
HasNextFlagJsonPath | False | Chaîne | Définit le chemin d’accès à l’attribut d’indicateur HasNextPage |
NextPageRequestHeader | False | Chaîne | Détermine le nom de l’en-tête de la page suivante dans la requête. |
NextPageUrlQueryParametersTemplate | False | Chaîne | Uniquement si le connecteur est pour l’API Coralogix |
Exemple :
Paging: {
"pagingType" : "NextPageUrl",
"nextPageTokenJsonPath" : "$.data.repository.pageInfo.endCursor",
"hasNextFlagJsonPath" : "$.data.repository.pageInfo.hasNextPage",
"nextPageUrl" : "https://api.github.com/graphql",
"nextPageUrlQueryParametersTemplate" : "{'query':'query{repository(owner:\"xyz\")}"
}
Configurer NextPageToken ou PersistentToken
NextPageToken
la pagination utilise un jeton (hachage ou curseur) qui représente l’état de la page active. Le jeton est inclus dans la réponse de l’API, et le client l’ajoute à la requête suivante pour extraire la page suivante. Cette méthode est souvent utilisée lorsque le serveur doit maintenir l’état exact entre les requêtes.
PersistentToken
pagination utilise un jeton qui conserve le côté serveur. Le serveur mémorise le dernier jeton récupéré par le client et fournit le jeton suivant dans les requêtes suivantes. Le client continue là où il s’est arrêté même s’il effectue de nouvelles demandes ultérieurement.
Champ | Requis | Type | Description |
---|---|---|---|
PageSize | False | Integer | Nombre d’événements par page |
PageSizeParameterName | False | string | Nom du paramètre de requête pour la taille de page |
NextPageTokenJsonPath | False | string | Chemin JSON du jeton de page suivant dans le corps de la réponse. |
NextPageTokenResponseHeader | False | string | Si NextPageTokenJsonPath elle est vide, utilisez le jeton dans ce nom d’en-tête pour la page suivante. |
NextPageParaName | False | string | Détermine le nom de la page suivante dans la requête. |
HasNextFlagJsonPath | False | string | Définit le chemin d’accès à un attribut d’indicateur HasNextPage lors de la détermination si d’autres pages sont laissées dans la réponse. |
NextPageRequestHeader | False | string | Détermine le nom de l’en-tête de la page suivante dans la requête. |
Exemples :
Paging: {
"pagingType" : "NextPageToken",
"nextPageRequestHeader" : "ETag",
"nextPageTokenResponseHeader" : "ETag"
}
Paging: {
"pagingType" : "PersistentToken",
"nextPageParaName" : "gta",
"nextPageTokenJsonPath" : "$.alerts[-1:]._id"
}
Configurer offset
Offset
pagination spécifie le nombre de pages à ignorer et une limite du nombre d’événements à récupérer par page dans la demande. Les clients extraient une plage spécifique d’éléments à partir du jeu de données.
Champ | Requis | Type | Description |
---|---|---|---|
PageSize | False | Integer | Nombre d’événements par page |
PageSizeParameterName | False | Chaîne | Nom du paramètre de requête pour la taille de page |
OffsetParaName | False | Chaîne | Nom du paramètre de requête de requête suivant. Le CCP calcule la valeur de décalage pour chaque requête (tous les événements ingérés + 1) |
Exemple :
Paging: {
"pagingType": "Offset",
"offsetParaName": "offset"
}
Configuration DCR
Champ | Requis | Type | Description |
---|---|---|---|
DataCollectionEndpoint | True | Chaîne | DCE (point de terminaison de collecte de données) par exemple : https://example.ingest.monitor.azure.com . |
DataCollectionRuleImmutableId | True | Chaîne | ID immuable DCR. Recherchez-le en consultant la réponse de création de DCR ou à l’aide de l’API DCR |
StreamName | True | string | Cette valeur est définie streamDeclaration dans la DCR (le préfixe doit commencer par Custom-) |
Exemple de connecteur de données CCP
Voici un exemple de tous les composants du connecteur de données CCP JSON ensemble.
{
"kind": "RestApiPoller",
"properties": {
"connectorDefinitionName": "ConnectorDefinitionExample",
"dcrConfig": {
"streamName": "Custom-ExampleConnectorInput",
"dataCollectionEndpoint": "https://example-dce-sbsr.location.ingest.monitor.azure.com",
"dataCollectionRuleImmutableId": "dcr-32_character_hexadecimal_id"
},
"dataType": "ExampleLogs",
"auth": {
"type": "Basic",
"password": "[[parameters('username')]",
"userName": "[[parameters('password')]"
},
"request": {
"apiEndpoint": "https://rest.contoso.com/example",
"rateLimitQPS": 10,
"queryWindowInMin": 5,
"httpMethod": "GET",
"queryTimeFormat": "UnixTimestamp",
"startTimeAttributeName": "t0",
"endTimeAttributeName": "t1",
"retryCount": 3,
"timeoutInSeconds": 60,
"headers": {
"Accept": "application/json",
"User-Agent": "Example-app-agent"
}
},
"paging": {
"pagingType": "LinkHeader"
},
"response": {
"eventsJsonPaths": ["$"]
}
}
}