生産日報 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エラー条件)
本送信登録時、以下のいずれかに該当した場合は不整合データとみなされ、登録が拒否されます。
- 基本構造の不備 :
itemsが非空の配列でない、または要素内にsheetName,sender,checkItemsのいずれかが欠落している。 - テーブル構造の不一致 :
type=tableにもかかわらずheadersが空、または定義された列数分(col0〜col(n-1))のキー行データ内にそろっていない。 - 必須項目の未入力 :
required=true(またはテーブルの点検対象行における必須列)で、checkResultが未指定、""(空文字)、nullのいずれかである。 - 厳密な型不一致 :
type=numberに値を指定する場合、checkResultが文字列("4.2")で送られている(必ず 数値型の 4.2 であること)。 - 未知の入力定義 : システムで定義されていない
typeが指定された場合。
📋 バリデーションエラーメッセージ例 ( results[].error )
失敗時は、原因特定を容易にするため JSONパス付き のメッセージが返却されます。
checkItems[0]: type must be tag, list, or table (got "foo")checkItems[0]: items must be an arraycheckItems[0]: items must be a non-empty arraycheckItems[0] list items[1]: required checkResult is empty ("手洗い")checkItems[0]: headers is required ... when type is tablecheckItems[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 | 処理結果状態 | string | success (全件成功) / partial_success (一部エラー混在) |
shopUID | 店舗ID | string | APIキーの認証処理によって紐づいた店舗の一意なID。 |
summary | 登録結果サマリー | object | 下記の集計データオブジェクト。 |
results | 件別結果一覧 | array | 各 data[] に対応する個別結果オブジェクトの配列。 |
summary オブジェクト
| フィールド | 論理名 | データ型 | 説明 |
|---|---|---|---|
requested | 要求件数 | number | リクエストされた data の総件数。 |
created | 登録成功件数 | number | 正常に保存が完了した件数。 |
failed | 失敗件数 | number | バリデーションエラー等で失敗した件数。 |
results[] 要素
| フィールド | 論理名 | データ型 | 説明 |
|---|---|---|---|
index | インデックス | number | リクエスト data 内の配列インデックス番号(0始まり)。 |
status | ステータス | string | success / failed / skipped |
docId | ドキュメントID | string | status="success" の時のみ、生成されたIDを設定。 |
error | エラーメッセージ | string | status="failed" の時のみ、詳細なエラー原因を設定。 |
skippedReason | スキップ理由 | string | status="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 | ドキュメントID | string | データベース(Firestore)上で一意に割り振られたID。 |
shopUID | 店舗ID | string | APIキーから紐づけられた店舗コード。 |
sheetName | 帳票名 | string | 登録された点検票の名前。 |
userUID | ユーザーID | string | 登録を行ったユーザーの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 | ユーザーID | string | 送信を実行したユーザーのID。 |
version | 送信バージョン | number | その履歴時点でのデータバージョン。 |
sentAt | 送信日時 | string | 送信が行われた日時。 |
sender | 送信者名 | string | 送信者の表示名。 |