Referens för RestApiPoller-dataanslutning för Codeless Connector Framework

Du kan skapa en RestApiPoller dataanslutning med Codeless Connector Framework (CCF) med hjälp av den här artikeln som ett komplement till dokumentet om Microsoft Sentinel REST API för dataanslutningsprogram.

Varje dataanslutning representerar en specifik anslutning för en Microsoft Sentinel dataanslutning. En dataanslutning kan ha flera anslutningar som hämtar data från olika slutpunkter. Du kan slutföra distributionsmallen för CCF-dataanslutningen med hjälp av JSON-konfigurationen som du skapar med den här artikeln.

Mer information finns i Skapa en kodlös anslutningsapp för Microsoft Sentinel.

Skapa eller uppdatera dataanslutningar

Hitta den senaste stabila versionen eller förhandsversionen av API:et create genom att referera till åtgärderna eller update i REST API-dokumenten. Skillnaden mellan create åtgärderna och update är att update det kräver etag värdet.

PUT Metod:

https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}

URI-parametrar

Mer information om den senaste API-versionen finns i Dataanslutningar: skapa eller uppdatera URI-parametrar.

Namn Beskrivning
dataConnectorId ID:t för dataanslutningsappen. Det måste vara ett unikt namn som är samma som parametern name i begärandetexten.
resourceGroupName Namnet på resursgruppen, inte skiftlägeskänsligt.
subscriptionId ID för målprenumerationen.
workspaceName Namnet på arbetsytan, inte ID:t.
Regex-mönstret är ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$.
api-version DEN API-version som ska användas för den här åtgärden.

Frågebrödtext

Begärandetexten för en RestApiPoller CCF-dataanslutning har följande struktur:

{
   "name": "{{dataConnectorId}}",
   "kind": "RestApiPoller",
   "etag": "",
   "properties": {
        "connectorDefinitionName": "",
        "auth": {},
        "request": {},
        "response": {},
        "paging": "",
        "dcrConfig": ""
   }
}

RestApiPoller

RestApiPoller är en CCF-dataanslutning för API-poller som du kan använda för att anpassa nyttolaster för sidindelning, auktorisering och begäran/svar för din datakälla.

Namn Obligatoriskt Typ Beskrivning
name Sant Sträng Det unika namnet på anslutningen som matchar URI-parametern.
kind Sant Sträng Värdet kind . Det här fältet måste vara inställt på RestApiPoller.
etag GUID Värdet etag . Det här fältet måste lämnas tomt för att nya anslutningsappar ska kunna skapas. För uppdateringsåtgärder etag måste matcha den befintliga anslutningsappen etag (GUID).
properties.connectorDefinitionName Sträng Namnet på resursen DataConnectorDefinition som definierar UI-konfigurationen för dataanslutningsappen. Mer information finns i Definitionen för dataanslutningsappen.
properties.auth Sant Kapslad JSON Autentiseringsegenskaperna för avsökning av data. Mer information finns i Autentiseringskonfiguration.
properties.request Sant Kapslad JSON Nyttolasten för begäran för avsökning av data, till exempel API-slutpunkten. Mer information finns i Begär konfiguration.
properties. response Sant Kapslad JSON Svarsobjektet och det kapslade meddelandet som API:et returnerar när data avsökers. Mer information finns i Svarskonfiguration.
properties.paging Kapslad JSON Sidnumreringsnyttolasten när data avsöks. Mer information finns i Växlingskonfiguration.
properties.dcrConfig Kapslad JSON De obligatoriska parametrarna när data skickas till en datainsamlingsregel (DCR). Mer information finns i DCR-konfiguration.

Autentiseringskonfiguration

CCF stöder följande autentiseringstyper:

Obs!

CCF OAuth2-implementeringen stöder inte autentiseringsuppgifter för klientcertifikat.

Vi rekommenderar att du använder parametrar i autentiseringsavsnittet i stället för hårdkodade autentiseringsuppgifter. Mer information finns i Skydda konfidentiella indata.

