사용자 정의 개체 API
작업공간은 코드 없이 필드, 레코드, 목록/양식 UI 및 세분화를 사용하여 수리 작업, 약속, 불만 사항 등 자체 구조화된 비즈니스 개체를 정의할 수 있습니다. 이 API을 사용하면 통합에서 해당 객체의 스키마를 읽고 해당 레코드를 읽거나 쓸 수 있습니다. 객체가 앱 내에서 먼저 정의됩니다; API은 이미 존재하는 것에 대해 작동합니다.
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" }
# ]
# } }목록, 필터, 정렬 및 페이지네이션
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 }생성, 업데이트 및 삭제
쓰기에는 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_..."