生産日報 API

productionReportCheckResults を扱う 生産日報 API の仕様です。
共通の認証・ベースURLは 基本情報・認証仕様 を参照してください。


1. 🗺️ エンドポイント一覧

メソッドエンドポイント(クエリパラメータ)処理概要
POST?app=productionReport点検結果の本送信登録
GET?app=productionReport&docId={id}点検結果の単一取得
GET?app=productionReport&date=YYYY-MM月次一覧取得(営業日基準)
GET?app=productionReport&date=YYYY-MM-DD日次一覧取得(営業日基準)

⚠️ 非対応スコープ(制限事項)
以下の操作およびデータ連携には対応していません。

  • 一時保存(下書き)、送信後の修正、データの削除
  • 確認・承認フローの実行
  • 特記事項の登録
  • 画像入力形式( type=image )の登録、および表行における参考画像( imgFileURL )の送信

2. 📥 POST: 点検結果の登録

登録リクエストは、複数件の一括処理(バッチ処理)を考慮し、 常に data 配列で統一 します。
1件のみ登録する場合であっても、要素数が1の配列として送信してください。

2.1 リクエストデータ構造

📂 ルート・帳票階層

物理キー論理名データ型必須状況概要・制約
data登録対象一覧array必須登録対象とする帳票オブジェクトの配列。
data[].sheetName帳票名string必須 店舗に存在するマスタ帳票名(例: "開店前点検" , "帳票A" )。
data[].sender送信者名string必須 点検を実施・送信した担当者の氏名(例: "テスト太郎" )。
data[].checkItems点検結果array必須 帳票に含まれる各点検結果の配列。 1件以上必須 。詳細は2.2参照。

2.2 checkItems[] (点検結果)のタイプ別詳細仕様

checkItems[].type の値( tag / list / table )に応じて、子要素である items[] のスキーマ構造が変化します。

🏷️ ① type: "tag" (帳票付加情報・ラベル形式)

主に備考、日付といった、単発の入力項目を並べる形式です。

1. 共通オブジェクト構造
物理キー論理名データ型必須状況概要・制約
type点検タイプstring必須"tag" 固定。
displayName表示名string任意 マスタ由来のタグの表示名(例: "引継ぎ項目" )。
items[]タグの行項目array必須1件以上の項目オブジェクト(詳細は下記)。
2. items[] 内部オブジェクト仕様(入力タイプ別)

items[].type の値に応じて、利用可能・または必須となるオプションパラメータが異なります。

物理キー論理名データ型必須状況概要・制約
type入力タイプstring必須 入力タイプを以下から指定:
show (表示のみ)
chipSelect (一覧から選択 ※条件付き必須)
text (テキスト入力)
number (数値入力)
date (日付入力)
time (時間入力)
labelラベルstring任意 フィールドのラベル(例: "備考" , "シフト" )。
contentタグ内容string任意実際の入力値number の場合も文字列として扱われます。
items選択肢一覧string[]条件付きchipSelect 用かつ必須 。選択肢の文字列配列(例: ["a", "b", "c"] )。
multiple複数選択フラグboolean任意chipSelect 。複数選択を許可するかどうか(例: false )。
placeholder補助文言string任意text 。プレースホルダーテキスト。
digit整数部桁数number任意number 。入力可能な整数の最大桁数。
decimalDigit小数部桁数number任意number 。入力可能な小数の桁数。
unit単位string任意number 。単位表示(例: "℃" , "kg" )。
timeFormat時刻形式string任意time 。表示・入力フォーマット(例: "HH:mm:ss" , "HH:mm" , "mm:ss" )。
3. 各入力タイプ別のJSONパラメータ構成サンプル(checkItems[]内)
{
  "type": "tag",
  "displayName": "帳票付加情報(タグサンプル)",
  "items": [
    {
      "type": "show",
      "label": "表示のみ",
      "content": "testtext"
    },
    {
      "type": "chipSelect",
      "label": "一覧から選択",
      "content": "a",
      "multiple": false,
      "items": ["a", "b", "c"]
    },
    {
      "type": "text",
      "label": "テキスト入力",
      "content": "テキスト入力確認",
      "placeholder": "hint"
    },
    {
      "type": "number",
      "label": "数値入力",
      "content": "12345",
      "digit": 5,
      "decimalDigit": 2,
      "unit": ""
    },
    {
      "type": "date",
      "label": "日付入力",
      "content": "2026/06/05"
    },
    {
      "type": "time",
      "label": "時間入力",
      "content": "12:15",
      "timeFormat": "HH:mm"
    }
  ]
}