Om du vill skapa distributionsmallen, som även använder parametrar, måste du undvika parametrarna i det här avsnittet med en extra start [. Med det här steget kan parametrarna tilldela ett värde baserat på användarinteraktionen med anslutningsappen. Mer information finns i Escape-tecken för malluttryck.

För att aktivera autentiseringsuppgifterna som ska anges från användargränssnittet connectorUIConfig kräver avsnittet att du anger önskade parametrar i instructions. Mer information finns i Referens för definitioner för dataanslutningsprogram för Codeless Connector Framework.

Grundläggande autentisering

Fält Obligatoriskt Typ
UserName Sant Sträng
Password Sant Sträng

Här är ett exempel på grundläggande autentisering som använder parametrar som definierats i connectorUIconfig:

"auth": {
    "type": "Basic",
    "UserName": "[[parameters('username')]",
    "Password": "[[parameters('password')]"
}

API-nyckel

Fält Obligatoriskt Typ Beskrivning Standardvärdet
ApiKey Sant Sträng Användarhemlighetsnyckel.
ApiKeyName Sträng Namnet på URI-huvudet som innehåller ApiKey värdet. Authorization
ApiKeyIdentifier Sträng Strängvärde för att förbereda token. token
IsApiKeyInPostPayload Boolesk Värde som avgör om hemligheten ska skickas i brödtexten POST i stället för rubriken. false

APIKey autentiseringsexempel:

"auth": {
    "type": "APIKey",
    "ApiKey": "[[parameters('apikey')]",
    "ApiKeyName": "X-MyApp-Auth-Header",
    "ApiKeyIdentifier": "Bearer"
}

Resultatet av det här exemplet är hemligheten som definieras från användarindata som skickas i följande rubrik: : X-MyApp-Auth-HeaderBearer apikey.

"auth": { 
    "type": "APIKey",
    "ApiKey": "123123123",
}

I det här exemplet används standardvärdena och resultatet i följande rubrik: : Authorizationtoken 123123123.

"auth": { 
    "type": "APIKey",
    "ApiKey": "123123123",
    "ApiKeyName": ""
}

Eftersom ApiKeyName är uttryckligen inställt på ""är resultatet följande rubrik: : Authorization123123123.

OAuth2

Codeless Connector Framework stöder beviljande av OAuth 2.0-auktoriseringskod och klientautentiseringsuppgifter. Beviljandetypen auktoriseringskod används av konfidentiella och offentliga klienter för att utbyta en auktoriseringskod för en åtkomsttoken.

När användaren återvänder till klienten via omdirigerings-URL:en hämtar programmet auktoriseringskoden från URL:en och använder den för att begära en åtkomsttoken.

Fält Obligatoriskt Typ Beskrivning
ClientId Sant. Sträng Klient-ID: t.
ClientSecret Sant. Sträng Klienthemligheten.
AuthorizationCode Sant när värdet grantType är authorization_code. Sträng Om beviljandetypen är authorization_codeär det här fältvärdet den auktoriseringskod som autentiseringsservern returnerade.
Scope Sant för authorization_code beviljandetypen.
Valfritt för client_credentials beviljandetypen.
Sträng En blankstegsavgränsad lista över omfång för användarmedgivande. Mer information finns i OAuth2-omfång och behörigheter.
RedirectUri Sant när värdet grantType är authorization_code. Sträng URL:en för omdirigering måste vara https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights.
GrantType Sant. Sträng Beviljandetypen. Kan vara authorization_code eller client_credentials.
TokenEndpoint Sant. Sträng URL:en för att utbyta kod med en giltig token i authorization_code beviljandet, eller ett klient-ID och en hemlighet med en giltig token i beviljandet client_credentials .
TokenEndpointHeaders Objekt Ett valfritt nyckel-/värdeobjekt för att skicka anpassade huvuden till tokenservern.
TokenEndpointQueryParameters Objekt Ett valfritt nyckel-/värdeobjekt för att skicka anpassade frågeparametrar till tokenservern.
AuthorizationEndpoint Sant. Sträng URL:en för användarmedgivande för authorization_code flödet.
AuthorizationEndpointHeaders Objekt Ett valfritt nyckel-/värdeobjekt för att skicka anpassade huvuden till autentiseringsservern.
AuthorizationEndpointQueryParameters Objekt Ett valfritt nyckel/värde-par som används i en OAuth2-auktoriseringskodflödesbegäran.

Du kan använda autentiseringskodflödet för att hämta data för en användares behörigheter. Du kan använda klientautentiseringsuppgifter för att hämta data med programbehörigheter. Dataservern ger åtkomst till programmet. Eftersom det inte finns någon användare i flödet för klientautentiseringsuppgifter behövs ingen auktoriseringsslutpunkt, bara en tokenslutpunkt.

Här är ett exempel på OAuth2-beviljandetypen 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"
}

Här är ett exempel på OAuth2-beviljandetypen 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

JSON-webbtokenautentisering (JWT) stöder hämtning av token via autentiseringsuppgifter för användarnamn och lösenord och använder dem för API-begäranden.

