บทนำ

ยินดีต้อนรับสู่ 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// และไม่สามารถใช้โทเค็นนี้เข้าถึงแชต/เทอร์มินัลของตัวแทนได้ ผู้ชมต้องมีโมดูล custom-apps ที่สถานที่ซึ่งอยู่ในขอบเขตผู้ชมของแอป แต่ไม่จำเป็นต้องมีโมดูล ph-ai-agent หรือสิทธิ์เข้าถึงตัวแทนบนอุปกรณ์

พารามิเตอร์

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 '{}'

การตอบกลับ

{}

สกิลที่ส่งออกและเตรียมไว้บนตัวแทน AI ของสถานที่ (ตัวเลือกการแชร์)

ส่งต่อรายการสกิลที่ส่งออกและเตรียมไว้ของ bridge บนอุปกรณ์ (GET /__skills/exports) ผ่านทันเนล สำหรับตัวเลือก "Share a skill" ของแอปเพล็ต รายการส่งออกจะถูกเตรียมโดยขั้นตอนตรวจสอบความปลอดภัย/ความสามารถในการย้ายของ ph-skill-sharing บนอุปกรณ์ แต่ละรายการมีผลการสแกนฝั่งอุปกรณ์ ต้องมีโมดูล ph-ai-agent และสิทธิ์เข้าถึงอุปกรณ์ระดับ 'open' (เกณฑ์เดียวกับการเผยแพร่)

พารามิเตอร์

club `string` (จำเป็น) device `string` (จำเป็น)

ปลายทาง (Endpoint)

GET /api/agent-skills/exports/{club}/{device}

ตัวอย่างคำขอ

curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/exports/{club}/{device} \
  -H "x-api-key: YOUR_API_KEY"

การตอบกลับ

{}

เผยแพร่สกิลที่ส่งออกและเตรียมไว้เป็นสกิลที่แชร์ใหม่ (เวอร์ชันฉบับร่าง)

ดึงไฟล์ tarball ของสกิลที่ส่งออกตามชื่อที่ระบุจาก bridge ของอุปกรณ์ผ่านทันเนล แตกไฟล์ในหน่วยความจำ (ปฏิเสธ path traversal, symlink และไฟล์ที่มีขนาดเกิน) เรียกใช้การสแกนความปลอดภัยแบบกำหนดผลแน่นอนฝั่งคลาวด์ สร้าง manifest จาก frontmatter ของ SKILL.md จัดเก็บ tarball แบบระบุที่อยู่ตามเนื้อหาในบักเก็ตสกิลส่วนตัว และสร้างส่วนหัวของสกิลพร้อมเวอร์ชันฉบับร่าง (DRAFT) หากการสแกนบล็อก ระบบจะไม่บันทึกสิ่งใดเลยและคืนค่าผลการตรวจพบ ผู้ชมจะถูกจำกัดตามขอบเขตบทบาทของผู้เผยแพร่เอง ส่งฉบับร่าง (POST submit) เพื่อเผยแพร่

พารามิเตอร์

club `string` (จำเป็น)

เนื้อหาคำขอ

ปลายทาง (Endpoint)

POST /api/agent-skills/publish/{club}

ตัวอย่างคำขอ

curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/publish/{club} \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

การตอบกลับ

{}

เผยแพร่สกิลที่ส่งออกและเตรียมไว้เป็นเวอร์ชันใหม่ของสกิลที่แชร์อยู่แล้ว

ใช้ขั้นตอนเดียวกับการเผยแพร่ แต่ใช้กับสกิลที่มีอยู่แล้ว ชื่อใน SKILL.md ของรายการส่งออกต้องตรงกับสกิล เวอร์ชันต้องเป็นเวอร์ชันใหม่ (เวอร์ชันแก้ไขไม่ได้) และต้องมีบันทึกการเปลี่ยนแปลง เฉพาะผู้เผยแพร่เท่านั้นที่เพิ่มเวอร์ชันได้ หากการสแกนบล็อก ระบบจะบันทึกแถวเวอร์ชันที่มีสถานะ 'rejected' (มีเฉพาะรายงาน ไม่มีไฟล์) เพื่อให้ผลการตรวจพบแสดงในประวัติของผู้เผยแพร่

พารามิเตอร์

club `string` (จำเป็น)

เนื้อหาคำขอ

ปลายทาง (Endpoint)

POST /api/agent-skills/new-version/{club}

ตัวอย่างคำขอ

curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/new-version/{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)

POST /api/agent-skills/delist/{club}

