API 목록

회원 가입

요청

Request

POST /sign-up HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 222
Host: docs.api.com

{
  "loginId" : "loginId_1337",
  "email" : "keeper@keeper.or.kr",
  "realName" : "정현모minion",
  "authCode" : "0123456789",
  "birthday" : "1970.01.01",
  "studentId" : "197012345",
  "password" : "password123!@#$"
}

Request Fields

필드명 타입 필수값 양식 설명

loginId

String

true

로그인 아이디는 4~12자 영어, 숫자, '_'만 가능합니다.

email

String

true

이메일은 이메일 형식을 따라야 합니다.

password

String

true

비밀번호는 8~20자여야 하고 영어, 숫자가 포함되어야 합니다.

realName

String

true

실명은 1~20자 한글, 영어만 가능합니다.

authCode

String

true

길이가 10인 인증 코드를 입력해야 합니다.

birthday

String

생일 형식은 yyyy.MM.dd 입니다.

studentId

String

true

학번은 숫자만 가능합니다.

응답

Response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Location: /members/1
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Response Headers

Name Description

Location

생성된 회원의 URI입니다.

이메일 인증

요청

Request

POST /sign-up/email-auth HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 33
Host: docs.api.com

{
  "email" : "email@email.com"
}

Request Fields

필드명 타입 필수값 양식 설명

email

String

true

인증을 보낼 이메일을 보내시면 됩니다.

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 28

{
  "expiredSeconds" : 300
}

Response Fields

Path Type Description

expiredSeconds

Number

인증코드 유효 기간 입니다. (단위: 초)

로그인 아이디 중복 체크

요청

Request

GET /sign-up/exists/login-id?loginId=Sry76bYMw7xv HTTP/1.1
Host: docs.api.com

Request Param

파라미터명 필수값 양식 설명

loginId

true

중복을 확인할 로그인 아이디를 넣어주세요.

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 24

{
  "duplicate" : true
}

Response Fields

Path Type Description

duplicate

Boolean

중복이면 true, 아니면 false

이메일 중복 체크

요청

Request

GET /sign-up/exists/email?email=BRLFG%403yZqI.com HTTP/1.1
Host: docs.api.com

Request Param

파라미터명 필수값 양식 설명

email

true

중복을 확인할 이메일을 넣어주세요.

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 24

{
  "duplicate" : true
}

Response Fields

Path Type Description

duplicate

Boolean

중복이면 true, 아니면 false

학번 중복 체크

요청

Request

GET /sign-up/exists/student-id?studentId=059059388 HTTP/1.1
Host: docs.api.com

Request Param

파라미터명 필수값 양식 설명

studentId

true

중복을 확인할 학번을 넣어주세요.

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 24

{
  "duplicate" : true
}

Response Fields

Path Type Description

duplicate

Boolean

중복이면 true, 아니면 false

로그인

요청

Request

POST /sign-in HTTP/1.1
Content-Type: application/json;charset=UTF-8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36
Content-Length: 57
Host: docs.api.com

{
  "loginId" : "loginId",
  "password" : "password123"
}

Request Fields

필드명 타입 필수값 양식 설명

loginId

String

true

로그인 아이디

password

String

true

비밀번호

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: refreshToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyNCIsInJvbGVzIjoiUk9MRV_tmozsm5AiLCJpYXQiOjE3MTExMTkxMjQsImV4cCI6MTcxMjMyODcyNH0.1DRGnYD_DP3NSis6zC6Al5Q0eHNT-P8Blke8wnNxLZA; Path=/; Max-Age=1209600; Expires=Fri, 5 Apr 2024 14:52:04 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyNCIsInJvbGVzIjoiUk9MRV_tmozsm5AiLCJpYXQiOjE3MTExMTkxMjQsImV4cCI6MTcxMTEyMjcyNH0.zSR5mmh7g2ZVq85h9IBm12uiQLj9mnUzOmEUEw-I-RA; Path=/; Max-Age=1209600; Expires=Fri, 5 Apr 2024 14:52:04 GMT; Secure; HttpOnly; SameSite=None
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 376