Grundläggande exempel
"auth": {
    "type": "JwtToken",
    "userName": {
        "key": "username",
        "value": "[[parameters('UserName')]"
    },
    "password": {
        "key": "password", 
        "value": "[[parameters('Password')]"
    },
    "TokenEndpoint": "https://token_endpoint.contoso.com",
    "IsJsonRequest": true,
    "JwtTokenJsonPath": "$.access_token"
}
Autentiseringsuppgifter i POST-brödtext (standard)
"auth": {
    "type": "JwtToken",
    "userName": {
        "key": "username",
        "value": "[[parameters('UserName')]"
    },
    "password": {
        "key": "password",
        "value": "[[parameters('Password')]"
    },
    "TokenEndpoint": "https://api.example.com/token",
    "Headers": {
        "Accept": "application/json",
        "Content-Type": "application/json"
    },
    "IsCredentialsInHeaders": false,
    "IsJsonRequest": true,
    "JwtTokenJsonPath": "$.access_token"
}
Autentiseringsuppgifter i rubriker (grundläggande autentisering)
"auth": {
    "type": "JwtToken",
    "userName": {
        "key": "client_id",
        "value": "[[parameters('ClientId')]"
    },
    "password": {
        "key": "client_secret",
        "value": "[[parameters('ClientSecret')]"
    },
    "TokenEndpoint": "https://api.example.com/oauth/token",
    "Headers": {
        "Accept": "application/json"
    },
    "IsCredentialsInHeaders": true,
    "IsJsonRequest": true,
    "JwtTokenJsonPath": "$.access_token",
    "RequestTimeoutInSeconds": 30
}
Autentiseringsuppgifter i rubriker (användartoken)
"auth": {
    "type": "JwtToken",
    "UserToken": "[[parameters('userToken')]",
    "UserTokenPrepend": "Bearer",
    "TokenEndpoint": "https://api.example.com/oauth/token",
    "Headers": {
        "Accept": "application/json"
    },
    "TokenEndpointHttpMethod": "GET",
    "NoAccessTokenPrepend": true,
    "JwtTokenJsonPath": "$.systemToken"
}

Följ det här autentiseringsflödet:

  1. Skicka autentiseringsuppgifter till TokenEndpoint för att hämta JWT-token, när du använder userName och password, IsCredentialsInHeaders används för att avgöra var autentiseringsuppgifterna ska placeras i begäran.

    • Om IsCredentialsInHeaders: true: Skickar en grundläggande autentiseringsrubrik med username:password.
    • Om IsCredentialsInHeaders: false: Skickar autentiseringsuppgifter i en POST brödtext.
  2. Extrahera token med hjälp JwtTokenJsonPath av eller från svarshuvudet.

  3. Auktoriseringshuvudet för JWT-token är en konstant och kommer alltid att vara "Authorization".

Fält Obligatoriskt Typ Beskrivning
type Sant Sträng Typ. Måste vara JwtToken
userName Sant (om userToken inte används) Objekt Nyckel/värde-paret för autentiseringsuppgifterna userName . Om userName och password skickas i rubrikbegäran anger du value egenskapen med användarnamnet. Om userName och password skickas i brödtextbegäran anger du Key och Value.
password Sant (om userToken inte används) Objekt Nyckel/värde-paret för lösenordsautentiseringsuppgifterna. Om userName och password skickas i rubrikbegäran anger du value egenskapen med userName. Om userName och password skickas i brödtextbegäran anger du Key och Value.
userToken Sant (om userName inte används) Sträng Den användartoken som genereras av klienten för att hämta systemtoken för autentisering.
UserTokenPrepend Falskt Sträng Värdet som anger om text ska förberedas före token. Standard: Bearer.
NoAccessTokenPrepend Falskt Boolesk En åtkomstflagga som anger att token inte ska förbereda något.
TokenEndpointHttpMethod Falskt Sträng HTTP-metoden för tokenslutpunkt. Det kan vara Get eller Post. Standardvärdet är Post.
TokenEndpoint Sant Sträng URL-slutpunkten som används för att hämta JWT-token.
IsCredentialsInHeaders Boolesk Värdet som anger om autentiseringsuppgifter ska skickas som en grundläggande autentiseringsrubrik (true) jämfört med en POST brödtext (false), ignoreras när du använder userToken. Standardvärdet är false.
IsJsonRequest Boolesk Värdet som anger om begäran ska skickas i JSON (rubrik Content-Type = application/json) jämfört med formulärkodad (rubrik Content-Type = application/x-www-form-urlencoded). Standardvärdet är false.
JwtTokenJsonPath Sträng Värdet som anger det JSONPath värde som ska användas för att extrahera token från svaret. Till exempel: $.access_token.
JwtTokenInResponseHeader Boolesk Värdet som anger om token ska extraheras från svarshuvudet jämfört med brödtexten. Standardvärdet är false.
JwtTokenHeaderName. Sträng Värdet som anger rubriknamnet när token finns i svarshuvudet. Standardvärdet är Authorization.
JwtTokenIdentifier Sträng Identifieraren som används för att extrahera JWT från en prefixerad tokensträng.
QueryParameters Objekt De anpassade frågeparametrar som ska inkluderas när begäran skickas till tokenslutpunkten.
Headers Objekt De anpassade huvuden som ska inkluderas när begäran skickas till tokenslutpunkten.
RequestTimeoutInSeconds Heltal Tidsgränsen för begäran i sekunder. Standardvärdet är 100, med ett maxvärde på 180.

