API
Urutkan, filter, dan cari
Satu query JSON untuk mengurutkan, memfilter, mencari, memilih field, join record terkait, dan menghitung.
Daftar record menerima parameter query opsional: objek JSON yang di-URL-encode. GraphQL menerima objek yang sama. Contoh memakai koleksi contacts dan memakai ulang base dan token dari halaman sebelumnya.
Kirim query
GET /api/v1/workspaces/:workspace/collections/:collection/records
curl --get 'http://127.0.0.1:8080/api/v1/workspaces/YOUR_WORKSPACE_ID/collections/YOUR_COLLECTION_ID/records' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--data-urlencode 'limit=20' \
--data-urlencode 'query={"filters":[{"field":"is_customer","operator":"eq","value":true}],"sort":[{"field":"deal_value","descending":true}],"fields":["full_name","deal_value"],"meta":["filter_count"]}' const query = {
filters: [{ field: 'is_customer', operator: 'eq', value: true }],
sort: [{ field: 'deal_value', descending: true }],
fields: ['full_name', 'deal_value'],
meta: ['filter_count']
};
const params = new URLSearchParams({ limit: '20', query: JSON.stringify(query) });
const res = await fetch(`${base}/records?${params}`, {
headers: { Authorization: `Bearer ${token}` }
});
const { data, meta } = await res.json(); query, _ := json.Marshal(map[string]any{
"filters": []map[string]any{{"field": "is_customer", "operator": "eq", "value": true}},
"sort": []map[string]any{{"field": "deal_value", "descending": true}},
"fields": []string{"full_name", "deal_value"},
"meta": []string{"filter_count"},
})
params := url.Values{"limit": {"20"}, "query": {string(query)}}
req, _ := http.NewRequest("GET", base+"/records?"+params.Encode(), nil)
req.Header.Set("Authorization", "Bearer "+token)
res, err := http.DefaultClient.Do(req) import json
query = {
"filters": [{"field": "is_customer", "operator": "eq", "value": True}],
"sort": [{"field": "deal_value", "descending": True}],
"fields": ["full_name", "deal_value"],
"meta": ["filter_count"],
}
res = requests.get(
f"{base}/records",
headers={"Authorization": f"Bearer {token}"},
params={"limit": 20, "query": json.dumps(query)},
) Hitungan yang kamu minta muncul di meta, di samping pagination:
{
"pagination": { "limit": 20, "offset": 0, "count": 20, "has_more": true },
"filter_count": 50,
"total_count": 126
} Opsi
| Opsi | Fungsinya |
|---|---|
filters | Maksimal 8 kondisi. Semuanya harus cocok. Masing-masing punya field, operator, dan value. |
sort | Maksimal 3 field, masing-masing dengan field dan descending. Urutannya stabil dan nilai null di akhir. |
fields | Kembalikan hanya field ini. Hilangkan untuk mendapat semua field. |
search | Setiap kata harus cocok dengan minimal satu field pencarian. |
search_fields | Field yang dicari. Tanpa ini, semua field string dan text dicari. |
joins | Maksimal 3 lookup ke koleksi lain, maksimal 8 field masing-masing. |
meta | total_count menghitung semua baris, filter_count menghitung baris yang cocok. Mati kecuali diminta, agar pembacaan tetap cepat. |
Operator filter
| Operator | Artinya | Berlaku untuk |
|---|---|---|
eq | sama dengan | semua tipe kecuali JSON |
ne | tidak sama dengan | semua tipe kecuali JSON |
gt, gte | lebih besar dari, atau sama dengan | angka dan tanggal |
lt, lte | lebih kecil dari, atau sama dengan | angka dan tanggal |
contains | mengandung teks | string dan text |
null, not_null | kosong, tidak kosong (tanpa value) | semua tipe, termasuk JSON |
Boolean hanya mendukung eq dan ne. Tanggal dibandingkan dalam UTC.
Join record terkait
Join membaca field dari record yang cocok di koleksi lain. collection adalah ID koleksi lain itu. target_field adalah field untuk mencocokkan; hilangkan untuk mencocokkan dengan id.
{
"joins": [
{
"field": "company",
"collection": "19c2b406b68223b96809deaead4b34e9",
"target_field": "name",
"fields": ["industry"]
}
]
} Field hasil join muncul di bawah _related:
{
"full_name": "Citra Lestari",
"company": "FinHub",
"_related": { "company": { "industry": "Fintech" } }
} Jika tidak ada yang cocok, nilainya null. Join hanya membaca dan tidak membuat foreign key.
Export
Export menerima filters, sort, dan search, dan selalu mengembalikan semua field. fields dan meta ditolak di sana.
Pemecahan masalah
- 400
invalid_input: periksa batasnya (8 filter, 3 sort, 3 join, 8 field per join), nama operator, dan tipe value. - Join bernilai null: nilai sumber harus sama dengan target field di koleksi lain.
- Tidak ada hitungan di
meta: tambahkantotal_countataufilter_countkemeta.