Auth dan validasi
- Autentikasi: tidak perlu.
- Query wajib:
categorySlugdancitySlug. - Query opsional:
city,page,limit. - Jika query wajib tidak ada, endpoint mengembalikan
PARAM_REQUIREDdengan status 400. - Jika kategori tidak ditemukan atau tidak aktif, endpoint mengembalikan
CATEGORY_NOT_FOUNDdengan status 404.
GET /api/v1/discovery/programmatic?categorySlug=digital-infrastructure&citySlug=jakartaCakupan data
- Endpoint ini hanya membaca provider yang sudah tayang.
- Ambang discovery saat ini adalah
trustLevel >= 1. - Filter kategori memakai hasil
resolveActiveCategoryFilterSlugs, jadi child category aktif tetap ikut terbaca. - Jika query
citydikirim, endpoint akan mencocokkan kota secara langsung. Jika tidak, backend memakaicitySlug.
Field respons yang penting
data[]berisi ringkasan provider publik hasil proyeksitoBusinessSummary.meta.categorymemuat kategori aktif yang dipakai untuk query ini.meta.citySlugmenunjukkan slug kota yang dipakai untuk pencocokan.meta.page,limit,total, dantotalPagesmenjaga kontrak pagination.meta.trustThresholdmenunjukkan ambang minimum trust untuk discovery programatik saat ini.
Respons sukses
{
"data": [
{
"slug": "acme-studio",
"companyName": "Acme Studio",
"city": "Jakarta",
"trustLevel": 3
}
],
"meta": {
"category": {
"slug": "digital-infrastructure",
"name": "Digital Infrastructure"
},
"citySlug": "jakarta",
"page": 1,
"limit": 20,
"total": 1,
"totalPages": 1,
"trustThreshold": 1
}
}Respons error
Dua error yang paling penting untuk endpoint ini adalah query wajib yang hilang dan kategori yang tidak ditemukan.
{
"error": {
"code": "PARAM_REQUIRED",
"message": "Query `categorySlug` dan `citySlug` wajib diisi.",
"details": null
}
}{
"error": {
"code": "CATEGORY_NOT_FOUND",
"message": "Kategori tidak ditemukan.",
"details": null
}
}