✅ 해당 기능이 제공되는 다우오피스 상품 유형
| 무료 | 서비스형 | 엔터프라이즈형 | HR형 | ||
|---|---|---|---|---|---|
| 스탠다드 | 스탠다드 | 프리미엄 | 스탠다드 | 프리미엄 | HR |
| ❌ | ❌ | ❌ | |||
Access Token 발행 API (공통 선행)
모든 OpenAPI 호출 전 반드시 Access Token을 먼저 발급받아야 합니다. 발급받은 Token은 이후 모든 API 호출의 Request Header에 포함됩니다.
📑Access Token 발행 API 상세 가이드
근태 이력 조회 API
임직원들의 출근/퇴근 기록, 총 근무시간, 휴게시간, 근무조 코드 등 근태 이력을 조회하는 API입니다. 조회 기간은 최대 31일까지 지정할 수 있으며, 페이지네이션을 지원합니다.
✔️ Request URL
https://api.daouoffice.com/public/api/attnd-v2/attnd
해당 API는 다우오피스 OpenAPI Request URL(api.daouoffice.com)을 사용합니다.
✔️ HTTP Method
GET Method로 별도 Content-Type 정의 없음 (Query String 기반)
✉️ Request Body
GET이므로 쿼리 파라미터와 헤더로 구성됩니다.
Headers
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| Authorization | String | ✅ | ✅ |
Authorization: Bearer {ACCESS_TOKEN} 반드시 헤더에 포함. “Bearer” 뒤 공백 1칸 필수 |
Query Parameters (고객사 → 시스템 연동)
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| startDate | String | ✅ | ⛔ | 조회 시작일(yyyy-MM-dd) 예) 2024-03-01 |
| endDate | String | ✅ | ⛔ | 조회 종료일(yyyy-MM-dd) 예) 2024-03-07 / 최대 31일 |
| page | Number | ⛔ | ⛔ | 조회 페이지 (기본값 0) |
| pageSize | Number | ⛔ | ⛔ | 페이지 사이즈 (기본값 50) |
✉️ Request 예시
Authorization : Bearer {ACCESS_TOKEN}
📬Response Body
data 객체
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| code | int | ✅ | ⛔ | API 호출 결과 코드 |
| message | String | ✅ | ⛔ | 호출 결과 메시지 |
| data | object | ✅ | ⛔ | 실제 페이징/목록 데이터 |
data 페이징 정보
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| totalCount | Number | ✅ | ⛔ | 모든 데이터 수. 0부터 시작 |
| currentPage | Number | ✅ | ⛔ | 현재 페이지 수. 요청값과 동일 |
| pageSize | Number | ✅ | ⛔ | 1페이지 표현 데이터 수. 기본값 50 |
| totalPages | Number | ✅ | ⛔ | 모든 페이지 수 예) totalPages 20 > 0 ~ 19page 로 조회 |
목록 데이터
| 변수 | 타입 | 필수 | 사전발급 | 제약 | 설명 |
|---|---|---|---|---|---|
| platformUserId | String | ✅ | ⛔ | 다우오피스 사용자 내부 Primary Key | |
| loginId | String | ✅ | ⛔ | 다우오피스 사용자 로그인 ID | |
| name | String | ✅ | ⛔ | 다우오피스 사용자 이름 | |
| accrualDate | String | ✅ | ⛔ | 근태 기준일자 (yyyy-MM-dd) | |
| lastUpdatedAt | String | ✅ | ⛔ | 마지막 업데이트 일시 (yyyy-MM-dd HH:mm:ss) | |
| employeeNumber | String | ✅ | ⛔ | Nullable | 사원번호(EmpNo) 없을시,null |
| dayWorkStatusName | String | ✅ | ⛔ | Nullable |
일 근태상태 이름 종일 근태상태가 아니면 null |
| startWorkTime | String | ✅ | ⛔ | Nullable |
출근 체크 일시 (yyyy-MM-dd HH:mm:ss) 근무그룹 타임존 기준 |
| endWorkTime | String | ✅ | ⛔ | Nullable |
퇴근 체크 일시 (yyyy-MM-dd HH:mm:ss) 근무그룹 타임존 기준 |
| sumWorkingHours | String | ✅ | ⛔ | 총 근무시간(휴게 제외) HH:mm:ss | |
| breakHours | String | ✅ | ⛔ | 총 휴게시간 HH:mm:ss | |
| basicWorkingHours | String | ✅ | ⛔ | 소정근무시간 합계 HH:mm:ss | |
| extendedWorkingHours | String | ✅ | ⛔ |
연장근무시간 합계 HH:mm:ss 선택근무 기간초과 연장은 내 근태현황에서 소정으로 표시될 수 있음 |
|
| nightWorkingHours | String | ✅ | ⛔ | 야간근무시간 합계 HH:mm:ss | |
| holidayWorkingHours | String | ✅ | ⛔ | 휴일근무시간 합계 HH:mm:ss | |
| workGroupCode | String | ✅ | ⛔ | Nullable | 근무그룹 코드. 코드가 없으면 null (근무그룹은 실체는 존재) |
| shiftWorkPolicyCode | String | ✅ | ⛔ | Nullable | 교대조 코드(필수 아님) |
| isWorkingDay | Boolean | ✅ | ⛔ | 근무일 여부 | |
| zoneId | String | ✅ | ⛔ | 근무그룹 타임존 (서머타임 미적용 타임존) |
📬Response 예시
Content-Type: application/json
{
"message" : "OK",
"data" : {
"page" : {
"totalCount" : 1126,
"currentPage" : 0,
"pageSize" : 50,
"totalPages" : 23
},
"elements" : [
{
"platformUserId" : "다우오피스 사용자 고유 식별자 ID 예)135612340000",
"loginId" : "다우오피스 사용자 계정 예)daou_sample",
"name" : "다우오피스 사용자 이름 예)김다우",
"accrualDate" : "2025-09-01",
"employeeNumber" : null,
"lastUpdatedAt" : "2025-09-01 22:01:26",
"dayWorkStatusName" : null,
"startWorkTime" : "2025-09-01 08:00:00",
"endWorkTime" : "2025-09-01 17:40:00",
"sumWorkingHours" : "08:40:00",
"breakHours" : "01:00:00",
"basicWorkingHours" : "08:00:00",
"extendedWorkingHours" : "00:40:00",
"nightWorkingHours" : "00:00:00",
"holidayWorkingHours" : "00:00:00",
"workGroupCode" : null,
"shiftWorkPolicyCode" : null,
"zoneId" : "Asia/Seoul",
"isWorkingDay" : true,
}
]
}
}
🚫 주요 오류 코드 예시
| 코드 | 내용 | 설명(Description) |
|---|---|---|
| 400 | 유효하지 않은 파라미터, 필수 파라미터 누락 | 유효하지 않은 파라미터입니다. 필수 파라미터가 누락되었습니다. |
| 401 | 토큰 없음/유효하지 않음/만료됨 |
유효하지 않은 토큰입니다. 토큰이 존재하지 않습니다. 만료된 토큰입니다. |
| 500 | 일시적 서버 오류 | 일시적인 서비스 오류입니다. |
- Authorization 헤더가 없거나 "Bearer" 문자열이 누락·오표기된 경우, 서버는 401만 반환하고 본문을 포함하지 않을 수 있음.