Referensi server
Server API
Salin halaman
The API aplikasi Anda menghubungi server sendiri dengan kunci rahasia. Verifikasi sesi, daftar produk, konfirmasi, pengiriman, dan pengembalian biaya, bayar hadiah dari pool Anda, kirim notifikasi, periksa iklan, dan daftar tabel publik.
#Dasar-dasar
| Alamat dasar | https://api.lialabs.org/api/apps/v1 |
| Otentikasi | Authorization: Bearer <your key>, kunci uji Anda (lia_test_…) atau kunci live (lia_live_…) |
| Tubuh | JSON, dengan Content-Type: application/json |
| Jumlah | Di $LIA, sebagai angka, hingga 6 tempat desimal |
| Waktu | Milidetik sejak 1970 (UTC) |
Panggil dari server Anda saja. Kunci Anda adalah rahasia: jangan pernah masukkan ke halaman Anda.
curl https://api.lialabs.org/api/apps/v1/pool \
-H "Authorization: Bearer $LIA_KEY"Sebuah helper kecil yang digunakan dalam contoh di bawah ini:
const LIA = "https://api.lialabs.org/api/apps/v1";
export async function lia(method, path, body) {
const res = await fetch(LIA + path, {
method,
headers: { Authorization: `Bearer ${process.env.LIA_KEY}`, "Content-Type": "application/json" },
body: body === undefined ? undefined : JSON.stringify(body),
});
const data = await res.json();
if (!res.ok) throw Object.assign(new Error(data.error), { status: res.status, data });
return data;
}#Kunci dan mode
Kunci hanya pernah melihat aplikasi sendiri, dan hanya mode sendiri: kunci uji melihat sesi uji, pembayaran, pemain, dan iklan; kunci live melihat yang live. Sesuatu dari mode lain adalah not_found (atau valid: false). Lihat Uji dan live.
#Kesalahan
Kesalahan menjawab dengan status 4xx dan tubuh dengan error kode, kadang-kadang dengan lebih banyak bidang:
{ "error": "pool_empty", "pool": 3.5 }| Status | Kode | Kapan |
|---|---|---|
| 401 | bad_key | Tidak ada kunci, kunci dalam bentuk yang salah, kunci yang tidak dikenal, kunci yang aktif sementara aplikasi Anda tidak'tidak hidup, atau kunci apa pun saat itu'dijeda. |
Setiap endpoint menampilkan yang sendiri. Setiap kode ada di Kode kesalahan.
#Sesi
#POST/session/verify
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/session/verify' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"session": "lias_example_session"
}'Memeriksa token sesi dari Lia.init() atau Lia.session(), dan memberi tahu Anda siapa pemiliknya.
POST /api/apps/v1/session/verify
Authorization: Bearer lia_live_…
Content-Type: application/json
{ "session": "lias_eyJhcHAiOi…" }| Bidang | Jenis | |
|---|---|---|
session | string | Token dari halaman. |
Jawaban 200 dengan cara apa pun:
{ "valid": true, "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "mode": "live", "exp": 1761998400000 }{ "valid": false }Sebuah token sah ketika Lia menandatangani, itu'untuk aplikasi Anda dan kunci Anda'mode, dan itu tidak'telah berakhir (15 menit setelah dibuat).
#Produk
#GET/products
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request GET 'https://api.lialabs.org/api/apps/v1/products' \
--header "Authorization: Bearer $LIA_KEY"Apa yang aplikasi Anda jual, dengan harga dalam Lia'catatan. Hanya produk yang aktif, termurah terlebih dahulu.
{
"products": [
{ "id": "extra-lives", "name": "3 extra lives", "price": 5, "active": true },
{ "id": "gold-pack", "name": "Gold pack", "price": 25, "active": true }
]
}#Biaya
Sebuah pembayaran pada Lia'lembar gaji. Lihat Pembayaran.
Objek biaya:
| Bidang | Jenis | |
|---|---|---|
id | string | Suka ch_9b1f…. |
playerId | string | Siapa yang membayar. |
productId | string | Apa yang mereka bayar. |
amount | nomor | Apa yang mereka bayar, dalam $LIA. |
status | string | paid, delivered atau refunded. |
mode | string | test atau live. |
createdAt | nomor | Ketika dibayar. |
deliveredAt | nomor atau null | Ketika Anda mengirimkannya. |
refundedAt | nomor atau null | Ketika dikembalikan. |
#GET/charges/:id
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request GET 'https://api.lialabs.org/api/apps/v1/charges/id_example' \
--header "Authorization: Bearer $LIA_KEY"Apakah biaya ini nyata, dibayar, dan milik siapa? Selalu periksa di sini sebelum mengirimkan: jangan pernah mengambil halaman'atau webhook'kata untuk itu.
{
"charge": {
"id": "ch_9b1f4c2e7a0d5b8f3e6a1c4d",
"playerId": "p_3f9c0a6d1b2e4f5a6b7c",
"productId": "extra-lives",
"amount": 5,
"status": "paid",
"mode": "live",
"createdAt": 1761998400000,
"deliveredAt": null,
"refundedAt": null
}
}| Status | Kode | Kapan |
|---|---|---|
| 404 | not_found | Tidak ada biaya untuk aplikasi Anda dalam kunci Anda'mode. |
#POST/charges/:id/deliver
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/charges/id_example/deliver' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Idempotency-Key: example-request-1'Menandai pembayaran yang telah dikirim, sekali Anda'telah memberikan orang tersebut apa yang mereka beli. Aman untuk diulang: mengirimkan tagihan yang sudah dikirim tidak mengubah apa pun dan menjawab yang sama. Tidak ada tubuh.
{ "charge": { "id": "ch_9b1f…", "status": "delivered", "deliveredAt": 1761998405000, "…": "…" } }| Status | Kode | Kapan |
|---|---|---|
| 404 | not_found | Tidak ada biaya dalam kunci Anda'mode. |
| 409 | refunded | Ini telah dikembalikan, jadi tidak'tidak mengirimkannya. Tubuh memiliki charge juga. |
#POST/charges/:id/refund
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/charges/id_example/refund' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Idempotency-Key: example-request-1'Memberikan $LIA kembali kepada orang tersebut, ketika Anda bisa'tidak mengirimkannya. Bekerja pada biaya berbayar atau biaya yang telah dikirimkan. Aman untuk diulang: mengembalikan biaya yang sudah dikembalikan akan menjawab dengan itu dan membayar tidak lebih. Tidak ada tubuh.
{ "charge": { "id": "ch_9b1f…", "status": "refunded", "refundedAt": 1761998410000, "…": "…" } }Harga penuh kembali ke orang tersebut'saldo mereka, dalam mode live, dari Lia'bagian dan bagi Anda. Sebuah charge.refunded webhook dikirim.
| Status | Kode | Kapan |
|---|---|---|
| 404 | not_found | Tidak ada biaya dalam kunci Anda'mode. |
#Hadiah
Lihat Pola hadiah.
#POST/rewards
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/rewards' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"playerId": "player_example",
"amount": 1,
"key": "reward-example-1",
"reason": "Level completed"
}'Membayar pemain dari aplikasi Anda'kumpulan hadiah, sekali per kunci.
POST /api/apps/v1/rewards
Authorization: Bearer lia_live_…
Content-Type: application/json
{
"playerId": "p_3f9c0a6d1b2e4f5a6b7c",
"amount": 25,
"key": "tournament-2026-11-01:p_3f9c0a6d1b2e4f5a6b7c",
"reason": "Weekly tournament, 1st place"
}| Bidang | Jenis | |
|---|---|---|
playerId | string | Pemain yang membayar. |
amount | nomor | Di $LIA, lebih dari 0 dan paling banyak 10,000, hingga 6 tempat desimal. |
key | string | Milik Anda, 1 hingga 128 huruf, angka, _, ., : dan -. Sebuah kunci membayar sekali, selamanya. Tanpa itu, Idempotency-Key header digunakan. |
reason | string | Opsional, hingga 80 karakter (lebih panjang akan dipotong). Ditampilkan di pemain's aktivitas di bawah aplikasi Anda'nama. |
Dibayar:
{ "status": "paid", "amount": 25, "pool": 975 }Kunci yang sama lagi membayar tidak apa-apa dan menjawab dengan apa yang dibayarkan yang pertama:
{ "status": "duplicate", "amount": 25, "pool": 975 }pool adalah'sisa dalam pool Anda setelah itu. Dalam mode uji, hadiahnya palsu: pool tidak'telah digunakan dan batas harian tidak't berlaku.
| Status | Kode | Kapan |
|---|---|---|
| 400 | bad_amount | amount bukan't sebuah angka di atas 0 dan hingga 10,000. |
| 400 | bad_key_field | key tidak ada atau tidak dalam bentuk yang benar. |
| 404 | unknown_player | Tidak ada pemain dalam aplikasi Anda. |
| 409 | pool_empty | Kumpulan tidak'tidak menahan amount. Tubuh memiliki pool, apa'sisa. |
| 429 | daily_limit | Ini akan membawa pemain melewati aplikasi Anda'batas harian per pemain (dalam $LIA, per UTC hari). Tubuh memiliki dailyCapPerPlayer. |
A reward.paid webhook dikirim untuk setiap hadiah yang dibayarkan (bukan untuk duplikat).
#GET/pool
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request GET 'https://api.lialabs.org/api/apps/v1/pool' \
--header "Authorization: Bearer $LIA_KEY"Apa'sisa dalam pool hadiah Anda, dan jumlah maksimum yang bisa diperoleh satu pemain dalam sehari.
{ "balance": 975, "dailyCapPerPlayer": 50, "mode": "live" }dailyCapPerPlayer adalah 0 ketika ada'tidak ada batas harian. balance adalah pool live, juga ketika Anda meminta dengan kunci uji Anda.
#Notifikasi
Lihat Notifikasi.
#POST/notifications
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/notifications' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"playerId": "player_example",
"text": "Ready for another round?",
"startParam": "round_2"
}'Mengirim notifikasi ke pemain yang mengizinkannya. Tampil di bawah aplikasi Anda'nama dan membuka aplikasi Anda dengan startParam.
POST /api/apps/v1/notifications
Authorization: Bearer lia_live_…
Content-Type: application/json
{ "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "text": "It's your move against @amara.", "startParam": "match-8k2d" }| Bidang | Jenis | |
|---|---|---|
playerId | string | Siapa yang harus diberitahu. |
text | string | 1 hingga 180 karakter. Spasi dan baris baru menjadi satu spasi. Tidak ada tautan, nomor telepon atau kata-kata yang digunakan dalam penipuan. |
startParam | string | Opsional. 1 hingga 64 huruf, angka, _ dan -. Halaman Anda membaca dari Lia.startParam. |
Dikirim:
{ "sent": true, "pushed": true }pushed adalah false ketika mencapai Lia'bel berbunyi tetapi bukan ponsel (orang tersebut memiliki Lia'mengirimkan (pushes off).
| Status | Kode | Kapan |
|---|---|---|
| 400 | bad_text | Kosong, terlalu panjang, atau tidak diizinkan. Ketika itu'apa yang dikatakan teks tersebut, problem adalah link, phone atau scam. |
| 400 | bad_start_param | startParam bukan'tidak dalam bentuk yang benar. |
| 403 | notifications_off | Aplikasi Anda mungkin tidak dapat mengirim notifikasi (jumlah harian 0). |
| 403 | not_allowed | Pemain ini tidak't diizinkan aplikasi Anda'notifikasi, atau mereka menonaktifkannya. |
| 404 | unknown_player | Tidak ada pemain, atau bukan pemain dari kunci Anda'mode mencapai (kunci uji hanya mencapai penguji Anda). |
| 429 | rate_limited | Batas tercapai. Untuk aplikasi Anda'batasannya tubuh memiliki retryAt, ketika Anda mungkin mencoba lagi. |
#Iklan
Lihat Iklan.
#POST/ads/verify
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/ads/verify' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"adId": "ad_example"
}'Apakah iklan ini benar-benar ditonton, dan oleh siapa? Periksa sebelum memberikan sesuatu untuk video berhadiah.
POST /api/apps/v1/ads/verify
Authorization: Bearer lia_live_…
Content-Type: application/json
{ "adId": "ad_8e1c4b0f2a9d47c6b3e15a07" }{ "adId": "ad_8e1c4b0f2a9d47c6b3e15a07", "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "format": "rewarded", "watched": true, "watchedAt": 1761998400000 }| Bidang | Jenis | |
|---|---|---|
adId | string | ID dari Lia.showAd(). |
playerId | string | Pemain yang ditunjukkan. Periksa itu'orang yang bertanya. |
format | string atau null | "rewarded", "rewardedInterstitial", "interstitial", "banner" atau "native" (null untuk iklan dari sebelum SDK 1.7). Hanya "rewarded" dan "rewardedInterstitial" bernilai hadiah. |
watched | boolean | Ditonton hingga selesai (atau, untuk iklan interstisial, banner, atau native, ditampilkan). |
watchedAt | nomor atau null | Kapan. |
Tanyakan dengan kunci mode iklan yang ditampilkan: iklan mode uji (selalu salah satu dari Google'iklan uji s, tidak pernah dihitung sebagai pendapatan) adalah not_found ke kunci live.
Lia tidak bisa'tidak menandai iklan sebagai digunakan saat Anda memverifikasi, jadi bayar setiap adId sekali diri Anda sendiri (gunakan ad:<adId> sebagai kunci hadiah).
| Status | Kode | Kapan |
|---|---|---|
| 404 | not_found | Tidak ada iklan untuk aplikasi Anda dalam kunci Anda'mode. |
#Lobby
Tabel publik yang dapat ditemukan oleh siapa saja di Lia. Lia hanya menyimpan daftar: server Anda menjalankan tabel tersebut. Lihat Tabel publik.
Objek tabel:
| Bidang | Jenis | |
|---|---|---|
id | string | Tabel Anda'id. |
game | string | Aplikasi Anda'id. |
host | objek | { name }: host's Lia nama pengguna. |
seats, taken | nomor | Total kursi, dan yang sudah diambil. |
title | string atau null | Difilter seperti semua yang dibaca orang-orang di Lia. |
stake, pot | nomor | Di LIA, untuk ditampilkan. |
createdAt, expiresAt | nomor |
#POST/lobby/tables
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/lobby/tables' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"tableId": "table_example",
"hostPlayerId": "player_example",
"seats": 2,
"taken": 1,
"title": "A friendly game",
"stake": 1,
"pot": 1,
"expiresIn": 1800
}'Mendaftarkan meja yang'menunggu pemain, atau memperbarui daftarnya (tetap di tempatnya dalam daftar). Daftarkan kembali saat kursinya berubah.
{ "tableId": "t8k2d", "hostPlayerId": "p_3f9c0a6d1b2e4f5a6b7c", "seats": 2, "taken": 1, "title": "Quick game", "stake": 5, "expiresIn": 900 }| Bidang | Jenis | |
|---|---|---|
tableId | string | Milik Anda, 1 hingga 57 huruf, angka, _ dan - (pendek cukup untuk muat startParam lobby-<id>). |
hostPlayerId | string | Pemain yang menyelenggarakan acara tersebut. |
seats | nomor | Opsional. 2 hingga 10, 2 secara default. |
taken | nomor | Opsional. Kursi terisi, pemilik'termasuk: 1 ke seats, 1 secara default. |
title | string | Opsional, hingga 40 karakter. |
stake, pot | nomor | Opsional. Dalam LIA, 0 hingga 10,000, ditampilkan hanya dalam daftar. Lia tidak'tidak menahan atau memindahkan mereka: taruh taruhan dengan produk Anda sendiri. |
expiresIn | nomor | Opsional. Detik durasi listing, 60 hingga 3600, 1800 secara default. |
{ "listed": true, "tableId": "t8k2d", "seats": 2, "taken": 1, "expiresAt": 1761999300000 }Kapan taken mencapai seats, tabel diambil dari daftar itu, dan jawabannya adalah { "listed": false }.
| Status | Kode | Kapan |
|---|---|---|
| 400 | bad_table_id, bad_seats, bad_taken, bad_title, bad_amount, bad_expires_in | Sebuah bidang tidak'tidak cocok. |
| 404 | unknown_player | Tidak ada host dalam aplikasi Anda. |
| 429 | too_many_tables | Host sudah memiliki 3 meja terbuka di aplikasi Anda. Tubuh memiliki max. |
#GET/lobby/tables
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request GET 'https://api.lialabs.org/api/apps/v1/lobby/tables' \
--header "Authorization: Bearer $LIA_KEY"Aplikasi Anda'buka tabel di kunci Anda'mode, terbaru dulu, hingga 200: setiap host'dengan blok yang disisihkan (yang'untuk setiap pemain'tampilan miliknya).
{ "tables": [{ "id": "t8k2d", "game": "your-app", "host": { "name": "amara" }, "seats": 2, "taken": 1, "title": "Quick game", "stake": 5, "pot": 0, "createdAt": 1761998400000, "expiresAt": 1761999300000 }] }#POST/lobby/tables/:id/sit
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/lobby/tables/id_example/sit' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"playerId": "player_example"
}'Menempatkan pemain di meja yang terdaftar, sebelum server Anda mengizinkannya. Lia menolak orang yang diblokir oleh pemilik atau yang memblokir pemilik. Ketika kursi terakhir diambil, meja itu keluar dari daftar.
{ "playerId": "p_8a1e0c4d2b7f9e3a5c6d" }{ "seated": true, "taken": 2, "seats": 2, "full": true }| Status | Kode | Kapan |
|---|---|---|
| 404 | unknown_player | Tidak ada pemain dalam aplikasi Anda. |
| 404 | not_found | Tabel tidak'tidak terdaftar, telah berakhir, atau host dan pemain saling memblokir satu sama lain. |
| 409 | full | Setiap kursi terisi. |
| 409 | own_table | Pemain adalah tuan rumah. |
#DELETE/lobby/tables/:id
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request DELETE 'https://api.lialabs.org/api/apps/v1/lobby/tables/id_example' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Idempotency-Key: example-request-1'Mengambil tabel dari daftar, ketika permainannya dimulai atau ditutup. Aman untuk diulang.
{ "removed": true }removed adalah false ketika tidak'tidak terdaftar.
#Mencoba lagi
Kirim sebuah Idempotency-Key header dengan setiap POST, dan yang sama lagi pada setiap ulang panggilan permintaan tersebut. Sebuah ulang panggilan kemudian tidak pernah melakukan apa pun dua kali, dan menjawab seperti permintaan pertama.
POST /api/apps/v1/notifications
Authorization: Bearer lia_live_…
Content-Type: application/json
Idempotency-Key: 6f1c2a9e-0b7d-4c35-9e1a-2d8f4b7c3a10
{ "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "text": "It's your move." }- Kunci apa pun yang Anda suka, 1 hingga 128 huruf, angka,
_,-,.dan:. Satu UUID per operasi adalah benar. - Permintaan pertama berjalan. Jika berhasil (2xx), jawabannya disimpan selama 24 jam, dan ulang dengan kunci yang sama dan tubuh yang sama akan mendapatkan jawaban yang sama lagi, dengan header
Idempotent-Replayed: true. - Sebuah penolakan tidak menyimpan apa pun (4xx atau 5xx), jadi Anda bisa memperbaiki penyebabnya dan coba lagi dengan kunci yang sama.
- Kunci yang sama dengan tubuh yang berbeda adalah
422 idempotency_key_reused. - Kunci yang sama sementara yang pertama masih berjalan adalah
409 idempotency_key_in_usedenganRetry-After: 1. Ulang coba, dan Anda mendapatkan yang pertama'jawaban. - Kunci adalah aplikasi Anda'miliknya, dan uji coba serta live menjaga milik mereka sendiri. Kunci yang sama di endpoint lain adalah kunci yang berbeda.
Tanpa header, sebagian besar endpoint masih aman untuk diulang: bacaan tidak mengubah apa pun, pengiriman dan pengembalian dana aman untuk diulang, dan hadiah dibayarkan sekali per key. Notifikasi adalah pengecualian: tanpa header, ulang coba mengirim notifikasi lagi.
Diterjemahkan otomatis. Bahasa Inggris adalah sumber kebenaran. Baca dalam Bahasa Inggris