📝 ② type: "list" (縦並び点検リスト形式)

一般的な点検項目に対して、OK/NG や数値を1対1で入力していく標準的な形式です。

1. 共通オブジェクト構造
物理キー論理名データ型必須状況概要・制約
type点検タイプstring必須"list" 固定。
displayName表示名string任意 マスタ由来のリストの表示名(例: "衛生点検" )。
items[]リストの行項目array必須1件以上の点検行オブジェクト(詳細は下記)。
2. items[] 内部オブジェクト仕様(入力タイプ別)

items[].type の値に応じて、利用可能・または必須となるオプションパラメータが異なります。

物理キー論理名データ型必須状況概要・制約
type入力タイプstring必須 入力タイプを以下から指定:
okng (OK / NG)
checkbox (チェックボックス)
select (プルダウンで選択)
text (テキスト入力)
number (数値入力)
date (日付入力)
time (時間入力)
content点検内容string任意 現場で確認する内容の文言(例: "手洗い" , "庫内温度" )。
checkResult点検結果値string | number | boolean任意実際の入力・選択値 。※ number の場合は 必ず数値型 で指定。
required必須フラグboolean任意API側でのチェックに使用。
default初期値string任意okng 。初期値(マスタ設定の引き継ぎ用)。
hasUnoperated未稼働許可boolean任意okng 。選択肢として「未稼働」を許容するか。
items選択肢一覧string[]条件付きselect 用かつ必須 。選択肢の文字列配列。
placeholder補助文言string任意text 。プレースホルダーテキスト。
digit整数部桁数number任意number 。入力可能な整数の最大桁数。
decimalDigit小数部桁数number任意number 。入力可能な小数の桁数。
min許容下限値number | ""任意number 。正常下限(NG判定用)。
max許容上限値number | ""任意number . 正常上限(NG判定用)。
unit単位string任意number 。単位表示(例: "℃" )。
timeFormat時刻形式string任意time 。表示・入力フォーマット(例: "HH:mm:ss" , "HH:mm" , "mm:ss" )。
3. 各入力タイプ別のJSONパラメータ構成サンプル(checkItems[]内)
{
  "type": "list",
  "displayName": "帳票付加情報(リストサンプル)",
  "items": [
    {
      "type": "okng",
      "content": "OKチェック",
      "checkResult": "OK",
      "required": false,
      "default": "",
      "hasUnoperated": false
    },
    {
      "type": "checkbox",
      "content": "チェックボックス項目",
      "checkResult": true
    },
    {
      "type": "select",
      "content": "プルダウン選択項目",
      "checkResult": "a",
      "required": true,
      "items": ["a", "c", "b"]
    },
    {
      "type": "text",
      "content": "自由記述項目",
      "checkResult": "テキスト入力確認",
      "required": false,
      "placeholder": "hint"
    },
    {
      "type": "number",
      "content": "庫内温度",
      "checkResult": 12345.67,
      "required": false,
      "digit": 5,
      "decimalDigit": 2,
      "min": "",
      "max": "",
      "unit": "℃"
    },
    {
      "type": "date",
      "content": "実施日",
      "checkResult": "2026/06/05",
      "required": true
    },
    {
      "type": "time",
      "content": "確認時間",
      "checkResult": "14:54",
      "required": false,
      "timeFormat": "HH:mm"
    }
  ]
}

