読み込み中
顧客企業の管理者は、設定 › 連携でAPIキーとWebhookを作成できます。参照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回失敗したWebhookは自動で無効化されます。同じイベントが2回配信される場合があるため 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(休暇申請の登録など)は、ご要望があれば優先順位を決めて提供します。