You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/sentinel/data-connector-connection-rules-reference.md
+89-16Lines changed: 89 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -354,6 +354,7 @@ The request section defines how the CCF data connector sends requests to your da
354
354
| ---- | ---- | ---- | ---- |
355
355
|**ApiEndpoint**| True | String | URL for remote server. Defines the endpoint to pull data from. |
356
356
|**RateLimitQPS**|| Integer | Defines the number of calls or queries allowed in a second. |
357
+
|**RateLimitConfig**|| Object | Defines the rate limit configuration for the RESTful API. See [example](#ratelimitconfig-example). |
357
358
|**QueryWindowInMin**|| Integer | Defines the available query window in minutes. Minimum is 1 minute. Default is 5 minutes.|
358
359
|**HttpMethod**|| String | Defines the API method: `GET`(default) or `POST`|
359
360
|**QueryTimeFormat**|| String | Defines the date and time format the endpoint (remote server) expects. The CCF uses the current date and time wherever this variable is used. Possible values are the constants: `UnixTimestamp`, `UnixTimestampInMills` or any other valid representation of date time, for example: `yyyy-MM-dd`, `MM/dd/yyyy HH:mm:ss`<br>default is ISO 8601 UTC |
@@ -395,7 +396,40 @@ Consider this example:
395
396
-`QueryTimeIntervalDelimiter` = `..`
396
397
-`ApiEndpoint` = `https://www.example.com`
397
398
398
-
The query sent to the remote server is: `https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}`
399
+
The query sent to the remote server is: `https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}`
400
+
401
+
### RateLimitConfig example
402
+
403
+
Consider this example:
404
+
-`ApiEndpoint` = `https://www.example.com`
405
+
```json
406
+
"rateLimitConfig": {
407
+
"evaluation": {
408
+
"checkMode": "OnlyWhen429"
409
+
},
410
+
"extraction": {
411
+
"source": "CustomHeaders",
412
+
"headers": {
413
+
"limit": {
414
+
"name": "X-RateLimit-Limit",
415
+
"format": "Integer"
416
+
},
417
+
"remaining": {
418
+
"name": "X-RateLimit-Remaining",
419
+
"format": "Integer"
420
+
},
421
+
"reset": {
422
+
"name": "X-RateLimit-RetryAfter",
423
+
"format": "UnixTimeSeconds"
424
+
}
425
+
}
426
+
},
427
+
"retryStrategy": {
428
+
"useResetOrRetryAfterHeaders": true
429
+
}
430
+
}
431
+
```
432
+
When the response includes rate limit headers, the connector can use this information to adjust its request rate.
399
433
400
434
### Request examples using Microsoft Graph as data source API
401
435
@@ -466,7 +500,7 @@ For complex queries, use `QueryParametersTemplate`. This next example sends a `P
@@ -512,7 +546,7 @@ A server response with JSON format is expected, with the requested data in the p
512
546
"format": "json",
513
547
"SuccessStatusJsonPath": "$.status",
514
548
"SuccessStatusValue": "success",
515
-
"IsGzipCompressed: true
549
+
"IsGzipCompressed": true
516
550
}
517
551
```
518
552
@@ -555,18 +589,20 @@ The most common paging type is when a server data source API provides URLs to th
555
589
|**LinkHeaderTokenJsonPath**| False | String | Use this property to indicate where to get the value in the response body.<br><br>For example, if the data source returns the following JSON: `{ nextPage: "foo", value: [{data}]}` then `LinkHeaderTokenJsonPath` will be `$.nextPage`|
556
590
|**PageSize**| False | Integer | How many events per page |
557
591
|**PageSizeParameterName**| False | String | Query parameter name for the page size |
592
+
|**PagingInfoPlacement**| False | String | How paging info is populated. Accepts either "QueryString" or "RequestBody" |
593
+
|**PagingQueryParamOnly**| False | Boolean | If set to true, will omit all other query parameters except paging query parameters. |
|**NextPageParaName**| False | string | Determines the next page name in the request. |
616
654
|**HasNextFlagJsonPath**| False | string | Defines the path to a **HasNextPage** flag attribute when determining if more pages are left in the response. |
617
655
|**NextPageRequestHeader**| False | string | Determines the next page header name in the request. |
656
+
|**PagingInfoPlacement**| False | String | How paging info is populated. Accepts either "QueryString" or "RequestBody" |
657
+
|**PagingQueryParamOnly**| False | Boolean | If set to true, will omit all other query parameters except paging query parameters. |
618
658
619
659
Examples:
620
660
621
661
```json
622
-
Paging: {
662
+
"paging": {
623
663
"pagingType" : "NextPageToken",
624
664
"nextPageRequestHeader" : "ETag",
625
665
"nextPageTokenResponseHeader" : "ETag"
626
666
}
627
667
```
628
668
629
669
```json
630
-
Paging: {
670
+
"paging": {
631
671
"pagingType" : "PersistentToken",
632
672
"nextPageParaName" : "gta",
633
673
"nextPageTokenJsonPath" : "$.alerts[-1:]._id"
@@ -643,14 +683,18 @@ Paging: {
643
683
|**PageSize**| False | Integer | How many events per page |
644
684
|**PageSizeParameterName**| False | String | Query parameter name for the page size |
645
685
|**OffsetParaName**| False | String | The next request query parameter name. The CCF calculates the offset value for each request, (all events ingested + 1) |
686
+
|**PagingInfoPlacement**| False | String | How paging info is populated. Accepts either "QueryString" or "RequestBody" |
687
+
|**PagingQueryParamOnly**| False | Boolean | If set to true, will omit all other query parameters except paging query parameters. |
646
688
647
689
Example:
648
690
```json
649
-
Paging: {
650
-
651
-
"pagingType": "Offset",
652
-
"offsetParaName": "offset"
653
-
}
691
+
"paging": {
692
+
"pagingType": "Offset",
693
+
"offsetParaName": "offset",
694
+
"pageSize": 50,
695
+
"pagingQueryParamOnly": true,
696
+
"pagingInfoPlacement": "QueryString"
697
+
}
654
698
```
655
699
656
700
#### Configure CountBasedPaging
@@ -666,11 +710,13 @@ Paging: {
666
710
|**TotalResultsJsonPath**| False | String | JSON path of total number of results in HTTP response payload |
667
711
|**PageNumberJsonPath**| False | String | Required if totalResultsJsonPath is provided. JSON path of page number in HTTP response payload |
668
712
|**PageCountJsonPath**| False | String | Required if totalResultsJsonPath is provided. JSON path of page count in HTTP response payload |
713
+
|**PagingInfoPlacement**| False | String | How paging info is populated. Accepts either "QueryString" or "RequestBody" |
714
+
|**PagingQueryParamOnly**| False | Boolean | If set to true, will omit all other query parameters except paging query parameters. |
669
715
670
716
Example:
671
717
672
718
```json
673
-
Paging: {
719
+
"paging": {
674
720
"pagingType" : "CountBasedPaging",
675
721
"pageNumberParaName" : "page",
676
722
"pageSize" : 10,
@@ -713,8 +759,33 @@ Here's an example of all the components of the CCF data connector JSON together.
0 commit comments