콘텐츠로 이동

에러 코드

API 응답 에러 코드 목록

에러 응답 형식

모든 에러 응답은 다음 형식을 따릅니다:

{
  "error_code": "AUTH_001",
  "message": "인증 토큰이 없습니다.",
  "error": "인증 토큰이 없습니다."
}
필드 설명
error_code 구조화된 에러 코드 (카테고리_번호)
message 사람이 읽을 수 있는 에러 메시지
error message와 동일 (하위 호환성)

HTTP 상태 코드

코드 의미 해당 카테고리
200 성공 -
400 잘못된 요청 VALIDATION, ATTENDANCE(일부), REQUEST(일부), SETTING(일부), TASK(일부)
401 인증 실패 AUTH
402 크레딧 부족 CREDIT
403 권한 없음 PERMISSION, COMPANY(일부), SITE(일부)
404 찾을 수 없음 USER, COMPANY, SITE, MEMBER, EQUIPMENT, FINANCE, SAFETY, TASK, SETTING, FILE, REQUEST
409 충돌/중복 USER(중복), COMPANY(중복), SITE(중복), MEMBER(중복), EQUIPMENT(중복), ATTENDANCE(중복), REQUEST(중복)
500 서버 오류 DATABASE, SERVER

AUTH (인증) - 401

코드 메시지 설명
AUTH_001 인증 토큰이 없습니다. Authorization 헤더에 Bearer 토큰 누락
AUTH_002 토큰 검증 실패: Firebase ID 토큰 유효성 검증 실패
AUTH_003 본인인증이 되지 않았습니다. 본인인증 미완료 사용자
AUTH_004 테스트 토큰 오류: 테스트 모드 토큰 처리 오류

PERMISSION (권한) - 403

코드 메시지 설명
PERMISSION_001 회사 멤버가 아닙니다. 회사 멤버십 없음
PERMISSION_002 현장 멤버가 아닙니다. 현장 멤버십 없음
PERMISSION_003 권한이 없습니다. 필요 role 미충족
PERMISSION_004 해당 현장에 접근 권한이 없습니다. allowed_sites에 해당 현장 없음
PERMISSION_005 페이지 접근 권한이 없습니다. allowed_pages에 해당 페이지 없음
PERMISSION_006 권한이 없습니다. 기타 권한 오류

VALIDATION (입력 검증) - 400

코드 메시지 설명
VALIDATION_001 JSON 데이터가 없습니다. 요청 본문이 JSON이 아님
VALIDATION_002 필수 필드 '{field}'이(가) 없습니다. 필수 필드 누락
VALIDATION_003 필드 '{field}'의 값이 null입니다. 필수 필드가 null
VALIDATION_004 필드 '{field}'은(는) {expected_type}이어야 합니다. 타입 불일치
VALIDATION_005 필드 '{field}'의 형식이 올바르지 않습니다. (타입: {field_type}) REGEX 검증 실패
VALIDATION_006 필드 '{field}'은(는) 최소 {min_length}자 이상이어야 합니다. 최소 길이 미달
VALIDATION_007 필드 '{field}'은(는) 최대 {max_length}자까지 가능합니다. 최대 길이 초과
VALIDATION_008 필드 '{field}'은(는) {enum_values} 중 하나여야 합니다. ENUM 값 불일치
VALIDATION_009 필드 '{field}'은(는) {min_value} 이상이어야 합니다. 최솟값 미달
VALIDATION_010 필드 '{field}'은(는) {max_value} 이하여야 합니다. 최댓값 초과
VALIDATION_011 {detail} 범용 검증 에러
VALIDATION_012 올바르지 않은 상태입니다. 상태값 오류
VALIDATION_013 숫자 필드 형식이 올바르지 않습니다. 숫자 파싱 실패
VALIDATION_014 시간 형식이 올바르지 않습니다. 시간 파싱 실패
VALIDATION_015 {field}은(는) {ENUM} 중 하나여야 합니다. 전역 ENUM 검증 실패 (v1)
VALIDATION_016 {field}의 형식이 올바르지 않습니다. 전역 REGEX 검증 실패 (v1)

USER (사용자) - 404/409

코드 메시지 HTTP
USER_001 사용자 정보를 찾을 수 없습니다. 404
USER_002 존재하지 않는 유저입니다. 404
USER_003 이미 등록된 이메일입니다. 409
USER_004 요청자의 인증이 되지 않았습니다. 403

COMPANY (회사) - 404/409

코드 메시지 HTTP
COMPANY_001 회사를 찾을 수 없습니다. 404
COMPANY_002 이미 기업 소유자입니다. 409
COMPANY_003 이미 등록된 기업입니다. 409
COMPANY_004 이미 등록된 사업자 등록번호입니다. 409
COMPANY_005 관리자가 회사에 속하지 않았습니다. 403

SITE (현장) - 400/404/409

코드 메시지 HTTP
SITE_001 존재하지 않는 현장입니다. 404
SITE_002 이미 등록된 사이트입니다. 409
SITE_003 현장이 활성화 상태가 아닙니다. 400
SITE_004 이미 사용 중인 현장명입니다. 409
SITE_005 소유자가 회사에 속하지 않았습니다. 403
SITE_006 출근 중이므로 현장 변경이 불가합니다. 400
SITE_007 출퇴근 요청이 처리 중이므로 현장 변경이 불가합니다. 400
SITE_008 현장 변경 요청이 처리 중이므로 출근이 불가합니다. 400

MEMBER (멤버) - 400/404/409

