會員 & 積分 API
https://zlbsjkmygtrhltprrmqm.supabase.co/functions/v1/member-api
透過 REST API 接入荃優悠平台內容,所有請求須在 Header 帶上X-API-Key進行身份驗證。標記 write 的端點需要具備「寫入」權限的金鑰。
認證方式
X-API-Key Header
資料格式
JSON (UTF-8)
速率限制
100 req / min
GET
?action=get_member獲取會員資料
根據 user_id 取得完整會員個人資料,包括暱稱、頭像、積分及等級。
Query 參數
| 參數名 | 類型 | 必填 | 說明 |
|---|---|---|---|
user_id | string (UUID) | 必填 | 會員的 Supabase Auth UUID |
請求範例
GET https://zlbsjkmygtrhltprrmqm.supabase.co/functions/v1/member-api?action=get_member&user_id=UUID X-API-Key: YOUR_API_KEY
回應範例
{
"success": true,
"member": {
"user_id": "UUID",
"nickname": "荃灣探索者",
"avatar_url": "https://...",
"total_points": 520,
"level": "金牌會員"
}
}JavaScript 整合範例
const API_KEY = 'YOUR_API_KEY';
async function callApi(baseUrl, action, params = {}, method = 'GET') {
const headers = { 'X-API-Key': API_KEY, 'Content-Type': 'application/json' };
if (method === 'GET') {
const qs = new URLSearchParams({ action, ...params }).toString();
return fetch(`${baseUrl}?${qs}`, { headers }).then(r => r.json());
}
return fetch(baseUrl, { method: 'POST', headers, body: JSON.stringify({ action, ...params }) }).then(r => r.json());
}
const MEMBER_API = 'https://zlbsjkmygtrhltprrmqm.supabase.co/functions/v1/member-api';
const CONTENT_API = 'https://zlbsjkmygtrhltprrmqm.supabase.co/functions/v1/content-api';
// 獲取路線列表
const routes = await callApi(CONTENT_API, 'list_routes', { difficulty: '輕鬆' });
console.log(routes.routes);
// 提交打卡(需要 write 金鑰)
const checkin = await callApi(CONTENT_API, 'submit_checkin',
{ user_id: 'UUID', route_id: '1', stop_id: 'stop_3' }, 'POST');
console.log(checkin.points_awarded, checkin.new_total_points);
// 提交問答答案(需要 write 金鑰)
const answer = await callApi(CONTENT_API, 'submit_trivia_answer',
{ user_id: 'UUID', trivia_id: 1, answer: '淺灣' }, 'POST');
console.log(answer.correct, answer.message);會員等級對照表
銅牌會員
0 – 199
銀牌會員
200 – 499
金牌會員
500 – 999
白金會員
1000 – ∞
錯誤碼說明
| HTTP 狀態碼 | 說明 |
|---|---|
| 200 | 請求成功,回應 success: true |
| 400 | 請求參數錯誤、缺少必填欄位,或 action 不存在 |
| 401 | API Key 無效、已停用或已到期 |
| 403 | 操作需要 write 權限,但金鑰只有 read 權限 |
| 404 | 找不到指定資源(路線 / 地標 / 餐廳 / 問題) |
| 405 | HTTP 方法不符,如 POST 端點收到 GET 請求 |
| 500 | 伺服器內部錯誤,請聯絡平台支援 |