บทนำ
ยินดีต้อนรับสู่ Performance Hub API API นี้ใช้จัดการข้อมูลคลับและระบบสำคัญที่ผสานการทำงานกับคลับของคุณและระบบภายนอกของคลับ และไม่ใช่ API ที่เปิดให้ใช้งานแบบสาธารณะ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ระบบต่าง ๆ ของ Performance Hub ที่ API นี้รองรับ โปรดดูหัวข้อของระบบที่คุณต้องการใน[เอกสาร Performance Hub](https://docs.performancehub.co)
URL หลัก
https://portal.hub.gymsystems.co
การยืนยันตัวตน
คุณจะได้รับรายละเอียดการยืนยันตัวตนเมื่อการผสานระบบของคุณได้รับการอนุมัติ
เหตุการณ์ "agent turn complete" ที่อุปกรณ์รายงาน (ทริกเกอร์การแจ้งเตือนแบบพุชบนเว็บ)
เรียกใช้โดย sidecar ของอุปกรณ์ตัวแทน AI ที่จับคู่แล้ว (ไม่ใช่โดยเบราว์เซอร์) เมื่อการทำงานของตัวแทนที่เริ่มจาก UI บนเว็บเสร็จสิ้นและใช้เวลานานกว่าเกณฑ์การแจ้งเตือนของอุปกรณ์ ยืนยันตัวตนด้วย HS256 JWT อายุสั้นเฉพาะอุปกรณ์ (aud 'events') ระบบจะตัดรายการซ้ำตามอุปกรณ์+เซสชัน+เวลาเริ่ม และจำกัดอัตราต่ออุปกรณ์ จากนั้นจึงส่งไปยังการสมัครรับการแจ้งเตือนแบบพุช HTML5 ของผู้ใช้ที่เริ่มการทำงาน พร้อมลิงก์ตรงไปยังการสนทนา
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /ai/events/agent-turn-complete
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/ai/events/agent-turn-complete \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
การแจ้งเตือนแบบพุชที่ตัวแทนเป็นผู้เริ่ม (สกิล ph-notify)
เรียกใช้โดย sidecar ของอุปกรณ์ตัวแทน AI ที่จับคู่แล้วในนามของตัวแทนบนอุปกรณ์ (สกิล ph-notify) เพื่อส่งการแจ้งเตือนใด ๆ ไปยังเบราว์เซอร์และอุปกรณ์มือถือของผู้ใช้ ยืนยันตัวตนด้วย HS256 JWT อายุสั้นเฉพาะอุปกรณ์ (aud 'events') ผู้ใช้เป้าหมายต้องมีสิทธิ์เข้าถึงอุปกรณ์ (ตามนโยบายการเข้าถึงของแต่ละตัวแทน) หากไม่ระบุ การแจ้งเตือนจะส่งไปยังเจ้าของอุปกรณ์ มีการจำกัดอัตราต่ออุปกรณ์แยกจากเหตุการณ์ turn-complete
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /ai/events/agent-notify
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/ai/events/agent-notify \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อัปโหลดรูปภาพสำหรับการแจ้งเตือน (สกิล ph-notify)
รับเนื้อหารูปภาพดิบจากอุปกรณ์ที่จับคู่แล้ว (JWT ที่มี aud 'events') และจัดเก็บไว้ในบักเก็ตสาธารณะ notify-media ภายใต้คีย์ UUID ที่คาดเดาไม่ได้ ออบเจ็กต์จะถูกลบโดยอัตโนมัติหลังจาก 7 วัน (S3 lifecycle) คืนค่า URL https สาธารณะสำหรับใช้เป็น `imageUrl` ใน /ai/events/agent-notify จำกัดขนาด 5 MB รองรับเฉพาะ png/jpeg/gif/webp
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /ai/media/notify-image
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/ai/media/notify-image \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
รีเลย์ MCP ของอุปกรณ์สำหรับ Connected Apps (เครื่องมือ SaaS ภายนอก)
ปลายทาง MCP แบบ Streamable-HTTP สำหรับอุปกรณ์ตัวแทน AI ที่จับคู่แล้ว (เซิร์ฟเวอร์ MCP "connected_apps" บนตัวรับฟัง :8790 ของ sidecar ในอุปกรณ์) ยืนยันตัวตนด้วย JWT แบบ HS256 อายุสั้นรายอุปกรณ์ (aud 'mcp' ซึ่งเป็นข้อมูลรับรองเดียวกับ /mcp) และควบคุมด้วยแฟล็กการเปิดใช้งาน Connected Apps ของตัวแทน (การเชื่อมต่อเป็นรายอุปกรณ์ตัวแทน ไม่ใช่รายสถานที่) คำขอจะสตรีมผ่านไปยังเซิร์ฟเวอร์ MCP ของเซสชันแพลตฟอร์มเครื่องมือต้นทางของตัวแทนเอง โดยแทรกส่วนหัวเซสชันที่ฝั่งเซิร์ฟเวอร์ ข้อมูลรับรองต้นทางจะไม่ไปถึงอุปกรณ์ ชื่อเครื่องมือและแบรนด์ของผู้ให้บริการจะถูกแปลงแบบ White-label ทั้งสองทิศทางระหว่างการส่ง หากต้นทางตอบกลับ 401/410 (เซสชันหมดอายุ) ระบบจะสร้างเซสชันใหม่หนึ่งครั้งแล้วลองอีกครั้ง
ปลายทาง (Endpoint)
POST /mcp/apps
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/mcp/apps \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาบันทึกการตรวจสอบ API (ต้องมีสิทธิ์เข้าถึงโมดูล IAM & Admin)
ค้นหาและกรองบันทึกการเข้าถึง API ด้วยความสามารถในการกรองขั้นสูง ผู้ใช้จะเห็นเฉพาะบันทึกขององค์กรที่ตนมีสิทธิ์เข้าถึงเท่านั้น
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID องค์กรสำหรับการตรวจสอบ ACL (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/admin/audit-logs/search
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/admin/audit-logs/search \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ดึงสถิติบันทึกการตรวจสอบที่แคชไว้จาก Redis (ต้องมีสิทธิ์เข้าถึงโมดูล IAM & Admin)
ดึงสถิติแบบรวมจากแคช Redis เพื่อให้แดชบอร์ดโหลดได้ทันที
พารามิเตอร์
timeWindow `string` (ไม่บังคับ) ช่วงเวลาของสถิติ (ค่าเริ่มต้นคือ 12h)ปลายทาง (Endpoint)
GET /api/admin/audit-logs/statistics-cached
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics-cached \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงสถิติบันทึกการตรวจสอบ (ต้องมีสิทธิ์เข้าถึงโมดูล IAM & Admin)
ดึงสถิติแบบรวมสำหรับแดชบอร์ด โดยจำกัดขอบเขตเฉพาะองค์กรของผู้ใช้
พารามิเตอร์
startTime `number` (ไม่บังคับ) เวลาเริ่มต้น (Unix timestamp) ค่าเริ่มต้นคือ 24 ชั่วโมงที่แล้ว endTime `number` (ไม่บังคับ) เวลาสิ้นสุด (Unix timestamp) ค่าเริ่มต้นคือเวลาปัจจุบันปลายทาง (Endpoint)
GET /api/admin/audit-logs/statistics
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงข้อมูลอนุกรมเวลาของบันทึกการตรวจสอบ (ต้องมีสิทธิ์เข้าถึงโมดูล IAM & Admin)
ดึงข้อมูลอนุกรมเวลาที่จัดกลุ่มเป็นช่วงสำหรับแสดงภาพไทม์ไลน์ของคำขอ
พารามิเตอร์
timeWindow `string` (ไม่บังคับ) ช่วงเวลาของข้อมูลอนุกรมเวลา: - 1h: 1 ชั่วโมงล่าสุด (ช่วงละ 10 นาที) - 12h: 12 ชั่วโมงล่าสุด (ช่วงละ 10 นาที) - 24h: 24 ชั่วโมงล่าสุด (ช่วงละ 10 นาที) - 7d: 7 วันล่าสุด (ช่วงละ 1 ชั่วโมง) - 14d: 14 วันล่าสุด (ช่วงละ 1 ชั่วโมง)ปลายทาง (Endpoint)
GET /api/admin/audit-logs/timeseries
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/timeseries \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงรายการองค์กรที่ผู้ใช้มีสิทธิ์ดูบันทึกการตรวจสอบ (ต้องมีสิทธิ์เข้าถึงโมดูล IAM & Admin)
คืนค่ารายการองค์กรที่ผู้ใช้ปัจจุบันสามารถดูบันทึกการตรวจสอบได้
ปลายทาง (Endpoint)
GET /api/admin/audit-logs/user-organisations
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/user-organisations \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
การเรียกครั้งแรกเพื่อสร้างคลับใหม่ โปรดทราบว่าระบบจะสร้างเฉพาะออบเจ็กต์คลับแบบ 'template' เท่านั้น จากนั้นต้องส่งคำขอ API ครั้งที่สองเพื่ออัปเดตข้อมูลของคลับ เช่น เวลาเปิดทำการ ที่ตั้ง URL โซเชียล เป็นต้น
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ JSON ของคลับใหม่ที่จะเพิ่มเข้าสู่ระบบปลายทาง (Endpoint)
POST /api/admin/clubs/addclub
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/admin/clubs/addclub \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มผู้ใช้ใหม่เข้าสู่ระบบ
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ JSON ของข้อมูลผู้ใช้ที่คุณต้องการเพิ่ม/อัปเดตปลายทาง (Endpoint)
POST /api/users
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/users \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการผู้ใช้ทั้งหมด (บัญชี Google Apps) ที่มีสิทธิ์เข้าถึงระบบ/API หลังบ้าน
ปลายทาง (Endpoint)
GET /api/admin/users/listusers
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/admin/users/listusers \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการคีย์ MCP ของผู้ใช้ (ปกปิดค่าไว้) ผู้ใช้สามารถแสดงรายการคีย์ของตนเองได้
พารามิเตอร์
userId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/users/{userId}/mcp-keys
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างคีย์ MCP API ใหม่ให้ผู้ใช้ ผู้ใช้สามารถสร้างคีย์ของตนเองได้
พารามิเตอร์
userId `string` (จำเป็น) body `object` (ไม่บังคับ)ปลายทาง (Endpoint)
POST /api/users/{userId}/mcp-keys
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
เพิกถอน/ลบคีย์ MCP API ผู้ใช้สามารถลบคีย์ของตนเองได้
พารามิเตอร์
userId `string` (จำเป็น) keyId `string` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/users/{userId}/mcp-keys/{keyId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys/{keyId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
นำบทบาทออกจากผู้ใช้
พารามิเตอร์
userId `string` (ไม่บังคับ) อีเมลของผู้ใช้ที่คุณต้องการนำบทบาทออก roleId `string` (ไม่บังคับ) ID ของบทบาทที่คุณต้องการนำออกจากผู้ใช้ปลายทาง (Endpoint)
DELETE /api/users/{userId}/roles/{roleId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตรายละเอียดโปรไฟล์ของผู้ใช้ที่มีอยู่ (firstName, lastName, phoneNumber)
พารามิเตอร์
userId `string` (จำเป็น) อีเมลของผู้ใช้ body `object` (จำเป็น) ข้อมูลโปรไฟล์ผู้ใช้ที่จะอัปเดตปลายทาง (Endpoint)
PATCH /api/users/{userId}
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/users/{userId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มหรืออัปเดตบทบาทของผู้ใช้
พารามิเตอร์
body `object` (ไม่บังคับ)ปลายทาง (Endpoint)
PUT /api/users/{userId}/roles
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/users/{userId}/roles \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
Live Services ที่ทำงานบนตัวแทน AI ของสถานที่ (ตัวเลือกการเผยแพร่)
ดึง Live Services ที่ bridge ของอุปกรณ์ตรวจพบผ่านทันเนล สำหรับตัวเลือก "Publish to Performance Hub" ของแอปเพล็ต ต้องมีโมดูล ph-ai-agent และสิทธิ์เข้าถึงอุปกรณ์ระดับ 'open' (เกณฑ์เดียวกับการเผยแพร่) แต่ละบริการจะมี publishedAppId กำกับไว้หากมี Custom App สำหรับพอร์ตนั้นอยู่แล้ว
พารามิเตอร์
club `string` (จำเป็น) device `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-apps/services/{club}/{device}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/services/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดัชนีชื่อไอคอน MDI ที่ฝังไว้ในตัวแทน AI ของสถานที่ (ตัวเลือกไอคอน)
ส่งต่อดัชนีไอคอน MDI ที่ฝังไว้ใน bridge ของอุปกรณ์ (GET /__services/icons/mdi/index.json) ผ่านทันเนล ตัวเลือกสำหรับเผยแพร่/แก้ไขจะใช้แคตตาล็อกที่รวมมากับแอปเพล็ต (ตรึงเวอร์ชัน 7.4.47 เหมือนกัน) ส่วน SVG ของแอปที่เผยแพร่แล้วจะดึงจากแพ็ก @mdi/js ภายในของ portal-server เกณฑ์การเข้าถึงเหมือนกับตัวเลือกบริการ (โมดูล ph-ai-agent + สิทธิ์เข้าถึงอุปกรณ์ระดับ 'open')
พารามิเตอร์
club `string` (จำเป็น) device `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-apps/mdi-index/{club}/{device}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/mdi-index/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึง SVG ของไอคอน MDI หลายรายการพร้อมกันจากตัวแทน AI ของสถานที่ (ตัวอย่างในตัวเลือก)
ดึงไอคอน MDI ตามชื่อได้สูงสุด 60 รายการจากชุดไอคอนที่ฝังไว้ในอุปกรณ์ในการเรียกครั้งเดียว โดยทำความสะอาดฝั่งเซิร์ฟเวอร์ด้วยรายการที่อนุญาตเดียวกับที่ใช้กับไอคอนแอปที่บันทึกไว้ ตัวเลือกไอคอนใช้เพื่อแสดงผลการค้นหา ชื่อที่ไม่รู้จักจะคืนค่าเป็น null
พารามิเตอร์
club `string` (จำเป็น) device `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-apps/mdi-icons/{club}/{device}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/mdi-icons/{club}/{device} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ขอบเขตผู้ชมที่ผู้ร้องขอสามารถเผยแพร่ไปได้จากสถานที่นี้
ขอบเขตผู้ชมที่ผู้เผยแพร่สามารถกำหนดได้สำหรับตัวเลือกการเผยแพร่/แก้ไข ได้แก่ สถานที่ที่บทบาท ph-ai-agent ของผู้เผยแพร่ครอบคลุม (ขอบเขตหลายสถานที่) และผู้เผยแพร่มีสิทธิ์ระดับองค์กรที่จำเป็นสำหรับผู้ชมทั้งแบรนด์/ทั้งองค์กรของแบรนด์/องค์กรของสถานที่นี้หรือไม่ ฝั่งเซิร์ฟเวอร์จะบังคับใช้กฎเดียวกันอีกครั้งเมื่อเผยแพร่/อัปเดต (validatePublishAudience) ปลายทางนี้มีไว้เพื่อกำหนดรูปแบบ UI เท่านั้น
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-apps/audience-options/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/audience-options/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เติมชื่อผู้ใช้อัตโนมัติสำหรับผู้ชมแอปแบบระบุชื่อผู้ใช้
ค้นหาเฉพาะผู้ใช้ที่ผู้ร้องขอมองเห็นได้อยู่แล้วเท่านั้น ได้แก่ ผู้ที่มีบทบาทซ้อนทับกับสถานที่/ภูมิภาค/องค์กรอย่างน้อยหนึ่งแห่งในสิทธิ์ ph-ai-agent ของผู้ร้องขอ คำค้นหาที่ต้องมีอย่างน้อย 2 ตัวอักษรและการจำกัดผลลัพธ์ไว้ที่ 10 รายการทำให้ไม่สามารถใช้ปลายทางนี้ดึงข้อมูลจำนวนมากได้ ฝั่งเซิร์ฟเวอร์จะบังคับใช้ชุดผู้ใช้ที่เข้าถึงได้เดียวกันอีกครั้งเมื่อบันทึกผู้ชม
พารามิเตอร์
club `string` (จำเป็น) q `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-apps/user-search/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/user-search/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เผยแพร่ Live Service ของตัวแทน AI เป็น Custom App ของ Performance Hub
ลงทะเบียนเว็บแอปที่โฮสต์โดยตัวแทน AI ของสถานที่ (Live Service ที่ bridge ตรวจพบ) เป็นรายการในเมนูด้านข้าง "Custom Apps" สำหรับผู้ชมที่เลือก ต้องมีโมดูล ph-ai-agent ที่สถานที่นี้และสิทธิ์เข้าถึงอุปกรณ์ระดับ 'open' ผู้ชมจะถูกจำกัดตามขอบเขตบทบาทของผู้เผยแพร่เอง (คุณไม่สามารถเผยแพร่ได้กว้างกว่าขอบเขตที่คุณเข้าถึงได้) ระบบระบุตัวตนของบริการแบบเรียลไทม์จากรายการ /__services ของอุปกรณ์ และจะไม่บันทึกสคีม http/https
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-apps/publish/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/publish/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
Custom App ที่เผยแพร่แล้วซึ่งมองเห็นได้ที่สถานที่นี้
คืนค่าแอปที่เผยแพร่และใช้งานอยู่ซึ่งมีผู้ชมครอบคลุมสถานที่นี้ ในรูปแบบที่เมนูด้านข้างแสดงผล (appId, name, icon, description) ระบบจะประเมินผู้ชมใหม่แบบเรียลไทม์ทุกครั้งที่เรียก การเปลี่ยนแปลงสิทธิ์จึงมีผลทันที
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-apps/menu/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/menu/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แอปที่เผยแพร่ซึ่งจัดการจากสถานที่นี้ (มุมมองผู้เผยแพร่)
แถวข้อมูลแอปแบบเต็มของแอปที่มีสถานที่หลัก (HOME) เป็นคลับนี้ สำหรับรายการจัดการ "Published Apps" ของแอปเพล็ต แต่ละแถวจะมี canManage กำกับไว้สำหรับผู้ใช้ที่ร้องขอ (ผู้เผยแพร่)
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-apps/manage/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างโทเค็นผู้ชมที่จำกัดขอบเขตเฉพาะบริการสำหรับ Custom App ที่เผยแพร่แล้ว
คืนค่า URL ที่ลงนามแล้วอายุสั้นพร้อมโทเค็น ซึ่งเบราว์เซอร์ใช้เปิดแอปที่เผยแพร่หนึ่งแอปโดยตรงบนเกตเวย์รีเลย์ระดับภูมิภาคของอุปกรณ์ โทเค็นมี claim svc ที่ระบุพอร์ตของบริการ เกตเวย์จึงจำกัดเซสชันไว้ที่ /__services/proxy/
พารามิเตอร์
club `string` (จำเป็น) appId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/agent-apps/access/{club}/{appId}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/access/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ข้อมูลผู้ให้การสนับสนุนสำหรับ Custom App ที่เผยแพร่แล้ว (ผู้ติดต่อของเจ้าของ)
ผู้ให้การสนับสนุนแอปที่ผู้ใช้เผยแพร่นี้ ได้แก่ อีเมลของผู้เผยแพร่ (หากไม่มีจะใช้เจ้าของตัวแทนที่โฮสต์แอป) แสดงบนแผงออฟไลน์/ข้อผิดพลาดของผู้ชม เพื่อให้คำขอความช่วยเหลือส่งไปยังเจ้าของแอปแทน Performance Hub เนื่องจากแอปที่เผยแพร่ไม่อยู่ในการสนับสนุนหลักของ PH ระบบจะตรวจสอบผู้ชมของแอปก่อน ผู้ชมที่ไม่เคยได้รับการแชร์แอปจะไม่ได้รับข้อมูลใด ๆ แอปที่หยุดชั่วคราวยังคงแสดงข้อมูลได้ (เจ้าของต้องตอบคำถาม "ทำไมแอปนี้จึงหยุดชั่วคราว" ด้วย)
พารามิเตอร์
club `string` (จำเป็น) appId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-apps/support-info/{club}/{appId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/support-info/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งอีเมลคำขอความช่วยเหลือถึงเจ้าของ Custom App ที่เผยแพร่แล้ว
ส่งข้อความของผู้ชมไปยังผู้ติดต่อฝ่ายสนับสนุนของแอป (ผู้เผยแพร่ หากไม่มีจะใช้เจ้าของตัวแทน) เป็นอีเมลที่มีแบรนด์ โดยส่งถึง (To) เจ้าของ สำเนาถึง (CC) ผู้ชม (เพื่อเป็นบันทึกคำขอ) และตั้ง Reply-To เป็นผู้ชมเพื่อให้เจ้าของตอบกลับผู้ชมได้โดยตรง แอปที่เผยแพร่ได้รับการดูแลโดยผู้ใช้ การสนับสนุนจึงไม่เข้าคิวของ Performance Hub ระบบจะตรวจสอบผู้ชมอีกครั้ง และจำกัดหนึ่งคำขอต่อผู้ชมต่อแอปทุก 15 นาที (ระยะพักของ Redis แบบ fail-open)
พารามิเตอร์
club `string` (จำเป็น) appId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-apps/support-request/{club}/{appId}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/support-request/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อัปเดต Custom App ที่เผยแพร่แล้ว (ชื่อ ไอคอน คำอธิบาย สถานะ ผู้ชม)
เฉพาะผู้เผยแพร่เท่านั้น การเปลี่ยนแปลงผู้ชมจะได้รับการตรวจสอบอีกครั้งเทียบกับขอบเขตบทบาทของผู้แก้ไข (EDITOR) ด้วยกฎการจำกัดเดียวกับการเผยแพร่ สถานะสลับได้ระหว่าง active และ paused (แอปที่หยุดชั่วคราวจะหายไปจากเมนูและปฏิเสธการสร้างโทเค็น)
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-apps/update/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/update/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ยกเลิกการเผยแพร่ Custom App (ลบแบบ soft delete)
เฉพาะผู้เผยแพร่เท่านั้น ลบแถวในรีจิสทรีแบบ soft delete แอปจะหายไปจากเมนูทันทีและระบบจะปฏิเสธการสร้างโทเค็นผู้ชม ส่วนเซสชันเกตเวย์ที่ออกไปแล้วจะสิ้นสุดเมื่อโทเค็นหมดอายุ
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-apps/unpublish/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/unpublish/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
โอนความเป็นเจ้าของ Custom App ที่เผยแพร่แล้ว
ทำงานเหมือนขั้นตอนการโอนเจ้าของของตัวแทน AI ผู้เผยแพร่ปัจจุบันหรือเจ้าของบัญชี (โมดูล billing) สามารถมอบแอปให้ผู้ใช้อื่นเป็นผู้จัดการต่อได้ เจ้าของใหม่ต้องมีสิทธิ์เข้าถึงสถานที่ที่คลับหลักของแอป
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-apps/transfer-owner/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/transfer-owner/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
รายงานการสแกนฉบับเต็ม (+ การตรวจทานโดย LLM) ของสกิลหนึ่งเวอร์ชัน
รายการผลการตรวจพบทั้งหมดของเวอร์ชัน สำหรับผู้เผยแพร่และผู้ดูแลองค์กร (ผู้ตรวจทานการอนุมัติ) เท่านั้น ผู้ติดตั้งจะเห็นจำนวนสรุปในรายละเอียดของสกิลแทน
พารามิเตอร์
club `string` (จำเป็น) skillId `string` (จำเป็น) version `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-skills/scan-report/{club}/{skillId}/{version}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/scan-report/{club}/{skillId}/{version} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งสกิลเวอร์ชันฉบับร่าง (เผยแพร่ หรือเข้าคิวรออนุมัติ)
ดำเนินการเวอร์ชันฉบับร่างต่อตามนโยบายการกำกับดูแลขององค์กร หากองค์กรเลือกใช้การตรวจทานโดย LLM ระบบจะตรวจทานคำสั่งก่อน (แบบพยายามอย่างดีที่สุด ผลการตัดสิน 'fail' จะปฏิเสธ ส่วนผลการตัดสิน 'flag' จะบังคับให้เข้าคิวรออนุมัติ) การแชร์ระดับสถานที่จะเผยแพร่ทันที เว้นแต่นโยบายการกำกับดูแลกำหนดให้ต้องอนุมัติ ส่วนการแชร์ในคลังขององค์กร (ผู้ชมระดับแบรนด์/องค์กร) จะต้องได้รับการอนุมัติโดยค่าเริ่มต้น การเผยแพร่จะตั้งค่า latestVersion ของสกิล การติดตั้งที่ใช้นโยบาย 'auto' จะรับเวอร์ชันนี้ในการกระทบยอดรอบถัดไป
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-skills/submit/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/submit/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
คลังสกิลที่มองเห็นได้ที่สถานที่นี้ (กรองตามผู้ชม)
สกิลที่ใช้งานอยู่ซึ่งมีเวอร์ชันที่เผยแพร่อย่างน้อยหนึ่งเวอร์ชันและมีผู้ชมครอบคลุมสถานที่นี้ (หรือระบุชื่อผู้ชม) พร้อมสรุปเวอร์ชันที่เผยแพร่ล่าสุดและขอบเขตการใช้งานในองค์กร (จำนวนสถานที่ที่ไม่ซ้ำกัน ไม่ใช่จำนวนการติดตั้งดิบ) ระบบจะประเมินผู้ชมใหม่แบบเรียลไทม์ทุกครั้งที่เรียก
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-skills/library/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/library/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
รายละเอียดสกิล (เวอร์ชัน ข้อกำหนด สรุปการสแกน การใช้งาน)
รายละเอียดทั้งหมดของสกิลหนึ่งรายการในคลัง ได้แก่ ประวัติเวอร์ชันพร้อมบันทึกการเปลี่ยนแปลงและสรุปการสแกน (รายการปลายทางของแต่ละเวอร์ชันใช้สำหรับเปรียบเทียบผลการสแกนเมื่ออัปเดต) ข้อกำหนดที่ประกาศไว้ใน manifest ที่มาของผู้เผยแพร่ และสัญญาณการใช้งานตามจำนวนสถานที่ ระบบจะตรวจสอบผู้ชมอีกครั้ง ผู้ชมที่ไม่เคยได้รับการแชร์สกิลจะไม่ได้รับข้อมูลใด ๆ (ผู้เผยแพร่และผู้ดูแลองค์กรจะเห็นเสมอ)
พารามิเตอร์
club `string` (จำเป็น) skillId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-skills/skill/{club}/{skillId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/skill/{club}/{skillId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สกิลที่เผยแพร่จากสถานที่นี้ (รายการจัดการของผู้เผยแพร่)
แถวข้อมูลสกิลแบบเต็มที่มีสถานที่หลัก (HOME) เป็นคลับนี้ แต่ละแถวมี canManage สำหรับผู้ใช้ที่ร้องขอและสรุปเวอร์ชันล่าสุด (รวมฉบับร่างและรายการที่รออนุมัติ เนื่องจากเป็นมุมมองการทำงานของผู้เผยแพร่)
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-skills/manage/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ติดตั้งสกิลจากคลังลงในตัวแทน AI ของสถานที่
ควบคุมโดยนโยบายการกำกับดูแล installSources ขององค์กรต้องอนุญาต ผู้ชมของสกิลต้องครอบคลุมสถานที่นี้ (หรือระบุชื่อผู้ร้องขอ) เวอร์ชันต้องได้รับการเผยแพร่แล้ว และผู้ร้องขอต้องผ่านระดับ whoCanInstall ของอุปกรณ์เป้าหมาย (เจ้าของ / ผู้ใช้ที่ได้รับอนุญาต / ผู้ดูแลสถานที่ / ผู้ดูแลองค์กร ดูการกำกับดูแล) ระบบจะบันทึกแถววงจรการติดตั้ง (แหล่งข้อมูลจริง) และพุชทันทีแบบพยายามอย่างดีที่สุด งาน cron สำหรับกระทบยอดจะรับประกันการส่งเมื่ออุปกรณ์เชื่อมต่อได้
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-skills/install/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/install/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อนุมัติการอัปเดตสกิลที่รอดำเนินการสำหรับการติดตั้งหนึ่งรายการ
เปลี่ยน desiredVersion ของการติดตั้งเป็นเวอร์ชันที่เผยแพร่ล่าสุด (เป็นขั้นตอนด้วยตนเองของนโยบาย 'notify' และ 'pinned' และเป็นเส้นทางเมื่อการกำกับดูแลตั้งค่า updatePosture เป็น 'approvalRequired') เก็บเวอร์ชันปัจจุบันไว้เป็นเป้าหมายการย้อนกลับหนึ่งขั้น และล้างการตรึงการอัปเดตหลังการย้อนกลับ (skipVersion) ใช้ระดับสิทธิ์ whoCanInstall เดียวกับการติดตั้ง
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-skills/update-approve/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/update-approve/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ย้อนสกิลที่ติดตั้งกลับไปเป็นเวอร์ชันก่อนหน้า
ตั้งค่า desiredVersion เป็น previousVersion ของแถวการติดตั้ง (บันทึกไว้ทุกครั้งที่เปลี่ยนเวอร์ชัน) และให้เส้นทางการส่งตามปกติติดตั้งใหม่ ย้อนกลับได้หนึ่งขั้น โดยเวอร์ชันจะสลับกัน การย้อนกลับสองครั้งจึงกลับไปยังจุดเริ่มต้น นอกจากนี้ยังตรึงการอัปเดต (skipVersion = เวอร์ชันที่ย้อนกลับมา) เพื่อให้นโยบาย auto/notify คงการย้อนกลับไว้ การตรึงจะถูกล้างเมื่อมีการเผยแพร่เวอร์ชันที่ใหม่กว่า เมื่อ update-approve หรือเมื่อ set-policy
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-skills/rollback/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/rollback/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ถอนการติดตั้งสกิลจากตัวแทน AI ของสถานที่
ทำเครื่องหมายแถวการติดตั้งเป็น pending-uninstall และพุชสถานะที่ต้องการ แถวจะถูกลบเมื่ออุปกรณ์ยืนยันการนำออก (อ่านค่ากลับจากการกระทบยอด) ใช้ระดับสิทธิ์ whoCanInstall เดียวกับการติดตั้ง
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-skills/uninstall/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/uninstall/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ตั้งค่านโยบายการอัปเดตของสกิลสำหรับการติดตั้งแต่ละรายการบนอุปกรณ์หนึ่งเครื่อง
auto (การกระทบยอดจะใช้เวอร์ชันที่เผยแพร่ใหม่โดยอัตโนมัติ เว้นแต่ updatePosture ขององค์กรกำหนดให้ต้องอนุมัติ), notify (เจ้าของจะได้รับการแจ้งเตือนหนึ่งครั้งต่อเวอร์ชันใหม่และนำไปใช้ด้วยตนเอง) หรือ pinned (ไม่เปลี่ยนเวอร์ชันหากไม่มี update-approve อย่างชัดเจน) การเปลี่ยนนโยบายจะล้างการตรึงการอัปเดตหลังการย้อนกลับ (skipVersion) ใช้ระดับสิทธิ์ whoCanInstall เดียวกับการติดตั้ง
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-skills/set-policy/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/set-policy/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
การติดตั้งสกิลบนตัวแทน AI ของสถานที่ (แท็บ Skills)
แถววงจรการติดตั้งของอุปกรณ์หนึ่งเครื่อง แต่ละแถวมีฟิลด์ข้อมูลรายการของสกิลและระบุว่ามีเวอร์ชันที่เผยแพร่ใหม่กว่าหรือไม่ ต้องมีสิทธิ์เข้าถึงอุปกรณ์ระดับ 'open' (แท็บ Skills อยู่ในแผงลิ้นชักของตัวแทน)
พารามิเตอร์
club `string` (จำเป็น) device `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-skills/installs/{club}/{device}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/installs/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เวอร์ชันสกิลที่รออนุมัติในองค์กรของสถานที่นี้
คิวการอนุมัติของผู้ดูแลองค์กร ได้แก่ เวอร์ชันที่รออนุมัติทั้งหมดของสกิลในองค์กร พร้อมข้อมูลรายการสกิลและสรุปการสแกน/LLM เฉพาะผู้ดูแลองค์กรเท่านั้น
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-skills/approvals/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/approvals/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อนุมัติเวอร์ชันสกิลที่รอดำเนินการ (เผยแพร่เวอร์ชันนั้น)
เฉพาะผู้ดูแลองค์กรเท่านั้น เวอร์ชันจะได้รับการเผยแพร่ latestVersion ของสกิลจะเปลี่ยน และผู้เผยแพร่จะได้รับการแจ้งเตือน การติดตั้งที่ใช้นโยบาย 'auto' จะรับเวอร์ชันนี้ในการกระทบยอดรอบถัดไป
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-skills/approve/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/approve/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ปฏิเสธเวอร์ชันสกิลที่รอดำเนินการ
เฉพาะผู้ดูแลองค์กรเท่านั้น เวอร์ชันจะถูกปฏิเสธพร้อมเหตุผลของผู้ตรวจทาน และผู้เผยแพร่จะได้รับการแจ้งเตือน ผู้เผยแพร่สามารถแก้ไขสิ่งที่ตรวจพบและส่งเวอร์ชันใหม่ได้ (เวอร์ชันแก้ไขไม่ได้)
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-skills/reject/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/reject/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
การกำกับดูแล Agent Skill ที่มีผลสำหรับองค์กรของสถานที่นี้
นโยบายที่บันทึกไว้ขององค์กรซึ่งรวมทับค่าเริ่มต้นของแพลตฟอร์ม (องค์กรที่ไม่มีแถวที่บันทึกไว้จะเห็นเฉพาะค่าเริ่มต้น) เฉพาะผู้ดูแลองค์กรเท่านั้น
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/agent-skills/governance/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/governance/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการกำกับดูแล Agent Skill สำหรับองค์กรของสถานที่นี้
อัปเดตบางส่วน เฉพาะฟิลด์ที่ระบุเท่านั้นที่เปลี่ยนแปลง ส่วนอื่นทั้งหมดคงค่าที่บันทึกไว้/ค่าเริ่มต้น เฉพาะผู้ดูแลองค์กรเท่านั้น การแทนที่ค่ารายอุปกรณ์อยู่ในแถวการลงทะเบียนผ่านเส้นทางการกำหนดค่าอุปกรณ์ที่มีอยู่
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/agent-skills/governance/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/governance/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ดึงข้อมูลสภาพแวดล้อมของสถานที่
คืนค่าสภาพอากาศปัจจุบัน รวมถึงเวลาพระอาทิตย์ขึ้น/ตก (ผ่าน Open-Meteo) และอุณหภูมิภายในสถานที่ (จากเซ็นเซอร์ Duress) ของคลับที่ระบุ แคชไว้ใน Redis เป็นเวลา 30 นาที
พารามิเตอร์
clubId `string` (จำเป็น) ID ภายในของคลับ/สถานที่ปลายทาง (Endpoint)
GET /api/clubs/{clubId}/environment
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/environment \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่ม/เชื่อมโยงอุปกรณ์ IoT ทั่วไปกับคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเพิ่มอุปกรณ์ body `string` (จำเป็น) ออบเจ็กต์ JSON ของหน้าจอใหม่ที่จะเชื่อมโยงปลายทาง (Endpoint)
POST /api/devices/addGenericDevice/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/addGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
นำหน้าจอแสดงผลออกและรีเซ็ตเป็นค่าจากโรงงาน
นำการเชื่อมโยงสถานที่ที่ใช้งานอยู่ของหน้าจอออก และตั้งค่าการรีเซ็ตเป็นค่าจากโรงงานที่คงอยู่จนกว่าจะดำเนินการ หน้าจอที่ปิดเครื่องอยู่จะรีเซ็ตหลังจากเปิดเครื่องและเชื่อมต่อใหม่ในครั้งถัดไป จากนั้นจะกลับไปยังหน้าจับคู่ผ่าน HDMI บันทึกการเรียกเก็บเงินในอดีตจะยังคงเก็บไว้
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/display-screens/reset/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/display-screens/reset/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เชื่อมโยงตัวควบคุมประตูกับสถานที่
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/door-controllers/associate/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/associate/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อัปเดตการตั้งค่าตัวควบคุมประตูของสถานที่
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/door-controllers/update/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/update/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ปลดระวางตัวควบคุมประตูจากสถานที่
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/devices/door-controllers/decommission/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าการกำหนดค่ารีเลย์ของตัวควบคุมประตู
พารามิเตอร์
uuid `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/door-controllers/config/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/door-controllers/config/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าเมตาดาตาของอุปกรณ์
พารามิเตอร์
uuid `string` (จำเป็น) ID ที่ไม่ซ้ำกันของอุปกรณ์ปลายทาง (Endpoint)
GET /api/devices/metadata/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าเมตาดาตาของอุปกรณ์ การตอบกลับคือแถวเมตาดาตาที่ระดับบนสุด (รูปแบบเดิม) พร้อม `detectedType` (camera | ai-edge-processor | door-controller | ph-ai-agent | null) และ `online` (เป็น true เมื่ออัปเดตภายใน 5 นาที)
พารามิเตอร์
deviceSerialNumber `string` (จำเป็น) หมายเลขซีเรียลของอุปกรณ์ปลายทาง (Endpoint)
GET /api/devices/metadata/serial/{serialNo}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/serial/{serialNo} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าข้อมูล Smart Club ของคลับ
พารามิเตอร์
club_id `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเพิ่มอุปกรณ์ปลายทาง (Endpoint)
GET /api/clubs/{club_id}/smart-club-data
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club-data \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าอุปกรณ์ทั้งหมดที่เชื่อมโยงกับคลับหนึ่งแห่ง
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการแสดงรายการอุปกรณ์ปลายทาง (Endpoint)
GET /api/devices/list/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/list/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารุ่นที่เผยแพร่ (เวอร์ชัน) ทั้งหมดของแอปพลิเคชันสำหรับอุปกรณ์ balena
ปลายทาง (Endpoint)
GET /api/devices/listReleases
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/listReleases \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ย้ายอุปกรณ์ไปยังสถานที่ (คลับ) ใหม่และอัปเดตระบบที่เกี่ยวข้อง
พารามิเตอร์
club `string` (จำเป็น) ID สถานที่ต้นทาง (คลับปัจจุบันที่อุปกรณ์อยู่) body `object` (จำเป็น) พารามิเตอร์การย้ายปลายทาง (Endpoint)
POST /api/devices/move/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/move/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
พยายามเชื่อมต่อกับเราเตอร์ของสถานที่โดยเลือกอุปกรณ์ในคลับที่เหมาะสมที่สุด และส่งคำสั่ง MQTT เพื่อสร้างทันเนล
พารามิเตอร์
facilityID `string` (จำเป็น) ID ภายในของสถานที่ที่กำลังพยายามเชื่อมต่อเราเตอร์ปลายทาง (Endpoint)
GET /api/devices/openRouterWebpage/{facilityID}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/openRouterWebpage/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แคตตาล็อก Cloud Agent (โซน ขนาด ราคาขายปัจจุบัน)
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/cloud/catalog/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/catalog/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เสนอราคา Cloud Agent (ซอฟต์แวร์ + โฮสติ้ง)
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/cloud/quote/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/quote/{club} \
-H "x-api-key: YOUR_API_KEY"
เปิดใช้ Cloud Agent (เข้าคิวการจัดเตรียม + เชื่อมโยงอัตโนมัติ)
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/cloud/launch/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/launch/{club} \
-H "x-api-key: YOUR_API_KEY"
สถานะงานของ Cloud Agent
ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId} \
-H "x-api-key: YOUR_API_KEY"
ล้าง Cloud Agent ทั้งหมด (VM + balena + การลงทะเบียน)
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/cloud/delete/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete/{club} \
-H "x-api-key: YOUR_API_KEY"
ดำเนินการกับการนำ Cloud Agent ออกที่พักไว้ (ลองสำรองข้อมูลอีกครั้ง ลบโดยไม่สำรองข้อมูล หรือยกเลิก)
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/cloud/delete-decision/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete-decision/{club} \
-H "x-api-key: YOUR_API_KEY"
แสดงรายการ Connected Apps ของตัวแทน (ชุดแอป + แอปที่มีบัญชีเชื่อมต่อ)
คืนค่าสถานะ Connected Apps ของตัวแทน ได้แก่ แฟล็กการเปิดใช้ ข้อมูลสรุปของแต่ละชุดแอป (Google Workspace, Microsoft 365) และแคตตาล็อกแอปที่คัดสรรพร้อมบัญชีที่เชื่อมต่อของแต่ละแอป (รองรับหลายบัญชี ตัวแทนหนึ่งตัวมีได้หลายบัญชีต่อแอป แต่ละบัญชีมีชื่อแทนแบบไม่บังคับ) ซึ่งได้มาจากเซสชันต้นทางของตัวแทน
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทนปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แคตตาล็อกตลาดแอป Connected Apps ฉบับเต็มสำหรับตัวแทน
คืนค่าแอปทั้งหมดที่เชื่อมต่อได้ (แคตตาล็อกชุดเครื่องมือ managed-auth ฉบับเต็ม แคชไว้ฝั่งเซิร์ฟเวอร์ประมาณ 12 ชั่วโมง) พร้อมระดับแนะนำ/ชุดแอป และบัญชีที่เชื่อมต่อของตัวแทนในแต่ละแอป รวมถึงข้อมูลสรุปของแต่ละชุดแอปและคำขอเชื่อมต่อที่รอดำเนินการของตัวแทน เป็นเพย์โหลดเดียวสำหรับตลาดแอปที่ค้นหาได้ฝั่งไคลเอนต์
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทนปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/catalog
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/catalog \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ปิดคำขอเชื่อมต่อที่รอดำเนินการของตัวแทน
ทำเครื่องหมายคำขอเชื่อมต่อที่รอดำเนินการของตัวแทนสำหรับชุดเครื่องมือว่าปิดแล้ว (คำขอจะหายไปจากส่วน "Requested by your agent" ของตลาดแอป) เป็นแบบ idempotent การปิดคำขอที่ไม่ได้รอดำเนินการจะไม่มีผลใด ๆ
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทนเนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/requests/dismiss
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/requests/dismiss \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เปิดหรือปิด Connected Apps สำหรับตัวแทน
บันทึกสวิตช์ Connected Apps ของตัวแทน และพุชตัวแปรอุปกรณ์ Balena PH_APPS_MCP_ENABLED ไปยังอุปกรณ์นั้นเครื่องเดียว (แบบพยายามอย่างดีที่สุด แฟล็กฝั่ง PH คือตัวควบคุมหลักของรีเลย์ MCP)
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทนเนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/enable
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/enable \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เริ่มเชื่อมต่อแอปหนึ่งแอปกับตัวแทน (ขั้นตอน OAuth ของ Connect Link)
เริ่มขั้นตอน Connect Link แบบโฮสต์สำหรับชุดเครื่องมือหนึ่งชุด และคืนค่า URL สำหรับส่งผู้ใช้ไป ชื่อแทนแบบไม่บังคับใช้ระบุบัญชีใหม่ (รองรับหลายบัญชี การเชื่อมต่อแอปที่เชื่อมต่ออยู่แล้วจะเพิ่มอีกบัญชีหนึ่ง สูงสุด 10 บัญชีต่อแอป) ทำงานผ่าน callback แบบต่อเนื่องเดียวกับการเชื่อมต่อชุดแอป (ชุดแอปที่มีชุดเครื่องมือเดียว) เมื่อเสร็จสิ้นจึงกลับมายังหน้าแอปเพล็ต ph-ai-agent
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทนเนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เพย์โหลดสำหรับเตรียมการเชื่อมต่อแอปหนึ่งแอป (โหมด ฟิลด์ข้อมูลรับรอง คู่มือการตั้งค่า)
ทุกสิ่งที่กล่องโต้ตอบการเชื่อมต่อต้องใช้ก่อนเริ่มการเชื่อมต่อ ได้แก่ วิธีที่แอปเชื่อมต่อ (oauth = ขั้นตอนการให้ความยินยอมแบบโฮสต์, credentials = แบบฟอร์มในผลิตภัณฑ์) ฟิลด์ข้อมูลรับรองที่ต้องเก็บสำหรับโหมด credentials และคู่มือการตั้งค่าในผลิตภัณฑ์ (เขียนขึ้นสำหรับแอปที่มีความสำคัญ หรือสร้างจากเมตาดาตาฟิลด์ของแอป โดยไม่ลิงก์ไปยังเอกสารภายนอก) แอป OAuth แบบใช้แอปของคุณเอง (bring-your-own) ยังระบุด้วยว่าแอป OAuth ของลูกค้าได้ลงทะเบียนสำหรับตัวแทนนี้แล้วหรือไม่ (byoConfigured) และ URL เปลี่ยนเส้นทางที่ต้องลงทะเบียนกับผู้ให้บริการ
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทน toolkit `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-info/{toolkit}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-info/{toolkit} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เชื่อมต่อแอปด้วยข้อมูลรับรองที่ผู้ใช้ระบุ (คีย์ API ฯลฯ ไม่ใช้ OAuth)
สร้างบัญชีที่เชื่อมต่อสำหรับแอปโหมด credentials โดยตรงจากแบบฟอร์มในผลิตภัณฑ์ โดยไม่ผ่านขั้นตอนการให้ความยินยอมแบบโฮสต์ ฟิลด์ข้อมูลรับรองมาจากเพย์โหลด connect-info ของแอป และต้องระบุทุกฟิลด์ที่จำเป็น ข้อมูลรับรองจะได้รับการตรวจสอบกับผู้ให้บริการในกรณีที่รองรับ (แบบพยายามอย่างดีที่สุด บางแอปจะปฏิเสธคีย์ที่ไม่ถูกต้องเมื่อตัวแทนเรียกใช้เครื่องมือครั้งแรกเท่านั้น) ชื่อแทนแบบไม่บังคับใช้ระบุบัญชีใหม่ (รองรับหลายบัญชี การเชื่อมต่อแอปที่เชื่อมต่ออยู่แล้วจะเพิ่มอีกบัญชีหนึ่ง)
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทนเนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-credentials
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-credentials \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ลงทะเบียนแอป OAuth ของลูกค้าเองสำหรับแอปแบบ BYO และเริ่มขั้นตอนการเชื่อมต่อ
สำหรับแอป OAuth แบบใช้แอปของคุณเอง (Xero, Shopify, ...): รับ client ID และ client secret ของแอป OAuth ที่ลูกค้าสร้างไว้กับผู้ให้บริการ (ตามคู่มือการตั้งค่าของแอป) ลงทะเบียนสำหรับตัวแทนนี้ (secret จะจัดเก็บไว้กับแพลตฟอร์มการผสานระบบต้นทางเท่านั้น ไม่จัดเก็บใน Performance Hub) และเริ่มขั้นตอนการลงชื่อเข้าใช้แบบโฮสต์ทันที คืนค่า URL การให้ความยินยอมสำหรับส่งผู้ใช้ไป ในรูปแบบเดียวกับปลายทาง connect การส่งอีกครั้งจะแทนที่แอปที่ลงทะเบียนไว้ของตัวแทน (เช่น หลังจากหมุนเวียน secret) บัญชีที่เชื่อมต่ออยู่แล้วยังคงใช้งานได้
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทนเนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-oauth-app
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-oauth-app \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เริ่มเชื่อมต่อชุดแอปในคลิกเดียวสำหรับตัวแทน (ขั้นตอน Connect Link แบบต่อเนื่อง)
เริ่มขั้นตอนการเชื่อมต่อแบบต่อเนื่องสำหรับทั้งชุดแอป (เช่น google-workspace) URL ที่คืนค่าจะเปิดหน้าจอการให้ความยินยอมของชุดเครื่องมือแรก เมื่อแต่ละขั้นเสร็จสิ้นจะเปลี่ยนเส้นทาง 302 ไปยังขั้นตอนของชุดเครื่องมือถัดไปทันที และสิ้นสุดที่หน้าแอปเพล็ต ph-ai-agent สมาชิกที่มีบัญชีเชื่อมต่ออยู่แล้วจะถูกข้าม การลองใหม่หลังจากล้มเหลวกลางทางจึงดำเนินการต่อกับแอปที่ขาดไปแทนการสร้างบัญชีซ้ำ เมื่อสมาชิกทุกรายเชื่อมต่อแล้ว ขั้นตอนทั้งหมดจะทำงานอีกครั้ง ซึ่งเป็นขั้นตอน "เพิ่มอีกบัญชี" โดยเจตนา
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทนเนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-suite
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-suite \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ยกเลิกการเชื่อมต่อบัญชีหนึ่งบัญชีจากตัวแทน
ลบบัญชีที่เชื่อมต่อหนึ่งบัญชี (รองรับหลายบัญชี บัญชีอื่นของแอปเดียวกันยังคงเชื่อมต่ออยู่) ระบบจะตรวจสอบว่าบัญชีเป็นของตัวแทนนี้ก่อนลบ หากเป็นบัญชีสุดท้ายของแอป ชุดเครื่องมือจะถูกนำออกจากชุดที่เชื่อมต่อของตัวแทน (เซสชันจะถูกสร้างใหม่เมื่อจำเป็นเพื่อให้รายการเครื่องมือของตัวแทนอัปเดต)
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทนเนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/disconnect
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/disconnect \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เปลี่ยนชื่อ (ตั้งชื่อแทนใหม่) ของบัญชีที่เชื่อมต่อของตัวแทน
ตั้งชื่อแทนที่แสดงของบัญชีที่เชื่อมต่อหนึ่งบัญชี โดยปกติชื่อแทนจะตั้งค่าโดยอัตโนมัติหลังจาก OAuth (จากข้อมูลตัวตนที่ลงชื่อเข้าใช้) ปลายทางนี้ใช้สำหรับการเปลี่ยนชื่อด้วยตนเองในกล่องโต้ตอบรายละเอียดแอป ชื่อแทนที่ว่างจะล้างป้ายกำกับ ระบบจะตรวจสอบว่าบัญชีเป็นของตัวแทนนี้ก่อนอัปเดตต้นทาง
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทนเนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/rename-account
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/rename-account \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เปิด/ปิดบริการในตัวของ Performance Hub สำหรับตัวแทน
เปิดหรือปิดบริการในตัวที่เปิดอยู่เสมอหนึ่งรายการ (Smart Search, Weather, ...) สำหรับตัวแทนนี้ บริการในตัวไม่ต้องเชื่อมต่อหรือใช้ OAuth เนื่องจากรวมอยู่กับตัวแทนทุกตัวและเปิดใช้โดยค่าเริ่มต้น สวิตช์นี้จะบันทึกการแทนที่ค่าของแต่ละตัวแทนและสร้างเซสชันต้นทางของตัวแทนใหม่ทันทีเพื่อให้ชุดเครื่องมืออัปเดต โปรดทราบว่าสวิตช์ "External apps" ที่แยกต่างหาก (เส้นทาง /enable) เป็นสวิตช์ปิดหลักสำหรับเซิร์ฟเวอร์ MCP ของแอปทั้งหมด เมื่อปิดอยู่ บริการในตัวก็จะใช้งานไม่ได้เช่นกันไม่ว่าสวิตช์ของแต่ละบริการจะเป็นอย่างไร
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (จำเป็น) balena UUID ของอุปกรณ์ตัวแทน slug `string` (จำเป็น) slug ของบริการในตัวเนื้อหาคำขอ
ปลายทาง (Endpoint)
PATCH /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/built-in/{slug}
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/built-in/{slug} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เชื่อมโยงอุปกรณ์ตัวแทน AI กับสถานที่
การเชื่อมโยงโดยใช้เมตาดาตาเป็นหลัก ค้นหาอุปกรณ์ตามหมายเลขซีเรียลในเมตาดาตาอุปกรณ์แบบเรียลไทม์ อุปกรณ์ต้องออนไลน์ จากนั้นจึงสร้างแถวการลงทะเบียนเมื่อจำเป็น กำหนดภูมิภาครีเลย์ Chisel + พอร์ตทันเนล + secret ลงทะเบียนช่องนั้นบนรีเลย์ และพุชการกำหนดค่าสถานที่ + ทันเนลไปยังอุปกรณ์ผ่าน Balena อุปกรณ์ใหม่จะได้รับบัญชีบริการ MCP เริ่มต้นด้วย (เปิดใช้ จำกัดขอบเขตที่สถานที่นี้ มีความสามารถทั้งหมด) การจับคู่ใหม่จะคงสิทธิ์ MCP ที่มีอยู่ไว้ การตั้งค่าขั้นสูงแบบไม่บังคับจะแทนที่ค่าเริ่มต้นที่กำหนดไว้ ณ เวลาจับคู่ ได้แก่ การกำหนดค่าการสำรองข้อมูล การเปิด/ปิด MCP และการจำกัดการเข้าถึง และ `restoreFrom` จะตั้งค่าอุปกรณ์ใหม่จากข้อมูลสำรองบนคลาวด์ของอุปกรณ์อื่นในสถานที่ (ต้นทางที่ใช้งานอยู่หรือปลดระวางแล้ว โดยเข้าคิวการกู้คืนข้ามที่เก็บ และคืนค่าเป็น `restoreRequest` สำหรับสอบถามความคืบหน้า)
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/associate/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/associate/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แสดงรายการอุปกรณ์ตัวแทน AI ของสถานที่
คืนค่าอุปกรณ์ตัวแทน AI ของสถานที่พร้อมสถานะออนไลน์ + ทันเนลแบบเรียลไทม์ (ใช้โดยตัวสลับอุปกรณ์ของแอปเพล็ต)
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/list/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/list/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สถานะการอัปเดต + การออนไลน์ของตัวแทน AI
คืนค่าว่าอุปกรณ์ออนไลน์หรือไม่ มีการอัปเดตที่พร้อมใช้งาน/รอดำเนินการหรือไม่ และรุ่นที่เสนอ (รุ่นที่ตรึงไว้ของกลุ่มอุปกรณ์เมื่อกลุ่มถูกตรึงไว้ หรือรุ่นสูงสุดที่สำเร็จเมื่อกลุ่มติดตามรุ่นล่าสุด)
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/update-status/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สถานะอุปกรณ์แบบเรียลไทม์ + เมตริกของตัวแทน AI
คืนค่าสแนปช็อตที่คัดสรรสำหรับแถบเมตริกและแผงจัดการของแอปเพล็ต ได้แก่ ฟิลด์ตัวตน + การลงทะเบียน สถานะการทำงาน + การเชื่อมต่อ เวอร์ชันซอฟต์แวร์ และเมตริก heartbeat ล่าสุด (CPU อุณหภูมิ หน่วยความจำ พื้นที่จัดเก็บแต่ละจุดเมานต์ ระยะเวลาทำงาน เครือข่าย) รวมข้อมูลจากสัญญาณเมตาดาตาของอุปกรณ์ + สถานะการอัปเดตของ Balena ให้อยู่ในระดับเดียวกัน ข้อมูลส่วนใดส่วนหนึ่งอาจหายไประหว่างที่ระบบขัดข้องชั่วคราว
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/device-status/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/device-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คำอธิบายโดย AI สำหรับรายงานสถานะอุปกรณ์
คืนค่าคำอธิบายสั้น ๆ สำหรับผู้ปฏิบัติงานเกี่ยวกับปัญหาสถานะที่ประเมินได้ในปัจจุบัน ข้อเท็จจริงและขั้นตอนตามคู่มือจะอยู่ใน device-status เสมอ ย่อหน้าเพิ่มเติมนี้เป็นแบบพยายามอย่างดีที่สุดและอาจเป็น null
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/health/{club}/{uuid}/explain
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/health/{club}/{uuid}/explain \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างโทเค็นการเข้าถึงรีเลย์โดยตรงสำหรับตัวแทน AI
คืนค่า URL ที่ลงนามแล้วอายุสั้น ซึ่งเบราว์เซอร์ใช้เชื่อมต่อโดยตรงกับเกตเวย์รีเลย์ระดับภูมิภาคของอุปกรณ์ (ตัดการส่งผ่าน PH/Sydney ระดับโลกออก) พร้อมโทเค็น HS256 PH ยังคงเป็นผู้มีอำนาจ (ตรวจสอบ Google SSO + โมดูล/สถานที่ที่นี่) และเกตเวย์รีเลย์จะตรวจสอบโทเค็น พร็อกซี /ai-agent-ui ยังคงเป็นทางสำรอง
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/access/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ส่งข้อความแชตเข้าสู่เซสชันตัวแทน AI (การตอบกลับในการแจ้งเตือน)
รีเลย์ฝั่งเซิร์ฟเวอร์ที่การดำเนินการตอบกลับในการแจ้งเตือนแบบพุชบนเว็บใช้ service worker จะ POST มาที่นี่ (same-origin พร้อมคุกกี้ SSO) เพื่อให้ตอบกลับได้แม้ไม่ได้เปิดแท็บ Performance Hub ไว้ PH จะระบุเป้าหมายรีเลย์ของอุปกรณ์ (ใช้การค้นหาเดียวกับพร็อกซี /ai-agent-ui) ระบุ x-ph-user เพื่อระบุผู้เริ่มรอบการทำงาน (การแจ้งเตือนแบบพุชเมื่อเสร็จสิ้นจะส่งกลับไปยังผู้ใช้นี้) และส่งต่อไปยัง /api/chat/start ของอุปกรณ์พร้อม session id
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/reply
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/reply \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อ่านการตั้งค่าการควบคุมการเข้าถึงของตัวแทน AI (เจ้าของ)
คืนค่าบล็อกการเข้าถึงของอุปกรณ์ (โหมด รายการที่อนุญาต การมองเห็น สวิตช์ PH Support) พร้อมคำขอเข้าถึงที่รอดำเนินการ เจ้าของอุปกรณ์อ่านได้ ผู้ใช้อื่นจะได้รับ 403
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/access-settings/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-settings/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการตั้งค่าการควบคุมการเข้าถึงของตัวแทน AI (เจ้าของ)
เขียนโหมด (org/restricted) รายการที่อนุญาตแบบจำกัด การมองเห็นรายการ (all/admins) และสวิตช์ "permit access from Performance Hub Support" อนุญาตสำหรับเจ้าของอุปกรณ์ ตัวเจ้าของเองเปลี่ยนได้ผ่าน reallocate-owner เท่านั้น คำขอเข้าถึงที่อนุมัติแล้วจะคงอยู่ ผู้ร้องขอที่ยังได้รับอนุมัติจะถูกรวมกลับเข้าไปในรายการที่อนุญาตที่บันทึกไว้ การนำผู้ใดออกจากรายการที่ส่งจะเพิกถอนการอนุมัติของผู้นั้น (คำขอเปลี่ยนเป็น denied และผู้นั้นสามารถร้องขอใหม่ได้)
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/access-settings/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-settings/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เปลี่ยนเจ้าของตัวแทน AI
โอนความเป็นเจ้าของอุปกรณ์ให้ผู้ใช้ Performance Hub รายอื่น จำกัดเฉพาะเจ้าของบัญชี (มีสิทธิ์เข้าถึงโมดูลการเรียกเก็บเงิน SaaS) ใช้เป็นทางออกเมื่อเจ้าของตัวแทนแบบจำกัดสิทธิ์ลาออก ทั้งเจ้าของเดิมและเจ้าของใหม่จะได้รับการแจ้งเตือน (ในแอป + พุช + อีเมล)
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/reallocate-owner/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/reallocate-owner/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
รายชื่อผู้ใช้ของสถานที่สำหรับตัวเลือกรายการที่อนุญาต / เจ้าของของตัวแทน AI
คืนค่าอีเมล + ชื่อ (+ แฟล็ก isOrgAdmin) ของผู้ใช้ทุกคนที่บทบาทให้สิทธิ์เข้าถึงสถานที่นี้ จำกัดเฉพาะเจ้าของอุปกรณ์และผู้มีสิทธิ์โอน (เจ้าของบัญชี) เพื่อไม่ให้ผู้ใช้ทั่วไปแสดงรายชื่อผู้ใช้ทั้งหมดได้
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/org-users/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/org-users/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ขอสิทธิ์เข้าถึงตัวแทน AI แบบจำกัดสิทธิ์
สร้าง (หรือเปิดใหม่) คำขอเข้าถึงอุปกรณ์แบบจำกัดสิทธิ์ของผู้ร้องขอ เป็นแบบ idempotent ต่อผู้ใช้+อุปกรณ์ เจ้าของจะได้รับการแจ้งเตือนในแอป แบบพุชบนเว็บ และทางอีเมล พร้อมลิงก์ตรงไปยังโมดูลตัวแทน
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/access-request/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-request/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อนุมัติหรือปฏิเสธคำขอเข้าถึงตัวแทน AI (เจ้าของ)
เจ้าของอุปกรณ์ดำเนินการกับคำขอที่รอดำเนินการ การอนุมัติจะเพิ่มผู้ร้องขอลงในรายการที่อนุญาตของอุปกรณ์ ไม่ว่าผลจะเป็นอย่างไร ผู้ร้องขอจะได้รับการแจ้งเตือน (ในแอป + พุช + อีเมล)
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/access-request-resolve/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-request-resolve/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อนุญาต + นำการอัปเดตตัวแทน AI ไปใช้
ตรึงอุปกรณ์ไว้ที่รุ่นที่เสนอ (รุ่นที่ตรึงไว้ของกลุ่มอุปกรณ์ หรือรุ่นสูงสุดที่สำเร็จเมื่อกลุ่มติดตามรุ่นล่าสุด) และปลดล็อกการอัปเดตเพื่อให้ balena supervisor นำไปใช้ สถานะบนวอลุ่มข้อมูลของอุปกรณ์จะยังคงอยู่หลังการอัปเดต
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/update/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ตั้งเวลาอัปเดตตัวแทน AI ไว้ภายหลัง
บันทึกเวลาติดตั้งที่กำหนดไว้ในการลงทะเบียนของอุปกรณ์ งานแบ็กเอนด์ที่ทำงานซ้ำ (ทุก 5 นาที) จะนำการอัปเดตไปใช้ (ตรึง + ปลดล็อก) เมื่อถึงเวลาที่กำหนด การตั้งเวลาจะแทนที่กำหนดการเดิมของอุปกรณ์
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/update-schedule/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-schedule/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ยกเลิกการอัปเดตตัวแทน AI ที่ตั้งเวลาไว้
ล้างการติดตั้งที่ตั้งเวลาไว้และรอดำเนินการของอุปกรณ์ (ไม่มีผลหากไม่มีการตั้งเวลา)
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/devices/ph-ai-agent/update-schedule/{club}/{uuid}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-schedule/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เรียกใช้คำสั่งระยะไกลบนอุปกรณ์ตัวแทน AI
เผยแพร่คำสั่ง MQTT ที่อยู่ในรายการที่อนุญาต (รีบูต รีสตาร์ตคอนเทนเนอร์ ล็อก/ปลดล็อกการอัปเดต การจัดการ Wi-Fi) ไปยัง device-controller ที่ทำงานบนตัวแทน AI อุปกรณ์ต้องเชื่อมโยงกับสถานที่แล้ว
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/command/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/command/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อัปเดตการกำหนดค่าของตัวแทน AI ที่เกี่ยวข้องกับสถานที่
บันทึกการตั้งค่าที่ผู้ดูแลแก้ไขได้ของตัวแทน AI ที่เชื่อมโยงไว้ ได้แก่ ชื่ออุปกรณ์ ตำแหน่งที่ตั้งจริงของอุปกรณ์ และรอบการรีบูตตามกำหนดเวลา ระบบจะส่งกำหนดการรีบูตไปยังอุปกรณ์เป็นตัวแปรสภาพแวดล้อม Balena ชื่อ REBOOT_DEVICE ด้วย (เวลา 02:00 น. ตามเวลาท้องถิ่น) ซึ่งตรงกับลักษณะการทำงานของ Display Screens
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/config/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/config/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
สถานที่ที่สามารถย้ายตัวแทน AI ของสถานที่นี้ไปได้
แสดงรายการสถานที่ในองค์กรเดียวกันที่ผู้ใช้ที่ลงชื่อเข้าใช้สามารถเข้าถึงได้ (ไม่รวมสถานที่ปัจจุบัน) สำหรับตัวเลือก "ย้ายไปยังสถานที่อื่น" การย้ายจริงดำเนินการโดย POST /api/devices/move/:club ซึ่งบังคับใช้กฎองค์กรเดียวกันและกฎการเข้าถึงสถานที่ปลายทางแบบเดียวกันที่ฝั่งเซิร์ฟเวอร์
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/move-targets/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/move-targets/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ขอบเขตการเข้าถึง MCP ที่ผู้ร้องขอสามารถให้สิทธิ์แก่ตัวแทน AI ของสถานที่ได้
แสดงสิ่งที่ผู้ใช้ที่ลงชื่อเข้าใช้ได้รับอนุญาตให้มอบแก่บัญชีบริการ MCP ของตัวแทน AI ในองค์กรของสถานที่นี้ ได้แก่ สถานที่/ภูมิภาคที่อยู่ในขอบเขตการเข้าถึงของผู้ใช้เอง ผู้ใช้สามารถให้สิทธิ์ขอบเขตทั้งองค์กรได้หรือไม่ ชุดโมดูลที่ผู้ใช้มี และแค็ตตาล็อกเครื่องมือ MCP ทั้งหมด (สำหรับการกำหนดสิทธิ์รายเครื่องมือขั้นสูง) UI ใช้ข้อมูลนี้เพื่อให้ผู้ใช้เห็นเฉพาะตัวเลือกที่อยู่ในขอบเขตสิทธิ์ของตนเองเท่านั้น และปลายทาง POST ของ mcp-access จะบังคับใช้การจำกัดสิทธิ์แบบเดียวกันที่ฝั่งเซิร์ฟเวอร์
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/mcp-grantable/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-grantable/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูการกำหนดค่าบัญชีบริการ MCP ของตัวแทน AI
แสดงการกำหนดค่าการเข้าถึง MCP ของอุปกรณ์ (ขอบเขต โมดูล การกำหนดสิทธิ์เครื่องมือ และฟิลด์การตรวจสอบ)
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/mcp-access/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-access/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
กำหนดค่าบัญชีบริการ MCP ของตัวแทน AI
บันทึกการกำหนดค่าการเข้าถึง MCP ของอุปกรณ์ โดยจำกัดสิทธิ์ ณ เวลาที่ให้สิทธิ์ ผู้ร้องขอสามารถให้สิทธิ์ได้เฉพาะสถานที่/ภูมิภาคที่อยู่ในขอบเขตการเข้าถึงของตนเอง ให้สิทธิ์ขอบเขตองค์กรได้เฉพาะเมื่อมีบทบาทระดับทั้งองค์กร และให้สิทธิ์ได้เฉพาะโมดูลที่ตนเองมีในองค์กรของสถานที่นั้น ระบบจะส่งแฟล็ก enabled ไปยังอุปกรณ์เป็นตัวแปรสภาพแวดล้อม Balena ชื่อ PH_MCP_ENABLED ด้วย
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/mcp-access/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-access/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ดูการกำหนดค่า VPN ของตัวแทน AI (ปกปิดข้อมูลสำคัญ)
แสดงแฟล็กการรองรับ VPN และรายการการเชื่อมต่อของอุปกรณ์ ระบบจะไม่ส่งเนื้อหาโปรไฟล์และค่าข้อมูลรับรองกลับมา จะส่งกลับเฉพาะเมทาดาทาที่ได้ตอนนำเข้า (remotes, routes, DNS) และแฟล็ก has-credential เท่านั้น สถานะสดของแต่ละการเชื่อมต่อได้มาจากปลายทาง device-status (beacon metadata.vpn)
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปิด/ปิดการรองรับ VPN ของตัวแทน AI
เปิดหรือปิดฟีเจอร์ VPN ของอุปกรณ์ ระบบจะส่งตัวแปรอุปกรณ์ balena ชื่อ PH_VPN_ENABLED และแจ้งเตือนอุปกรณ์ (MQTT vpnConfigChanged) เมื่อปิด การเชื่อมต่อจะยังคงอยู่ (อุโมงค์หยุดทำงาน แต่การกำหนดค่ายังคงอยู่เพื่อเปิดใช้งานอีกครั้ง)
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
นำเข้าโปรไฟล์ OpenVPN ลงในตัวแทน AI
รับไฟล์อัปโหลดที่เข้ารหัสแบบ base64 ได้แก่ ไฟล์ .ovpn/.conf เดี่ยว ชุดไฟล์แยก (การกำหนดค่า + ใบรับรอง/คีย์) และไฟล์บีบอัด (.zip, ไฟล์ส่งออก Pritunl แบบ .tar/.tgz, .tblk ของ Tunnelblick, .visc/.visz ของ Viscosity) โปรไฟล์จะถูกปรับให้อยู่ในรูปแบบอินไลน์มาตรฐาน และแต่ละโปรไฟล์จะกลายเป็นการเชื่อมต่อหนึ่งรายการ (นำเข้าในสถานะไม่ได้เชื่อมต่อ ให้ป้อนข้อมูลรับรองแล้วจึงเชื่อมต่อ) ไฟล์อัปโหลดที่ใช้งานไม่ได้จะได้รับข้อผิดพลาด 400 พร้อมคำแนะนำที่นำไปแก้ไขได้
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/vpn-import/{club}/{uuid}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-import/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อัปเดตการเชื่อมต่อ VPN ของตัวแทน AI (ชื่อ / ข้อมูลรับรอง / split-DNS)
อัปเดตการเชื่อมต่อที่จัดเก็บไว้ ฟิลด์ข้อมูลรับรองเป็นแบบเขียนอย่างเดียว (ไม่ระบุ = คงค่าที่จัดเก็บไว้ สตริงว่าง = ล้างค่า) การเปลี่ยนแปลงข้อมูลรับรอง/split-DNS จะเพิ่มเลขรุ่นของการเชื่อมต่อ เพื่อให้อุโมงค์ที่ทำงานอยู่เริ่มใหม่ด้วยค่าใหม่
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-connection/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ลบการเชื่อมต่อ VPN ของตัวแทน AI
นำการเชื่อมต่อออกจากการลงทะเบียนและแจ้งเตือนอุปกรณ์ ซึ่งจะปิดอุโมงค์และล้างโปรไฟล์/ข้อมูลรับรองที่แคชไว้
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น) connectionId `string` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}/{connectionId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}/{connectionId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เชื่อมต่อ / ยกเลิกการเชื่อมต่อ VPN ของตัวแทน AI
โมเดลสถานะที่ต้องการ: ตั้งค่าแฟล็ก enabled ของการเชื่อมต่อในการลงทะเบียนและแจ้งเตือนอุปกรณ์ (MQTT vpnConfigChanged แบบไม่มีเพย์โหลด) อุปกรณ์จะดึงสถานะที่เชื่อถือได้ผ่านการเรียก universal-api ที่ยืนยันตัวตนด้วย JWT และปรับอุโมงค์ให้สอดคล้องกัน หากพลาดการแจ้งเตือน สถานะจะสอดคล้องกันในการซิงค์ตามรอบ
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/vpn-command/{club}/{uuid}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-command/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ดูการกำหนดค่าและสถานะการสำรองข้อมูลบนคลาวด์ของตัวแทน AI
แสดงการตั้งค่าการสำรองข้อมูลของอุปกรณ์ (เปิดใช้งาน ระยะเวลาเก็บรักษา ภูมิภาคที่จัดเก็บ) สถานะการสำรองข้อมูลล่าสุด (การสำรองครั้งล่าสุด ขนาด ข้อผิดพลาด) ภูมิภาคอัตโนมัติที่ระบบเลือก และภูมิภาคที่จัดเก็บที่มีให้เลือก ระบบจะไม่ส่งรหัสผ่านของที่เก็บ restic กลับมา
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/backup-config/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการกำหนดค่าการสำรองข้อมูลบนคลาวด์ของตัวแทน AI
บันทึกค่าเปิดใช้งาน/ระยะเวลาเก็บรักษา/ภูมิภาค มีผลในการสำรองข้อมูลรายชั่วโมงครั้งถัดไปของอุปกรณ์ (อุปกรณ์จะขอบริบทการทำงานจาก PH ก่อนการทำงานทุกครั้ง) จึงไม่ต้องรีสตาร์ทอุปกรณ์
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/backup-config/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-config/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แสดงรายการแหล่งกู้คืนข้อมูลสำรองสำหรับการจับคู่ตัวแทน AI ใหม่
มุมมองระดับสถานที่สำหรับตัวเลือก "กู้คืนจากข้อมูลสำรอง" ในกล่องโต้ตอบเพิ่มตัวแทน: แสดงการลงทะเบียนทุกรายการในสถานที่ ทั้งที่ใช้งานอยู่และที่เลิกใช้งาน/ถูกแทนที่แล้ว ซึ่งยังมีที่เก็บข้อมูลสำรองที่ถอดรหัสได้และมีจุดกู้คืนที่ใช้งานได้อย่างน้อยหนึ่งจุด พร้อมสแนปช็อตล่าสุด และยังส่งรายการตัวเลือกการกำหนดค่าการสำรองข้อมูล (allowedRetentionDays, availableRegions) กลับมาด้วย เพื่อให้กล่องโต้ตอบเติมตัวเลือกได้โดยไม่ต้องใช้ UUID ของอุปกรณ์
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/backup-sources/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-sources/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการจุดกู้คืนข้อมูลสำรองของตัวแทน AI
แสดงดัชนีสแนปช็อตของอุปกรณ์ (ใหม่สุดก่อน) จาก DynamoDB โดยไม่ต้องติดต่ออุปกรณ์หรือที่เก็บข้อมูล พร้อมสถานะคำขอสำรองข้อมูลด้วยตนเอง / กู้คืนปัจจุบันสำหรับการตรวจสอบแบบวนซ้ำของแผงลิ้นชัก คำขอที่ค้างอยู่ (ไม่เคยถูกรับไปดำเนินการ หรือไม่มีสัญญาณความคืบหน้า) จะแสดงเป็นล้มเหลว เพื่อให้ UI ส่งคำขอใหม่ได้เสมอ
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ขอสำรองข้อมูลตัวแทน AI ด้วยตนเองทันที
เขียนคำขอการทำงานด้วยตนเอง (พร้อมหมายเหตุของผู้ใช้) ลงในแถวการลงทะเบียนและแจ้งเตือนอุปกรณ์ผ่าน MQTT อุปกรณ์จะดึงคำขอที่ตรวจสอบแล้วผ่านการเรียก run-context ของ universal-api ที่ยืนยันตัวตนด้วย JWT แม้ไม่มี MQTT คำขอก็จะถูกรับในรอบตัวจัดกำหนดการครั้งถัดไป คำขอจะถูกปฏิเสธขณะที่มีการสำรองข้อมูลหรือกู้คืนอื่นกำลังดำเนินการอยู่
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/backup-run/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-run/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ปักหมุดหรือเลิกปักหมุดจุดกู้คืนของตัวแทน AI
จุดกู้คืนที่ปักหมุดไว้จะได้รับการป้องกันจากการตัดทิ้งตามระยะเวลาเก็บรักษา โดยการบำรุงรักษาประจำคืนของอุปกรณ์จะได้รับ ID ของสแนปช็อตที่ปักหมุดผ่านการเรียก run-context และยกเว้นสแนปช็อตเหล่านั้นจาก restic forget และแถวดัชนีของจุดกู้คืนเหล่านี้จะไม่หมดอายุตาม TTL การเลิกปักหมุดจะคืนลักษณะการเก็บรักษาตามปกติ
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/backup-pin/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-pin/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
กู้คืนตัวแทน AI จากจุดกู้คืนข้อมูลสำรอง
เขียนคำขอกู้คืนลงในแถวการลงทะเบียนและแจ้งเตือนอุปกรณ์ การกู้คืนแบบเต็มจะเขียนทับ /data และ /home/hermeswebui (อุปกรณ์จะสร้างสแนปช็อตความปลอดภัยก่อนกู้คืนโดยอัตโนมัติและหยุดตัวแทนระหว่างการกู้คืน) และต้องพิมพ์ชื่ออุปกรณ์เพื่อยืนยัน หากส่ง `paths` ระบบจะกู้คืนระดับไฟล์เฉพาะพาธเหล่านั้นแทนโดยไม่รบกวนการทำงาน สามารถเลือกให้ปักหมุดอุปกรณ์กลับไปยังรุ่นซอฟต์แวร์ของสแนปช็อตเมื่อการกู้คืนข้อมูลเสร็จสิ้น (ดู backup-restore-release)
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/backup-restore/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-restore/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ใช้รุ่นซอฟต์แวร์ที่บันทึกไว้ในการกู้คืนที่เสร็จสมบูรณ์
ขั้นตอนสุดท้ายของการกู้คืนที่ขอรุ่นซอฟต์แวร์ของสแนปช็อต: เมื่ออุปกรณ์รายงานว่าการกู้คืนข้อมูลเสร็จสิ้น ปลายทางนี้จะปักหมุดอุปกรณ์ไว้กับรุ่นที่จัดเก็บไว้และปลดล็อกการอัปเดต (กลไกเดียวกับปลายทางอัปเดต) ทำงานตามการตรวจสอบแบบวนซ้ำของแผงลิ้นชัก และเรียกซ้ำได้อย่างปลอดภัย โดยหมุดที่จัดเก็บไว้จะถูกล้างเมื่อใช้งานแล้ว
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/backup-restore-release/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-restore-release/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เรียกดูไฟล์ภายในจุดกู้คืนข้อมูลสำรอง
แสดงรายการไดเรกทอรีหนึ่งระดับของสแนปช็อต restic โดยให้บริการจากที่เก็บ Wasabi ที่ฝั่งเซิร์ฟเวอร์ทั้งหมด (ใช้งานได้แม้อุปกรณ์ออฟไลน์) อ่านเฉพาะเมทาดาทาของโครงสร้างไฟล์ และไม่ดาวน์โหลดข้อมูลไฟล์ใดๆ สำหรับการแสดงรายการ
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น) takenAt `number` (จำเป็น) path `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/backup-files/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-files/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาชื่อไฟล์ภายในจุดกู้คืนข้อมูลสำรอง
ค้นหาชื่อไฟล์แบบไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ตั้งแต่ไดเรกทอรีที่ระบุลงไป โดยให้บริการที่ฝั่งเซิร์ฟเวอร์จากเมทาดาทาโครงสร้างไฟล์ของ restic (ไม่อ่านข้อมูลไฟล์ ใช้งานได้แม้อุปกรณ์ออฟไลน์) ส่งผลลัพธ์แบบสตรีมและหยุดเมื่อพบรายการที่ตรงกัน 200 รายการแรก
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น) takenAt `number` (จำเป็น) q `string` (จำเป็น) path `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/backup-search/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-search/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สิ่งที่เปลี่ยนแปลงระหว่างจุดกู้คืนข้อมูลสำรองสองจุด
เรียกใช้ restic diff ที่ฝั่งเซิร์ฟเวอร์ระหว่างสแนปช็อตสองรายการของอุปกรณ์ (เฉพาะเมทาดาทาโครงสร้างไฟล์) และส่งรายการไฟล์ที่เพิ่ม/ลบ/แก้ไข (สูงสุด 500 รายการ) พร้อมสถิติสรุป ผลลัพธ์จะถูกแคชไว้ เนื่องจากสแนปช็อตไม่สามารถเปลี่ยนแปลงได้
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น) fromTakenAt `number` (จำเป็น) toTakenAt `number` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/backup-diff/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-diff/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ประวัติเวอร์ชันของไฟล์หนึ่งไฟล์ในทุกจุดกู้คืน
เรียกใช้ restic find ที่ฝั่งเซิร์ฟเวอร์หนึ่งครั้งในทุกสแนปช็อตของที่เก็บข้อมูลของอุปกรณ์ แล้วรวมให้เหลือเฉพาะเวอร์ชันที่แตกต่างกัน (ผลลัพธ์ที่ต่อเนื่องกันซึ่งมีขนาดและ mtime เหมือนกันจะถูกรวมเข้าด้วยกัน) และเชื่อมกับแถวดัชนีสแนปช็อตเพื่อแสดงวันที่/ประเภท/หมายเหตุ
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น) path `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/backup-file-versions/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-file-versions/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาไฟล์ตามชื่อในทุกจุดกู้คืนของข้อมูลสำรองของอุปกรณ์
เส้นทางการกู้คืนไฟล์ที่ถูกลบ: เรียกใช้ restic find ที่ฝั่งเซิร์ฟเวอร์หนึ่งครั้งในทุกสแนปช็อตของที่เก็บข้อมูล (ไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ แบบสตริงย่อยหรือ glob) จัดกลุ่มตามพาธพร้อมจุดกู้คืนที่แต่ละไฟล์ปรากฏอยู่ ไฟล์ที่ถูกลบออกจากอุปกรณ์ยังคงค้นหาได้ที่นี่ ตราบใดที่ยังมีจุดกู้คืนที่มีไฟล์นั้นอยู่
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น) q `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/backup-find/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-find/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดาวน์โหลดไฟล์เดียวจากจุดกู้คืนข้อมูลสำรอง
สตรีมไฟล์หนึ่งไฟล์จากที่เก็บ restic ไปยังเบราว์เซอร์โดยตรง (เป็นไฟล์แนบ) ไดเรกทอรีจะถูกสตรีมเป็นไฟล์ tar มีการจำกัดขนาด และให้บริการที่ฝั่งเซิร์ฟเวอร์ จึงใช้งานได้แม้อุปกรณ์ออฟไลน์
พารามิเตอร์
club `string` (จำเป็น) uuid `string` (จำเป็น) takenAt `number` (จำเป็น) path `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/devices/ph-ai-agent/backup-file-download/{club}/{uuid}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-file-download/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เลิกใช้งานตัวแทน AI จากสถานที่
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/decommission/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
นำตัวแทน AI ออกจากสถานที่และรีเซ็ตฮาร์ดแวร์เป็นค่าจากโรงงาน
ยกเลิกการเชื่อมโยงอุปกรณ์โดยสมบูรณ์เพื่อให้จับคู่กับสถานที่ใดก็ได้ และล้างข้อมูลทั้งหมดใน NUC การล้างข้อมูลจะถูกตั้งไว้ผ่านตัวแปรอุปกรณ์ balena ชื่อ PH_FACTORY_RESET (ค่า nonce แบบใช้ครั้งเดียว) ก่อนการรื้อถอนบนคลาวด์ จึงยังคงมีผลแม้อุปกรณ์ออฟไลน์ขณะนำออก โดยการล้างข้อมูลจะทำงานเมื่ออุปกรณ์เชื่อมต่อครั้งถัดไป การแจ้งเตือน MQTT factoryReset ทำให้กรณีที่อุปกรณ์ออนไลน์มีผลทันที จากนั้นการรื้อถอนบนคลาวด์จะเพิกถอนข้อมูลรับรองและสิทธิ์ทั้งหมด ล้างการผูกสถานที่ใน Balena (ตัวแปรอุปกรณ์ + แท็ก club) และ clubID ในเมทาดาทา ลบคำขอการเข้าถึงและระเบียน DNS ของ LAN ข้อมูลสำรองบนคลาวด์จะยังคงเก็บไว้: ดัชนีสแนปช็อตและรหัสผ่านที่เก็บข้อมูลจะยังคงอยู่ในการลงทะเบียนที่ถูกลบแบบ soft-delete และใช้เป็นแหล่งกู้คืนได้เมื่อเพิ่มอุปกรณ์ทดแทน ต้องพิมพ์ชื่ออุปกรณ์เพื่อยืนยัน
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/reset/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/reset/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แทนที่ตัวแทน AI ที่เสียด้วย NUC เครื่องใหม่ (การกู้คืนจากภัยพิบัติ)
การแทนที่อุปกรณ์ในขั้นตอนเดียว: เชื่อมโยง NUC ทดแทน (ช่องอุโมงค์ ข้อมูลลับ ตัวแปร balena ค่าเริ่มต้นการสำรองข้อมูล) โอนชื่อ ตำแหน่งที่ตั้ง กำหนดการรีบูต การตั้งค่าการสำรองข้อมูล การบล็อกการเข้าถึง และสิทธิ์ MCP ของอุปกรณ์เดิม เปลี่ยนคีย์ดัชนีสแนปช็อตเดิมให้เป็นของอุปกรณ์ใหม่ (เพื่อให้ยังเรียกดูประวัติการสำรองข้อมูลทั้งหมดได้) เลิกใช้งานการลงทะเบียนเดิม (ประทับ replacedBy / replacedFrom) และหาก `restore` ไม่ใช่ false จะเข้าคิวการกู้คืนแบบเต็มของจุดกู้คืนที่เลือกจากที่เก็บข้อมูลสำรองของอุปกรณ์เดิมลงในฮาร์ดแวร์ใหม่ ใช้งานได้แม้อุปกรณ์เดิมเสียหรือออฟไลน์ ต้องพิมพ์ชื่ออุปกรณ์เดิมเพื่อยืนยัน ใช้ได้เฉพาะภายในสถานที่เดียวกันเท่านั้น
พารามิเตอร์
club `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/devices/ph-ai-agent/replace/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/replace/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แปลงลิงก์สั้นจาก QR ของอุปกรณ์ Performance Hub เป็น Deep Link ปลายทาง เพื่อให้ตัวสแกนในหน้าเพิ่มอุปกรณ์ตรวจหาประเภทอุปกรณ์ได้ ระบบจะติดตามเฉพาะโฮสต์ performancehub.co เท่านั้น
พารามิเตอร์
url `string` (จำเป็น) ลิงก์สั้นที่สแกนปลายทาง (Endpoint)
GET /api/devices/resolve-qr
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/resolve-qr \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ทดสอบการเชื่อมต่อกับ Unifi Controller ของสถานที่ และตรวจสอบว่าข้อมูลรับรองถูกต้องหรือไม่
พารามิเตอร์
facilityID `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการทดสอบการเชื่อมต่อ unifiปลายทาง (Endpoint)
GET /api/devices/testUnifiController/{facilityID}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/devices/testUnifiController/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตอุปกรณ์ IoT ทั่วไปให้เชื่อมโยงกับสถานที่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการอัปเดตอุปกรณ์ body `string` (จำเป็น) ออบเจ็กต์ JSON ของพารามิเตอร์การอัปเดตปลายทาง (Endpoint)
PUT /api/devices/updateGenericDevice/{club}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/devices/updateGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงจำนวนข้อตกลงที่ค้างอยู่และต้องดำเนินการ ตามผู้ใช้และคลับที่เชื่อมโยงกับผู้ใช้นั้น
ปลายทาง (Endpoint)
GET /api/agreements/agreements-outstanding
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agreements/agreements-outstanding \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการข้อตกลงทั้งหมดที่ใช้ได้กับคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง contracts-sort `string` (ไม่บังคับ) เรียงข้อตกลงตาม date-effective หรือตามตัวอักษร ค่าเริ่มต้นคือ date-effective contracts-acknowledgement `string` (ไม่บังคับ) กรองข้อตกลงตาม all, acknowledged หรือ unacknowledged ค่าเริ่มต้นคือ all contracts-requirement `string` (ไม่บังคับ) กรองข้อตกลงตาม all, signature, checkbox, popup หรือ none ค่าเริ่มต้นคือ all contracts-status `string` (ไม่บังคับ) กรองข้อตกลงตาม all, active หรือ archived ค่าเริ่มต้นคือ allปลายทาง (Endpoint)
GET /api/agreements/list-agreements/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/agreements/list-agreements/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลงนามในข้อตกลงตาม ID ของข้อตกลง
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่ลงนามในข้อตกลง agreementid `string` (จำเป็น) ID ของข้อตกลงที่กำลังลงนาม body `string` (จำเป็น) ออบเจ็กต์ JSON ที่มีข้อตกลงและพารามิเตอร์ที่จะเพิ่ม/อัปโหลดเข้าสู่ระบบปลายทาง (Endpoint)
POST /api/agreements/sign/{club}/{agreementid}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/agreements/sign/{club}/{agreementid} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สรุป Model Router ของสถานที่ (การกำหนดค่า ยอดคงเหลือ ค่าใช้จ่าย)
พารามิเตอร์
clubID `string` (จำเป็น) tz `string` (ไม่บังคับ) เขตเวลา IANA ของผู้ชม ใช้เป็นค่าสำรองสำหรับช่วงค่าใช้จ่ายรายวัน/รายเดือนเมื่อสถานที่ไม่มีข้อมูลเขตเวลาปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/overview
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/overview \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แคตตาล็อกโมเดลที่พร้อมใช้งานพร้อมสถานะการเปิดใช้ของแต่ละสถานที่ (ค่าเริ่มต้นคือเปิดใช้ทั้งหมด)
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/models
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/models \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
Guardrail ที่พร้อมใช้งานและเทมเพลตที่ตั้งค่าไว้ล่วงหน้าของ PH
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/guardrails
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/guardrails \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บริการที่เชื่อมต่อกับ Model Router ได้แก่ อุปกรณ์ตัวแทน AI ที่จับคู่แล้ว ตัวแทนภายนอกที่ระบุประเภทไว้ชัดเจน และบริการ Workflow ของสถานที่ แก้ไขการกำหนดค่าได้ผ่าน PATCH /keys/{keyHash}
พารามิเตอร์
clubID `string` (จำเป็น) tz `string` (ไม่บังคับ) เขตเวลา IANA ของผู้ชม ใช้เป็นค่าสำรองสำหรับช่วงค่าใช้จ่ายรายวัน/รายเดือนเมื่อสถานที่ไม่มีข้อมูลเขตเวลาปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/agents
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/agents \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปิดใช้ Model Router สำหรับสถานที่และจัดเตรียมสิทธิ์การเข้าถึงการอนุมาน (inference)
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/clubs/{clubID}/ai-credits/enable
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/enable \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตแพ็กเกจ รายการโมเดลที่อนุญาต guardrail ตัวกรองเนื้อหา (การปกปิด/บล็อกด้วย regex ฝั่ง PH) วงเงินค่าใช้จ่าย และการกำหนดค่าการเติมเงินอัตโนมัติ
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
PATCH /api/clubs/{clubID}/ai-credits/config
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/config \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
รีเซ็ตตัวนับวงเงินสูงสุดตลอดอายุการใช้งานเป็น 0 (ตั้งฐานใหม่ตามค่าใช้จ่ายปัจจุบัน) และบันทึกรอบที่ปิดแล้วลงในประวัติ
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/clubs/{clubID}/ai-credits/spend-limit/reset-total
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/reset-total \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ประวัติการรีเซ็ตวงเงินสูงสุด (ใหม่สุดก่อน) แสดงวงเงิน ยอดที่ใช้ และเวลาของแต่ละรอบที่ปิดแล้ว
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/spend-limit/history
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/history \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างคีย์ API phk_ ใหม่สำหรับสถานที่ (คืนค่าข้อความธรรมดาเพียงครั้งเดียว) รองรับวงเงินค่าใช้จ่าย รายการโมเดลที่อนุญาต guardrail ตัวกรองเนื้อหา และขีดจำกัดอัตรา rpmLimit/tpmLimit แบบไม่บังคับ
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/clubs/{clubID}/ai-credits/keys
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys \
-H "x-api-key: YOUR_API_KEY"
อัปเดตฟิลด์ของคีย์ที่แก้ไขได้ ได้แก่ ป้ายกำกับ วงเงินค่าใช้จ่ายต่อคีย์ รายการโมเดลที่อนุญาต guardrail ตัวกรองเนื้อหา และขีดจำกัดอัตรา rpmLimit/tpmLimit (ซิงค์ไปยังคีย์)
พารามิเตอร์
clubID `string` (จำเป็น) keyHash `string` (จำเป็น)ปลายทาง (Endpoint)
PATCH /api/clubs/{clubID}/ai-credits/keys/{keyHash}
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys/{keyHash} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บันทึกการอนุมานรายคำขอของสถานที่ (แบบเรียลไทม์ เฉพาะเมตาดาตา)
พารามิเตอร์
clubID `string` (จำเป็น) page `string` (ไม่บังคับ) pageSize `string` (ไม่บังคับ) status `string` (ไม่บังคับ) model `string` (ไม่บังคับ) provider `string` (ไม่บังคับ) source `string` (ไม่บังคับ) `key` หรือ `agent` keyHash `string` (ไม่บังคับ) กรองเฉพาะคีย์/ตัวแทนเดียวตาม keyHash ของ PH q `string` (ไม่บังคับ) ค้นหาข้อความอิสระใน request id, ป้ายกำกับคีย์/ตัวแทน, โมเดล, ผู้ให้บริการ และผู้ใช้ปลายทาง minutes `string` (ไม่บังคับ) ช่วงเวลาที่สั้นกว่าหนึ่งวัน (เช่น Live=1440) ใช้แทน startDate/endDate startTs `string` (ไม่บังคับ) จุดเริ่มต้นของช่วงเวลาในหน่วยวินาที epoch (คลิกเพื่อซูม) ใช้แทน minutes/dates endTs `string` (ไม่บังคับ) จุดสิ้นสุดของช่วงเวลาในหน่วยวินาที epoch (คลิกเพื่อซูม) ใช้แทน minutes/datesปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/logs
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ฮิสโตแกรมจำนวนคำขอตามเวลาสำหรับมุมมอง Logs ใช้ตัวกรองเดียวกับเส้นทางรายการ แต่รวมข้อมูลฝั่งเซิร์ฟเวอร์เป็นช่วงเวลา (จำนวนสำเร็จ/ล้มเหลว) การตอบกลับจึงมีขนาดเล็กไม่ว่าบันทึกจะมีปริมาณเท่าใด ระบบจะเลือกขนาดช่วงเวลาให้เหมาะกับระยะเวลาโดยอัตโนมัติ
พารามิเตอร์
clubID `string` (จำเป็น) status `string` (ไม่บังคับ) model `string` (ไม่บังคับ) provider `string` (ไม่บังคับ) source `string` (ไม่บังคับ) keyHash `string` (ไม่บังคับ) q `string` (ไม่บังคับ) minutes `string` (ไม่บังคับ) startDate `string` (ไม่บังคับ) endDate `string` (ไม่บังคับ) startTs `string` (ไม่บังคับ) endTs `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/logs/histogram
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs/histogram \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ข้อมูลวิเคราะห์การใช้งานแบ่งตามช่วงเวลา + ยอดรวมต่อโมเดลสำหรับช่วงที่กำหนด (แบบเรียลไทม์)
พารามิเตอร์
clubID `string` (จำเป็น) range `string` (ไม่บังคับ) 24h | 7 | 30 | 90 | year | all (ไม่นำมาใช้หากระบุ startDate/endDate) startDate `string` (ไม่บังคับ) endDate `string` (ไม่บังคับ) groupBy `string` (ไม่บังคับ) model (ค่าเริ่มต้น) | key | source | provider | status คือมิติสำหรับช่วงเวลา + กลุ่ม subgroupBy `string` (ไม่บังคับ) มิติที่สองแบบไม่บังคับซึ่งซ้อนอยู่ภายใต้แต่ละกลุ่ม (Explore) keyHash `string` (ไม่บังคับ) ตัวกรองเจาะลึก จำกัดขอบเขตเฉพาะคีย์/ตัวแทนเดียว model `string` (ไม่บังคับ) ตัวกรองเจาะลึก จำกัดขอบเขตเฉพาะโมเดลเดียว provider `string` (ไม่บังคับ) source `string` (ไม่บังคับ) compare `string` (ไม่บังคับ) ตั้งค่าเป็น "prev" เพื่อคืนค่า groupsPrev ด้วย (ช่วงเวลาก่อนหน้าทันทีที่มีความยาวเท่ากัน)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/stats
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/stats \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ปฏิทินกิจกรรมรายวันย้อนหลังหนึ่งปี (ประมาณ 53 สัปดาห์ในรูปแบบเดียวกับ GitHub)
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/activity
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/activity \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เรียกเก็บเงินจากบัตรที่บันทึกไว้สำหรับการเรียกเก็บเงิน SaaS เพื่อเพิ่มเครดิต Model Router แบบเติมเงินล่วงหน้า
พารามิเตอร์
clubID `string` (จำเป็น) body `object` (ไม่บังคับ)ปลายทาง (Endpoint)
POST /api/clubs/{clubID}/ai-credits/topup
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดำเนินการเติมเงินให้เสร็จสมบูรณ์หลังจากแอปเพล็ตยืนยันตัวตน 3DS เรียบร้อยแล้ว
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/clubs/{clubID}/ai-credits/topup/confirm
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สรุปข้อมูลบัตรที่บันทึกไว้สำหรับการเรียกเก็บเงิน SaaS ซึ่งการเติมเงิน/การเติมเงินอัตโนมัติจะเรียกเก็บ
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/payment-method
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/payment-method \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
รายการธุรกรรมในบัญชีแยกประเภทของสถานที่ เรียงจากใหม่สุด กรองตามประเภทได้ (เช่น `types=topup,adjustment` สำหรับประวัติการเคลื่อนไหวของเงิน หรือ `types=charge-reconcile` พร้อม `from`/`to` สำหรับยอดหักค่าใช้งานของเดือน)
พารามิเตอร์
clubID `string` (จำเป็น) limit `integer` (ไม่บังคับ) จำนวนแถวสูงสุด (ค่าเริ่มต้น 50 สูงสุด 200) types `string` (ไม่บังคับ) ประเภทธุรกรรมคั่นด้วยจุลภาค (topup, charge-reconcile, refund, adjustment, trueup-shortfall) from `integer` (ไม่บังคับ) เฉพาะธุรกรรมที่มี createdAt >= from (วินาที unix) to `integer` (ไม่บังคับ) เฉพาะธุรกรรมที่มี createdAt <= to (วินาที unix)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/transactions
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เดือน `YYYY-MM` ที่ไม่ซ้ำกัน (UTC เรียงจากใหม่สุด) ซึ่งมีธุรกรรมประเภทที่ร้องขออย่างน้อยหนึ่งรายการ ใช้สำหรับเมนูดรอปดาวน์ตัวกรองปี/เดือนตามข้อมูล เพื่อให้ UI แสดงเฉพาะช่วงเวลาที่มีข้อมูลจริง
พารามิเตอร์
clubID `string` (จำเป็น) types `string` (ไม่บังคับ) ประเภทธุรกรรมคั่นด้วยจุลภาค (topup, charge-reconcile, refund, adjustment, trueup-shortfall)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/transactions/available-periods
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/available-periods \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ใบเสร็จการชำระเงิน PDF ที่มีแบรนด์สำหรับธุรกรรม Model Router หนึ่งรายการ
พารามิเตอร์
clubID `string` (จำเป็น) txId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ชุดใบเสร็จการชำระเงิน PDF ที่มีแบรนด์สำหรับธุรกรรมการเติมเงินที่เลือก ในรูปแบบ ZIP ทุก id ต้องเป็นการเติมเงินของสถานที่นั้น ยอดหักค่าใช้งานและการปรับยอดโดยผู้ดูแลไม่มีใบเสร็จและจะถูกปฏิเสธ
พารามิเตอร์
clubID `string` (จำเป็น) ids `string` (จำเป็น) id ธุรกรรมคั่นด้วยจุลภาค (สูงสุด 50)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/transactions/receipts.zip
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ยอดรวมการหักค่าใช้งานของสถานที่รายเดือนตามปฏิทิน (UTC) เรียงจากใหม่สุด เดือนปัจจุบันจะรวมอยู่เสมอและมีการระบุ `isCurrentMonth` (ตั้งแต่ต้นเดือนถึงปัจจุบัน)
พารามิเตอร์
clubID `string` (จำเป็น) months `integer` (ไม่บังคับ) ช่วงเวลาย้อนหลังเป็นเดือน (ค่าเริ่มต้น 12 สูงสุด 24 ไม่นำมาใช้เมื่อตั้งค่า `year`) year `integer` (ไม่บังคับ) จำกัดยอดรวมไว้ที่ปีปฏิทิน UTC หนึ่งปี (เช่น 2026)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/usage-statements
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
รายงานการใช้งาน (Usage Statement) รายเดือนแบบ PDF ที่มีแบรนด์ เป็นสรุปยอดหักค่าใช้งานของเดือน (ยอดรวมย่อยรายวัน + ยอดรวม) ไม่ใช่ใบแจ้งหนี้หรือใบเสร็จ การหักค่าใช้งานไม่มีการเรียกเก็บเงิน
พารามิเตอร์
clubID `string` (จำเป็น) month `string` (จำเป็น) เดือนตามปฏิทิน UTC, `YYYY-MM`ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/statement.pdf
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements/{month}/statement.pdf \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
รายการหักค่าใช้งานดิบของเดือนในรูปแบบ CSV (id ธุรกรรม, เวลา UTC, จำนวนเงิน, ยอดคงเหลือหลังหัก, ค่าใช้จ่ายสะสมตลอดอายุการใช้งาน) เป็นไฟล์ส่งออกรายละเอียดที่กระทบยอดกับยอดรวมในรายงานของเดือน
พารามิเตอร์
clubID `string` (จำเป็น) month `string` (จำเป็น) เดือนตามปฏิทิน UTC, `YYYY-MM`ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/detail.csv
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements/{month}/detail.csv \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สรุปการใช้งาน/ค่าใช้จ่ายของสถานที่ (ข้อมูลเรียลไทม์รวมกับบัญชีแยกประเภทที่กระทบยอดแล้ว)
พารามิเตอร์
clubID `string` (จำเป็น) tz `string` (ไม่บังคับ) เขตเวลา IANA ของผู้ชม ใช้เป็นค่าสำรองสำหรับช่วงค่าใช้จ่ายรายวัน/รายเดือนเมื่อสถานที่ไม่มีข้อมูลเขตเวลาปลายทาง (Endpoint)
GET /api/clubs/{clubID}/ai-credits/usage
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เชื่อมโยง/อัปเดตอุปกรณ์ AI Edge Processor กับคลับ
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ JSON สำหรับอัปเดตการลงทะเบียนอุปกรณ์ AI Edge Processorปลายทาง (Endpoint)
POST /api/ai-edge-processor/devices
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เชื่อมโยงอุปกรณ์ AI Edge Processor กับคลับ ระบบจะระบุอุปกรณ์จากเมตาดาตาก่อน (ใช้ heartbeat แบบเรียลไทม์เป็นหลัก) เติมแถวการลงทะเบียนหากอุปกรณ์ไม่เคยลงทะเบียนเอง และล้างแถวการลงทะเบียนเก่าที่หลงเหลือจากฮาร์ดแวร์ที่จัดเตรียมใหม่
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ JSON สำหรับอัปเดตการลงทะเบียนอุปกรณ์ AI Edge Processorปลายทาง (Endpoint)
POST /api/ai-edge-processor/devices/associate
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices/associate \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการบันทึกการอัปโหลด bbox ในคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/bbox-timeline/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bbox-timeline/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดัชนีการค้นหาฐานข้อมูลกล้อง
ส่งต่อดัชนีการค้นหา camera-db ของเอกสารสาธารณะ (ผู้ผลิต ซีรีส์ รุ่น ชื่อแทน) ซึ่งกล่องโต้ตอบ Find my camera ใช้เมื่อเพิ่มกล้องเครือข่าย แคชไว้ฝั่งเซิร์ฟเวอร์ 12 ชั่วโมง
ปลายทาง (Endpoint)
GET /api/cctv/camera-db/search-index
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/search-index \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เทมเพลตผู้ผลิตในฐานข้อมูลกล้อง
ส่งต่อเทมเพลต URL ของ RTSP และค่าเริ่มต้นของผู้ผลิตหนึ่งรายจากฐานข้อมูลกล้องในเอกสารสาธารณะ ระบบตรวจสอบ slug เพื่อป้องกัน path traversal แคชไว้ฝั่งเซิร์ฟเวอร์ 12 ชั่วโมง
พารามิเตอร์
slug `string` (จำเป็น) slug ของผู้ผลิต (เช่น hikvision)ปลายทาง (Endpoint)
GET /api/cctv/camera-db/manufacturers/{slug}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/manufacturers/{slug} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการข้อมูลการเช็กอินของสถานที่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับ/สถานที่ที่คุณต้องการเข้าถึง startDate `string` (ไม่บังคับ) วันที่เริ่มต้นในรูปแบบ YYYY-MM-DD endDate `string` (ไม่บังคับ) วันที่สิ้นสุดในรูปแบบ YYYY-MM-DD timezone `string` (ไม่บังคับ) เขตเวลาสำหรับตีความวันที่ (ค่าเริ่มต้นคือ Australia/Brisbane) nextToken `string` (ไม่บังคับ) โทเค็นการแบ่งหน้าสำหรับดึงหน้าถัดไปปลายทาง (Endpoint)
GET /api/cctv/check-ins/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/check-ins/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงการกำหนดค่าสำหรับส่วนหน้าหรือ UI ของกล้องวงจรปิด
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/config/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงการกำหนดค่าการส่งเนื้อหาของกล้องวงจรปิด
คืนค่าโดเมนเนื้อหาที่ไคลเอนต์กล้องวงจรปิดใช้ระบุตำแหน่งไฟล์สื่อ โดเมนกำหนดโดยตัวแปรสภาพแวดล้อม CONTENT_DOMAIN หากไม่มีจะใช้ค่าเริ่มต้นตามสเตจ (production ให้บริการ /cctv สเตจอื่นให้บริการ /cctv-stg)
ปลายทาง (Endpoint)
GET /api/cctv/content-config
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/content-config \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปลี่ยนการกำหนดค่าสำหรับส่วนหน้าหรือ UI ของกล้องวงจรปิด
พารามิเตอร์
body `object` (จำเป็น) ออบเจ็กต์ JSON ของบล็อกการกำหนดค่าใหม่ที่จะเพิ่มเข้าสู่ระบบปลายทาง (Endpoint)
PUT /api/cctv/config/:club/:section
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการภูมิภาคของบักเก็ตที่พร้อมใช้งานสำหรับการกำหนดค่าผู้ให้บริการพื้นที่จัดเก็บของกล้องวงจรปิด
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/bucket-region/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bucket-region/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
รีเซ็ตคอลเลกชันใบหน้าที่ยังไม่ระบุตัวตน
รีเซ็ตคอลเลกชัน CompreFace ที่ยังไม่ระบุตัวตนของสถานที่โดยลบ subject ทั้งหมด ข้อมูลบุคคลใน DynamoDB การตรวจจับใบหน้า และบล็อกไทม์ไลน์ใน OpenSearch จะไม่ได้รับผลกระทบ ระบบจะล้างเฉพาะข้อมูลการจดจำใบหน้าเบื้องหลังเท่านั้น โปรไฟล์เงาใหม่จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อระบบประมวลผลการตรวจจับใหม่จากกล้อง
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/cctv/config/{facilityId}/unidentified-collection
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงข้อมูลคอลเลกชันที่ยังไม่ระบุตัวตน
คืนค่าจำนวน subject ปัจจุบันในคอลเลกชัน CompreFace ที่ยังไม่ระบุตัวตนของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/cctv/config/{facilityId}/unidentified-collection-info
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection-info \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มกล้องเครือข่าย (กล้อง OEM/IP) ผ่าน URL สตรีม (RTSP, HTTP, HTTPS)
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ JSON สำหรับเพิ่มกล้องเครือข่ายปลายทาง (Endpoint)
POST /api/cctv/devices/add-network-camera
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-camera \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มกล้องเครือข่ายหลายตัวพร้อมกันไปยัง Edge Processor
ลงทะเบียนกล้องเครือข่าย RTSP/HTTP หลายตัวกับ Edge Processor หนึ่งเครื่อง จากนั้นพุช FEED_CONFIG ครั้งเดียวเพื่อให้อุปกรณ์โหลดการกำหนดค่าใหม่เพียงครั้งเดียว
พารามิเตอร์
body `object` (จำเป็น)ปลายทาง (Endpoint)
POST /api/cctv/devices/add-network-cameras
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-cameras \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เชื่อมโยง/อัปเดตอุปกรณ์กับคลับ
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ JSON สำหรับอัปเดตการลงทะเบียนอุปกรณ์กล้องวงจรปิดปลายทาง (Endpoint)
POST /api/cctv/devices
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เชื่อมโยงอุปกรณ์กับคลับ
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ JSON สำหรับอัปเดตการลงทะเบียนอุปกรณ์กล้องวงจรปิดปลายทาง (Endpoint)
POST /api/cctv/devices/associate
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/associate \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งคำขอ MQTT ไปยัง UUID ของอุปกรณ์ที่ระบุ และรอการตอบกลับ (ผ่าน websocket) ที่ระบุความสามารถที่พร้อมใช้งานของกล้อง
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่เป็นเจ้าของอุปกรณ์ที่คุณกำลังสืบค้น body `string` (จำเป็น) ออบเจ็กต์ JSON ของพารามิเตอร์การอัปเดตปลายทาง (Endpoint)
POST /api/cctv/devices/list-camera-capabilities/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/list-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการการลงทะเบียนอุปกรณ์
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/devices/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/devices/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
นำกล้องเครือข่ายออกโดยทำเครื่องหมายว่าถูกลบและนำออกจาก FEED_CONFIG ของ Edge Processor
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่เป็นเจ้าของอุปกรณ์ balenaUUID `string` (จำเป็น) UUID ของกล้องเครือข่ายที่จะนำออกปลายทาง (Endpoint)
DELETE /api/cctv/devices/remove-network-camera/{club}/{balenaUUID}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/devices/remove-network-camera/{club}/{balenaUUID} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บันทึกความสามารถของกล้องที่กำหนดค่าไว้ทั้งหมดหรือบางส่วน และนำไปใช้กับอุปกรณ์เป็นตัวแปรสภาพแวดล้อม (ผ่าน balena)
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่เป็นเจ้าของอุปกรณ์ที่คุณกำลังสืบค้น body `string` (จำเป็น) ออบเจ็กต์ JSON ของพารามิเตอร์การอัปเดตปลายทาง (Endpoint)
POST /api/cctv/devices/save-camera-capabilities/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บันทึกมาสก์การเคลื่อนไหว (หากกำหนดค่าไว้) ของกล้อง และนำไปใช้กับอุปกรณ์เป็นตัวแปรสภาพแวดล้อม (ผ่าน balena)
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่เป็นเจ้าของอุปกรณ์ที่คุณกำลังสืบค้น body `string` (จำเป็น) ออบเจ็กต์ JSON ของมาสก์กล้องปลายทาง (Endpoint)
POST /api/cctv/devices/save-camera-mask/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-mask/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งคำสั่ง v4l2 ที่ระบุ (เช่น ความสว่าง หรือคอนทราสต์) ไปยังอุปกรณ์จริง
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่เป็นเจ้าของอุปกรณ์ที่คุณกำลังสืบค้น body `string` (จำเป็น) ออบเจ็กต์ JSON ของพารามิเตอร์การอัปเดตปลายทาง (Endpoint)
POST /api/cctv/devices/set-camera-capability/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/set-camera-capability/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ทดสอบ URL สตรีมของกล้องเครือข่าย
ส่งคำสั่งทดสอบไปยัง Edge Processor เพื่อตรวจสอบ URL สตรีมของกล้องโดยใช้ ffprobe
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/cctv/devices/test-stream
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/test-stream \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ลบบันทึกการตรวจจับใบหน้าหนึ่งรายการออกจากฐานข้อมูลอย่างถาวร ใช้เพื่อนำรายการติดตามที่จับคู่ผิดหรือไม่ถูกต้องออกจากบันทึกกิจกรรมของบุคคล
พารามิเตอร์
club `string` (จำเป็น) fdID `string` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/cctv/face-detections/:club/:fdID
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:fdID \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการข้อมูลการตรวจจับใบหน้าของบุคคล
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง personID `string` (จำเป็น) ID ของบุคคลในระบบระบุตัวตนด้วยใบหน้าปลายทาง (Endpoint)
GET /api/cctv/face-detections/:club/:personID
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าการตรวจจับใบหน้าที่อ้างอิงถึงรูปภาพครอปบุคคลที่ระบุ โดยสืบค้นผ่าน GSI personCropImage
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง personCropImage `string` (จำเป็น) URL ของรูปภาพครอปบุคคลที่จัดเก็บไว้ในบันทึกการตรวจจับใบหน้า limit `string` (ไม่บังคับ) จำนวนการตรวจจับสูงสุดที่จะคืนค่า nextToken `string` (ไม่บังคับ) โทเค็นการแบ่งหน้าจากการตอบกลับก่อนหน้าปลายทาง (Endpoint)
GET /api/cctv/face-detections-by-person-crop-image/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections-by-person-crop-image/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการข้อมูลการตรวจจับใบหน้าของคลับ จัดกลุ่มตามช่วงเวลาที่สัมพันธ์กับเวลาปัจจุบัน
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/face-detections/:club/timeline
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการข้อมูลการตรวจจับใบหน้าของคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/face-detections/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาบล็อกไทม์ไลน์การตรวจจับใบหน้าในสถานที่โดยใช้ OpenSearch
พารามิเตอร์
facilityId `string` (จำเป็น) ID ภายในของสถานที่ที่จะค้นหา timezone `string` (จำเป็น) เขตเวลา IANA สำหรับแปลงวันที่ (เช่น Pacific/Auckland) startDate `string` (ไม่บังคับ) ตัวกรองวันที่เริ่มต้น (YYYY-MM-DD) แปลงเป็น startUnix โดยใช้เขตเวลา endDate `string` (ไม่บังคับ) ตัวกรองวันที่สิ้นสุด (YYYY-MM-DD) แปลงเป็น endUnix โดยใช้เขตเวลา personId `string` (ไม่บังคับ) กรองตาม ID บุคคลที่ระบุ query `string` (ไม่บังคับ) ค้นหาข้อความอิสระ (เช่น ชื่อบุคคล) limit `string` (ไม่บังคับ) จำนวนผลลัพธ์ต่อหน้า (ค่าเริ่มต้น 20 สูงสุด 100) filters `string` (ไม่บังคับ) ออบเจ็กต์ตัวกรองที่เข้ารหัสเป็น JSON (เช่น {"matchType":"identified"}) sortBy `string` (ไม่บังคับ) ฟิลด์ที่ใช้เรียงลำดับ (startUnix, endUnix, created) ค่าเริ่มต้นคือ endUnix page `string` (ไม่บังคับ) หมายเลขหน้าสำหรับการแบ่งหน้า (ค่าเริ่มต้น 1) sortOrder `string` (ไม่บังคับ) ทิศทางการเรียงลำดับ (asc หรือ desc) ค่าเริ่มต้นคือ descปลายทาง (Endpoint)
GET /api/cctv/search/face-detections/timeline-blocks/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/face-detections/timeline-blocks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการรายงานเกี่ยวกับสถานที่ของคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/facility/:club/reports
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/facility/:club/reports \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สั่งสร้างฮีตแมปตามต้องการ เรียกใช้ตรรกะ Starter เดียวกับ ที่ cron ตามกำหนดเวลาใช้ แต่สามารถกำหนดเป้าหมายเป็นสถานที่ วันที่/เวลา และชุดช่วงเวลาที่ระบุได้ เมื่อเรียกโดยไม่มีเนื้อหาคำขอ จะทำงานเหมือนกับ cron ทุกประการ คือสแกน สถานที่ที่มีสิทธิ์ทั้งหมดและเพิ่มอุปกรณ์ทุกเครื่องเข้าคิว
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/cctv/heatmaps/generate
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/heatmaps/generate \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ระบุตำแหน่งของ PNG ฮีตแมปแบบช่วงเวลาเลื่อนที่ประกอบแล้ว สำหรับอุปกรณ์หนึ่งเครื่อง คืนค่าเฉพาะเมตาดาตา JSON เท่านั้น ไบต์ของ PNG อยู่บนโดเมนเนื้อหา และส่วนหน้าจะสร้าง URL ดังนี้: `${contentDomain}/cctv/${storageService}/${region}/${filePath}?s=${token}` ลำดับการระบุตำแหน่ง: 1. พบในดัชนี DynamoDB `composed#…` → คืนค่าทันที (~10 ms) 2. ใช้ Wasabi HEAD กับคีย์แคชที่กำหนดแน่นอน หากพบ จะเขียน แถวดัชนีย้อนหลังและคืนค่า 3. ใช้ข้อมูลเก่าเป็นค่าสำรอง: มีบันทึกที่ประกอบแล้วสำหรับชุด (device, range, hour) นี้ แม้จะเป็นวันที่อื่น คืนค่าทันทีพร้อม `cache: 'HIT-STALE'` เพื่อให้ส่วนหน้า แสดง*บางอย่าง*ได้ และสั่งประกอบใหม่แบบอะซิงโครนัส 4. เส้นทางเย็น: ไม่มีบันทึกเลย Lambda สำหรับประกอบจะ เข้าคิวผ่าน `InvocationType: 'Event'` และปลายทาง คืนค่า `202 { cache: 'PENDING' }` ส่วนหน้าจะสอบถามซ้ำจนกว่า บันทึกจะพร้อม (โดยทั่วไป 3-5 วินาที) การจัดการวันนี้: เมื่อ `endDate` เป็น "วันนี้" ตามเวลาท้องถิ่นของสถานที่ ปลายทางจะให้บริการ PNG ของเมื่อวานแทน เนื่องจากข้อมูลส่วนย่อยของวันนี้ ยังอยู่ระหว่างการเขียนโดย cron ของ Starter และการประกอบใหม่ จะไม่สมบูรณ์ การตอบกลับจะส่ง `endDate` ที่ร้องขอกลับมา และมี `endDateUsed` (= เมื่อวาน) ค่า enum ของ `cache`: - `HIT` ให้บริการจากดัชนี DDB สำหรับวันที่ที่ร้องขอ - `HIT-FALLBACK` ร้องขอวันนี้ จึงให้บริการแถวดัชนีของเมื่อวาน - `HIT-BACKFILL` ไม่พบใน DDB แต่ Wasabi มี PNG แถวจึง เพิ่งถูกเขียน - `HIT-FALLBACK-BACKFILL` เขียนย้อนหลังสำหรับค่าสำรองของเมื่อวาน - `HIT-STALE` ไม่มีบันทึกสำหรับวันที่ที่ร้องขอ แต่มีบันทึก จากวันที่อื่นสำหรับชุดนี้ ให้บริการทันที และเพิ่มการประกอบใหม่เข้าคิวในเบื้องหลัง - `PENDING` ไม่มีบันทึกเลย การประกอบเข้าคิวแล้ว ส่วนหน้า ควรสอบถามซ้ำ การตอบกลับเป็น `202 Accepted` และไม่มี `filePath`
พารามิเตอร์
facilityId `string` (จำเป็น) deviceUUID `string` (จำเป็น) อุปกรณ์ที่จะประกอบฮีตแมป การประกอบทำแยกตามอุปกรณ์ hour `integer` (จำเป็น) ชั่วโมงของวัน 0–23 ที่จะประกอบตลอดช่วงเวลาย้อนหลัง endDate `string` (ไม่บังคับ) วันที่สุดท้ายในช่วงเวลา (YYYY-MM-DD) ค่าเริ่มต้นคือวันนี้ (ตามเขตเวลาของสถานที่) range `string` (ไม่บังคับ) ช่วงเวลาย้อนหลัง ต้องเป็นหนึ่งในช่วงที่อนุญาต nocache `integer` (ไม่บังคับ) ตั้งค่าเป็น `1` เพื่อข้ามชั้นแคช DDB + HEAD และบังคับให้ประกอบใหม่ปลายทาง (Endpoint)
GET /api/cctv/heatmaps/hourly/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาว่าชั่วโมงใดของวันที่มีบันทึกส่วนย่อย `1h` สำหรับ อุปกรณ์ตลอดช่วงเวลาย้อนหลังแบบเลื่อน ส่วนหน้าใช้ข้อมูลนี้เพื่อ เติมตัวเลือกชั่วโมงควบคู่กับตัวเลือกวันที่ + ช่วง ก่อน เรียกปลายทางการประกอบ (`/api/cctv/heatmaps/hourly/...`) ตัวอย่าง: `GET /api/cctv/heatmaps/query-hourly/Birkdale?deviceUUID=abc123&endDate=2026-04-16&range=30d` การทำงานภายใน: สืบค้นช่วงใน DynamoDB หนึ่งครั้งบน `cctvheatmaps` (`sk BETWEEN 1h#{start}-00 AND 1h#{end}-23`) จัดกลุ่มตามชั่วโมง คืนค่าหนึ่งรายการต่อชั่วโมงที่มีส่วนย่อยอย่างน้อยหนึ่งรายการ รวมถึง JPEG อ้างอิงที่เป็นตัวแทน (นำมาจากวันล่าสุดใน ช่วงเวลา โดย JPEG อ้างอิงใช้ร่วมกันต่ออุปกรณ์ต่อวัน)
พารามิเตอร์
facilityId `string` (จำเป็น) deviceUUID `string` (จำเป็น) อุปกรณ์ที่จะสืบค้น ส่วนย่อยรายชั่วโมงแยกตามอุปกรณ์ endDate `string` (ไม่บังคับ) วันที่สุดท้ายในช่วงเวลา (YYYY-MM-DD) ค่าเริ่มต้นคือวันนี้ (ตามเขตเวลาของสถานที่) range `string` (ไม่บังคับ) ช่วงเวลาย้อนหลัง ต้องเป็นหนึ่งในช่วงที่อนุญาตปลายทาง (Endpoint)
GET /api/cctv/heatmaps/query-hourly/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/query-hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สืบค้นบันทึกฮีตแมปที่สร้างไว้ล่วงหน้าของสถานที่ **บันทึกทั้งหมดของประเภทช่วงเวลาหนึ่ง:** - `/api/cctv/heatmaps/Birkdale?periodType=1y` - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&periodType=1d` **ช่วงวันที่ สำหรับประเภทช่วงเวลาเดียว:** - `/api/cctv/heatmaps/Birkdale?periodType=1d&from=2026-03-01&to=2026-03-31` - `/api/cctv/heatmaps/Birkdale?periodType=6h&from=2026-03-31&to=2026-03-31` **ช่วงวันที่ สำหรับทุกประเภทช่วงเวลาที่เกี่ยวข้อง (ไม่ต้องระบุ periodType):** - `/api/cctv/heatmaps/Birkdale?from=2026-03-01&to=2026-03-31` คืนค่าบันทึกรายปี รายครึ่งปี รายไตรมาส ฯลฯ ไปจนถึงบันทึก 6h ที่ซ้อนทับกับช่วงที่ระบุ **ณ จุดเวลาหนึ่ง สำหรับทั้ง 9 ประเภทช่วงเวลาของอุปกรณ์หนึ่งเครื่อง:** - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&date=2026-03-15T14:30` คืนค่าบันทึกสูงสุด 9 รายการ (1y, 6m, 3m, 2m, 1m, 1w, 1d, 12h, 6h)
พารามิเตอร์
facilityId `string` (จำเป็น) ตัวระบุสถานที่ deviceUUID `string` (ไม่บังคับ) สืบค้นอุปกรณ์ที่ระบุ หากไม่ระบุ จะสืบค้นอุปกรณ์ทั้งหมด (GSI) periodType `string` (ไม่บังคับ) กรองเฉพาะประเภทช่วงเวลาเดียว หากไม่ระบุแต่มี from/to จะสืบค้นทุกประเภท from `string` (ไม่บังคับ) วันที่เริ่มต้น (yyyy-mm-dd) ต้องใช้ร่วมกับ `to` to `string` (ไม่บังคับ) วันที่สิ้นสุด (yyyy-mm-dd) ต้องใช้ร่วมกับ `from` date `string` (ไม่บังคับ) ค้นหา ณ จุดเวลาหนึ่ง (yyyy-mm-dd หรือ yyyy-mm-ddTHH:mm) ต้องระบุ deviceUUID คืนค่าหนึ่งบันทึกต่อประเภทช่วงเวลาปลายทาง (Endpoint)
GET /api/cctv/heatmaps/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงภาพขนาดย่อของการถ่ายทอดสดจากอุปกรณ์
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับ deviceId `string` (จำเป็น) ID ภายในของอุปกรณ์กล้องวงจรปิดปลายทาง (Endpoint)
GET /api/cctv/livestream/:club/thumbnail/:deviceId
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/livestream/:club/thumbnail/:deviceId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แจ้งระบบกล้องวงจรปิดว่าคุณกำลังจะรับชมการถ่ายทอดสด
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับ deviceId `string` (จำเป็น) ID ภายในของอุปกรณ์กล้องวงจรปิดปลายทาง (Endpoint)
POST /api/cctv/livestream/:club/iswatching/:deviceId
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/livestream/:club/iswatching/:deviceId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อนุมัติการจับคู่ข้อมูลที่ตรงกัน
ตั้งค่าสถานะการจับคู่เป็น confirmed และบันทึกผู้ตรวจทาน
พารามิเตอร์
club `string` (จำเป็น) matchId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/cctv/matching/{club}/detail/{matchId}/approve
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/approve \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงการจับคู่ข้อมูลที่ตรงกันหนึ่งรายการพร้อมรายละเอียดการเข้าใช้
คืนค่าบันทึกการจับคู่และรายละเอียดเวลาของการเข้าใช้แต่ละครั้ง
พารามิเตอร์
club `string` (จำเป็น) matchId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/cctv/matching/{club}/detail/{matchId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เชื่อมโยงบุคคลที่ยังไม่ได้จับคู่กับสมาชิกด้วยตนเอง
เชื่อมโยง personId ของกล้องวงจรปิดกับสมาชิกที่ระบุ และตั้งค่าการจับคู่เป็น confirmed
พารามิเตอร์
club `string` (จำเป็น) matchId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/cctv/matching/{club}/detail/{matchId}/link
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/link \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แสดงรายการการจับคู่ข้อมูลที่ตรงกันของสถานที่
คืนค่าการจับคู่แบบแบ่งหน้าโดยกรองตามสถานะ
พารามิเตอร์
club `string` (จำเป็น) status `string` (ไม่บังคับ) limit `integer` (ไม่บังคับ) nextToken `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/cctv/matching/{club}/list
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/list \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ปฏิเสธการจับคู่ข้อมูลที่ตรงกัน
ตั้งค่าสถานะการจับคู่เป็น rejected และบันทึกผู้ตรวจทาน
พารามิเตอร์
club `string` (จำเป็น) matchId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/cctv/matching/{club}/detail/{matchId}/reject
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/reject \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงจำนวนสรุปของการจับคู่ข้อมูลที่ตรงกัน
คืนค่าจำนวนการจับคู่ของสถานที่ จัดกลุ่มตามสถานะ
พารามิเตอร์
club `string` (จำเป็น) ID สถานที่ปลายทาง (Endpoint)
GET /api/cctv/matching/{club}/summary
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/summary \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ยกเลิกการเชื่อมโยงการจับคู่โปรไฟล์ที่เรียนรู้อัตโนมัติ
เปลี่ยนการจับคู่ที่เชื่อมโยงแล้วกลับเป็นสถานะ rejected และล้าง autoLearnedFrom ในบันทึกสมาชิก
พารามิเตอร์
club `string` (จำเป็น) matchId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/cctv/matching/{club}/detail/{matchId}/unlink
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/unlink \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อ่านสถานะของการดำเนินการ "upsert identified person" ที่กำลังดำเนินอยู่ (ครอบคลุมทั้งการสร้างและการแก้ไข) อ่านแถวโดยตรงจากตาราง `people-ops` ที่ cctv-rekognition-api เป็นเจ้าของ โดยไม่ผ่าน Lambda ส่วนหน้าของกล้องวงจรปิดใช้เพื่อสอบถามความคืบหน้าหลังจาก POST /api/cctv/people/{facility}/identified เส้นทางนี้อยู่ระดับเดียวกับ `/cctv/people/...` (ไม่ได้ซ้อนอยู่ภายใต้) เพื่อไม่ให้ express router จับคู่ `operationId` ผิดเป็น `:personID` บน `/cctv/people/:club/:personID` ดูลำดับ glob ของ createAPIRouter คืนค่าตัวยึดตำแหน่ง `pending` ระหว่างที่ Lambda upsertIdentifiedPerson ยังไม่ได้เขียนรายการขั้นตอนแรก (ช่วง cold start) hook การสอบถามของส่วนหน้าจะถือว่าตัวยึดตำแหน่งและ pending เหมือนกัน สัญญาการทำงานจึงคงที่สำหรับผู้เรียกใช้
พารามิเตอร์
operationId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/cctv/people-operations/{operationId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people-operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มรูปภาพใบหน้า (จากการตรวจจับการติดตามที่มีอยู่) ไปยัง subject การจดจำของบุคคลใน CompreFace และจัดเก็บข้อมูลอ้างอิงในตารางภาพเงา โดยไม่อัปโหลดรูปภาพไปยัง Wasabi เนื่องจากรูปภาพอยู่ที่นั่นแล้วในฐานะภาพที่บันทึกจากการตรวจจับใบหน้า
พารามิเตอร์
club `string` (จำเป็น) personID `string` (จำเป็น) body `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/cctv/people/:club/:personID/add-face
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID/add-face \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มภาพเงาลงในบันทึกบุคคล
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง personID `string` (จำเป็น) ID บันทึกของบุคคล body `string` (จำเป็น) ออบเจ็กต์ JSON ของบล็อกการกำหนดค่าใหม่ที่จะเพิ่มเข้าสู่ระบบปลายทาง (Endpoint)
POST /api/cctv/people/:club/shadow-photos/:personID
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สืบค้นภาพเงาของบุคคล
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง personID `string` (จำเป็น) ID บันทึกของบุคคลปลายทาง (Endpoint)
GET /api/cctv/people/:club/shadow-photos/:personID
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบบันทึกภาพเงาออกจาก CCTVShadowPhotosTable อย่างถาวร และนำใบหน้าที่สอดคล้องกันออกจาก CompreFace (หากมีการจัดเก็บ faceId)
พารามิเตอร์
club `string` (จำเป็น) personID `string` (จำเป็น) id `string` (จำเป็น) ID บันทึกภาพเงา (คีย์หลัก)ปลายทาง (Endpoint)
DELETE /api/cctv/people/:club/shadow-photos/:personID/:id
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID/:id \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบข้อมูลอ้างอิงและบันทึก rekognition ที่เกี่ยวข้องตาม personID
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง personID `string` (จำเป็น) ID ที่ไม่ซ้ำกันของบุคคลในกล้องวงจรปิดปลายทาง (Endpoint)
DELETE /api/cctv/people/:club/:personID
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าบันทึกบุคคลของคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง personID `string` (จำเป็น) ID ฐานข้อมูลของบุคคลปลายทาง (Endpoint)
GET /api/cctv/people/:club/:personID
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงโซนการเข้าถึงที่ตรงกับโปรไฟล์สมาชิกภาพของบุคคล
ระบุประเภทสมาชิก แท็ก และแผนสมาชิกภาพของบุคคล จากนั้นคืนค่าโซนการเข้าถึงจริง (origin=membership-plan ที่ไม่ได้ถูกรวมเข้าไป) ที่ตรงกับกฎรวม/ยกเว้น accessRestriction ของแต่ละโซนจะถูกตัดให้เหลือเฉพาะกฎที่ตรงกับบุคคล กล้องของโซนย่อยจะถูกรวมเข้ากับโซนหลัก
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ personID `string` (จำเป็น) ID บุคคลจากตารางบุคคลของกล้องวงจรปิดปลายทาง (Endpoint)
GET /api/cctv/people/{club}/{personID}/allowed-zones
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/{club}/{personID}/allowed-zones \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าสถานะปัจจุบันของงานรวมข้อมูล รวมถึงผลลัพธ์ของแต่ละแหล่ง สอบถามปลายทางนี้ทุก 3-5 วินาทีขณะที่สถานะเป็น IN_PROGRESS
พารามิเตอร์
club `string` (จำเป็น) mergeJobID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/cctv/people/:club/merge-status/:mergeJobID
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-status/:mergeJobID \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เริ่มรวมโปรไฟล์บุคคลที่ยังไม่ระบุตัวตนหลายรายการเป็นโปรไฟล์เดียวในเบื้องหลัง ตอบกลับ 202 ทันทีพร้อม mergeJobID สอบถามความคืบหน้าที่ /merge-status/:mergeJobID
พารามิเตอร์
club `string` (จำเป็น) body `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/cctv/people/:club/merge-unidentified
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-unidentified \
-H "x-api-key: YOUR_API_KEY"
เพิ่มใบหน้าลงในคอลเลกชันบัญชีดำของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น) ID ภายในของสถานที่เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/cctv/people/{facilityId}/blacklist
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{facilityId}/blacklist \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เพิ่มหรืออัปเดตบุคคลที่ระบุตัวตนแล้วในสถานที่ โดยสร้างบันทึกใหม่หรืออัปเดตบันทึกที่มีอยู่ ส่งต่อไปยัง Lambda upsertIdentifiedPerson ซึ่งจะเขียนบันทึกบุคคล อัปโหลดรูปภาพที่ให้มาไปยัง Wasabi และทำดัชนีใบหน้าใหม่ใน CompreFace เมื่อ `isNewRecord` เป็น true (ค่าเริ่มต้น) Lambda จะทำงานในส่วนการสร้าง (cctvPeople.save) และจะสร้าง `personID` หากไม่ได้ระบุไว้ เมื่อ `isNewRecord` เป็น false Lambda จะทำงานในส่วนการอัปเดต (cctvPeople.update) ซึ่งต้องระบุ `personID` และต้องเป็นบันทึกที่มีอยู่
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/cctv/people/{facilityId}/identified
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{facilityId}/identified \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
อัปเดตชุดฟิลด์พาร์ทเนอร์แบบไม่บังคับที่ซิงค์เข้าสู่ตารางบุคคลของกล้องวงจรปิดสำหรับสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น) ID ภายในของสถานที่เนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/cctv/people/{facilityId}/sync-fields
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/people/{facilityId}/sync-fields \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
คืนค่ารายการข้อมูลบุคคลของคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/people/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาบุคคลในสถานที่ด้วยรูปภาพใบหน้า เรียกใช้ Lambda imageFaceSearch ของ cctv-rekognition-api ด้วยรูปภาพ base64 ที่อัปโหลดและ ID สถานที่จากเส้นทาง คืนค่าผลการจับคู่ที่จัดอันดับแล้วพร้อมสรุปคุณลักษณะจาก DeepFace
พารามิเตอร์
club `string` (จำเป็น) ID สถานที่ / คลับ body `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/cctv/people/{club}/search-by-face
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{club}/search-by-face \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาบุคคลในสถานที่โดยใช้ OpenSearch
พารามิเตอร์
facilityId `string` (จำเป็น) ID ภายในของสถานที่ที่จะค้นหา query `string` (ไม่บังคับ) คำค้นหา (เช่น ชื่อ) page `string` (ไม่บังคับ) หมายเลขหน้า (ค่าเริ่มต้น 1) limit `string` (ไม่บังคับ) จำนวนผลลัพธ์ต่อหน้า (ค่าเริ่มต้น 20 สูงสุด 100) filters `string` (ไม่บังคับ) ออบเจ็กต์ตัวกรองที่เข้ารหัสเป็น JSON (เช่น {"membershipStatus":"active"}) sortBy `string` (ไม่บังคับ) ฟิลด์ที่ใช้เรียงลำดับ (created, lastName, firstName, membershipUpdatedOn) ค่าเริ่มต้นคือ created sortOrder `string` (ไม่บังคับ) ทิศทางการเรียงลำดับ (asc หรือ desc) ค่าเริ่มต้นคือ descปลายทาง (Endpoint)
GET /api/cctv/search/people/:facilityId
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/people/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตรายการตรวจจับใบหน้าด้วย personID ใหม่และเชื่อมโยงบันทึก rekognition
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง body `string` (จำเป็น) ออบเจ็กต์ JSON ของบล็อกการกำหนดค่าใหม่ที่จะเพิ่มเข้าสู่ระบบปลายทาง (Endpoint)
POST /api/cctv/people/:club/validate
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/validate \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าออบเจ็กต์ของตัวกรองทั้งหมดที่ใช้ได้สำหรับข้อมูลการบันทึกวิดีโอกล้องวงจรปิดของคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/recordings/filters/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/filters/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สตรีมการบันทึกวิดีโอ
ปลายทาง (Endpoint)
GET /api/cctv/recordings/:club/:dir/:filename
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตข้อมูลเกี่ยวกับการบันทึกวิดีโอ
ปลายทาง (Endpoint)
PUT /api/cctv/recordings/:club/:dir/:filename
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าสรุปข้อมูลการบันทึกวิดีโอกล้องวงจรปิดของคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/recordings/:club/summary
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/summary \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการข้อมูลการบันทึกวิดีโอกล้องวงจรปิดของคลับตามช่วงเวลาที่สัมพันธ์กับเวลาปัจจุบัน
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/recordings/:club/timeline
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการข้อมูลการบันทึกวิดีโอกล้องวงจรปิดของคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/recordings/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
การบันทึกวิดีโอจะถูกลบโดยอัตโนมัติตามระยะเวลาที่กำหนด ใช้ฟังก์ชันนี้เพื่อเก็บรักษาการบันทึกวิดีโอไว้
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
POST /api/cctv/recordings/:club/:action
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:action \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาสแนปช็อตรายงานของสถานที่ภายในช่วงวันที่
พารามิเตอร์
facilityId `string` (จำเป็น) ID ภายในของสถานที่ startDate `string` (จำเป็น) ตัวกรองวันที่เริ่มต้น (YYYY-MM-DD) endDate `string` (จำเป็น) ตัวกรองวันที่สิ้นสุด (YYYY-MM-DD) deviceIds `string` (ไม่บังคับ) รายการ ID กล้อง/อุปกรณ์ที่ใช้กรอง คั่นด้วยจุลภาค view `string` (ไม่บังคับ) มุมมองรายงานทางเลือกที่จะคำนวณ (ส่งต่อไปยัง Lambda ของรายงาน)ปลายทาง (Endpoint)
GET /api/cctv/reports/search-report-snapshots/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/reports/search-report-snapshots/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
การค้นหาแบบเวกเตอร์ในสื่อกล้องวงจรปิดที่ทำดัชนีไว้ของสถานที่ ตอบกลับด้วย text/event-stream ที่ส่งต่อจาก Lambda searchAnything เพื่อให้ไคลเอนต์แสดงความคืบหน้าได้ขณะที่คอนเทนเนอร์ที่เริ่มต้นใหม่โหลดตัวเข้ารหัส (encoder) เหตุการณ์ได้แก่ `status` จากนั้นเป็น `result` หรือ `error` อย่างใดอย่างหนึ่ง มีวิธีค้นหาสามวิธี สองวิธีใช้กับเมธอดนี้ ส่ง `query` เพื่อค้นหาด้วยข้อความอิสระ ส่ง `seedIndex` + `seedKey` เพื่อค้นหาจากตัวอย่าง ("more like this") โดยใช้เวกเตอร์ของแถวที่อยู่ในดัชนีแล้ว ซึ่งเป็นวิธีค้นหาผลลัพธ์ที่คล้ายกับผลที่ผู้ใช้กำลังดูอยู่ หากต้องการค้นหาด้วยรูปภาพที่ผู้ใช้มี ให้ `POST` ไบต์ของรูปภาพไปยังเส้นทางเดียวกันนี้แทน ส่งคำพร้อมรูปภาพเพื่อใช้อย่างหนึ่งจำกัดอีกอย่างหนึ่ง: **ข้อความใช้คัดกรอง รูปภาพใช้จัดอันดับ** ผู้สมัครมาจากตัวอย่าง (seed) คำจะตัดสินว่ารายการใดผ่าน และความคล้ายคลึงทางภาพจะกำหนดลำดับ ผลลัพธ์จึงยังคงคล้ายกับรูปภาพ และคำจะคัดรายการที่ไม่ตรงออก ทั้งสองอย่างจะไม่ถูกรวมเป็นเวกเตอร์เดียว ด้วยเหตุนี้ `queryKind` จึงยังเป็น `similar` สำหรับการค้นหาแบบรวม การมี `query` ในผลลัพธ์คือสิ่งที่บอกว่ามีการคัดกรองด้วยข้อความ การค้นหาแบบรวมอาจไม่พบผลลัพธ์ค่อนข้างบ่อย และควรถือว่าเป็นผลลัพธ์อีกประเภทหนึ่ง: `perIndex.
พารามิเตอร์
facilityId `string` (จำเป็น) ID ภายในของสถานที่ที่จะค้นหา query `string` (ไม่บังคับ) คำอธิบายแบบข้อความอิสระของสิ่งที่ต้องการค้นหา จำเป็นต้องระบุ เว้นแต่จะส่ง warm=1 หรือตัวอย่าง (seed) เมื่อใช้ร่วมกับตัวอย่าง ข้อความจะไม่ใช่สิ่งที่ถูกจัดอันดับอีกต่อไป แต่จะกลายเป็นตัวกรองผู้สมัครของตัวอย่าง โดยตัดรายการที่มีคะแนนข้อความต่ำกว่าเกณฑ์ความเกี่ยวข้องของดัชนีออก seedIndex `string` (ไม่บังคับ) ค้นหาจากตัวอย่างแทนข้อความ: ดัชนีที่แถวตัวอย่างอยู่ (person-crops, recording-frames, timelapse-frames) ซึ่งคือ `index` ของผลลัพธ์ที่ผู้ใช้คลิก ต้องส่งพร้อมกับ seedKey seedKey `string` (ไม่บังคับ) `key` ของแถวตัวอย่าง นำมาจากผลลัพธ์ตามตัวอักษร ตัวอย่างจะไม่รวมอยู่ในผลลัพธ์ของตัวเอง สำหรับการบันทึกวิดีโอหมายถึงทั้งคลิป เนื่องจากเฟรมอื่นห่างกัน 2 วินาทีและเกือบเหมือนกัน seedFrameId `string` (ไม่บังคับ) จำเป็นต้องระบุเมื่อ seedIndex เป็น recording-frames: ดัชนีนั้นจัดเก็บหนึ่งแถวต่อเฟรมที่สุ่ม และทุกแถวใช้คีย์ของคลิปร่วมกัน คีย์เพียงอย่างเดียวจึงระบุคลิปแทนที่จะระบุช่วงเวลา ส่ง `frameId` ของผลลัพธ์ แถวที่เก่ากว่าไม่มีค่านี้ ให้ส่ง seedOffsetMs แทน seedOffsetMs `string` (ไม่บังคับ) ตัวระบุเฟรมสำรองสำหรับตัวอย่าง recording-frames ที่มีแถวเก่ากว่า `frame_id` ส่ง `offsetMs` ของผลลัพธ์ ไม่นำมาใช้เมื่อระบุ seedFrameId warm `string` (ไม่บังคับ) เตรียมคอนเทนเนอร์ Lambda ให้พร้อมโดยไม่เรียกใช้การค้นหา เรียกใช้เมื่อโหลดหน้า warmTarget `string` (ไม่บังคับ) ตัวเข้ารหัสที่ `warm` จะโหลด: `text` (ค่าเริ่มต้น), `image` หรือ `both` ส่วนประมวลผลภาพมีขนาด 355 MB เทียบกับส่วนประมวลผลข้อความที่ 283 MB การเตรียมส่วนประมวลผลภาพจึงต้องเลือกเปิดเอง ให้ขอ `image` เฉพาะเมื่อผู้ใช้เตรียมรูปภาพไว้แล้วจริง ๆ ไม่ใช่เมื่อโหลดหน้า index `string` (ไม่บังคับ) ชุดข้อมูลที่จะค้นหา คั่นด้วยจุลภาค: person-crops, recording-frames, timelapse-frames ผลลัพธ์จะรวมเป็นรายการเดียวที่เรียงตามคะแนน ค้นหาทั้งสามชุดโดยค่าเริ่มต้น ส่งรายการที่ระบุชัดเจนเพื่อจำกัดขอบเขต timelapse-frames ครอบคลุมกล้องที่ไม่บันทึกวิดีโอและสร้างเพียงหนึ่งเฟรมต่อนาที และเกณฑ์ความเกี่ยวข้องของชุดนี้ยังไม่ได้ปรับเทียบ model `string` (ไม่บังคับ) ตัวเข้ารหัสที่ใช้สืบค้น ต้องตรงกับตัวเข้ารหัสที่ใช้ทำดัชนีชุดข้อมูล limit `string` (ไม่บังคับ) จำนวนผลลัพธ์ที่จะคืนค่าต่อดัชนี (ค่าเริ่มต้น 50 สูงสุด 100) ไม่ใช่จำนวนรวม การค้นหาทั้งสามดัชนีจึงอาจคืนค่าได้สูงสุดสามเท่าของจำนวนนี้ สำหรับการบันทึกวิดีโอจะนับเป็นคลิปแทนเฟรมที่ตรงกัน from `string` (ไม่บังคับ) จับคู่เฉพาะสื่อที่บันทึก ณ หรือหลังเวลานี้ ในหน่วยมิลลิวินาทีนับจาก epoch โปรดทราบว่านี่คือเวลาที่บันทึก ไม่ใช่เวลาที่อัปโหลด to `string` (ไม่บังคับ) จับคู่เฉพาะสื่อที่บันทึกก่อนเวลานี้ (ไม่รวมเวลานี้) ในหน่วยมิลลิวินาทีนับจาก epoch cameraId `string` (ไม่บังคับ) balenaUUID ของกล้องที่จะใช้จำกัดขอบเขต คั่นด้วยจุลภาค คือฟิลด์ `balenaUUID` ของแต่ละรายการที่ /api/cctv/recordings/filters/:club คืนค่า เป็นตัวกรองกล้องที่แนะนำ เนื่องจากทุกดัชนีจัดเก็บค่าเดียวกันนี้ ตัวกรองเดียวจึงจำกัดได้ทุกดัชนี โปรดทราบว่ามีเฉพาะภาพครอปที่เชื่อมกับการตรวจจับใบหน้าสำเร็จเท่านั้นที่มีค่านี้ (ปัจจุบันประมาณ 1%) การจำกัดภาพครอปตามกล้องจึงอาจได้ผลลัพธ์น้อยหรือไม่มีเลยจนกว่าจะเติมข้อมูลย้อนหลังของภาพครอป ส่วนการบันทึกวิดีโอมีข้อมูลครบและกรองได้ตรงทุกรายการ camera `string` (ไม่บังคับ) ชื่อกล้องที่จะใช้จำกัดขอบเขต คั่นด้วยจุลภาค ใช้ได้กับการบันทึกวิดีโอเท่านั้นในทางปฏิบัติ เนื่องจาก person-crops จัดเก็บชื่อกล้องว่างในทุกแถว ค่าใดก็ตามที่ระบุที่นี่จะตัดภาพครอปทั้งหมดออก ควรใช้ cameraId แทน cameraGroup `string` (ไม่บังคับ) กลุ่มกล้องที่จะใช้จำกัดขอบเขต คั่นด้วยจุลภาค มีข้อมูลในการบันทึกวิดีโอทั้งหมด แต่มีในภาพครอปเพียงประมาณ 1% ด้วยสาเหตุเดียวกับ cameraId minScore `string` (ไม่บังคับ) แทนที่เกณฑ์ cosine ขั้นต่ำของแต่ละดัชนีที่ใช้กรองสัญญาณรบกวน ไม่ต้องระบุในการใช้งานจริง แต่ละดัชนีมีค่าเริ่มต้นที่ปรับเทียบแล้ว (และค่าแยกต่างหากที่ยังไม่ได้ปรับเทียบสำหรับการค้นหาจากตัวอย่าง) ส่ง 0 เพื่อดูเพื่อนบ้านที่ใกล้ที่สุดโดยไม่กรองเมื่อแก้ไขปัญหาความเกี่ยวข้องปลายทาง (Endpoint)
GET /api/cctv/search/anything/:facilityId
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาด้วยรูปภาพที่ผู้ใช้มี แทนการค้นหาด้วยคำหรือผลลัพธ์ที่แสดงอยู่บนหน้าจอ ในด้านอื่นทั้งหมดเหมือนกับ GET ทุกประการ (พารามิเตอร์การสืบค้น สตรีมเหตุการณ์ และรูปแบบผลลัพธ์เดียวกัน) ส่วนนี้จึงอธิบายเฉพาะสิ่งที่แตกต่าง ส่ง**ไบต์ของไฟล์ต้นฉบับ**เป็นเนื้อหาคำขอพร้อม Content-Type `image/*` ห้ามปรับขนาด ครอป หรือเข้ารหัสใหม่ในเบราว์เซอร์ก่อน เนื่องจากเซิร์ฟเวอร์ใช้วิธีปรับขนาดที่เฉพาะเจาะจงมาก (บีบเป็น 256x256 ด้วยเคอร์เนล bilinear แบบ antialias) ซึ่งเป็นวิธีเดียวกับที่ใช้สร้างเวกเตอร์ในดัชนี แต่การปรับขนาดของ canvas ใช้วิธีอื่น จากการวัด การใช้วิธีอื่นแทนทำให้ผลห่างจากคำตอบที่ถูกต้องประมาณ 0.93 cosine ซึ่งห่างกว่ารูปภาพสองภาพที่แตกต่างกันจริง ผลลัพธ์จึงถูกจัดอันดับอย่างดูสมเหตุสมผลแต่ผิด โดยไม่มีข้อผิดพลาดแจ้ง จำกัดขนาดไว้ที่ 4 MB ซึ่งเป็นข้อจำกัดด้านการส่งข้อมูล ไม่ใช่ด้านคุณภาพ ไบต์จะถูกส่งภายในเพย์โหลดการเรียกใช้ Lambda ที่จำกัดไว้ที่ 6 MB และ base64 ทำให้ขนาดเพิ่มขึ้นหนึ่งในสาม ผลลัพธ์ให้คะแนนแบบภาพกับภาพ `queryKind` จึงเป็น `image` และคะแนนอยู่ในระดับที่สูงกว่ามากเช่นเดียวกับการค้นหาจากตัวอย่าง ซึ่งเปรียบเทียบกับคะแนนข้อความไม่ได้ คะแนนจะต่ำกว่าการค้นหาจากตัวอย่างที่เทียบเท่า*เล็กน้อย* เนื่องจากเวกเตอร์ของตัวอย่างถูกเขียนโดยอุปกรณ์เอง ขณะที่รูปภาพที่อัปโหลดจะถูกเข้ารหัสใหม่ที่นี่ด้วยเอนจินอื่น ทำให้ห่างจากตำแหน่งที่อุปกรณ์จะวางไว้เล็กน้อยในระดับร้อยละ จากการวัด ผลลัพธ์มีคุณภาพเท่ากันแม้จะเป็นเช่นนั้น เพียงแต่ไม่ใช่ชุดเดียวกันทุกประการ การเพิ่ม `query` จะคัดกรองผลลัพธ์ด้วยคำเหล่านั้น เช่นเดียวกับการค้นหาจากตัวอย่าง การส่งตัวอย่าง*และ*รูปภาพพร้อมกันจะถูกปฏิเสธ เนื่องจากทั้งสองคือสิ่งที่ถูกจัดอันดับ การส่งทั้งคู่จึงไม่มีความหมาย นี่คือคำขอที่มีค่าใช้จ่ายสูงที่สุดของปลายทางนี้ รูปภาพที่อัปโหลดจะโหลดส่วนประมวลผลภาพ และการเพิ่มคำจะโหลดส่วนประมวลผลข้อความด้วย ทั้งสองอย่างบนคอนเทนเนอร์ที่เริ่มต้นใหม่ การเรียก `warm=1&warmTarget=image` เมื่อผู้ใช้เตรียมรูปภาพไว้แล้วจะช่วยลดเวลารอในขั้นตอนสำคัญนี้
พารามิเตอร์
facilityId `string` (จำเป็น) ID ภายในของสถานที่ที่จะค้นหา body `string` (จำเป็น) ไบต์รูปภาพดิบที่ไม่ได้แก้ไข สูงสุด 4 MB query `string` (ไม่บังคับ) คำแบบไม่บังคับสำหรับจำกัดผลลัพธ์รูปภาพ โดยตัดรายการที่มีคะแนนข้อความต่ำกว่าเกณฑ์ความเกี่ยวข้องของดัชนีออกปลายทาง (Endpoint)
POST /api/cctv/search/anything/:facilityId
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายละเอียดพื้นที่จัดเก็บและข้อมูลเมตริกอื่น ๆ ของกล้องวงจรปิดของคลับ
ปลายทาง (Endpoint)
GET /api/cctv/storage-details/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/storage-details/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการบันทึกการอัปโหลดไทม์แลปส์ของคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/timelapse/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/timelapse/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการการดำเนินการของผู้ใช้ที่ทำกับการบันทึกวิดีโอในส่วนหน้าหรือ UI ของกล้องวงจรปิด
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/cctv/ui/actions/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บันทึกการดำเนินการของผู้ใช้ที่ทำกับการบันทึกวิดีโอในส่วนหน้าหรือ UI ของกล้องวงจรปิด
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ JSON ของบล็อกการกำหนดค่าใหม่ที่จะเพิ่มเข้าสู่ระบบปลายทาง (Endpoint)
POST /api/cctv/ui/actions/:club
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงโทเค็นผู้ใช้สำหรับส่วนหน้าหรือ UI ของกล้องวงจรปิด
พารามิเตอร์
club `string` (จำเป็น) ID คลับปลายทาง (Endpoint)
GET /api/cctv/ui/token/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/token/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างโทเค็นสำหรับการเข้าถึงชั่วคราวหรือการเข้าถึงของผู้เยี่ยมชม
พารามิเตอร์
club `string` (จำเป็น) ตัวระบุที่ไม่ซ้ำกันของคลับ body `string` (จำเป็น) ออบเจ็กต์ JSON ของรายละเอียดโทเค็นที่จะออกปลายทาง (Endpoint)
POST /api/cctv/token/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{
"accessID": "00000000-0000-0000-0000-000000000014"
}
คืนค่ารายการบันทึกโทเค็นสำหรับการเข้าถึงชั่วคราวหรือการเข้าถึงของผู้เยี่ยมชม
พารามิเตอร์
club `string` (จำเป็น) ตัวระบุที่ไม่ซ้ำกันของคลับปลายทาง (Endpoint)
GET /api/cctv/token/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงโทเค็นการเข้าถึงผ่าน ID การเข้าถึง
พารามิเตอร์
accessID `string` (จำเป็น) ID ของระเบียนโทเค็นในฐานข้อมูลปลายทาง (Endpoint)
POST /guest/cctv/token/:accessID
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/guest/cctv/token/:accessID \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบเวลาเข้าถึงของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น) body `object` (จำเป็น) ออบเจ็กต์ JSON ของเวลาเข้าถึงใหม่ปลายทาง (Endpoint)
DELETE /api/ai/computer-vision/access-hours/:facilityId
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการเวลาเข้าถึงของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/ai/computer-vision/access-hours/:facilityId
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตหรือสร้างเวลาเข้าถึงของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น) body `object` (จำเป็น) ออบเจ็กต์ JSON ของเวลาเข้าถึงใหม่ปลายทาง (Endpoint)
POST /api/ai/computer-vision/access-hours/:facilityId
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบโซนการเข้าถึงของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น) body `object` (จำเป็น) ออบเจ็กต์ JSON ของโซนการเข้าถึงใหม่ปลายทาง (Endpoint)
DELETE /api/ai/computer-vision/access-zones/:facilityId
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการโซนการเข้าถึงของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/ai/computer-vision/access-zones/:facilityId
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตหรือสร้างโซนการเข้าถึงของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น) body `object` (จำเป็น) ออบเจ็กต์ JSON ของโซนการเข้าถึงใหม่ปลายทาง (Endpoint)
POST /api/ai/computer-vision/access-zones/:facilityId
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับผลรวมของ ID โมดูลผู้ดูแลทั้งหมดจากทุกแบรนด์และสถานที่ขององค์กร ในรูปแบบออบเจ็กต์โมดูล
พารามิเตอร์
organisationId `string` (จำเป็น) ID ขององค์กรปลายทาง (Endpoint)
GET /api/organisations/{organisationId}/admin-modules
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/organisations/{organisationId}/admin-modules \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการองค์กรทั้งหมด
พารามิเตอร์
includeBrands `string` (ไม่บังคับ) รวมแบรนด์ที่เชื่อมโยงกับองค์กร includeFacilities `string` (ไม่บังคับ) รวมสถานที่ที่เชื่อมโยงกับองค์กร includeRegions `string` (ไม่บังคับ) รวมภูมิภาคที่เชื่อมโยงกับองค์กรปลายทาง (Endpoint)
GET /api/organisations
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/organisations \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ตัวช่วย AI แบบง่ายสำหรับวิเคราะห์เนื้อหาของทิกเก็ตขอความช่วยเหลือและสร้างคำแนะนำตามหัวข้อที่มีอยู่ รวมถึงหัวข้อการค้นหา Algolia ที่แนะนำ
พารามิเตอร์
messageBody `string` (จำเป็น) เนื้อหาของข้อความที่จะส่ง topicData `string` (จำเป็น) ออบเจ็กต์/อาร์เรย์ JSON ของ topicData ที่ได้จาก osTicket (ระบบทิกเก็ต/การสนับสนุน) facilityId `string` (ไม่บังคับ) ID ภายในของคลับซึ่งจำเป็นต่อการระบุดัชนี Algolia ที่ถูกต้องสำหรับการค้นหาปลายทาง (Endpoint)
PUT /api/ai/helpers/analyse-support-ticket
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/ai/helpers/analyse-support-ticket \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
API สร้างรูปภาพแบบง่าย
พารามิเตอร์
type `string` (จำเป็น) ประเภทของรูปภาพที่จะสร้าง name `string` (จำเป็น) ชื่อรูปภาพ maxSize `string` (ไม่บังคับ) ขนาดการตอบกลับสูงสุดแบบไม่บังคับ เช่น 200KB, 1MB หรือจำนวนไบต์ ระบบจะย่อขนาด/บีบอัดรูปภาพให้พอดีปลายทาง (Endpoint)
PUT /api/ai/images/:type/:name
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/ai/images/:type/:name \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
การสืบค้น LLM แบบง่าย
ปลายทางขนาดเล็กสำหรับการสืบค้น LLM แบบง่ายที่ไม่เก็บสถานะ ใช้โมเดลราคาประหยัดที่ไม่มีการให้เหตุผล (gpt-4o-mini) พร้อมขีดจำกัดโทเค็นที่เข้มงวด ไม่มีประวัติการสนทนา ไม่มีเครื่องมือ ไม่มีการสตรีม เพียงส่งพรอมต์เข้าและรับข้อความออก
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/ai/llm/query
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ai/llm/query \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
คืนค่าการกำหนดค่า Algolia รวมถึงชื่อดัชนี app ID และคีย์ API
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/facilities/{facilityId}/algolia/config
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/algolia/config \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เริ่มต้นดัชนีสื่อสิ่งพิมพ์การตลาดของ Algolia
พารามิเตอร์
organisationId `string` (จำเป็น)ปลายทาง (Endpoint)
PUT /api/algolia/index
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/algolia/index \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาสื่อสิ่งพิมพ์การตลาด
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /algolia/search-marketing-print
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/algolia/search-marketing-print \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ค้นหาสื่อสิ่งพิมพ์การตลาด
พารามิเตอร์
club `string` (ไม่บังคับ) ID คลับ searchTerms `string` (ไม่บังคับ) คำค้นหา algoliaArgs `object` (ไม่บังคับ) อาร์กิวเมนต์การค้นหา Algolia เพิ่มเติมปลายทาง (Endpoint)
GET /algolia/search-marketing-print
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/algolia/search-marketing-print \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตออบเจ็กต์สื่อสิ่งพิมพ์การตลาดจำนวนมากสำหรับคลับที่ระบุ
ปลายทาง (Endpoint)
POST /algolia/bulk-update-marketing-print
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/algolia/bulk-update-marketing-print \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงไฟล์สื่อสิ่งพิมพ์การตลาดจาก Algolia
พารามิเตอร์
organisationId `string` (จำเป็น) search `string` (ไม่บังคับ) limit `string` (ไม่บังคับ) brand `string` (ไม่บังคับ) tag `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/algolia/marketing/assets
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เริ่มต้นดัชนีสื่อสิ่งพิมพ์การตลาดของ Algolia ด้วยการกำหนดค่าของสถานที่
พารามิเตอร์
organisationId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/algolia/marketing/assets
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาในดัชนี Algolia ที่ระบุตามคำค้นหา คลับ และ/หรือภาษาท้องถิ่น ปรับแต่งการค้นหาเพิ่มเติมได้ด้วยอาร์กิวเมนต์ Algolia เพิ่มเติม
พารามิเตอร์
searchTerms `string` (จำเป็น) คำที่จะค้นหาในดัชนี Algolia club `string` (ไม่บังคับ) ID ภายในของคลับที่ส่งคำขอ หากระบุไว้ ผลการค้นหาจะถูกกรองตามภูมิภาคที่เชื่อมโยงกับคลับ locale `string` (ไม่บังคับ) ภาษาท้องถิ่นที่ใช้ระบุภูมิภาคหากไม่ได้ระบุคลับ ได้มาจาก navigator.languages algoliaArgs `string` (ไม่บังคับ) อาร์กิวเมนต์เพิ่มเติม/กำหนดเองที่จะส่งต่อไปยังคำขอค้นหาของ Algoliaปลายทาง (Endpoint)
POST /api/algolia/search-wiki
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/algolia/search-wiki \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการประกาศทั้งหมด
ปลายทาง (Endpoint)
GET /api/announcements/list
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/announcements/list \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปโหลดไฟล์ไปยังบักเก็ต S3 สาธารณะ (ผ่าน Upload API) ซึ่งจะประมวลผลภายหลัง/ปรับแต่งไฟล์ให้เหมาะสม สร้างภาพขนาดย่อ ฯลฯ *โปรดทราบว่าไฟล์จะเปิดให้เข้าถึงได้แบบสาธารณะ*
พารามิเตอร์
file `string` (ไม่บังคับ) ชื่อของไฟล์ที่จะอัปโหลดปลายทาง (Endpoint)
POST /api/asset-upload
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/asset-upload \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าสถานะการอัปโหลดตาม uuid ของบันทึกการอัปโหลดที่ระบุ
พารามิเตอร์
uuid `string` (จำเป็น) UUID ของบันทึกการอัปโหลดปลายทาง (Endpoint)
GET /api/asset-upload/:uuid
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/asset-upload/:uuid \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งคำสั่งไปยัง Sonos ของคลับ
พารามิเตอร์
body `object` (จำเป็น) ออบเจ็กต์ JSON ของคำสั่งและข้อมูลป้อนเข้าที่จะส่งไปยัง Sonosปลายทาง (Endpoint)
PUT /api/audio-control/command/:club
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/command/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงการกำหนดค่าสำหรับส่วนหน้าของการควบคุมเสียง
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/audio-control/config/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/audio-control/config/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปลี่ยนการกำหนดค่าสำหรับส่วนหน้าของการควบคุมเสียง
พารามิเตอร์
body `object` (จำเป็น) ออบเจ็กต์ JSON ของบล็อกการกำหนดค่าใหม่ที่จะเพิ่มเข้าสู่ระบบปลายทาง (Endpoint)
PUT /api/audio-control/config/:club/:section
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงการตั้งค่าแบรนด์สำหรับภูมิภาคที่ระบุ
พารามิเตอร์
brandId `string` (ไม่บังคับ) ID ของแบรนด์ regionCode `string` (ไม่บังคับ) รหัส ISO ของภูมิภาคที่จะดึงการตั้งค่าปลายทาง (Endpoint)
GET /api/brands/{brandId}/regions/{regionCode}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการตั้งค่าแบรนด์หลายรายการสำหรับภูมิภาคที่ระบุ
พารามิเตอร์
brandId `string` (ไม่บังคับ) ID ของแบรนด์ที่จะอัปเดต regionCode `string` (ไม่บังคับ) รหัส ISO ของภูมิภาคที่จะอัปเดตการตั้งค่า acceptFreeTrialBookingsVisibility `string` (ไม่บังคับ) customTrackingCodeVisibility `string` (ไม่บังคับ) displayDataSources `string` (ไม่บังคับ) displayDefaultDataSource `string` (ไม่บังคับ) displayDefaultUI `string` (ไม่บังคับ) displayUIOptions `string` (ไม่บังคับ) defaultAboutBusiness `string` (ไม่บังคับ) defaultAboutBusinessFacebook `string` (ไม่บังคับ) facilityCoverImage `string` (ไม่บังคับ) digitalProfileSettingsVisibility `string` (ไม่บังคับ) facilityHoursVisibility `string` (ไม่บังคับ) facilityLocationVisibility `string` (ไม่บังคับ) facilityPaymentMethods `string` (ไม่บังคับ) facilityPrimaryLogo `string` (ไม่บังคับ) facilityStatusVisibility `string` (ไม่บังคับ) landingPagesVisibility `string` (ไม่บังคับ) lineChatIntegrationVisibility `string` (ไม่บังคับ) whatsAppIntegrationVisibility `string` (ไม่บังคับ) defaultWhatsAppMessage `string` (ไม่บังคับ) socialUrlsVisibility `string` (ไม่บังคับ) yextApiKey `string` (ไม่บังคับ) คีย์ API ที่การผสานระบบ Yext ใช้สำหรับแบรนด์-ภูมิภาคนี้ ใช้เฉพาะเมื่อ `directorySyncMode` เป็น `yext` directorySyncMode `string` (ไม่บังคับ) แบ็กเอนด์การซิงค์ที่จะทำงานสำหรับสถานที่ภายใต้แบรนด์-ภูมิภาคนี้ หากไม่ระบุ ค่าเริ่มต้นคือ `yext` เพื่อรองรับแบรนด์ที่มีอยู่ก่อนการเปิดตัว Directory Publishers websiteUrl `string` (ไม่บังคับ) androidAppUrl `string` (ไม่บังคับ) iosAppUrl `string` (ไม่บังคับ) featuredMessageDescription `string` (ไม่บังคับ) yextCategoryIds `string` (ไม่บังคับ) คีย์จัดเก็บแบบเดิม ค่าเหล่านี้คือ ID หมวดหมู่ของ Google Business Profile (เช่น gcid:gym) คำนำหน้า "yext" มีมาก่อนการเลิกใช้ Yext และคงไว้เพื่อรองรับแถวข้อมูลที่มีอยู่ในฐานข้อมูล customInputFields `string` (ไม่บังคับ) customInputFieldsToRemove `string` (ไม่บังคับ)ปลายทาง (Endpoint)
PUT /api/brands/{brandId}/regions/{regionCode}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงการตั้งค่าแบรนด์สำหรับสถานที่ที่ระบุ
พารามิเตอร์
facilityId `string` (ไม่บังคับ) ID ของสถานที่ที่จะดึงการตั้งค่าแบรนด์ปลายทาง (Endpoint)
GET /api/facilities/{facilityId}/brand-settings
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/brand-settings \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างแบรนด์ใหม่
พารามิเตอร์
name `string` (จำเป็น) ชื่อของแบรนด์ organisationId `string` (จำเป็น) ID ขององค์กรที่แบรนด์สังกัด redirectDashboard `string` (ไม่บังคับ) URL ที่จะเปลี่ยนเส้นทางไปหลังจากเข้าสู่ระบบแทน Dashboard เริ่มต้นปลายทาง (Endpoint)
POST /api/brands
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการแบรนด์ทั้งหมด
ปลายทาง (Endpoint)
GET /api/brands
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าออบเจ็กต์แบรนด์
พารามิเตอร์
brandId `string` (จำเป็น) ID ของแบรนด์ที่จะดึงข้อมูล includeOrganisation `boolean` (ไม่บังคับ) ระบุว่าจะรวมข้อมูลองค์กรในการตอบกลับหรือไม่ปลายทาง (Endpoint)
GET /api/brands/{brandId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตแบรนด์ตาม ID
พารามิเตอร์
brandId `string` (ไม่บังคับ) ID ของแบรนด์ที่จะอัปเดต name `string` (จำเป็น) ชื่อของแบรนด์ brandOrganisationId `string` (ไม่บังคับ) ID ขององค์กรที่แบรนด์สังกัด redirectDashboard `string` (ไม่บังคับ) URL ที่จะเปลี่ยนเส้นทางไปหลังจากเข้าสู่ระบบแทน Dashboard เริ่มต้น yextApiKey `string` (ไม่บังคับ) คีย์ API ที่ใช้เข้าถึง Yext API สำหรับแบรนด์นี้ customMenuLayout `object` (ไม่บังคับ) โครงสร้างเลย์เอาต์เมนูด้านข้างของแต่ละแบรนด์ (ส่วน / กลุ่ม / รายการที่อ้างอิงถึง โมดูลของระบบหรือ URL ที่กำหนดเอง) ตั้งค่าได้เฉพาะ ผู้ดูแลองค์กรขององค์กรของแบรนด์นี้เท่านั้นปลายทาง (Endpoint)
PUT /api/brands/{brandId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการสถานที่ของแบรนด์
คืนค่ารายการสถานที่แบบย่อ (id, ชื่อ, รหัส ISO ของภูมิภาค) ที่สังกัด แบรนด์ ใช้เพื่อเติมตัวเลือกเป้าหมายสถานที่ในการกำหนดค่าแบรนด์
พารามิเตอร์
brandId `string` (จำเป็น) ID ของแบรนด์ที่จะแสดงรายการสถานที่ปลายทาง (Endpoint)
GET /api/brands/{brandId}/facilities
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/facilities \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการแบรนด์ทั้งหมดที่เชื่อมโยงกับองค์กรของคลับ
ปลายทาง (Endpoint)
GET /api/clubs/{club}/brands
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/brands \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการประเภทปฏิทินทั้งหมด
ปลายทาง (Endpoint)
GET /api/programs/calendars/calendar-types
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/programs/calendars/calendar-types \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าไฟล์ KYC ของคลับ
พารามิเตอร์
clubId `string` (จำเป็น) ID ของคลับ key `string` (จำเป็น) คีย์ของไฟล์ KYCปลายทาง (Endpoint)
GET /api/clubs/{clubId}/kyc-assets/{key}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets/{key} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าข้อมูล KYC ของคลับ
ปลายทาง (Endpoint)
GET /api/clubs/{clubId}/kyc
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตข้อมูล KYC ของคลับ
พารามิเตอร์
clubId `string` (จำเป็น) ID ของคลับที่จะอัปเดต body `object` (จำเป็น)ปลายทาง (Endpoint)
PUT /api/clubs/{clubId}/kyc
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปโหลดไฟล์ KYC ของคลับ
พารามิเตอร์
clubId `string` (จำเป็น) ID ของคลับ file `string` (จำเป็น) ไฟล์ที่จะอัปโหลดปลายทาง (Endpoint)
POST /api/clubs/{clubId}/kyc-assets
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าการตั้งค่าคลับ
ปลายทาง (Endpoint)
GET /api/club/preferences/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/club/preferences/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างหรืออัปเดตรายการการตั้งค่าคลับ
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/club/preferences/:club
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/club/preferences/:club \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
คืนค่ารายการสมาชิกที่มีข้อตกลง
ปลายทาง (Endpoint)
GET /api/clubpass/user/email/exist/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/email/exist/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการสมาชิกที่มีข้อตกลง
ปลายทาง (Endpoint)
GET /api/clubpass/user/phone/exist/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/phone/exist/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการผู้ใช้ที่สังกัดคลับที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/clubs/{club}/members
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/members \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าว่าคลับเปิดทำการในวันที่ระบุหรือไม่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง date `string` (จำเป็น) วันที่ที่จะตรวจสอบในรูปแบบ unixปลายทาง (Endpoint)
GET /api/club-busy-hours/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/club-busy-hours/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าเมตาดาตาทั้งหมดของคลับที่แสดงบนเว็บไซต์ Example Club
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/clubs/clubpage/clubdata/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/clubpage/clubdata/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตเมตาดาตาของคลับด้วยข้อมูลใหม่ที่ส่งมาจากส่วนหน้า ฟิลด์ที่ไม่มีในเนื้อหาคำขอจะคงไว้ (ไม่มี SET ไม่มี REMOVE) ฟิลด์ที่ส่งเป็น `null` หรือสตริงว่างจะถูกล้าง ส่ง `updateAll: false` เพื่อใช้เส้นทางการรวมบางส่วนโดยเฉพาะ ไม่ว่าในกรณีใด ผู้เรียกไม่จำเป็นต้อง ส่งฟิลด์ที่ตนไม่ได้เป็นเจ้าของ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง body `string` (จำเป็น) ออบเจ็กต์ JSON ของข้อมูลคลับที่คุณต้องการอัปเดตปลายทาง (Endpoint)
POST /api/clubs/clubpage/updateclub/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/clubpage/updateclub/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มบันทึกการติดตามแบบกำหนดเองใหม่
พารามิเตอร์
club `string` (จำเป็น) id ของคลับ body `string` (จำเป็น) อาร์เรย์ของรายการติดตามแบบกำหนดเองปลายทาง (Endpoint)
POST /api/clubs/{club}/customtracking
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าการติดตามแบบกำหนดเองของคลับที่ระบุ
ปลายทาง (Endpoint)
GET /api/clubs/customtracking/:clubID
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/customtracking/:clubID \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตรายการติดตามแบบกำหนดเอง
พารามิเตอร์
club `string` (จำเป็น) id ของคลับ body `string` (จำเป็น) ออบเจ็กต์ JSON ของข้อมูลคลับที่คุณต้องการอัปเดตปลายทาง (Endpoint)
POST /api/clubs/{club}/customtracking/update
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking/update \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารูปภาพหน้าร้านเริ่มต้นของคลับ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/clubs/{club}/default-shop-front
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/default-shop-front \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการประตูที่มีในสถานที่
พารามิเตอร์
body `object` (จำเป็น) ออบเจ็กต์ JSON ของข้อมูลคลับที่คุณต้องการอัปเดตปลายทาง (Endpoint)
POST /api/clubs/integrations/doors/:facilityId
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ปลดล็อกประตูที่ระบุในสถานที่
พารามิเตอร์
body `object` (จำเป็น) ออบเจ็กต์ JSON ของข้อมูลคลับที่คุณต้องการอัปเดตปลายทาง (Endpoint)
POST /api/clubs/integrations/doors/unlock
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/unlock \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าการผสานระบบทั้งหมดและรายละเอียดการกำหนดค่าของคลับที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/clubs/integrations/list/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/integrations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตเมตาดาตาของคลับด้วยข้อมูลใหม่ที่ส่งมาจากส่วนหน้า
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง body `object` (จำเป็น) ออบเจ็กต์ JSON ของข้อมูลคลับที่คุณต้องการอัปเดตปลายทาง (Endpoint)
POST /api/clubs/integrations/update/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่า boolean ที่ระบุว่าคลับอยู่ในประเทศยุโรปหรือไม่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง date `string` (จำเป็น) วันที่ที่จะตรวจสอบในรูปแบบ unixปลายทาง (Endpoint)
GET /api/clubs/is-eu/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/is-eu/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการระดับสูงของคลับทั้งหมดในฐานข้อมูล
ปลายทาง (Endpoint)
GET /api/clubs/listclubs
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/listclubs \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าว่าคลับเปิดทำการในวันที่ระบุหรือไม่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง date `string` (จำเป็น) วันที่ที่จะตรวจสอบในรูปแบบ unixปลายทาง (Endpoint)
GET /api/clubs/{club}/open-on/{date}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/open-on/{date} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงรีวิวของคลับจาก DynamoDB
พารามิเตอร์
club `string` (จำเป็น) ID คลับปลายทาง (Endpoint)
GET /api/clubs/{club}/reviews
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงการตั้งค่ารีวิวของคลับจาก DynamoDB
พารามิเตอร์
facilityId `string` (จำเป็น) ID สถานที่ปลายทาง (Endpoint)
GET /api/clubs/{club}/reviews-settings
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการตั้งค่ารีวิวของคลับใน DynamoDB
พารามิเตอร์
club `string` (จำเป็น) ID คลับปลายทาง (Endpoint)
PUT /api/clubs/{club}/reviews-settings
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปิดใช้การเผยแพร่อัตโนมัติในการตั้งค่ารีวิวอีกครั้ง
พารามิเตอร์
club `string` (จำเป็น) ID คลับปลายทาง (Endpoint)
PUT /api/clubs/{club}/reviews/publish-recent-reviews
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เผยแพร่รีวิว
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง review `string` (จำเป็น) ID ภายในของรีวิวที่คุณต้องการเผยแพร่ปลายทาง (Endpoint)
PUT /api/clubs/{club}/reviews/{review}/publish
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/publish \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปิดใช้การเผยแพร่อัตโนมัติในการตั้งค่ารีวิวอีกครั้ง
พารามิเตอร์
club `string` (จำเป็น) ID คลับปลายทาง (Endpoint)
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
โพสต์คำตอบกลับรีวิวผ่านผู้เผยแพร่ต้นทางของรีวิวนั้น (Google ฯลฯ)
พารามิเตอร์
club `string` (จำเป็น) ID สถานที่ reviewId `string` (จำเป็น) ID รีวิวของ PH (ค้นหาในตาราง club-social-reviews) body `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/clubs/{club}/reviews/{reviewId}/respond
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{reviewId}/respond \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ยกเลิกการเผยแพร่รีวิว
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง review `string` (จำเป็น) ID ภายในของรีวิวที่คุณต้องการยกเลิกการเผยแพร่ปลายทาง (Endpoint)
PUT /api/clubs/{club}/reviews/{review}/un-publish
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/un-publish \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการเจ้าของที่สังกัดคลับที่ระบุจากฐานข้อมูล PH
พารามิเตอร์
clubID `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/clubs/{clubID}/owners
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/owners \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าแผนสมาชิกภาพทั้งหมดของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น) ID ภายในของสถานที่ปลายทาง (Endpoint)
GET /api/facilities/membership-plans/:facilityId
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตบันทึกแผนสมาชิกภาพ
พารามิเตอร์
facilityId `string` (จำเป็น) ID ภายในของสถานที่ body `object` (จำเป็น) ออบเจ็กต์ JSON ของข้อมูลแผนสมาชิกภาพที่คุณต้องการอัปเดตปลายทาง (Endpoint)
PUT /api/facilities/membership-plans/:facilityId
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปิดใช้การเผยแพร่อัตโนมัติในการตั้งค่ารีวิวอีกครั้ง
พารามิเตอร์
club `string` (จำเป็น) ID คลับปลายทาง (Endpoint)
PUT /api/clubs/{club}/reviews/publish-recent-reviews
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปิดใช้การเผยแพร่อัตโนมัติในการตั้งค่ารีวิวอีกครั้ง
พารามิเตอร์
club `string` (จำเป็น) ID คลับปลายทาง (Endpoint)
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการสกุลเงินทั้งหมดที่ใช้ได้
ปลายทาง (Endpoint)
GET /api/currencies
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/currencies \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับตำแหน่งทางภูมิศาสตร์โดยใช้ที่อยู่ IP
พารามิเตอร์
ip `string` (จำเป็น) ที่อยู่ IP ที่ต้องการค้นหาปลายทาง (Endpoint)
GET /api/geo/ip-location/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-location/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับตำแหน่งทางภูมิศาสตร์ของผู้ใช้ปัจจุบันตาม IP ของผู้ใช้
ปลายทาง (Endpoint)
GET /api/geo/ip-current
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-current \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับเฉพาะที่อยู่ IP สาธารณะของไคลเอ็นต์ที่ส่งคำขอ (ไม่มีการค้นหาตำแหน่งทางภูมิศาสตร์ ไม่มีการเรียก API ของบุคคลที่สาม) ใช้โดยแอปเพล็ตตัวแทน AI เพื่อเปรียบเทียบ IP สาธารณะของเบราว์เซอร์กับ WAN IP ที่อุปกรณ์รายงาน เพื่อตรวจหาว่าอยู่ในเครือข่ายเดียวกันหรือไม่
ปลายทาง (Endpoint)
GET /api/geo/client-ip
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/geo/client-ip \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ตัวแยกวิเคราะห์หมายเลขโทรศัพท์
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ Json ของหมายเลขที่คุณต้องการแยกวิเคราะห์ปลายทาง (Endpoint)
POST /api/phone/parser
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/phone/parser \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าอุปกรณ์นาฬิกาหลัก
พารามิเตอร์
club_id `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเพิ่มอุปกรณ์ปลายทาง (Endpoint)
GET /api/clubs/{club_id}/smart-club/health-check/master-clock
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/master-clock \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าอุปกรณ์ Sonos หลัก
พารามิเตอร์
club_id `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเพิ่มอุปกรณ์ปลายทาง (Endpoint)
GET /api/clubs/{club_id}/smart-club/health-check/sonos-mqtt
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/sonos-mqtt \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงการแจ้งเตือนแบตเตอรี่ต่ำของอุปกรณ์ Duress สำหรับคลับที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/clubs/{club}/smart-club/health-check/low-battery-duress
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/smart-club/health-check/low-battery-duress \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าข้อมูลการวิเคราะห์เครือข่าย
พารามิเตอร์
club_id `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเพิ่มอุปกรณ์ปลายทาง (Endpoint)
GET /api/clubs/{club_id}/smart-club/health-check/network-analysis
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/network-analysis \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งการแจ้งเตือนแบตเตอรี่ต่ำของอุปกรณ์ Duress สำหรับคลับที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/clubs/{club}/smart-club/health-check/send-low-battery-duress-notifs
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/smart-club/health-check/send-low-battery-duress-notifs \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่าข้อมูลการทดสอบความเร็วของอุปกรณ์แต่ละประเภท
พารามิเตอร์
club_id `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเพิ่มอุปกรณ์ปลายทาง (Endpoint)
GET /api/clubs/{club_id}/smart-club/health-check/speed-test
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/speed-test \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูข้อมูลเชิงลึกของรายการธุรกิจสำหรับสถานที่ โดยค่าเริ่มต้นจะแสดงยอดรวมรายวันจากผู้เผยแพร่ทั้งหมด หรือแสดงเฉพาะผู้เผยแพร่รายเดียวเมื่อระบุ `publisherId`
พารามิเตอร์
facilityId `string` (จำเป็น) publisherId `string` (ไม่บังคับ) startDate `string` (จำเป็น) endDate `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/facilities/{facilityId}/directory-insights
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูข้อมูลเชิงลึกของรายการธุรกิจแบบรวมสำหรับแบรนด์จากผู้เผยแพร่ทั้งหมด
พารามิเตอร์
brandId `string` (จำเป็น) startDate `string` (จำเป็น) endDate `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/brands/{brandId}/directory-insights
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คีย์เวิร์ดการค้นหายอดนิยม (แยกตามมีชื่อแบรนด์/ไม่มีชื่อแบรนด์) ของสถานที่ ปัจจุบันได้มาจาก Google Business Profile
พารามิเตอร์
facilityId `string` (จำเป็น) publisherId `string` (ไม่บังคับ) ค่าเริ่มต้นคือ "google" ปัจจุบันรองรับเฉพาะ Google เท่านั้น startDate `string` (จำเป็น) endDate `string` (จำเป็น) limit `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/facilities/{facilityId}/directory-search-keywords
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คีย์เวิร์ดการค้นหายอดนิยมของแบรนด์ รวมจากทุกสถานที่
พารามิเตอร์
brandId `string` (จำเป็น) startDate `string` (จำเป็น) endDate `string` (จำเป็น) limit `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/brands/{brandId}/directory-search-keywords
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการถาม-ตอบของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/facilities/{facilityId}/qna
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ตอบคำถาม
ปลายทาง (Endpoint)
POST /api/facilities/{facilityId}/qna/{questionId}/answer
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบคำตอบ
ปลายทาง (Endpoint)
DELETE /api/facilities/{facilityId}/qna/{questionId}/answer/{answerId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer/{answerId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงผู้เผยแพร่ที่เปิดใช้งานสำหรับองค์กรของสถานที่ พร้อมสถานะการเชื่อมต่อ
พารามิเตอร์
facilityId `string` (จำเป็น) organisationId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/facilities/{facilityId}/directory-publishers/resolved
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-publishers/resolved \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดู Access Policies ของสถานที่
การกำหนดค่าการเข้าถึงที่มีอยู่จะถูกแปลงเป็นนโยบายที่บังคับใช้ซึ่งเทียบเท่ากันโดยอัตโนมัติเมื่ออ่านครั้งแรก
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/policies/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แทนที่ Access Policies โดยใช้การตรวจสอบรุ่นแบบ optimistic
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/door-access/policies/{facilityId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
สร้าง Access Policy
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/door-access/policies/{facilityId}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดต Access Policy หนึ่งรายการ
พารามิเตอร์
facilityId `string` (จำเป็น) policyId `string` (จำเป็น)ปลายทาง (Endpoint)
PATCH /api/door-access/policies/{facilityId}/{policyId}
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบ Access Policy หนึ่งรายการ
พารามิเตอร์
facilityId `string` (จำเป็น) policyId `string` (จำเป็น) revision `integer` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/door-access/policies/{facilityId}/{policyId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ทำสำเนา Access Policy ด้วย ID ใหม่ที่คงที่
พารามิเตอร์
facilityId `string` (จำเป็น) policyId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/door-access/policies/{facilityId}/{policyId}/duplicate
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
นับจำนวนผู้ใช้และประตูที่ได้รับผลกระทบจาก Access Policies ทั้งหมด
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/policies/{facilityId}/impacts
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/impacts \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
นับจำนวนผู้ใช้และประตูที่ได้รับผลกระทบจาก Access Policy
พารามิเตอร์
facilityId `string` (จำเป็น) policyId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/policies/{facilityId}/{policyId}/impact
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/impact \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการตัวควบคุมประตูของสถานที่พร้อมกฎ Door/Gate Access ที่มีผลจริง
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/doors/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บันทึกการกำหนดค่าแทนที่รายประตู ไอคอน และการกำหนดค่าฝั่งอุปกรณ์
จุดเขียนข้อมูลจุดเดียวสำหรับทุกอย่างที่แอปเพล็ตผู้ดูแล DGA แก้ไขบน ประตู: - `accessRulesOverride` / `geofenceOverride` — ส่ง `null` เพื่อ ล้างค่าและกลับไปใช้ค่าเริ่มต้นของสถานที่ - `icon` — คีย์ที่คงที่ (ดู services/door-access/door-icons.js) ค่าที่ไม่รู้จักจะได้รับข้อผิดพลาด 400 - `holdTimeSeconds` (1–30), `maintenanceMode` (`off` / `force-open` / `force-closed`), `doorLocation` (ข้อความ อิสระ ไม่เกิน 64 อักขระ), `playNotificationSoundOnRelayToggle` (boolean), `autoUnlockSchedule` (ตารางช่วงเวลารายสัปดาห์) เดิม ฟิลด์เหล่านี้แก้ไขได้เฉพาะใน Device Management แต่ปัจจุบันแอปเพล็ต เขียนค่าเหล่านี้ได้โดยตรง ผู้ดูแลจึงไม่ต้องออกจากแผงลิ้นชักของประตู เพื่อเปลี่ยนการกำหนดค่าทั่วไป เมื่อมีการแก้ไขฟิลด์ฝั่งอุปกรณ์ใดๆ เส้นทางนี้จะส่งตัวแปร สภาพแวดล้อม Balena ที่ตรงกัน (`RELAY_NOTIFICATION_SOUND`, `DOOR_MAINTENANCE_MODE`, `DOOR_AUTO_UNLOCK_SCHEDULE`) และส่งคำสั่ง MQTT `unlockUpdates` เพื่อให้อุปกรณ์รับการกำหนดค่าใหม่ โดยไม่ต้องรอการรีเฟรชตัวแปรสภาพแวดล้อม Balena ครั้งถัดไป ทำงานแบบพยายามอย่างดีที่สุด การตอบกลับจะเป็น 200 แม้ว่า Balena จะเข้าถึงไม่ได้ชั่วคราว
พารามิเตอร์
facilityId `string` (จำเป็น) doorId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/door-access/doors/{facilityId}/{doorId}/override
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/override \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
การตรวจสอบสถานะ Balena แบบเบาสำหรับประกาศการโหลดซ้ำในแผงลิ้นชักของประตู
แผงลิ้นชักของแอปเพล็ต DGA จะดึงข้อมูลนี้เมื่อจำเป็นเมื่อผู้ดูแลเปิด ประตู เพื่อแสดงข้อความ "การบันทึกจะโหลดตัวควบคุมใหม่" ที่ถูกต้อง: แบบค่าเริ่มต้น "ไม่กี่วินาที" หรือแบบที่หนักกว่า "หลาย นาที" เมื่อมีการอัปเดตรุ่นรอดำเนินการอยู่ด้วย ส่งสแนปช็อตแบบแบนที่ได้มาจาก `balena.models.device.get()` หากล้มเหลวจะส่ง `data: null` (แทนการตอบกลับ 5xx) เพื่อให้เมื่อ Balena ขัดข้อง ข้อความประกาศจะลดระดับลงแทนที่จะบล็อกไม่ให้แผงลิ้นชัก เปิดได้
พารามิเตอร์
facilityId `string` (จำเป็น) doorId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/doors/{facilityId}/{doorId}/device-status
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/device-status \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
การแทนที่โดยผู้ดูแล: ปลดล็อกประตูจากแอปเพล็ต
สลับรีเลย์ชั่วครู่โดยใช้ `holdTimeSeconds` ปัจจุบันของประตู และเขียนแถวการตรวจสอบ `admin-override` ลงใน ph-door-app-access-events เพื่อให้ระบุผู้ดำเนินการได้ในบันทึกการเข้าถึง สำเร็จเสมอ ไม่ว่า `maintenanceMode === 'force-closed'` หรือไม่ เนื่องจากนี่คือ ทางออกฉุกเฉินของผู้ดูแล ส่งกลับ 200 ทันทีที่ส่งข้อความ MQTT ออกไป โดยไม่รอสถานะ confirmed / failed / timed_out ที่นี่ (ขั้นตอนเดิม /api/devices/door-controllers + /api/ics/devices/command ก็เป็น แบบส่งแล้วไม่รอผลเช่นกัน)
พารามิเตอร์
facilityId `string` (จำเป็น) doorId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/door-access/doors/{facilityId}/{doorId}/unlock
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/unlock \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เล่นรูปแบบเสียงบี๊ปเพื่อระบุตำแหน่งบนตัวควบคุมประตู
ส่งคำสั่ง MQTT `beep` เพื่อให้ตัวควบคุมส่งเสียงบี๊ป ความยาวปานกลางสามครั้ง (ครั้งละประมาณ 500 ms เว้นช่วงประมาณ 350 ms รวมประมาณ 2 s) ผู้ดูแล ใช้เพื่อหาตำแหน่งจริงของตัวควบคุมประตูที่หน้างาน ปุ่มเดิมใน Device Management ใช้เสียงบี๊ปสั้นๆ ต่อเนื่องประมาณ 30 s แต่ไดรเวอร์ออดของเฟิร์มแวร์ ส่งเสียงได้อย่างเชื่อถือได้เฉพาะครั้งแรกเท่านั้น แอปเพล็ตจึงส่งรูปแบบที่สั้นกว่าและเชื่อถือได้มากกว่า แทน ไม่มีแถวการตรวจสอบ เนื่องจากเป็นการดำเนินการวินิจฉัยที่ไม่มี ผลข้างเคียงต่อการควบคุมการเข้าถึง
พารามิเตอร์
facilityId `string` (จำเป็น) doorId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/door-access/doors/{facilityId}/{doorId}/identify
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/identify \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
รีบูตตัวควบคุมประตูจากระยะไกล
ส่งคำสั่ง MQTT `rebootDevice` แบบส่งแล้วไม่รอผลแบบเดียวกับที่ ปุ่ม "Remotely Reboot Device" เดิมใน Device Management ส่ง แต่ ควบคุมสิทธิ์ด้วยโมดูล `door-gate-access` เพื่อให้ผู้ดูแล DGA รีบูต ตัวควบคุมได้จากส่วนขั้นสูงของแผงลิ้นชักประตูโดยไม่ต้องมีสิทธิ์ `device-management` แยกต่างหาก ส่งกลับ 200 ทันทีที่ ส่งคำสั่งออกไป อุปกรณ์จะออฟไลน์ตลอดระยะเวลา การรีบูต
พารามิเตอร์
facilityId `string` (จำเป็น) doorId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/door-access/doors/{facilityId}/{doorId}/reboot
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/reboot \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการแถว User Access ของสถานที่
แสดงแถว user-access ทั้งหมดที่ยังไม่ถูกลบของสถานที่ รองรับ ตัวกรองฝั่งไคลเอ็นต์ (source, search, accessEnabled, hasGrants) การคำนวณ `hideExcluded` ฝั่งเซิร์ฟเวอร์ของเฟส 4 จะเพิ่มเข้ามาเมื่อ ตัวประเมินสิทธิ์แบบไฮบริดพร้อมใช้งาน ขณะนี้ระบบยอมรับพารามิเตอร์นี้แต่ ส่งชุดข้อมูลทั้งหมดกลับมา
พารามิเตอร์
facilityId `string` (จำเป็น) search `string` (ไม่บังคับ) source `string` (ไม่บังคับ) accessEnabled `string` (ไม่บังคับ) hasGrants `string` (ไม่บังคับ) hideExcluded `boolean` (ไม่บังคับ) เมื่อเป็น true ผู้ใช้ที่ซิงค์มา (source != manual) ซึ่งไม่สามารถ ผ่านประตูใดได้เลยในเวลาใดๆ ที่สถานที่นี้จะถูกซ่อน การตอบกลับจะมีโครงสร้าง `hidden: { count, sample }`ปลายทาง (Endpoint)
GET /api/door-access/users/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างแถว User Access ด้วยตนเองที่สถานที่
สร้างแถวใหม่ด้วย `source: 'manual'` ส่งกลับ 409 พร้อม `existingUserId` หากหมายเลขโทรศัพท์หรืออีเมลที่ระบุตรงกับ แถวที่มีอยู่แล้วในสถานที่นี้
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/door-access/users/{facilityId}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
ดูแถว User Access หนึ่งแถว
พารามิเตอร์
facilityId `string` (จำเป็น) userId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/users/{facilityId}/{userId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตแถว User Access บางส่วน
แก้ไขฟิลด์ข้อมูลประจำตัว / การอนุญาตชุดใดก็ได้ ส่ง `null` เพื่อ ล้างฟิลด์ที่ไม่บังคับ ส่งกลับ 409 หากหมายเลขโทรศัพท์หรืออีเมลใหม่ ซ้ำกับแถวอื่นในสถานที่เดียวกัน `appMessage` รับโครงสร้างเดียวกับข้อความระดับสถานที่ ใน PUT /api/door-access/rules/{facilityId} ได้แก่ ข้อความเนื้อหา ระดับความรุนแรง ลิงก์ (ไม่บังคับ) และกำหนดการเริ่ม/สิ้นสุด (ไม่บังคับ) แอปมือถือจะแสดง ข้อความนี้บนแดชบอร์ดเฉพาะผู้ใช้เป้าหมายเท่านั้น
พารามิเตอร์
facilityId `string` (จำเป็น) userId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PATCH /api/door-access/users/{facilityId}/{userId}
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ลบแถว User Access แบบ soft-delete
ทำเครื่องหมายแถวเป็น `deleted: true` และปิดการเข้าถึง การเชื่อมโยงบันทึกการตรวจสอบ กับ userId จะยังคงอยู่ ผู้ดูแลสามารถเปิดใช้งานอีกครั้งด้วยตนเองได้
พารามิเตอร์
facilityId `string` (จำเป็น) userId `string` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/door-access/users/{facilityId}/{userId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
การระบุที่มาของสิทธิ์เข้าถึงรายประตูสำหรับผู้ใช้
สำหรับทุกประตู จะส่งการอนุญาตที่กำหนดได้แน่นอน ณ ปัจจุบัน (`allowedNow`, `allowedVia`, `deniedReason`) และเส้นทางที่กำหนดค่าไว้สำหรับ Access Policies สิทธิ์ถาวร กำหนดการของนโยบาย สิทธิ์ตามช่วงเวลาที่ผู้ดูแลกำหนด และช่วงเวลาจากแหล่งพาร์ทเนอร์ที่แมปไว้และเป็นปัจจุบัน รวมถึงความพร้อมใช้งานที่มีผลอยู่/ครั้งถัดไป และความเป็นปัจจุบันของแหล่งข้อมูล blockAllAccess ของประตูและโหมดบำรุงรักษาจะถูกประเมินก่อนเส้นทางการอนุญาตทั้งหมด
พารามิเตอร์
facilityId `string` (จำเป็น) userId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/users/{facilityId}/{userId}/effective-access
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/effective-access \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างแถว User Access จำนวนมากจากการนำเข้า CSV
สร้างแถว `source: 'manual'` หลายแถวในคำขอเดียว โดยใช้ การตรวจสอบความถูกต้อง การปรับรูปแบบโทรศัพท์/อีเมล การตรวจสอบข้อมูลซ้ำรายสถานที่ การส่งข้อความอัตโนมัติ และตรรกะการเชิญ (ไม่บังคับ) แบบเดียวกับการ สร้างทีละรายการ แถวจะถูกประมวลผลตามลำดับ ดังนั้นแถวหลังที่ซ้ำกับ แถวที่สร้างไว้ก่อนหน้าจะถูกรายงานว่าซ้ำ สิทธิ์จะระบุเป็น ID ของประตู/กลุ่มที่แปลงแล้ว (ไคลเอ็นต์แปลงชื่อเป็น ID) สิทธิ์ตามช่วงเวลาจะถูกปฏิเสธในการสร้างจำนวนมากโดยเจตนา และต้อง เพิ่มผ่านปลายทางแทนที่รายผู้ใช้หลังการนำเข้า ไม่ส่งข้อผิดพลาดรายแถว ผลลัพธ์ของแต่ละแถวจะรายงานแยกกัน
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/door-access/users/{facilityId}/bulk
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/bulk \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แทนที่สิทธิ์ Access Time Window แบบเพิ่มเติมในแถว User Access
แทนที่เฉพาะ `timeWindowGrants` โดยไม่แตะต้อง `grants` แบบถาวรและ `sourceTimeWindows` จากการเชื่อมต่อ แต่ละรายการต้องมีขอบเขต (`facilityWide`, `doors` หรือ `groups`) และ `window` แบบสัมบูรณ์หรือรายสัปดาห์ การส่งอาร์เรย์ว่างจะล้างช่วงเวลาของผู้ดูแลทั้งหมดอย่างชัดแจ้ง
พารามิเตอร์
facilityId `string` (จำเป็น) userId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/door-access/users/{facilityId}/{userId}/time-window-grants
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/time-window-grants \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ตรึงแถว User Access ไม่ให้รับการอัปเดตจากการซิงค์กับแหล่งข้อมูล
ตั้งค่า `decoupledFromSource: true` ล้าง `sourceTimeWindows` ทั้งหมดที่การเชื่อมต่อเป็นเจ้าของ และทำให้การซิงค์ (cron + streams) บันทึกล็อกและข้ามแถวนี้ จนกว่าผู้ดูแลจะล้างแฟล็กผ่าน /recouple
พารามิเตอร์
facilityId `string` (จำเป็น) userId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/door-access/users/{facilityId}/{userId}/decouple
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/decouple \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เชื่อมแถว User Access กลับเข้ากับการอัปเดตจากการซิงค์กับแหล่งข้อมูล
พารามิเตอร์
facilityId `string` (จำเป็น) userId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/door-access/users/{facilityId}/{userId}/recouple
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/recouple \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิกถอนโทเค็นรีเฟรชของแอป Door/Gate Access ทั้งหมดของผู้ใช้
เพิกถอนตามหมายเลขโทรศัพท์/อีเมลที่จัดเก็บไว้ของผู้ใช้ (ตารางโทเค็นรีเฟรช ใช้คีย์ `sha256(plaintext)` และ GSI byMobilePhone / byEmail ช่วยให้ ลบแบบกระจายจากผู้ใช้รายเดียวได้) ผู้ใช้อื่นที่ใช้ โทรศัพท์/อีเมลเดียวกันในสถานที่อื่นก็จะถูกออกจากระบบด้วย
พารามิเตอร์
facilityId `string` (จำเป็น) userId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/door-access/users/{facilityId}/{userId}/logout
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/logout \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่ง (อีกครั้ง) อีเมลคำเชิญใช้งานแอป Door/Gate Access ถึงผู้ใช้
บังคับส่งอีเมลคำเชิญดาวน์โหลดแอปไปยังที่อยู่อีเมลที่จัดเก็บไว้ของผู้ใช้ (อีเมลเท่านั้น ไม่มี SMS) โดยข้ามการตรวจสอบคุณสมบัติและ การตรวจสอบว่าส่งแล้วที่ใช้ในเส้นทางการซิงค์อัตโนมัติ เนื่องจากนี่เป็น การดำเนินการของผู้ดูแลโดยชัดแจ้ง ส่งกลับ 400 หากผู้ใช้ไม่มีอีเมลในระบบ
พารามิเตอร์
facilityId `string` (จำเป็น) userId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/door-access/users/{facilityId}/{userId}/resend-invite
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/resend-invite \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูตัวอย่างผู้รับของการส่งคำเชิญใช้งานแอปจำนวนมาก
คำนวณชุดผู้ใช้ที่จะได้รับอีเมลคำเชิญใช้งานแอป กลุ่มพื้นฐานคือผู้ใช้ทุกคนที่ยังไม่ถูกลบ มีอีเมล และไม่เคย ใช้แอป (`appLastSeenAt` ว่าง) โดยค่าเริ่มต้น กลุ่มนี้จะถูกจำกัด เฉพาะผู้ใช้ที่มีสิทธิ์เข้าถึงในปัจจุบัน (ตรงกับกฎหรือได้รับสิทธิ์) และ ไม่เคยได้รับคำเชิญ ส่วน `includeAlreadyInvited` และ `includeNoAccess` จะขยายกลุ่มให้กว้างขึ้น ไม่มีการส่งอีเมล ระบบจะส่งกลับจำนวน ตัวอย่างเล็กน้อย และ userId ของผู้ที่เข้าเกณฑ์สำหรับปลายทาง execute
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/door-access/users/{facilityId}/bulk-invite/preview
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/bulk-invite/preview \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ส่งอีเมลคำเชิญใช้งานแอปถึงผู้ใช้เป็นชุด
ส่งอีเมลคำเชิญดาวน์โหลดแอปถึงแต่ละ userId ที่ระบุ (สูงสุด 50 รายการต่อคำขอ ไคลเอ็นต์จะแบ่งรายชื่อผู้เข้าเกณฑ์ทั้งหมด จากการดูตัวอย่างเป็นชุด) ผู้ใช้แต่ละรายจะถูกตรวจสอบอีกครั้ง ณ เวลาส่ง แถวที่ไม่มีอยู่แล้ว ไม่มีอีเมล หรือใช้แอปแล้วหลัง การดูตัวอย่างจะถูกข้าม ไม่นับเป็นล้มเหลว ผลลัพธ์รายผู้ใช้จะรายงาน แยกกัน เพื่อให้ไคลเอ็นต์สรุปจำนวนที่ส่งแล้ว / ล้มเหลว / ข้ามได้
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/door-access/users/{facilityId}/bulk-invite
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/bulk-invite \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แสดงรายการกลุ่มประตูของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/door-groups/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างกลุ่มประตู
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/door-access/door-groups/{facilityId}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
ดูกลุ่มประตูหนึ่งกลุ่ม
พารามิเตอร์
facilityId `string` (จำเป็น) groupId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/door-groups/{facilityId}/{groupId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตกลุ่มประตู
พารามิเตอร์
facilityId `string` (จำเป็น) groupId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PATCH /api/door-access/door-groups/{facilityId}/{groupId}
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ลบกลุ่มประตูแบบ soft-delete
พารามิเตอร์
facilityId `string` (จำเป็น) groupId `string` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/door-access/door-groups/{facilityId}/{groupId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการการเชื่อมต่อกับพาร์ทเนอร์ที่กำหนดค่าไว้ที่สถานที่
แสดงการเชื่อมต่อกับพาร์ทเนอร์ของสถานที่ (id, name, logo, enabled) โดยเชื่อม ph-facility-partner-config กับแค็ตตาล็อก ph-partners กำหนดขอบเขตตามโมดูล door-gate-access (เพื่อให้ผู้ดูแลที่ไม่มีสิทธิ์เข้าถึง external-integrations ยังคงแสดงตราพาร์ทเนอร์และรายการซิงค์รายพาร์ทเนอร์ได้)
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/partners/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/partners/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อ่านการกำหนดค่าการซิงค์ User Access ของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/sync-config/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการกำหนดค่าการซิงค์ User Access ของสถานที่
ยอมรับเฉพาะฟิลด์ที่ผู้ดูแลควบคุม (`enabled`, `requireIdentifier` และแมป `partners` ของพาร์ทเนอร์) เท่านั้น ส่วน `lastRunAt` และ `lastRunCounts` เขียนโดยเอนจินการซิงค์เอง `partner.partners` คือแมปการเปิดใช้งานรายพาร์ทเนอร์ที่ใช้ partnerId เป็นคีย์ (แบบเลือกไม่ใช้): เมื่อเปิด `partner.enabled` หลัก พาร์ทเนอร์จะซิงค์ เว้นแต่มีรายการ `{ enabled: false }` ระบุไว้อย่างชัดแจ้งที่นี่
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/door-access/sync-config/{facilityId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/sync-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อ่านการกำหนดค่าการส่งข้อความอัตโนมัติรายผู้ใช้ของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/auto-messages/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการกำหนดค่าการส่งข้อความอัตโนมัติรายผู้ใช้ของสถานที่
บันทึกกฎ แล้วประเมินแถว User Access ทุกแถวที่ สถานที่ใหม่ทันที เพื่อให้ผู้ใช้ที่มีอยู่ได้รับ/สูญเสียข้อความอัตโนมัติ ทันที ข้อความที่สร้างด้วยตนเองและแถวที่แยกออกจากแหล่งข้อมูลจะไม่ถูกแตะต้อง
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/door-access/auto-messages/{facilityId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
สถานะการประเมินข้อความอัตโนมัติใหม่ในเบื้องหลัง
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/auto-messages/{facilityId}/sweep-status
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId}/sweep-status \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เรียกใช้การซิงค์ User Access ตามต้องการสำหรับสถานที่
กวาดแหล่งข้อมูลที่เปิดใช้งานทุกแหล่ง (partner / cctv) ที่ สถานที่แบบซิงโครนัส และรวมแถว ph-door-access-users ผ่านลำดับขั้น การตัดข้อมูลซ้ำ ส่งกลับจำนวนรายแหล่งข้อมูล แหล่งข้อมูลที่ปิดใช้งานจะแสดงเป็น `skippedSyncDisabled: 1` แทนการไม่แสดง เพื่อให้ UI แสดง ทั้งสองแถวได้อย่างสม่ำเสมอ
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/door-access/sync/{facilityId}/run
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/run \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูตัวอย่างแบบทดลองของการลบจำนวนมากสำหรับข้อมูลที่ซิงค์จากพาร์ทเนอร์
ส่งกลับจำนวน + ตัวอย่างแถว user-access ที่จะถูก ลบแบบ soft-delete พร้อม confirmToken ที่ต้องส่งกลับไปยัง ปลายทาง execute ไม่มีการแก้ไขข้อมูล และไม่มีผลต่อบันทึกการเข้าถึง
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/door-access/sync/{facilityId}/bulk-delete/preview
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/bulk-delete/preview \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ดำเนินการลบจำนวนมากสำหรับข้อมูลที่ซิงค์จากพาร์ทเนอร์ (soft delete)
ลบแบบ soft-delete ทุกแถว user-access ที่ซิงค์จากพาร์ทเนอร์ภายในขอบเขต ต้องใช้ confirmToken ที่ได้จากการดูตัวอย่าง หากชุดข้อมูลจริงเปลี่ยนแปลง หลังการดูตัวอย่าง โทเค็นจะไม่ตรงกันและคำขอจะถูกปฏิเสธ (409) เพื่อให้ผู้ดูแลตรวจสอบอีกครั้ง บันทึกการเข้าถึงจะยังคงอยู่
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/door-access/sync/{facilityId}/bulk-delete
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/bulk-delete \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
กิจกรรมการซิงค์ User Access ล่าสุด (บันทึกการแก้ไขปัญหา)
ส่งกลับผลการซิงค์ล่าสุดของสถานที่ (created / skipped / disabled) พร้อมเหตุผล เพื่อให้ผู้ดูแลเห็นว่าเหตุใดสมาชิก จึงซิงค์หรือไม่ซิงค์ เรียงจากใหม่สุดก่อน
พารามิเตอร์
facilityId `string` (จำเป็น) limit `integer` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/door-access/sync/{facilityId}/log
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/log \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการเหตุการณ์ Door/Gate Access ของสถานที่
ส่งกลับเหตุการณ์การปลดล็อกจากมือถือ การแทนที่โดยผู้ดูแล และ Partner API ภายนอก ในฟีดเดียวที่เรียงจากใหม่ไปเก่า
พารามิเตอร์
facilityId `string` (จำเป็น) from `integer` (ไม่บังคับ) to `integer` (ไม่บังคับ) limit `integer` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/door-access/events/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/events/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ทดลองประเมิน Geofence สำหรับหมุดโหมดทดสอบของผู้ดูแล
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/door-access/geofence/test
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/door-access/geofence/test \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ดูสถานะการเริ่มต้นใช้งาน / การเปิดใช้งานของสถานที่
ใช้สำหรับหน้าแรก "Get Started" และแบนเนอร์ความคืบหน้าการตั้งค่าของแอปเพล็ต ส่งกลับจำนวนประตู + ผู้ใช้แบบสด ขั้นตอนหลักสองขั้นที่คำนวณได้ (มีผู้ใช้ อยู่ มีประตูอยู่) แฟล็ก "reviewed" ที่ไม่บังคับซึ่งบันทึกไว้ และ สถานะว่าสถานที่เปิดใช้งานแล้วหรือไม่ (ขั้นตอนหลักทั้งสองเสร็จแล้ว) ครั้งแรกที่ สถานที่เปิดใช้งาน ระบบจะประทับเวลา activatedAt
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/door-access/onboarding/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/door-access/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตแฟล็ก "reviewed" ที่ไม่บังคับของการเริ่มต้นใช้งานสำหรับสถานที่
บันทึกแฟล็กรายการตรวจสอบการตั้งค่าที่ไม่บังคับซึ่งผู้ดูแลทำเครื่องหมาย (กฎการ เข้าถึง การตั้งค่าการซิงค์ Geofencing) ขั้นตอนหลักและการเปิดใช้งานจะ คำนวณแบบสดจากจำนวนข้อมูลและไม่สามารถตั้งค่าที่นี่ได้ ส่งกลับ สถานะการเริ่มต้นใช้งานทั้งหมดที่รีเฟรชแล้ว
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/door-access/onboarding/{facilityId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ส่งกลับข้อมูลการวิเคราะห์ของสถานที่ในรูปแบบ JSON
พารามิเตอร์
clubId `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดึงข้อมูลการวิเคราะห์ fromDate `string` (ไม่บังคับ) วันที่เริ่มต้นของข้อมูลการวิเคราะห์ที่ต้องการดึง toDate `string` (ไม่บังคับ) วันที่สิ้นสุดของข้อมูลการวิเคราะห์ที่ต้องการดึงปลายทาง (Endpoint)
GET /clubs/{clubId}/lead-events
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/lead-events \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับข้อมูลการวิเคราะห์ของสถานที่ในรูปแบบ JSON
พารามิเตอร์
clubId `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดึงข้อมูลการวิเคราะห์ fromDate `string` (ไม่บังคับ) วันที่เริ่มต้นของข้อมูลการวิเคราะห์ที่ต้องการดึง toDate `string` (ไม่บังคับ) วันที่สิ้นสุดของข้อมูลการวิเคราะห์ที่ต้องการดึงปลายทาง (Endpoint)
GET /clubs/{clubId}/analytics/page-views
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/page-views \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับข้อมูลการวิเคราะห์ของสถานที่ในรูปแบบ JSON
พารามิเตอร์
clubId `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดึงข้อมูลการวิเคราะห์ fromDate `string` (ไม่บังคับ) วันที่เริ่มต้นของข้อมูลการวิเคราะห์ที่ต้องการดึง toDate `string` (ไม่บังคับ) วันที่สิ้นสุดของข้อมูลการวิเคราะห์ที่ต้องการดึงปลายทาง (Endpoint)
GET /clubs/{clubId}/analytics/referrers
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/referrers \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับข้อมูลการวิเคราะห์ของสถานที่ในรูปแบบ JSON
พารามิเตอร์
clubId `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดึงข้อมูลการวิเคราะห์ fromDate `string` (ไม่บังคับ) วันที่เริ่มต้นของข้อมูลการวิเคราะห์ที่ต้องการดึง toDate `string` (ไม่บังคับ) วันที่สิ้นสุดของข้อมูลการวิเคราะห์ที่ต้องการดึงปลายทาง (Endpoint)
GET /clubs/{clubId}/analytics/socials
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/socials \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับข้อมูลการวิเคราะห์ของสถานที่ในรูปแบบ JSON
พารามิเตอร์
clubId `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดึงข้อมูลการวิเคราะห์ fromDate `string` (ไม่บังคับ) วันที่เริ่มต้นของข้อมูลการวิเคราะห์ที่ต้องการดึง toDate `string` (ไม่บังคับ) วันที่สิ้นสุดของข้อมูลการวิเคราะห์ที่ต้องการดึงปลายทาง (Endpoint)
GET /clubs/{clubId}/analytics/top-cities
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/top-cities \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับข้อมูลการวิเคราะห์ของสถานที่ในรูปแบบ JSON
พารามิเตอร์
clubId `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดึงข้อมูลการวิเคราะห์ fromDate `string` (ไม่บังคับ) วันที่เริ่มต้นของข้อมูลการวิเคราะห์ที่ต้องการดึง toDate `string` (ไม่บังคับ) วันที่สิ้นสุดของข้อมูลการวิเคราะห์ที่ต้องการดึงปลายทาง (Endpoint)
GET /clubs/{clubId}/analytics/total-page-views
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/total-page-views \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับข้อมูลการวิเคราะห์ของสถานที่ในรูปแบบ JSON
พารามิเตอร์
clubId `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดึงข้อมูลการวิเคราะห์ fromDate `string` (ไม่บังคับ) วันที่เริ่มต้นของข้อมูลการวิเคราะห์ที่ต้องการดึง toDate `string` (ไม่บังคับ) วันที่สิ้นสุดของข้อมูลการวิเคราะห์ที่ต้องการดึงปลายทาง (Endpoint)
GET /clubs/{clubId}/analytics/traffic
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/traffic \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้าง JWT (Json Web Token) ชั่วคราวฝั่งฟรอนต์เอนด์สำหรับแผนภูมิแบบฝังของ Google Analytics ในหน้า 'analytics' ฝั่งฟรอนต์เอนด์
ปลายทาง (Endpoint)
GET /api/ga/onetimetoken
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ga/onetimetoken \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับวิดเจ็ตแดชบอร์ดจาก 'The Training Camp' หากสถานที่มีสมาชิกที่ใช้งานอยู่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/reporting/apps/widgets/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/reporting/apps/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับวันหยุดของสถานที่ทั้งหมดที่ยังไม่ได้ตรวจทาน
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/reporting/club/{club}/unreviewed-holidays
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/reporting/club/{club}/unreviewed-holidays \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ตั้งค่าวันหยุดของสถานที่ทั้งหมดที่ยังไม่ได้ตรวจทานให้เป็นตรวจทานแล้ว
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
PUT /api/reporting/club/{club}/review-holidays
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/reporting/club/{club}/review-holidays \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายงาน KPI ในรูปแบบ CSV แยกรายเดือนตลอด 12 เดือนที่ผ่านมา *หมายเหตุ* การเรียกนี้จะสร้างรายงานเดียวสำหรับสถานที่ทั้งหมดในระบบ อย่าเรียกใช้หลายครั้งพร้อมกัน มิฉะนั้น GymMaster จะรับภาระเกิน
พารามิเตอร์
months `string` (ไม่บังคับ) จำนวนเดือน (นับจากวันที่ปัจจุบัน) ที่ต้องการดึง (ค่าเริ่มต้นคือ 12)ปลายทาง (Endpoint)
GET /api/reporting/gymmaster/all-clubs-kpi-report
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/all-clubs-kpi-report \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับกราฟรายได้ของ MMS ของสถานที่ที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง range `string` (ไม่บังคับ) ช่วงจำนวนวัน (นับย้อนหลังจากวันที่ปัจจุบัน) ที่ต้องการดึงปลายทาง (Endpoint)
GET /api/reporting/gymmaster/revenuegraph/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/revenuegraph/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับข้อมูล/การวิเคราะห์ MMS (Member Management System) ของแดชบอร์ดสำหรับสถานที่ที่ระบุ ข้อมูลประกอบด้วยสถิติของ GymMaster/Perfect Gym รวมถึงตัวชี้วัดภายในอื่นๆ ที่ระบบของเรารวบรวม
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง range `string` (ไม่บังคับ) ช่วงจำนวนวัน (นับย้อนหลังจากวันที่ปัจจุบัน) ที่ต้องการดึงปลายทาง (Endpoint)
GET /api/reporting/gymmaster/widgets/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับข้อมูลวิดเจ็ต Myzone ของแดชบอร์ดสำหรับสถานที่ที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/reporting/myzone/widgets/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/reporting/myzone/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับออบเจ็กต์ของบริการที่ถูกระบุว่าออฟไลน์จากปลายทางหน้าสถานะ/การตรวจสอบของเราอย่างน้อยหนึ่งแห่ง ซึ่งกำหนดค่าผ่านเครื่องมือภายใน 'Uptime Kuma'
ปลายทาง (Endpoint)
GET /api/reporting/statuspage/events
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/reporting/statuspage/events \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับการจองการออกกำลังกายที่กำลังจะมาถึงใน 7 วันข้างหน้า
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/reporting/clubs/{club}/workout-bookings
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/reporting/clubs/{club}/workout-bookings \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการวันหยุดย้อนหลังของสถานที่
พารามิเตอร์
clubId `string` (ไม่บังคับ) ID คลับ fromDate `string` (ไม่บังคับ) Unix timestamp ของวันที่เริ่มต้นของช่วงวันหยุดที่ต้องการ toDate `string` (ไม่บังคับ) Unix timestamp ของวันที่สิ้นสุดของช่วงวันหยุดที่ต้องการปลายทาง (Endpoint)
GET /api/clubs/{clubId}/historical-holidays
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/historical-holidays \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับระบบอัตโนมัติของอุปกรณ์ที่เชื่อมโยงกับสถานที่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการแสดงรายการอุปกรณ์ปลายทาง (Endpoint)
GET /api/ics/automations/list/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ics/automations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการกำหนดค่าอุปกรณ์สำหรับจอแสดงผล/อุปกรณ์ที่มีอยู่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการอัปเดตอุปกรณ์ body `string` (จำเป็น) ออบเจ็กต์ JSON ของพารามิเตอร์การอัปเดตปลายทาง (Endpoint)
POST /api/ics/automations/update/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ics/automations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่ม/เชื่อมโยงอุปกรณ์หน้าจอหรือคอมพิวเตอร์จริงกับสถานที่ของคุณ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเพิ่มอุปกรณ์ body `string` (จำเป็น) ออบเจ็กต์ JSON ของหน้าจอใหม่ที่จะเชื่อมโยงปลายทาง (Endpoint)
POST /api/ics/devices/add/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/add/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สั่งให้อุปกรณ์เชื่อมต่อกับ SSID ใหม่ตามพารามิเตอร์
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการอัปเดตอุปกรณ์ body `string` (จำเป็น) ออบเจ็กต์ JSON ของพารามิเตอร์การอัปเดตปลายทาง (Endpoint)
POST /api/ics/devices/changewifi/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/changewifi/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการกำหนดค่าอุปกรณ์สำหรับจอแสดงผล/อุปกรณ์ที่มีอยู่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการอัปเดตอุปกรณ์ body `string` (จำเป็น) ออบเจ็กต์ JSON ของพารามิเตอร์การอัปเดตปลายทาง (Endpoint)
POST /api/ics/devices/command/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/command/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
โหลด URL/หน้าเว็บบนหน้าจอของอุปกรณ์ที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการอัปเดตอุปกรณ์ body `string` (จำเป็น) ออบเจ็กต์ JSON ของพารามิเตอร์การอัปเดตปลายทาง (Endpoint)
POST /api/ics/devices/loadurl/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/loadurl/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการกำหนดค่าอุปกรณ์สำหรับจอแสดงผล/อุปกรณ์ที่มีอยู่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการอัปเดตอุปกรณ์ body `string` (จำเป็น) ออบเจ็กต์ JSON ของพารามิเตอร์การอัปเดตปลายทาง (Endpoint)
PUT /api/ics/devices/update/{club}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/update/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปลี่ยนชื่อจอแสดงผล/อุปกรณ์ เปลี่ยนเฉพาะข้อมูลการลงทะเบียน ต่างจากปลายทางอัปเดตตรงที่ไม่ส่งข้อมูลใดไปยังอุปกรณ์ จึงใช้ได้กับหน้าจอที่ใช้ซอฟต์แวร์รุ่นที่สิ้นสุดอายุการใช้งานแล้วด้วย
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่อุปกรณ์สังกัดอยู่ body `string` (จำเป็น) ออบเจ็กต์ Json ของพารามิเตอร์การเปลี่ยนชื่อปลายทาง (Endpoint)
PUT /api/ics/devices/rename/{club}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/rename/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงวิดเจ็ตและลิงก์ไปยังสื่อออฟไลน์ของสถานที่ ตามวันที่ที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการเปลี่ยนโปรแกรม templated content date `string` (จำเป็น) วันที่สำหรับส่งกลับ URL ของวิดเจ็ต ใช้รูปแบบ `YYYY-MM-DD`ปลายทาง (Endpoint)
GET /api/ics/external-resources/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ics/external-resources/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงวิดเจ็ตและลิงก์ไปยังสื่อออฟไลน์ของสถานที่ ตามวันที่ที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการเปลี่ยนโปรแกรม templated contentปลายทาง (Endpoint)
GET /api/ics/list-scheduled-workouts/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ics/list-scheduled-workouts/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปลี่ยนโปรแกรม templated content ของสถานที่ที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการเปลี่ยนโปรแกรม templated content body `string` (จำเป็น) ออบเจ็กต์ Json ของโปรแกรม templated content ใหม่ที่ต้องการเปลี่ยนปลายทาง (Endpoint)
POST /api/ics/loadprogram/{club}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ics/loadprogram/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงการกำหนดค่าโปรแกรมของจอแสดงผล/อุปกรณ์ที่มีอยู่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการดึงข้อมูลโปรแกรมปลายทาง (Endpoint)
GET /api/ics/programs/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการกำหนดค่าโปรแกรมของจอแสดงผล/อุปกรณ์ที่มีอยู่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่คุณต้องการอัปเดตอุปกรณ์ body `string` (จำเป็น) ออบเจ็กต์ JSON ของพารามิเตอร์การอัปเดตปลายทาง (Endpoint)
PUT /api/ics/programs/{club}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงตัวเลือกการกำหนดค่าโปรแกรม
ปลายทาง (Endpoint)
GET /api/ics/programs/options/{facilityID}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/options/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แชตพร้อมบริบท RAG ไม่มีสิทธิ์เข้าถึงเครื่องมือ มีเพียงเครื่องมือคำขอ|การตอบกลับ API แบบง่ายที่ให้ดึงความรู้จากฐานความรู้ได้โดยตรง
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะตรวจหาอัตโนมัติหากไม่ระบุ)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/llm/chat
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/llm/chat \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ลบเอ็มเบดดิงของบทความออกจากคลังเวกเตอร์และอัปเดตสถานะการติดตามเอ็มเบดดิง
เนื้อหาคำขอ
ปลายทาง (Endpoint)
DELETE /api/llm/delete-article
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/delete-article \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แสดงรายการระเบียนตัวติดตามเอ็มเบดดิงตามองค์กรและสถานะ
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะระบุอัตโนมัติหากไม่ระบุ) status `string` (จำเป็น) สถานะที่ใช้กรอง (ต้องเป็นค่าใดค่าหนึ่งใน in_queue, done, anomaly, fail, deleted) Limit `string` (ไม่บังคับ) จำนวนรายการสูงสุดต่อหน้า LastEvaluatedKey `string` (ไม่บังคับ) JSON ของ LastEvaluatedKey ของ DynamoDB สำหรับการแบ่งหน้าปลายทาง (Endpoint)
GET /api/llm/embedding-track/by-org-and-status
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org-and-status \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการระเบียนตัวติดตามเอ็มเบดดิงตามองค์กร (กรองตามประเภททรัพยากรได้)
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะระบุอัตโนมัติหากไม่ระบุ) resourceType `string` (ไม่บังคับ) ประเภททรัพยากรที่ไม่บังคับ (เช่น "article") เมื่อระบุ จะกรองรายการที่ resourceTypeId ขึ้นต้นด้วย "{type}#" Limit `string` (ไม่บังคับ) จำนวนรายการสูงสุดต่อหน้า LastEvaluatedKey `string` (ไม่บังคับ) JSON ของ LastEvaluatedKey ของ DynamoDB สำหรับการแบ่งหน้าปลายทาง (Endpoint)
GET /api/llm/embedding-track/by-org
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เริ่มต้นคอลเลกชันฐานข้อมูลเวกเตอร์ขององค์กร
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะตรวจหาอัตโนมัติหากไม่ระบุ)ปลายทาง (Endpoint)
POST /api/llm/init-org
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/llm/init-org \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
การค้นหาเชิงความหมายในฐานความรู้
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะตรวจหาอัตโนมัติหากไม่ระบุ)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/llm/semantic-search
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/llm/semantic-search \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เริ่มการประมวลผลแบบสตรีมของบทความที่อยู่ในคิวเพื่อสร้างเอ็มเบดดิง พร้อมการอัปเดตความคืบหน้าแบบเรียลไทม์
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะตรวจหาอัตโนมัติหากไม่ระบุ)ปลายทาง (Endpoint)
POST /api/llm/start-embedding-stream
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/llm/start-embedding-stream \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มหรืออัปเดตเอ็มเบดดิงของบทความในฐานข้อมูลเวกเตอร์
จัดการเอ็มเบดดิงของบทความตามสถานะปัจจุบัน: - หากบทความยังไม่เผยแพร่ หรือเป็นแบบส่วนตัว: ลบเอ็มเบดดิง - หากบทความเผยแพร่แล้ว และเป็นแบบสาธารณะ: สร้างเอ็มเบดดิงใหม่ด้วยเนื้อหาทั้งหมด ต้องระบุเนื้อหาบทความทั้งหมดเสมอ
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะตรวจหาอัตโนมัติหากไม่ระบุ)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/llm/upsert-embeddings
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/llm/upsert-embeddings \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ปลายทางทดสอบสำหรับลบเอ็มเบดดิงของบทความเป็นชุดตามองค์กรและสถานะ (ไม่บังคับ)
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะระบุอัตโนมัติจากบริบทของผู้ใช้หากไม่ระบุ) status `string` (ไม่บังคับ) สถานะที่ใช้กรอง (ไม่บังคับ หากไม่ระบุ จะลบบทความทั้งหมดขององค์กรโดยไม่คำนึงถึงสถานะ) hardDelete `string` (ไม่บังคับ) ระบุว่าจะลบระเบียนการติดตามเอ็มเบดดิงอย่างถาวร (true) หรือลบแบบ soft delete โดยอัปเดตสถานะ (false)ปลายทาง (Endpoint)
DELETE /api/llm/test/batch-delete-by-status
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/batch-delete-by-status \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แปลงและแบ่งข้อความเป็นส่วนย่อยพร้อมสถิติโดยละเอียด
ปลายทางทดสอบที่แปลงข้อความและแบ่งเป็นส่วนย่อย จากนั้นแสดงสถิติโดยละเอียดเกี่ยวกับการกระจายของส่วนย่อย รวมถึงจำนวนอักขระ เปอร์เซ็นต์ และตัวชี้วัดคุณภาพ เพื่อช่วยประเมินประสิทธิภาพของการแบ่งส่วน
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/llm/test/transform-chunk
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/llm/test/transform-chunk \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ดูจำนวนเวกเตอร์ทั้งหมดในดัชนีเวกเตอร์ขององค์กร
ปลายทางทดสอบสำหรับนับเวกเตอร์ทั้งหมดในดัชนีเวกเตอร์ขององค์กรของผู้ใช้ปัจจุบัน
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะตรวจหาอัตโนมัติหากไม่ระบุ)ปลายทาง (Endpoint)
GET /api/llm/test/vector-count
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-count \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบเวกเตอร์ทั้งหมดของ articleId ที่ระบุออกจากดัชนีเวกเตอร์
ปลายทางทดสอบสำหรับลบเวกเตอร์ทั้งหมดที่เชื่อมโยงกับ articleId ที่ระบุออกจากดัชนีเวกเตอร์ขององค์กรของผู้ใช้ปัจจุบัน
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะตรวจหาอัตโนมัติหากไม่ระบุ) articleId `string` (จำเป็น) articleId ที่ต้องการลบเวกเตอร์ dryRun `string` (ไม่บังคับ) หากเป็น true จะแสดงเฉพาะสิ่งที่จะถูกลบโดยไม่ลบจริงปลายทาง (Endpoint)
DELETE /api/llm/test/vector-delete-article
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/vector-delete-article \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ทดสอบ Vector SDK โดยแสดงรายการดัชนีทั้งหมด
ปลายทางทดสอบสำหรับตรวจสอบการเชื่อมต่อของ Vector SDK และแสดงรายการดัชนีทั้งหมดในบักเก็ตเวกเตอร์
ปลายทาง (Endpoint)
GET /api/llm/test/vector-indices
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-indices \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เริ่มต้นดัชนีเวกเตอร์ขององค์กร
สร้างบักเก็ตเวกเตอร์และดัชนีสำหรับองค์กรของผู้ใช้ปัจจุบัน
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะตรวจหาอัตโนมัติหากไม่ระบุ)ปลายทาง (Endpoint)
POST /api/llm/test/vector-init-index
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/llm/test/vector-init-index \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูเมทาดาทาเวกเตอร์ทั้งหมดของ articleId ที่ระบุ
ปลายทางทดสอบสำหรับดึงส่วนย่อยของเวกเตอร์ทั้งหมดและเมทาดาทาของ articleId ที่ระบุจากดัชนีเวกเตอร์ มีประโยชน์สำหรับตรวจสอบว่าบทความถูกแบ่งส่วนและจัดเก็บอย่างไร การกรองดำเนินการโดยบริการคลังเวกเตอร์
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะตรวจหาอัตโนมัติหากไม่ระบุ) articleId `string` (จำเป็น) ID ของบทความที่ต้องการดึงเมทาดาทาเวกเตอร์ปลายทาง (Endpoint)
GET /api/llm/test/vector-metadata-by-article
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-metadata-by-article \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูเวกเตอร์ล่าสุดพร้อมเมทาดาทาจากดัชนีเวกเตอร์
ปลายทางทดสอบสำหรับดึงเวกเตอร์ล่าสุด 10 รายการพร้อมเมทาดาทา (แต่ไม่รวมข้อมูลเวกเตอร์) จากดัชนีเวกเตอร์ขององค์กรของผู้ใช้ปัจจุบัน มีประโยชน์สำหรับตรวจสอบโครงสร้างเมทาดาทา
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร (ระบบจะตรวจหาอัตโนมัติหากไม่ระบุ) limit `string` (ไม่บังคับ) จำนวนเวกเตอร์ล่าสุดที่ต้องการ (สูงสุด 100)ปลายทาง (Endpoint)
GET /api/llm/test/vector-recent
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-recent \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปโหลดแอสเซ็ตสำหรับ Marketing Manager/Designer ไปยังพื้นที่จัดเก็บ S3
พารามิเตอร์
file `string` (ไม่บังคับ) ชื่อของไฟล์ที่จะอัปโหลดปลายทาง (Endpoint)
POST /api/marketing/design/static/download
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/marketing/design/static/download \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับแอสเซ็ตแต่ละรายการในรูปแบบ JSON เพื่อโหลดเข้าสู่ตัวจัดการแอสเซ็ต
พารามิเตอร์
id `string` (จำเป็น) ID ของแอสเซ็ตที่ต้องการดึง organisationId `string` (จำเป็น) ID องค์กรของสถานที่ที่แอสเซ็ตสังกัดอยู่ปลายทาง (Endpoint)
GET /api/marketing/assets/get/{id}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get/{id} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับแอสเซ็ตการออกแบบทั้งหมด
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ Json ของข้อมูลสถานที่ที่คุณต้องการบันทึก organisationId `string` (จำเป็น) ID องค์กรของสถานที่ที่แอสเซ็ตสังกัดอยู่ useCache `string` (ไม่บังคับ) search `string` (ไม่บังคับ) คำค้นหาสำหรับกรองแอสเซ็ตตามชื่อหรือแท็ก brand `string` (ไม่บังคับ) แบรนด์ที่ใช้กรองแอสเซ็ต tag `string` (ไม่บังคับ) แท็กที่ใช้กรองแอสเซ็ตปลายทาง (Endpoint)
GET /api/marketing/assets/get
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับแอสเซ็ตสื่อสิ่งพิมพ์ทางการตลาดขององค์กรหนึ่งหน้า ใช้ Algolia สำหรับการค้นหาตามความเกี่ยวข้อง + การแบ่งหน้าตามหมายเลขหน้า (พร้อมจำนวนรวม) และกลับไปใช้ DynamoDB เมื่อ Algolia ใช้งานไม่ได้
พารามิเตอร์
organisationId `string` (จำเป็น) ID องค์กรของสถานที่ที่แอสเซ็ตสังกัดอยู่ search `string` (ไม่บังคับ) คำค้นหาสำหรับกรองแอสเซ็ตตามชื่อหรือแท็ก brand `string` (ไม่บังคับ) แบรนด์ที่ใช้กรองแอสเซ็ต tag `string` (ไม่บังคับ) แท็กที่ใช้กรองแอสเซ็ต page `string` (ไม่บังคับ) หมายเลขหน้าที่ต้องการดึง (เริ่มนับจากศูนย์) limit `string` (ไม่บังคับ) จำนวนแอสเซ็ตต่อหน้า (สูงสุด 300) useCache `string` (ไม่บังคับ) เมื่อเป็น false จะข้าม Algolia และสืบค้น DynamoDB โดยตรงปลายทาง (Endpoint)
GET /api/marketing/assets
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการแอสเซ็ตที่มีอยู่ซึ่งอัปโหลดผ่านตัวจัดการแอสเซ็ต
พารามิเตอร์
organisationId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/marketing/assets/list
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/list \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่ม/บันทึกแอสเซ็ต
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ Json ของข้อมูลสถานที่ที่คุณต้องการบันทึก organisationId `string` (จำเป็น) ID องค์กรของสถานที่ที่แอสเซ็ตสังกัดอยู่ปลายทาง (Endpoint)
PUT /api/marketing/assets/save
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/assets/save \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปโหลดแอสเซ็ตสำหรับ Marketing Manager/Designer ไปยังพื้นที่จัดเก็บ S3
พารามิเตอร์
file `string` (ไม่บังคับ) ชื่อของไฟล์ที่จะอัปโหลด organisationId `string` (ไม่บังคับ) ID ขององค์กรที่แอสเซ็ตสังกัดอยู่ปลายทาง (Endpoint)
POST /api/marketing/assets/upload
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/marketing/assets/upload \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการหน้าที่กำหนดเองทั้งหมดขององค์กร
พารามิเตอร์
organisationId `string` (จำเป็น) ID ภายในขององค์กรที่ต้องการส่งกลับหน้าที่กำหนดเองปลายทาง (Endpoint)
GET /api/marketing/custom-pages
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มหรืออัปเดตหน้าที่กำหนดเองขององค์กร
พารามิเตอร์
organisationId `string` (จำเป็น) ID ภายในขององค์กรที่ต้องการส่งกลับหน้าที่กำหนดเอง body `object` (จำเป็น) ข้อมูลหน้าที่กำหนดเองที่ต้องการเพิ่มหรืออัปเดตปลายทาง (Endpoint)
PUT /api/marketing/custom-pages
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการหน้าที่กำหนดเองทั้งหมดของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น) ID ภายในของสถานที่ที่ต้องการส่งกลับหน้าที่กำหนดเองปลายทาง (Endpoint)
GET /api/facilities/{facilityId}/marketing/custom-pages
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับงานออกแบบทั้งหมดที่ส่งออก/เรนเดอร์แล้วของ ID สถานที่ที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่ส่งคำขอ sort `string` (ไม่บังคับ) ตัวกรองสำหรับเรียงลำดับงานออกแบบ รองรับ 'oldest', 'newest' หรือ 'design'ปลายทาง (Endpoint)
GET /api/marketing/designs/{club}/exports
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/exports \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับเนื้อหา HTML ของงานออกแบบแต่ละรายการในรูปแบบ JSON เพื่อโหลดเข้าสู่ตัวแก้ไข
พารามิเตอร์
id `string` (จำเป็น) ID ของงานออกแบบที่ต้องการดึงปลายทาง (Endpoint)
GET /api/marketing/designs/get/{id}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/get/{id} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการการแมปอินพุตในงานออกแบบการตลาดและสื่อสิ่งพิมพ์ รวมถึงเทมเพลตงานออกแบบ
พารามิเตอร์
clubId `string` (จำเป็น) ID ภายในของสถานที่ที่ส่งคำขอ availableFeatures `string` (ไม่บังคับ) ส่งกลับรายการทั้งหมดที่มีฟีเจอร์ที่ระบุ brand `string` (ไม่บังคับ) กรองงานออกแบบตามแบรนด์ features `string` (ไม่บังคับ) กรองผลลัพธ์ตามฟีเจอร์ปลายทาง (Endpoint)
GET /api/marketing/designs/input-mapping/{clubId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/input-mapping/{clubId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการงานออกแบบที่มีอยู่ของสถานที่ที่ระบุ ซึ่งสามารถใช้ภายในงานออกแบบ (Print Designs) ที่สร้างในตัวแก้ไขการตลาด/สื่อสิ่งพิมพ์ของ Hub
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่ส่งคำขอ designAdmin `string` (ไม่บังคับ) ส่งกลับข้อมูลงานออกแบบทั้งหมด (มุมมองผู้ดูแล / ผู้ใช้ต้องเป็นผู้ดูแลระบบ) brand `string` (ไม่บังคับ) กรองงานออกแบบตามแบรนด์ปลายทาง (Endpoint)
GET /api/marketing/designs/{club}/list
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/list \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บังคับให้ระบบเรนเดอร์/เรนเดอร์ใหม่ภาพขนาดย่อและภาพตัวอย่างของงานออกแบบทั้งหมด (ใช้เป็นหลักเมื่อมีการเปลี่ยนแอสเซ็ต 'ต้นทาง' ใน S3 เป็นต้น) **หมายเหตุ** คุณสามารถเรียกฟังก์ชันนี้ได้เพียงครั้งเดียวต่อ X นาที (หรือหากมีการเรนเดอร์ทำงานอยู่แล้ว จะเรียกฟังก์ชันนี้ไม่ได้) เพื่อไม่ให้เซิร์ฟเวอร์รับภาระมากเกินไปจากการเรนเดอร์งานออกแบบทั้งหมด
ปลายทาง (Endpoint)
GET /api/marketing/designs/render-all-thumbnails
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/render-all-thumbnails \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เริ่มการเรนเดอร์ Dynamic Design
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ Json ของข้อมูลสถานที่ที่คุณต้องการส่งไปยังตัวประมวลผลการเรนเดอร์งานออกแบบปลายทาง (Endpoint)
POST /api/marketing/designs/dynamic/render-design
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/marketing/designs/dynamic/render-design \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่ม/บันทึก/อัปเดตงานออกแบบ
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ Json ของข้อมูลสถานที่ที่คุณต้องการบันทึกปลายทาง (Endpoint)
PUT /api/marketing/designs/{club}/save
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/{club}/save \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับงานออกแบบแบบคงที่แต่ละรายการในรูปแบบ JSON เพื่อโหลด
พารามิเตอร์
id `string` (จำเป็น) ID ของงานออกแบบแบบคงที่ที่ต้องการดึงปลายทาง (Endpoint)
GET /api/marketing/designs/static/get/{id}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/static/get/{id} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่ม/บันทึก/อัปเดตเทมเพลตงานออกแบบแบบคงที่
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ Json ของข้อมูลสถานที่ที่คุณต้องการบันทึกปลายทาง (Endpoint)
PUT /api/marketing/designs/static/{club}/save
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/static/{club}/save \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
นำตัวแปรที่ผู้ใช้ตั้งไว้ออกจากระบบ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่ส่งคำขอ body `string` (จำเป็น) Json ที่มี ID ของตัวแปรที่ต้องการนำออกปลายทาง (Endpoint)
DELETE /api/marketing/variables/{club}/delete
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/marketing/variables/{club}/delete \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการตัวแปรที่มีอยู่ของสถานที่ที่ระบุ ซึ่งสามารถใช้ภายในงานออกแบบ (Print Designs) ที่สร้างในตัวแก้ไขการตลาด/สื่อสิ่งพิมพ์ของ Hub
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่ส่งคำขอปลายทาง (Endpoint)
GET /api/marketing/variables/{club}/list
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/marketing/variables/{club}/list \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้าง 'ตัวแปร' ใหม่ที่ผู้ใช้กำหนดหนึ่งรายการสำหรับสถานที่ที่ระบุ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่ส่งคำขอ body `string` (จำเป็น) ออบเจ็กต์ Json ของตัวแปรใหม่ปลายทาง (Endpoint)
POST /api/marketing/variables/{club}/new
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/marketing/variables/{club}/new \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่ม/บันทึก/อัปเดตตัวแปรงานออกแบบตั้งแต่หนึ่งรายการขึ้นไปในระบบผ่านอาร์เรย์ของออบเจ็กต์
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของสถานที่ที่ส่งคำขอ body `string` (จำเป็น) อาร์เรย์ของออบเจ็กต์ Json ตั้งแต่หนึ่งรายการขึ้นไปที่ต้องการเพิ่ม/อัปเดต (ช่วยให้บันทึกหลายรายการ/ออบเจ็กต์ได้ในคำขอ API เดียว)ปลายทาง (Endpoint)
PUT /api/marketing/variables/{club}/save
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/variables/{club}/save \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับเอกสารกำกับ MCP สำหรับผู้ใช้ที่ลงชื่อเข้าใช้
ใช้สำหรับหน้า `/mcp-docs` ในแอป ส่งกลับ URL ของเซิร์ฟเวอร์ MCP ส่วนหัวการยืนยันตัวตนที่รองรับ ข้อมูลประจำตัว/แฟล็กผู้ดูแลของผู้เรียก และ รายการเครื่องมือที่กรองแล้ว (กรองแบบเดียวกับ `/mcp/tools/list` เพื่อให้ หน้าเอกสารไม่แสดงเครื่องมือที่ผู้เรียกไม่สามารถใช้งานได้จริง)
ปลายทาง (Endpoint)
GET /api/mcp/docs-manifest
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/mcp/docs-manifest \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างข้อตกลงของผู้ใช้
พารามิเตอร์
body `object` (จำเป็น) ออบเจ็กต์ Json ของข้อมูลสถานที่ที่คุณต้องการบันทึกปลายทาง (Endpoint)
POST /api/member-agreements/contracts-tna/:club
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการข้อตกลง
ปลายทาง (Endpoint)
GET /api/member-agreements/contracts-tna/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบข้อตกลงของผู้ใช้
ปลายทาง (Endpoint)
DELETE /api/member-agreements/contracts-tna/:club/:id
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายละเอียดของข้อตกลง
ปลายทาง (Endpoint)
GET /api/member-agreements/contracts-tna/:club/:id
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตข้อตกลงของผู้ใช้
พารามิเตอร์
body `object` (จำเป็น) ออบเจ็กต์ Json ของข้อมูลสถานที่ที่คุณต้องการบันทึกปลายทาง (Endpoint)
PATCH /api/member-agreements/contracts-tna/:club/:id
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูข้อตกลงเริ่มต้นของสถานที่
พารามิเตอร์
body `object` (จำเป็น) ออบเจ็กต์ Json ของข้อมูลสถานที่ที่คุณต้องการบันทึกปลายทาง (Endpoint)
GET /api/member-agreements/default-tna/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ตั้งค่าข้อตกลงเริ่มต้นของสถานที่
พารามิเตอร์
body `object` (จำเป็น) ออบเจ็กต์ Json ของข้อมูลสถานที่ที่คุณต้องการบันทึกปลายทาง (Endpoint)
POST /api/member-agreements/default-tna/:club
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการข้อตกลงระดับสากลหรือระดับภูมิภาค
ปลายทาง (Endpoint)
GET /api/member-agreements/global-tna/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/global-tna/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
คืนค่ารายการสมาชิกที่มีข้อตกลง
ปลายทาง (Endpoint)
GET /api/member-agreements/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายชื่อสมาชิกของสถานที่ตามฤดูกาลสำหรับแอปของค่ายฝึก
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง season `string` (ไม่บังคับ) ฤดูกาลของค่ายฝึกที่คุณต้องการกรอง userIds `string` (ไม่บังคับ) อาร์เรย์ของ ID ผู้ใช้ที่ต้องการกรอง useCache `string` (ไม่บังคับ) ระบุว่าจะใช้แคชหรือไม่ isUserMemberInfo `string` (ไม่บังคับ) หากเปิดใช้งาน จะกรองข้อมูลตาม userIds (แนะนำให้ใช้ ID ผู้ใช้เพียงรายการเดียว) และรวมข้อมูลที่จำเป็น เช่น กระดานผู้นำและการตั้งค่าของผู้ใช้ปลายทาง (Endpoint)
GET /api/members-leads/trainingcamp/club/season-members/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/trainingcamp/club/season-members/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบลีดการจองการออกกำลังกายหลายรายการ
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง body `string` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/members-leads/workout-booking/club/leads/{club}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการลีดการจองการออกกำลังกายของสถานที่
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง all `string` (ไม่บังคับ) แสดงลีดทั้งหมดหรือเฉพาะลีดที่กำลังจะมาถึงปลายทาง (Endpoint)
GET /api/members-leads/workout-booking/club/leads/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตลีดการจองการออกกำลังกาย
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึง body `string` (จำเป็น)ปลายทาง (Endpoint)
PUT /api/members-leads/workout-booking/club/leads/{club}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สลับสถานะการตั้งค่าสถานะของลีดการจองการออกกำลังกาย
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับ body `string` (จำเป็น)ปลายทาง (Endpoint)
PATCH /api/members-leads/workout-booking/club/leads/{club}/flag
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club}/flag \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูโมดูลที่มีผลจริงของสถานที่
ส่งกลับโมดูลทั้งหมดที่สถานที่ใช้ได้ โดยพิจารณาตามลำดับชั้น: การตั้งค่าของสถานที่ → โมดูลของแบรนด์ → โมดูลขององค์กร ผลลัพธ์จะถูกแคชใน Redis เพื่อประสิทธิภาพ
พารามิเตอร์
facilityId `string` (จำเป็น) ID ของสถานที่ที่ต้องการระบุโมดูลปลายทาง (Endpoint)
GET /api/facilities/{facilityId}/modules
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/modules \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
[]
ส่งกลับแค็ตตาล็อกโมดูลพร้อมการกำหนดค่าการแสดงผลเมนูด้านข้าง ระบบจะส่งรายการโมดูลทั้งหมดกลับมา เพื่อให้ตัวแสดงผลฝั่งฟรอนต์เอนด์ตัดสินการแสดงผลรายผู้ใช้ได้ โดย ACL ยังคงบังคับใช้ที่ฝั่งเซิร์ฟเวอร์ผ่าน `auth.checkModuleAccess()`
ปลายทาง (Endpoint)
GET /api/modules
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/modules \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูหมวดหมู่การแจ้งเตือน
ปลายทาง (Endpoint)
GET /api/notification/categories
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/notification/categories \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบการแจ้งเตือนที่อ่านแล้ว
ปลายทาง (Endpoint)
DELETE /api/club/notification/consumed/:club
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างข้อความแจ้งเตือน
ปลายทาง (Endpoint)
POST /api/club/notification/consumed/:club
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับอาร์เรย์ของการแจ้งเตือนที่อ่านแล้ว
ปลายทาง (Endpoint)
GET /api/club/notification/consumed/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบข้อความแจ้งเตือน
ปลายทาง (Endpoint)
DELETE /api/club/notification/messages/:club
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับอาร์เรย์ของข้อความแจ้งเตือน
ปลายทาง (Endpoint)
GET /api/club/notification/messages/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตข้อความแจ้งเตือน
ปลายทาง (Endpoint)
PATCH /api/club/notification/messages/:club
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างข้อความแจ้งเตือน
พารามิเตอร์
body `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/club/notification/messages/:club
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูผู้ที่ดูการแจ้งเตือนตามสถานที่
ปลายทาง (Endpoint)
POST /api/club/notification/viewers/:club
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/viewers/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูหมวดหมู่การแจ้งเตือนตามผู้ใช้
ปลายทาง (Endpoint)
GET /api/club/notification/user-categories/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/user-categories/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างข้อความแจ้งเตือน
ปลายทาง (Endpoint)
POST /api/notification/webhook
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/notification/webhook \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดู VAPID public key สำหรับการพุช HTML5
ส่งกลับ VAPID public key ที่ใช้สร้างการสมัครรับการพุชของเบราว์เซอร์
ปลายทาง (Endpoint)
GET /html5-push/vapid-public-key
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/html5-push/vapid-public-key \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บันทึกหรืออัปเดตการสมัครรับการพุช HTML5
บันทึกการสมัครรับการพุชของเบราว์เซอร์สำหรับผู้ใช้ปัจจุบัน
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /html5-push/subscribe
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/html5-push/subscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ลบการสมัครรับการพุช HTML5
นำการสมัครรับการพุชของเบราว์เซอร์ของผู้ใช้ปัจจุบันออก
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /html5-push/unsubscribe
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/html5-push/unsubscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ดูสถานะการเริ่มต้นใช้งานสถานที่สำหรับผู้ใช้ที่เรียก
ส่งกลับส่วนการเริ่มต้นใช้งานสองส่วนของสถานที่ ได้แก่ การตั้งค่า (รายละเอียด + ผลิตภัณฑ์ที่เลือก จัดเก็บในการตั้งค่าของสถานที่) และการชำระเงิน (คำนวณ แบบสดจากระเบียน payment-settings ของการเรียกเก็บเงิน SaaS) พร้อมแฟล็ก `required` เฉพาะผู้เรียกที่ส่วนหลักของแอปใช้ควบคุมการเข้าถึง ใช้เฉพาะสถานที่ แบบ technology-stack เท่านั้น สถานที่แบบ business-stack จะส่งกลับ required=false เสมอ
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/onboarding/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บันทึกความคืบหน้าของวิซาร์ดการเริ่มต้นใช้งานที่กำลังดำเนินอยู่ของสถานที่
บันทึกสถานะวิซาร์ดบางส่วน (ผลิตภัณฑ์ที่เลือก ข้อความอิสระ "Other" รายละเอียดธุรกิจที่ตรวจทานแล้ว ขั้นตอนปัจจุบัน) เพื่อให้การรีเฟรช/การออกกลางคันกลับมาทำต่อ จากจุดที่ผู้ใช้ค้างไว้ได้ ไม่ประทับสถานะเสร็จสิ้น ดูปลายทาง complete
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/onboarding/{facilityId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
สร้างคำแนะนำการกรอกข้อมูลล่วงหน้าด้วย AI สำหรับวิซาร์ดการเริ่มต้นใช้งาน
ใช้บริบทของสถานที่/แบรนด์/องค์กรที่มีอยู่เพื่อเสนอรายละเอียด สถานที่ (ข้อความแนะนำ ฟิลด์ข้อมูลติดต่อที่จัดระเบียบแล้ว) ผลิตภัณฑ์ ที่แนะนำให้เลือก และเคล็ดลับสั้นๆ ที่ปรับให้เหมาะกับผู้ใช้ ผลลัพธ์จะถูกแคชใน Redis เป็นเวลา 7 วัน คำแนะนำเป็นเพียงข้อเสนอแนะ ไคลเอ็นต์จะแสดงคำแนะนำ ในแบบฟอร์มตรวจทานที่แก้ไขได้ ตอบกลับ 200 เสมอ โดย `suggestions` จะเป็น null เมื่อ AI ใช้งานไม่ได้ เพื่อให้วิซาร์ดยังทำงานต่อได้อย่างราบรื่น
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/onboarding/{facilityId}/ai-prefill
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/onboarding/{facilityId}/ai-prefill \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ทำส่วนการตั้งค่าของการเริ่มต้นใช้งานสถานที่ให้เสร็จสมบูรณ์
ตรวจสอบความถูกต้องของรายการที่เลือก/รายละเอียดที่ยืนยันแล้ว บันทึกรายละเอียด ธุรกิจลงในระเบียนของสถานที่ สร้างเลย์เอาต์ tech-menu เริ่มต้นของสถานที่จาก ผลิตภัณฑ์ที่เลือก (เว้นแต่จะมีเลย์เอาต์ที่ปรับแต่งไว้แล้ว) และประทับสถานะการตั้งค่าเสร็จสิ้น ส่วนการชำระเงินไม่สามารถ ทำให้เสร็จที่นี่ได้โดยเจตนา เนื่องจากคำนวณแบบสดจากระเบียน payment-settings ของการเรียกเก็บเงิน SaaS จึงไม่สามารถข้ามข้อกำหนดบัตรที่บังคับได้ ด้วยการเรียกปลายทางนี้ ส่งกลับสถานะที่รีเฟรชแล้ว
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/onboarding/{facilityId}/complete
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/onboarding/{facilityId}/complete \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เรียกใช้การดำเนินการเชื่อมต่อกับพาร์ทเนอร์ที่ประกาศไว้สำหรับสถานที่
เรียกใช้การดำเนินการ "Run integration" ที่ประกาศไว้ในระเบียนพาร์ทเนอร์ (ph-partners.actions[]) ภายในขอบเขตของสถานที่ การล็อกแบบ single-flight ของ Redis ป้องกันไม่ให้มีการเรียกใช้ด้วยตนเองพร้อมกันสำหรับการดำเนินการ+สถานที่เดียวกัน
พารามิเตอร์
partnerId `string` (จำเป็น) actionId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/partners/{partnerId}/actions/{actionId}/run
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/partners/{partnerId}/actions/{actionId}/run \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
อ่านสถานะการทำงานของการดำเนินการเชื่อมต่อกับพาร์ทเนอร์
ส่งกลับว่ามีการเรียกใช้ด้วยตนเองที่กำลังดำเนินอยู่หรือไม่ (มีการถือล็อกแบบ single-flight) พร้อมการเรียกใช้ที่ร้องขอล่าสุด เพื่อให้ปุ่มในการตั้งค่าตรวจสอบแบบวนซ้ำ
พารามิเตอร์
partnerId `string` (จำเป็น) actionId `string` (จำเป็น) facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/partners/{partnerId}/actions/{actionId}/status
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/partners/{partnerId}/actions/{actionId}/status \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูการกำหนดค่าพาร์ทเนอร์ทั้งหมดของแบรนด์
พารามิเตอร์
brandId `string` (จำเป็น) ID ของแบรนด์ปลายทาง (Endpoint)
GET /api/partners/brand-config/{brandId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/partners/brand-config/{brandId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
[]
สร้างหรืออัปเดตการกำหนดค่าพาร์ทเนอร์ของแบรนด์
พารามิเตอร์
body `object` (จำเป็น)ปลายทาง (Endpoint)
PUT /api/partners/brand-config
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/partners/brand-config \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ย้ายข้อมูลการเชื่อมต่อ GymMaster ไปยัง facility-partner-config
สืบค้นสถานที่ทั้งหมดที่มีฟิลด์ gymMasterAPI และ gymMasterDomain และสร้าง/อัปเดต ระเบียน facility-partner-config ที่สอดคล้องกัน ปลายทางนี้ใช้สำหรับการย้ายข้อมูลครั้งเดียว
พารามิเตอร์
partnerId `string` (จำเป็น) ID พาร์ทเนอร์ GymMaster ที่จะใช้กับระเบียนที่ย้ายทั้งหมด dryRun `boolean` (ไม่บังคับ) หากเป็น true จะรายงานเฉพาะสิ่งที่จะถูกย้ายโดยไม่เขียนลงฐานข้อมูลปลายทาง (Endpoint)
GET /api/partners/migrate-gymmaster
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/partners/migrate-gymmaster \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปิดใช้งานพาร์ทเนอร์สำหรับองค์กร
พารามิเตอร์
partnerId `string` (จำเป็น) ID ของพาร์ทเนอร์ปลายทาง (Endpoint)
POST /api/partners/organisation/enable
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/partners/organisation/enable \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการพาร์ทเนอร์ขององค์กร ผู้ดูแลองค์กรจะเห็นเฉพาะพาร์ทเนอร์ขององค์กรตนเอง
ปลายทาง (Endpoint)
GET /api/partners/organisation
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/partners/organisation \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
นำพาร์ทเนอร์ขององค์กรออก
พารามิเตอร์
keyId `string` (จำเป็น) Key ID ของพาร์ทเนอร์ขององค์กร organisationId `string` (จำเป็น) ID องค์กรของพาร์ทเนอร์ปลายทาง (Endpoint)
DELETE /api/partners/organisation/{keyId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/organisation/{keyId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตโหมดการเข้าถึงและโมดูลของพาร์ทเนอร์ขององค์กร
พารามิเตอร์
keyId `string` (จำเป็น) Key ID ของพาร์ทเนอร์ขององค์กร organisationId `string` (จำเป็น) ID องค์กรของพาร์ทเนอร์ partnerId `string` (จำเป็น) ID ของพาร์ทเนอร์ accessMode `string` (จำเป็น) โหมดการเข้าถึงของพาร์ทเนอร์ modules `string` (ไม่บังคับ) รายการโมดูลสำหรับโหมดการเข้าถึง LIMITEDปลายทาง (Endpoint)
PUT /api/partners/organisation/update-access
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/partners/organisation/update-access \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างการเช็กอินสำหรับสถานที่
รับอาร์เรย์ของออบเจ็กต์การเช็กอินและส่งต่อไปยัง Partner API เพื่อประมวลผล สูงสุด 25 การเช็กอินต่อคำขอ
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/partners/check-ins
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/partners/check-ins \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ลบการกำหนดค่าพาร์ทเนอร์ของสถานที่
นำการกำหนดค่าของการเชื่อมต่อกับพาร์ทเนอร์ที่สถานที่ออก
พารามิเตอร์
facilityId `string` (จำเป็น) ID ของสถานที่ (club ID) partnerId `string` (จำเป็น) ID ของพาร์ทเนอร์ปลายทาง (Endpoint)
DELETE /api/partners/facility-config/{facilityId}/{partnerId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId}/{partnerId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการการกำหนดค่าพาร์ทเนอร์ทั้งหมดของสถานที่
ส่งกลับการเชื่อมต่อกับพาร์ทเนอร์ทั้งหมดที่กำหนดค่าไว้สำหรับสถานที่ที่ระบุ
พารามิเตอร์
facilityId `string` (จำเป็น) ID ของสถานที่ (club ID)ปลายทาง (Endpoint)
GET /api/partners/facility-config/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างหรืออัปเดตการกำหนดค่าพาร์ทเนอร์ของสถานที่
เพิ่มหรืออัปเดตการกำหนดค่าของการเชื่อมต่อกับพาร์ทเนอร์ที่สถานที่
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/partners/facility-config
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/partners/facility-config \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ลบสมาชิกตาม memberId
ลบระเบียนสมาชิกที่มีอยู่โดยใช้ memberId
พารามิเตอร์
memberId `string` (จำเป็น) ตัวระบุที่ไม่ซ้ำกันของสมาชิกปลายทาง (Endpoint)
DELETE /api/partners/members/{memberId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/members/{memberId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตสมาชิกตาม memberId
อัปเดตระเบียนสมาชิกที่มีอยู่โดยใช้ memberId
พารามิเตอร์
memberId `string` (จำเป็น) ตัวระบุที่ไม่ซ้ำกันของสมาชิกเนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/partners/members/{memberId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/partners/members/{memberId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ดูสถานะของการดำเนินการซิงค์สมาชิก
ส่งกลับสถานะปัจจุบันของการดำเนินการสร้าง/ลบสมาชิกแบบอะซิงโครนัส ที่เริ่มผ่าน POST /api/partners/members หรือ DELETE /api/partners/members/{memberId} ฟรอนต์เอนด์จะตรวจสอบปลายทางนี้ แบบวนซ้ำแทนขั้นตอนเดิมที่ตรวจสอบรายการแบบวนซ้ำ + จับคู่ชื่อ หมายเหตุ กฎการแยกผู้เช่าหลายรายกำหนดให้จำกัดขอบเขต partnerId/facilityId ระดับแถว แต่เลื่อนไปทำใน PR เสริมความปลอดภัย Phase 3a.1 เนื่องจาก operationId เป็น UUID ขนาด 128 บิต และเส้นทางนี้ควบคุมสิทธิ์ ด้วยการเข้าถึงโมดูล `external-integrations` อยู่แล้ว ผู้ที่มี operationId ที่ถูกต้องและสิทธิ์เข้าถึงโมดูลผู้ดูแลสามารถสืบค้นสถานะได้
พารามิเตอร์
operationId `string` (จำเป็น) UUID ที่ได้จาก POST/DELETEปลายทาง (Endpoint)
GET /api/partners/members/operations/{operationId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/partners/members/operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างหรืออัปเดตสมาชิกของสถานที่
รับอาร์เรย์ของออบเจ็กต์สมาชิกและส่งต่อไปยัง Partner API เพื่อประมวลผล สูงสุด 25 สมาชิกต่อคำขอ
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/partners/members
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/partners/members \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
สร้างหรืออัปเดตแผนสมาชิกภาพของสถานที่
รับอาร์เรย์ของออบเจ็กต์แผนสมาชิกภาพและส่งต่อไปยัง Partner API เพื่อประมวลผล สูงสุด 25 แผนสมาชิกภาพต่อคำขอ
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/partners/membership-plans
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/partners/membership-plans \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
สร้างบทบาทใหม่
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์บทบาทปลายทาง (Endpoint)
POST /api/roles
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการบทบาททั้งหมด
ปลายทาง (Endpoint)
GET /api/roles
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบบทบาทตาม ID
ปลายทาง (Endpoint)
DELETE /api/roles/{roleId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตบทบาทตาม ID
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์บทบาทปลายทาง (Endpoint)
PUT /api/roles/{roleId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างรายการเพิ่มเติมใหม่สำหรับใบแจ้งหนี้การเรียกเก็บเงิน SaaS
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กรที่ต้องการสร้างรายการเพิ่มเติม body `string` (ไม่บังคับ) เนื้อหาของคำขอปลายทาง (Endpoint)
POST /api/saas-billing/additional-line-items
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการรายการเพิ่มเติมสำหรับใบแจ้งหนี้การเรียกเก็บเงิน SaaS
พารามิเตอร์
organisationId `string` (จำเป็น) ID ขององค์กรปลายทาง (Endpoint)
GET /api/saas-billing/additional-line-items
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการรายการเพิ่มเติมสำหรับใบแจ้งหนี้การเรียกเก็บเงิน SaaS ของสถานที่
ปลายทาง (Endpoint)
GET /api/clubs/{clubId}/saas-billing/additional-line-items
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตรายการเพิ่มเติมสำหรับใบแจ้งหนี้การเรียกเก็บเงิน SaaS
พารามิเตอร์
itemId `string` (จำเป็น) ID ของรายการเพิ่มเติมที่ต้องการอัปเดต body `string` (จำเป็น) เนื้อหาของคำขอปลายทาง (Endpoint)
PUT /api/saas-billing/additional-line-items/{itemId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items/{itemId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัตรารายชั่วโมงแบบรวมของ Cloud Agent สำหรับ Your Rates
ส่งกลับขนาด Cloud Agent ที่มีให้บริการพร้อมราคารายชั่วโมงแบบรวมราคาเดียว (โฮสติ้ง + ซอฟต์แวร์) โดยไม่แสดงการแยกราคา usedPlans คือ SKU ที่สถานที่นี้ใช้งานใน 30 วันที่ผ่านมา
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/cloud-agent-rates
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/cloud-agent-rates \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบรายงานรายเดือนที่นำเข้า
พารามิเตอร์
club `string` (ไม่บังคับ) ID คลับ reportId `string` (ไม่บังคับ) ID ของรายงานปลายทาง (Endpoint)
DELETE /api/saas-billing/extended-access/monthly-usage-report/{reportId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{reportId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูรายงานพื้นที่จัดเก็บกล้องวงจรปิดล่าสุดของสถานที่
ส่งกลับสแนปช็อตพื้นที่จัดเก็บกล้องวงจรปิดรายวันล่าสุดของสถานที่จากบันทึกการเรียกเก็บเงินที่จัดเก็บไว้ (ย้อนหลังสูงสุด 31 วัน) รวมถึง totalStorage, date และค่าบริการที่เกี่ยวกับพื้นที่จัดเก็บ
พารามิเตอร์
club `string` (จำเป็น) ID คลับปลายทาง (Endpoint)
GET /api/saas-billing/extended-access/latest-cctv-storage-report/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/latest-cctv-storage-report/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับใบแจ้งหนี้ PDF ของสถานที่สำหรับช่วงเวลาที่ระบุ
พารามิเตอร์
club `string` (ไม่บังคับ) ID คลับ month `string` (ไม่บังคับ) เดือนของรายงานในรูปแบบตัวเลข 1 = มกราคม, 2 = กุมภาพันธ์ เป็นต้น year `string` (ไม่บังคับ) ปีของรายงานในรูปแบบตัวเลข เช่น 2021ปลายทาง (Endpoint)
GET /api/saas-billing/extended-access/monthly-usage-report/:club/invoice
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/:club/invoice \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ชุดไฟล์ PDF ใบแจ้งหนี้แพลตฟอร์มของเดือนการใช้งานที่เลือกในรูปแบบ ZIP เป็นเวอร์ชันแบบกลุ่มของปลายทาง .../invoice เดี่ยว ใช้สำหรับการดาวน์โหลดแบบเลือกหลายรายการในแท็บ Invoices & Receipts ของแอปเพล็ต Billing & Cost Management
พารามิเตอร์
club `string` (ไม่บังคับ) ID คลับ months `string` (ไม่บังคับ) เดือนการใช้งาน/รายงานในรูปแบบ YYYY-MM คั่นด้วยเครื่องหมายจุลภาค (สูงสุด 24)ปลายทาง (Endpoint)
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/invoices.zip
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{club}/invoices.zip \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายงานการใช้งานรายเดือนของหลายเดือนในการเรียกครั้งเดียว ใช้สำหรับแผนภูมิประวัติต้นทุนและผลต่างแบบเดือนต่อเดือนในแอปเพล็ต Billing & Cost Management เดือนที่ยังไม่มีการใช้งานจะส่งกลับ report: null (ตรงกับ UI แบบ 404 → $0 ของปลายทางรายเดือนเดี่ยว)
พารามิเตอร์
club `string` (ไม่บังคับ) ID คลับ months `string` (ไม่บังคับ) เดือนการใช้งานในรูปแบบ YYYY-MM คั่นด้วยเครื่องหมายจุลภาค (สูงสุด 12)ปลายทาง (Endpoint)
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/batch
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{club}/batch \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
นำเข้ารายงานรายเดือนของสถานที่
พารามิเตอร์
club `string` (ไม่บังคับ) ID คลับปลายทาง (Endpoint)
PUT /api/saas-billing/extended-access/usage-report/:club
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายงาน CSV ของการใช้งานกล้องวงจรปิดใน 30 วันที่ผ่านมาสำหรับทุกสถานที่
ปลายทาง (Endpoint)
GET /api/saas-billing/extended-access/usage-report/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการรายงานรายวันทั้งหมดของเดือนสำหรับสถานที่
พารามิเตอร์
club `string` (ไม่บังคับ) ID คลับ month `string` (ไม่บังคับ) เดือนของรายงานในรูปแบบตัวเลข 1 = มกราคม, 2 = กุมภาพันธ์ เป็นต้น year `string` (ไม่บังคับ) ปีของรายงานในรูปแบบตัวเลข เช่น 2021ปลายทาง (Endpoint)
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/daily-reports
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{club}/daily-reports \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการรายงานรายเดือนที่นำเข้าสำหรับผู้ดูแล
พารามิเตอร์
organisationId `string` (จำเป็น) ID ขององค์กรปลายทาง (Endpoint)
GET /api/saas-billing/extended-access/usage-report/imported
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/imported \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายงาน CSV ของการใช้งานกล้องวงจรปิดใน 30 วันที่ผ่านมาสำหรับทุกสถานที่
พารามิเตอร์
club `string` (ไม่บังคับ) ID คลับ month `string` (ไม่บังคับ) เดือนของรายงานในรูปแบบตัวเลข 1 = มกราคม, 2 = กุมภาพันธ์ เป็นต้น year `string` (ไม่บังคับ) ปีของรายงานในรูปแบบตัวเลข เช่น 2021ปลายทาง (Endpoint)
GET /api/saas-billing/extended-access/monthly-usage-report/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายงานการใช้งานตามช่วงเวลาของสถานที่
พารามิเตอร์
club `string` (ไม่บังคับ) ID คลับ periodStart `string` (ไม่บังคับ) วันเริ่มต้นของช่วงเวลาในรูปแบบ YYYY-MM-DD periodEnd `string` (ไม่บังคับ) วันสิ้นสุดของช่วงเวลาในรูปแบบ YYYY-MM-DDปลายทาง (Endpoint)
GET /api/saas-billing/extended-access/periodical-usage-report/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/periodical-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ชุดไฟล์ PDF เอกสารการเรียกเก็บเงินเป็น ZIP เดียวที่รวมเอกสารหลายประเภท ได้แก่ ใบแจ้งหนี้แพลตฟอร์ม (ตามเดือนการใช้งาน) ใบเสร็จการเติมเงินกระเป๋าเงิน SaaS และใบเสร็จการเติมเงิน Model Router เป็นเวอร์ชันแบบกลุ่มของปลายทาง invoices.zip / receipts.zip รายประเภท สำหรับแท็บ Invoices & Receipts แบบรวม ทุกเดือน/id ที่ร้องขอต้องเป็นเอกสารที่สถานที่เป็นเจ้าของ หากมีค่าใดไม่ถูกต้อง ทั้งชุดจะล้มเหลว
พารามิเตอร์
clubID `string` (จำเป็น) invoiceMonths `string` (ไม่บังคับ) เดือนการใช้งานในรูปแบบ YYYY-MM คั่นด้วยเครื่องหมายจุลภาค walletIds `string` (ไม่บังคับ) ID ธุรกรรมการเติมเงินกระเป๋าเงิน SaaS คั่นด้วยเครื่องหมายจุลภาค aiIds `string` (ไม่บังคับ) ID ธุรกรรมการเติมเงิน Model Router คั่นด้วยเครื่องหมายจุลภาคปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/documents.zip
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/documents.zip \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มหมายเหตุลงในระเบียนรายเดือน
พารามิเตอร์
recordID `string` (ไม่บังคับ) ID ของระเบียนที่ต้องการดึง note `string` (ไม่บังคับ) หมายเหตุที่ต้องการเพิ่มลงในระเบียนปลายทาง (Endpoint)
POST /api/saas-billing/monthly-records/{recordID}/notes
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID}/notes \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการระเบียนรายเดือนของการเรียกเก็บเงิน SaaS
พารามิเตอร์
club `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดึง month `string` (ไม่บังคับ) เดือนที่เรียกเก็บเงินในรูปแบบ YYYY-MMปลายทาง (Endpoint)
GET /api/saas-billing/monthly-records/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการระเบียนรายเดือนของการเรียกเก็บเงิน SaaS ที่ล้มเหลวหรือต้องใช้ 3D Secure
พารามิเตอร์
clubID `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดึงระเบียนรายเดือนที่ล้มเหลวปลายทาง (Endpoint)
GET /api/clubs/:clubID/saas-billing/flagged
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/flagged \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับระเบียนรายเดือนของการเรียกเก็บเงิน SaaS ทั้งหมด (บัญชีแยกประเภทใบแจ้งหนี้) ของสถานที่ เรียงจากเดือนที่เรียกเก็บเงินล่าสุดก่อน เป็นเวอร์ชันระดับสถานที่ของปลายทาง paginate-monthly-records ที่ใช้ได้เฉพาะผู้ดูแล ใช้สำหรับแท็บ "Invoices & Receipts" ของลูกค้าในแอปเพล็ต Billing & Cost Management
พารามิเตอร์
clubID `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการแสดงรายการระเบียนรายเดือนปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/monthly-records
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการระเบียนรายเดือนของการเรียกเก็บเงิน SaaS
พารามิเตอร์
organisationId `string` (ไม่บังคับ) ID ขององค์กร month `string` (ไม่บังคับ) เดือนในรูปแบบ MM year `string` (ไม่บังคับ) ปีในรูปแบบ YYYY filters `string` (ไม่บังคับ) ตัวกรองสตริงคิวรีที่สร้างโดย Datatable order `string` (ไม่บังคับ) สตริงคิวรีที่สร้างโดย Datatableปลายทาง (Endpoint)
GET /api/saas-billing/monthly-records
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลองชำระเงินที่ล้มเหลวของสถานที่อีกครั้ง
พารามิเตอร์
clubID `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดึงระเบียนรายเดือนที่ล้มเหลวปลายทาง (Endpoint)
PUT /api/clubs/:clubID/saas-billing/retry-failed-payments
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/retry-failed-payments \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตระเบียนรายเดือน
พารามิเตอร์
recordID `string` (ไม่บังคับ) ID ของระเบียนที่ต้องการดึง status `string` (ไม่บังคับ) สถานะที่ต้องการอัปเดตให้ระเบียนปลายทาง (Endpoint)
PUT /api/saas-billing/monthly-records/{recordID}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ตรวจสอบว่าการชำระเงินสำเร็จหรือไม่และอัปเดตสถานะของระเบียน
พารามิเตอร์
clubID `string` (ไม่บังคับ) recordID `string` (ไม่บังคับ) ID ของระเบียนที่ต้องการดึงปลายทาง (Endpoint)
PUT /api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เพิ่มวิธีการชำระเงินสำหรับสถานที่
พารามิเตอร์
clubID `string` (ไม่บังคับ)ปลายทาง (Endpoint)
POST /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ซิงค์วิธีการชำระเงินของสถานที่กับ Stripe
พารามิเตอร์
clubID `string` (ไม่บังคับ)ปลายทาง (Endpoint)
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับงบประมาณการใช้จ่ายของสถานที่พร้อมยอดตั้งแต่ต้นเดือน (MTD)/การคาดการณ์ที่คำนวณแล้ว
พารามิเตอร์
clubID `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/budget
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้าง/อัปเดต/ล้างงบประมาณการใช้จ่ายของสถานที่
พารามิเตอร์
clubID `string` (ไม่บังคับ) body `object` (ไม่บังคับ)ปลายทาง (Endpoint)
PUT /api/clubs/{clubID}/saas-billing/budget
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
ลบวิธีการชำระเงินออกจากการตั้งค่าการชำระเงินของสถานที่
พารามิเตอร์
clubID `string` (ไม่บังคับ) paymentMethodID `string` (ไม่บังคับ)ปลายทาง (Endpoint)
DELETE /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูการตั้งค่าการชำระเงินของสถานที่
พารามิเตอร์
clubID `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/payment-settings
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการตั้งค่าการชำระเงินของสถานที่
พารามิเตอร์
clubID `string` (ไม่บังคับ) lockedOut `boolean` (ไม่บังคับ) ระบุว่าสถานที่จะถูกล็อกไม่ให้เข้าใช้ระบบหรือไม่ pauseBilling `boolean` (ไม่บังคับ) ระบุว่าจะหยุดการเรียกเก็บเงินอัตโนมัติของสถานที่ชั่วคราวหรือไม่ customerID `string` (ไม่บังคับ) การเพิ่มค่านี้จะอัปเดต ID ลูกค้า Stripe ของสถานที่ deleteSourceID `string` (ไม่บังคับ) ระบุว่าจะลบลูกค้าต้นทางออกจาก Stripe หรือไม่ปลายทาง (Endpoint)
PUT /api/clubs/{clubID}/saas-billing/payment-settings
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูเดือนที่เรียกเก็บเงินเร็วที่สุดของทุกสถานที่
พารามิเตอร์
clubID `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/saas-billing/payment-settings/earliest-billed-month
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/earliest-billed-month \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการบัญชีที่สามารถยกเลิกการล็อกจากการเรียกเก็บเงินของสถานที่ได้ตามลำดับขั้น: ผู้ใช้ที่มีโมดูลการเรียกเก็บเงินก่อน และผู้ดูแลองค์กรเป็นตัวเลือกสำรองเฉพาะเมื่อไม่มีผู้ใช้ดังกล่าวเท่านั้น
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/lockout-contacts
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/lockout-contacts \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แบ่งหน้าดูสถานที่ทั้งหมดในระบบและส่งกลับ ID ลูกค้าของแต่ละสถานที่
พารามิเตอร์
clubID `string` (ไม่บังคับ) organisationId `string` (ไม่บังคับ) ID ขององค์กรปลายทาง (Endpoint)
GET /api/saas-billing/payment-settings/customer-ids
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/customer-ids \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ตั้งค่าวิธีการชำระเงินหลักของสถานที่
พารามิเตอร์
clubID `string` (ไม่บังคับ)ปลายทาง (Endpoint)
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}/primary
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}/primary \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตโปรไฟล์การเรียกเก็บเงินของสถานที่
พารามิเตอร์
clubID `string` (ไม่บังคับ) invoiceEntity `string` (ไม่บังคับ) billingContacts `string` (ไม่บังคับ) รายการ UUID ของผู้ติดต่อ KYC ccEmails `string` (ไม่บังคับ) รายการอีเมลที่จะได้รับสำเนา (CC) ของใบแจ้งหนี้ปลายทาง (Endpoint)
PUT /api/clubs/{clubID}/saas-billing/payment-settings/billing-profile
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/billing-profile \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตวิธีการชำระเงินของสถานที่
พารามิเตอร์
clubID `string` (ไม่บังคับ) cardID `string` (ไม่บังคับ)ปลายทาง (Endpoint)
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{cardID}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{cardID} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายละเอียดแยกตามสถานที่ของค่าบริการผลิตภัณฑ์ที่เกี่ยวข้องทั้งหมดและรายการเพิ่มเติมสำหรับการส่งออก CSV โดยพิจารณาลำดับชั้นการแทนที่ระดับสากล/ภูมิภาค/สถานที่สำหรับทุกสถานที่ที่ผู้ใช้เข้าถึงได้
พารามิเตอร์
organisationId `string` (จำเป็น) ID ขององค์กรสำหรับ ACLปลายทาง (Endpoint)
GET /api/saas-billing/charges-config/export
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/export \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับการกำหนดค่าค่าบริการของเป้าหมายที่ระบุ
พารามิเตอร์
clubId `string` (ไม่บังคับ) ID ของสถานที่ที่ต้องการดูการกำหนดค่าค่าบริการปลายทาง (Endpoint)
GET /api/saas-billing/charges-config/{clubId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/{clubId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สรุปการเรียกเก็บเงินขององค์กรของสถานที่นี้ ได้แก่ ขอบเขตผู้ชำระเงินที่มีผล การเปลี่ยนแปลงการรวมบัญชีที่กำหนดเวลาไว้ และผู้เรียกสามารถจัดการตัวเลือกการรวมบัญชีได้หรือไม่
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/org/summary
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/summary \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ระเบียนรายเดือนขององค์กรแบบรวม (ใบแจ้งยอด) พร้อมรายละเอียดแยกตามสถานที่ เรียงจากใหม่สุดก่อน จะว่างเปล่าจนกว่าเดือนแรกที่รวมบัญชีขององค์กรจะเสร็จสิ้น
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/org/monthly-records
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/monthly-records \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สรุปกระเป๋าเงินแบบเติมเงินล่วงหน้า ได้แก่ ยอดคงเหลือ รายการหักการใช้งานตั้งแต่ต้นเดือน การกำหนดค่าการเติมเงินอัตโนมัติ และวิธีการเรียกเก็บเงิน
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/wallet
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บัญชีแยกประเภทของกระเป๋าเงิน เรียงจากใหม่สุดก่อน กระเป๋าเงินระดับองค์กรจะรวมแถวของทุกสถานที่ (แต่ละแถวมี clubID ต้นทาง)
พารามิเตอร์
clubID `string` (จำเป็น) limit `string` (ไม่บังคับ) types `string` (ไม่บังคับ) ประเภทธุรกรรม คั่นด้วยเครื่องหมายจุลภาค from `string` (ไม่บังคับ) to `string` (ไม่บังคับ) cursor `string` (ไม่บังคับ) nextCursor จากหน้าก่อนหน้าปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/wallet/transactions
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ใบเสร็จ PDF ที่มีแบรนด์สำหรับธุรกรรมกระเป๋าเงินรายการเดียว (การเติมเงินและเครดิต)
พารามิเตอร์
clubID `string` (จำเป็น) txId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/{txId}/receipt.pdf
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions/{txId}/receipt.pdf \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ชุดใบเสร็จ PDF ที่มีแบรนด์ของธุรกรรมการเติมเงินกระเป๋าเงินที่เลือกในรูปแบบ ZIP ทุก id ต้องเป็นการเติมเงิน (บัตรหรือใบแจ้งหนี้) ที่เป็นของกระเป๋าเงินของสถานที่นี้ รายการหักการใช้งานและการปรับปรุงยอดไม่มีใบเสร็จและจะถูกปฏิเสธ
พารามิเตอร์
clubID `string` (จำเป็น) ids `string` (จำเป็น) id ธุรกรรมคั่นด้วยจุลภาค (สูงสุด 50)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เรียกเก็บเงินจากบัตรการเรียกเก็บเงิน SaaS ที่จัดเก็บไว้เพื่อเพิ่มยอดเงินเติมล่วงหน้า ส่งกลับ requires_action + clientSecret เมื่อต้องใช้ 3DS
พารามิเตอร์
clubID `string` (จำเป็น) body `object` (ไม่บังคับ)ปลายทาง (Endpoint)
POST /api/clubs/{clubID}/saas-billing/wallet/topup
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ทำการเติมเงินกระเป๋าเงินให้เสร็จสิ้นหลังจากแอปเพล็ตยืนยันตัวตน 3DS เสร็จแล้ว เรียกซ้ำได้อย่างปลอดภัย
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/clubs/{clubID}/saas-billing/wallet/topup/confirm
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตกฎการเติมเงินอัตโนมัติของสถานที่ (จัดเก็บในแถวการแทนที่ของโปรไฟล์การเรียกเก็บเงิน)
พารามิเตอร์
clubID `string` (จำเป็น) body `object` (ไม่บังคับ)ปลายทาง (Endpoint)
PATCH /api/clubs/{clubID}/saas-billing/wallet/auto-topup
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/auto-topup \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ใบแจ้งหนี้การเติมเงินสำหรับกระเป๋าเงินของสถานที่นี้ (วิธีการชำระเงินแบบใบแจ้งหนี้) เรียงจากใหม่สุดก่อน
พารามิเตอร์
clubID `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/clubs/{clubID}/saas-billing/wallet/invoices
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/invoices \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ขอใบแจ้งหนี้การเติมเงินแบบชำระตามเลขอ้างอิง (เฉพาะวิธีการชำระเงินแบบใบแจ้งหนี้) มีใบแจ้งหนี้ที่รอดำเนินการได้สูงสุดหนึ่งใบต่อกระเป๋าเงิน คำขอครั้งที่สองจะส่งกลับใบแจ้งหนี้ที่มีอยู่พร้อม alreadyPending=true
พารามิเตอร์
clubID `string` (จำเป็น) body `string` (ไม่บังคับ) { amountCents: number }ปลายทาง (Endpoint)
POST /api/clubs/{clubID}/saas-billing/wallet/topup-invoice
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup-invoice \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการคำสั่งซื้อของสถานที่
พารามิเตอร์
facilityID `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/store/facilities/:facilityID/orders
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/store/facilities/:facilityID/orders \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับรายการผลิตภัณฑ์ที่สถานที่ใช้ได้
พารามิเตอร์
clubID `string` (จำเป็น) search `string` (ไม่บังคับ) limit `string` (ไม่บังคับ) page `string` (ไม่บังคับ) หมายเลขหน้าสำหรับการแบ่งหน้า (เริ่มที่ 1)ปลายทาง (Endpoint)
GET /api/store/clubs/{clubID}/products
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/store/clubs/{clubID}/products \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการระเบียน Stripe ของสถานที่
พารามิเตอร์
club `string` (จำเป็น) fromDate `string` (ไม่บังคับ) Unix timestamp toDate `string` (ไม่บังคับ) Unix timestamp socketID `string` (จำเป็น) ตัวระบุที่ไม่ซ้ำกันสำหรับคำขอ socketปลายทาง (Endpoint)
GET /api/club/{club}/stripe/records
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/records \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ยกเลิก Payment Intent
พารามิเตอร์
club `string` (จำเป็น) paymentIntent `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/club/{club}/stripe/payment-intent/:paymentIntent/cancel
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/payment-intent/:paymentIntent/cancel \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้าง Stripe Account Session สำหรับคอมโพเนนต์แบบฝัง
สร้าง Stripe Account Session สำหรับบัญชีที่เชื่อมต่อ ส่งกลับ client_secret ที่ใช้เริ่มต้นคอมโพเนนต์แบบฝังของ Connect (ข้อพิพาท การโอนเงิน การจัดการบัญชี เอกสาร)
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/stripe/account-session
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/stripe/account-session \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
สร้างลิงก์แบบใช้ครั้งเดียวไปยังหน้า KYC ของ Stripe สำหรับบัญชีที่เชื่อมต่อ
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/club/{club}/stripe/generate-kyc-token
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/generate-kyc-token \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูรายละเอียดบัญชีของบัญชีที่เชื่อมต่อกับ Stripe ซึ่งเป็นส่วนหนึ่งของกระบวนการ KYC
พารามิเตอร์
club `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/club/{club}/stripe/connect-account-details
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/connect-account-details \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่งกลับประวัติทิกเก็ตทั้งหมดตาม Club ID
พารามิเตอร์
club `string` (จำเป็น) ID ภายในของคลับที่คุณต้องการเข้าถึงปลายทาง (Endpoint)
GET /api/ticketing/clubtickets/{club}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/clubtickets/{club} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูแผนกต่างๆ
ปลายทาง (Endpoint)
GET /api/ticketing/departments
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/departments \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูรายละเอียดของทิกเก็ตหนึ่งรายการ
พารามิเตอร์
user `string` (จำเป็น) อีเมลของผู้ใช้ ticketNumber `string` (จำเป็น) ID 6 หลักของทิกเก็ตที่คุณต้องการเข้าถึง club `string` (จำเป็น) ID ของสถานที่ที่เลือกปลายทาง (Endpoint)
GET /api/ticketing/ticket-details/:ticketNumber/:club
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/ticket-details/:ticketNumber/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูหัวข้อต่างๆ
ปลายทาง (Endpoint)
GET /api/ticketing/topics
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/topics \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูทิกเก็ตทั้งหมดที่สร้างโดยผู้ใช้ที่เข้าสู่ระบบอยู่ในปัจจุบัน หมายเหตุ ค่านี้กำหนดจากส่วนหัวที่บริการ Google SSO ของเราส่งมา
พารามิเตอร์
user `string` (จำเป็น) อีเมลของผู้ใช้ที่เข้าสู่ระบบอยู่ในปัจจุบันปลายทาง (Endpoint)
GET /api/ticketing/usertickets
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/usertickets \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างทิกเก็ตใหม่
พารามิเตอร์
club `string` (จำเป็น) ID ของสถานที่ที่เลือกปลายทาง (Endpoint)
POST /api/ticketing/clubticket/:club
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/clubticket/:club \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างทิกเก็ตใหม่
พารามิเตอร์
subject `string` (จำเป็น) หัวเรื่องของทิกเก็ต message `string` (จำเป็น) ข้อความฉบับเต็มของทิกเก็ตปลายทาง (Endpoint)
POST /api/ticketing/userticket
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/userticket \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างการตอบกลับทิกเก็ตที่มีอยู่
พารามิเตอร์
subject `string` (จำเป็น) หัวเรื่องของทิกเก็ต message `string` (จำเป็น) ข้อความฉบับเต็มของทิกเก็ตปลายทาง (Endpoint)
POST /api/ticketing/user-reply
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/user-reply \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดึงการตั้งค่าของผู้ใช้
ปลายทาง (Endpoint)
GET /api/user-preferences
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตการตั้งค่าของผู้ใช้
พารามิเตอร์
body `string` (จำเป็น)ปลายทาง (Endpoint)
PUT /api/user-preferences
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปลี่ยนรหัสผ่านของผู้ใช้
เปลี่ยนรหัสผ่านของผู้ใช้ ต้องยืนยันด้วย OTP หากผู้ใช้มีหมายเลขโทรศัพท์ หรือต้องเพิ่มหมายเลขโทรศัพท์หากยังไม่มี
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/user/change-password
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/user/change-password \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ตรวจสอบสถานะ 2FA ของผู้ใช้
ส่งกลับว่าผู้ใช้เปิดใช้งาน 2FA หรือไม่ และมีบทบาทใดของผู้ใช้ที่บังคับใช้ 2FA หรือไม่
ปลายทาง (Endpoint)
GET /api/user/check-2fa-status
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/user/check-2fa-status \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการองค์กร สถานที่ และภูมิภาคที่ผู้ใช้เข้าถึงได้สำหรับโมดูลที่ระบุ
พารามิเตอร์
moduleId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/user/me/modules/{moduleId}/org-access
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/user/me/modules/{moduleId}/org-access \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้าง 'คำขอเชื่อมโยง' จากผู้ใช้ปลายทาง เพื่อขอ 'เข้าร่วม' สถานที่
พารามิเตอร์
body `string` (จำเป็น) ออบเจ็กต์ JSON ของคลับใหม่ที่จะเพิ่มเข้าสู่ระบบปลายทาง (Endpoint)
POST /api/user/linkclub
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/user/linkclub \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการสถานที่ทั้งหมดที่ผู้ใช้ได้รับอนุญาต
ปลายทาง (Endpoint)
GET /api/user/listauthorised
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/user/listauthorised \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ส่ง OTP แบบสองช่องทาง (อีเมล + SMS)
ส่งรหัส OTP ไปยังทั้งที่อยู่อีเมลของผู้ใช้และหมายเลขโทรศัพท์ที่ระบุ ใช้สำหรับการดำเนินการที่ต้องการความปลอดภัยสูง เช่น การยืนยันหมายเลขโทรศัพท์ครั้งแรก ปลายทางนี้ส่ง OTP เท่านั้นและไม่แก้ไขข้อมูลผู้ใช้ใดๆ
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/user/send-dual-otp
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/user/send-dual-otp \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ส่ง OTP ไปยังหมายเลขโทรศัพท์หรืออีเมล
ส่งรหัส OTP ไปยังหมายเลขโทรศัพท์ (SMS) หรือที่อยู่อีเมลของผู้ใช้เพื่อการยืนยัน
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/user/send-otp
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/user/send-otp \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ตรวจสอบว่าผู้ใช้มีสิทธิ์เข้าถึงหน้าที่มีข้อมูลสำคัญที่ยังใช้ได้หรือไม่
ส่งกลับว่าผู้ใช้มีเซสชันที่ยืนยันด้วย OTP ที่ยังใช้ได้สำหรับเข้าถึงหน้าที่มีข้อมูลสำคัญหรือไม่
ปลายทาง (Endpoint)
GET /api/user/sensitive-page-access
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/user/sensitive-page-access \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ยืนยัน OTP และให้สิทธิ์เข้าถึงหน้าที่มีข้อมูลสำคัญ
ยืนยันรหัส OTP และให้สิทธิ์เข้าถึงหน้าที่มีข้อมูลสำคัญเป็นเวลา 1 ชั่วโมงหากรหัสถูกต้อง
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/user/sensitive-page-access/verify
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/user/sensitive-page-access/verify \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
เพิกถอนสิทธิ์เข้าถึงหน้าที่มีข้อมูลสำคัญ (ออกจากหน้าที่มีข้อมูลสำคัญ)
เพิกถอนเซสชันการเข้าถึงหน้าที่มีข้อมูลสำคัญปัจจุบันของผู้ใช้
ปลายทาง (Endpoint)
POST /api/user/sensitive-page-access/revoke
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/user/sensitive-page-access/revoke \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปิดหรือปิด 2FA
เปิดหรือปิดการยืนยันตัวตนแบบสองปัจจัยสำหรับผู้ใช้ ต้องมีหมายเลขโทรศัพท์และการยืนยันด้วย OTP
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/user/toggle-2fa
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/user/toggle-2fa \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อัปเดตโปรไฟล์ของผู้ใช้เอง
ให้ผู้ใช้อัปเดตข้อมูลโปรไฟล์ของตนเองได้ (ชื่อ นามสกุล หมายเลขโทรศัพท์) เมื่อเพิ่มหมายเลขโทรศัพท์ครั้งแรก ต้องยืนยันด้วย OTP แบบสองช่องทาง (ทั้งรหัสทางอีเมลและ SMS) เมื่อเปลี่ยนหมายเลขโทรศัพท์ที่มีอยู่ ต้องใช้เพียง OTP ทางอีเมล
เนื้อหาคำขอ
ปลายทาง (Endpoint)
PATCH /api/user/update-profile
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/user/update-profile \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ดึงไอคอนตาม URL
ปลายทาง (Endpoint)
GET /api/website-icon
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/website-icon \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการเทมเพลตรายการในคลังรหัสผ่าน
พารามิเตอร์
organisationId `string` (ไม่บังคับ) บริบทขององค์กรสำหรับการตรวจสอบสิทธิ์เข้าถึงโมดูลปลายทาง (Endpoint)
GET /api/vault/templates
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/vault/templates \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการในคลังรหัสผ่านที่มองเห็นได้
พารามิเตอร์
organisationId `string` (จำเป็น) scope `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/vault/entries
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างรายการในคลังรหัสผ่าน
ปลายทาง (Endpoint)
POST /api/vault/entries
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
ดูรายการในคลังรหัสผ่านโดยไม่เปิดเผยค่าข้อมูลลับ
พารามิเตอร์
entryId `string` (จำเป็น) organisationId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/vault/entries/{entryId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อัปเดตรายการในคลังรหัสผ่าน
ปลายทาง (Endpoint)
PUT /api/vault/entries/{entryId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบรายการในคลังรหัสผ่าน
ปลายทาง (Endpoint)
DELETE /api/vault/entries/{entryId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปิดเผยฟิลด์ที่ซ่อนไว้หรือฟิลด์ข้อมูลลับที่เลือก
ปลายทาง (Endpoint)
POST /api/vault/entries/{entryId}/reveal
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries/{entryId}/reveal \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการสรุปโฟลเดอร์ในคลังรหัสผ่าน
ปลายทาง (Endpoint)
GET /api/vault/folders
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/vault/folders \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการที่มีรหัสจากแอปยืนยันตัวตน
ปลายทาง (Endpoint)
GET /api/vault/authenticator
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/vault/authenticator \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการประเภทโหนด Workflow ที่ลงทะเบียนไว้
ปลายทาง (Endpoint)
GET /api/workflow-engine/node-types
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/node-types \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูข้อมูลเวลาทำการของสถานที่ที่บล็อก Workflow ใช้
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/facility-hours/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-hours/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดูตัวอย่างผู้ส่งอีเมล Workflow ที่ใช้แบรนด์ของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/email-branding/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/email-branding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการทรัพยากรของสถานที่สำหรับการกำหนดค่าทริกเกอร์
พารามิเตอร์
facilityId `string` (จำเป็น) resourceType `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/resources/{facilityId}/{resourceType}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/resources/{facilityId}/{resourceType} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการ Workflow ของสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/workflows/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้าง Workflow ฉบับร่างจากกราฟที่ไม่ว่างเปล่า
ตัวแก้ไขจะเก็บ Workflow ใหม่ไว้ในเครื่องจนกว่าจะมีบล็อกอย่างน้อยหนึ่งบล็อก ดังนั้นการบันทึกครั้งแรกจะสร้าง Workflow พร้อมกราฟในการเรียกครั้งเดียว เนื้อหาคำขอที่ไม่มี `nodes` จะถูกปฏิเสธแทนการจัดเก็บ
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/workflow-engine/workflows/{facilityId}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แสดงรายการข้อมูลรับรองที่ Workflow ของสถานที่สามารถใช้ได้
ส่งกลับข้อมูลรับรองของสถานที่เอง รวมถึงข้อมูลรับรองที่แชร์ไว้ในระดับแบรนด์หรือองค์กร ระบบจะไม่ส่งข้อมูลลับกลับมา `hasValue` รายงานเพียงว่ามีการจัดเก็บข้อมูลลับไว้
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/credentials/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างข้อมูลรับรองของ Workflow
ระดับขอบเขตมาจาก `scopeType` ส่วน ID ของแบรนด์และองค์กรจะระบุจากสถานที่ แทนที่จะรับจากผู้เรียก
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/workflow-engine/credentials/{facilityId}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตั้งค่า Workflow ระดับสถานที่ (ผู้รับการแจ้งเตือนเมื่อล้มเหลว)
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/facility-settings/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-settings/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
จัดเก็บผู้รับการแจ้งเตือนเมื่อล้มเหลวระดับสถานที่
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/workflow-engine/facility-settings/{facilityId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/facility-settings/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แทนที่ข้อมูลรับรองของ Workflow
`secret` ที่ว่างเปล่าจะคงค่าที่จัดเก็บไว้ จึงเปลี่ยนชื่อข้อมูลรับรองได้โดยไม่ต้องป้อนข้อมูลลับอีกครั้ง ไม่มีวิธีอ่านข้อมูลลับกลับมา
พารามิเตอร์
facilityId `string` (จำเป็น) credentialId `string` (จำเป็น)ปลายทาง (Endpoint)
PUT /api/workflow-engine/credentials/{facilityId}/{credentialId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบข้อมูลรับรองของ Workflow
โหนดที่อ้างอิงข้อมูลรับรองนี้จะล้มเหลวแบบปิดในการเรียกครั้งถัดไป รวมถึงใน Workflow ที่เผยแพร่แล้ว เนื่องจากสแนปช็อตจัดเก็บเพียงการอ้างอิงเท่านั้น
พารามิเตอร์
facilityId `string` (จำเป็น) credentialId `string` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/workflow-engine/credentials/{facilityId}/{credentialId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
ดู URL ของ Webhook ของทริกเกอร์ Workflow
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น) nodeId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
หมุนเวียน URL ของ Webhook ของทริกเกอร์ Workflow
ทำให้ URL ก่อนหน้าใช้งานไม่ได้ทันที
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น) nodeId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook/rotate
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook/rotate \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ดู Workflow ตาม id
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างหรืออัปเดต Workflow ฉบับร่าง
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PUT /api/workflow-engine/workflows/{facilityId}/{workflowId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
อัปเดตชื่อและ/หรือคำอธิบายของ Workflow
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ลบ Workflow และเวอร์ชันต่างๆ
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)ปลายทาง (Endpoint)
DELETE /api/workflow-engine/workflows/{facilityId}/{workflowId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ทำสำเนา Workflow เป็นฉบับร่างใหม่ที่ไม่ได้ใช้งาน
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เผยแพร่ฉบับร่างปัจจุบัน (สแนปช็อตเวอร์ชันที่เปลี่ยนแปลงไม่ได้)
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/publish
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/publish \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
รีเซ็ตฉบับร่างเป็นเวอร์ชันที่เผยแพร่ล่าสุด
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/discard
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/discard \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เปิดหรือปิดใช้งาน Workflow
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}/active
ตัวอย่างคำขอ
curl -X PATCH https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/active \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
สร้างหรือแก้ไขกราฟ Workflow ด้วย AI
พารามิเตอร์
facilityId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/workflow-engine/generate/{facilityId}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/generate/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แสดงรายการโมเดลที่โหนด Agent สามารถใช้ทำงานได้สำหรับสถานที่นี้
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/agent-models/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-models/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการเครื่องมือ MCP ที่โหนด Agent สามารถแนบได้สำหรับสถานที่นี้
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/agent-tools/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-tools/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาการสนทนาของ Agent ที่บันทึกไว้ของสถานที่นี้ (การผูก Conversation key)
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (ไม่บังคับ) จำกัดเฉพาะการสนทนาของอุปกรณ์ Agent หนึ่งเครื่อง (deviceId ที่กำหนดค่าไว้ในโหนด) q `string` (ไม่บังคับ) จับคู่สตริงย่อยแบบไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่กับ Conversation key, ID เซสชัน หรือชื่ออุปกรณ์ limit `integer` (ไม่บังคับ) offset `integer` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/workflow-engine/agent-conversations/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-conversations/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาการสนทนาที่เก็บไว้บนอุปกรณ์ Agent ของสถานที่เอง
แสดงรายการเซสชันของอุปกรณ์เอง (การสนทนาในแถบด้านข้างของ UI ของ Agent) เพื่อให้ Workflow สนทนาต่อจากการสนทนาที่มีอยู่พร้อมบริบทได้ อุปกรณ์เป็นเจ้าของประวัติ เมื่อสถานที่มีอุปกรณ์หลายเครื่อง `deviceId` จะเลือกเครื่องที่จะใช้ (อุปกรณ์ที่กำหนดค่าไว้ในโหนด) หากเข้าถึงอุปกรณ์ไม่ได้ → 502
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (ไม่บังคับ) อุปกรณ์ Agent ที่กำหนดค่าไว้ในโหนด ไม่ต้องระบุหากต้องการใช้อุปกรณ์เครื่องเดียวของสถานที่ q `string` (ไม่บังคับ) จับคู่สตริงย่อยแบบไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่กับชื่อหรือ id ของเซสชัน limit `integer` (ไม่บังคับ) offset `integer` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/workflow-engine/agent-device-sessions/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-device-sessions/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหาบอร์ดบนคัมบังของอุปกรณ์ Agent ของสถานที่
ใช้สำหรับตัวเลือก Board ID ของบล็อก Agent: Kanban จับคู่สตริงย่อยแบบไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่กับชื่อหรือ slug ของบอร์ด `current` คือ slug ของบอร์ดที่ใช้งานอยู่ของอุปกรณ์ เพื่อให้ตัวเลือกงานใช้เป็นขอบเขตเริ่มต้นได้ เมื่อสถานที่มีอุปกรณ์หลายเครื่อง `deviceId` จะเลือกเครื่องที่จะใช้ หากเข้าถึงอุปกรณ์ไม่ได้ → 502
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (ไม่บังคับ) อุปกรณ์ Agent ที่กำหนดค่าไว้ในโหนด ไม่ต้องระบุหากต้องการใช้อุปกรณ์เครื่องเดียวของสถานที่ q `string` (ไม่บังคับ) จับคู่สตริงย่อยแบบไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่กับชื่อหรือ slug ของบอร์ด limit `integer` (ไม่บังคับ) offset `integer` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/workflow-engine/kanban-boards/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-boards/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ค้นหางานของบอร์ดหนึ่งบนคัมบังของอุปกรณ์ Agent ของสถานที่
ใช้สำหรับตัวเลือก Task ID ของบล็อก Agent: Kanban จับคู่สตริงย่อยแบบไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่กับ id ชื่อ หรือเนื้อหาของงาน งานจัดเก็บแยกตามบอร์ด (อุปกรณ์ไม่มีการค้นหาข้ามบอร์ด) ดังนั้น `board` จะกำหนดขอบเขตการดึงข้อมูล ไม่ต้องระบุหากต้องการใช้บอร์ดที่ใช้งานอยู่ของอุปกรณ์ หากเข้าถึงอุปกรณ์ไม่ได้ → 502
พารามิเตอร์
facilityId `string` (จำเป็น) deviceId `string` (ไม่บังคับ) อุปกรณ์ Agent ที่กำหนดค่าไว้ในโหนด ไม่ต้องระบุหากต้องการใช้อุปกรณ์เครื่องเดียวของสถานที่ board `string` (ไม่บังคับ) slug ของบอร์ดที่ต้องการแสดงรายการ ไม่ต้องระบุหากต้องการใช้บอร์ดที่ใช้งานอยู่ของอุปกรณ์ q `string` (ไม่บังคับ) จับคู่สตริงย่อยแบบไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่กับ id ชื่อ หรือเนื้อหาของงาน limit `integer` (ไม่บังคับ) offset `integer` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/workflow-engine/kanban-tasks/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-tasks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการเทมเพลต Workflow ที่คัดสรรไว้ กรองสำหรับสถานที่นี้
พารามิเตอร์
facilityId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/templates/{facilityId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างอินสแตนซ์เทมเพลตเป็นส่วนของกราฟสำหรับฉบับร่างที่เปิดอยู่
พารามิเตอร์
facilityId `string` (จำเป็น) templateId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/workflow-engine/templates/{facilityId}/{templateId}
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId}/{templateId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
บริบทของตัวเลือกขอบเขตสำหรับหน้าผู้ดูแลเทมเพลต (ระดับผู้ดูแล)
ปลายทาง (Endpoint)
GET /api/workflow-engine/template-admin/context
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/context \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แสดงรายการเทมเพลตที่ผู้เรียกสามารถดูแลได้ พร้อมแฟล็กสิทธิ์
ปลายทาง (Endpoint)
GET /api/workflow-engine/template-admin
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
สร้างเทมเพลต (ระดับผู้ดูแล)
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/workflow-engine/template-admin
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/template-admin \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
รายละเอียดเทมเพลตรวมถึงกราฟ สำหรับตัวแก้ไขของผู้ดูแล
ปลายทาง (Endpoint)
GET /api/workflow-engine/template-admin/{templateId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
แทนที่เทมเพลต (องค์กรเจ้าของ)
ปลายทาง (Endpoint)
PUT /api/workflow-engine/template-admin/{templateId}
ตัวอย่างคำขอ
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ลบเทมเพลตแบบ soft-delete (องค์กรเจ้าของ)
ปลายทาง (Endpoint)
DELETE /api/workflow-engine/template-admin/{templateId}
ตัวอย่างคำขอ
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ทำสำเนาเทมเพลตที่มองเห็นได้ไปยังขอบเขตเป้าหมายที่ผู้เรียกสามารถใช้ได้
เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/workflow-engine/template-admin/{templateId}/duplicate
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId}/duplicate \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
เรียกใช้กราฟที่เผยแพร่แล้วของ Workflow จากทริกเกอร์แบบด้วยตนเอง
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/run
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/run \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ทดสอบฉบับร่างที่บันทึกไว้โดยไม่เผยแพร่
เรียกใช้กราฟฉบับร่างปัจจุบันและบันทึกผลลัพธ์ด้วย `mode: test` โดยไม่มี `versionId` จะไม่แตะต้องการเผยแพร่ แฟล็ก live และ `publishedVersionId` โดยค่าเริ่มต้นผลข้างเคียงจะถูกจำลอง ส่วน `sideEffects: live` ต้องใช้ `confirmLiveSideEffects: true` เพิ่มเติม
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/test \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
ทดสอบโหนด Workflow ที่อยู่ในรายการอนุญาตหนึ่งโหนด
เรียกใช้โหนดหนึ่งโหนดที่ทดสอบแยกได้จากฉบับร่างที่บันทึกไว้ สามารถระบุค่าตัวแปรจากขั้นตอนการทำงานที่บันทึกไว้ได้ เมธอด HTTP ที่แก้ไขข้อมูลต้องได้รับการยืนยันอย่างชัดแจ้ง
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test-node
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/test-node \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
แสดงรายการการทำงานล่าสุดของ Workflow
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
อ่านการทำงานหนึ่งรายการ (สถานะ + ขั้นตอนตามลำดับ)
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น) executionId `string` (จำเป็น)ปลายทาง (Endpoint)
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
ยกเลิก Delay ที่รอดำเนินการซึ่งการทำงานที่รออยู่กำลังพักอยู่
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น) executionId `string` (จำเป็น)ปลายทาง (Endpoint)
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
เล่นซ้ำการทำงานที่เสร็จแล้วจากเพย์โหลดทริกเกอร์ที่บันทึกไว้
`mode: published` จะเรียกใช้เวอร์ชันเดียวกันกับที่การทำงานเดิมปักหมุดไว้อีกครั้ง พร้อมผลข้างเคียงจริง `mode: draft-test` จะเรียกใช้ฉบับร่างปัจจุบันอีกครั้งเป็นการทดสอบแบบจำลอง การทำงานที่เพย์โหลดทริกเกอร์ถูกตัดทอนขณะเขียนจะเล่นซ้ำไม่ได้
พารามิเตอร์
facilityId `string` (จำเป็น) workflowId `string` (จำเป็น) executionId `string` (จำเป็น)เนื้อหาคำขอ
ปลายทาง (Endpoint)
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/retry
ตัวอย่างคำขอ
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/retry \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
การตอบกลับ
{}
การค้นหาแบบมีดัชนีของ Workflow ที่มีโหนดประเภทที่ระบุ
พารามิเตอร์
nodeType `string` (จำเป็น) facilityId `string` (ไม่บังคับ) organisationId `string` (ไม่บังคับ)ปลายทาง (Endpoint)
GET /api/workflow-engine/master-view/{nodeType}
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/master-view/{nodeType} \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
พร็อกซีการเปลี่ยนเส้นทาง OAuth แบบ White-label (Connected Apps)
การเปลี่ยนเส้นทาง 302 สาธารณะที่ไม่ต้องยืนยันตัวตน ซึ่งส่งต่อการเรียกกลับจากผู้ให้บริการ OAuth ไปยังการเรียกกลับการยืนยันตัวตนของแพลตฟอร์มเครื่องมือต้นทาง โดยคงสตริงคิวรีไว้ ช่วยให้แอป OAuth ที่ PH เป็นเจ้าของลงทะเบียน URI การเปลี่ยนเส้นทางของ performancehub.co ได้ เพื่อไม่ให้โดเมนของผู้ให้บริการต้นทางปรากฏในแถบที่อยู่ (จำเป็นสำหรับโครงการแอป OAuth แบบกำหนดเองในอนาคต และไม่มีผลเสียภายใต้การยืนยันตัวตนแบบจัดการ)
ปลายทาง (Endpoint)
GET /guest/connected-apps/oauth-callback
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/oauth-callback \
-H "x-api-key: YOUR_API_KEY"
หน้าเสร็จสิ้นของลำดับการเชื่อมต่อ (Connected Apps)
หน้าปลายทางแบบเบา "คุณสามารถปิดหน้าต่างนี้ได้" สำหรับแท็บ OAuth ที่ลำดับการเชื่อมต่อทำงานอยู่ ส่งผลลัพธ์ (ชุดเครื่องมือ/ชุดเครื่องมือย่อยที่เชื่อมต่อ + ID บัญชีใหม่ หรือชุดเครื่องมือย่อยที่ล้มเหลว) กลับไปยังแท็บมาร์เก็ตเพลสผ่าน window.opener.postMessage แบบต้นทางเดียวกัน หากการเชื่อมต่อกับหน้าต่างที่เปิดถูกตัดขาด จะกลับไปใช้ Deep Link เข้าสู่แอปเพล็ต ph-ai-agent ที่แสดงหน้าปลายทางในแอปแบบเดียวกัน ใช้เพื่อแสดงข้อมูลเท่านั้น ไม่มีข้อมูลลับและไม่มีการเขียนข้อมูล
พารามิเตอร์
connected `string` (ไม่บังคับ) ID ของชุดเครื่องมือหรือ slug ของชุดเครื่องมือย่อยที่เชื่อมต่อเสร็จแล้ว (กรณีสำเร็จ) accounts `string` (ไม่บังคับ) ID บัญชีที่เชื่อมต่อซึ่งลำดับการเชื่อมต่อสร้างขึ้น คั่นด้วยเครื่องหมายจุลภาค connectError `string` (ไม่บังคับ) slug ของชุดเครื่องมือย่อยที่ขั้นตอนล้มเหลว (กรณีล้มเหลว)ปลายทาง (Endpoint)
GET /guest/connected-apps/finish
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/finish \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}
การเรียกกลับลำดับการเชื่อมต่อชุดเครื่องมือ (Connected Apps)
ขั้นตอนการเรียกกลับ OAuth สำหรับขั้นตอนการเชื่อมต่อชุดเครื่องมือในคลิกเดียว JWT สถานะที่ลงนามแล้ว (HS256, TTL 30 นาที) เข้ารหัส { clubID, deviceId, suite, toolkits, step, caids } โดยบัญชีจะเชื่อมต่อกับอุปกรณ์ตัวแทนเครื่องนั้นเครื่องเดียว และ caids จะสะสม ID บัญชีที่แต่ละขั้นตอนสร้างขึ้น (การเปลี่ยนเส้นทางไปยังแอปเพล็ตครั้งสุดท้ายจะนำค่าเหล่านี้ไปด้วย เพื่อให้มาร์เก็ตเพลสเสนอการตั้งชื่อบัญชีใหม่ได้) ทำเครื่องหมายชุดเครื่องมือย่อยของขั้นตอนว่าเชื่อมต่อแล้ว จากนั้นเปลี่ยนเส้นทาง 302 ไปยัง Connect Link ของชุดเครื่องมือย่อยถัดไป หรือไปยังหน้าแอปเพล็ต ph-ai-agent (Deep Link ไปยังตัวแทน) เมื่อชุดเครื่องมือเชื่อมต่อเสร็จแล้ว การเชื่อมต่อชุดเครื่องมือย่อยเดียวจะทำงานผ่านตัวจัดการเดียวกันโดยใช้ชุดเครื่องมือที่มีชุดย่อยเดียว
พารามิเตอร์
state `string` (จำเป็น) JWT สถานะของลำดับการเชื่อมต่อที่ลงนามแล้วปลายทาง (Endpoint)
GET /guest/connected-apps/connect-next
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/connect-next \
-H "x-api-key: YOUR_API_KEY"
ส่งอีเมลตั้งค่ารหัสผ่าน
ตรวจสอบลิงก์ที่ลงนามจากอีเมลต้อนรับ ส่งอีเมลรีเซ็ตรหัสผ่าน และแสดงหน้ายืนยัน ไม่ต้องยืนยันตัวตน
พารามิเตอร์
email `string` (จำเป็น) ที่อยู่อีเมลของผู้ใช้ sig `string` (จำเป็น) ลายเซ็น HMAC สำหรับอีเมลปลายทาง (Endpoint)
GET /guest/setup-password
ตัวอย่างคำขอ
curl -X GET https://portal.hub.gymsystems.co/guest/setup-password \
-H "x-api-key: YOUR_API_KEY"
การตอบกลับ
{}