코드 메시지 HTTP
MEMBER_001 대상 멤버를 찾을 수 없습니다. 404
MEMBER_002 존재하지 않는 회원입니다. 404
MEMBER_003 이미 근로자 입니다. 409
MEMBER_004 이미 입사 사용자입니다. 409
MEMBER_005 해당 회사의 멤버가 아닙니다. 404
MEMBER_006 해당 현장의 멤버가 아닙니다. 404
MEMBER_007 퇴사 요청자의 멤버 정보를 찾을 수 없습니다. 404
MEMBER_008 변경전 현장에서 입사중인 사용자가 아닙니다. 400

EQUIPMENT (장비) - 400/404/409

코드 메시지 HTTP
EQUIPMENT_001 장비가 존재하지 않습니다. 404
EQUIPMENT_002 이미 배정된 장비입니다. 409
EQUIPMENT_003 이미 해제된 장비입니다. 400
EQUIPMENT_004 장비 정보를 찾을 수 없습니다. 404
EQUIPMENT_005 해당 장비의 소유자가 아닙니다. 403
EQUIPMENT_006 해당 현장의 장비 멤버가 아닙니다. 404
EQUIPMENT_007 장비 소유자 정보를 찾을 수 없습니다. 404
EQUIPMENT_008 이미 배정 요청이 있습니다. 409

ATTENDANCE (출퇴근) - 400/409

코드 메시지 HTTP
ATTENDANCE_001 이미 출근 체크 요청이 있습니다. 409
ATTENDANCE_002 이미 출근 체크가 되어있습니다. 409
ATTENDANCE_003 이미 퇴근 체크가 되어있습니다. 409
ATTENDANCE_004 출근 체크가 되어있지 않습니다. 400
ATTENDANCE_005 존재하지 않는 출근 로그입니다. 404
ATTENDANCE_006 이미 퇴근 처리된 출근 로그입니다. 400
ATTENDANCE_007 퇴근 시간은 출근 시간보다 이전일 수 없습니다. 400
ATTENDANCE_008 출근 시간이 없습니다. 400
ATTENDANCE_009 하루에 출근 요청은 3번까지만 가능합니다. 400
ATTENDANCE_010 이미 출퇴근 체크 요청이 있습니다. 409
ATTENDANCE_011 출석 DB 오류. 400
ATTENDANCE_012 퇴근 요청이 대기 중입니다. 먼저 퇴근 요청을 처리해주세요. 400
ATTENDANCE_013 이미 출근중인 대상은 기록을 추가 할 수 없습니다. 400
ATTENDANCE_014 요청중인 상태입니다. 400

REQUEST (요청) - 400/404/409

코드 메시지 HTTP
REQUEST_001 요청 데이터가 없습니다. 404
REQUEST_002 취소할 수 있는 요청이 아닙니다. 400
REQUEST_003 이미 대기 중인 요청이 있습니다. 409
REQUEST_004 요청 데이터를 찾을 수 없습니다. 404
REQUEST_005 {detail} 400

FINANCE (재무) - 404

코드 메시지 HTTP
FINANCE_001 해당 노동 대장이 없습니다. 404
FINANCE_002 해당 사용자가 없습니다. 404
FINANCE_003 존재하지 않는 공급자입니다. 404
FINANCE_004 존재하지 않는 기타 비용입니다. 404
FINANCE_005 존재하지 않는 기타 비용 내역입니다. 404

CREDIT (크레딧) - 402

코드 메시지 HTTP
CREDIT_001 AI 크레딧이 부족합니다. (잔액: {balance}, 필요: {cost}) 402

SAFETY (안전) - 400/404

코드 메시지 HTTP
SAFETY_001 위험성 평가 문서가 없습니다. 404
SAFETY_002 위험성 평가 항목이 없습니다. 404
SAFETY_003 문서함이 존재하지 않습니다. 404
SAFETY_004 작업 중지권 데이터가 없습니다. 404
SAFETY_005 건의 사항 데이터가 없습니다. 404
SAFETY_006 긴급 알림 데이터가 없습니다. 404
SAFETY_007 {detail} 400

TASK (작업) - 400/404

코드 메시지 HTTP
TASK_001 작업 데이터가 없습니다. 404
TASK_002 존재하지 않는 작업입니다. 404
TASK_003 존재하지 않는 로그입니다. 404
TASK_004 공수는 0 이상이어야 합니다. 400

SETTING (설정) - 400/404

코드 메시지 HTTP
SETTING_001 태그 설정을 찾을 수 없습니다. 404
SETTING_002 존재하지 않는 직종입니다: 400
SETTING_003 존재하지 않는 직급입니다: 400
SETTING_004 존재하지 않는 업체입니다: 400
SETTING_005 {detail} 400

FILE (파일) - 400/404

코드 메시지 HTTP
FILE_001 파일을 찾을 수 없습니다: 404
FILE_002 파일 경로가 올바르지 않습니다: 400
FILE_003 첨부파일 삭제 실패 400

DATABASE (데이터베이스) - 500

코드 메시지 설명
DATABASE_001 DB 쓰기 오류 발생: write 실패
DATABASE_002 DB get 조회 오류 발생: get 쿼리 실패
DATABASE_003 DB 문서 조회 오류 발생: get_by_id 실패
DATABASE_004 DB 업데이트 오류 발생: update 실패
DATABASE_005 DB 삭제 오류 발생: delete 실패
DATABASE_006 SALT가 제공되지 않았습니다. 해시 비교 시 SALT 누락

SERVER (서버) - 500

코드 메시지 설명
SERVER_001 서버 오류 발생: 범용 서버 오류
SERVER_002 json-text 변환 중 오류 발생: JSON 직렬화 실패
SERVER_003 데이터 형식 변환 중 오류 발생: 데이터 coercion 실패
SERVER_004 메일 전송 중 오류 발생: 이메일 발송 실패
SERVER_005 계정 생성 실패: Firebase Auth 계정 생성 실패