CrewGear
ログインはじめる
ドキュメント

送信データ

Webhook で送る JSON の形です。

外枠

どのイベントも、次の外枠で送ります。

{
  "id": "<uuid>",                           // 送信ごとに一意
  "version": 1,                             // 送信データの形の版
  "event": "project.updated",               // イベント
  "occurredAt": "2026-10-04T01:23:45.678Z", // 操作を保存した時刻
  "tenant": { "id": "<uuid>", "name": "株式会社〇〇" },
  "actor": { "userId": "<uuid>", "name": "山田 太郎" },
  "changes": ["period", "staff"],           // *.updated だけ
  "filter": null,                           // document.sent だけ
  "data": {}                                // 案件か予定の data
}
  • id は送信1回ごとに異なります。同じ送信を重ねて受け取ったかの判定に使えます。
  • occurredAt は UTC の ISO 8601 です。
  • tenant はワークスペースを指します。
  • actor は操作した人です。氏名を引けないときは name が null です。
  • changes は *.updated で変わった範囲を示します。ほかのイベントでは空の配列です。
  • filter は document.sent で { "sectionIds": ["<uuid>", ...] } を送ります。絞り込みのないときは sectionIds が空の配列です。ほかのイベントでは null です。
  • data は、案件のイベントと document.sent では案件の data、予定のイベントでは予定の data です。
  • 項目を足すときは version を変えません。項目を削除するときや意味を変えるときだけ version を上げます。

案件の data

project.* と document.sent で送ります。中身は書類作成の画面の機材リストと同じです。

"data": {
  "documentType": "equipment_checklist",
  "generatedAt": "2026-10-04T01:23:45.678Z",
  "company": { "name": "..." },
  "project": {
    "id": "<uuid>", "name": "...", "periodStart": "...", "periodEnd": "...",
    "location": "...", "status": "...", "isCancelled": false
  },
  "assignedStaff": [
    { "id": "<assignment_uuid>",      // アサインの行の ID
      "staffId": "<staff_uuid>",      // 氏名だけの「その他スタッフ」は null
      "name": "...", "nameKana": "...",
      "email": "taro@example.com",    // 氏名だけの「その他スタッフ」は null
      "staffType": "internal|external",
      "isManager": true,              // 案件の責任者の行。責任者は必ず 1 行含まれます
      "themeColor": "#...", "section": "撮影",   // セクション名。未設定の共通は null
      "roles": ["..."], "roleFreeText": null,
      "shiftStart": "2026-09-01T00:00:00.000Z", // シフトの期間。案件の期間を引き継ぐ行は案件の期間と同じ
      "shiftEnd": "2026-09-02T09:00:00.000Z",
      "isPeriodCustom": false }       // true は案件の期間から独立したシフトの期間
  ],
  "equipmentSets": [
    { "id": "<parent_reservation_uuid>", "equipmentId": "<equipment_uuid>",
      "category": "中継機材", "name": "中継セットA", "quantity": 1,
      "notes": null,                  // 機材の備考。予約ごとの備考はありません
      "section": "撮影", "sectionId": "<section_uuid>",
      "isPartial": true, "isSlide": false, "isSlideReceiver": false,
      "reservationStart": "2026-09-01T00:00:00.000Z",
      "reservationEnd":   "2026-09-02T09:00:00.000Z",
      "categoryId": "<uuid>", "subCategoryId": null, "sortOrder": 1,
      "includedItems": [
        { "equipmentId": "<uuid>", "name": "カメラ本体",
          "managementType": "individual|quantity", "quantity": 1, "orderIndex": 0 }
      ],
      "excludedItems": [
        { "equipmentId": "<uuid>", "name": "予備カメラ",
          "managementType": "individual|quantity", "quantity": 1, "orderIndex": 1 }
      ] }
  ],
  "equipmentIndividual": [
    { "id": "<reservation_uuid>", "equipmentId": "<equipment_uuid>",
      "category": "カメラ", "name": "SONY HDC3200 No3", "quantity": 1, "notes": null,
      "section": "撮影", "sectionId": "<section_uuid>",
      "modelNumber": "HDC3200", "serialNumber": "SN-0001",
      "reservationStart": "2026-09-01T00:00:00.000Z",
      "reservationEnd":   "2026-09-02T09:00:00.000Z",
      "status": "available", "stockQuantity": null,
      "categoryId": "<uuid>", "subCategoryId": "<uuid>", "sortOrder": 2,
      "isSlide": true, "isSlideReceiver": false }
  ],
  "equipmentQuantity": [
    { "id": "<reservation_uuid>", "equipmentId": "<equipment_uuid>",
      "category": "収録メディア", "name": "SDカード 128GB", "quantity": 10, "notes": null,
      "section": null, "sectionId": null, "modelNumber": null, "serialNumber": null,
      "reservationStart": "2026-09-01T00:00:00.000Z",
      "reservationEnd":   "2026-09-02T09:00:00.000Z",
      "status": "available", "stockQuantity": 50,
      "categoryId": "<uuid>", "subCategoryId": null, "sortOrder": 0,
      "isSlide": false, "isSlideReceiver": true }
  ],
  "manualItems": [ { "id": "...", "category": "特機", "categoryId": "<uuid>",
                     "name": "...", "quantity": 1, "notes": null } ],
  "summary": { "totalLineItems": 4, "setCount": 1, "individualCount": 1,
               "quantityCount": 1, "manualCount": 1 }
}
  • 絞り込み: project.* は絞り込まずに全体を送ります。document.sent は画面で選んだセクションと共通の予約だけを送り、条件を filter.sectionIds に示します。手入力の機材はセクションを持たないため、常に送ります。
  • キャンセル: project.cancelled では予約がすべてキャンセル済みのため、機材の3つの配列は空になります。
  • 機材の行: equipmentIndividual と equipmentQuantity は、キャンセルしていない予約1件が1行です。id は予約の ID、quantity は予約の数、reservationStart と reservationEnd は予約の期間です。それ以外は機材の登録内容で、型番、シリアル番号、在庫数も送ります。
  • セット: セットの予約とその構成品の予約は equipmentSets の1つの要素にまとめ、個別の配列には重ねません。includedItems は実際に予約した構成品、excludedItems は登録したセットの構成との差で、quantity は足りない数です。外した理由は送りません。構成品だけを単独で予約したときは、個別の行として送ります。セットの予約が見つからない構成品の予約も、個別の行として送ります。セクションの絞り込みは、セットの予約のセクションで判定します。
  • 並び順: 構成品は機材一覧と同じ順に並べます。大カテゴリ、小カテゴリ、機材の順です。orderIndex は、含むものと除くものを通した番号です。
  • スライド: isSlide は、その予約をスライドに指定して次の予約へ渡すことを示します。isSlideReceiver は、同じ機材の直前の予約がスライドの指定で、終わりの時刻が一致する、受け取る側の予約であることを示します。セットはセットの予約で判定します。
  • カテゴリ: category は大カテゴリの名前です。未分類は null です。
  • シフトの期間: アサインしたスタッフごとのシフトの期間を送ります。案件に属さない休みなどの予定は、予定のイベントで送ります。