Obs!

Begränsningar

  • Kräver autentisering med användarnamn och lösenord för tokenförvärv
  • Stöder inte API-nyckelbaserade tokenbegäranden
  • Stöder inte autentisering av anpassade huvuden (utan användarnamn och lösenord)

Konfiguration av begäranden

Avsnittet för begäran definierar hur CCF-dataanslutningsappen skickar begäranden till din datakälla (till exempel API-slutpunkten och hur ofta slutpunkten ska avsökas).

Fält Obligatoriskt Typ Beskrivning
ApiEndpoint Sant. Sträng Det här fältet bestämmer URL:en för fjärrservern och definierar slutpunkten som data ska hämtas från.
RateLimitQPS Heltal Det här fältet definierar antalet anrop eller frågor som tillåts under en sekund för den första begäran. Den gäller inte för sidnumrerade begäranden. Om du vill begränsa sidnumreringen anger du PaginatedCallsPerSecondockså .
PaginatedCallsPerSecond Dubbel (0...1000) Det här fältet definierar antalet anrop per sekund som tillåts för sidnumrerade begäranden till RESTful-API:et. Den introducerar en fördröjning av (1000 / paginatedCallsPerSecond) millisekunder mellan varje sidnumrerat API-anrop. Den här begränsningen gäller endast för sidnumreringsbegäranden och är separat från RateLimitQPS, som styr den ursprungliga begärandefrekvensen. Vanligtvis anges samma värde som RateLimitQPS för att respektera datakällans hastighetsgräns för alla begäranden. 0 värdet innebär att ingen sidnumreringsbegränsning tillämpas.
RateLimitConfig Objekt Det här fältet definierar hastighetsbegränsningskonfigurationen för RESTful-API:et. Mer information finns i RateLimitConfig exempel.
QueryWindowInMin Heltal Det här fältet definierar det tillgängliga frågefönstret på några minuter. Minst 1 minut. Standardvärdet är 5 minuter.
HttpMethod Sträng Det här fältet definierar API-metoden: GET(standard) eller POST.
QueryTimeFormat Sträng Det här fältet definierar det datum- och tidsformat som slutpunkten (fjärrservern) förväntar sig. CCF använder aktuellt datum och tid oavsett var variabeln används. Möjliga värden är konstanterna: UnixTimestamp, UnixTimestampInMillseller någon annan giltig representation av datum och tid. Till exempel: yyyy-MM-dd, MM/dd/yyyy HH:mm:ss.
Standardvärdet är ISO 8601 UTC.
RetryCount Heltal (1...6) Det här fältet definierar att värdena 1 för till 6 återförsök tillåts att återställas från ett fel. Standardvärdet är 3.
TimeoutInSeconds Heltal (1...180) Det här fältet definierar tidsgränsen för begäran i sekunder. Standardvärdet är 20.
IsPostPayloadJson Boolesk Det här fältet avgör om POST nyttolasten är i JSON-format. Standardvärdet är false.
Headers Objekt Det här fältet innehåller nyckel/värde-par som definierar begärandehuvudena.
QueryParameters Objekt Det här fältet innehåller nyckel/värde-par som definierar frågeparametrarna för begäran.
StartTimeAttributeName Sant när värdet EndTimeAttributeName anges. Sträng Det här fältet definierar frågeparameternamnet för frågans starttid. Mer information finns i StartTimeAttributeName exempel.
EndTimeAttributeName Sant när StartTimeAttributeName har angetts. Sträng Det här fältet definierar frågeparameternamnet för frågans sluttid.
QueryTimeIntervalAttributeName Sträng Det här fältet används om slutpunkten kräver ett specialiserat format för att fråga efter data inom en tidsram. Använd den här egenskapen med parametrarna QueryTimeIntervalPrepend och QueryTimeIntervalDelimiter . Mer information finns i QueryTimeIntervalAttributeName exempel.
QueryTimeIntervalPrepend Sant när QueryTimeIntervalAttributeName har angetts. Sträng Referens QueryTimeIntervalAttributeName.
QueryTimeIntervalDelimiter Sant när QueryTimeIntervalAttributeName har angetts. Sträng Referens QueryTimeIntervalAttributeName.
QueryParametersTemplate Sträng Det här fältet refererar till den frågemall som ska användas när parametrar skickas i avancerade scenarier.

