GET /api/v1/search
Endpoint ini dipakai untuk pencarian provider publik dengan pencarian gabungan dan filter yang paling lengkap.
- Autentikasi: tidak perlu.
- Query wajib:
q. - Query opsional:
page,limit,city,location,categorySlug,minTrustLevel,minRating,industry,projectBudget,businessSize,capabilityTag,hourlyRateMin,hourlyRateMax,sort. - Jika
qkosong, error yang dikembalikan adalahQUERY_REQUIRED. Jika kurang dari 2 karakter, error-nyaQUERY_TOO_SHORT.
GET /api/v1/search?q=web%20development&city=Jakarta&categorySlug=digital-infrastructure&limit=10{
"data": [
{
"id": "provider-1",
"slug": "acme-studio",
"companyName": "Acme Studio",
"search": {
"source": "hybrid",
"rrfScore": 0.03125,
"keywordRank": 1,
"vectorRank": 2
}
}
],
"meta": {
"q": "web development",
"page": 1,
"limit": 20,
"total": 1,
"source": "hybrid"
}
}GET /api/v1/discovery/programmatic-params
Endpoint ini dipakai untuk membentuk kombinasi kategori dan kota yang layak dijadikan halaman discovery programatik.
- Autentikasi: tidak perlu.
- Query opsional:
limit. Nilai default saat ini 500, maksimal 1000. - Backend hanya mengambil provider yang sudah tayang, punya kota, dan memenuhi ambang
trustLevel >= 1.
GET /api/v1/discovery/programmatic-params?limit=100{
"data": [
{
"categorySlug": "digital-infrastructure",
"city": "Jakarta",
"citySlug": "jakarta",
"path": "/digital-infrastructure-terbaik-jakarta"
}
],
"meta": {
"total": 1,
"limit": 500,
"trustThreshold": 1
}
}GET /api/v1/discovery/programmatic
Endpoint ini dipakai untuk membaca daftar provider pada satu kombinasi kategori dan kota.
- Autentikasi: tidak perlu.
- Query wajib:
categorySlugdancitySlug. - Query opsional:
city,page,limit. - Jika kategori tidak ditemukan, endpoint mengembalikan
CATEGORY_NOT_FOUND.
GET /api/v1/discovery/programmatic?categorySlug=digital-infrastructure&citySlug=jakartaGET /api/v1/discovery/compare
Endpoint ini dipakai untuk membandingkan dua provider yang sudah tayang dan memberi konteks apakah perbandingan itu memang relevan.
- Autentikasi: tidak perlu.
- Query wajib:
slugAdanslugB. - Jika slug sama, endpoint mengembalikan
SLUG_DUPLICATE. - Jika salah satu provider tidak ditemukan, endpoint mengembalikan
PROVIDER_NOT_FOUND. - Respons
meta.comparisonContextmenjelaskan alasan mengapa dua provider bisa dibandingkan.
GET /api/v1/discovery/compare?slugA=acme-studio&slugB=beta-labs{
"data": [
{
"slug": "acme-studio",
"proofSummary": {
"totalPublicProofs": 8
}
}
],
"meta": {
"comparisonContext": {
"comparable": true,
"rule": "same_service_industry"
}
}
}