ตัวอย่างคำขอ

curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/delist/{club} \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

การตอบกลับ

{}

แก้ไขข้อมูลรายการของสกิลที่แชร์ (ชื่อที่แสดง คำอธิบาย ไอคอน)

เฉพาะผู้เผยแพร่เท่านั้น ฟิลด์เหล่านี้ใช้สำหรับการแสดงผลเท่านั้น ชื่อมาตรฐานของสกิลคือตัวตนของสกิล (manifest, ไดเรกทอรีการติดตั้ง, การจับคู่เวอร์ชัน) และไม่เปลี่ยนแปลง สตริงว่างจะล้างฟิลด์กลับเป็น null (ใช้ชื่อมาตรฐาน / ไม่มีไอคอนแทน) ไอคอนใช้แคตตาล็อก MDI (mdi:icon-name) ในรูปแบบเดียวกับแอปตัวแทนที่เผยแพร่

พารามิเตอร์

club `string` (จำเป็น)

เนื้อหาคำขอ

ปลายทาง (Endpoint)

POST /api/agent-skills/update-listing/{club}

ตัวอย่างคำขอ

curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/update-listing/{club} \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

การตอบกลับ

{}

โอนความเป็นเจ้าของสกิลที่แชร์

ทำงานเหมือนขั้นตอนการโอนแอปที่เผยแพร่ ผู้เผยแพร่ปัจจุบันหรือเจ้าของบัญชี (โมดูล billing) สามารถมอบสกิลให้ผู้ใช้อื่นเป็นผู้จัดการเวอร์ชันและข้อมูลรายการต่อได้ เจ้าของใหม่ต้องมีสิทธิ์เข้าถึงสถานที่ที่คลับหลักของสกิล

พารามิเตอร์

club `string` (จำเป็น)

เนื้อหาคำขอ

ปลายทาง (Endpoint)

POST /api/agent-skills/transfer-owner/{club}

ตัวอย่างคำขอ

curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/transfer-owner/{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 = ขั้นตอนการให้ความยินยอมแบบโฮสต์, 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 '{}'

การตอบกลับ

{}

ยกเลิกการเชื่อมต่อบัญชีหนึ่งบัญชีจากตัวแทน

ลบบัญชีที่เชื่อมต่อหนึ่งบัญชี (รองรับหลายบัญชี บัญชีอื่นของแอปเดียวกันยังคงเชื่อมต่ออยู่) ระบบจะตรวจสอบว่าบัญชีเป็นของตัวแทนนี้ก่อนลบ หากเป็นบัญชีสุดท้ายของแอป ชุดเครื่องมือจะถูกนำออกจากชุดที่เชื่อมต่อของตัวแทน (เซสชันจะถูกสร้างใหม่เมื่อจำเป็นเพื่อให้รายการเครื่องมือของตัวแทนอัปเดต)

พารามิเตอร์

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"

การตอบกลับ

{}

แสดงรายการการจับคู่ข้อมูลที่ตรงกันของสถานที่

คืนค่าการจับคู่แบบแบ่งหน้าโดยกรองตามสถานะ

พารามิเตอร์

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"

การตอบกลับ

{}

อ่านสถานะของการดำเนินการ "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..textGated` นับผู้สมัครที่ตรงกับรูปภาพแต่ไม่ตรงกับคำ หน้าว่างจึงอธิบายได้ว่า "ให้ลบคำออก" แทนที่จะเป็น "ให้ลองรูปภาพอื่น" การค้นหาจากตัวอย่างโดยไม่มีคำจะไม่โหลดตัวเข้ารหัส จึงไม่มีค่าใช้จ่ายของ cold start แต่การเพิ่มคำจะทำให้เสียข้อได้เปรียบนี้ ไม่ว่าในกรณีใด ระบบจะค้นหาทุกดัชนีโดยค่าเริ่มต้น เวกเตอร์ของภาพครอป การบันทึกวิดีโอ และไทม์แลปส์ใช้พื้นที่เดียวกัน ภาพครอปบุคคลจึงค้นหาภาพวิดีโอที่ตรงกันได้ คะแนนของการค้นหาจากตัวอย่างสูงกว่าคะแนนข้อความมาก (การเปรียบเทียบภาพกับภาพไม่มีช่องว่างระหว่างรูปแบบข้อมูล) และถูกกรองด้วยเกณฑ์ขั้นต่ำแยกต่างหากที่ยังไม่ได้ปรับเทียบ `result.queryKind` บอกว่าคุณกำลังอ่านคะแนนในระดับใด และห้ามเปรียบเทียบคะแนนจากระดับหนึ่งกับอีกระดับหนึ่ง ค้นหาทุกดัชนีโดยค่าเริ่มต้นและคืนค่ารายการเดียวที่รวมและเรียงตามคะแนน แต่ละผลลัพธ์มี `index` และ `kind` เพื่อให้ผู้เรียกแยกผลลัพธ์ที่เป็นรูปภาพออกจากผลลัพธ์ที่เป็นวิดีโอได้ (แบบหลังจะมี `offsetMs` เพิ่ม) ดัชนีที่ไม่มีตารางสำหรับสถานที่จะถูกรายงานใน `skipped` แทนที่จะล้มเหลว ผลลัพธ์ที่ต่ำกว่าเกณฑ์ความเกี่ยวข้องที่ปรับเทียบแล้วของแต่ละดัชนีจะถูกตัดออก การค้นหาที่ไม่มีรายการตรงจริงจึงคืนค่ารายการว่างแทนผลลัพธ์ที่ไม่สมเหตุสมผล `perIndex` รายงานว่าแต่ละดัชนีให้ผลลัพธ์อะไรและเพราะเหตุใด จำกัดผลลัพธ์ได้ตามเวลาที่บันทึกภาพและตามกล้อง ควรใช้ `cameraId` แทน `camera` เนื่องจากเป็น balenaUUID ของกล้อง ซึ่งเป็นค่าเดียวที่ทุกดัชนีจัดเก็บเหมือนกัน ตัวกรองเดียวจึงจำกัดได้ทุกดัชนี ตัวกรองที่ดัชนีใดตอบไม่ได้จะถูกรายงานภายใต้ `perIndex..filtersIgnored` และดัชนีนั้นจะถูกค้นหาโดยไม่จำกัด แทนที่จะถูกตัดออกจากการค้นหา ผลลัพธ์จากการบันทึกวิดีโอเป็น **หนึ่งรายการต่อคลิป ไม่ใช่หนึ่งรายการต่อเฟรมที่ตรงกัน** เนื่องจากสุ่มเฟรมทุก 2 s บุคคลที่อยู่นานจะตรงกับเฟรมที่เกือบเหมือนกันถึงสิบเฟรมของการบันทึกเดียวกัน แต่ละคลิปจะคืนค่าเฟรมที่ดีที่สุด พร้อม `matchCount` และ `offsetsMs` ที่ระบุทุกช่วงเวลาที่ตรงกันภายในคลิป ซึ่งใช้เป็นจุดข้ามไปยังตำแหน่งได้โดยตรง ภาพครอปบุคคลจะไม่ถูกยุบรวม เนื่องจากภาพครอปสองภาพของบุคคลเดียวกันคือการพบเห็นสองครั้งที่แตกต่างกัน

พารามิเตอร์

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"

การตอบกลับ

{}

ลบแบนเนอร์ Dashboard

ลบแบนเนอร์ Dashboard ของแบรนด์แบบ soft delete

พารามิเตอร์

brandId `string` (จำเป็น) ID ของแบรนด์ที่แบนเนอร์สังกัด bannerId `string` (จำเป็น) ID ของแบนเนอร์ที่จะลบ

ปลายทาง (Endpoint)

DELETE /api/brands/{brandId}/dashboard-banners/{bannerId}

ตัวอย่างคำขอ

curl -X DELETE https://portal.hub.gymsystems.co/api/brands/{brandId}/dashboard-banners/{bannerId} \
  -H "x-api-key: YOUR_API_KEY"

การตอบกลับ

{}

แสดงรายการแบนเนอร์ Dashboard ของแบรนด์

คืนค่าแบนเนอร์ Dashboard ทั้งหมด (ที่ไม่ได้ถูกลบ) ซึ่งกำหนดค่าไว้สำหรับแบรนด์ เพื่อให้ผู้ดูแลจัดการ

พารามิเตอร์

brandId `string` (จำเป็น) ID ของแบรนด์ที่จะแสดงรายการแบนเนอร์

ปลายทาง (Endpoint)

GET /api/brands/{brandId}/dashboard-banners

ตัวอย่างคำขอ

curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/dashboard-banners \
  -H "x-api-key: YOUR_API_KEY"

การตอบกลับ

{}

สร้างหรืออัปเดตแบนเนอร์ Dashboard

สร้างแบนเนอร์ Dashboard ใหม่สำหรับแบรนด์ หรืออัปเดตแบนเนอร์ที่มีอยู่เมื่อ ระบุ `bannerId` ในเนื้อหาคำขอ แบนเนอร์สามารถตั้งเวลาได้ (เริ่มต้น/สิ้นสุดเป็นวินาที unix, null = ไม่จำกัด) และกำหนดเป้าหมายเป็นทั้งแบรนด์ ภูมิภาคที่ระบุ (รหัส ISO) หรือสถานที่ที่ระบุ

พารามิเตอร์

brandId `string` (จำเป็น) ID ของแบรนด์ที่แบนเนอร์สังกัด

เนื้อหาคำขอ

ปลายทาง (Endpoint)

PUT /api/brands/{brandId}/dashboard-banners

ตัวอย่างคำขอ

curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId}/dashboard-banners \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

