従業員管理API(Staff API)の使い方
API
OAuth
従業員管理
スタッフ
Staff
CRUD
Android
iOS
このガイドの目的
レシートローラーの従業員管理API(Staff API)を使って、ビジネスアカウント配下の従業員(スタッフ)を作成・取得・更新・削除する方法をまとめます。シフト管理アプリ、POSスタッフ別の売上アプリ、人事システム連携など、従業員データを扱うときの入口になるガイドです。
前提
- OAuth 2.0 認可コードフローでアクセストークンを取得済みであること
- アプリのスコープに
store.staff.read(読み取り)/store.staff.write(作成・更新・削除)を含めていること - ビジネスアカウントID(UUID)が分かっていること(ビジネスアカウント・店舗・POS端末の一覧を取得する)
- ベースURL:
https://receiptroller.io
エンドポイント一覧
| メソッド | パス | 用途 | 必要スコープ |
|---|---|---|---|
| GET | /api/v1/staff | 従業員一覧/検索 | store.staff.read |
| GET | /api/v1/staff/{staffId} | 1名の詳細 | store.staff.read |
| POST | /api/v1/staff | 新規作成 | store.staff.write |
| PUT | /api/v1/staff/{staffId} | 更新 | store.staff.write |
| DELETE | /api/v1/staff/{staffId} | 削除(ソフトデリート) | store.staff.write |
1. 従業員一覧を取得する
GET /api/v1/staff?organizationId={organizationId}
Authorization: Bearer {access_token}
クエリパラメータ(すべて任意、AND結合)
storeId— その店舗に配属されている従業員のみ(全店舗配属の従業員も含まれます)position— 役職での絞り込み(完全一致)employmentType— FullTime / PartTime / Contract / Otherstatus— Active / Inactive / Pendingsearch— 氏名(カナ含む)・社員番号・参照IDでの部分検索includeDeleted— 削除済みも含むか(既定 false)
レスポンス例
{
"organizationId": "a04507de-043a-4b47-b0a3-6204562f6e20",
"staff": [
{
"id": "stf-001",
"organizationId": "a04507de-...",
"employeeNumber": "E-0001",
"referenceId": "TM_xyz",
"userId": "",
"name": {
"first": "太郎",
"last": "田中",
"firstKana": "タロウ",
"lastKana": "タナカ",
"display": "田中 太郎"
},
"role": {
"position": "店長",
"employmentType": "FullTime",
"isOwner": false
},
"status": "Active",
"contact": { "phone": "090-1234-5678", "email": "tanaka@example.com" },
"hr": { "hireDate": "2024-04-01T00:00:00Z", "dateOfBirth": "1990-05-15T00:00:00Z", "address": "東京都渋谷区..." },
"pay": {
"hourlyRate": 1800,
"isOvertimeExempt": true,
"tipEligible": true,
"jobs": [
{
"jobTitle": "店長",
"payType": "HOURLY",
"hourlyRate": 1800,
"annualRate": 0,
"weeklyHours": 40,
"locationIds": ["store-A"]
},
{
"jobTitle": "レジ",
"payType": "HOURLY",
"hourlyRate": 1200,
"annualRate": 0,
"weeklyHours": 10,
"locationIds": ["store-B"]
}
]
},
"assignments": {
"storeIds": ["store-A", "store-B"],
"allLocations": false
},
"emergency": { "name": "田中花子", "phone": "090-...", "relation": "配偶者" },
"integrations": { "squareTeamMemberId": "TM_xyz", "smaregiStaffId": "" },
"profileImageUrl": "https://...",
"notes": "",
"createdAt": "2024-04-01T09:00:00Z",
"updatedAt": "2026-06-02T10:30:00Z"
}
],
"totalCount": 1
}
2. 1名の詳細を取得する
GET /api/v1/staff/{staffId}?organizationId={organizationId}
Authorization: Bearer {access_token}
従業員が指定ビジネスアカウントに属さない場合は 404。
3. 新規作成する
POST /api/v1/staff?organizationId={organizationId}
Authorization: Bearer {access_token}
Content-Type: application/json
{
"displayName": "佐藤 花子",
"firstName": "花子",
"lastName": "佐藤",
"firstNameKana": "ハナコ",
"lastNameKana": "サトウ",
"employeeNumber": "E-0002",
"position": "レジ担当",
"employmentType": "PartTime",
"status": "Active",
"phone": "080-9876-5432",
"email": "sato@example.com",
"hourlyRate": 1200,
"hireDate": "2026-06-01",
"isOvertimeExempt": false,
"tipEligible": true,
"assignedStoreIds": "store-001,store-002",
"isAssignedToAllLocations": false,
"jobAssignmentsJson": "[{\"jobTitle\":\"レジ\",\"payType\":\"HOURLY\",\"hourlyRate\":1200,\"weeklyHours\":20,\"locationIds\":[\"store-001\"]}]"
}
ポイント
displayNameまたはfirstName+lastNameのいずれかが必須- リクエストボディに
organizationIdを含めても無視されます。トークン/クエリで解決したビジネスアカウントが必ず使われます - 複数業務がある場合は
jobAssignmentsJsonに配列を渡してください。単一業務だけならposition+hourlyRateのみでもOK
4. 更新する
PUT /api/v1/staff/{staffId}?organizationId={organizationId}
Authorization: Bearer {access_token}
Content-Type: application/json
{
"displayName": "佐藤 花子",
"phone": "080-9876-5432",
"hourlyRate": 1300,
"status": "Active"
}
送ったフィールドで上書きします(部分更新ではなく完全置換)。値を保持したいフィールドは既存値を一緒に送り直してください。
5. 削除する(ソフトデリート)
DELETE /api/v1/staff/{staffId}?organizationId={organizationId}
Authorization: Bearer {access_token}
ポイント
- レスポンスは
204 No Content - ソフトデリートのため、過去のシフトログやPOS取引から該当従業員IDの解決は引き続き可能
- 削除済み従業員は一覧・検索結果には含まれません
Square Team Member との対応
本APIのフィールドは Square Team Members API と互換性があります。Square連携が有効なビジネスアカウントでは、integrations.squareTeamMemberId が自動的にセットされ、Squareでの変更がレシートローラー側にも反映されます(Phase 3, t-e9a2f482で実装予定)。
Square由来のフィールド
referenceId⇔ Squarereference_idrole.isOwner⇔ Squareis_ownerstatus⇔ Squarestatus(ACTIVE → "Active" / INACTIVE → "Inactive")assignments.allLocations⇔ Squareassignment_type: ALLpay.jobs⇔ Squarewage_setting.job_assignmentspay.isOvertimeExempt⇔ Squareis_overtime_exemptpay.tipEligible⇔ Squaretip_eligible
レシートローラー独自のフィールド(Squareにはない/同期されない)
- カナ名(firstNameKana, lastNameKana)
- 入社日、生年月日、住所
- 緊急連絡先(emergency.*)
- 雇用形態(FullTime / PartTime / Contract / Other)
- プロフィール写真
- 備考、社員番号、スマレジ連携ID
典型的なフロー(モバイルアプリ)
- OAuthでアクセストークン取得 → スコープに
store.staff.readとstore.staff.write GET /api/v1/me/organizationsでビジネスアカウント選択- 従業員一覧画面で
GET /api/v1/staff?storeId=...をページング表示 - 新規追加で
POST /api/v1/staff - 編集画面で
GET /api/v1/staff/{id}→PUT /api/v1/staff/{id} - 退職処理で
DELETE /api/v1/staff/{id}(またはstatus: "Inactive"でPUT)
エラーレスポンス
| ステータス | 意味 | 対処 |
|---|---|---|
| 401 Unauthorized | アクセストークン無効/期限切れ | リフレッシュトークンで再取得 |
| 403 Forbidden | 必要スコープなし/ビジネスアカウントのメンバーでない | スコープと選択中ビジネスアカウントを確認 |
| 400 Bad Request | 必須フィールド不足(displayName または firstName/lastName) | リクエストボディを見直し |
| 404 Not Found | 従業員IDがそのビジネスアカウントに存在しない | 一覧から再取得 |
関連情報
公開日: 2026-06-03
更新日: 2026-06-03
カテゴリ
タグ
API (17)
OAuth (11)
Android (8)
Webhook (8)
iOS (7)
api (6)
oauth (5)
トラブル (5)
POS連携 (4)
getting-started (4)
関連記事
-
リクエストとレスポンスの基本(JSON)レシートローラーAPIのリクエスト形式、必須ヘッダー、レスポンス構造、ページネーション、フィルタリング、日時形式の規則を解説します。
-
ネイティブモバイルアプリ向けガイド: 複数ビジネスアカウントアクセスと OAuth フローAndroid / iOS のネイティブアプリ向け実装ガイド。アプリ登録時に「認可時に1つのビジネスアカウントへトークンを紐付ける」をオフにすると、user-scoped OAuth トークンが発行されます。/api/v1/me/organizations + ?organizationId= パターンで複数ビジネスアカウントを横断アクセスできます。
-
取引一覧API(Transactions API:POS+OMS統合フィード)の使い方レシートローラーのTransactions APIは、レジ売上(PosTransactions)と販売管理注文(OmsOrders)を1つのフィードに統合した読み取り専用APIです。Android/iOSアプリで「ビジネスアカウント全体の取引」を一覧表示する際の入り口になります。
-
PosTransactionDto 仕様 — 取引データのフィールドリファレンスレシートローラーが扱う取引データの正規モデル PosTransactionDto の全フィールドを解説します。識別子・日時・金額・明細・支払い・スタッフ・ステータス・CRM 連携の各カテゴリーごとに、フィールド名・型・意味・各 POS ベンダーからの埋め方をまとめた、開発者および外部システム連携担当者向けのリファレンスです。スマレジ・Square 双方のマッピング記事からも参照されます。
-
店舗内メディアディスプレイAPI(Display API)の使い方レシートローラーの店舗内 Android ディスプレイ向け API(/api/v1/displays/*)の概要とペアリング・ハートビート・プレイリスト取得の手順をまとめます。Android キオスクや店舗サイネージ端末でメディアループを再生するアプリを実装するための入門ガイドです。