LiaGeliştiriciler

Sunucu referansı

The API uygulamanızın kendi sunucu çağrısını gizli anahtarla yapar. Oturumları doğrulayın, ürünleri listele, onayla, teslim et ve ücretleri iade et, kuyunuzdan ödülleri ödemek, bildirimler göndermek, reklamları kontrol etmek ve kamuya açık tabloları listelemek.

#Temeller

Temel adreshttps://api.lialabs.org/api/apps/v1
Kimlik doğrulamaAuthorization: Bearer <your key>, test anahtarınız (lia_test_…) veya canlı anahtar (lia_live_…)
VücutlarJSON, ile Content-Type: application/json
Miktarlar$LIA içinde, sayılar 6 ondalık basamağa kadar
Zamanlar1970'dan itibaren milisaniye (UTC)

Sadece sunucunuzdan çağırın. Anahtarınız bir sırdır: asla sayfanızda kullanmayın.

curl https://api.lialabs.org/api/apps/v1/pool \
  -H "Authorization: Bearer $LIA_KEY"

Aşağıdaki örneklerde kullanılan küçük bir yardımcı:

lia.js
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;
}

#Anahtarlar ve modlar

Bir anahtar sadece kendi uygulamasını görür ve sadece kendi modunu: test anahtarı test oturumlarını, ödemeleri, oyuncuları ve reklamları görür; canlı anahtar canlı olanları görür. Diğer moddan bir şey not_found (veya valid: false. Gör Test ve canlı.

#Hatalar

Hatalar 4xx durumu ve bir error kod, bazen daha fazla alanla:

{ "error": "pool_empty", "pool": 3.5 }
DurumKodZaman
401bad_keyAnahtar yok, yanlış şekilli bir anahtar, bilinmeyen bir anahtar, uygulamanızda canlı bir anahtar'canlı değil, veya canlıyken herhangi bir tuşa bas.'duraklatıldı.

Her uç nokta kendi listesini gösterir. Her kod Hata kodları.

#Oturumlar

#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"
}'
Oyunda aç

Bir oturum belirteci kontrol eder Lia.init() veya Lia.session(), ve onun kim olduğunu söyler.

POST /api/apps/v1/session/verify
Authorization: Bearer lia_live_…
Content-Type: application/json

{ "session": "lias_eyJhcHAiOi…" }
AlanTür
sessiondizeSayfadaki token.

Cevaplar 200 her iki yönden de:

{ "valid": true, "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "mode": "live", "exp": 1761998400000 }
{ "valid": false }

Bir token geçerlidir, Lia imzaladığında, o'uygulamanız ve anahtarınız için'modu ve onun'sona erdi (15 dakika sonra oluşturuldu).

#Ürünler

#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"
Oyunda aç

Uygulamanızın Lia'daki fiyatlarla sattığı şey'kayıtlar. Sadece etkin ürünler, en ucuzdan en pahalıya doğru.

{
  "products": [
    { "id": "extra-lives", "name": "3 extra lives", "price": 5, "active": true },
    { "id": "gold-pack", "name": "Gold pack", "price": 25, "active": true }
  ]
}

#Yüklemler

Bir Lia üzerindeki bir ödeme.'ödeme sayfası. Görüntüle Ödemeler.

Yükleme nesnesi:

AlanTür
iddizeBeğen ch_9b1f….
playerIddizeKim ödedi.
productIddizeNe ödediler.
amountsayıNe ödediler, $LIA ile.
statusdizepaid, delivered veya refunded.
modedizetest veya live.
createdAtsayıNe zaman ödenmiş.
deliveredAtsayı veya nullOnu teslim ettiğiniz zaman.
refundedAtsayı veya nullNe zaman iade edilmiş.

#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"
Oyunda aç

Bu ücret gerçek mi, ödenmiş mi ve kime ait? Teslim etmeden önce her zaman burayı kontrol edin: sayfayı asla almayın'veya bir webhook'bunun için bir kelime.

{
  "charge": {
    "id": "ch_9b1f4c2e7a0d5b8f3e6a1c4d",
    "playerId": "p_3f9c0a6d1b2e4f5a6b7c",
    "productId": "extra-lives",
    "amount": 5,
    "status": "paid",
    "mode": "live",
    "createdAt": 1761998400000,
    "deliveredAt": null,
    "refundedAt": null
  }
}
DurumKodZaman
404not_foundUygulamanız için anahtarınızda bu tür bir ücret yok'modu.

#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'
Oyunda aç

Bir ödeme teslim edildiğini işaretler, bir kez'kişiye ne satın aldıysa onu verdi. Tekrarlamak güvenlidir: teslim edilen bir ücret tekrar teslim edilirse hiçbir şey değişmez ve aynı cevap verilir. Hiçbir kimse.

{ "charge": { "id": "ch_9b1f…", "status": "delivered", "deliveredAt": 1761998405000, "…": "…" } }
DurumKodZaman
404not_foundAnahtarınızda bu tür bir ücret yok'modu.
409refundedİade edildi, bu yüzden'teslim et. Vücutta charge de.

#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'
Oyunda aç

Zamanınız olduğunda $LIA'u kişiye geri verin'aldığı şeyi teslim et. Ücretli veya teslim edilmiş bir ücretle çalışır. Tekrar yapmak güvenlidir: iade edilmiş bir ücreti iade etmek, ona cevap verir ve hiçbir şey ödemaz. Hiçbir vücut.

{ "charge": { "id": "ch_9b1f…", "status": "refunded", "refundedAt": 1761998410000, "…": "…" } }

Tam fiyat, kişiye geri döner'u bakiye, canlı modda Lia'dan'parça ve payınız. Bir charge.refunded webhook gönderilir.

DurumKodZaman
404not_foundAnahtarınızda bu tür bir ücret yok'modu.

#Ödüller

Bak Ödül havuzları.

#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"
}'
Oyunda aç

Uygulamanızdan bir oyuncuya ödeme yapar'ödül havuzu, her anahtar için bir kez.

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"
}
AlanTür
playerIddizeÖdemek için oyuncu.
amountsayı$LIA içinde, 0'den fazla ve 10,000,'ye kadar 6 ondalık basamağa kadar
keydizeSizin, 1 ile 128 harfler, rakamlar, _, ., : ve -. Bir anahtar bir kez öder, her zaman. Onun olmadan, Idempotency-Key başlık kullanılır.
reasondizeSeçmeli, 80 karaktere kadar (daha uzun olan kesilir). Oyuncuda gösterilir's uygulamanızın etkinliği altında'adı.

Ödeme:

{ "status": "paid", "amount": 25, "pool": 975 }

Aynı anahtar tekrar ödemeyi ve ilkinin ödediğine cevap verir:

{ "status": "duplicate", "amount": 25, "pool": 975 }

pool ne demektir'sol, kuyu içinde. Test modunda ödül hayali: kuyu değildir'kullanıldı ve günlük limit yok't uygulandı.

DurumKodZaman
400bad_amountamount değildir't 0 ve 10,000. arasında bir sayı
400bad_key_fieldkey eksik veya doğru formda değildir.
404unknown_playerUygulamanızda bu tür bir oyuncu yok.
409pool_emptyKuyruk değil'tut amount. Vücutta pool, ne'sol.
429daily_limitÜç format'günde ki limiti oyuncu başına ( $LIA , UTC günde bir). Cisim has dailyCapPerPlayer.

A reward.paid webhook, her ödüllendirme için (yinelenenler için değil) gönderilir.

#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"
Oyunda aç

Ne'sol, ödül kuyunuzda ve bir oyuncunun günde alabileceği en fazlası.

{ "balance": 975, "dailyCapPerPlayer": 50, "mode": "live" }

dailyCapPerPlayer dır 0 iken'hayır günlük limit. balance canlı havuzdur, test anahtarınızla sorduğunuzda da aynıdır.

#Bildirimler

Bak Bildirimler.

#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"
}'
Oyunda aç