Till exempel: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}".
InitialCheckpointTimeUtc DateTime (UTC) Anger frågans starttid för den allra första avsökningen när det inte finns någon lagrad kontrollpunkt. När en kontrollpunkt sparas efter den första lyckade avsökningen ignoreras det här värdet. Den här inställningen börjar bara gälla när anslutningsappens konfiguration för begäran definierar en frågeparameter för starttid (till exempel startTimeAttributeName eller {_QueryWindowStartTime} ersättningstoken) utan motsvarande sluttidsparameter. Det har ingen effekt på anslutningsappar som enbart förlitar sig på sidnumreringsmarkörer eller token. Format: ISO 8601 UTC datetime (till exempel 2024-01-15T00:00:00Z).

När API:et kräver komplexa parametrar använder du queryParameters eller queryParametersTemplate. Dessa kommandon innehåller några inbyggda variabler.

Inbyggd variabel För användning i queryParameters För användning i queryParametersTemplate
_QueryWindowStartTime Ja Ja
_QueryWindowEndTime Ja Ja
_APIKeyName Nej Ja
_APIKey Nej Ja

StartTimeAttributeName-exempel

Tänk dig det här exemplet:

  • StartTimeAttributeName = from
  • EndTimeAttributeName = until
  • ApiEndpoint = https://www.example.com

Frågan som skickas till fjärrservern är: https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}.

QueryTimeIntervalAttributeName-exempel

Tänk dig det här exemplet:

  • QueryTimeIntervalAttributeName = interval
  • QueryTimeIntervalPrepend = time:
  • QueryTimeIntervalDelimiter = ..
  • ApiEndpoint = https://www.example.com

Frågan som skickas till fjärrservern är: https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}.

RateLimitConfig-exempel

Tänk dig det här exemplet:

ApiEndpoint = https://www.example.com.

"rateLimitConfig": {
  "evaluation": {
    "checkMode": "OnlyWhen429"
  },
  "extraction": {
    "source": "CustomHeaders",
    "headers": {
      "limit": {
        "name": "X-RateLimit-Limit",
        "format": "Integer"
      },
      "remaining": {
        "name": "X-RateLimit-Remaining",
        "format": "Integer"
      },
      "reset": {
        "name": "X-RateLimit-RetryAfter",
        "format": "UnixTimeSeconds"
      }
    }
  },
  "retryStrategy": {
    "useResetOrRetryAfterHeaders": true
  }
}

När svaret innehåller hastighetsbegränsningshuvuden kan anslutningsappen använda den här informationen för att justera begärandefrekvensen.

Begära exempel som använder Microsoft Graph som API för datakälla

Det här exemplet frågar efter meddelanden med en filterfrågeparameter. Mer information finns i Microsoft Graph API frågeparametrar.

"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 "
}

I föregående exempel skickas en GET begäran till https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000. Tidsstämpeln uppdateras för varje queryWindowInMin gång.

Du får samma resultat med det här exemplet:

"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}"
  }
}

Det finns ett annat alternativ för situationer där datakällan förväntar sig två frågeparametrar (en för starttid och en för sluttid).

Exempel:

"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",
}

Det här alternativet skickar en GET begäran till https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000.

För komplexa frågor använder du QueryParametersTemplate. Det här exemplet skickar en POST begäran med parametrar i brödtexten:

"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}))\"}"
}

Svarskonfiguration

Definiera hur dataanslutningsappen hanterar svar med hjälp av följande parametrar:

Fält Obligatoriskt Typ Beskrivning
EventsJsonPaths Sant Lista över strängar Definierar sökvägen till meddelandet i svars-JSON. Ett JSON-sökvägsuttryck anger en sökväg till ett element, eller en uppsättning element, i en JSON-struktur.
SuccessStatusJsonPath Sträng Definierar sökvägen till meddelandet om lyckat resultat i JSON-svaret. När den här parametern har definierats bör parametern SuccessStatusValue också definieras.
SuccessStatusValue Sträng Definierar sökvägen till värdet för lyckade meddelanden i svars-JSON.
IsGzipCompressed Boolesk Avgör om svaret komprimeras i en GZIP-fil.
format Sant Sträng Avgör om formatet är json, csveller xml.
CompressionAlgo Sträng Definierar komprimeringsalgoritmen, antingen multi-gzip eller deflate. För GZIP-komprimeringsalgoritmen konfigurerar IsGzipCompressed du till i stället för att True ange ett värde för den här parametern.
CsvDelimiter Sträng Referenser om svarsformatet är CSV och du vill ändra CSV-standardgränsaren ","för .
HasCsvBoundary Boolesk Anger om CSV-data har en gräns.
HasCsvHeader Boolesk Anger om CSV-data har ett huvud. Standardvärdet är True.
CsvEscape Sträng Definierar ett escape-tecken för en fältgräns. Standardvärdet är "

En CSV med rubriker id,name,avg och en rad med data som 1,"my name",5.5 innehåller blanksteg kräver " till exempel fältgränsen.
ConvertChildPropertiesToArray Boolesk Refererar till ett specialfall där fjärrservern returnerar ett objekt i stället för en lista över händelser där varje egenskap innehåller data.

Obs!

CSV-formattypen tolkas av specifikationen RFC4180 .

Exempel på svarskonfiguration

Ett serversvar i JSON-format förväntas. Svaret har begärda data i egenskapsvärdet. Statusen för svarsegenskapen anger att data endast ska matas in om värdet är success.

"response": {
  "EventsJsonPaths ": ["$.value"],
  "format": "json",
  "SuccessStatusJsonPath": "$.status",
  "SuccessStatusValue": "success",
  "IsGzipCompressed": true
 }

Det förväntade svaret i det här exemplet förbereder för en CSV utan sidhuvud.

"response": {
  "EventsJsonPaths ": ["$"],
  "format": "csv",
  "HasCsvHeader": false
 }

Växlingskonfiguration

När datakällan inte kan skicka hela svarsnyttolasten på en gång måste CCF-dataanslutningen veta hur du tar emot delar av data på svarssidorna. Växlingstyperna att välja mellan är:

Växlingstyp Beslutsfaktor
Har API-svaret länkar till nästa och föregående sidor?
Har API-svaret en token eller markör för nästa och föregående sidor?
Stöder API-svaret en parameter för antalet objekt som ska hoppa över vid sidindelning?
Stöder API-svaret en parameter för hur många objekt som ska returneras?

Konfigurera LinkHeader eller PersistentLinkHeader

Den vanligaste växlingstypen är när ett API för serverdatakälla tillhandahåller URL:er till nästa och föregående datasidor. Mer information om link header-specifikationen finns i RFC 5988.

LinkHeader sidindelning innebär att API-svaret innehåller antingen:

  • HTTP-svarshuvudet Link .
  • En JSON-sökväg för att hämta länken från svarstexten.

PersistentLinkHeader-type paging har samma egenskaper som LinkHeader, förutom att länkrubriken finns kvar i serverdelslagringen. Det här alternativet aktiverar sidindelningslänkar mellan frågefönster.

Vissa API:er stöder till exempel inte frågestarttider eller sluttider. I stället stöder de en markör på serversidan. Du kan använda beständiga sidtyper för att komma ihåg markören på serversidan. Mer information finns i Vad är en markör?.

Obs!

Endast en fråga för anslutningsappen kan köras med PersistentLinkHeader för att undvika konkurrensvillkor på markören på serversidan. Det här problemet kan påverka svarstiden.

Fält Obligatoriskt Typ Beskrivning
LinkHeaderTokenJsonPath Falskt Sträng Använd den här egenskapen för att ange var du vill hämta värdet i svarstexten.

Om datakällan till exempel returnerar följande JSON: { nextPage: "foo", value: [{data}]}är LinkHeaderTokenJsonPath$.nextPagevärdet .
PageSize Falskt Heltal Använd den här egenskapen för att fastställa antalet händelser per sida.
PageSizeParameterName Falskt Sträng Använd det här frågeparameternamnet för att ange sidstorleken.
PagingInfoPlacement Falskt Sträng Använd den här egenskapen för att avgöra hur växlingsinformation fylls i. Accepterar antingen QueryString eller RequestBody.
PagingQueryParamOnly Falskt Boolesk Använd den här egenskapen för att ange frågeparametrar. Om värdet är true utelämnas alla andra frågeparametrar förutom växling av frågeparametrar.

