日報 API

日報app=dailyReport )の点検結果を扱う API の仕様です。
共通の認証・ベースURLは 基本情報・認証仕様 を参照してください。


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

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

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

  • 確認・承認フローの実行
  • 特記事項(コメント)・画像の登録
  • 日報フォーマット(マスタ)の取得・更新(参照行の補完には利用)
  • NG 時のメール通知
  • スケジュール完了の登録
  • データの削除

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

登録リクエストは他 API と同様に 常に data 配列 で送ります。
日報 API では data は必ず1件 です(複数日の一括送信は不可)。
店舗・営業日あたり1ドキュメントです。同一営業日へ再送信すると checkItems を洗い替え更新します(既存の手動結果は残しません)。 確認済み( confirmerName が空でない)の日報は更新できません。
営業日( registeredAt )は店舗の閉店時刻を加味してサーバーが算出します(リクエストに含めても無視)。

💡 参照行と洗い替え
個人衛生・庫内温度など referenceService 付きの行はリクエストに含めません。 店舗に日報フォーマット( shopReportQuestionLink / reportQuestions )がある場合、サーバが参照行だけマスタから取り、 手動項目の後ろ に付けます。 手動項目はリクエストの checkItems 送信順のまま先頭に保存します(マスタ照合・差し込みなし)。 マスタ未設定の店舗では、リクエストの手動項目だけを保存します。 再 POST 時は前回の手動結果をマージせず、今回の内容が最終状態になります。

2.1 リクエストデータ構造

物理キー論理名データ型必須状況概要・制約
data登録対象一覧array必須 日報オブジェクトの配列。 要素数は必ず1
data[].sender送信者名string必須 点検を実施・送信した担当者の氏名。 項目側 sender 未指定時の既定値になります。
data[].registeredAt営業日string指定不可(無視) リクエストに含めても使用しません。 サーバーが店舗の閉店時刻を加味した当日営業日を設定します。
data[].checkItems点検項目array必須 その営業日の手動点検項目(1件以上)。 再送信時はこの配列が最終状態になります。詳細は 2.2 参照。

2.2 checkItems[](点検項目)の構造

物理キー論理名データ型必須状況概要・制約
category区分string必須例: "一般衛生管理" / "重点衛生管理"
solution対策string必須対策名(例: "アレルゲン対策")。
questionContent点検内容string必須点検内容の表示名。
checkResult点検結果string条件付き必須"OK" / "NG" / ""。 配列内に1件以上の "OK" または "NG" が必要です。
sender項目送信者string任意 結果あり時のみ保存。未指定時は data[].sender を使用。
sentAt項目送信日時string任意 結果あり時のみ保存。形式は YYYY/MM/DD HH:mm:ss。 未指定時はサーバーが現在時刻を設定。

2.3 リクエストJSONサンプル

{
    "data": [
      {
        "sender": "山田太郎",
        "checkItems": [
          {
            "category": "一般衛生管理",
            "solution": "アレルゲン対策",
            "questionContent": "手洗いを実施した",
            "checkResult": "OK"
          }
        ]
      }
    ]
  }

2.4 入力バリデーションルール

  1. 基本構造の不備 : リクエスト JSON 全体に data 配列が存在しない、または空配列である。
  2. data の件数 : 空配列、または2件以上は不可(必ず1件)。
  3. 必須項目の欠落 : sender が未指定または空文字、 checkItems が配列でない、または空配列である。
  4. 結果未入力 : すべての checkItems[].checkResult が空の場合は登録不可。
  5. checkResult の値不正 : "OK" / "NG" / "" 以外の値が指定されている。
  6. 参照行の指定 : referenceService に値がある項目はリクエスト不可(サーバがマスタから補完)。
  7. マスタ未設定 : 登録自体は可能。参照行の補完は行わず、リクエスト内容を保存する。
  8. 確認済み日報の更新 : 同一営業日の既存日報が確認済みの場合は更新不可。

💡 洗い替え規則
同一営業日への再 POST は、既存 checkItems との差分マージを行いません。 今回送った手動項目(+サーバが補完した参照行)が最終状態になります。 送っていない手動項目は「未点検」行として残りません。


2.5 POST レスポンス仕様

HTTPステータスコードは成功を示す 200 、失敗を示す 400 を返却します( data は1件のため、部分成功の 207 は通常発生しません)。
summary.created は新規作成・洗い替え更新を含む成功件数です。

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

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

取得系APIにおいて、レスポンスに含まれるすべての日付・時刻フィールド (ドキュメント直下の Timestamp 由来)は、 YYYY/MM/DD HH:mm の文字列形式に統一されて返却されます。
なお checkItems[].sentAt は画面と同じ YYYY/MM/DD HH:mm:ss 文字列として保存・返却されます。

3.1 単一取得(docId 指定)

  • Request: GET {baseUrl}?app=dailyReport&docId=daily_report_doc_id_11111
{
    "data": [
      {
        "id": "daily_report_doc_id_11111",
        "shopUID": "xxxxxxxxxxxxxxxxxxxx",
        "checkItems": [
          {
            "category": "一般衛生管理",
            "solution": "アレルゲン対策",
            "referenceService": "",
            "questionContent": "手洗いを実施した",
            "checkResult": "OK",
            "sentAt": "2026/08/07 09:16:30",
            "sender": "山田太郎"
          },
          {
            "category": "重点衛生管理",
            "solution": "金属および硬質プラスティック対策",
            "referenceService": "personalHygiene",
            "questionContent": "個人衛生点検を実施した",
            "checkResult": "",
            "sentAt": "",
            "sender": ""
          }
        ],
        "registeredAt": "2026/08/07 00:00",
        "lastSentAt": "2026/08/07 09:16",
        "confirmedAt": "",
        "confirmerName": "",
        "approvedAt": "",
        "approverName": "",
        "createdAt": "2026/08/07 09:16",
        "updatedAt": "2026/08/07 09:16"
      }
    ]
  }

3.2 一覧取得(date 指定)

  • GET {baseUrl}?app=dailyReport&date=2026-08(月次一覧取得)
  • GET {baseUrl}?app=dailyReport&date=2026-08-07(日次一覧取得)

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

  • 認証されたAPIキーに紐づく shopUID のデータのみに自動制限されます。
  • データは 営業日順(registeredAt の昇順) でソートして返却されます。

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

フィールドキー論理名データ型概要・返却値のルール
idドキュメントIDstringデータベース上で一意に割り振られたドキュメントID。
shopUID店舗IDstringAPIキーから紐づけられた店舗コード。
checkItems点検項目arrayPOST と同じ構造の点検項目配列(詳細は 2.2 参照)。
registeredAt登録日時(営業日)string営業日の日付(JST 00:00 固定)。
lastSentAt最終点検日時string最後に点検結果が送信・更新された日時。
createdAt作成日時stringドキュメントの初回作成日時。
updatedAt更新日時stringドキュメントの最終更新日時。
confirmedAt確認日時stringアプリ画面側で確認フローが実行された日時。未確認時は ""
confirmerName確認者氏名string確認を行ったユーザーの氏名。未確認時は ""
approvedAt承認日時stringアプリ画面側で承認フローが実行された日時。未承認時は ""
approverName承認者氏名string承認を行ったユーザーの氏名。未承認時は ""