İzin veren bir oyuncuya bildirim gönderir. Uygulamanızın altında görünür'adı ve uygulamanızı açar, sizinle birlikte 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" }
AlanTür
playerIddizeKim bildirilmeli.
textdize1 ile 180 karakter. Boşluklar ve yeni satırlar tek boşluk haline gelir. Bağlantılar, telefon numaraları veya sahtekarlıkta kullanılan kelimeler yok.
startParamdizeSeçmeli. 1 ile 64 harf, rakam, _ ve -. Sayfanız bunu Lia.startParam.

Gönderildi:

{ "sent": true, "pushed": true }

pushed dır false zaman Lia ulaştı'u zil ama telefon değil (kişinin Lia var'itme kapatıldı).

DurumKodZaman
400bad_textBoş, çok uzun, ya da izin verilmiyor. Zaman'metnin ne söylediğine göre, problem dır link, phone veya scam.
400bad_start_paramstartParam değildir'doğru şekildedir.
403notifications_offUygulamanız bildirim gönderemez (günlük sayısı 0'dır).
403not_allowedBu oyuncunun't uygulamanız için izin verilir'bildirimlerini, veya onları durdurdular.
404unknown_playerBu tür bir oyuncu yok, veya anahtarınızla bir oyuncu değil'modu erişir (bir test anahtarı sadece test kullanıcılarına erişim sağlar).
429rate_limitedBir sınır aşıldı. Uygulamanız için'kendi sınırları vücutta retryAt, tekrar deneyebileceğiniz zaman.

#Reklamlar

Bak Reklamlar.

#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"
}'
Oyunda aç

Bu reklam gerçekten izlendi mi ve kim tarafından? Ödül video için herhangi bir şey vermeden önce kontrol edin.

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 }
AlanTür
adIddizeid'den Lia.showAd().
playerIddizeOyuncu gösterildi. Kontrol et'soru soran kişi.
formatdize veya null"rewarded", "rewardedInterstitial", "interstitial", "banner" veya "native" (SDK 1.7'den önceki reklamlar için null). Sadece "rewarded" ve "rewardedInterstitial" bir ödüre değerdir.
watchedmantıksal değerBitene kadar izlendi (veya arka plan, banner veya doğal reklam için, gösterildi).
watchedAtsayı veya nullZaman

Reklamın gösterildiği modun anahtarını kullanarak sor: test modu reklamı (her zaman Google'dan biri)'test reklamları, kazançlara dahil edilmez) budur not_found canlı anahtara.

Lia yapamaz'bir reklamı kullanılmış olarak işaretlersiniz, bu yüzden her birini ödersiniz. adId kendinizi (kullan ad:<adId> ödül anahtarı).

DurumKodZaman
404not_foundUygulamanız için anahtarınızda bu tür bir reklam yok'modu.

#Lobby

Kamuya açık tablolar Lia üzerindeki herkesin bulabileceği. Lia sadece listeyi korur: sunucunuz tabloyu çalıştırır. Bakınız Kamuya açık tablolar.

Tablo nesnesi:

AlanTür
iddizeTablonuz's id.
gamedizeSenin uygulaman's id.
hostnesne{ name }: ana bilgisayar's Lia kullanıcı adı.
seats, takensayıToplam koltuk sayısı ve alınan.
titledize veya nullHer şey Lia'da okunanlar gibi filtrelenir.
stake, potsayıLIA içinde, göstermek için.
createdAt, expiresAtsayı

#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
}'
Oyunda aç

Şunun bir masasını listeler'oyuncuları bekliyor, veya listesini günceller (listede aynı yerini korur). Koltukları değiştiğinde listeyi tekrar yayınlayın.

{ "tableId": "t8k2d", "hostPlayerId": "p_3f9c0a6d1b2e4f5a6b7c", "seats": 2, "taken": 1, "title": "Quick game", "stake": 5, "expiresIn": 900 }
AlanTür
tableIddizeSizin, 1 ile 57 harfler, rakamlar, _ ve - (startParam sığacak kadar kısa lobby-<id>).
hostPlayerIddizeOyuncu ev sahibi.
seatssayıSeçmeli. 2 ile 10, 2 varsayılan olarak.
takensayıSeçmeli. Yerler dolduruldu, sahiplik's dahil edilmiştir: 1 ile seats, varsayılan olarak 1.
titledizeSeçmeli, 40 karaktere kadar.
stake, potsayıSeçmeli. LIA'da, 0 ile 10,000, sadece listede gösterilir. Lia değil'bunları tutun veya hareket ettirin: kendi ürününüzle stake ücreti alın.
expiresInsayıSeçmeli. Listelenme süresi saniye cinsinden, 60 ile 3600, 1800 varsayılan olarak.
{ "listed": true, "tableId": "t8k2d", "seats": 2, "taken": 1, "expiresAt": 1761999300000 }

