Dokumentasi/API/API pencarian & discovery/GET /api/v1/discovery/compare

Pahami endpoint perbandingan provider.

Endpoint ini dipakai untuk membandingkan dua provider yang sudah tayang dan memberi konteks apakah perbandingan itu memang relevan.

Auth dan validasi

  • Autentikasi: tidak perlu.
  • Query wajib: slugA dan slugB.
  • Jika salah satu query tidak ada, endpoint mengembalikan PARAM_REQUIRED dengan status 400.
  • Jika dua slug sama, endpoint mengembalikan SLUG_DUPLICATE dengan status 400.
  • Jika salah satu provider tidak ditemukan atau belum tayang, endpoint mengembalikan PROVIDER_NOT_FOUND dengan status 404.
GET /api/v1/discovery/compare?slugA=acme-studio&slugB=beta-labs

Cakupan data

  • Endpoint ini hanya membaca provider dengan submissionStatus=approved dan publishedAt terisi.
  • Bukti kerja yang ikut dipakai adalah proof publik dengan submissionStatus=approved dan isPublic=true.
  • meta.comparisonContext menjelaskan alasan dua provider dianggap relevan atau belum cukup setara untuk dibandingkan.

Field respons yang penting

  • data[] selalu mengikuti urutan slugA lalu slugB.
  • Setiap item memuat ringkasan provider publik plus proofSummary.
  • proofSummary.totalPublicProofs membantu membaca jumlah bukti kerja publik yang ikut dipakai saat membandingkan.
  • meta.comparedAt menunjukkan waktu response dibuat.
  • meta.comparisonContext memuat comparable, rule, dan penjelasan irisan layanan atau industri.

Respons sukses

{
  "data": [
    {
      "slug": "acme-studio",
      "proofSummary": {
        "totalPublicProofs": 8
      }
    },
    {
      "slug": "beta-labs",
      "proofSummary": {
        "totalPublicProofs": 5
      }
    }
  ],
  "meta": {
    "slugs": ["acme-studio", "beta-labs"],
    "comparedAt": "2026-03-10T08:00:00.000Z",
    "comparisonContext": {
      "comparable": true,
      "rule": "same_service_industry"
    }
  }
}

Respons error

Endpoint ini paling sering gagal karena dua slug sama atau salah satu provider tidak ditemukan.

{
  "error": {
    "code": "SLUG_DUPLICATE",
    "message": "Provider perbandingan tidak boleh sama.",
    "details": null
  }
}
{
  "error": {
    "code": "PROVIDER_NOT_FOUND",
    "message": "Salah satu provider tidak ditemukan atau belum published.",
    "details": null
  }
}