カスタム オブジェクト API
ワークスペースは、フィールド、レコード、リスト/フォーム UI、セグメンテーションを含む独自の構造化ビジネス オブジェクト (修理ジョブ、予定、苦情) をすべてコードなしで定義できます。この API により、統合でこれらのオブジェクトのスキーマを読み取り、そのレコードを読み書きできるようになります。 オブジェクトは最初にアプリ内で定義されます; API は既存のものに対して機能します。
オブジェクトタイプをリストし、そのスキーマを読み取る
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 はオブジェクトのレコードを返します (スコープ 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 オブジェクトはオブジェクトのフィールド スキーマに対して検証されます。必須フィールド、型、列挙型オプション、メンバー参照がすべてチェックされ、不明なキーは拒否されます。フェイルクローズされたキーごとの書き込みレート ガードがすべての書き込みの前に配置されるため、漏洩したキーがテーブルに溢れることはありません。
# 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_..."