การตอบกลับ

{}

ดูแบนเนอร์แดชบอร์ดที่ใช้งานอยู่ของสถานที่

ระบุแบนเนอร์แดชบอร์ดที่ควรแสดงในขณะนี้สำหรับสถานที่ ตามแบรนด์ของสถานที่ ภูมิภาค (รหัสประเทศ ISO) และแฟล็ก enabled ช่วงเวลาตามกำหนดการ และการกำหนดเป้าหมายของแต่ละแบนเนอร์ ใช้โดย UI ของแดชบอร์ด

พารามิเตอร์

facilityId `string` (จำเป็น) ID ของสถานที่ที่ต้องการระบุแบนเนอร์

ปลายทาง (Endpoint)

GET /api/facilities/{facilityId}/dashboard-banners

ตัวอย่างคำขอ

curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/dashboard-banners \
  -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"

การตอบกลับ

{}

ดูการตั้งค่า Door/Gate Access ที่ใช้ร่วมกันของสถานที่

พารามิเตอร์

facilityId `string` (จำเป็น)

ปลายทาง (Endpoint)

GET /api/door-access/rules/{facilityId}

ตัวอย่างคำขอ

curl -X GET https://portal.hub.gymsystems.co/api/door-access/rules/{facilityId} \
  -H "x-api-key: YOUR_API_KEY"

การตอบกลับ

{}

อัปเดตการตั้งค่า Door/Gate Access ที่ใช้ร่วมกันของสถานที่

พารามิเตอร์

facilityId `string` (จำเป็น)

เนื้อหาคำขอ

ปลายทาง (Endpoint)

PUT /api/door-access/rules/{facilityId}

ตัวอย่างคำขอ

curl -X PUT https://portal.hub.gymsystems.co/api/door-access/rules/{facilityId} \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

การตอบกลับ

{}

ดู 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"

การตอบกลับ

{}

แสดงรายการประเภทบุคคล สถานะ และแท็กของสถานที่

แสดงค่าประเภทบุคคล สถานะสมาชิก และแท็กที่ไม่ซ้ำกัน ที่มีอยู่ในแถว User Access ของสถานที่ (ph-door-access-users) ซึ่งได้มาจากการซิงค์กับพาร์ทเนอร์ + การป้อนด้วยตนเอง แอปเพล็ต door-gate-access ใช้ค่าเหล่านี้เพื่อเติมรายการแบบเลื่อนลงของกฎการเข้าถึง แท็กคือผลรวม ของ `tags` ที่ซิงค์มาและ `customTags` ของผู้ดูแล ซึ่งตรงกับตัวประเมินกฎ

พารามิเตอร์

facilityId `string` (จำเป็น)

ปลายทาง (Endpoint)

GET /api/door-access/people-config/{facilityId}

ตัวอย่างคำขอ

curl -X GET https://portal.hub.gymsystems.co/api/door-access/people-config/{facilityId} \
  -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 '{}'

การตอบกลับ

{}

แทนที่สิทธิ์การอนุญาตแบบไฮบริดในแถว User Access

การเชื่อมต่อตัวประเมินแบบไฮบริดของเฟส 3 สิทธิ์จะอยู่ควบคู่กับกฎแท็ก ของสถานที่ ผู้ใช้จะได้รับอนุญาตเมื่อรายการใดรายการหนึ่งตรงกัน ณ เวลาปลดล็อก

พารามิเตอร์

facilityId `string` (จำเป็น) userId `string` (จำเป็น)

เนื้อหาคำขอ

ปลายทาง (Endpoint)

PUT /api/door-access/users/{facilityId}/{userId}/grants

ตัวอย่างคำขอ

curl -X PUT https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/grants \
  -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"

การตอบกลับ

{}