Bagaimana API bekerja

Endpoint API

Semua permintaan API je harus dibuat ke endpoint API berikut:

https://api.cryptohopper.com/v1/

Metode Request yang Didukung

GET Gunakan GET untuk mengambil sumber daya atau sekumpulan sumber daya (seperti daftar semua bot trading je, order je saat ini, atau daftar transaksi terbaru je). Metode ini aman dan idempoten.

POST Gunakan POST untuk membuat sumber daya. Contoh: tempatkan order beli/jual baru, buat bot trading baru.

PATCH Gunakan PATCH untuk memperbarui sumber daya. Contohnya: mulai atau hentikan bot trading je, atau perbarui detail pribadi je. Dengan metode ini je hanya perlu menyediakan bidang yang je ingin modifikasi di badan permintaan.

DELETE Gunakan HAPUS saat je ingin menghapus sumber daya.

Parameter Permintaan

Ada empat jenis parameter yang kami gunakan di API kami: jalur, string kueri, header, dan parameter badan permintaan. Parameter badan permintaan adalah data yang di-posting dalam badan permintaan JSON untuk permintaan POST dan PATCH. Parameter header jelas parameter yang perlu di-posting di header. Lebih banyak info tentang parameter Header, Jalur, dan String Kueri bisa je temukan di bawah ini.

Parameter Header

Setiap permintaan ke API kita perlu diautentikasi dengan mengirim nilai-nilai berikut di header:

  • access-token - Token akses je diterima melalui otentikasi Oauth2

Parameter Jalur

Ini adalah parameter yang disuplai di URI endpoint. Contohnya endpoint Hopper GET:

https://api.cryptohopper.com/v1/hopper/{hopper_id}

Untuk mengambil bot trading berdasarkan ID uniknya, je perlu mengganti nilai ID di tempat penampung {hopper_id}. Contohnya, untuk mengambil bot trading dengan ID 37, je akan meminta URL berikut:

https://api.cryptohopper.com/v1/hopper/37

Beberapa titik akhir membutuhkan beberapa parameter. Misalnya jika je ingin mengembalikan order spesifik dari Hopper sebelumnya, je perlu memanggil URL berikut:

https://api.cryptohopper.com/v1//hopper/{hopperId}/order/{orderId}

Dan dengan mengganti parameter dengan ID Hopper dan ID Order, je akan mendapatkan:

https://api.cryptohopper.com/v1//hopper/37/order/231

Untuk daftar parameter yang dibutuhkan di setiap endpoint API, silakan merujuk ke panduan referensi API kami.

Parameter Query String

Kami menggunakan jenis parameter ini dalam permintaan GET untuk penyaringan dan/atau pengurutan data. Parameter ini tidak ditentukan di jalur, tetapi sebagai serangkaian nilai yang dipisahkan oleh karakter ‘&’ di string URL.

Misalnya untuk mengambil order beli Bitcoin bot trading, je bisa memanggil endpoint Hopper Order seperti ini:

https://api.cryptohopper.com/v1/hopper/37/order/?order_type=buy&coin=btc
        

Dengan melihat referensi API kami, je bisa lihat bahwa dalam kasus ini, parameter order_type bisa bernilai ‘beli’ atau ‘jual’, dan parameter coin bisa berupa kode mata uang kripto huruf kecil apa saja.

Format Jawaban

Semua respons berbentuk objek JSON. Maka, tipe MIME yang je temukan di semua respons kami adalah application/json. Silakan merujuk ke dokumentasi referensi API kami untuk format respons JSON spesifik pada body setiap permintaan dan respons.

Kode Tanggapan HTTP

Kami menggunakan kode status respons yang didefinisikan oleh standar RFC 2616 dan RFC 6585..

200 - OK Permintaan berhasil. Klien menerima hasil permintaan di dalam body dan header respons.

201 – Created Permintaan diterima dan sumber daya baru dibuat.

202 – Accepted Permintaan diterima untuk diproses, tapi prosesnya belum selesai.

204 – No Content Server berhasil memproses permintaan tapi tidak mengembalikan konten.

304 – Not Modified Sumber daya tidak dimodifikasi sejak versi yang ditentukan oleh header permintaan If-Modified-Since atau If-None-Match. Tidak perlu mengirimkan ulang sumber daya karena klien masih punya salinan yang sudah diunduh sebelumnya.

Kode Kesalahan HTTP

400 – Bad Request Server tidak dapat atau tidak akan memproses permintaan karena kesalahan klien yang jelas. Isi pesan akan mengembalikan informasi kesalahan.

400 – Bad Request Server tidak dapat atau tidak mau memproses permintaan karena kesalahan klien yang jelas. Isi pesan akan mengembalikan informasi kesalahan.

401 – Unauthorized Permintaan memerlukan otentikasi pengguna dan ditolak karena kredensial API tidak valid atau hilang.

403 – Forbidden Server mengerti permintaan je, tapi menolak untuk memenuhinya karena je gak punya izin akses atau kredensial je telah dicabut.

404 – Not found Sumber daya yang diminta tidak ditemukan. Kesalahan ini bisa karena kondisi sementara atau permanen.

405 – Method Not Allowed Metode permintaan yang digunakan tidak didukung oleh titik akhir API yang diminta.

405 – Method Not Allowed Metode permintaan yang digunakan tidak didukung oleh titik akhir API yang diminta.

429 – Too Many Request Pengguna melebihi batas kecepatan permintaan API. Periksa header Retry-After yang dikembalikan untuk mengetahui berapa detik yang harus ditunggu untuk membuat permintaan baru. Silakan konsultasikan bagian batas kecepatan kami untuk mengetahui batas permintaan saat ini.

500 – Internal Server Error Terjadi kesalahan di server kami yang mencegahnya merespons permintaan je. Pengembang kami akan kehilangan kopi gratis selama seminggu sebagai peringatan pertama...

503 – Service Unavailable Server kita mungkin mengalami masalah, dan tidak dapat memenuhi permintaan je.

Pesan kesalahan

Setiap kali API mengembalikan kode kesalahan, akan menempelkan objek JSON dengan deskripsi kesalahan dalam tubuhnya. Pesan kesalahan akan terlihat seperti ini:

{
            "status": 400,
            "error": 1,
            "message": "Missing required request parameters: [access_token]"
        }
        

Batasan Tarif

API kita punya batasan permintaan untuk memastikan semua pengguna mendapatkan alokasi bandwidth yang adil. Batasan saat ini adalah 2 permintaan per detik per pengguna, kecuali untuk penempatan order beli. Untuk order beli, maksimal satu order setiap 8 detik.

Jika je melebihi jumlah permintaan per detik, je akan mendapatkan kode respons 429 error. Silakan cek header Retry-After pada respons, yang berisi jumlah detik yang harus ditunggu sebelum melakukan permintaan selanjutnya.