Tham chiếu máy chủ
Máy chủ API
Sao chép trang
Cái API ứng dụng của bạn gọi máy chủ riêng của nó với khóa bí mật. Xác minh phiên, liệt kê sản phẩm, xác nhận, giao hàng và hoàn tiền, thanh toán phần thưởng từ quỹ của bạn, gửi thông báo, kiểm tra quảng cáo và liệt kê bảng công khai.
#Các nguyên tắc cơ bản
| Địa chỉ cơ bản | https://api.lialabs.org/api/apps/v1 |
| Xác thực | Authorization: Bearer <your key>, khóa kiểm tra của bạn (lia_test_…) hoặc khóa live (lia_live_…) |
| Thân thể | JSON, với Content-Type: application/json |
| Số lượng | Trong $LIA, dưới dạng số, đến 6 chữ số thập phân |
| Thời gian | Miligiây kể từ 1970 (UTC) |
Gọi nó từ máy chủ của bạn chỉ. Khóa của bạn là bí mật: đừng bao giờ đặt nó trong trang của bạn.
curl https://api.lialabs.org/api/apps/v1/pool \
-H "Authorization: Bearer $LIA_KEY"Một trợ lý nhỏ được sử dụng trong các ví dụ dưới đây:
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;
}#Khóa và chế độ
Một khóa chỉ bao giờ nhìn thấy ứng dụng riêng của nó, và chỉ chế độ riêng của nó: khóa thử nghiệm nhìn thấy các phiên thử nghiệm, thanh toán, người chơi và quảng cáo; khóa live nhìn thấy các phiên live. Một thứ từ chế độ khác là not_found (hoặc valid: false). Xem Kiểm tra và trực tiếp.
#Lỗi
Lỗi trả lời với mã trạng thái 4xx và một nội dung có một error mã, đôi khi với nhiều trường hơn:
{ "error": "pool_empty", "pool": 3.5 }| Trạng thái | Mã | Khi nào |
|---|---|---|
| 401 | bad_key | Không có khóa, một khóa có hình dạng sai, một khóa không biết, một khóa đang hoạt động khi ứng dụng của bạn không'trực tiếp, hoặc bất kỳ phím nào trong khi nó'đang tạm dừng. |
Mỗi điểm cuối đều liệt kê riêng của nó. Mỗi mã đều ở trong Mã lỗi.
#Phiên
#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"
}'Kiểm tra một token phiên đăng nhập từ Lia.init() hoặc Lia.session(), và cho bạn biết ai sở hữu nó.
POST /api/apps/v1/session/verify
Authorization: Bearer lia_live_…
Content-Type: application/json
{ "session": "lias_eyJhcHAiOi…" }| Trường | Loại | |
|---|---|---|
session | chuỗi | Tiền tệ từ trang. |
Trả lời 200 bất kể cách nào:
{ "valid": true, "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "mode": "live", "exp": 1761998400000 }{ "valid": false }Một mã thông báo hợp lệ khi Lia ký nó, nó'cho ứng dụng của bạn và khóa của bạn'chế độ, và nó không'đã kết thúc (15 phút sau khi được tạo).
#Sản phẩm
#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"Điều mà ứng dụng của bạn bán, với giá trong Lia'các bản ghi. Chỉ các sản phẩm đang hoạt động, giá rẻ nhất trước.
{
"products": [
{ "id": "extra-lives", "name": "3 extra lives", "price": 5, "active": true },
{ "id": "gold-pack", "name": "Gold pack", "price": 25, "active": true }
]
}#Phí
Một khoản thanh toán trên Lia'bảng thanh toán của bạn. Xem Thanh toán.
Đối tượng phí:
| Trường | Loại | |
|---|---|---|
id | chuỗi | Thích ch_9b1f…. |
playerId | chuỗi | Ai đã thanh toán. |
productId | chuỗi | Cái gì họ đã trả |
amount | số | Cái gì họ đã trả, bằng $LIA. |
status | chuỗi | paid, delivered hoặc refunded. |
mode | chuỗi | test hoặc live. |
createdAt | số | Khi nó được thanh toán. |
deliveredAt | số hoặc null | Khi bạn đã giao hàng. |
refundedAt | số hoặc null | Khi nó được hoàn tiền. |
#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"Khoản phí này có thực sự được thanh toán và thuộc về ai không? Luôn kiểm tra ở đây trước khi giao hàng: đừng bao giờ lấy trang'hoặc một webhook'mà từ để chỉ nó.
{
"charge": {
"id": "ch_9b1f4c2e7a0d5b8f3e6a1c4d",
"playerId": "p_3f9c0a6d1b2e4f5a6b7c",
"productId": "extra-lives",
"amount": 5,
"status": "paid",
"mode": "live",
"createdAt": 1761998400000,
"deliveredAt": null,
"refundedAt": null
}
}| Trạng thái | Mã | Khi nào |
|---|---|---|
| 404 | not_found | Không có khoản phí nào cho ứng dụng của bạn trong khóa của bạn'chế độ. |
#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'Ghi nhận một khoản phí đã được giao, một khi bạn'đã trao cho người đó những gì họ đã mua. An toàn để lặp lại: việc giao hàng một khoản phí đã giao không thay đổi gì và trả lời như nhau. Không có cơ thể.
{ "charge": { "id": "ch_9b1f…", "status": "delivered", "deliveredAt": 1761998405000, "…": "…" } }| Trạng thái | Mã | Khi nào |
|---|---|---|
| 404 | not_found | Không có khoản phí nào trong khóa của bạn'chế độ. |
| 409 | refunded | Nó đã được hoàn tiền, vì vậy không'để giao nó. Cơ thể có charge cũng vậy. |
#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'Trả lại $LIA cho người đó, khi bạn có thể'để giao nó. Làm việc với phí được trả hoặc phí đã giao. An toàn để lặp lại: hoàn tiền cho phí đã hoàn tiền sẽ trả lại và không trả thêm gì nữa. Không có cơ thể.
{ "charge": { "id": "ch_9b1f…", "status": "refunded", "refundedAt": 1761998410000, "…": "…" } }Giá đầy đủ được hoàn lại cho người'số dư, trong chế độ trực tiếp, ngoài Lia'phần của bạn và phần của bạn. Một charge.refunded webhook được gửi.
| Trạng thái | Mã | Khi nào |
|---|---|---|
| 404 | not_found | Không có khoản phí nào trong khóa của bạn'chế độ. |
#Thưởng
Xem Ngân sách thưởng.
#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"
}'Trả tiền cho người chơi từ ứng dụng của bạn'ngân sách thưởng, một lần mỗi khóa.
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"
}| Trường | Loại | |
|---|---|---|
playerId | chuỗi | Người chơi để thanh toán. |
amount | số | Trong $LIA, lớn hơn 0 và tối đa 10,000, đến 6 chữ số thập phân. |
key | chuỗi | Của bạn, 1 đến 128 các chữ cái, chữ số, _, ., : và -. Một khóa thanh toán một lần, mãi mãi. Không có nó, thì Idempotency-Key tiêu đề được sử dụng. |
reason | chuỗi | Tùy chọn, tối đa 80 ký tự (dài hơn sẽ bị cắt). Được hiển thị trong người chơi's hoạt động.'tên. |
Thanh toán:
{ "status": "paid", "amount": 25, "pool": 975 }Cùng một khóa lần nữa không trả gì và trả lời bằng những gì khóa đầu tiên đã trả:
{ "status": "duplicate", "amount": 25, "pool": 975 }pool là gì'bên trái trong quỹ của bạn sau đó. Trong chế độ thử nghiệm, phần thưởng là giả: quỹ'đã sử dụng và giới hạn hàng ngày không't áp dụng.
| Trạng thái | Mã | Khi nào |
|---|---|---|
| 400 | bad_amount | amount không't một số lớn hơn 0 và lên đến 10,000. |
| 400 | bad_key_field | key bị thiếu hoặc không ở đúng dạng. |
| 404 | unknown_player | Không có người chơi nào trong ứng dụng của bạn. |
| 409 | pool_empty | Vùng chứa không phải'giữ amount. Cơ thể có pool, cái gì'còn lại. |
| 429 | daily_limit | Điều này sẽ đưa người chơi vượt qua ứng dụng của bạn'giới hạn hàng ngày cho mỗi người chơi (trong $LIA, mỗi ngày UTC). Thân có dailyCapPerPlayer. |
A reward.paid webhook được gửi cho mỗi phần thưởng được trả (không phải cho các bản sao).
#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"Cái gì'còn lại trong ví phần thưởng của bạn, và người chơi nhiều nhất có thể nhận được mỗi ngày.
{ "balance": 975, "dailyCapPerPlayer": 50, "mode": "live" }dailyCapPerPlayer là 0 khi có'không có giới hạn hàng ngày. balance là quỹ đang hoạt động, cũng khi bạn yêu cầu bằng khóa kiểm tra của mình.
#Thông báo
Xem Thông báo.
#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"
}'Gửi thông báo đến người chơi đã cho phép. Nó hiển thị dưới ứng dụng của bạn'tên và mở ứng dụng của bạn với 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" }| Trường | Loại | |
|---|---|---|
playerId | chuỗi | Ai để thông báo. |
text | chuỗi | 1 đến 180 ký tự. Khoảng trắng và dòng mới trở thành khoảng trắng đơn. Không có liên kết, số điện thoại hoặc từ được sử dụng trong lừa đảo. |
startParam | chuỗi | Tùy chọn. 1 đến 64 chữ cái, số, _ và -. Trang của bạn đọc từ Lia.startParam. |
Đã gửi:
{ "sent": true, "pushed": true }pushed là false khi nó đạt đến Lia'chuông nhưng không phải điện thoại (người đó có Lia'tắt thông báo).
| Trạng thái | Mã | Khi nào |
|---|---|---|
| 400 | bad_text | Trống, quá dài, hoặc không được phép. Khi nó'mà điều văn bản nói, problem là link, phone hoặc scam. |
| 400 | bad_start_param | startParam không'ở đúng hình dạng. |
| 403 | notifications_off | Ứng dụng của bạn có thể không gửi thông báo (số lượng hàng ngày là 0). |
| 403 | not_allowed | Người chơi này không't đã cho phép ứng dụng của bạn'thông báo, hoặc đã dừng chúng. |
| 404 | unknown_player | Không có người chơi nào, hoặc không phải là người chơi trong khóa của bạn'chế độ đạt được (một khóa kiểm tra chỉ đạt đến người kiểm thử của bạn). |
| 429 | rate_limited | Một giới hạn đã đạt được. Đối với ứng dụng của bạn'giới hạn riêng của họ có thể retryAt, khi bạn có thể thử lại. |
#Quảng cáo
Xem Quảng cáo.
#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"
}'Quảng cáo này có thực sự được xem và bởi ai không? Kiểm tra trước khi đưa ra bất kỳ thứ gì cho video được thưởng.
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 }| Trường | Loại | |
|---|---|---|
adId | chuỗi | Id từ Lia.showAd(). |
playerId | chuỗi | Người chơi được hiển thị. Kiểm tra nó'mà người hỏi. |
format | chuỗi hoặc null | "rewarded", "rewardedInterstitial", "interstitial", "banner" hoặc "native" (null cho quảng cáo từ trước SDK 1.7). Chỉ "rewarded" và "rewardedInterstitial" có giá trị một phần thưởng. |
watched | boolean | Được xem đến cuối (hoặc, đối với quảng cáo giữa trang, banner hoặc quảng cáo tự nhiên, được hiển thị). |
watchedAt | số hoặc null | Khi |
Hỏi với khóa của chế độ quảng cáo được hiển thị: quảng cáo chế độ thử nghiệm (luôn là một trong Google'thử quảng cáo, không được tính vào doanh thu) là not_found đến khóa live.
Lia không thể'đánh dấu quảng cáo là đã sử dụng khi bạn xác minh nó, vì vậy trả mỗi adId một lần (sử dụng ad:<adId> như khóa phần thưởng).
| Trạng thái | Mã | Khi nào |
|---|---|---|
| 404 | not_found | Không có quảng cáo nào cho ứng dụng của bạn trong khóa của bạn'chế độ. |
#Sảnh
Bảng công khai mà bất kỳ ai trên Lia có thể tìm thấy. Lia chỉ giữ danh sách: máy chủ của bạn điều hành bảng. Xem Bảng công khai.
Đối tượng bảng:
| Trường | Loại | |
|---|---|---|
id | chuỗi | Bảng của bạn'id của nó. |
game | chuỗi | Ứng dụng của bạn'id của nó. |
host | đối tượng | { name }: chủ's Lia tên người dùng. |
seats, taken | số | Tổng số ghế, và ghế đã được chiếm. |
title | chuỗi hoặc null | Được lọc như mọi thứ mọi người đọc trên Lia. |
stake, pot | số | Trong LIA, để hiển thị. |
createdAt, expiresAt | số |
#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
}'Liệt kê một bàn mà'mà đang chờ người chơi, hoặc cập nhật danh sách của nó (nó giữ vị trí của nó trong danh sách). Đăng lại bất cứ khi nào số chỗ thay đổi.
{ "tableId": "t8k2d", "hostPlayerId": "p_3f9c0a6d1b2e4f5a6b7c", "seats": 2, "taken": 1, "title": "Quick game", "stake": 5, "expiresIn": 900 }| Trường | Loại | |
|---|---|---|
tableId | chuỗi | Của bạn, 1 đến 57 các chữ cái, chữ số, _ và - (ngắn enough để vừa với startParam lobby-<id>). |
hostPlayerId | chuỗi | Người chơi chủ trì nó. |
seats | số | Tùy chọn. 2 đến 10, 2 theo mặc định. |
taken | số | Tùy chọn. Ghế đã được lấp đầy, người chủ'được bao gồm: 1 đến seats, 1 theo mặc định. |
title | chuỗi | Tùy chọn, tối đa 40 ký tự. |
stake, pot | số | Tùy chọn. Trong LIA, 0 đến 10,000, được hiển thị trong danh sách chỉ. Lia không'giữ hoặc di chuyển chúng: đặt cọc phí với sản phẩm của bạn riêng. |
expiresIn | số | Tùy chọn. Số giây danh sách tồn tại, 60 đến 3600, 1800 theo mặc định. |
{ "listed": true, "tableId": "t8k2d", "seats": 2, "taken": 1, "expiresAt": 1761999300000 }Khi nào taken tiếp cận seats, bảng được lấy ra khỏi danh sách thay vào đó, và câu trả lời là { "listed": false }.
| Trạng thái | Mã | Khi nào |
|---|---|---|
| 400 | bad_table_id, bad_seats, bad_taken, bad_title, bad_amount, bad_expires_in | Một trường không'phù hợp. |
| 404 | unknown_player | Không có máy chủ nào trong ứng dụng của bạn. |
| 429 | too_many_tables | Người chủ đã có 3 bảng mở trong ứng dụng của bạn. Thân bài có 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"Ứng dụng của bạn'mở bảng trong khóa của bạn'chế độ, mới nhất trước, lên đến 200: mỗi chủ sở hữu'mà, với các khối được đặt sang một bên (đó'cho mỗi người chơi'giao diện riêng của bạn).
{ "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"
}'Ghế một người chơi tại bàn đã liệt kê, trước khi máy chủ của bạn cho họ vào. Lia từ chối những người mà chủ bàn chặn hoặc đã chặn chủ bàn. Khi ghế cuối cùng được chiếm, bàn sẽ rời khỏi danh sách.
{ "playerId": "p_8a1e0c4d2b7f9e3a5c6d" }{ "seated": true, "taken": 2, "seats": 2, "full": true }| Trạng thái | Mã | Khi nào |
|---|---|---|
| 404 | unknown_player | Không có người chơi nào trong ứng dụng của bạn. |
| 404 | not_found | Bảng không'được liệt kê, đã kết thúc, hoặc người tổ chức và người chơi đã chặn nhau. |
| 409 | full | Mỗi chỗ ngồi đều được chiếm. |
| 409 | own_table | Người chơi là chủ. |
#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'Lấy bảng ra khỏi danh sách khi trò chơi bắt đầu hoặc khi nó đóng. An toàn để lặp lại.
{ "removed": true }removed là false khi nó không'được liệt kê.
#Đang thử lại
Gửi một Idempotency-Key tiêu đề với mọi POST, và cùng một khóa lại trên mỗi lần thử lại của yêu cầu đó. Một lần thử lại sau đó sẽ không bao giờ làm gì hai lần, và trả lời như yêu cầu đầu tiên.
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." }- Mọi khóa bạn muốn, 1 cho 128 chữ cái, chữ số,
_,-,.và:. Một UUID cho mỗi thao tác là đúng. - Yêu cầu đầu tiên chạy. Nếu nó thành công (2xx), câu trả lời của nó sẽ được giữ trong 24 giờ, và một lần thử lại với cùng khóa và cùng nội dung sẽ nhận lại câu trả lời đó, với tiêu đề
Idempotent-Replayed: true. - Một từ chối không giữ lại gì (4xx hoặc 5xx), vì vậy bạn có thể sửa nguyên nhân và thử lại với cùng một khóa.
- Cùng một khóa với nội dung khác là
422 idempotency_key_reused. - Cùng một khóa trong khi khóa đầu tiên vẫn đang chạy là
409 idempotency_key_in_usevớiRetry-After: 1. Thử lại, và bạn sẽ nhận được lần đầu tiên's câu trả lời trên cùng kênh, và câu trả lời thứ hai tải có thể - Khóa là ứng dụng của bạn'riêng của họ, và thử nghiệm giữ riêng biệt. Cùng một khóa trên endpoint khác là một khóa khác.
Không có tiêu đề, hầu hết các điểm cuối vẫn an toàn để thử lại: các phép đọc không thay đổi gì, việc giao hàng và hoàn tiền an toàn để lặp lại, và phần thưởng chỉ được trả một lần cho key. Thông báo là ngoại lệ: không có tiêu đề, một lần thử lại sẽ gửi lại thông báo.
Được dịch tự động. Tiếng Anh là nguồn tin cậy. Đọc bằng tiếng Anh