{
  "memberId" : 24,
  "loginId" : "loginId",
  "emailAddress" : "1IFgq@TeKLH.com",
  "realName" : "SUPmzNEABt",
  "birthday" : "1970-01-01",
  "studentId" : "633963527",
  "thumbnailPath" : null,
  "generation" : "15.0",
  "point" : 0,
  "level" : 0,
  "totalAttendance" : 0,
  "memberType" : "정회원",
  "memberRank" : "일반회원",
  "memberJobs" : [ "ROLE_회원" ]
}

Response Fields

Path Type Description

memberId

Number

회원 아이디

loginId

String

로그인 아이디

emailAddress

String

이메일

realName

String

실명

birthday

String

생일

studentId

String

학번

thumbnailPath

Null

썸네일 경로

generation

String

기수

point

Number

보유 포인트

level

Number

레벨

totalAttendance

Number

총 출석 횟수

memberType

String

회원 타입

memberRank

String

회원 랭크

memberJobs[]

Array

회원 역할

Response Cookies

Name Description

accessToken

ACCESS TOKEN

refreshToken

REFRESH TOKEN

로그아웃

Cookie를 제거하고 서버의 인증 정보를 제거합니다.

요청

Request

POST /sign-out HTTP/1.1
Host: docs.api.com
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyNSIsInJvbGVzIjoiUk9MRV_tmozsm5AiLCJpYXQiOjE3MTExMTkxMjQsImV4cCI6MTcxMTEyMjcyNH0.-DlvnQKM0wKNa9b2gX3zZRc2Xk0e2_zvHgeLRuJHnuE
Cookie: refreshToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyNSIsInJvbGVzIjoiUk9MRV_tmozsm5AiLCJpYXQiOjE3MTExMTkxMjQsImV4cCI6MTcxMjMyODcyNH0.NdWV8gGMpz8sO2LnhrIlbrQMtd7va2XrwbGDdYw_810
Content-Type: application/x-www-form-urlencoded

Request Cookies

Name Description

accessToken

ACCESS TOKEN

refreshToken

REFRESH TOKEN

응답

Response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

로그인 아이디 찾기

요청

Request

POST /sign-in/find-login-id HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 33
Host: docs.api.com

{
  "email" : "OQfAN@3VytX.com"
}

Request Fields

필드명 타입 필수값 양식 설명

email

String

true

이메일

응답

Response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

비밀번호 변경용 인증 코드 발송

이 API는 임시 인증 코드를 메일로 발송하기만 하고 비밀번호를 바꾸진 않습니다.

요청

Request

POST /sign-in/send-password-change-auth-code HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 63
Host: docs.api.com

{
  "email" : "DIfds@vqLjI.com",
  "loginId" : "WhUe4jMrXn9r"
}

Request Fields

필드명 타입 필수값 양식 설명

email

String

true

이메일

loginId

String

true

로그인 아이디

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 28

{
  "expiredSeconds" : 300
}

Response Fields

Path Type Description

expiredSeconds

Number

인증 코드 만료 시간(초)

인증 코드 확인

요청

Request

GET /sign-in/check-auth-code?email=Aybtg%40MTbME.com&loginId=1h1vdlmhPfGK&authCode=iNeYjboA HTTP/1.1
Host: docs.api.com

Request Params

파라미터명 필수값 양식 설명

email

true

이메일

loginId

true

로그인 아이디

authCode

true

인증 코드

응답

Response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 19

{
  "auth" : true
}

Response Fields

Path Type Description

auth

Boolean

authCode가 일치하면 true, 아니면 false

비밀번호 변경

요청

Request

PATCH /sign-in/change-password-for-missing HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 123
Host: docs.api.com

{
  "loginId" : "r7EAbynRxczo",
  "email" : "lJZtK@wFWX0.com",
  "authCode" : "P6nqn0za",
  "password" : "newPassword123"
}

Request Fields

필드명 타입 필수값 양식 설명

email

String

true

이메일

loginId

String

true

로그인 아이디

authCode

String

true

인증 코드

password

String

true

새로운 비밀번호

응답

Response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: accessToken=; Path=/; Max-Age=0; Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=None
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY