通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

无代码连接器框架的 RestApiPoller 数据连接器参考

可以使用本文作为数据连接器的 Microsoft Sentinel REST API 的补充,使用无代码连接器框架(CCF)创建 RestApiPoller 数据连接器文档。

每个数据连接器表示Microsoft Sentinel数据连接器的特定连接。 一个数据连接器可能有多个连接,这些连接从不同的终结点提取数据。 可以使用本文生成的 JSON 配置完成 CCF 数据连接器的部署模板。

有关详细信息,请参阅 为 Microsoft Sentinel

创建或更新数据连接器

通过引用 REST API 文档中的或作来查找最新的稳定或预览版 API 版本。与作之间的差异在于需要该值。

方法:

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

URI 参数

有关最新 API 版本的详细信息,请参阅 数据连接器:创建或更新 URI 参数。

名称 描述
dataConnectorId 数据连接器 ID。 它必须是与请求正文中的参数相同的唯一名称。
resourceGroupName 资源组的名称,不区分大小写。
subscriptionId 目标订阅的 ID。
workspaceName 工作区的名称,而不是 ID。
正则表达式模式为 .
api-version 要用于此操作的 API 版本。

请求正文

CCF 数据连接器的请求正文 具有以下结构:

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

RestApiPoller

是 API 轮询程序 CCF 数据连接器,可用于自定义数据源的分页、授权和请求/响应有效负载。

名称 必需 类型 描述
name 真 实 字符串 与 URI 参数匹配的连接的唯一名称。
kind 真 实 字符串 值。 此字段必须设置为 。
etag GUID 值。 对于新连接器创建,此字段必须留空。 对于更新作, 必须与现有连接器 (GUID)匹配。
properties.connectorDefinitionName 字符串 定义数据连接器 UI 配置的资源的名称 。 有关详细信息,请转到 数据连接器定义。
properties.auth 真 实 嵌套的 JSON 用于轮询数据的身份验证属性。 有关详细信息,请转到 身份验证配置。
properties.request 真 实 嵌套的 JSON 用于轮询数据的请求有效负载,例如 API 终结点。 有关详细信息,请转到 “请求配置”。
properties. response 真 实 嵌套的 JSON API 轮询数据时返回的响应对象和嵌套消息。 有关详细信息,请转到 响应配置。
properties.paging 嵌套的 JSON 轮询数据时分页有效负载。 有关详细信息,请转到 分页配置。
properties.dcrConfig 嵌套的 JSON 将数据发送到数据收集规则(DCR)时所需的参数。 有关详细信息,请转到 DCR 配置。

身份验证配置

CCF 支持以下身份验证类型:

  • 基本
  • API 密钥
  • OAuth2
  • JWT

注意

CCF OAuth2 实现不支持客户端证书凭据。

最佳做法是在身份验证部分中使用参数,而不是硬编码凭据。 有关详细信息,请参阅安全机密输入。

若要创建部署模板(也使用参数),需要通过额外的开始 对本节中的参数进行转义。 此步骤允许参数根据用户与连接器的交互来分配值。 有关详细信息,请参阅模板表达式转义字符。

若要启用从 UI 输入凭据,该 部分要求输入 所需的参数。 有关详细信息,请参阅 无代码连接器框架的数据连接器定义参考。

基本身份验证

字段 必需 类型
UserName 真 实 字符串
Password 真 实 字符串

下面是使用以下文件中 定义的参数的基本身份验证示例:

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

API 密钥

字段 必需 类型 描述 默认值
ApiKey 真 实 字符串 用户密钥。
ApiKeyName 字符串 包含 值的 URI 标头的名称。 Authorization
ApiKeyIdentifier 字符串 要追加令牌的字符串值。 token
IsApiKeyInPostPayload 布尔 确定是否在正文中 发送机密而不是标头的值。 false

身份验证示例:

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

此示例的结果是从以下标头中发送的用户输入定义的机密:

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

此示例使用以下标头中的默认值和结果:

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

由于显式设置为,因此结果是以下标头:

OAuth2

无代码连接器框架支持 OAuth 2.0 授权代码授予和客户端凭据。 机密和公共客户端使用 授权代码 授予类型来交换访问令牌的授权代码。

