인증과 연결
스코프
스코프는 어떤 엔드포인트를 호출할 수 있는지를 정합니다. 어떤 매장을 볼 수 있는지는 연결이 정합니다.
스코프 목록
| 스코프 | 허용 | 엔드포인트 |
|---|---|---|
| stores:read | 매장 목록과 기본 정보 | /stores |
| staff:read | 직원 목록과 고용 정보 | /stores/{id}/staff |
| attendance:read | 출퇴근 기록, 근무 기록, 통계 | /attendance-records · /work-records · /stats/* |
| schedules:read | 근무 스케줄 | /schedules |
| payroll_basis:read | 급여 산정 기초정보 | /stores/{id}/payroll-basis |
i
민감도가 높은 스코프
staff:read 와 payroll_basis:read 는 계약에 명시된 경우에만 부여됩니다.두 단계 검사
모든 요청은 두 가지를 통과해야 합니다.
- 스코프 — 토큰이 그 엔드포인트를 부를 권한을 갖고 있는가
- 연결 — 요청한 매장이 이 회원에게 연결되어 있는가
매장별로 허용 스코프가 다를 수 있습니다. /stores 응답의 granted_scopes 가 각 매장에 무엇이 열려 있는지 알려줍니다.
매장마다 다른 스코프
{
"store_id": "st_7Kq2",
"granted_scopes": ["staff:read", "attendance:read", "schedules:read"]
// payroll_basis:read 가 없다 → 이 매장의 급여 기초정보는 404
}권한 오류
- 토큰에 스코프가 없으면
403 insufficient_scope - 연결되지 않은 매장을 조회하면
404 store_not_found— 존재하지 않는 매장과 구분되지 않습니다.
i
404 로 통일하는 이유
권한이 없을 때 403 을 주면 "그 매장이 기그를 쓴다" 는 사실이 드러납니다. 다른 사업자의
정보이므로 존재 여부 자체를 알려주지 않습니다.