Dokumentasi

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

ParameterTipeDefaultKeterangan
qstringPencarian teks (judul, abstrak, kata kunci)
pageinteger1Nomor halaman
pageSizeinteger12Record per halaman (maks. 100)
kategoristringFilter topik kategori ISO 19115
tipeDatastringFilter tipe data (vector, raster, dst.)
bboxNnumberBatas utara BBOX (WGS84, desimal)
bboxSnumberBatas selatan BBOX
bboxEnumberBatas timur BBOX
bboxWnumberBatas 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

ParameterNilaiKeterangan
formatmdb2016 (default)SNI ISO 19115-3:2016
formatmdb2018ISO 19115-3:2018
formatgmdISO 19139:2007 GMD
formatxsltCustom 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.