คู่มือเทคนิค Soho House API (ไม่เป็นทางการ) 2025
การสำรวจเชิงลึกทางเทคนิคที่ครอบคลุมเกี่ยวกับระบบดิจิทัลของ Soho House เราวิเคราะห์สภาพแวดล้อมการจัดเตรียม การรวมระบบจากบุคคลที่สาม (Oracle Simphony, Agora, Algolia) และตรรกะภายในของ 'House Pay', การจองห้องพัก และการเชื่อมต่อสมาชิกตามที่เปิดเผยในข้อกำหนด API สาธารณะปี 2025
The Tech Insider
Author
The Tech Insider

คู่มือเทคนิค Soho House API (ไม่เป็นทางการ) 2025
เมื่อวันที่ 8 ตุลาคม 2025 คอลเลกชัน Postman ที่ครอบคลุมสำหรับระบบดิจิทัลของ Soho House ได้ถูกเผยแพร่สู่สาธารณะที่ docs.sohohousedigital.com แม้ว่าจะมีวัตถุประสงค์เพื่อการใช้งานภายใน แต่การมีอยู่ของมันเปิดหน้าต่างที่น่าสนใจเกี่ยวกับวิธีที่แบรนด์การบริการหรูระดับโลกออกแบบประสบการณ์การเป็นสมาชิกดิจิทัลของตน
คู่มือนี้วิเคราะห์สแต็คเทคนิค สภาพแวดล้อมการจัดเตรียม และการรวมระบบจากบุคคลที่สาม (Oracle Simphony, Agora, 3C) ที่ขับเคลื่อนทุกอย่างตั้งแต่การจองห้องพักไปจนถึงฟีเจอร์การแบ่งบิล "House Pay" มันรวมถึงการอ้างอิงที่สมบูรณ์ของ endpoints, parameters, และรายละเอียดการกำหนดค่าที่พบในข้อกำหนด
ข้อจำกัดความรับผิดชอบ: เราไม่มีความสัมพันธ์กับ Soho House & Co. การวิเคราะห์นี้อิงตามเอกสารที่เข้าถึงได้สาธารณะและมีวัตถุประสงค์เพื่อการศึกษาและการวิจัยด้านการทำงานร่วมกัน
1. โครงสร้างพื้นฐาน & สภาพแวดล้อม
ข้อกำหนด API เปิดเผยการแยกที่ชัดเจนระหว่างสภาพแวดล้อมการผลิตและการจัดเตรียม โดยใช้สถาปัตยกรรมการจัดเส้นทางแบบไมโครเซอร์วิส นอกจากนี้ยังเปิดเผยแบรนด์ย่อยเฉพาะเช่น "The Ned" และ "Soho Works" ที่ดำเนินการบนผู้ให้บริการตัวตนที่แตกต่างกัน
ชื่อโฮสต์ & บริการ
- API การผลิต:
https://api.production.sohohousedigital.com - API การจัดเตรียม:
https://api.staging.sohohousedigital.com - The Ned (การจัดเตรียม):
https://api-ned.staging.sohohousedigital.com - บริการควบคุมเวอร์ชัน:
https://vcs-master.staging.sohohousedigital.com(ใช้สำหรับการตรวจสอบforce_update) - การค้นหา Algolia:
https://MRH59RRZDT-dsn.algolia.net(App ID:MRH59RRZDT)
ผู้ให้บริการตัวตน
การตรวจสอบสิทธิ์ถูกกระจายไปทั่วแบรนด์ต่างๆ:
- Soho House:
identity.houseseven.com - The Ned:
identity.thened.com - Soho Works:
identity.sohohouse.com
2. การตรวจสอบสิทธิ์ & "ความลับสาธารณะ"
API ใช้ OAuth2 มาตรฐาน เนื่องจากแอปพลิเคชันมือถือเป็น "ลูกค้าสาธารณะ" client_id และ client_secret ถูกฝังโดยตรงในโค้ดแอปพลิเคชัน คอลเลกชัน Postman เปิดเผยข้อมูลรับรองเหล่านี้อย่างชัดเจน ทำให้เราเข้าใจการไหลของการตรวจสอบสิทธิ์
ข้อมูลรับรองที่พบในข้อกำหนด:
client_id: "200140c7**************************************3b96fef0"
client_secret: "7362f55c4**************************************2e29018a6"
ส่วนหัวของ Gateway
เมื่อผู้ใช้เข้าสู่ระบบผ่าน /oauth/token API Gateway จะฉีดส่วนหัวเฉพาะเข้าไปในคำขอที่ส่งไปข้างหน้า สิ่งนี้เปิดเผยว่า Soho House จัดการสิทธิ์การเข้าถึงหลายสถานที่โดยไม่ต้องสอบถามฐานข้อมูลในทุกคำขอ:
X-Sh-Global-Id: UUID ที่ไม่ซ้ำกันของผู้ใช้X-Sh-Business-Unit: แบ่งผู้ใช้ตามแบรนด์ (เช่นsh,ned)X-Sh-Memberships: เช่นEVERY_HOUSE,REGULAR,CITIES_WITHOUT_HOUSESX-Sh-Sites: รายการรหัสสถานที่ที่ได้รับอนุญาตที่คั่นด้วยเครื่องหมายจุลภาค (เช่น180_HOUSE,SHD(Shoreditch),BH(Babington),GRS(Greek Street))
3. การอ้างอิง Endpoint & การกำหนดค่า
A. การตรวจสอบสิทธิ์ & ตัวตน
การไหลของ OAuth2 มาตรฐานที่ใช้ในการสร้าง Bearer token ที่จำเป็นสำหรับ endpoints อื่นๆ ทั้งหมด
| วิธีการ | Endpoint | คำอธิบาย | Params / Payload |
|---|---|---|---|
GET |
/oauth/authorize |
Web Login Flow | response_type=code, client_id, redirect_uri |
POST |
/oauth/token |
แลกเปลี่ยนรหัส/ข้อมูลรับรอง | grant_type (password/authorization_code), client_id, client_secret |
POST |
/api/v1/identities |
สร้างบัญชี | email, password, first_name, last_name, phone_number |
PUT |
/api/v1/password |
เปลี่ยนรหัสผ่าน | old_password, password, password_confirmation |
GET |
/api/v1/me |
ข้อมูลบัญชีเก่า | คืนค่าหมายเลข ID พื้นฐานและสถานที่ท้องถิ่น |
B. บัญชี, โปรไฟล์ & การเป็นสมาชิก
Endpoints สำหรับการจัดการตัวตนดิจิทัลของผู้ใช้ พารามิเตอร์ include ชี้ให้เห็นถึงโครงสร้างฐานข้อมูลเชิงสัมพันธ์ในฝั่งหลัง
| วิธีการ | Endpoint | คำอธิบาย | การกำหนดค่า / หมายเหตุ |
|---|---|---|---|
GET |
/profiles/accounts/me |
รายละเอียดบัญชีทั้งหมด | include=profile,membership,local_house |
PATCH |
/profiles/accounts/me |
อัปเดตบัญชี | อัปเดตที่อยู่, ความยินยอม, หมายเลขโทรศัพท์ |
GET |
/profiles/profiles/me |
ข้อมูลโปรไฟล์สาธารณะ | คืนค่าชีวประวัติ, ช่องทางสังคม, ตำแหน่งงาน |
PATCH |
/profiles/profiles/me |
อัปเดตโปรไฟล์ | อัปเดตชีวประวัติ, ช่องทางสังคม, อาชีพ |
GET |
/profiles/memberships/me |
สถานะการเป็นสมาชิก | คืนค่าสถานะ, วันที่เริ่ม/สิ้นสุด, ประเภทพนักงาน (is_staff) |
GET |
/profiles/interests |
รายการความสนใจ | filter[name][prefix] สำหรับการเติมอัตโนมัติ |
GET |
/profiles/occupations |
รายการอาชีพ | filter[name][prefix] สำหรับการเติมอัตโนมัติ |
GET |
/profiles/membership_cards/{number}/profile |
ค้นหาตามบัตร | แก้ไขหมายเลขบัตรจริงเป็น ID ทั่วโลก |
C. เหตุการณ์ & โรงภาพยนตร์
Endpoints ที่ครอบคลุมสำหรับการจัดรายการและการจองเหตุการณ์ในบ้าน ตรรกะรวมถึงการจัดการเฉพาะสำหรับ "Lotteries" (เหตุการณ์ที่มีความต้องการสูง)
| วิธีการ | Endpoint | คำอธิบาย | ตัวกรองหลัก / Params |
|---|---|---|---|
GET |
/events/events |
ค้นหาเหตุการณ์ | filter[location_id], filter[date][from], filter[category], filter[event_type] |
GET |
/events/events/{id} |
เหตุการณ์เดียว | include=venue,resource |
GET |
/events/event_categories |
รายการประเภท | filter[event_type] |
GET |
/events/bookings |
รายการการจองของผู้ใช้ | filter[state] (จอง/ยกเลิก), include=event,venue |
POST |
/events/bookings |
จองเหตุการณ์ | Payload: guests array, event ID, payment_card ID |
DELETE |
/events/bookings/{id} |
ยกเลิกการจอง | N/A |
D. ห้อง (การจองโรงแรม)
Endpoints rooms เปิดเผยรหัสภายในสำหรับประเภทห้องและแผนอัตรา Endpoint days น่าสนใจเป็นพิเศษเนื่องจากเปิดเผยปฏิทินราคาดิบ
| วิธีการ | Endpoint | คำอธิบาย | หมายเหตุ / Params |
|---|---|---|---|
GET |
/rooms/hotels |
รายการโรงแรม | คืนค่าลิงก์การจองและข้อมูลภาษี |
GET |
/rooms/availabilities |
ค้นหาห้อง | filter[rate_plan_type] (เช่น MEMBER_RATE, FRIENDS) |
GET |
/rooms/days |
ปฏิทินอัตรา | เปิดเผยรหัสห้อง: TINY, SMALL, MEDM, LARG |
GET |
/rooms/room_bookings |
รายการการจอง | filter[status], filter[starts_at][from] |
POST |
/rooms/room_bookings |
สร้างการจอง | Payload: address, dates, availability_rate ID |
PATCH |
/rooms/room_bookings/{id} |
แก้ไขการจอง | เปลี่ยนวันที่หรือจำนวนแขก |
E. House Pay (การเช็ค & การรวม Simphony)
ส่วนนี้เปิดเผยการรวมที่แน่นแฟ้นกับ Oracle Micros Simphony API ช่วยให้สมาชิกสามารถชำระบิลร้านอาหารได้โดยตรง รวมถึง endpoint "Walkout" ที่น่าจะใช้ในการปิดเช็คโดยอัตโนมัติจากไฟล์ของสมาชิก
| วิธีการ | Endpoint | คำอธิบาย | หมายเหตุภายใน |
|---|---|---|---|
GET |
/checks/public/checks |
รายการเช็คที่เปิดอยู่ | filter['status']=open |
GET |
/checks/public/checks/{id} |
รับรายละเอียดเช็ค | คืนค่ารายการ, ภาษี, ค่าบริการ |
POST |
/checks/public/payments |
ชำระเช็ค | Payload: check_id, amount_cents, card_id, tip_amount_cents |
POST |
/checks/public/payments/walkout |
การชำระเงินแบบ Walkout | ใช้ simphony_manager_id เพื่อบังคับปิดเช็ค |
POST |
/checks/public/checks/{id}/discount |
ใช้ส่วนลด | Payload: discount_id (เช่น อัตรา U27) |
POST |
/checks/public/checks/{id}/email |
ส่งอีเมลใบเสร็จ | กระตุ้นการส่งอีเมลใบเสร็จ PDF |
GET |
/payments/cards |
รายการบัตร | filter[venue] (โดยปกติจะตั้งค่าเป็น 'GRS') |
F. โต๊ะ (การจองร้านอาหาร)
API ใช้กลไก "ล็อก" เพื่อป้องกันการจองซ้ำในระหว่างกระบวนการเช็คเอาท์
| วิธีการ | Endpoint | คำอธิบาย | หมายเหตุภายใน |
|---|---|---|---|
GET |
/tables/availabilities |
ค้นหาช่องว่าง | filter[restaurant_id] (เช่น SH_SIXTH_FLOOR_RESTAURANTS) |
POST |
/tables/locks |
ล็อกโต๊ะ | ล็อกช่องว่างเป็นเวลา x นาทีในขณะที่ผู้ใช้ทำการจอง |
POST |
/tables/table_bookings |
ยืนยันการจอง | ต้องการ ID table_lock ที่ถูกต้อง |
G. เชื่อมต่อ & แชท (การรวม Agora)
ฟีเจอร์ "House Connect" ใช้ Agora สำหรับการสื่อสารแบบเรียลไทม์ โดยมีพารามิเตอร์ agora_id
| วิธีการ | Endpoint | คำอธิบาย | หมายเหตุ |
|---|---|---|---|
GET |
/connect/checkins |
กระดานข่าว | filter[venue_id] เพื่อดูว่าใครอยู่ที่บ้าน |
POST |
/connect/checkins |
โพสต์ไปยังกระดานข่าว | Payload: status, venue_id |
GET |
/chat/timeslots |
ความพร้อมใช้งานของแชท | รายการช่องว่างที่เปิดสำหรับ "House Connect" |
POST |
/chat/chat_tokens |
รับโทเคนแชท | คืนค่าโทเคนสำหรับการรวม Stream/Agora |
POST |
/chat/rooms/{id}/room_accesses |
เข้าร่วมห้อง | Payload รวมถึง agora_id |
H. การสมัครสมาชิก
Endpoints ที่ใช้ในระหว่างกระบวนการสมัครสมาชิก รวมถึงการรวม Braintree สำหรับการชำระเงิน
| วิธีการ | Endpoint | คำอธิบาย |
|---|---|---|
GET |
/applications |
รายการการสมัครของผู้ใช้ |
POST |
/applications |
ส่งการสมัครใหม่ |
POST |
/applications/{id}/attachments |
อัปโหลด ID/ภาพถ่าย |
GET |
/products |
รายการผลิตภัณฑ์การเป็นสมาชิก |
I. เนื้อหา & บรรณาธิการ
Endpoints ที่อ่านได้สำหรับเนื้อหาแอป หมายเหตุในบ้าน และหน้าคงที่
| วิธีการ | Endpoint | คำอธิบาย | ตัวกรองหลัก |
|---|---|---|---|
GET |
/content/house_notes |
เนื้อหาบรรณาธิการ | filter[venue_id], filter[content_category_id] |
GET |
/content/perks |
ผลประโยชน์สมาชิก | filter[region] |
GET |
/content/house_rules |
กฎของบ้าน | filter[venue_id] |
GET |
/content/house_tours |
ทัวร์บ้าน | filter[venue_id] |
J. การควบคุมระบบ
| วิธีการ | Endpoint | คำอธิบาย |
|---|---|---|
GET |
/force_update |
คืนค่า 426 Upgrade Required หากเวอร์ชันแอปตรงกับรายการที่เลิกใช้แล้ว ทำให้ผู้ใช้ต้องอัปเดตผ่าน App Store |
สรุป
API ของ Soho House เป็นการดำเนินการที่ซับซ้อนตามมาตรฐาน JSON:API ที่จัดการเว็บที่ซับซ้อนของระบบ POS เก่าที่มีอยู่ (Simphony), เทคโนโลยีเรียลไทม์สมัยใหม่ (Agora), และการจัดการตัวตนระดับโลก สำหรับนักพัฒนา มันทำหน้าที่เป็นบทเรียนชั้นยอดในวิธีการห่อหุ้มระบบการบริการเก่าใน API REST ที่ทันสมัยและมุ่งเน้นมือถือ
ข้อจำกัดความรับผิดชอบ: การวิเคราะห์นี้อิงจากภาพรวมของเอกสารที่มีอยู่สาธารณะในเดือนตุลาคม 2025.
อ้างอิง & การอ้างอิง
การเปิดเผยข้อมูลบรรณาธิการ
บทความนี้เป็นการเผยแพร่ที่เป็นอิสระ เราไม่มีความสัมพันธ์กับ Soho House & Co. ข้อมูลที่ให้มานั้นอิงจากแหล่งข้อมูลสาธารณะและหลักการการใช้งานอย่างเป็นธรรมสำหรับการแสดงความคิดเห็นและการวิจารณ์ ไม่มีการรับรองใดๆ ที่แสดงถึง.