📊 ③ type: "table" (マトリクス・表形式)

複数の設備や製品(行)に対して、共通の点検列(例: 結果、確認者)を横並びで入力する形式です。

1. 共通オブジェクト構造
物理キー論理名データ型必須状況概要・制約
type点検タイプstring必須"table" 固定。
displayName表示名string任意 マスタ由来のテーブルの表示名(例: "設備点検" )。
headers[]列ヘッダー定義string[]必須 データ列タイトルの配列。空配列は不可(例: ["結果", "確認者"] )。
items[]テーブルの行項目array必須1件以上の行オブジェクト(詳細は下記)。
2. items[] 内部オブジェクト仕様(行データ)

各行の属性情報と、 headers の要素数に応じた列データ( col0 〜)を保持します。

物理キー論理名データ型必須状況概要・制約
content点検内容string任意 行の対象となる設備名や文言(例: "コンベア" , "1回目" )。
editable内容を編集可能かboolean任意行名を編集可能にするかどうかのマスタ設定。
selectableCheck点検したかを選択可能かboolean任意行単位での点検実施選択を実施するかの設定。
isCheck点検実施フラグboolean任意 この行を今回点検したか。省略時は true (点検対象)扱い。
false の場合、必須バリデーションが免除され、データが自動的に正規化(空文字や初期値に変換)されます。
col0 , col1 ... 各列データobject必須headers の列数分だけ、 col0 から順にオブジェクトを完全定義(詳細は下記)。
3. 💡 列オブジェクト ( col0 , col1 ... ) の内部スキーマ

中身の構造やオプションフィールドは type="list" の仕様と共通です。