Här är några exempel:

"paging": {
  "pagingType": "LinkHeader",
  "linkHeaderTokenJsonPath" : "$.metadata.links.next"
}
"paging": {
 "pagingType" : "PersistentLinkHeader", 
 "pageSizeParameterName" : "limit", 
 "pageSize" : 500 
}

Konfigurera NextPageUrl

NextPageUrl-type paging innebär att API-svaret innehåller en komplex länk i svarstexten som liknar LinkHeader, men URL:en ingår i svarstexten i stället för rubriken.

Fält Obligatoriskt Typ Beskrivning
PageSize Falskt Heltal Antalet händelser per sida.
PageSizeParameterName Falskt Sträng Frågeparameternamnet för sidstorleken.
NextPageUrl Falskt Sträng Fält som endast används om anslutningsappen är för Coralogix-API:et.
NextPageUrlQueryParameters Falskt Objekt Nyckel/värde-par som lägger till en anpassad frågeparameter till varje begäran för nästa sida.
NextPageParaName Falskt Sträng Nästa sidnamn i begäran.
HasNextFlagJsonPath Falskt Sträng Sökvägen till flaggattributet HasNextPage .
NextPageRequestHeader Falskt Sträng Nästa sidhuvudnamn i begäran.
NextPageUrlQueryParametersTemplate Falskt Sträng Fält som endast används om anslutningsappen är för Coralogix-API:et.
PagingInfoPlacement Falskt Sträng Fält som avgör hur växlingsinformation fylls i. Accepterar antingen QueryString eller RequestBody.
PagingQueryParamOnly Falskt Boolesk Fält som avgör frågeparametrar. Om värdet är true utelämnas alla andra frågeparametrar förutom växling av frågeparametrar.

Exempel:

"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\")}" 
}

Konfigurera NextPageToken eller PersistentToken

NextPageToken-type pagination använder en token (en hash eller en markör) som representerar tillståndet för den aktuella sidan. Token ingår i API-svaret och klienten lägger till den i nästa begäran om att hämta nästa sida. Den här metoden används ofta när servern behöver upprätthålla det exakta tillståndet mellan begäranden.

PersistentToken sidnumrering använder en token som bevarar serversidan. Servern kommer ihåg den senaste token som klienten hämtade och tillhandahåller nästa token i efterföljande begäranden. Klienten fortsätter där den slutade, även om den gör nya begäranden senare.

Fält Obligatoriskt Typ Beskrivning
PageSize Falskt Heltal Antal händelser per sida.
PageSizeParameterName Falskt Sträng Frågeparameternamn för sidstorleken.
NextPageTokenJsonPath Falskt Sträng JSON-sökväg för nästa sidtoken i svarstexten.
NextPageTokenResponseHeader Falskt Sträng Fält som anger att om NextPageTokenJsonPath är tomt använder du token i det här rubriknamnet för nästa sida.
NextPageParaName Falskt Sträng Fält som bestämmer nästa sidnamn i begäran.
HasNextFlagJsonPath Falskt Sträng Fält som definierar sökvägen till ett HasNextPage flaggattribut när du avgör om fler sidor finns kvar i svaret.
NextPageRequestHeader Falskt Sträng Fält som bestämmer namnet på nästa sidhuvud i begäran.
PagingInfoPlacement Falskt Sträng Fält som avgör hur växlingsinformation fylls i. Accepterar antingen QueryString eller RequestBody.
PagingQueryParamOnly Falskt Boolesk Fält som avgör frågeparametrar. Om värdet är true utelämnas alla andra frågeparametrar förutom växling av frågeparametrar.

Exempel:

"paging": {
 "pagingType" : "NextPageToken", 
 "nextPageRequestHeader" : "ETag", 
 "nextPageTokenResponseHeader" : "ETag" 
}
"paging": {
 "pagingType" : "PersistentToken", 
    "nextPageParaName" : "gta", 
    "nextPageTokenJsonPath" : "$.alerts[-1:]._id" 
}

Konfigurera förskjutning

Offset-type pagination anger antalet sidor som ska hoppa över och en gräns för antalet händelser som ska hämtas per sida i begäran. Klienter hämtar ett visst intervall med objekt från datauppsättningen.

