/api/meta/catalog
GETTersediaFRESH

Katalog API

Setiap endpoint publik beserta kategorinya, status yang dideklarasikan dan status langsung, TTL cache, hasil probe terakhir, ditambah batas permintaan dan tabel kode error.

GET/api/meta/catalog

Permintaan

Endpoint ini tidak menerima parameter.

Contoh permintaan

curl -s "https://www.coinboss.com/api/meta/catalog"

Kolom respons

Tabel kolom dihasilkan dari respons nyata, sehingga memuat persis apa yang dikembalikan endpoint. Path memakai a[] untuk item array dan {*} untuk objek yang kuncinya berupa nama dinamis seperti koin atau bursa.

KolomTipeSatuanDeskripsi
successboolean—true jika permintaan berhasil. Jika gagal, body-nya adalah `{ success: false, code, error, request_id }`.
schemastring—ID skema respons ini (`coinboss.meta.catalog/1`).
nownumbermsWaktu server saat respons disusun.
api_versionstring—Versi API publik (`v1`).
catalog_versionstring—Versi katalog endpoint, berupa tanggal rilis seperti `2026.11.11`.
base_pathstring—Awalan path yang dipakai bersama oleh semua endpoint (`/api`).
summaryobject—Blok ringkasan.
summary.totalnumber—Total.
summary.availablenumber—Apakah data tersedia.
summary.partialnumber—true jika hanya sebagian dari data yang diharapkan tersedia.
summary.degradednumbercountJumlah endpoint yang status langsungnya `degraded`.
summary.downnumbercountJumlah endpoint yang status langsungnya `down`.
summary.unavailablenumber—Item yang datanya tidak tersedia, beserta alasannya. Tidak pernah dilaporkan sebagai 0.
summary.unknownnumbercountJumlah endpoint yang status langsungnya `unknown` (tidak ada hasil probe terbaru).
probeobject—Keadaan probe endpoint di balik status langsung: waktu putaran terakhir, usianya, intervalnya, dan apakah masih segar.
probe.last_run_atnumbermsStempel waktu.
probe.age_snumbersJumlah detik sejak baris ini terakhir diperbarui.
probe.interval_snumbersInterval terencana antara dua putaran probe (300).
probe.freshboolean—true jika putaran probe terakhir berusia kurang dari 20 menit; jika false, status endpoint dilaporkan sebagai `unknown`.
probe.errornull—Pesan error (hanya ada saat gagal).
categoriesarray—Kategori endpoint yang memuat setidaknya satu endpoint, beserta jumlah endpoint per status.
categories[]object—Satu kategori: `id`, `title`, `desc`, dan jumlah endpoint-nya pada setiap status.
categories[].idstring—Pengenal.
categories[].titlestring—Judul tampilan kategori.
categories[].descstring—Deskripsi satu kalimat tentang kategori; null jika belum ditulis.
categories[].totalnumber—Total.
categories[].availablenumber—Apakah data tersedia.
categories[].partialnumber—true jika hanya sebagian dari data yang diharapkan tersedia.
categories[].degradednumbercountJumlah endpoint dalam kategori yang status langsungnya `degraded`.
categories[].downnumbercountJumlah endpoint dalam kategori yang status langsungnya `down`.
categories[].unavailablenumber—Item yang datanya tidak tersedia, beserta alasannya. Tidak pernah dilaporkan sebagai 0.
categories[].unknownnumbercountJumlah endpoint dalam kategori yang status langsungnya `unknown`.
endpointsarray—Setiap endpoint yang terdokumentasi beserta status langsungnya.
endpoints[]object—Satu endpoint: identitas, path, status yang dideklarasikan dan status langsung, masa berlaku cache, nama parameter, dan hasil probe terakhir.
endpoints[].idstring—Pengenal.
endpoints[].catstring—ID kategori tempat endpoint tersebut berada.
endpoints[].kindstring—Jenis.
endpoints[].methodstring—Catatan rumus / metode.
endpoints[].pathstring—Path permintaan endpoint; segmen `:name` adalah parameter path.
endpoints[].titlestring—Judul tampilan singkat endpoint.
endpoints[].summarystring—Blok ringkasan.
endpoints[].declaredstring—Status yang dideklarasikan dalam katalog, terlepas dari hasil probe: `available`, `partial`, atau `unavailable`.
endpoints[].statusstring—Status.
endpoints[].status_reasonstring|null—Alasan `status` bukan `available`, dalam teks biasa; null jika memang demikian.
endpoints[].stabilitystring—`stable`, `beta` (kumpulan kolom dapat berubah tanpa pemberitahuan 90 hari), atau `legacy` (tetap berfungsi, penggantinya sudah ada).
endpoints[].sincestring|null—Awal periode.
endpoints[].ttl_snumber|nullsMasa berlaku cache sisi server untuk respons endpoint; null jika tidak di-cache atau tidak berlaku.
endpoints[].paramsarray—Nama semua parameter yang diterima endpoint. kosong pada sampel yang dipakai untuk menghasilkan tabel ini
endpoints[].params[]string—Satu nama parameter.
endpoints[].requiredarray—Nama parameter yang wajib dikirim. kosong pada sampel yang dipakai untuk menghasilkan tabel ini
endpoints[].probeobject—Hasil probe terakhir endpoint: waktu pemeriksaan, status HTTP, `ok`, `schema_ok`, latensi, ukuran, usia data, keberhasilan terakhir, dan rentetan kegagalan; null jika belum pernah di-probe.
endpoints[].probe.checked_atnumbermsStempel waktu.
endpoints[].probe.httpnumber—Status HTTP permintaan probe terbaru.
endpoints[].probe.okboolean—`true` jika permintaan probe terbaru mengembalikan HTTP 200 dengan body JSON yang valid.
endpoints[].probe.schema_okboolean—`true` jika respons yang di-probe cocok dengan tabel kolom yang terdokumentasi; `null` jika tidak ada tabel kolom.
endpoints[].probe.latency_msnumbermsWaktu respons permintaan probe terbaru.
endpoints[].probe.bytesnumberbytesUkuran body respons yang di-probe.
endpoints[].probe.qualitynull—`meta.quality` yang dilaporkan respons yang di-probe (FRESH / PARTIAL / STALE …); `null` jika endpoint tidak melaporkannya.
endpoints[].probe.data_age_snumber|nullsJumlah detik sejak event tersebut.
endpoints[].probe.last_ok_atnumbermsStempel waktu.
endpoints[].probe.fail_streaknumbercountJumlah probe yang gagal berturut-turut; 0 jika probe terakhir berhasil.
endpoints[].required[]string—Satu nama parameter wajib.
rate_limitobject—Aturan batas laju API publik.
rate_limit.window_snumbersPanjang jendela penghitungan (60).
rate_limit.anonymous_per_minnumbercountPermintaan per menit yang diizinkan per IP klien jika tidak ada kunci API yang dikirim.
rate_limit.scopestring—Teks yang menyatakan cara permintaan dihitung: per IP klien jika anonim, per kunci jika header `CB-API-KEY` dikirim.
rate_limit.key_tiers_per_minobject—Permintaan per menit yang diizinkan untuk setiap tingkatan kunci API, dengan nama tingkatan sebagai kuncinya.
rate_limit.key_tiers_per_min.hobbyistnumbercountPermintaan per menit untuk kunci tingkatan `hobbyist`.
rate_limit.key_tiers_per_min.startupnumbercountPermintaan per menit untuk kunci tingkatan `startup`.
rate_limit.key_tiers_per_min.standardnumbercountPermintaan per menit untuk kunci tingkatan `standard`.
rate_limit.key_tiers_per_min.professionalnumbercountPermintaan per menit untuk kunci tingkatan `professional`.
rate_limit.exemptarray—Pola path yang tidak dihitung terhadap batas.
rate_limit.exempt[]string—Satu pola path yang dikecualikan, misalnya `/api/coin-icon/*`.
rate_limit.headersarray—Nama header respons yang melaporkan keadaan batas laju.
rate_limit.headers[]string—Satu nama header, misalnya `X-RateLimit-Remaining`.
rate_limit.on_exceedobject—Yang dikembalikan saat batas terlampaui: status `http` dan `code` galat.
rate_limit.on_exceed.httpnumber—Status HTTP yang dikembalikan saat batas terlampaui (429).
rate_limit.on_exceed.codestring—Kode.
errorsarray—Kode galat yang dapat dikembalikan API, masing-masing dengan status HTTP, makna, dan saran percobaan ulang.
errors[]object—Satu kode galat.
errors[].codestring—Kode.
errors[].httpnumber|string—Status HTTP yang dikirim bersama kode ini; berupa teks seperti `501 / 503` jika lebih dari satu yang berlaku.
errors[].meaningstring—Makna galat tersebut.
errors[].retrystring—Saran tentang perlu tidaknya dan cara mencoba ulang.
errors[].legacyboolean—Hanya ada dan bernilai true untuk kode yang dipakai endpoint lama yang menjawab HTTP 200 dengan `success: false`. bisa tidak ada
status_legendobject—Definisi teks biasa untuk setiap status endpoint.
status_legend.availablestring—Apakah data tersedia.
status_legend.partialstring—true jika hanya sebagian dari data yang diharapkan tersedia.
status_legend.degradedstring—Definisi status `degraded`.
status_legend.downstring—Definisi status `down`.
status_legend.unavailablestring—Item yang datanya tidak tersedia, beserta alasannya. Tidak pernah dilaporkan sebagai 0.
status_legend.unknownstring—Definisi status `unknown`.
metaobject—Envelope respons ini: ID skema, sistem penghasil, stempel waktu, masa berlaku cache, dan kesegaran.
meta.schemastring—ID skema respons ini; nilainya sama dengan `schema` di tingkat teratas.
meta.sourcearray—Asal nilai tersebut.
meta.source[]object—Asal nilai tersebut.
meta.source[].systemstring—Sistem yang menghasilkan data; selalu `coinboss` untuk endpoint pusat pengembang.
meta.source[].componentstring—Komponen di balik data: probe endpoint dan patroli kualitas data.
meta.observed_atnull—Stempel waktu.
meta.received_atnumbermsStempel waktu.
meta.fetched_atnumbermsWaktu CoinBoss mengambil data dari sumber.
meta.windowstring—Jendela.
meta.cache_ttl_snumbersMasa berlaku cache sisi server untuk respons ini.
meta.qualitystring—`FRESH` jika probe endpoint melapor dalam 20 menit terakhir, selain itu `STALE`.
meta.is_staleboolean—true jika baris lebih lama daripada jendela kesegaran; baris usang tidak dipakai dalam total.
meta.fallbackstring—Catatan teks biasa tentang apa yang dikembalikan endpoint ini ketika inputnya usang atau tidak ada.

