SocialHub.AI
개발자 센터 · 개방형 확장성

사용자 정의 개체 API

작업공간은 코드 없이 필드, 레코드, 목록/양식 UI 및 세분화를 사용하여 수리 작업, 약속, 불만 사항 등 자체 구조화된 비즈니스 개체를 정의할 수 있습니다. 이 API을 사용하면 통합에서 해당 객체의 스키마를 읽고 해당 레코드를 읽거나 쓸 수 있습니다. 객체가 앱 내에서 먼저 정의됩니다; API은 이미 존재하는 것에 대해 작동합니다.

1단계 — 발견하기

object 유형을 나열한 다음 해당 스키마를 읽으십시오.

objects:read을 보유한 Bearer fl_live_ 키로 인증합니다. 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은 object(범위 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 객체는 객체의 필드 스키마에 대해 검증됩니다. 필수 필드, 유형, 열거형 옵션 및 멤버 참조가 모두 확인되고 알 수 없는 키는 거부됩니다. 페일클로즈(fail-closed) 키별 쓰기 속도 가드가 모든 쓰기 앞에 위치하므로 유출된 키로 인해 테이블이 넘치지 않습니다.

# 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_..."