SocialHub.AI
開発者センター · オープンな拡張性

カスタム オブジェクト API

ワークスペースは、フィールド、レコード、リスト/フォーム UI、セグメンテーションを含む独自の構造化ビジネス オブジェクト (修理ジョブ、予定、苦情) をすべてコードなしで定義できます。この API により、統合でこれらのオブジェクトのスキーマを読み取り、そのレコードを読み書きできるようになります。 オブジェクトは最初にアプリ内で定義されます; API は既存のものに対して機能します。

ステップ 1 — 発見する

オブジェクトタイプをリストし、そのスキーマを読み取る

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 はオブジェクトのレコードを返します (スコープ 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_..."