Skip to content

/skor

Endpoint untuk mengelola skor penilaian desa wisata.

GET /api/skor

Deskripsi: Mendapatkan semua skor desa wisata beserta detail desa. Menampilkan semua desa termasuk yang belum memiliki skor.

Response Sukses (200)

json
{
  "status": "success",
  "data": [
    {
      "kd_desa": "DESA-abc123def4",
      "nama_desa": "Desa Penglipuran",
      "kategori_desa": "Mandiri",
      "partisipasi_masyarakat": 95,
      "keragaman_paket_wisata": 90,
      "akses_tempat_wisata": 85,
      "keramahan_difabel": 80,
      "fasilitas_tempat_wisata": 92,
      "produk_tempat_wisata": 88,
      "rata_rata": 88
    },
    {
      "kd_desa": "DESA-xyz789abc1",
      "nama_desa": "Desa Baru",
      "kategori_desa": "Rintisan",
      "partisipasi_masyarakat": null,
      "keragaman_paket_wisata": null,
      "akses_tempat_wisata": null,
      "keramahan_difabel": null,
      "fasilitas_tempat_wisata": null,
      "produk_tempat_wisata": null,
      "rata_rata": 0
    }
  ]
}

GET /api/skor/:kd_desa

Deskripsi: Mendapatkan skor desa wisata berdasarkan kode desa.

URL Parameters

ParameterTipeRequiredDeskripsi
kd_desastringYesKode unik desa wisata

Response Sukses (200)

json
{
  "status": "success",
  "data": {
    "kd_desa": "DESA-abc123def4",
    "partisipasi_masyarakat": 95,
    "keragaman_paket_wisata": 90,
    "akses_tempat_wisata": 85,
    "keramahan_difabel": 80,
    "fasilitas_tempat_wisata": 92,
    "produk_tempat_wisata": 88,
    "created_at": "2025-06-10T10:30:00Z",
    "updated_at": "2025-06-10T10:30:00Z"
  }
}

POST /api/skor

Deskripsi: Menambahkan skor baru untuk desa wisata. Sistem akan otomatis menghitung rata-rata dan menentukan kategori desa.

Authorization: Memerlukan token dengan role dinas

Headers

json
{
  "Authorization": "Bearer jwt_token_here",
  "Content-Type": "application/json"
}

Request Body

json
{
  "kd_desa": "DESA-abc123def4",
  "partisipasi_masyarakat": 95,
  "keragaman_paket_wisata": 90,
  "akses_tempat_wisata": 85,
  "keramahan_difabel": 80,
  "fasilitas_tempat_wisata": 92,
  "produk_tempat_wisata": 88
}

Rentang Nilai: Setiap field skor harus berupa angka antara 1-100.

Kategori Desa Otomatis:

  • Mandiri: Rata-rata > 90
  • Maju: Rata-rata 75-90
  • Berkembang: Rata-rata 50-74
  • Rintisan: Rata-rata < 50

Response Sukses (201)

json
{
  "status": "success",
  "data": {
    "kd_desa": "DESA-abc123def4",
    "partisipasi_masyarakat": 95,
    "keragaman_paket_wisata": 90,
    "akses_tempat_wisata": 85,
    "keramahan_difabel": 80,
    "fasilitas_tempat_wisata": 92,
    "produk_tempat_wisata": 88,
    "total_skor": 530,
    "rata_rata": 88,
    "kategori_desa": "Maju"
  },
  "total_skor": 530,
  "rata_rata": 88,
  "kategori_desa": "Maju"
}

PUT /api/skor/:kd_desa

Deskripsi: Memperbarui skor desa wisata yang sudah ada.

Authorization: Memerlukan token dengan role dinas

Headers

json
{
  "Authorization": "Bearer jwt_token_here",
  "Content-Type": "application/json"
}

URL Parameters

ParameterTipeRequiredDeskripsi
kd_desastringYesKode unik desa wisata

Request Body

json
{
  "partisipasi_masyarakat": 98,
  "keragaman_paket_wisata": 92,
  "akses_tempat_wisata": 88,
  "keramahan_difabel": 85,
  "fasilitas_tempat_wisata": 95,
  "produk_tempat_wisata": 90
}

Response Sukses (200)

json
{
  "status": "success",
  "data": {
    "kd_desa": "DESA-abc123def4",
    "partisipasi_masyarakat": 98,
    "keragaman_paket_wisata": 92,
    "akses_tempat_wisata": 88,
    "keramahan_difabel": 85,
    "fasilitas_tempat_wisata": 95,
    "produk_tempat_wisata": 90,
    "total_skor": 548,
    "rata_rata": 91,
    "kategori_desa": "Mandiri"
  },
  "total_skor": 548,
  "rata_rata": 91,
  "kategori_desa": "Mandiri"
}

Error Responses

400 - Bad Request

json
{
  "status": "fail",
  "message": "Semua nilai skor harus berupa angka antara 1 hingga 100."
}

401 - Unauthorized

json
{
  "status": "fail",
  "message": "Akses ditolak. Token tidak ditemukan."
}

403 - Forbidden

json
{
  "status": "fail",
  "message": "Akses ditolak. Hanya role 'dinas' yang dapat mengelola skor."
}

404 - Not Found

json
{
  "status": "fail",
  "message": "Desa tidak ditemukan di database."
}
json
{
  "status": "fail",
  "message": "Skor desa tidak ditemukan"
}

409 - Conflict (untuk POST)

json
{
  "status": "fail",
  "message": "Skor untuk desa ini sudah ada. Gunakan PUT untuk mengubahnya."
}

500 - Internal Server Error

json
{
  "status": "error",
  "message": "Internal server error"
}