用户通过重定向 URL 返回到客户端后,应用程序将从 URL 中获取授权代码,并使用它来请求访问令牌。

字段 必需 类型 描述
ClientId 对。 字符串 客户端 ID。
ClientSecret 对。 字符串 客户端密码。
AuthorizationCode 如果值为 .,则为 True。 字符串 如果授予类型为 ,则此字段值是身份验证服务器返回的授权代码。
Scope 对于授予类型,为 True。
对于授予类型,可选 。
字符串 用户同意的范围的空格分隔列表。 有关详细信息,请参阅 OAuth2 范围和权限。
RedirectUri 如果值为 .,则为 True。 字符串 重定向的 URL 必须为 。
GrantType 对。 字符串 授予类型。 可以是 或 。
TokenEndpoint 对。 字符串 用于在授权中使用有效令牌交换代码的 URL,或具有授予中的有效令牌的 客户端 ID 和机密。
TokenEndpointHeaders 物体 用于将自定义标头发送到令牌服务器的可选键/值对象。
TokenEndpointQueryParameters 物体 一个可选的键/值对象,用于将自定义查询参数发送到令牌服务器。
AuthorizationEndpoint 对。 字符串 流用户同意的 URL。
AuthorizationEndpointHeaders 物体 用于将自定义标头发送到身份验证服务器的可选键/值对象。
AuthorizationEndpointQueryParameters 物体 OAuth2 授权代码流请求中使用的可选键/值对。

可以使用身份验证代码流代表用户的权限提取数据。 可以使用客户端凭据提取具有应用程序权限的数据。 数据服务器授予对应用程序的访问权限。 由于客户端凭据流中没有用户,因此无需授权终结点,只需令牌终结点。

下面是 OAuth2 授权类型的示例:

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

下面是 OAuth2 授权类型的示例:

"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 Web 令牌 (JWT) 身份验证支持通过用户名和密码凭据获取令牌,并将其用于 API 请求。

基本示例
"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"
}
POST 正文中的凭据(默认值)
"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"
}
标头中的凭据(基本身份验证)
"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
}
标头中的凭据(用户令牌)
"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"
}

遵循以下身份验证流:

  1. 发送凭据以获取 JWT 令牌。

    • 如果 :使用 .. 发送基本身份验证标头 。
    • 如果 :在正文中 发送凭据。
  2. 使用 或从响应标头中提取令牌。

  3. 在后续 API 请求中使用令牌和 标头。

字段 必需 类型 描述
type 真 实 字符串 类型。 必须是
userName True (如果未 使用) 物体 凭据的 键/值对。 如果在 标头请求中发送并 发送,请使用 用户名指定属性。 如果在 正文请求中发送并 发送,请指定 和 。
password True (如果未 使用) 物体 密码凭据的键/值对。 如果在 标头请求中发送并 发送,请使用 .. 如果在 正文请求中发送并 发送,请指定 和 。
userToken True (如果未 使用) 字符串 客户端生成的用于获取用于身份验证的系统令牌的用户令牌。
UserTokenPrepend 字符串 指示是否在标记前追加文本的值。 示例:。
NoAccessTokenPrepend 布尔 一个访问标志,指示令牌不应追加任何内容。
TokenEndpointHttpMethod 字符串 令牌终结点的 HTTP 方法。 它可以是 或 。 默认值为 。
TokenEndpoint 真 实 字符串 用于获取 JWT 令牌的 URL 终结点。
IsCredentialsInHeaders 布尔 指示是否将凭据作为基本身份验证标头()与 正文()发送的值。 默认值为 。
IsJsonRequest 布尔 指示是否在 JSON(标头 )中发送请求与表单编码(标头 )的值。 默认值为 。
JwtTokenJsonPath 字符串 指示 用于从响应中提取令牌的值的值。 例如: 。
JwtTokenInResponseHeader 布尔 指示是否从响应标头中提取令牌与正文的值。 默认值为 。
字符串 指示令牌位于响应标头中的标头名称的值。 默认值为 。
JwtTokenIdentifier 字符串 用于从前缀令牌字符串中提取 JWT 的标识符。
QueryParameters 物体 将请求发送到令牌终结点时要包括的自定义查询参数。
Headers 物体 将请求发送到令牌终结点时要包括的自定义标头。
RequestTimeoutInSeconds 整数 请求超时(以秒为单位)。 默认值为 最大值 。

