불러오는 중
고객사 관리자는 설정 › 연동에서 API 키와 웹훅을 만들 수 있습니다. 조회 API 는 읽기 전용이며 개인정보(휴대폰·생년월일·급여·계좌·주소)는 제공하지 않습니다. 모든 요청은 HTTPS, 응답은 JSON 입니다.
GET https://www.gijun.co.kr/api/v1/members Authorization: Bearer gj_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
키가 폐기되었거나 서비스 이용 상태가 아니면 401/403 을 돌려줍니다. 속도 제한: IP 당 분당 600회.
| 경로 | 설명 | 쿼리 |
|---|---|---|
GET /api/v1/company | 회사 정보·이용 상태·좌석 | - |
GET /api/v1/members | 임직원 목록(재직·휴직·퇴사 등, 개인정보 제외) | status, department, limit(≤500), offset |
GET /api/v1/leave-requests | 휴가 신청·승인 내역 | from, to, status, member_id, limit, offset |
GET /api/v1/schedules | 캘린더 일정(제목·기간·시간·작성자·참여자, 업무 제외) | from, to, limit, offset |
GET /api/v1/holidays | 한국 공휴일(연도별) | year |
GET /api/v1/leave-balances | 구성원별 연차 잔여 | year, limit, offset |
GET /api/v1/attendance | 출퇴근 기록 | from, to, member_id, limit, offset |
{ "data": [ { "id": "…", "name": "홍길동", "department": "개발팀", "status": "active", "joined_at": "2026-01-02T00:00:00+00:00" } ],
"total": 42, "limit": 100, "offset": 0 }이벤트가 발생하면 등록한 URL 로 JSON 을 POST 합니다. 2xx 응답이 없으면 1분·5분·30분·2시간·12시간 간격으로 재시도하고(총 6회), 연속 20회 실패한 웹훅은 자동 비활성됩니다. 같은 이벤트가 두 번 전달될 수 있으니 delivery_id 로 중복을 걸러 주세요.
| 이벤트 | 발생 시점 | 본문 키 |
|---|---|---|
member.joined | 임직원이 합류(가입 승인·초대 수락·직접 등록) | member |
member.resigned | 퇴사 처리 | member |
member.on_leave | 휴직 처리 | member |
member.returned | 휴직 후 복직 | member |
leave.requested | 휴가 신청 제출 | leave_request |
leave.approved | 휴가 최종 승인 | leave_request |
leave.rejected | 휴가 반려 | leave_request |
leave.cancelled | 휴가 취소 | leave_request |
attendance.clock_in | 출근 기록 | work_session |
attendance.clock_out | 퇴근 기록 | work_session |
POST https://example.com/webhooks/gijun
Content-Type: application/json
X-Gijun-Event: leave.approved
X-Gijun-Delivery: 5f0c…
X-Gijun-Signature: t=1788660000,v1=3f1a… // HMAC-SHA256(secret, `${t}.${rawBody}`)
{ "event": "leave.approved", "company_id": "…", "occurred_at": "2026-09-06T02:00:00Z", "delivery_id": "5f0c…", "attempt": 1,
"leave_request": { "id": "…", "member_id": "…", "member_name": "홍길동", "start_date": "2026-09-10", "end_date": "2026-09-11", "days_used": 2, "status": "approved" } }import { createHmac, timingSafeEqual } from 'node:crypto'
export function verify(rawBody, signatureHeader, secret) {
const t = /t=(\d+)/.exec(signatureHeader)?.[1], v1 = /v1=([a-f0-9]+)/.exec(signatureHeader)?.[1]
if (!t || !v1 || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false // 5분 이상 오래된 요청 거부
const expected = createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex')
return expected.length === v1.length && timingSafeEqual(Buffer.from(expected), Buffer.from(v1))
}문의: support@gijun.co.kr · 쓰기 API(휴가 신청 등록 등)는 요청이 있으면 우선순위를 정해 제공합니다.