Autentikasi
Untuk menggunakan API, Anda harus memiliki akun aktif dalam sistem dan token otorisasi. Token otorisasi dapat dibuat di profil pribadi pada bagian «API».
Menggunakan token yang dibuat
Token yang dibuat harus disertakan dalam header HTTP Authorization untuk semua permintaan API.
Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU
Contoh permintaan untuk mengambil peristiwa aktif menggunakan utilitas curl (silakan ganti dengan token Anda):
curl --location 'https://detector404.id/api/v1/alerts' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Batasan API
Anda dapat meminta data untuk satu bulan, kuartal, atau tahun (tergantung pada izin akun Anda). Frekuensi permintaan ke API tunduk pada batasan berikut:
"Daftar putih"
Metode untuk mendapatkan daftar alamat dari mana DownDetector melakukan pemeriksaan ketersediaan
URL
/api/v1/whitelist
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Catatan
Metode ini menggunakan token otorisasi terpisah, tersedia untuk mitra berdasarkan permintaan.
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/whitelist' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
[ { "ip": "146.185.199.33", "city": "Jakarta", "active": true }, { "ip": "95.46.196.233", "city": "Surabaya", "active": true }, { "ip": "5.101.218.215", "city": "Medan", "active": true } ]
Peristiwa
Metode untuk mengambil peristiwa aktif saat ini
URL
/api/v1/alerts
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Array data terdiri dari objek dengan field wajib berikut:
Jenis peristiwa yang mungkin dan field tambahan, spesifik untuk setiap jenis:
url - halaman tidak tersedia, field tambahan:
latency - penundaan respons yang signifikan untuk halaman dari penyedia tertentu di kota tertentu, dengan field tambahan:
isp - masalah dengan penyedia di kota, field tambahan:
city - masalah di kota, field tambahan:
complaints - lonjakan keluhan pengguna, field tambahan:
function - fungsi layanan tertentu telah berhenti bekerja, dengan field tambahan:
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/alerts' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": [ { "id": 17112941194, "time": "2024-03-24T15:28:07.717409+00:00", "type": "complaints", "service": "RCTI", "num": 14 }, { "id": 17112941193, "time": "2024-03-24T15:28:07.717409+00:00", "type": "latency", "provider": "IndiHome", "place": "Bandung", "url": "https://bandungkota.go.id/", "service": "Kota Bandung", "num": 11.794 }, { "id": 17112926215, "time": "2024-03-24T15:03:41.542004+00:00", "type": "url", "url": "https://persija.id", "service": "Persija Jakarta", "num": 5 } ] }
Respons jika terjadi kesalahan:
``` { "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
```
Peristiwa Terfilter
Metode untuk mendapatkan peristiwa aktif saat ini yang melebihi ambang batas yang ditentukan di profil pengguna
URL
/api/v1/alerts/filtered
Metode
GET
Deskripsi data yang dikembalikan
Satu-satunya perbedaan dari metode /alerts adalah bahwa metode ini mengembalikan bukan semua peristiwa saat ini, tetapi hanya peristiwa yang nilai parameter tambahan num-nya tidak kurang dari ambang batas yang ditentukan di profil pengguna untuk jenis peristiwa tersebut.
Jika berhasil, mengembalikan objek JSON dengan:
Array data terdiri dari objek dengan field wajib berikut:
Jenis peristiwa yang mungkin dan field tambahan, spesifik untuk setiap jenis:
url - halaman tidak tersedia, field tambahan:
latency - penundaan respons yang signifikan dari halaman dari penyedia tertentu di kota tertentu, dengan field tambahan:
isp - masalah dengan penyedia di kota, dengan field tambahan:
city - masalah di kota, dengan field tambahan:
complaints - lonjakan keluhan pengguna, dengan field tambahan:
function - fungsi layanan tertentu telah berhenti bekerja, dengan field tambahan:
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/alerts/filtered' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": [ { "id": 17112941194, "time": "2024-03-24T15:28:07.717409+00:00", "type": "complaints", "service": "RCTI", "num": 14 }, { "id": 17112941193, "time": "2024-03-24T15:28:07.717409+00:00", "type": "latency", "provider": "IndiHome", "place": "Bandung", "url": "https://bandungkota.go.id/", "service": "Kota Bandung", "num": 11.794 }, { "id": 17112926215, "time": "2024-03-24T15:03:41.542004+00:00", "type": "url", "url": "https://persija.id", "service": "Persija Jakarta", "num": 5 } ] }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
Industri
Metode untuk mengambil daftar industri dalam klasifikasi layanan
URL
/api/v1/branches
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/branches' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": [ "Agriculture and Food Industry", "Energy", "International Resources", "Utilities and Public Services", "Metals and Mining", "Oil and Gas", "Defense Industry and Machinery", "Travel and Tourism", "Telecommunications" ] }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
Layanan
Metode untuk mengambil daftar layanan
URL
/api/v1/services
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Array data terdiri dari objek dengan field wajib berikut:
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/services' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": [ { "name": "Provinsi Jawa Barat", "urlname": "provinsi-jawa-barat", "ecosystem": null, "urls": 1, "branches": [ "Daerah" ] }, { "name": "Bank BCA", "urlname": "bank-bca", "ecosystem": "BCA Ecosystem", "urls": 12, "branches": [ "Keuangan" ] } ] }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
Layanan Industri
Metode untuk mendapatkan daftar layanan dalam industri tertentu
URL
/api/v1/services/branch/{branch}
Nilai yang dapat diganti:
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Array data terdiri dari objek dengan field wajib berikut:
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/services/branch/Finance' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": [ { "name": "Bank BCA", "urlname": "bank-bca", "ecosystem": "BCA Ecosystem", "urls": 12 }, { "name": "Bank Mandiri", "urlname": "bank-mandiri", "ecosystem": null, "urls": 5 } ] }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
Peristiwa Layanan
Metode untuk mendapatkan peristiwa layanan aktif saat ini berdasarkan data pemantauan
URL
/api/v1/service/{service}/alerts
Nilai yang dapat diganti:
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Array data terdiri dari objek dengan field wajib berikut:
Jenis peristiwa yang mungkin dan field tambahan, spesifik untuk setiap jenis:
url - halaman tidak tersedia, field tambahan:
latency - penundaan respons yang signifikan dari halaman web dari penyedia tertentu di kota tertentu, dengan field tambahan:
isp - masalah dengan penyedia di kota (berlaku jika layanan adalah penyedia komunikasi), dengan field tambahan:
complaints - lonjakan keluhan pengguna, dengan field tambahan:
function - fungsi layanan tertentu telah berhenti bekerja, dengan field tambahan:
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/service/Unired/alerts' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": [ { "id": 17350524178, "time": "2024-12-24T14:02:52.724695+00:00", "type": "url", "url": "https://gojek.com", "service": "Gojek", "place": "id", "num": 31, "private": false }, { "id": 17350524134, "time": "2024-12-24T14:02:15.269713+00:00", "type": "latency", "provider": "MyRepublic", "place": "Surabaya", "url": "https://gojek.com", "service": "Gojek", "num": 0.658, "private": false }, { "id": 17350521990, "time": "2024-12-24T13:59:14.799644+00:00", "type": "latency", "provider": "Telkomsel", "place": "Jakarta", "url": "https://gojek.com", "service": "Gojek", "num": 1.256, "private": false }, { "id": 17350486902, "time": "2024-12-24T13:10:06.590936+00:00", "type": "latency", "provider": "IndiHome", "place": "Makassar", "url": "https://gojek.com", "service": "Gojek", "num": 0.651, "private": false } ] }
Jawaban:
{ "success": true, "data": [ { "id": 17350524178, "time": "2024-12-24T14:02:52.724695+00:00", "type": "isp", "provider": "Biznet", "place": "Jakarta", "num": 152 }, { "id": 17350524134, "type": "complaints", "time": "2024-12-24T14:02:15.269713+00:00", "service": "Tokopedia", "num": 351 }, { "id": 17350521990, "time": "2024-12-24T13:59:14.799644+00:00", "type": "function", "service": "Tokopedia", "function": "Pesanan", "num": 101 } ] }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
Peristiwa layanan terfilter
Metode untuk mengambil peristiwa layanan saat ini yang melebihi ambang batas yang ditentukan di profil pengguna
URL
/api/v1/service/{service}/alerts/filtered
Nilai yang dapat diganti:
Metode
GET
Deskripsi data yang dikembalikan
Satu-satunya perbedaan dari metode /service/{service}/alerts adalah bahwa metode ini mengembalikan bukan semua peristiwa layanan saat ini, tetapi hanya peristiwa yang nilai parameter tambahan num-nya tidak kurang dari ambang batas yang ditentukan di profil pengguna untuk jenis peristiwa tersebut.
Jika berhasil, mengembalikan objek JSON dengan:
Array data terdiri dari objek dengan field wajib berikut:
Jenis peristiwa yang mungkin dan field tambahan, spesifik untuk setiap jenis:
url - halaman tidak tersedia, field tambahan:
latency - penundaan respons yang signifikan dari halaman web dari penyedia tertentu di kota tertentu, dengan field tambahan:
isp - masalah dengan penyedia di kota (berlaku jika layanan adalah penyedia komunikasi), dengan field tambahan:
complaints - lonjakan keluhan pengguna, dengan field tambahan:
function - fungsi layanan tertentu telah berhenti bekerja, dengan field tambahan:
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/service/Unired/alerts/filtered' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": [ { "id": 17350524178, "time": "2024-12-24T14:02:52.724695+00:00", "type": "url", "url": "https://gojek.com", "service": "Gojek", "place": "id", "num": 31, "private": false }, { "id": 17350521990, "time": "2024-12-24T13:59:14.799644+00:00", "type": "latency", "provider": "Telkomsel", "place": "Jakarta", "url": "https://gojek.com", "service": "Gojek", "num": 1.256, "private": false } ] }
Jawaban:
{ "success": true, "data": [ { "id": 17350524178, "time": "2024-12-24T14:02:52.724695+00:00", "type": "isp", "provider": "Biznet", "place": "Jakarta", "num": 152 }, { "id": 17350524134, "type": "complaints", "time": "2024-12-24T14:02:15.269713+00:00", "service": "Tokopedia", "num": 351 }, { "id": 17350521990, "time": "2024-12-24T13:59:14.799644+00:00", "type": "function", "service": "Tokopedia", "function": "Pesanan", "num": 101 } ] }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
Komentar
Metode untuk mengambil daftar komentar pengguna tentang layanan untuk hari tertentu
URL
/api/v1/service/{service}/comments/date/{date}
Nilai yang dapat diganti:
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Array data terdiri dari objek dengan field wajib berikut:
Objek category terdiri dari pasangan kunci-nilai, di mana kunci adalah salah satu kategori yang ditugaskan ke komentar, dan nilainya adalah array nama subkategori dalam kategori tersebut yang mungkin menjadi tempat komentar tersebut.
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/service/Gosuslugi/comments/date/2024-03-19' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": [ { "time": "2024-03-19T08:08:31.643480+07:00", "text": "gangguan layanan pemerintah", "author": "Budi", "likes": 8, "category": { "Site failure": [ "The site does not open/load/functioning improperly" ] } } ] }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
Grafik
Metode untuk mengambil data yang memungkinkan pembuatan grafik yang menggambarkan perilaku layanan pada hari tertentu
URL
/api/v1/service/{service}/graph/date/{date}
Nilai yang dapat diganti:
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Objek data memiliki field berikut:
Semua array di atas terdiri dari array dua elemen, yang harus diinterpretasikan sebagai [waktu, nilai], di mana waktu adalah timestamp UNIX standar.
Contoh
Permintaan:
curl --location 'https://detector404.com/api/v1/service/Gosuslugi/graph/date/today' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": { "latency": [[1711289700, 186], [1711290000, 170]], "errors": [[1711290000, 3], [1711290300, 2]], "totals": [[1711290000, 8], [1711290300, 7]], "social": [[1711289700, 1], [1711290000, 1]] } }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
Statistik
Metode untuk mendapatkan statistik tentang komentar dan keluhan tentang layanan
URL
/api/v1/service/{service}/stats/date/{date}
Nilai yang dapat diganti:
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Objek data memiliki field berikut:
regions - array yang berisi statistik keluhan berdasarkan wilayah, terdiri dari objek dengan field berikut:
complaints - array yang berisi statistik komentar berdasarkan kategori, terdiri dari objek dengan field berikut:
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/service/Gosuslugi/stats/date/2024-03' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": { "regions": [ { "region": "Jakarta dan Sekitarnya", "percent": 80.76923076923077 }, { "region": "Bali", "percent": 3.8461538461538463 } ], "complaints": [ { "complaint": "Site outage", "percent": 42.97520661157025, "detailed": [ { "type": "The site does not open / does not load / is not working.", "percent": 42.97520661157025 } ] }, { "complaint": "Personal account outage", "percent": 37.1900826446281, "detailed": [ { "type": "Cannot access the personal account/app/login", "percent": 30.578512396694215 }, { "type": "Problem with password or account recovery", "percent": 6.6115702479338845 } ] } ] } }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
Lini waktu masalah
Metode untuk mendapatkan informasi tentang keberadaan masalah layanan dengan rincian per menit
URL
/api/v1/service/{service}/problems/date/{date}
Nilai yang dapat diganti:
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Array data terdiri dari objek dengan field berikut:
Catatan
Metode ini secara implisit menggunakan ambang batas yang ditetapkan oleh pengguna di profilnya: untuk jumlah kota dari mana ketidaktersediaan sumber daya dianggap bermasalah, dan untuk jumlah keluhan selama 15 menit terakhir, di mana lonjakan keluhan dianggap sebagai masalah.
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/service/Gosuslugi/problems/date/2024-03-15' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": [ { "time": "2024-03-15 00:00+07:00", "errors": false, "complaints": false }, { "time": "2024-03-15 00:01+07:00", "errors": false, "complaints": false } ] }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
Status
Metode untuk mengambil status layanan saat ini berdasarkan data pemantauan
URL
/api/v1/service/{service}/status
Nilai yang dapat diganti:
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Objek data memiliki field berikut:
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/service/Gosuslugi/status' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": { "down": { "https://pedulilindungi.id": ["Kota Semarang"] }, "social": false } }
Jawaban:
{ "success": true, "data": { "down": { "https://pedulilindungi.id": ["Kota Semarang"] }, "social": 95 } }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }
URL
Metode untuk mendapatkan daftar halaman yang dipantau
URL
/api/v1/service/{service}/urls
Nilai yang dapat diganti:
Metode
GET
Deskripsi data yang dikembalikan
Jika berhasil, mengembalikan objek JSON dengan:
Contoh
Permintaan:
curl --location 'https://detector404.id/api/v1/service/Gosuslugi/urls' \
--header 'Authorization: Bearer wGGtaQVncybYmhbiAab9poccBWoU4n0c1H0ee2zVyICWEM7B9s0DFrzU'
Jawaban:
{ "success": true, "data": [ "https://layanan.go.id", "https://pedulilindungi.id", "https://akun.layanan.go.id" ] }
Respons jika terjadi kesalahan:
{ "success": false, "error": "Terjadi kesalahan selama eksekusi permintaan; silakan periksa parameternya." }