遵循以下身份验证流:

  1. 发送凭据以获取 JWT 令牌。

    • 如果 :使用 .. 发送基本身份验证标头 。
    • 如果 :在正文中 发送凭据。
  2. 使用 或从响应标头中提取令牌。

  3. 在后续 API 请求中使用令牌和 标头。

    注意

    局限性

    • 需要用户名和密码身份验证进行令牌获取
    • 不支持基于 API 密钥的令牌请求
    • 不支持自定义标头身份验证(没有用户名和密码)

请求配置

请求部分定义 CCF 数据连接器如何将请求发送到数据源(例如 API 终结点以及轮询该终结点的频率)。

字段 必需 类型 描述
ApiEndpoint 对。 字符串 此字段确定远程服务器的 URL,并定义从中拉取数据的终结点。
RateLimitQPS 整数 此字段定义每秒允许的调用数或查询数。
RateLimitConfig 物体 此字段定义 RESTful API 的速率限制配置。 有关详细信息,请转到 示例。
QueryWindowInMin 整数 此字段以分钟为单位定义可用的查询窗口。 最小值为 1 分钟。 默认为 5 分钟。
HttpMethod 字符串 此字段定义 API 方法: (默认值)或 。
QueryTimeFormat 字符串 此字段定义终结点(远程服务器)预期的日期和时间格式。 无论在何处使用此变量,CCF 都使用当前日期和时间。 可能的值为常量: 或 日期和时间的任何其他有效表示形式。 例如: 、 。
默认值为 。
RetryCount 整数 (1...6) 此字段定义允许重试的值从故障中恢复。 默认值为 。
TimeoutInSeconds 整数 (1...180) 此字段定义请求超时(以秒为单位)。 默认值为 。
IsPostPayloadJson 布尔 此字段确定有效负载是否 采用 JSON 格式。 默认值为 。
Headers 物体 此字段包括定义请求标头的键/值对。
QueryParameters 物体 此字段包括定义请求查询参数的键/值对。
StartTimeAttributeName 设置值时为 True。 字符串 此字段定义查询开始时间的查询参数名称。 有关详细信息,请转到 示例。
EndTimeAttributeName 设置时 为 True。 字符串 此字段定义查询结束时间的查询参数名称。
QueryTimeIntervalAttributeName 字符串 如果终结点需要专用格式来查询时间范围内的数据,则使用此字段。 将此属性与参数一起使用。 有关详细信息,请转到 示例。
QueryTimeIntervalPrepend 设置时 为 True。 字符串 参考 。
QueryTimeIntervalDelimiter 设置时 为 True。 字符串 参考 。
QueryParametersTemplate 字符串 此字段引用在高级方案中传递参数时要使用的查询模板。

例如: 。

当 API 需要复杂参数时,请使用 或 。 这些命令包括一些内置变量。

内置变量 用于 用于
_QueryWindowStartTime Yes Yes
_QueryWindowEndTime Yes Yes
_APIKeyName Yes
_APIKey Yes

StartTimeAttributeName 示例

请看以下示例:

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

发送到远程服务器的查询为: 。

QueryTimeIntervalAttributeName 示例

请看以下示例:

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

发送到远程服务器的查询为: 。

RateLimitConfig 示例

请看以下示例:

.

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

当响应包含速率限制头部时,连接器可以利用这些信息调整请求速率。

请求使用Microsoft Graph作为数据源 API 的示例

此示例使用筛选器查询参数查询消息。 有关详细信息,请参阅 Microsoft 图形 API 查询参数

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

上一个示例向 发送 请求。 时间戳会每次 更新。

使用此示例实现相同的结果:

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

数据源需要两个查询参数(一个用于开始时间和一个用于结束时间)的情况有另一个选项。

示例:

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

此选项将请求发送到 。

对于复杂查询,请使用 。 此示例在正文中发送包含 参数的请求:

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

响应配置

