Dokumentasi/API/API provider/GET /api/v1/providers

Pahami daftar provider publik yang aktif.

Endpoint ini dipakai untuk direktori, daftar eksternal, dan halaman lain yang membutuhkan kumpulan provider yang sudah tayang.

Auth dan cakupan

  • Autentikasi: tidak perlu.
  • Hanya mengembalikan provider dengan submissionStatus=approved dan publishedAt yang sudah terisi.
  • Sorting yang didukung saat ini: rating, trust, dan reviews.

Query parameter

  • page: nomor halaman. Default saat ini 1.
  • limit: jumlah item per halaman. Default 20, maksimal 50.
  • q: query opsional. Jika diisi, endpoint memakai ranking hybrid untuk hasil pencarian.
  • sort: rating, trust, atau reviews.
  • location: filter lokasi lintas kota, provinsi, atau negara.
  • city: filter kota exact match jika dibutuhkan.
  • country: filter negara.
  • minTrustLevel: ambang trust minimum.
  • Filter lanjutan lain mengikuti kebutuhan direktori publik, termasuk kategori, industry focus, budget, ukuran bisnis, capability tag, dan hourly rate.
  • Nilai sort selain trust atau reviews akan jatuh ke mode default, yaitu rating.
GET /api/v1/providers?page=2&limit=10&sort=trust&location=Jakarta&minTrustLevel=2

Field respons yang penting

  • data[] berisi ringkasan provider publik hasil proyeksi toBusinessSummary.
  • slug, companyName, city, dan country dipakai untuk identitas dasar.
  • trustLevel, confidenceScore, overallRating, dan totalReviews dipakai untuk sinyal evaluasi awal.
  • publicDataMeta memberi provenance profil dan sinyal apakah field komersial cukup aman untuk ditampilkan di UI publik.
  • meta berisi pagination aktif: page, limit, total, totalPages, dan sort.

Respons sukses

{
  "data": [
    {
      "id": "provider-1",
      "slug": "acme-studio",
      "companyName": "Acme Studio",
      "city": "Jakarta",
      "country": "ID",
      "trustLevel": 3,
      "confidenceScore": "0.800",
      "overallRating": "4.80",
      "totalReviews": 12,
      "publicDataMeta": {
        "profileProvenance": "provider_submitted",
        "commercialSignals": {
          "employeeCount": { "available": true, "provenance": "provider_submitted", "displayable": true },
          "minProjectBudget": { "available": false, "provenance": "provider_submitted", "currency": "UNKNOWN", "displayable": false },
          "hourlyRate": { "available": false, "provenance": "provider_submitted", "currency": "UNKNOWN", "displayable": false }
        }
      }
    }
  ],
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 120,
    "totalPages": 6,
    "sort": "trust"
  }
}

Respons error

Route ini tidak mendefinisikan kode error bisnis khusus. Query yang tidak valid biasanya dinormalisasi ke nilai aman, misalnya sort akan kembali ke rating dan limit akan dipotong ke batas maksimum.