Sintaks query
Endpoint daftar (GET /sdgs/publikasi) menerima filter, sort, dan pagination
lewat query string. Setiap kolom yang disajikan dapat dipakai sebagai filter,
dan setiap kolom yang bukan array sebagai sort key; daftar kolom beserta
tipenya ada di halaman tabel publikasi.
?kolom=nilai sama dengan (eq)
?kolom[op]=nilai op: eq ne gt gte lt lte in like has null
?sort=-kolom_a,kolom_b `-` untuk descending
?page=1&page_size=50 page_size paling banyak 200
Parameter apa pun selain nama kolom, sort, page, dan page_size
ditolak. Setiap parameter hanya boleh muncul sekali: dua filter pada kolom
yang sama dijawab 400.
Filter
?kolom=nilai sama dengan ?kolom[eq]=nilai. Operator yang berlaku
bergantung pada tipe kolom:
| Tipe | Operator |
|---|---|
| text | eq, ne, gt, gte, lt, lte, in, like, null |
| integer, bigint | eq, ne, gt, gte, lt, lte, in, null |
| double | eq, ne, gt, gte, lt, lte, in, null |
| date, timestamp | eq, ne, gt, gte, lt, lte, in, null |
| timestamptz | eq, ne, gt, gte, lt, lte, in, null |
| boolean | eq, ne, null |
| integer[], text[] | has, null |
inmenerima beberapa nilai dipisah koma:?jenis_dokumen[in]=article,preprint.likehanya untuk text, tidak membedakan huruf besar dan kecil, dengan%sebagai wildcard:?judul[like]=%energi%.hashanya untuk kolom array, dan menanyakan apakah array itu memuat satu nilai:?nomor_sdgs[has]=4mengambil publikasi yang menyentuh SDG 4.nullmenerimatrueataufalse:?doi[null]=truemengambil baris yang DOI-nya kosong.
Format nilai mengikuti tipe kolom: integer dan bigint tanpa desimal, double
boleh berdesimal (0.85), boolean true atau false, date YYYY-MM-DD dan
harus tanggal kalender yang sah, timestamptz YYYY-MM-DDTHH:MM:SS dengan
akhiran Z atau offset (2026-01-01T00:00:00+07:00), timestamp
YYYY-MM-DDTHH:MM:SS tanpa akhiran apa pun. Nilai has mengikuti
tipe elemen array-nya. Nilai yang tidak sesuai dijawab 400 yang menyebutkan
parameternya.
Semua filter digabung dengan AND: baris harus memenuhi setiap filter.
Sort
?sort= menerima daftar kolom dipisah koma, awalan - untuk descending.
Kolom key selalu ditambahkan di akhir sebagai tie-breaker — semua kolomnya,
bila key terdiri dari beberapa kolom — sehingga urutan halaman stabil di
antara dua request.
?sort=-tahun,judul
Kolom yang tidak dikenal, kolom array, atau kolom yang disebut dua kali, dijawab 400.
Pagination
page dimulai dari 1; page_size default 50, paling
banyak 200. Bagian page pada respons memuat total, jumlah
seluruh baris yang cocok dengan filter, sehingga aplikasi tahu berapa
halaman yang tersisa.
{ "page": { "page": 2, "page_size": {{PAGE_SIZE_DEFAULT}}, "total": 1853 } }
Catatan untuk curl
curl memperlakukan [ dan ] sebagai pola glob. Sertakan -g agar tanda
kurung siku diteruskan apa adanya:
curl -g -H "Authorization: Bearer lh_..." \
"https://api.ranah.durianworks.my.id/v1/sdgs/publikasi?nomor_sdgs[has]=4&judul[like]=%energi%&sort=-tahun"