Query API
Genel Bakış
Sorgu API'si, filtreleme ve sıralama yetenekleriyle nesneleri aramak için kullanılan API'dir. Bu, TheHive 4 tarafından tanıtılan ve yeni veri modeli için optimize edilmiş bir API'dir.
TheHive, önceden tanımlanmış arama Sorguları listesiyle birlikte gelir:
listOrganisation
listUser
listAlert
listCase
Sorgu API isteğinin gövdesi aşağıdaki alanlara sahip bir nesne olmalıdır:
query
required: farklı türlerde işlemlerden oluşan bir dizi:
-
Seçim: gerekli
- nesnelerin listesi
- tanımlayıcıya göre nesne
- nesnelerin listesi
-
Filtreleme: isteğe bağlı
- Sıralama: isteğe bağlı
- Sayfalandırma: isteğe bağlı
excludeFields
isteğe bağlı: alan adlarından oluşan bir dizi.
Örnekler
- Basit Liste:
{
"query": [
{
"_name": "listOrganisation"
}
]
}
- Filtreli liste:
{
"query": [
{
"_name": "listOrganisation"
},
{
"_name": "filter",
"_eq": {
"_field": "name",
"_value": "admin"
}
}
]
}
- Sayfalandırmalı liste:
Admin adı verilen organizasyonları listeler, yükselen _updatedAt
değerine göre sıralanır, ilk 15 öğeyi görüntülemek için sayfalandırılır.
{
"query": [
{
"_name": "listOrganisation"
},
{
"_name": "filter",
"_eq": {
"_field": "name",
"_value": "admin"
}
},
{
"_name": "sort",
"_fields": [
{
"_updatedAt": "asc"
}
]
},
{
"_name": "page",
"from": 0,
"to": 15
}
]
}
- Zincirleme sorgular:
Kimliği ~1234 olan vaka için gözlemlenebilirleri listeleyin
{
"query": [
{
"_name": "getCase",
"idOrName": "~1234"
},
{
"_name": "observables"
},
{
"_name": "page",
"from": 0,
"to": 15
}
]
}
- Alanları hariç tutun:
{
"query": [
{
"_name": "listCase"
}
],
"excludeFields": ["description", "summary"]
}
Filtreler
Mevcut filtreler:
_and
:{"_and": [...other filters] }
_or
:{"_or": [...other filters] }
_not
:{"_not": { other filter } }
_any
:{"_any": null}
herhangi bir varlıkla eşleşir_lt
:{"_lt": {"_field": "<field>", "_value": <value>}
daha az_gt
:{"_gt": {"_field": "<field>", "_value": <value>}
daha büyük_lte
:{"_lte": {"_field": "<field>", "_value": <value>}
eşit veya daha az_gte
:{"_gte": {"_field": "<field>", "_value": <value>}
daha büyük veya eşit_ne
:{"_ne": {"_field": "<field>", "_value": <value>}
eşit değil_eq
:{"_eq": {"_field": "<field>", "_value": <value>}
eşit_is
:{"_is": {"_field": "<field>", "_value": <value>}
aynı şekilde_eq
_startsWith
:{"_startsWith": {"_field": "<field>", "_value": "<value>"}
dizesi ile başlar_endsWith
:{"_endsWith": {"_field": "<field>", "_value": "<value>"}
dizesi ile biter_id
:{"_id": "~123"}
kimliğe göre filtrele_between
:{"_between": {"_field": "<field>", "_from": <from>, "_to": <to>}}
aralık filtresi, from kapsayıcıdır, to özeldir, her ikisi de zorunludur_in
:{"_in": {"_field": "<field>", "_values": [<value1>, ...] }}
alan bu değerlerden biridir_contains
:{"_contains": "<field>"}
bir nesne bu alanı içeriyorsa_like
:{"_like": {"_field": "<field>", "_value": "<value>"}
alan (veya dizin türüne bağlı olarak bir sözcük) alt dizeyi içerir_match
:{"_match": {"_field": "<field>", "_value": "<value>"}
alan şu kelimeyi içerir
Sıralama
Kullanım: {"_name": "sort", "fields": [ {"<field>": "<direction>" }, ... ]}
Yön(direction
), asc
veya desc
olabilir.
Sayfalama ve Ek Veriler
Basit sayfalama: {"_name": "page", "from": 0, "to": 30}
Nesne ile ek veri iste: {"_name": "page", "from": 0, "to": 30, "extraData": ["shareCount", "contributors"] }
Nesnenin extraData
alanı, seçilen alanları içeren bir JSON nesnesini içerecektir. Kullanılabilir ek veriler, istenen varlığa bağlıdır.