API
ไม่มี endpoint ส่วนตัว แม้แต่สำหรับตัวอินเทอร์เฟซเอง
ผลิตภัณฑ์ส่วนใหญ่มีสอง API: ตัวที่มีเอกสารให้คุณใช้ และตัวที่น่าสนใจซึ่งหน้าจอของพวกเขาเองใช้ ตัวที่สองมักดีกว่าเสมอ และคุณไม่มีวันได้ใกล้ชิดมัน ที่นี่มีเพียงตัวเดียว และอินเทอร์เฟซเป็นไคลเอนต์ของมันเหมือนอย่างอื่นทุกประการ — ซึ่งเป็นข้อจำกัดของเรา และเป็นเหตุผลว่าทำไมทุกอย่างที่คุณต้องการสร้างจึงเป็นไปได้
กฎนี้มีต้นทุนจริงแค่ไหน
หมายความว่าบางครั้งหน้าจอต้องรอให้ API ถูกต้อง แทนที่จะลัดเลาะไปหาฟิลด์ที่สะดวก วันที่หน้าจอต้องการสิ่งที่ API สาธารณะให้ไม่ได้ คือวันที่ API ผิด และทางแก้คือแก้ที่ API
ผลตอบแทนคือไคลเอนต์ที่แตกต่างกันมากสามตัวแทบไม่เสียค่าใช้จ่ายเพิ่มเติม เซิร์ฟเวอร์ MCP เป็นไคลเอนต์ ไทล์ dash-b เป็นไคลเอนต์ สคริปต์ของคุณเองก็เป็นไคลเอนต์ ไม่มีตัวใดเป็นพลเมืองชั้นสองที่ต้องอ้อมพื้นผิวที่ออกแบบมาสำหรับคนอื่น เพราะไม่มีพื้นผิวอื่นให้ต้องเป็นรอง
มีเอกสาร และถูกทดสอบจริง
OpenAPI ถูกสร้างที่ /docs และทุกเส้นทางมีเทสต์ที่คือตัวอย่างในเอกสาร เอกสารที่เขียนแยกจากโค้ดจะคลาดเคลื่อนภายในหนึ่งเดือน ส่วนเอกสารที่ทำให้บิลด์ล้มเหลวเมื่อผิดจะไม่คลาดเคลื่อน
การลงชื่อเข้าใช้
บัญชี castomo ของคุณ ผ่าน authorization code flow พร้อม PKCE — บัญชีเดียวกับที่คุณใช้กับ dash-b และตระกูลผลิตภัณฑ์อื่น ๆ หน้าเว็บที่ไม่มีเซิร์ฟเวอร์ของตัวเองก็รัน flow นี้ได้ดี ซึ่งเป็นสิ่งที่ flow นี้ถูกออกแบบมาเพื่อ สำหรับงานแบบ machine-to-machine ใช้ API key ที่ผูกกับโปรเจกต์
- 1ผู้คน
/v1/contacts·/lists·/segments·/tags·/imports - 2เนื้อหา
/v1/creativesพร้อมการตรวจสอบ พรีวิว และเรนเดอร์ต่อเป้าหมาย - 3การทำงานอัตโนมัติ
/v1/funnels·/funnels/:id/versions·/runs·/simulate - 4บรอดแคสต์
/v1/campaignsพร้อมกลุ่มเป้าหมาย การ materialise การตั้งเวลา และการส่ง เป็นขั้นตอนแยกกัน - 5อีเวนต์เข้า
/v1/events— อีเวนต์จากแอปพลิเคชันของคุณเอง ใช้เป็นทริกเกอร์ - 6การส่งมอบ
/sender-identities·/domains·/apps·/webhooks - 7ตัวเลข
/v1/reports/*และ/track/*บนโฮสต์ติดตาม
OpenAPI ที่ /docs/mcp บนโปรเซสเดียวกัน
ข้อกำหนดร่วม
รูปแบบเดียวกับบริการ castomo อื่นทุกตัว
ซึ่งสำคัญกว่าที่ฟังดู หากคุณเรียกใช้ตัวใดตัวหนึ่งจากเหล่านี้อยู่แล้ว คุณก็รู้อยู่แล้วว่าตัวนี้ตอบ ล้มเหลว และแบ่งหน้าอย่างไร
รูปแบบข้อผิดพลาดเดียว
ทุกความล้มเหลวมีรูปแบบเดียวกัน มีรหัสที่คงที่ และข้อความที่เขียนสำหรับคนอ่าน ไม่มีเส้นทางใดแต่งวิธีบ่นเอง
การแบ่งหน้าแบบ cursor
ไม่ใช่แบบ offset รายการที่เปลี่ยนแปลงระหว่างที่คุณกำลังไล่ดูจะไม่เงียบ ๆ ข้ามหรือซ้ำแถว ซึ่งต่างจากการแบ่งหน้าแบบ offset ที่ทำแบบเงียบ ๆ และเกิดขึ้นตลอด
Idempotency keys
บนทุกเส้นทางที่เปลี่ยนแปลงข้อมูล ลองส่งคำขอซ้ำเมื่อไม่แน่ใจว่าไปถึงหรือไม่ แล้วจะได้คำตอบเดิม แทนที่จะได้ผู้ติดต่อคนที่สอง แคมเปญที่สอง หรือการส่งที่สอง
ผูกกับโปรเจกต์
โทเคนหนึ่งตัวระบุทั้งเทนแนนต์เดียวและโปรเจกต์เดียว ความปลอดภัยระดับแถวถูกบังคับในฐานข้อมูลเอง ไม่ใช่ด้วยการจำไปเพิ่มเงื่อนไข
Webhooks ออก
มีการลงลายเซ็น ลองใหม่แบบถอยหลังทีละช่วง และส่งอย่างน้อยหนึ่งครั้ง — ดังนั้น endpoint ของคุณก็ควรเป็น idempotent ด้วย โดยเหตุการณ์เหล่านี้ใช้คำศัพท์ชุดเดียวกับที่รายงานใช้
การลบข้อมูลและการส่งออก
สามารถส่งออกหรือลบข้อมูลผู้ติดต่อได้ผ่าน API และการลบข้อมูลจะไปถึงทุกบริการพี่น้องที่เก็บสำเนาไว้ ผ่านช่องทางภายในของตระกูลผลิตภัณฑ์เอง

ทุกอย่างที่หน้าจอทำได้ POST ก็ทำได้
เหตุการณ์คือส่วนที่น่าสนใจ
สิ่งอื่นทั้งหมดในหน้านี้เป็นเพียงระบบพื้นฐานที่คุณคาดหวังได้ POST /v1/events คือเส้นทางที่เปลี่ยนวัตถุประสงค์ของผลิตภัณฑ์นี้
แอปพลิเคชันของคุณรู้สิ่งที่เครื่องมือการตลาดไม่มีวันมองเห็นอยู่แล้ว: ใครจบการเริ่มต้นใช้งาน ใครชวนเพื่อนร่วมงาน ใครชนเพดานการใช้งาน ใครส่งออกข้อมูลของตนในช่วงบ่ายวันอาทิตย์ ส่งสิ่งเหล่านั้นเป็นเหตุการณ์ด้วยโทเคนของคุณเอง และแต่ละรายการจะกลายเป็นทริกเกอร์ เงื่อนไข และเซกเมนต์
ส่วนที่เหลือตามมาจากโมเดลผู้ติดต่อ เหตุการณ์ถูกเพิ่มต่อท้าย ไม่มีวันแก้ไข มันคือบันทึกที่ผลิตภัณฑ์ทั้งหมดพาดพิงอยู่ กระบวนการที่ทริกเกอร์จากเหตุการณ์ที่คุณกำหนดเองไม่ใช่การเชื่อมต่อภายนอก — มันคือกลไกเดียวกับที่ message_opened ใช้ เพียงแค่เปลี่ยนชื่อในนั้น
- 1คุณส่งมันเข้ามา
POST /v1/events— ชื่อหนึ่ง ผู้ติดต่อหนึ่ง ข้อมูล payload หนึ่ง และคีย์ idempotency หนึ่ง - 2มันถูกรับเข้าเพิ่มต่อท้ายบันทึกของผู้ติดต่อ ไม่มีส่วนอื่นต้องรู้ว่ามันมีอยู่
- 3กระบวนการเริ่มต้นกระบวนการใดก็ตามที่จุดเริ่มต้นระบุชื่อเหตุการณ์นั้น สำหรับผู้ติดต่อทุกรายที่มีสิทธิ์ตามเงื่อนไขการเข้าของกระบวนการนั้น
- 4กระบวนการอื่นแยกเส้นทางตามมัน"เหตุการณ์นี้เกิดขึ้นใน 14 วันที่ผ่านมาหรือไม่" เป็นเพียงเงื่อนไขเซกเมนต์ธรรมดาหนึ่ง
- iและมันจบการรันได้ด้วยโหนดเป้าหมายที่ระบุเหตุการณ์เดียวกันจะหยุดลำดับการส่งทันทีที่บุคคลนั้นทำสิ่งนั้น
คำศัพท์ของคุณโทเคนของคุณ
ขอบเขตที่ควรรู้ก่อนเริ่มสร้าง
ClickSomo เก็บตัวระบุสามตัวเกี่ยวกับคุณ — tenant, project และ user ในรูปแบบ id ที่อ่านไม่ได้ — และไม่มีอะไรอื่นอีก ไม่มีรหัสผ่าน ไม่มีโปรไฟล์ ไม่มีบัตร ไม่มีใบแจ้งหนี้ ขีดจำกัดของแพ็กเกจมาในรูปตัวเลข: ผู้ติดต่อกี่ราย ส่งกี่ครั้ง สร้างกี่ครั้ง คำศัพท์ด้านการชำระเงินไม่ข้ามเส้นนั้นไปมาทั้งสองทิศทาง
ผู้ติดต่อของคุณเป็นของคุณ คุณคือผู้ควบคุมข้อมูล เราคือผู้ประมวลผล ไม่มีเส้นทางใดที่ผลิตภัณฑ์อื่นในตระกูลจะอ่านหรือเขียนรายชื่อผู้ติดต่อของคุณได้ และไม่มีช่องทางนำเข้าข้อมูลให้ใช้
หากคุณกำลังพิจารณาอย่างจริงจัง: ให้อ่าน /docs ก่อนอ่านส่วนอื่นของเว็บไซต์นี้ต่อ API คือคำอธิบายที่ตรงไปตรงมาที่สุดว่าผลิตภัณฑ์นี้ทำอะไร และทุกข้ออ้างในหน้าเหล่านี้มีเส้นทางหรือชนิดโหนดที่คุณค้นพบได้ในนั้น เมื่อ schema เปลี่ยน หน้าเหล่านี้ก็เปลี่ยน