使用以下参数定义数据连接器如何处理响应:

字段 必需 类型 描述
EventsJsonPaths 真 实 字符串列表 定义响应 JSON 中消息的路径。 JSON 路径表达式指定 JSON 结构中元素或一组元素的路径。
SuccessStatusJsonPath 字符串 定义响应 JSON 中成功消息的路径。 定义此参数时,还应定义 参数。
SuccessStatusValue 字符串 定义响应 JSON 中成功消息值的路径。
IsGzipCompressed 布尔 确定响应是否压缩在 GZIP 文件中。
format 真 实 字符串 确定格式是,还是。
CompressionAlgo 字符串 定义压缩算法或 . 对于 GZIP 压缩算法,请配置为而不是为此参数设置值。
CsvDelimiter 字符串 如果响应格式为 CSV,并且想要更改默认 CSV 分隔符, 则引用 。
HasCsvBoundary 布尔 指示 CSV 数据是否具有边界。
HasCsvHeader 布尔 指示 CSV 数据是否具有标头。 默认值为 。
CsvEscape 字符串 定义字段边界的转义字符。 默认值为

例如,带有标头 和一行包含空格(如 )的数据的 CSV 需要 字段边界。
ConvertChildPropertiesToArray 布尔 引用远程服务器返回对象而不是每个属性包含数据的事件列表的特殊情况。

注意

CSV 格式类型由 规范分析。

响应配置示例

应采用 JSON 格式的服务器响应。 响应在 属性值中具有请求的数据。 响应属性 status 指示仅在值为 时才引入数据。

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

本示例中的预期响应为没有标头的 CSV 做准备。

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

分页配置

当数据源无法同时发送整个响应有效负载时,CCF 数据连接器需要知道如何在响应 页中接收部分数据。 分页类型从以下类型中选择:

分页类型 决策因素
API 响应是否具有指向下一页和上一页的链接?
API 响应是否具有下一页和上一页的令牌或游标?
API 响应是否支持分页时要跳过的对象数的参数?
API 响应是否支持要返回的对象数的参数?

配置 LinkHeader 或 PersistentLinkHeader

最常用的分页类型是服务器数据源 API 为数据的下一页和上一页提供 URL。 有关 链接标头 规范的详细信息,请参阅 。

分页意味着 API 响应包括以下任一项:

  • HTTP 响应标头。
  • 用于从响应正文中检索链接的 JSON 路径。

-type 分页具有与后端存储相同的属性 ,但链接标头仍保留在后端存储中。 此选项支持跨查询窗口的分页链接。

例如,某些 API 不支持查询开始时间或结束时间。 而是支持服务器端游标。 可以使用永久性页面类型来记住服务器端 游标。 有关详细信息,请参阅什么是游标?。

注意

只有一个连接器查询可以运行 ,以避免服务器端 游标上的争用情况。 此问题可能会影响延迟。

字段 必需 类型 描述
LinkHeaderTokenJsonPath 字符串 使用此属性指示在响应正文中获取值的位置。

例如,如果数据源返回以下 JSON: ,则 值为 。
PageSize 整数 使用此属性可确定每页的事件数。
PageSizeParameterName 字符串 使用此查询参数名称来指示页面大小。
PagingInfoPlacement 字符串 使用此属性确定如何填充分页信息。 接受或接受 。
PagingQueryParamOnly 布尔 使用此属性可指定查询参数。 如果设置为 true,则省略除分页查询参数以外的所有其他查询参数。

以下是一些示例:

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

配置 NextPageUrl

-type 分页意味着 API 响应在响应正文中包含一个与响应正文类似的 复杂链接,但 URL 包含在响应正文中,而不是标头。

字段 必需 类型 描述
PageSize 整数 每个页的事件数。
PageSizeParameterName 字符串 页面大小的查询参数名称。
NextPageUrl 字符串 仅当连接器用于 Coralogix API 时使用的字段。
NextPageUrlQueryParameters 物体 向下一页的每个请求添加自定义查询参数的键/值对。
NextPageParaName 字符串 请求中的下一页名称。
HasNextFlagJsonPath 字符串 标志属性的路径 。
NextPageRequestHeader 字符串 请求中的下一页标头名称。
NextPageUrlQueryParametersTemplate 字符串 仅当连接器用于 Coralogix API 时使用的字段。
PagingInfoPlacement 字符串 用于确定如何填充分页信息的字段。 接受或接受 。
PagingQueryParamOnly 布尔 确定查询参数的字段。 如果设置为 true,则省略除分页查询参数以外的所有其他查询参数。

