返回主頁|
荃優悠 API 文件
沙盒測試

會員 & 積分 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_idstring (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 不存在
401API Key 無效、已停用或已到期
403操作需要 write 權限,但金鑰只有 read 權限
404找不到指定資源(路線 / 地標 / 餐廳 / 問題)
405HTTP 方法不符,如 POST 端點收到 GET 請求
500伺服器內部錯誤,請聯絡平台支援