個人衛生 API
個人衛生 ( app=personalHygiene )の点検結果を扱う API の仕様です。
共通の認証・ベースURLは 基本情報・認証仕様 を参照してください。
1. 🗺️ エンドポイント一覧
| メソッド | エンドポイント(クエリパラメータ) | 処理概要 |
|---|---|---|
| POST | ?app=personalHygiene | 点検結果の本送信登録 |
| GET | ?app=personalHygiene&docId={id} | 点検結果の単一取得 |
| GET | ?app=personalHygiene&date=YYYY-MM | 月次一覧取得(営業日基準) |
| GET | ?app=personalHygiene&date=YYYY-MM-DD | 日次一覧取得(営業日基準) |
⚠️ 非対応スコープ(制限事項)
以下の操作およびデータ連携には対応していません。
- 送信後の修正、データの削除
- 確認・承認フローの実行
- 特記事項(コメント)の登録
- 本部点検票の紐づけ設定
- NG 時のメール通知
- 点検マスタの取得・更新
2. 📥 POST: 点検結果の登録
登録リクエストは、複数件の一括処理(バッチ処理)を考慮し、 常に data 配列で統一 します。
1件のみ登録する場合であっても、要素数が1の配列として送信してください。
点検項目は checkItems 配列で送信します。
2.1 リクエストデータ構造
| 物理キー | 論理名 | データ型 | 必須状況 | 概要・制約 |
|---|---|---|---|---|
data | 登録対象一覧 | array | 必須 | 登録対象とする個人衛生点検オブジェクトの配列。 |
data[].position | 所属 | string | 必須 | 点検対象の所属(例: "キッチン")。空文字不可。 |
data[].name | 氏名 | string | 必須 | 点検者の氏名(例: "山田太郎")。空文字不可。 |
data[].isHelp | ヘルプ勤務フラグ | boolean | 必須 | ヘルプ勤務、または本来の所属と異なる所属で点検したかを表します(例: false )。 |
data[].checkItems | 点検項目 | array | 必須 | 点検項目オブジェクトの配列(1件以上)。詳細は 2.2 参照。 |
2.2 checkItems[](点検項目)の構造
| 物理キー | 論理名 | データ型 | 必須状況 | 概要・制約 |
|---|---|---|---|---|
content | 点検項目名 | string | 必須 | 点検内容の表示名(例: "体温")。 |
formType | 入力タイプ | string | 必須 | "okng" / "temperature" / "checkbox" 。 |
checkResult | 点検結果 | formType により異なる(下表参照) | 条件付き必須 | 回答値。型と必須条件は formType ごとに異なります。詳細は下表。 |
abnormalValue | 体温 NG 閾値 | number | 条件付き必須 | formType: "temperature" のとき必須。数値で送信(例: 37.5 )。範囲外の値は下表のとおり登録されます。 |
入力タイプとパラメータの対応
formType | 追加パラメータ | checkResult の型 | checkResult に指定する値 | 点検結果の判定 |
|---|---|---|---|---|
"okng" | なし | string | "OK" / "NG" / "" (未入力) | "NG" のとき点検結果は NG。 "OK" および "" は正常。 |
"temperature" | abnormalValue に閾値を数値で指定(例: 37.5 )。必須。範囲外の値は下表のとおり登録されます。 | number | 体温の数値(例: 36.5 )。必須。 "37.5以上" / "35.0以下" となる場合、API内で変換して登録します。登録される値は下表のとおりです。 | 先頭4文字を数値化した値が閾値以上なら NG、 未満なら正常。 |
"checkbox" | なし | boolean | true / false 。文字列 "true" / "false" も受け付けます。 | 常に正常(回答内容は判定に使いません)。 |
体温(formType: "temperature")の abnormalValue 登録値
数値で送信した NG 閾値は 35.0 〜 37.5 の範囲で変換して登録されます(GET レスポンスでも同じ数値が返ります)。
| 送信する数値の条件 | 送信例 | 登録される値 |
|---|---|---|
>= 37.5 | 37.5 / 38.0 | 37.5 |
<= 35.0 | 35.0 / 34.9 | 35.0 |
35.1〜37.4 | 36.5 | 小数1桁の数値(例: 36.5 ) |
体温(formType: "temperature")の checkResult 登録値
数値で送信した体温は、次のルールに従って登録されます(GET レスポンスでも同じ文字列が返ります)。
| 送信する数値の条件 | 送信例 | 登録される値 |
|---|---|---|
>= 37.5 | 37.5 / 37.6 / 38.0 | "37.5以上" |
<= 35.0 | 35.0 / 34.9 | "35.0以下" |
35.1〜37.4 | 36.5 | 小数1桁の文字列(例: "36.5" ) |
💡 点検結果が NG になる場合について
OK/NG が"NG"、体温が閾値以上などで、登録される点検結果は NG(異常あり) 扱いになります(上記の判定表を参照)。 データの登録自体は成功しますが、点検結果上では異常ありとして扱われます。 1件でも NG 判定の項目があれば、そのレコード全体が NG 扱いになります。
2.3 リクエストJSONサンプル
{
"data": [
{
"position": "キッチン",
"name": "山田太郎",
"isHelp": false,
"checkItems": [
{
"content": "下痢、嘔吐、発熱などの症状はないか",
"formType": "okng",
"checkResult": "OK"
},
{
"content": "手指や顔面に化膿創はないか",
"formType": "okng",
"checkResult": "OK"
},
{
"content": "体温",
"formType": "temperature",
"abnormalValue": 37.5,
"checkResult": 36.5
},
{
"content": "手洗いを正しく実施しましたか?",
"formType": "checkbox",
"checkResult": true
}
]
}
]
}2.4 入力バリデーションルール
本送信登録時、以下のいずれかに該当した場合は不整合データとみなされ、登録が拒否されるか件別に failed として返却されます。
- 基本構造の不備 : リクエスト JSON 全体に
data配列が存在しない、または空配列である。 - 必須項目の欠落 :
position/nameが未指定または空文字、isHelpが未指定である。 - 型の不正 :
isHelpがboolean以外である。 - checkItems の不備 :
checkItemsが配列でない、空配列、要素がオブジェクトでない、content/formTypeが不正である。 - 体温項目の不正 :
abnormalValue未指定・数値型でない、またはcheckResultが未指定・数値型でない・有効な体温範囲外である。
📋 バリデーションエラーメッセージ例 ( results[].error )
失敗時は、原因特定を容易にするため JSONパス付き のメッセージが返却されます。
data must not be emptydata[0]: position is requireddata[0]: name is requireddata[0]: isHelp is requireddata[0]: checkItems must be an arraydata[0]: checkItems must not be emptydata[0]: checkItems[0] must be an objectdata[0]: checkItems[0].content must be a stringdata[0]: checkItems[0].formType must be "okng", "temperature", or "checkbox"data[0]: checkItems[0].abnormalValue is required when checkItems[0].formType is "temperature"data[0]: checkItems[0].abnormalValue must be a number when checkItems[0].formType is "temperature"data[0]: checkItems[0].checkResult must not be empty when checkItems[0].formType is "temperature"data[0]: checkItems[0].checkResult must be a number when checkItems[0].formType is "temperature"data[0]: checkItems[0].checkResult must be a valid temperature value (e.g. 36.5)
2.5 POST レスポンス仕様
HTTPステータスは全件成功 200 、全件失敗 400 、混在時 207 Multi-Status です。
レスポンスボディ JSON例 (200)
{
"status": "success",
"shopUID": "xxxxxxxxxxxxxxxxxxxx",
"summary": {
"requested": 1,
"created": 1,
"failed": 0
},
"results": [
{
"index": 0,
"status": "success",
"docId": "hygiene_doc_id_11111"
}
]
}レスポンスボディ JSON例 (207)
{
"status": "partial_success",
"shopUID": "xxxxxxxxxxxxxxxxxxxx",
"summary": {
"requested": 2,
"created": 1,
"failed": 1
},
"results": [
{
"index": 0,
"status": "success",
"docId": "hygiene_doc_id_11111"
},
{
"index": 1,
"status": "failed",
"error": "name is required"
}
]
}3. 📤 GET: 点検結果の取得
取得系APIにおいて、レスポンスに含まれるすべての日付・時刻フィールドは、 YYYY/MM/DD HH:mm の文字列形式に統一されて返却されます。
点検項目は POST と同じ checkItems 配列として返却します。
3.1 単一取得(docId 指定)
- Request:
GET {baseUrl}?app=personalHygiene&docId=hygiene_doc_id_11111 - Response (200 OK):
{
"data": [
{
"id": "hygiene_doc_id_11111",
"userUID": "API_COMMON_USER",
"shopUID": "xxxxxxxxxxxxxxxxxxxx",
"position": "キッチン",
"name": "山田太郎",
"employeeNumber": "API",
"isHelp": false,
"checkItems": [
{
"content": "下痢、嘔吐、発熱などの症状はないか",
"formType": "okng",
"checkResult": "OK"
},
{
"content": "手指や顔面に化膿創はないか",
"formType": "okng",
"checkResult": "OK"
},
{
"content": "体温",
"formType": "temperature",
"abnormalValue": 37.5,
"checkResult": "36.5"
},
{
"content": "手洗いを正しく実施しましたか?",
"formType": "checkbox",
"checkResult": true
}
],
"isNormalForReport": true,
"registeredAt": "2026/07/15 00:00",
"answeredAt": "2026/07/15 09:16",
"confirmedAt": "",
"confirmerName": "",
"approvedAt": "",
"approverName": "",
"createdAt": "2026/07/15 09:16",
"updatedAt": "2026/07/15 09:16"
}
]
}3.2 一覧取得(date 指定)
一覧取得では日付範囲で絞り込むため、docId 未指定時は date パラメータの指定が必須です。
- Request:
GET {baseUrl}?app=personalHygiene&date=2026-07(月次一覧取得)GET {baseUrl}?app=personalHygiene&date=2026-07-15(日次一覧取得)- Response (200 OK):
/* 3.1と同じ内容のため割愛 */💡 サーバー側での自動フィルタリング・ソート規則
- 認証されたAPIキーに紐づく
shopUIDのデータのみに自動制限されます。他店舗のdocIdを指定してリクエストを送信した場合、403 Forbiddenが返却されます。- データは 営業日順(
registeredAtの昇順)、 同じ営業日内においては 氏名順(nameの昇順) でソートして返却されます。
3.3 🗂️ 点検結果オブジェクト詳細定義(GETレスポンス)
単一取得のレスポンス、および一覧取得の data[] 配列に含まれる各点検結果オブジェクトの完全なフィールド仕様です。
| フィールドキー | 論理名 | データ型 | 概要・返却値のルール |
|---|---|---|---|
id | ドキュメントID | string | データベース上で一意に割り振られたドキュメントID。 |
position | 所属 | string | 点検時の所属。 |
name | 氏名 | string | 点検者氏名。 |
userUID | ユーザーID | string | 登録を行ったユーザーのID。API経由の場合は一律で "API_COMMON_USER"。 |
shopUID | 店舗ID | string | APIキーから紐づけられた店舗コード。 |
employeeNumber | 従業員番号 | string | API経由の場合は一律で "API"。 |
isHelp | ヘルプ勤務フラグ | boolean | ヘルプ勤務等のフラグ。 |
checkItems | 点検項目 | array | POST と同じ構造の点検項目配列。 temperature 項目には abnormalValue ( number )も含む。 checkResult は登録済みの値を返す( temperature は文字列、 checkbox は boolean )。 |
isNormalForReport | 日報用正常判定 | boolean | 登録内容をもとに自動判定された正常( true )/ NG・異常あり( false )の状態フラグ。 NG でも登録自体は成功します(2.4 参照)。 |
registeredAt | 登録日時(営業日) | string | バックエンドが店舗の閉店時刻設定等から算出した「営業日」の日付(JST 00:00 固定)。 |
answeredAt | 回答日時 | string | サーバーがリクエストを受理・永続化した日時。 |
createdAt | 作成日時 | string | ドキュメントの初回作成日時。 |
updatedAt | 更新日時 | string | ドキュメントの最終更新日時。 |
confirmedAt | 確認日時 | string | アプリ画面側で確認フローが実行された日時。未確認時は ""。 |
confirmerName | 確認者氏名 | string | 確認を行ったユーザーの氏名。未確認時は ""。 |
approvedAt | 承認日時 | string | アプリ画面側で承認フローが実行された日時。未承認時は ""。 |
approverName | 承認者氏名 | string | 承認を行ったユーザーの氏名。未承認時は ""。 |