示例:

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

配置 NextPageToken 或 PersistentToken

-type 分页使用表示当前页状态的标记(哈希或游标)。 令牌包含在 API 响应中,客户端将其追加到下一个请求以提取下一页。 当服务器需要在请求之间保持准确的状态时,通常会使用此方法。

分页使用保留在服务器端的令牌。 服务器会记住客户端检索到的最后一个令牌,并在后续请求中提供下一个令牌。 即使客户端稍后发出新请求,客户端也会继续离开该客户端。

字段 必需 类型 描述
PageSize 整数 每页的事件数。
PageSizeParameterName 字符串 页面大小的查询参数名称。
NextPageTokenJsonPath 字符串 响应正文中下一页令牌的 JSON 路径。
NextPageTokenResponseHeader 字符串 指定如果 为空的字段,请使用下一页的此标头名称中的标记。
NextPageParaName 字符串 用于确定请求中的下一页名称的字段。
HasNextFlagJsonPath 字符串 在确定响应中是否剩下更多页时定义标志属性的路径 的字段。
NextPageRequestHeader 字符串 用于确定请求中的下一页标题名称的字段。
PagingInfoPlacement 字符串 用于确定如何填充分页信息的字段。 接受或接受 。
PagingQueryParamOnly 布尔 确定查询参数的字段。 如果设置为 true,则省略除分页查询参数以外的所有其他查询参数。

示例:

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

配置偏移

-type 分页指定要跳过的页数,以及请求中每个页面要检索的事件数的限制。 客户端从数据集中提取特定范围的项目。

字段 必需 类型 描述
PageSize 整数 每页的事件数。
PageSizeParameterName 字符串 页面大小的查询参数名称。
OffsetParaName 字符串 下一个请求查询参数名称。 CCF 计算每个请求的偏移值(所有引入的事件 + 1)。
PagingInfoPlacement 字符串 用于确定如何填充分页信息的字段。 接受或接受 。
PagingQueryParamOnly 布尔 确定查询参数的字段。 如果设置为 true,则省略除分页查询参数以外的所有其他查询参数。

示例:

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

配置 CountBasedPaging

-type 分页允许客户端指定要在响应中返回的项数。 此功能对于支持基于计数参数作为响应有效负载一部分的分页的 API 非常有用。

字段 必需 类型 描述
pageNumberParaName 真 实 字符串 HTTP 请求中页码的参数名称。
PageSize 整数 每页的事件数。
ZeroBasedIndexing 布尔 指示计数基于零的标志。
HasNextFlagJsonPath 字符串 HTTP 响应有效负载中标志的 JSON 路径,指示有更多的页面。
TotalResultsJsonPath 字符串 HTTP 响应有效负载中结果总数的 JSON 路径。
PageNumberJsonPath 字符串 HTTP 响应有效负载中页码的 JSON 路径。 如果 提供,则为必需。
PageCountJsonPath 字符串 HTTP 响应有效负载中页面计数的 JSON 路径。 如果 提供,则为必需。
PagingInfoPlacement 字符串 用于确定如何填充分页信息的字段。 接受或接受 。
PagingQueryParamOnly 布尔 确定查询参数的字段。 如果设置为 true,则省略除分页查询参数以外的所有其他查询参数。

示例:

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

DCR 配置

字段 必需 类型 描述
DataCollectionEndpoint 真 实 字符串 数据收集终结点(DCE)。 例如: 。
DataCollectionRuleImmutableId 真 实 字符串 DCR 不可变 ID。 通过查看 DCR 创建响应或使用 DCR API 查找它。
StreamName 真 实 字符串 此值是在 DCR 中定义的。 前缀必须以 . 开头 。

CCF 数据连接器示例

下面是 CCF 数据连接器 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": ["$"]
      }
   }
}