物理キー論理名データ型必須状況概要・制約
type入力タイプstring必須 入力タイプを以下から指定:
okng (OK / NG)
checkbox (チェックボックス)
select (プルダウンで選択)
text (テキスト入力)
number (数値入力)
date (日付入力)
time (時間入力)
checkResult点検結果値string | number | boolean任意実際の入力・選択値 。※ number の場合は数値型(未点検時は "" )、 select の未点検時は null
required必須フラグboolean任意入力必須項目か否か。
default初期値string任意okng 。初期値設定。
hasUnoperated未稼働許可boolean任意okng 。選択肢として「未稼働」を許容するか。
items選択肢一覧string[]条件付きselect 用かつ必須 。選択肢の文字列配列。
placeholder補助文言string任意text 。プレースホルダーテキスト。
digit整数部桁数number任意number 。入力可能な整数の最大桁数。
decimalDigit小数部桁数number任意number 。入力可能な小数の桁数。
min許容下限値number任意number 。正常下限(NG判定用)。
max許容上限値number任意number 。正常上限(NG判定用)。
unit単位string任意number 。単位表示(例: "kg" )。
hideAllowance許容値非表示フラグboolean任意number 。画面上に管理限界値(min/max)の目安を表示しない設定。
timeFormat時刻形式string任意time 。表示・入力フォーマット(例: "HH:mm:ss" , "HH:mm" , "mm:ss" )。
4. 各入力タイプ別のJSONパラメータ構成サンプル(checkItems[]内)
{
  "type": "table",
  "displayName": "帳票付加情報(テーブルサンプル)",
  "headers": [
    "OK/NG",
    "check",
    "プルダウン",
    "テキスト",
    "数値",
    "日付",
    "時間"
  ],
  "items": [
    {
      "content": "1回目",
      "editable": false,
      "selectableCheck": true,
      "isCheck": true,
      "col0": { "type": "okng", "checkResult": "OK", "required": false, "default": "", "hasUnoperated": false },
      "col1": { "type": "checkbox", "checkResult": true },
      "col2": { "type": "select", "checkResult": "選択肢A", "required": true, "items": ["選択肢A", "選択肢B", "選択肢C"] },
      "col3": { "type": "text", "checkResult": "テキスト入力確認", "required": false, "placeholder": "" },
      "col4": { "type": "number", "checkResult": 10, "required": true, "digit": 5, "decimalDigit": 3, "min": 10, "max": 30.123, "unit": "kg", "hideAllowance": true },
      "col5": { "type": "date", "checkResult": "2026/06/04", "required": true },
      "col6": { "type": "time", "checkResult": "15:31:36", "required": false, "timeFormat": "HH:mm:ss" }
    },
    {
      "content": "2回目",
      "editable": true,
      "selectableCheck": true,
      "isCheck": true,
      "col0": { "type": "okng", "checkResult": "NG", "required": false, "default": "", "hasUnoperated": false },
      "col1": { "type": "checkbox", "checkResult": false },
      "col2": { "type": "select", "checkResult": "選択肢C", "required": true, "items": ["選択肢A", "選択肢B", "選択肢C"] },
      "col3": { "type": "text", "checkResult": "テキスト入力確認②", "required": false, "placeholder": "" },
      "col4": { "type": "number", "checkResult": 70.522, "required": true, "digit": 5, "decimalDigit": 3, "min": 10, "max": 30.123, "unit": "kg", "hideAllowance": true },
      "col5": { "type": "date", "checkResult": "2026/06/01", "required": true },
      "col6": { "type": "time", "checkResult": "0:00:00", "required": false, "timeFormat": "HH:mm:ss" }
    },
    {
      "content": "3回目",
      "editable": false,
      "selectableCheck": true,
      "isCheck": false,
      "col0": { "type": "okng", "checkResult": "", "required": false, "default": "", "hasUnoperated": false },
      "col1": { "type": "checkbox", "checkResult": false },
      "col2": { "type": "select", "checkResult": null, "required": true, "items": ["選択肢A", "選択肢B", "選択肢C"] },
      "col3": { "type": "text", "checkResult": "", "required": false, "placeholder": "" },
      "col4": { "type": "number", "checkResult": "", "required": true, "digit": 5, "decimalDigit": 3, "min": 10, "max": 30.123, "unit": "kg", "hideAllowance": true },
      "col5": { "type": "date", "checkResult": "", "required": true },
      "col6": { "type": "time", "checkResult": "", "required": false, "timeFormat": "HH:mm:ss" }
    }
  ]
}

2.3 リクエストJSONサンプル(1件および複数件の構造)

🔹 1件のみ登録する場合(配列の要素数が1)

{
  "data": [
    {
      "sheetName": "開店前点検",
      "sender": "テスト太郎",
      "checkItems": [
        {
          "type": "list",
          "displayName": "衛生点検",
          "items": [
            {
              "type": "okng",
              "content": "手洗い",
              "checkResult": "OK",
              "required": true
            }
          ]
        }
      ]
    }
  ]
}

🔹 複数件を一括登録する場合(配列の要素数が2以上)

{
  "data": [
    {
      "sheetName": "帳票A",
      "sender": "テスト太郎",
      "checkItems": [
        {
          "type": "list",
          "displayName": "衛生点検",
          "items": [
            { "type": "okng", "content": "手洗い", "checkResult": "OK", "required": true }
          ]
        }
      ]
    },
    {
      "sheetName": "帳票B",
      "sender": "テスト次郎",
      "checkItems": [
        {
          "type": "table",
          "displayName": "設備点検",
          "headers": ["結果", "確認者"],
          "items": [
            {
              "content": "コンベア",
              "isCheck": true,
              "col0": { "type": "okng", "checkResult": "OK", "required": true },
              "col1": { "type": "text", "checkResult": "確認" }
            }
          ]
        }
      ]
    }
  ]
}

2.4 入力バリデーションルール(400エラー条件)

