Endpoint REST Publik
Diperbarui 20 Juli 2026
Endpoint REST Publik
Endpoint ini dapat dipanggil tanpa autentikasi.
GET /api/public/metadata
Daftar metadata yang dipublikasikan dengan paginasi dan filter.
Query Parameters
| Parameter | Tipe | Default | Keterangan |
|---|---|---|---|
| q | string | — | Pencarian teks (judul, abstrak, kata kunci) |
| page | integer | 1 | Nomor halaman |
| pageSize | integer | 12 | Record per halaman (maks. 100) |
| kategori | string | — | Filter topik kategori ISO 19115 |
| tipeData | string | — | Filter tipe data (vector, raster, dst.) |
| bboxN | number | — | Batas utara BBOX (WGS84, desimal) |
| bboxS | number | — | Batas selatan BBOX |
| bboxE | number | — | Batas timur BBOX |
| bboxW | number | — | Batas barat BBOX |
Contoh Response
{
"records": [
{
"id": "cm1abc123",
"judul": "Peta Jaringan Jalan Nasional",
"abstrak": "Dataset jaringan jalan...",
"tipeData": "vector",
"topikKategori": ["transportation"],
"bboxUtara": -5.8,
"bboxSelatan": -8.9,
"bboxTimur": 115.7,
"bboxBarat": 105.0,
"publishedAt": "2025-01-15T08:00:00Z",
"createdBy": {
"namaLengkap": "Budi Santoso",
"organisasi": "BIG"
}
}
],
"total": 142,
"page": 1,
"pageSize": 12
}
GET /api/public/metadata/{id}
Detail lengkap satu metadata yang dipublikasikan.
Response
Objek metadata lengkap termasuk: judul, abstrak, cakupan spasial, kata kunci, topik, distribusi, kontak, kualitas, dll.
HTTP 404 bila tidak ditemukan atau bukan berstatus PUBLISHED.
GET /api/public/metadata/{id}/xml
Unduh metadata dalam format XML.
Query Parameters
| Parameter | Nilai | Keterangan |
|---|---|---|
| format | mdb2016 (default) | SNI ISO 19115-3:2016 |
| format | mdb2018 | ISO 19115-3:2018 |
| format | gmd | ISO 19139:2007 GMD |
| format | xslt | Custom XSLT (bila dikonfigurasi) |
Response: Content-Type: application/xml; charset=utf-8 dengan Content-Disposition: attachment; filename="...xml".
GET /api/metadata/{id}/kualitas
Status kualitas (QC/QE/QA) metadata. Tersedia tanpa login untuk metadata berstatus PUBLISHED.
Response
{
"qc": {
"status": "SIGNED",
"sesuai": true,
"passed": 45,
"total": 47,
"signedAt": "2025-02-01T10:30:00Z",
"signatureMethod": "PKI",
"signatureToken": "abc123...",
"uploadedDoc": false
},
"qe": { ... },
"qa": { ... }
}
GET /api/verify/{token}
Verifikasi keaslian dokumen QC/QE/QA berdasarkan token tanda tangan.
Validasi & Rate Limit
- Format token wajib: 43 karakter base64url (
[A-Za-z0-9_-]{43}) - Token tidak sesuai format → HTTP 404 langsung
- Rate limit: 20 req/menit per IP → HTTP 429 bila terlampaui
Response (valid)
{
"valid": true,
"tipe": "QA",
"status": "SIGNED",
"sesuai": true,
"passed": 12,
"total": 12,
"signedAt": "2025-02-10T14:22:00Z",
"signatureMethod": "PKI",
"metadata": {
"id": "cm1abc123",
"judul": "Peta Rawan Banjir",
"organisasi": "BNPB"
},
"signedBy": {
"namaLengkap": "Ani Rahayu",
"jabatan": "Kepala Bidang Geospasial"
}
}
Response (tidak valid)
{
"valid": false
}
HTTP status: 404.
GET /api/public/stats
Statistik publik sistem.
Response
{
"totalPublished": 254,
"totalOrganisasi": 12,
"recentPublished": [
{ "id": "...", "judul": "...", "publishedAt": "..." }
]
}
GET /api/health
Health check sistem. Tidak memerlukan autentikasi.
Response (sehat)
{
"status": "ok",
"db": "connected",
"timestamp": "2025-06-22T10:00:00Z"
}
Response (error)
{
"status": "error",
"db": "disconnected"
}
HTTP status: 503.