Dihasilkan 2026-11-11 23:01 UTC dari 1 respons nyata.

Contoh respons

/api/meta/catalog · Respons nyata yang direkam 2026-11-13 03:59:27 UTC. Array dan map yang panjang dipersingkat untuk tampilan: errors berisi 9 item; endpoints berisi 299 item; categories berisi 21 item.

  • {
    • "success": true,
    • "schema": "coinboss.meta.catalog/1",
    • "now": 1794542367982,
    • "api_version": "v1",
    • "catalog_version": "2026.11.12",
    • "base_path": "/api",
    • "summary": {
      • "total": 299,
      • "available": 256,
      • "partial": 19,
      • "degraded": 17,
      • "down": 6,
      • "unavailable": 1,
      • "unknown": 0
      },
    • "probe": {
      • "last_run_at": 1794542029183,
      • "age_s": 339,
      • "interval_s": 300,
      • "fresh": true,
      • "error": null
      },
    • "categories": [
      • { … 10 },
      • { … 10 }
      ],
    • "endpoints": [
      • { … 16 },
      • { … 16 }
      ],
    • "rate_limit": {
      • "window_s": 60,
      • "anonymous_per_min": 1200,
      • "scope": "per client IP for anonymous requests; per key when a CB-API-KEY header is sent",
      • "key_tiers_per_min": { … 4 },
      • "exempt": [ … 1 ],
      • "headers": [ … 4 ],
      • "on_exceed": { … 2 }
      },
    • "errors": [
      • { … 4 },
      • { … 4 }
      ],
    • "status_legend": {
      • "available": "last probe returned HTTP 200 and the response matched the documented schema",
      • "partial": "works, but exchange / field coverage is incomplete (see status_reason)",
      • "degraded": "responding, but schema drift or stale data was detected by the last probe",
      • "down": "last probe failed",
      • "unavailable": "documented for completeness; no lawful public source yet, the endpoint returns nulls or is not served",
      • "unknown": "no probe result within the last 20 minutes"
      },
    • "meta": {
      • "schema": "coinboss.meta.catalog/1",
      • "source": [ … 1 ],
      • "observed_at": null,
      • "received_at": 1794542029183,
      • "fetched_at": 1794542367982,
      • "window": "latest",
      • "cache_ttl_s": 30,
      • "quality": "FRESH",
      • "is_stale": false,
      • "fallback": "when the probe has not reported within 20 minutes every endpoint status becomes \"unknown\""
      }
    }

