SocialHub.AI
ศูนย์นักพัฒนา · ความสามารถในการขยายแบบเปิด

ออบเจ็กต์แบบกำหนดเอง API

พื้นที่ทำงานสามารถกำหนดออบเจ็กต์ทางธุรกิจที่มีโครงสร้างของตนเอง — งานซ่อมแซม การนัดหมาย การร้องเรียน — ด้วยฟิลด์ บันทึก รายการ/แบบฟอร์ม UI และการแบ่งส่วน ทั้งหมด โดยไม่ต้องใช้รหัส API นี้ช่วยให้การบูรณาการของคุณอ่านสคีมาของออบเจ็กต์เหล่านั้น และอ่านหรือเขียนบันทึกได้ วัตถุถูกกำหนดไว้ในแอปก่อน; API ทำงานกับสิ่งที่มีอยู่แล้ว

ขั้นตอนที่ 1 — ค้นพบ

แสดงรายการประเภทออบเจ็กต์ จากนั้นอ่านสคีมา

ยืนยันตัวตนด้วยคีย์ Bearer fl_live_ ที่เก็บ objects:read ไว้ GET /api/v2/objects จะส่งคืนประเภท object ที่พื้นที่ทำงานนี้เปิดเผย — จะส่งคืนเฉพาะวัตถุ ที่เผยแพร่แล้วและมองเห็นได้ใน API เท่านั้น วัตถุฉบับร่างและวัตถุที่ซ่อนอยู่ใน API จะไม่รั่วไหล GET /api/v2/objects/{type} จะส่งคืนสคีมาฟิลด์ที่อธิบายตัวเองของ object (คีย์ ประเภท ตัวเลือก จำเป็น) เพื่อให้คุณสามารถแสดงแบบฟอร์มหรือแมปเรคอร์ดได้โดยไม่ต้องเขียนโค้ดตายตัว ประเภทที่ไม่รู้จัก ฉบับร่าง ซ่อนอยู่ หรือข้ามพื้นที่ทำงานจะส่งคืน 404

# what object types exist here?
curl https://flash.socialhub.ai/api/v2/objects \
  -H "Authorization: Bearer fl_live_..."
# { "data": [ { "type": "repair_jobs", "label": "Repair Jobs", ... } ] }

# what does one look like?
curl https://flash.socialhub.ai/api/v2/objects/repair_jobs \
  -H "Authorization: Bearer fl_live_..."
# { "data": {
#     "type": "repair_jobs", "label": "Repair Jobs",
#     "fields": [
#       { "key": "cf_status",  "type": "enum", "required": true,
#         "options": ["Received","In Progress","Completed"] },
#       { "key": "cf_item",    "type": "text" },
#       { "key": "member_ref", "type": "member_ref" }
#     ]
# } }
ขั้นตอนที่ 2 — อ่านบันทึก

แสดงรายการ กรอง จัดเรียง และแบ่งหน้า

GET /api/v2/objects/{type}/records ส่งคืนระเบียนสำหรับวัตถุ (ขอบเขต objects:read) หน้าที่มี limit (สูงสุด 200) และ offset; สั่งซื้อด้วย sortBy (created_desc, created_asc, updated_desc, title_asc); ข้อความอิสระ search; กรองสมาชิกด้วย memberId; และกรองฟิลด์ใดๆ ด้วย f_<fieldKey>=<value> ระเบียนเดียวคือ GET /api/v2/objects/{type}/records/{recordId}

curl "https://flash.socialhub.ai/api/v2/objects/repair_jobs/records\
?f_cf_status=In%20Progress&sortBy=updated_desc&limit=50" \
  -H "Authorization: Bearer fl_live_..."

# { "data": [ { "id": "rec_...", "data": { "cf_status": "In Progress",
#               "cf_item": "Sole replacement", "member_ref": "mbr_..." } } ],
#   "total": 12 }
ขั้นตอนที่ 3 — บันทึกข้อมูล

สร้าง อัปเดต และลบ

การเขียนจำเป็นต้องมีขอบเขต objects:write อ็อบเจ็กต์ data ได้รับการ ตรวจสอบความถูกต้องกับสคีมาฟิลด์ของอ็อบเจ็กต์ — ฟิลด์ที่จำเป็น ประเภท ตัวเลือกแจงนับ และการอ้างอิงสมาชิกได้รับการตรวจสอบทั้งหมด และคีย์ที่ไม่รู้จักจะถูกปฏิเสธ ตัวป้องกันอัตราการเขียนต่อคีย์แบบปิดเมื่อล้มเหลวจะอยู่ด้านหน้าการเขียนทุกครั้ง ดังนั้นคีย์ที่รั่วไหลจึงไม่ทำให้โต๊ะเต็ม

# create
curl -X POST https://flash.socialhub.ai/api/v2/objects/repair_jobs/records \
  -H "Authorization: Bearer fl_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "data": {
    "cf_status": "Received",
    "cf_item": "Sole replacement",
    "member_ref": "mbr_..."
  } }'
# 201 { "data": { "id": "rec_...", "data": { ... } } }

PATCH …/records/{recordId} คือ การอัปเดตบางส่วนตามค่าเริ่มต้น (รวมช่องต่อช่อง ดังนั้นแพตช์ที่เกิดขึ้นพร้อมกันจะไม่ปิดบังกันและกัน) ส่งฟิลด์เป็น null เพื่อลบออก หรือ { "replace": true } เพื่อเขียนทับบันทึกทั้งหมด DELETE …/records/{recordId} นุ่มนวล-ลบ

# partial update — only touch cf_status
curl -X PATCH https://flash.socialhub.ai/api/v2/objects/repair_jobs/records/rec_... \
  -H "Authorization: Bearer fl_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "data": { "cf_status": "Completed" } }'

# delete
curl -X DELETE https://flash.socialhub.ai/api/v2/objects/repair_jobs/records/rec_... \
  -H "Authorization: Bearer fl_live_..."