✅ 해당 기능이 제공되는 다우오피스 상품 유형
| 무료 | 서비스형 | 엔터프라이즈형 | 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 로 조회 |
목록 데이터
| 변수 | 타입 | 필수 | 사전발급 | 제약 | 설명 |
|---|---|---|---|---|---|
| employeeNumber | String | ✅ | ⛔ | 사용자 사원번호(EmpNo) | |
| platformUserId | String | ✅ | ⛔ | Nullable | 다우오피스 사용자 내부 Primary Key |
| loginId | String | ✅ | ⛔ | Nullable | 다우오피스 사용자 로그인 ID |
| name | String | ✅ | ⛔ | Nullable | 다우오피스 사용자 이름 |
| leaveCategoryName | String | ✅ | ⛔ | Nullable | 휴가 이름 |
| leaveCategoryCode | String | ✅ | ⛔ | 휴가 코드 | |
| isPaidLeave | Boolean | ✅ | ⛔ | Nullable | 유급휴가 여부 |
| leaveDate | String | ✅ | ⛔ | Nullable | 휴가 사용날 |
| leaveStartTime | String | ✅ | ⛔ | 휴가 시작시간 ( yyyy-MM-dd HH:mm:ss ) | |
| leaveEndTime | String | ✅ | ⛔ | 휴가 종료시간 ( yyyy-MM-dd HH:mm:ss ) | |
| isAllDay | Boolean | ✅ | ⛔ | Nullable | 종일휴가 여부 |
| workReferenceDate | String | ✅ | ⛔ | Nullable | 근무 귀속일 (yyyy-MM-dd) |
| usedLeaveDuration | String | ✅ | ⛔ | Nullable | 사용한 휴가 (hh:mm:ss) |
| docId | String | ✅ | ⛔ | Nullable | 전자결재 내부 Primary Key |
| docNum | String | ✅ | ⛔ | 전자결재 문버번호 | |
| docDraftedAt | String | ✅ | ⛔ | Nullable | 상신 시점 ( yyyy-MM-dd HH:mm:ss ) |
| docCompletedAt | String | ✅ | ⛔ | 승인 시점 ( yyyy-MM-dd HH:mm:ss ) | |
| docStatusCode | String | ✅ | ⛔ | 전자결재 상태 | |
| zoneId | String | ✅ | ⛔ | 근무그룹 타임존 (서머타임 미적용 타임존) |
📬Response 예시
{
"message" : "OK",
"data" : {
"page" : {
"totalCount" : 86,
"currentPage" : 0,
"pageSize" : 50,
"totalPages" : 2
},
"elements" : [
{
"platformUserId" : "다우오피스 사용자 고유 식별자 ID 예)135612340000",
"loginId" : "다우오피스 사용자 계정 예)daou_sample",
"name" : "다우오피스 사용자 이름 예)김다우",
"employeeNumber" : null,
"leaveCategoryName" : "출산휴가",
"leaveCategoryCode" : "pregnant",
"leaveDate" : "2025-08-01",
"leaveStartTime" : null,
"leaveEndTime" :null,
"workReferenceDate" : "2025-08-01",
"usedLeaveDuration" : "08:00:00",
"docId" : "전자결재 내부 Primary Key 예)0012345678900",
"docNum" : " 전자결재 문서번호 예)Sample부서-2025-00048",
"docDraftedAt" : "2025-07-11 17:12:46",
"docCompletedAt" : "2025-07-14 09:41:52",
"docStatusCode" : "APPROVAL",
"zoneId" : "Asia/Seoul",
"isAllDay" : true,
"isPaidLeave" : true,
}
]
}
}
🚫 주요 오류 코드 예시
| 코드 | 내용 | 설명(Description) |
|---|---|---|
| 400 | 유효하지 않은 파라미터, 필수 파라미터 누락 | 유효하지 않은 파라미터입니다. 필수 파라미터가 누락되었습니다. |
| 401 | 토큰 없음/유효하지 않음/만료됨 |
유효하지 않은 토큰입니다. 토큰이 존재하지 않습니다. 만료된 토큰입니다. |
| 500 | 일시적 서버 오류 | 일시적인 서비스 오류입니다. |
- Authorization 헤더가 없거나 "Bearer" 문자열이 누락·오표기된 경우, 서버는 401만 반환하고 본문을 포함하지 않을 수 있음.