Zaman taken ulaşır seats, tablo listeden çıkarılır ve cevap { "listed": false }.

DurumKodZaman
400bad_table_id, bad_seats, bad_taken, bad_title, bad_amount, bad_expires_inBir alan yok'sığasın.
404unknown_playerUygulamanızda bu tür bir sunucu yok.
429too_many_tablesAna makine zaten uygulamanızda 3 açık tabloları vardır. Vücutta 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"
Oyunda aç

Senin uygulaman'sizin anahtarınızda açık masalar'modu, en yeni ilk, 200 kadar: her sunucu'blokların yanına konulduğu (o'her oyuncu için'kendi görünümü).

{ "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"
}'
Oyunda aç

Oyuncuyu listedeki bir masaya oturtur, ancak sunucunuz onu içeri almadan önce. Lia, sahibin engellediği veya sahibi engellediği kişileri reddeder. Son koltuk alındığında masa listeden çıkar.

{ "playerId": "p_8a1e0c4d2b7f9e3a5c6d" }
{ "seated": true, "taken": 2, "seats": 2, "full": true }
DurumKodZaman
404unknown_playerUygulamanızda bu tür bir oyuncu yok.
404not_foundTablo, listeden ayrıldı'listelenmedi, bitti veya sahibin ve oyuncu birbirlerini engelledi.
409fullHer koltuk doludur.
409own_tableOyuncu ev sahibidir.

#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'
Oyunda aç

Oyun başladığında veya kapatıldığında listeden bir masa kaldırır. Tekrar etmek güvenlidir.

{ "removed": true }

removed dır false zaman değildi'listelenmedi.

#Yeniden deneme

Bir tane gönder Idempotency-Key her başlıkla POST, ve aynı anahtarı o istekteki her yeniden denemede tekrar kullanır. Bir yeniden deneme asla aynı şeyi iki kez yapmaz ve ilk istek gibi cevaplar.

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." }
  • Herhangi bir anahtarınızı isterseniz, 1 harfler, rakamlar, 128 arasında _, -, . ve :. Her işlem için bir UUID doğruyu.
  • İlk istek çalışır. Eğer başarılı olursa (2xx), cevabı 24 saat boyunca saklar ve aynı anahtar ve aynı gövdeyle tekrar denerseniz, başlıkla aynı cevabı alırsınız Idempotent-Replayed: true.
  • Bir reddetme hiçbir şeyi tutmaz (4xx veya 5xx), bu yüzden aynı anahtarı kullanarak sorunu düzeltip tekrar deneyebilirsiniz.
  • Aynı anahtar, farklı bir içerikle dır 422 idempotency_key_reused.
  • Aynı anahtar, ilk işlem hala çalışırken dır 409 idempotency_key_in_use ile Retry-After: 1. Yeniden deneyin ve ilkini alırsınız's cevap.
  • Anahtarlar uygulamanızın'kendi, ve aynı anahtar başka bir uç noktada başka bir anahtardır. Aynı anahtar başka bir uç noktada başka bir anahtardır.

Başlık olmadan, çoğu uç nokta yine de yeniden denenebilir: okumalar hiçbir şeyi değiştirmez, teslim ve iade güvenli tekrar edilebilir ve ödüller her biri için bir kez ödenir key. Bildirimler istisnadır: başlık olmadan, bir yeniden deneme bildirimi tekrar gönderir.

Otomatik çeviri. İngilizce, doğru kaynaktır. İngilizce olarak oku

Her sayfa, yöntem ve uç noktayı aramak için yazın.