Response

Header

Name Description Example
Content-Type 응답 본문 형식 application/json; charset=utf-8 또는
application/hal+json; charset=utf-8
Link API 스키마 문서 참조
(기계 해석용) https://api.example.com/schema/v1/openapi.json; rel="describedby"; type="application/json"
Retry-After Rate-limit 제한 후 안내 60
Cache-Control 캐싱 전략 no-store, max-age=60

Data

Name Type Description Example
email String 인증 요청 이메일 abc123@gmail.com
expired_at DateTime 코드 만료 시각 (ISO 8601) 2025-05-21T13:47:00Z

StatusCode

Code Meaning Message
101 Switching Protocols 서버가 클라이언트의 프로토콜 변경 요청을 수락했습니다.
200 OK 요청이 성공적으로 처리되었습니다.
201 Created 요청이 성공하여 새로운 리소스가 생성되었습니다.
202 Accepted 요청이 접수되었으나 처리가 완료되지 않았습니다.
204 No Content 요청은 성공했지만 반환할 콘텐츠가 없습니다.
301 Moved Permanently 요청한 리소스가 영구적으로 새 URL로 이동했습니다.
302 Found (Moved Temporarily) 요청한 리소스가 일시적으로 다른 URL에 있습니다.
304 Not Modified 리소스가 변경되지 않았으므로 클라이언트는 캐시된 버전을 사용할 수 있습니다.
400 Bad Request 잘못된 문법으로 인해 서버가 요청을 이해할 수 없습니다.
401 Unauthorized 요청에 인증이 필요합니다.
403 Forbidden 서버가 요청을 이해했지만 승인을 거부했습니다.
404 Not Found 요청한 리소스를 찾을 수 없습니다.
405 Method Not Allowed 요청한 HTTP 메서드가 허용되지 않습니다.
408 Request Timeout 서버가 요청을 기다리는 동안 시간이 초과되었습니다.
409 Conflict 요청이 현재 리소스의 상태와 충돌합니다.
422 Unprocessable Entity 조건 불충족
429 Too Many Requests 사용자가 지정된 시간 동안 너무 많은 요청을 보냈습니다.
500 Internal Server Error 서버에 예기치 않은 오류가 발생하여 요청을 처리할 수 없습니다.
501 Not Implemented 서버가 요청된 기능을 지원하지 않습니다.
502 Bad Gateway 게이트웨이 또는 프록시 서버가 업스트림 서버로부터 잘못된 응답을 받았습니다.
503 Service Unavailable 서버가 일시적으로 요청을 처리할 수 없습니다 (과부하 또는 유지보수).
504 Gateway Timeout 게이트웨이 또는 프록시 서버가 업스트림 서버로부터 응답을 받지 못했습니다.

Sample

200 인증 코드가 이메일로 전송되었습니다

HTTP/2 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store, max-age=60

{
	"message": "인증 코드가 이메일로 전송되었습니다.",
	"data": {
		"email": "abc123@gmail.com",
		"expired_at": "2025-05-21T13:47:00Z"
	}
}

201 회원가입이 완료되었습니다

HTTP/2 201 Created
Content-Type: application/hal+json; charset=utf-8
Location: /accounts/1
Link: <https://api.example.com/schema/v1/openapi.json>; rel="describedby"; type="application/json"

{
  "message": "회원가입이 완료되었습니다.",
  "data": {
    "account_id": 1,
    "email": "abc123@gmail.com",
    "type": "id"
  },
  "_links": {
    "self": {
      "href": "/accounts/1"
    }
  }
}

400 이메일 검증 실패

HTTP/2 400 Bad Request
Content-Type: application/problem+json; charset=utf-8

{
  "type": "<https://api.inssider.com/problems/email-invalid-format>",
  "title": "이메일 검증 실패",
  "status": 400,
  "detail": "유효한 이메일 형식이 아닙니다.",
  "instance": "/api/auth/email/challenge"
}

429 너무 많은 요청

HTTP/2 429 Too Many Requests
Content-Type: application/problem+json; charset=utf-8
Retry-After: 60
Cache-Control: no-store, max-age=60

{
  "type": "<https://api.inssider.com/problems/email-rate-limit>",
  "title": "너무 많은 요청",
  "status": 429,
  "detail": "최근 1분 내 재요청은 허용되지 않습니다. 잠시 뒤에 다시 시도하세요.",
  "instance": "/api/auth/email/challenge"
}

503 인증 이메일 발송 실패

HTTP/2 503 Service Unavailable
Content-Type: application/problem+json; charset=utf-8

{
  "type": "<https://api.inssider.com/problems/email-send-failure>",
  "title": "인증 이메일 발송 실패",
  "status": 422,
  "detail": "메일 서버 오류로 인해 인증 이메일을 전송할 수 없습니다.",
  "instance": "/api/auth/email/challenge"
}