Referensi konektor data RestApiPoller untuk Platform Konektor Tanpa Kode
Untuk membuat RestApiPoller
konektor data dengan Codeless Connector Platform (CCP), gunakan referensi ini sebagai suplemen untuk dokumen MICROSOFT Sentinel REST API for Data Connectors .
Masing-masing dataConnector
mewakili koneksi tertentu dari konektor data Microsoft Azure Sentinel. Satu konektor data mungkin memiliki beberapa koneksi, yang mengambil data dari titik akhir yang berbeda. Konfigurasi JSON yang dibangun menggunakan dokumen referensi ini digunakan untuk menyelesaikan templat penyebaran untuk konektor data CCP.
Untuk informasi selengkapnya, lihat Membuat konektor tanpa kode untuk Microsoft Sentinel.
Konektor Data - Membuat atau memperbarui
Referensikan operasi Buat atau Perbarui di dokumen REST API untuk menemukan versi API stabil atau pratinjau terbaru. Perbedaan antara operasi buat dan pembaruan adalah pembaruan memerlukan nilai etag .
Metode PUT
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}
Parameter URI
Untuk informasi selengkapnya tentang versi API terbaru, lihat Konektor Data - Membuat atau Memperbarui Parameter URI.
Isi permintaan
Isi permintaan untuk RestApiPoller
konektor data CCP memiliki struktur berikut:
{
"name": "{{dataConnectorId}}",
"kind": "RestApiPoller",
"etag": "",
"properties": {
"connectorDefinitionName": "",
"auth": {},
"request": {},
"response": {},
"paging": "",
"dcrConfig": ""
}
}
RestApiPoller
RestApiPoller mewakili konektor data API Poller CCP tempat Anda menyesuaikan payload halaman, otorisasi, dan permintaan/respons untuk sumber data Anda.
Nama | Wajib | Tipe | Deskripsi |
---|---|---|---|
nama | Benar | string | Nama unik koneksi yang cocok dengan parameter URI |
jenis | Benar | string | Harus berupa RestApiPoller |
etag | GUID | Biarkan kosong untuk pembuatan konektor baru. Untuk operasi pembaruan, etag harus cocok dengan etag konektor (GUID) yang ada. | |
properties.connectorDefinitionName | string | Nama sumber daya DataConnectorDefinition yang menentukan konfigurasi UI konektor data. Untuk informasi selengkapnya, lihat Definisi Konektor Data. | |
Properti.Auth | Benar | JSON berlapis | Menjelaskan properti autentikasi untuk polling data. Untuk informasi selengkapnya, lihat konfigurasi autentikasi. |
Properti.minta | Benar | JSON berlapis | Menjelaskan payload permintaan untuk polling data, seperti titik akhir API. Untuk informasi selengkapnya, lihat konfigurasi permintaan. |
Properti.jawaban | Benar | JSON berlapis | Menjelaskan objek respons dan pesan berlapis yang dikembalikan dari API ketika melakukan polling data. Untuk informasi selengkapnya, lihat konfigurasi respons. |
Properti.Paging | JSON berlapis | Menjelaskan payload penomoran halaman saat melakukan polling data. Untuk informasi selengkapnya, lihat konfigurasi penomoran halaman. | |
Properti.dcrConfig | JSON berlapis | Parameter yang diperlukan saat data dikirim ke Aturan Pengumpulan Data (DCR). Untuk informasi selengkapnya, lihat Konfigurasi DCR. |
Konfigurasi autentikasi
CCP mendukung jenis autentikasi berikut:
Catatan
Implementasi CCP OAuth2 tidak mendukung kredensial sertifikat klien.
Sebagai praktik terbaik, gunakan parameter di bagian autentikasi alih-alih kredensial hard-coding. Untuk informasi selengkapnya, lihat Mengamankan input rahasia.
Untuk membuat templat penyebaran yang juga menggunakan parameter, Anda perlu menghindari parameter di bagian ini dengan awal [
ekstra . Ini memungkinkan parameter untuk menetapkan nilai berdasarkan interaksi pengguna dengan konektor. Untuk informasi selengkapnya, lihat Ekspresi templat karakter escape.
Untuk mengaktifkan kredensial yang akan dimasukkan dari UI, connectorUIConfig
bagian memerlukan instructions
parameter yang diinginkan. Untuk informasi selengkapnya, lihat Referensi definisi konektor data untuk Platform Konektor Tanpa Kode.
Autentikasi dasar
Bidang | Wajib | Tipe |
---|---|---|
UserName | Benar | string |
Kata sandi | Benar | string |
Contoh autentikasi Dasar menggunakan parameter yang ditentukan dalam connectorUIconfig
:
"auth": {
"type": "Basic",
"UserName": "[[parameters('username')]",
"Password": "[[parameters('password')]"
}
APIKey
Bidang | Wajib | Tipe | Deskripsi | Nilai default |
---|---|---|---|---|
ApiKey | Benar | string | kunci rahasia pengguna | |
ApiKeyName | string | nama header Uri yang berisi nilai ApiKey | Authorization |
|
ApiKeyIdentifier | string | nilai string untuk menambahkan token sebelumnya | token |
|
IsApiKeyInPostPayload | Boolean | kirim rahasia dalam isi POST alih-alih header | false |
Contoh autentikasi APIKey:
"auth": {
"type": "APIKey",
"ApiKey": "[[parameters('apikey')]",
"ApiKeyName": "X-MyApp-Auth-Header",
"ApiKeyIdentifier": "Bearer"
}
Contoh ini menghasilkan rahasia yang ditentukan dari input pengguna yang dikirim di header berikut: X-MyApp-Auth-Header: Pembawa apikey
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
}
Contoh ini menggunakan nilai default dan menghasilkan header berikut: Otorisasi: token 123123123
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
"ApiKeyName": ""
}
ApiKeyName
Karena secara eksplisit diatur ke ""
, hasilnya adalah header berikut: Otorisasi: 123123123
OAuth2
Platform Konektor Tanpa Kode mendukung pemberian kode otorisasi OAuth 2.0 dan kredensial klien. Jenis pemberian Kode Otorisasi digunakan oleh klien rahasia serta publik untuk menukar kode otorisasi dengan token akses. Setelah pengguna kembali ke klien melalui URL pengalihan, aplikasi akan mendapatkan kode otorisasi dari URL dan menggunakannya untuk meminta token akses.
Bidang | Wajib | Tipe | Deskripsi |
---|---|---|---|
ClientId | Benar | String | Id klien |
ClientSecret | Benar | String | Rahasia klien |
AuthorizationCode | True saat grantType = authorization_code |
String | Jika jenis pemberian adalah authorization_code nilai bidang ini akan menjadi kode otorisasi yang dikembalikan dari sajian autentikasi. |
Cakupan | True untuk authorization_code jenis hibahopsional untuk client_credentials jenis pemberian |
String | Daftar cakupan yang dipisahkan spasi untuk persetujuan pengguna. Untuk informasi selengkapnya, lihat Cakupan dan izin OAuth2. |
RedirectUri | True saat grantType = authorization_code |
String | URL untuk pengalihan, harus https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights |
GrantType | Benar | String | authorization_code atau client_credentials |
TokenEndpoint | Benar | String | URL untuk bertukar kode dengan token yang valid dalam authorization_code pemberian atau id klien dan rahasia dengan token yang valid dalam client_credentials pemberian. |
TokenEndpointHeaders | Objek | Objek nilai kunci opsional untuk mengirim header kustom ke server token | |
TokenEndpointQueryParameters | Objek | Objek nilai kunci opsional untuk mengirim param kueri kustom ke server token | |
AuthorizationEndpoint | Benar | String | URL untuk persetujuan pengguna untuk authorization_code alur |
AuthorizationEndpointHeaders | Objek | Objek nilai kunci opsional untuk mengirim header kustom ke server auth | |
AuthorizationEndpointQueryParameters | Objek | Pasangan nilai kunci opsional yang digunakan dalam permintaan alur kode otorisasi OAuth2 |
Alur kode autentikasi adalah untuk mengambil data atas nama izin pengguna dan kredensial klien adalah untuk mengambil data dengan izin aplikasi. Server data memberikan akses ke aplikasi. Karena tidak ada pengguna dalam alur kredensial klien, tidak ada titik akhir otorisasi yang diperlukan, hanya titik akhir token.
Contoh: Jenis pemberian 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"
}
Contoh: Jenis pemberian 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
Contoh: Token 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
}
Konfigurasi permintaan
Bagian permintaan menentukan bagaimana konektor data CCP mengirim permintaan ke sumber data Anda, seperti titik akhir API dan seberapa sering melakukan polling titik akhir tersebut.
Bidang | Wajib | Tipe | Deskripsi |
---|---|---|---|
ApiEndpoint | Benar | String | URL untuk server jarak jauh. Menentukan titik akhir asal penarikan data. |
RateLimitQPS | Bilangan bulat | Menentukan jumlah panggilan atau kueri yang diizinkan dalam hitungan detik. | |
QueryWindowInMin | Bilangan bulat | Menentukan jendela kueri yang tersedia dalam hitung menit. Minimum adalah 1 menit. Defaultnya adalah 5 menit. | |
HttpMethod | String | Menentukan metode API: GET (default) atau POST |
|
QueryTimeFormat | String | Menentukan format tanggal dan waktu yang diharapkan titik akhir (server jarak jauh). CCP menggunakan tanggal dan waktu saat ini di mana pun variabel ini digunakan. Nilai yang mungkin adalah konstanta: UnixTimestamp , UnixTimestampInMills atau representasi valid lain dari waktu tanggal, misalnya: yyyy-MM-dd , MM/dd/yyyy HH:mm:ss defaultnya adalah ISO 8601 UTC |
|
RetryCount | Bilangan bulat (1...6) | Menentukan percobaan 6 ulang yang 1 diizinkan untuk pulih dari kegagalan. Defaultnya adalah 3 . |
|
TimeoutInSeconds | Bilangan bulat (1...180) | Menentukan batas waktu permintaan, dalam hitungan detik. Standarnya adalah 20 |
|
IsPostPayloadJson | Boolean | Menentukan apakah payload POST berada dalam format JSON. Standarnya adalah false |
|
Header | Objek | Pasangan nilai kunci yang menentukan header permintaan. | |
QueryParameters | Objek | Pasangan nilai kunci yang menentukan parameter kueri permintaan. | |
StartTimeAttributeName | True ketika EndTimeAttributeName diatur |
String | Menentukan nama parameter kueri untuk waktu mulai kueri. Lihat contoh. |
EndTimeAttributeName | True ketika StartTimeAttributeName diatur |
String | Menentukan nama parameter kueri untuk waktu akhir kueri. |
QueryTimeIntervalAttributeName | String | Jika titik akhir memerlukan format khusus untuk mengkueri data pada jangka waktu, gunakan properti ini dengan QueryTimeIntervalPrepend parameter dan QueryTimeIntervalDelimiter . Lihat contoh. |
|
QueryTimeIntervalPrepend | True ketika QueryTimeIntervalAttributeName diatur |
String | Lihat QueryTimeIntervalAttributeName |
QueryTimeIntervalDelimiter | True ketika QueryTimeIntervalAttributeName diatur |
String | Lihat QueryTimeIntervalAttributeName |
QueryParametersTemplate | String | Templat kueri yang akan digunakan saat meneruskan parameter dalam skenario tingkat lanjut. br>Misalnya: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" |
Saat API memerlukan parameter kompleks, gunakan queryParameters
atau queryParametersTemplate
yang mencakup beberapa variabel bawaan.
variabel bawaan | untuk digunakan dalam queryParameters |
untuk digunakan dalam queryParametersTemplate |
---|---|---|
_QueryWindowStartTime |
yes | yes |
_QueryWindowEndTime |
yes | yes |
_APIKeyName |
no | yes |
_APIKey |
no | yes |
Contoh StartTimeAttributeName
Pertimbangkan contoh ini:
StartTimeAttributeName
=from
EndTimeAttributeName
=until
ApiEndpoint
=https://www.example.com
Kueri yang dikirim ke server jarak jauh adalah: https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}
Contoh QueryTimeIntervalAttributeName
Pertimbangkan contoh ini:
QueryTimeIntervalAttributeName
=interval
QueryTimeIntervalPrepend
=time:
QueryTimeIntervalDelimiter
=..
ApiEndpoint
=https://www.example.com
Kueri yang dikirim ke server jarak jauh adalah: https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}
Contoh permintaan menggunakan Microsoft Graph sebagai API sumber data
Contoh ini meminta pesan dengan parameter kueri filter. Untuk informasi selengkapnya, lihat Parameter kueri Microsoft Graph 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 "
}
Contoh sebelumnya mengirim GET
permintaan ke https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000
. Tanda waktu diperbarui untuk setiap queryWindowInMin
kali.
Hasil yang sama dicapai dengan contoh ini:
"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}"
}
}
Opsi lain adalah ketika sumber data mengharapkan 2 parameter kueri, satu untuk waktu mulai dan satu untuk waktu akhir.
Contoh:
"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",
}
Ini mengirimkan GET
permintaan ke https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000
Untuk kueri kompleks, gunakan QueryParametersTemplate
. Contoh berikutnya ini mengirimkan POST
permintaan dengan parameter dalam isi.
Contoh:
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}))\"}"
}
Konfigurasi respons
Tentukan penanganan respons konektor data Anda dengan parameter berikut:
Bidang | Wajib | Tipe | Deskripsi |
---|---|---|---|
EventsJsonPaths | Benar | Daftar String | Menentukan jalur ke pesan dalam JSON respons. Ekspresi jalur JSON menentukan jalur ke elemen, atau satu set elemen, dalam struktur JSON |
SuccessStatusJsonPath | String | Menentukan jalur ke pesan berhasil dalam JSON respons. Ketika parameter ini ditentukan, SuccessStatusValue parameter juga harus ditentukan. |
|
SuccessStatusValue | String | Menentukan jalur ke nilai pesan berhasil dalam JSON respons | |
IsGzipCompressed | Boolean | Menentukan apakah respons dikompresi dalam file gzip | |
format | Benar | String | json atau csv atau xml |
CompressionAlgo | String | Algoritma kompresi, baik multi-gzip atau deflate . Untuk algoritma kompresi gzip, cukup konfigurasikan IsGzipCompressed ke True alih-alih mengatur nilai untuk parameter ini. |
|
CsvDelimiter | String | Jika format respons adalah CSV dan Anda ingin mengubah pemisah CSV default "," |
|
Batas HasCsv | Boolean | Menunjukkan apakah data CSV memiliki batas | |
HasCsvHeader | Boolean | Menunjukkan apakah data CSV memiliki header, defaultnya adalah True |
|
CsvEscape | String | Karakter escape untuk batas bidang, defaultnya adalah " Misalnya, CSV dengan header id,name,avg dan baris data yang berisi spasi seperti 1,"my name",5.5 memerlukan " batas bidang. |
|
ConvertChildPropertiesToArray | Boolean | Kasus khusus di mana server jarak jauh mengembalikan objek alih-alih daftar peristiwa di mana setiap properti memiliki data di dalamnya. |
Catatan
Jenis format CSV diurai oleh spesifikasi RFC4180 .
Contoh konfigurasi respons
Respons server dengan format JSON diharapkan, dengan data yang diminta dalam nilai properti. Status properti respons menunjukkan untuk menyerap data hanya jika nilainya adalah success
.
"response": {
"EventsJsonPaths ": ["$.value"],
"format": "json",
"SuccessStatusJsonPath": "$.status",
"SuccessStatusValue": "success",
"IsGzipCompressed: true
}
Respons yang diharapkan dalam contoh ini mempersiapkan CSV tanpa header.
"response": {
"EventsJsonPaths ": ["$"],
"format": "csv",
"HasCsvHeader": false
}
Konfigurasi penomoran halaman
Ketika sumber data tidak dapat mengirim seluruh payload respons sekaligus, konektor data CCP perlu mengetahui cara menerima bagian data di halaman respons. Jenis halaman yang akan dipilih adalah:
Jenis halaman | faktor keputusan |
---|---|
Apakah respons API memiliki tautan ke halaman berikutnya dan sebelumnya? | |
Apakah respons API memiliki token atau kursor untuk halaman berikutnya dan sebelumnya? | |
Apakah respons API mendukung parameter untuk jumlah objek yang akan dilewati saat penomoran halaman? |
Mengonfigurasi LinkHeader atau PersistentLinkHeader
Jenis halaman yang paling umum adalah ketika API sumber data server menyediakan URL ke halaman data berikutnya dan sebelumnya. Untuk informasi selengkapnya tentang spesifikasi Header Tautan, lihat RFC 5988.
LinkHeader
halaman berarti respons API mencakup:
Link
header respons HTTP- atau jalur JSON untuk mengambil tautan dari isi respons.
PersistentLinkHeader
halaman memiliki properti yang sama dengan LinkHeader
, kecuali header tautan tetap ada di penyimpanan backend. Opsi ini mengaktifkan tautan halaman di seluruh jendela kueri. Misalnya, beberapa API tidak mendukung waktu mulai atau waktu akhir kueri. Sebaliknya, mereka mendukung kursor sisi server. Jenis halaman persisten dapat digunakan untuk mengingat kursor sisi server. Untuk informasi selengkapnya, lihat Apa itu kursor?.
Catatan
Hanya ada satu kueri yang berjalan untuk konektor dengan PersistentLinkHeader untuk menghindari kondisi balapan di kursor sisi server. Ini dapat memengaruhi latensi.
Bidang | Wajib | Tipe | Deskripsi |
---|---|---|---|
LinkHeaderTokenJsonPath | Salah | String | Gunakan properti ini untuk menunjukkan tempat mendapatkan nilai dalam isi respons. Misalnya, jika sumber data mengembalikan JSON berikut: { nextPage: "foo", value: [{data}]} maka LinkHeaderTokenJsonPath akan menjadi $.nextPage |
PageSize | Salah | Bilangan bulat | Berapa banyak peristiwa per halaman |
PageSizeParameterName | Salah | String | Nama parameter kueri untuk ukuran halaman |
Berikut adalah beberapa contoh:
Paging: {
"pagingType": "LinkHeader",
"linkHeaderTokenJsonPath" : "$.metadata.links.next"
}
Paging: {
"pagingType" : "PersistentLinkHeader",
"pageSizeParameterName" : "limit",
"pageSize" : 500
}
Mengonfigurasi NextPageUrl
NextPageUrl
halaman berarti respons API menyertakan tautan kompleks dalam isi respons yang mirip LinkHeader
dengan , tetapi URL disertakan dalam isi respons alih-alih header.
Bidang | Wajib | Tipe | Deskripsi |
---|---|---|---|
PageSize | Salah | Bilangan bulat | Berapa banyak peristiwa per halaman |
PageSizeParameterName | Salah | String | Nama parameter kueri untuk ukuran halaman |
NextPageUrl | Salah | String | Hanya jika konektor adalah untuk Coralogix API |
NextPageUrlQueryParameters | Salah | Pasangan nilai Kunci Objek – menambahkan parameter kueri kustom ke setiap permintaan untuk halaman berikutnya | |
NextPageParaName | Salah | String | Menentukan nama halaman berikutnya dalam permintaan. |
HasNextFlagJsonPath | Salah | String | Menentukan jalur ke atribut bendera HasNextPage |
NextPageRequestHeader | Salah | String | Menentukan nama header halaman berikutnya dalam permintaan. |
NextPageUrlQueryParametersTemplate | Salah | String | Hanya jika konektor adalah untuk Coralogix API |
Contoh:
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\")}"
}
Mengonfigurasi NextPageToken atau PersistentToken
NextPageToken
pagination menggunakan token (hash atau kursor) yang mewakili status halaman saat ini. Token disertakan dalam respons API, dan klien menambahkannya ke permintaan berikutnya untuk mengambil halaman berikutnya. Metode ini sering digunakan ketika server perlu mempertahankan status yang tepat di antara permintaan.
PersistentToken
pagination menggunakan token yang bertahan di sisi server. Server mengingat token terakhir yang diambil oleh klien dan menyediakan token berikutnya dalam permintaan berikutnya. Klien melanjutkan di mana ia meninggalkan bahkan jika membuat permintaan baru nanti.
Bidang | Wajib | Tipe | Deskripsi |
---|---|---|---|
PageSize | Salah | Bilangan bulat | Berapa banyak peristiwa per halaman |
PageSizeParameterName | Salah | string | Nama parameter kueri untuk ukuran halaman |
NextPageTokenJsonPath | Salah | string | Jalur JSON untuk token halaman berikutnya dalam isi respons. |
NextPageTokenResponseHeader | Salah | string | Jika NextPageTokenJsonPath kosong, gunakan token dalam nama header ini untuk halaman berikutnya. |
NextPageParaName | Salah | string | Menentukan nama halaman berikutnya dalam permintaan. |
HasNextFlagJsonPath | Salah | string | Menentukan jalur ke atribut bendera HasNextPage saat menentukan apakah lebih banyak halaman dibiarkan dalam respons. |
NextPageRequestHeader | Salah | string | Menentukan nama header halaman berikutnya dalam permintaan. |
Contoh:
Paging: {
"pagingType" : "NextPageToken",
"nextPageRequestHeader" : "ETag",
"nextPageTokenResponseHeader" : "ETag"
}
Paging: {
"pagingType" : "PersistentToken",
"nextPageParaName" : "gta",
"nextPageTokenJsonPath" : "$.alerts[-1:]._id"
}
Mengonfigurasi Offset
Offset
penomoran halaman menentukan jumlah halaman yang akan dilewati dan batas jumlah peristiwa yang akan diambil per halaman dalam permintaan. Klien mengambil rentang item tertentu dari himpunan data.
Bidang | Wajib | Tipe | Deskripsi |
---|---|---|---|
PageSize | Salah | Bilangan bulat | Berapa banyak peristiwa per halaman |
PageSizeParameterName | Salah | String | Nama parameter kueri untuk ukuran halaman |
OffsetParaName | Salah | String | Nama parameter kueri permintaan berikutnya. PKT menghitung nilai offset untuk setiap permintaan, (semua peristiwa yang diserap + 1) |
Contoh:
Paging: {
"pagingType": "Offset",
"offsetParaName": "offset"
}
Konfigurasi DCR
Bidang | Wajib | Tipe | Deskripsi |
---|---|---|---|
DataCollectionEndpoint | Benar | String | DCE (Titik Akhir Pengumpulan Data) misalnya: https://example.ingest.monitor.azure.com . |
DataCollectionRuleImmutableId | Benar | String | ID DCR yang tidak dapat diubah. Temukan dengan melihat respons pembuatan DCR atau menggunakan API DCR |
StreamName | Benar | string | Nilai ini adalah yang streamDeclaration ditentukan dalam DCR (awalan harus dimulai dengan Kustom-) |
Contoh konektor data CCP
Berikut adalah contoh semua komponen konektor data CCP JSON bersama-sama.
{
"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": ["$"]
}
}
}