Fält Obligatoriskt Typ Beskrivning
PageSize Falskt Heltal Antal händelser per sida.
PageSizeParameterName Falskt Sträng Frågeparameternamn för sidstorleken.
OffsetParaName Falskt Sträng Nästa frågeparameternamn för begäran. CCF beräknar förskjutningsvärdet för varje begäran (alla händelser har matats in + 1).
PagingInfoPlacement Falskt Sträng Fält som avgör hur växlingsinformation fylls i. Accepterar antingen QueryString eller RequestBody.
PagingQueryParamOnly Falskt Boolesk Fält som avgör frågeparametrar. Om värdet är true utelämnas alla andra frågeparametrar förutom växling av frågeparametrar.

Exempel:

"paging": {
  "pagingType": "Offset", 
  "offsetParaName": "offset",
  "pageSize": 50,
  "pagingQueryParamOnly": true,
  "pagingInfoPlacement": "QueryString"
}

Konfigurera CountBasedPaging

CountBasedPaging-type pagination gör att klienten kan ange antalet objekt som ska returneras i svaret. Den här funktionen är användbar för API:er som stöder sidnumrering baserat på en antalsparameter som en del av svarsnyttolasten.

Fält Obligatoriskt Typ Beskrivning
pageNumberParaName Sant Sträng Parameternamn för sidnumret i HTTP-begäran.
PageSize Falskt Heltal Antal händelser per sida.
ZeroBasedIndexing Falskt Boolesk Flagga som anger att antalet är noll baserat.
HasNextFlagJsonPath Falskt Sträng JSON-sökvägen för flaggan i HTTP-svarsnyttolasten som anger att det finns fler sidor.
TotalResultsJsonPath Falskt Sträng JSON-sökvägen för det totala antalet resultat i HTTP-svarsnyttolasten.
PageNumberJsonPath Falskt Sträng JSON-sökvägen för sidnumret i HTTP-svarsnyttolasten. Krävs om totalResultsJsonPath anges.
PageCountJsonPath Falskt Sträng JSON-sökvägen för sidantalet i HTTP-svarsnyttolasten. Krävs om totalResultsJsonPath anges.
PagingInfoPlacement Falskt Sträng Fält som avgör hur växlingsinformation fylls i. Accepterar antingen QueryString eller RequestBody.
PagingQueryParamOnly Falskt Boolesk Fält som avgör frågeparametrar. Om värdet är true utelämnas alla andra frågeparametrar förutom växling av frågeparametrar.

Exempel:

"paging": {
 "pagingType" : "CountBasedPaging", 
 "pageNumberParaName" : "page", 
 "pageSize" : 10, 
 "zeroBasedIndexing" : true, 
 "hasNextFlagJsonPath" : "$.hasNext", 
 "totalResultsJsonPath" : "$.totalResults", 
 "pageNumberJsonPath" : "$.pageNumber", 
 "pageCountJsonPath" : "$.pageCount"
}

DCR-konfiguration

Fält Obligatoriskt Typ Beskrivning
DataCollectionEndpoint Sant Sträng Slutpunkt för datainsamling (DCE). Till exempel: https://example.ingest.monitor.azure.com.
DataCollectionRuleImmutableId Sant Sträng DCR oföränderligt ID. Hitta det genom att visa dcr-skapandesvaret eller med hjälp av DCR-API:et.
StreamName Sant Sträng Det här värdet är det streamDeclaration som definieras i DCR. Prefixet måste börja med Custom-.

Exempel på CCF-dataanslutning

Här är ett exempel på alla komponenter i CCF-dataanslutningsappens JSON:

{
   "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,
         "rateLimitConfig": {
            "evaluation": {
              "checkMode": "OnlyWhen429"
            },
            "extraction": {
              "source": "CustomHeaders",
              "headers": {
                "limit": {
                  "name": "X-RateLimit-Limit",
                  "format": "Integer"
                },
                "remaining": {
                  "name": "X-RateLimit-Remaining",
                  "format": "Integer"
                },
                "reset": {
                  "name": "X-RateLimit-RetryAfter",
                  "format": "UnixTimeSeconds"
                }
              }
            },
            "retryStrategy": {
              "useResetOrRetryAfterHeaders": true
            }
         },
         "queryWindowInMin": 5,
         "httpMethod": "POST",
         "queryTimeFormat": "UnixTimestamp",
         "startTimeAttributeName": "t0",
         "endTimeAttributeName": "t1",
         "retryCount": 3,
         "timeoutInSeconds": 60,
         "headers": {
            "Accept": "application/json",
            "User-Agent": "Example-app-agent"
         } 
      },
      "paging": {
         "pagingType": "LinkHeader",
         "pagingInfoPlacement": "RequestBody",
         "pagingQueryParamOnly": true
      },
      "response": {
         "eventsJsonPaths": ["$"]
      }
   }
}