予定の data

schedule_entry.* で送ります。

"data": {
  "scheduleEntry": {
    "id": "<uuid>",
    "title": "有給休暇",
    "start": "2026-09-01T00:00:00.000Z",
    "end": "2026-09-02T00:00:00.000Z",
    "isAllDay": true,
    "category": "working|off|paid_leave",   // 勤務、休み、有給
    "color": "#...",                         // null は色の指定なし(CrewGear の画面ではグレーで表示)
    "location": null,
    "memo": null,
    "staff": { "id": "<staff_uuid>", "name": "...", "nameKana": "...",
               "email": "taro@example.com", "themeColor": "#..." }
  }
}

schedule_entry.deleted は、削除する直前の内容を送ります。

changes の値

event値
project.updatedname 案件名、period 期間、location 場所、manager 責任者、staff アサインの追加と解除や役職とシフトの期間、equipment 機材の予約と手入力の機材
schedule_entry.updatedtitle タイトル、period 期間、isAllDay 終日かどうか、category 勤務と休みと有給の区分、color 色、location 場所、memo メモ、staff 予定の持ち主のスタッフの付け替え
  • 値は上の表の順に並べ、重ねません。その保存で実際に値が変わったものだけを入れます。
  • 責任者の変更は manager だけを入れます。責任者は常にアサインしたスタッフの一員のため、責任者の行の付け外しも責任者の変更として扱い、staff は足しません。
  • 期間の変更は、案件の期間が変われば period、予約の期間を変えたときや予約を解除したときは equipment、案件の期間から独立したシフトの期間を変えたときは staff を入れます。案件の期間を引き継ぐシフトの期間は常に案件の期間と同じため、その変化は period で示します。
  • 予定のスタッフを付け替えたときは staff を入れ、data.scheduleEntry.staff には付け替えた後のスタッフを載せます。

このページの内容