本送信登録時、以下のいずれかに該当した場合は不整合データとみなされ、登録が拒否されます。

  1. 基本構造の不備 : items が非空の配列でない、または要素内に sheetName , sender , checkItems のいずれかが欠落している。
  2. テーブル構造の不一致 : type=table にもかかわらず headers が空、または定義された列数分( col0col(n-1) )のキー行データ内にそろっていない。
  3. 必須項目の未入力 : required=true (またはテーブルの点検対象行における必須列)で、 checkResult が未指定、 "" (空文字)、 null のいずれかである。
  4. 厳密な型不一致 : type=number に値を指定する場合、 checkResult が文字列( "4.2" )で送られている(必ず 数値型の 4.2 であること)。
  5. 未知の入力定義 : システムで定義されていない type が指定された場合。

📋 バリデーションエラーメッセージ例 ( results[].error )

失敗時は、原因特定を容易にするため JSONパス付き のメッセージが返却されます。

  • checkItems[0]: type must be tag, list, or table (got "foo")
  • checkItems[0]: items must be an array
  • checkItems[0]: items must be a non-empty array
  • checkItems[0] list items[1]: required checkResult is empty ("手洗い")
  • checkItems[0]: headers is required ... when type is table
  • checkItems[0] table rows[0]: must include col0 through col1 ...
  • checkItems[0] table rows[0] col0: required checkResult is empty

2.5 POST レスポンス仕様

HTTPステータスコードは全体成功を示す 200 、または一部成功・一部失敗が混在することを示す 207 Multi-Status を返却します。

レスポンスボディ JSON例 (200 の場合)

{
  "status": "success",
  "shopUID": "xxxxxxxxxxxxxxxxxxxx",
  "summary": {
    "requested": 1,
    "created": 1,
    "failed": 0
  },
  "results": [
    {
      "index": 0,
      "status": "success",
      "docId": "yyyyyyyyyyyyyyyyyyyy"
    }
  ]
}

レスポンスボディ JSON例 (207 Multi-Status の場合)

{
  "status": "partial_success",
  "shopUID": "xxxxxxxxxxxxxxxxxxxx",
  "summary": {
    "requested": 3,
    "created": 2,
    "failed": 1
  },
  "results": [
    {
      "index": 0,
      "status": "success",
      "docId": "yyyyyyyyyyyyyyyyyyyy"
    },
    {
      "index": 1,
      "status": "failed",
      "error": "checkItems[0] list items[2]: required checkResult is empty (\"手洗い\")"
    },
    {
      "index": 2,
      "status": "skipped",
      "skippedReason": "duplicate request"
    }
  ]
}

レスポンス項目定義(ルート)

フィールド論理名データ型説明
status処理結果状態stringsuccess (全件成功) / partial_success (一部エラー混在)
shopUID店舗IDstringAPIキーの認証処理によって紐づいた店舗の一意なID。
summary登録結果サマリーobject下記の集計データオブジェクト。
results件別結果一覧arraydata[] に対応する個別結果オブジェクトの配列。

summary オブジェクト

フィールド論理名データ型説明
requested要求件数number リクエストされた data の総件数。
created登録成功件数number正常に保存が完了した件数。
failed失敗件数numberバリデーションエラー等で失敗した件数。

results[] 要素

フィールド論理名データ型説明
indexインデックスnumber リクエスト data 内の配列インデックス番号(0始まり)。
statusステータスstringsuccess / failed / skipped
docIdドキュメントIDstringstatus="success" の時のみ、生成されたIDを設定。
errorエラーメッセージstringstatus="failed" の時のみ、詳細なエラー原因を設定。
skippedReasonスキップ理由stringstatus="skipped" の時のみ、理由を設定(重複リクエスト等)。

3. 📤 GET: 点検結果の取得

取得系APIにおいて、レスポンスに含まれるすべての日付・時刻フィールドは、 YYYY/MM/DD HH:mm の文字列形式に統一されて返却されます(例: "2026/05/27 09:15" )。

