> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 勤怠グループの作成

> 勤怠グループを作成するサーバー API です。固定シフト制・シフト制・フレックスタイムの種類やシフト、勤怠対象者、打刻場所、打刻ルールをまとめて設定できます。

この API を呼び出して、勤怠グループを作成します。

## リクエスト

| **基本情報** | |
| - | - |
| HTTP URL | [https://api.dingtalk.io/topapi/attendance/group/add](https://api.dingtalk.io/topapi/attendance/group/add) |
| HTTP メソッド | POST |
| 対応アプリタイプ | appType-社内アプリ |
| 必要な権限 | permission-qyapi\_attendance\_group\_manage-勤怠グループ管理権限 |

### クエリパラメータ

| 名前 | タイプ | 必須 | 例 | 説明 |
| - | - | - | - | - |
| access\_token | String | はい | 4c9d5xxxx | この API の呼び出しに使用するアプリ認証情報です。[社内アプリの access\_token を取得](https://help.dingtalk.io/ja/open/development/obtain-orgapp-token) API を呼び出して取得します。 |

### リクエストボディ

| 名前 | タイプ | 必須 | 例 | 説明 |
| - | - | - | - | - |
| op\_user\_id | String | はい | 123dfd | 操作者のユーザー ID です。 |
| top\_group | TopGroupVo | はい | | 勤怠グループの情報です。 |
| owner | String | いいえ | 123dfdf | 勤怠グループの所有者です。 |
| enable\_emp\_select\_class | Boolean | いいえ | true | シフト未設定時に、社員がシフトを選択して打刻することを許可するかどうかを指定します。   - **true**：許可 - **false**：許可しない |
| corp\_id | String | いいえ | dingdfe | 組織の CorpId です。[開発者コンソール](https://open-dev.dingtalk.io/#/index)のホームページで取得します。 |
| skip\_holidays | Boolean | いいえ | true | 祝日をスキップするかどうかを指定します。   - **true**（デフォルト）：スキップ - **false**：スキップしない |
| special\_days | String | いいえ | `{"onDuty":{1400000:123,1400001:123},"offDuty":[1400000,1400001]}` | 特別日の設定です。 |
| enable\_outside\_camera\_check | Boolean | いいえ | true | 外勤打刻時に写真の撮影を必須にするかどうかを指定します。   - **true**：オン - **false**（デフォルト）：オフ |
| positions | `List<TopPositionVo>` | いいえ | | 勤怠場所の設定です。 |
| address | String | いいえ | 生物科技産業園区 京二路21号 | 勤怠場所の住所です。 |
| corp\_id | String | いいえ | 123dfd | 組織の CorpId です。[開発者コンソール](https://open-dev.dingtalk.io/#/index)のホームページで取得します。 |
| latitude | String | いいえ | 36.687495 | 緯度です。 |
| longitude | String | いいえ | 101.750329 | 経度です。 |
| accuracy | String | いいえ | 0 | 精度です。  **注意**  このフィールドには実際の効果はなく、精度には影響しません。2022年3月7日に廃止されました。 |
| title | String | いいえ | 青蔵高原自然博物館 | 勤怠場所のタイトルです。 |
| modify\_member | Boolean | いいえ | true | 勤怠グループのメンバー情報を変更するかどうかを指定します。   - **true**：変更する - **false**：変更しない |
| type | String | はい | TURN | 勤怠グループのタイプです。   - **FIXED**：固定シフト制の勤怠グループ - **TURN**：シフト制の勤怠グループ - **NONE**：フレックスタイムの勤怠グループ |
| enable\_camera\_check | Boolean | いいえ | true | 写真打刻を有効にするかどうかを指定します。   - **true**：オン - **false**（デフォルト）：オフ |
| shift\_vo\_list | `List<TopShiftVo>` | いいえ | | シフトの設定です。 |
| id | Number | いいえ | 123 | シフト ID です。[シフト概要の取得](https://help.dingtalk.io/ja/open/development/enterprise-shift-query-in-batches.md) API を呼び出して id の値を取得します。 |
| enable\_outside\_check | Boolean | いいえ | true | 外勤打刻を許可するかどうかを指定します。   - **true**（デフォルト）：許可 - **false**：許可しない |
| members | `List<TopMemberVo>` | はい | | 勤怠グループのメンバー設定です。 |
| role | String | はい | Attendance | ロールです。固定値：Attendance。 |
| corp\_id | String | いいえ | 123dfd | 組織の CorpId です。[開発者コンソール](https://open-dev.dingtalk.io/#/index)のホームページで取得します。 |
| type | String | はい | StaffMember | タイプです。   - StaffMember：ユーザータイプ - DeptMember：部門タイプ |
| user\_id | String | はい | 1212jfkd | ID です。   - ユーザー：userId - 部門：deptId |
| name | String | はい | 日勤勤怠 | 勤怠グループの名前です。 |
| id | Number | いいえ | 123 | 勤怠グループ ID です。 |
| enable\_next\_day | Boolean | いいえ | false | 設定を翌日から有効にするかどうかを指定します。   - **true**：はい - **false**：いいえ |
| manager\_list | String\[] | いいえ | \["userId1","userId2"] | 勤怠グループのサブ管理者のユーザー ID リストです。 |
| workday\_class\_list | Number\[] | いいえ | \[0,12,12,12,12,12,0] | 1 週間のシフトリストです。  **注意**   - 固定シフト制の場合は必須です。0 は休日を表します。 - 配列の値は、左から順に日曜日から土曜日までの各曜日のシフト設定を表します。 |
| default\_class\_id | Number | いいえ | 1234 | デフォルトのシフト ID です。  **注意**  固定シフト制の場合は必須です。[シフト概要の取得](https://help.dingtalk.io/ja/open/development/enterprise-shift-query-in-batches.md) API を呼び出して id の値を取得します。 |
| offset | Number | いいえ | 500 | 勤怠範囲です。 |
| resource\_permission\_map | TopGroupManageRolePermissionVo | いいえ | | サブ管理者の権限スコープです。   - **w**：管理 - **r**：閲覧のみ |
| schedule | String | いいえ | w | 社員のシフト設定です。 |
| group\_member | String | いいえ | w | 勤怠対象者を設定します。 |
| group\_type | String | いいえ | r | 勤怠タイプを設定します。 |
| check\_time | String | いいえ | w | 勤怠時間を設定します。 |
| check\_position\_type | String | いいえ | r | 打刻方法を設定します。 |
| over\_time\_rule | String | いいえ | r | 残業ルールを設定します。 |
| camera\_check | String | いいえ | w | 写真打刻のルールを設定します。 |
| out\_side\_check | String | いいえ | w | 外勤打刻を設定します。 |
| wifis | `List<TopWifiVo>` | いいえ | | Wi-Fi 打刻の設定です。 |
| mac\_addr | String | いいえ | C0:E0:D0:E0:C0:0F | MAC アドレスです。 |
| ssid | String | いいえ | OFFICE-WiFi | Wi-Fi ネットワークの SSID です。 |
| corp\_id | String | いいえ | 123dfd | 組織の CorpId です。[開発者コンソール](https://open-dev.dingtalk.io/#/index)のホームページで取得します。 |
| disable\_check\_without\_schedule | Boolean | いいえ | false | シフト未設定時に、社員の打刻を禁止するかどうかを指定します。   - **true**：禁止 - **false**：禁止しない |
| freecheck\_work\_days | Number\[] | いいえ | \[1,2,3,4,5,6,0] | フレックスタイムの勤怠グループの勤務日です。  **注意**     - 0 は休日を表します。 - 配列の値は、左から順に日曜日から土曜日までの各曜日のシフト設定を表します。 |
| freecheck\_day\_start\_min\_offset | Number | いいえ | 240 | フレックスタイムの勤怠グループにおける勤怠開始時刻と、当日 00:00 との差（分）です。  例えば、540 は 9:00 を表します。 |
| disable\_check\_when\_rest | Boolean | いいえ | false | 休日の打刻に承認を必要とするかどうかを指定します。   - **true**：必要 - **false**：不要 |

### リクエスト例

```curl theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST "https://api.dingtalk.io/topapi/attendance/group/add" \
-H 'Content-Type:application/x-www-form-urlencoded;charset=utf-8' \
-d 'access_token=e02c4xxxx5043' \
-d 'op_user_id=123dfd' \
-d 'top_group=null'
```

Java

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/attendance/group/add");
OapiAttendanceGroupAddRequest req = new OapiAttendanceGroupAddRequest();
req.setOpUserId("dinge8xxxx");
TopGroupVo topGroupVo = new TopGroupVo();
topGroupVo.setOwner("user1");
topGroupVo.setEnableEmpSelectClass(true);
topGroupVo.setCorpId("dinge8xxxx");
topGroupVo.setSkipHolidays(true);
topGroupVo.setSpecialDays("{\"onDuty\":{1400000:123,1400001:123},\"offDuty\":[1400000,1400001]}");
topGroupVo.setEnableOutsideCameraCheck(true);
List<TopPositionVo> positionVos = new ArrayList<TopPositionVo>();
TopPositionVo topPositionVo = new TopPositionVo();
positionVos.add(topPositionVo);
topPositionVo.setAddress("生物科技産業園区 京二路21号");
topPositionVo.setCorpId("dinge8xxxx");
topPositionVo.setLatitude("36.687495");
topPositionVo.setAccuracy("0");
topPositionVo.setTitle("青蔵高原自然博物館");
topPositionVo.setLongitude("101.750329");
topGroupVo.setPositions(positionVos);
topGroupVo.setModifyMember(true);
topGroupVo.setType("TURN");
topGroupVo.setEnableCameraCheck(true);
List<TopShiftVo> topShiftVos = new ArrayList<TopShiftVo>();
TopShiftVo topShiftVo = new TopShiftVo();
topShiftVos.add(topShiftVo);
topShiftVo.setId(123L);
topGroupVo.setShiftVoList(topShiftVos);
topGroupVo.setEnableOutsideCheck(true);
List<TopMemberVo> memberVos = new ArrayList<TopMemberVo>();
TopMemberVo topMemberVo = new TopMemberVo();
memberVos.add(topMemberVo);
topMemberVo.setRole("Attendance");
topMemberVo.setCorpId("dinge8xxxx");
topMemberVo.setType("StaffMember");
topMemberVo.setUserId("user1");
topGroupVo.setMembers(memberVos);
topGroupVo.setName("日勤勤怠");
topGroupVo.setEnableNextDay(false);
topGroupVo.setManagerList(Arrays.asList("userId1","userId2"));
topGroupVo.setDefaultClassId(1234L);
topGroupVo.setOffset(500L);
TopGroupManageRolePermissionVo groupManageRolePermissionVo = new TopGroupManageRolePermissionVo();
groupManageRolePermissionVo.setSchedule("w");
groupManageRolePermissionVo.setGroupMember("w");
groupManageRolePermissionVo.setGroupType("r");
groupManageRolePermissionVo.setCheckTime("w");
groupManageRolePermissionVo.setCheckPositionType("r");
groupManageRolePermissionVo.setOverTimeRule("r");
groupManageRolePermissionVo.setCameraCheck("w");
groupManageRolePermissionVo.setOutSideCheck("w");
topGroupVo.setResourcePermissionMap(groupManageRolePermissionVo);
List<TopWifiVo> topWifiVos = new ArrayList<TopWifiVo>();
TopWifiVo topWifiVo = new TopWifiVo();
topWifiVos.add(topWifiVo);
topWifiVo.setMacAddr("C0:E0:D0:E0:C0:0F");
topWifiVo.setSsid("OFFICE-WiFi");
topWifiVo.setCorpId("dinge8xxxx");
topGroupVo.setWifis(topWifiVos);
topGroupVo.setDisableCheckWithoutSchedule(false);
topGroupVo.setFreecheckDayStartMinOffset(240L);
topGroupVo.setDisableCheckWhenRest(true);
req.setTopGroup(topGroupVo);
OapiAttendanceGroupAddResponse rsp = client.execute(req, access_token);
System.out.println(rsp.getBody());
```

Python

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
import dingtalk.api

req=dingtalk.api.OapiAttendanceGroupAddRequest("https://api.dingtalk.io/topapi/attendance/group/add")

req.op_user_id="123dfd"
req.top_group=""
try:
  resp= req.getResponse(access_token)
  print(resp)
except Exception,e:
  print(e)
```

PHP

```php theme={"theme":{"light":"github-light","dark":"github-dark"}}
include "TopSdk.php";
date_default_timezone_set('Asia/Shanghai');

$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_POST, DingTalkConstant::$FORMAT_JSON);
$req = new OapiAttendanceGroupAddRequest;
$req->setOpUserId("123dfd");

$top_group = new TopGroupVo;
$top_group->name = "日勤勤怠";
$top_group->type = "TURN"; 
$top_group->enable_camera_check = "true";
$top_group->enable_outside_camera_check = "true";
$top_group->enable_outside_check = "true";
$top_group->enable_next_day = "false";
$top_group->modify_member = "true";
$top_group->offset = "500";
$top_group->default_class_id = "1234";
$top_group->manager_list = "[\"userId1\",\"userId2\"]";
$top_group->workday_class_list = "[12,12,12,12,12,0,0]";
$top_group->disable_check_without_schedule = "false";
$top_group->freecheck_work_days = "[1,2,3,4,5,6,0]";
$top_group->freecheck_day_start_min_offset = "240";
$top_group->disable_check_when_rest = "false";
$positions = new TopPositionVo;
$positions->title = "青蔵高原自然博物館";
$positions->address = "生物科技産業園区 京二路21号";
$positions->latitude = "36.687495";
$positions->longitude = "101.750329";
$positions->accuracy = "0";
$top_group->positions = array($positions);
$members = new TopMemberVo;
$members->user_id = "1212jfkd";
$members->type = "StaffMember";
$members->role = "Attendance";
$top_group->members = array($members);
$wifis = new TopWifiVo;
$wifis->ssid = "OFFICE-WiFi";
$wifis->mac_addr = "C0:E0:D0:E0:C0:0F";
$top_group->wifis = array($wifis);
$shift_vo_list = new TopShiftVo;
$shift_vo_list->id = "123";
$top_group->shift_vo_list = array($shift_vo_list);
$resource_permission_map = new TopGroupManageRolePermissionVo;
$resource_permission_map->schedule = "w";
$resource_permission_map->group_member = "w";
$resource_permission_map->group_type = "r";
$resource_permission_map->check_time = "w";
$resource_permission_map->check_position_type = "r";
$resource_permission_map->over_time_rule = "r";
$resource_permission_map->camera_check = "w";
$resource_permission_map->out_side_check = "w";
$top_group->resource_permission_map = $resource_permission_map;
$req->setTopGroup($top_group);
$resp = $c->execute($req, $access_token, "https://api.dingtalk.io/topapi/attendance/group/add");
```

C#

```csharp theme={"theme":{"light":"github-light","dark":"github-dark"}}
IDingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/attendance/group/add");
OapiAttendanceGroupAddRequest req = new OapiAttendanceGroupAddRequest();
req.OpUserId = "123dfd";
OapiAttendanceGroupAddRequest.TopGroupVoDomain obj1 = new OapiAttendanceGroupAddRequest.TopGroupVoDomain();
obj1.Owner = "123dfdf";
obj1.EnableEmpSelectClass = true;
obj1.CorpId = "dingdfe";
obj1.SkipHolidays = true;
obj1.SpecialDays = "{\"onDuty\":{1400000:123,1400001:123},\"offDuty\":[1400000,1400001]}";
obj1.EnableOutsideCameraCheck = true;
List<OapiAttendanceGroupAddRequest.TopPositionVoDomain> list3 = new List<OapiAttendanceGroupAddRequest.TopPositionVoDomain>();
OapiAttendanceGroupAddRequest.TopPositionVoDomain obj4 = new OapiAttendanceGroupAddRequest.TopPositionVoDomain();
list3.Add(obj4);
obj4.Address = "生物科技産業園区 京二路21号";
obj4.CorpId = "123dfd";
obj4.Latitude = "36.687495";
obj4.Accuracy = "0";
obj4.Title = "青蔵高原自然博物館";
obj4.Longitude = "101.750329";
obj1.Positions = list3;
obj1.ModifyMember = true;
obj1.Type = "TURN";
obj1.EnableCameraCheck = true;
List<OapiAttendanceGroupAddRequest.TopShiftVoDomain> list6 = new List<OapiAttendanceGroupAddRequest.TopShiftVoDomain>();
OapiAttendanceGroupAddRequest.TopShiftVoDomain obj7 = new OapiAttendanceGroupAddRequest.TopShiftVoDomain();
list6.Add(obj7);
obj7.Id = 123L;
obj1.ShiftVoList = list6;
obj1.EnableOutsideCheck = true;
List<OapiAttendanceGroupAddRequest.TopMemberVoDomain> list9 = new List<OapiAttendanceGroupAddRequest.TopMemberVoDomain>();
OapiAttendanceGroupAddRequest.TopMemberVoDomain obj10 = new OapiAttendanceGroupAddRequest.TopMemberVoDomain();
list9.Add(obj10);
obj10.Role = "Attendance";
obj10.CorpId = "123dfd";
obj10.Type = "StaffMember";
obj10.UserId = "1212jfkd";
obj1.Members = list9;
obj1.Name = "日勤勤怠";
obj1.EnableNextDay = false;
obj1.ManagerList = "\"userId1\",\"userId2\"";
obj1.DefaultClassId = 1234L;
obj1.Offset = 500L;
OapiAttendanceGroupAddRequest.TopGroupManageRolePermissionVoDomain obj11 = new OapiAttendanceGroupAddRequest.TopGroupManageRolePermissionVoDomain();
obj11.Schedule = "w";
obj11.GroupMember = "w";
obj11.GroupType = "r";
obj11.CheckTime = "w";
obj11.CheckPositionType = "r";
obj11.OverTimeRule = "r";
obj11.CameraCheck = "w";
obj11.OutSideCheck = "w";
obj1.ResourcePermissionMap = obj11;
List<OapiAttendanceGroupAddRequest.TopWifiVoDomain> list13 = new List<OapiAttendanceGroupAddRequest.TopWifiVoDomain>();
OapiAttendanceGroupAddRequest.TopWifiVoDomain obj14 = new OapiAttendanceGroupAddRequest.TopWifiVoDomain();
list13.Add(obj14);
obj14.MacAddr = "C0:E0:D0:E0:C0:0F";
obj14.Ssid = "OFFICE-WiFi";
obj14.CorpId = "123dfd";
obj1.Wifis = list13;
obj1.DisableCheckWithoutSchedule = false;
obj1.FreecheckDayStartMinOffset = 240L;
obj1.DisableCheckWhenRest = false;
req.TopGroup_ = obj1;
OapiAttendanceGroupAddResponse rsp = client.Execute(req, access_token);
Console.WriteLine(rsp.Body);
```

## レスポンス

### レスポンスボディ

| 名前 | タイプ | 例 | 説明 |
| - | - | - | - |
| result | TopGroupVo | | 呼び出し結果です。 |
| name | String | 日勤勤怠 | 勤怠グループの名前です。 |
| id | Number | 712070073 | 勤怠グループ ID です。 |
| success | Boolean | true | 呼び出しに成功したかどうかを示します。   - **true**：成功 - **false**：失敗 |
| errcode | Number | 0 | 戻りコードです。 |
| errmsg | String | システムエラー | 戻りコードの説明です。 |
| request\_id | String | 6pcx0i2ujtt9 | リクエスト ID です。 |

### レスポンスボディの例

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "result":{
    "name":"日勤勤怠",
    "id":712070073
  },
  "errcode":0,
  "success":true,
  "errmsg":"ok",
  "request_id":"6pcx0i2ujtt9"
}
```

### エラーコード

呼び出しでエラーが返された場合は、エラーメッセージをもとに[グローバルエラーコード](https://help.dingtalk.io/ja/open/development/server-api-error-codes-1.md)ドキュメントで解決方法を確認してください。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.