Detail

Autentikasi
Tidak ada. Endpoint publik.
Batas permintaan
1200 permintaan per menit per IP
Cache server
30s
Mikro-cache edge
10s
Frekuensi pembaruan
Disusun ulang saat diminta dari file katalog dan hasil probe terbaru (probe berjalan setiap 5 menit).
Sumber data
Katalog endpoint CoinBoss + sd_api_probe (hasil panggilan nyata yang dilakukan probe API).
Stempel waktu
Milidetik epoch Unix (UTC) kecuali deskripsi kolom menyatakan lain
Format respons
json
Stabilitas
Stabil
Tersedia sejak
2026-11-11

Status langsung

TersediaDiperiksa 2026-11-13 03:59:27 UTCHTTP 20010 msSkema sesuaiTitik data terbaru berusia 6m

Ketersediaan, 30 hari terakhir

100% dari 409 pemeriksaan lolos

Error

Panggilan yang gagal memiliki satu bentuk yang sama di semua endpoint. Daftar lengkapnya ada di halaman error. Error dan batas permintaan →

KodeHTTPArtiTindakan
INVALID_PARAM400Parameter wajib tidak ada atau suatu nilai tidak diterima. `param` menyebutkan nama parameternya jika diketahui.Jangan mengulang tanpa perubahan; perbaiki permintaannya.
UNAUTHORIZED401Header `CB-API-KEY` dikirim tetapi kuncinya tidak dikenal atau sudah dicabut. Data publik tidak memerlukan kunci — hapus header tersebut atau gunakan kunci yang valid.Jangan mengulang tanpa perubahan.
FORBIDDEN403Rute ini bukan bagian dari API publik (internal atau khusus akun).Jangan mengulang.
NOT_FOUND404Rute tidak dikenal, atau koin / bursa / dana yang diminta tidak ada.Jangan mengulang; periksa path dan pengenal terhadap katalog.
RATE_LIMITED429Jumlah permintaan melebihi batas per menit. `Retry-After` memberikan jumlah detik untuk menunggu.Tunggu selama `Retry-After`, lalu ulangi dengan backoff.
INTERNAL500Error server yang tidak terduga. Pesannya sengaja dibuat generik; sertakan `request_id` saat melaporkannya.Ulangi sekali setelah beberapa detik; laporkan beserta ID permintaan jika masih terjadi.
UPSTREAM_FAILED503Sumber data di balik endpoint ini tidak menjawab tepat waktu. Tidak ada angka usang atau angka pengganti yang dikembalikan sebagai gantinya.Ulangi dengan backoff; periksa halaman status.
UNAVAILABLE501 / 503Dataset untuk sementara belum siap (cache sedang diisi) atau endpoint belum memiliki sumber publik yang sah.Ulangi nanti; katalog menandai endpoint yang memang tidak tersedia secara desain.
REQUEST_FAILED200Beberapa endpoint lama menjawab HTTP 200 dengan `success: false`. Selalu periksa `success`, bukan hanya status HTTP.Bergantung pada pesannya; perlakukan sebagai permintaan yang gagal.

Coba

GET/api/meta/catalogTersedia
Parameter

Tidak ada parameter.

URL permintaanhttps://www.coinboss.com/api/meta/catalog
Pilih endpoint lalu tekan “Kirim permintaan”. Respons, header, dan waktu tempuhnya akan muncul di sini.