3.1 単一取得(docId 指定)

  • Request : GET {baseUrl}?app=productionReport&docId=abc123
  • Response (200 OK) :
{
  "data": [
    {
      "id": "yyyyyyyyyyyyyyyyyyyy",
      "sheetName": "帳票A",
      "sender": "テスト太郎",
      "checkItems": [
        /* 構造は 2.2 の定義に準拠 */
        {
          "type": "tag",
          "displayName": "サンプル",
          "items": [
            {
              "type": "show",
              "label": "表示のみ",
              "content": "testtext"
            }
          ]
        }
      ],
      "userUID": "API_COMMON_USER",
      "shopUID": "xxxxxxxxxxxxxxxxxxxx",
      "status": 1,
      "version": 1,
      "checkHistory": [],
      "isNormalForReport": true,
      "registeredAt": "2026/06/04 00:00",
      "confirmedAt": "",
      "confirmerName": "",
      "approvedAt": "",
      "approverName": "",
      "createdAt": "2026/06/04 05:18",
      "sentAt": "2026/06/04 05:18",
      "updatedAt": "2026/06/04 05:18"
    }
  ]
}

3.2 一覧取得(date 指定)

  • Request :
  • GET {baseUrl}?app=productionReport&date=2026-05 (月次)
  • GET {baseUrl}?app=productionReport&date=2026-05-27 (日次)
  • Response (200 OK) :
/* 3.1と同じ内容のため割愛 */

💡 サーバー側での自動フィルタリング・ソート規則

  • 認証されたAPIキーに紐づく shopUID のデータのみに自動制限
  • 本送信済み状態である status: 1 のデータのみ を返却(下書きデータ等は除外)
  • 営業日順( registeredAt の昇順 asc )でソート。同一営業日内は帳票名( sheetName )順のソートを推奨。

3.3 🗂️ 点検結果オブジェクト詳細定義(GETレスポンス)

単一取得のレスポンス、および一覧取得の data[] 配列に含まれる各帳票オブジェクトの完全なフィールド仕様です。

フィールドキー論理名データ型概要・返却値のルール
idドキュメントIDstringデータベース(Firestore)上で一意に割り振られたID。
shopUID店舗IDstringAPIキーから紐づけられた店舗コード。
sheetName帳票名string登録された点検票の名前。
userUIDユーザーIDstring 登録を行ったユーザーのID。API経由の場合は一律で "API_COMMON_USER"
sender送信者名stringリクエスト時に指定された担当者名。
status送信状態number 帳票の状態コード。一覧 GET では必ず 1 (送信済) のみ。
version送信バージョンnumber データの改訂版数。API経由の新規登録時は一律で 1
checkItems点検結果詳細array入力データの詳細配列(構造は [2.2] と共通)。
checkHistory送信履歴array 過去の送信履歴。APIからの本送信時は一律で [] (空配列) が返却。
isNormalForReport日報用正常判定boolean 帳票内に異常(NGや範囲外)がないかを示すフラグ( true =正常, false =異常あり)。
registeredAt登録日時(営業日)stringバックエンドが店舗の閉店時刻設定等から算出した「営業日」の日付。
sentAt送信日時stringサーバーがリクエストを受理・永続化した日時。
createdAt作成日時stringドキュメントの初回作成日時。
updatedAt更新日時stringドキュメントの最終更新日時。
confirmedAt確認日時string アプリ画面側で確認フローが実行された日時。未確認時は ""
confirmerName確認者氏名string 確認を行ったユーザーの氏名。未確認時は ""
approvedAt承認日時string アプリ画面側で承認フローが実行された日時。未承認時は ""
approverName承認者氏名string 承認を行ったユーザーの氏名。未承認時は ""
editor編集者保持string画面上での一時保存ロック用。APIからのデータでは常に設定されません(項目なし)。

🔗 checkHistory[] 要素の内部構造

フィールドキー論理名データ型説明
uidユーザーIDstring送信を実行したユーザーのID。
version送信バージョンnumberその履歴時点でのデータバージョン。
sentAt送信日時string送信が行われた日時。
sender送信者名string送信者の表示名。