Home
  • 한국어
  • ENGLISH
Home
  • 한국어
  • ENGLISH
  • API 가이드
  • Withnox & Addnox

    • 소개
    • 인증
    • 유저
    • 기기
    • 베이스 스테이션
    • 분석 & 기록
    • 설문
    • OTA
  • Elexir 2.0

    • 소개
  • Elexir Legacy

    • 소개
    • 인증
    • 유저
    • 기기
  • LUX

    • 소개
    • 인증
    • 기기
    • 유저
  • ADT Device

    • 소개
    • 기기

인증

해당 페이지는 Withnox & Addnox 프로젝트의 인증과 관련된 API를 설명해놓은 페이지입니다.

소개

Withnox & Addnox 인증 API는 회원가입, 소셜 회원가입, 로그인, SMS 번호 인증과 같은 인증 관련 작업을 수행하는 기능입니다.

API 흐름에 대한 시각적인 흐름도가 필요하다면 Figma API Flow 페이지를 참고해주세요.

인증

일부 인증 API는 인증 토큰을 필요로 합니다. 인증을 하기위해서 Authorization header 에 인증 토큰을 넣어서 API를 호출해주세요.

Authorization: Bearer your_token_here

your_token_here 에 인증 과정에서 획득한 access_token으로 대체해주세요.

엔드포인트

로그인

해당 이메일과 비밀번호로 로그인하는 API입니다.

POST /api/v1/addnox/auth/email/signin

Body Parameters

NameTypedescription
username requiredstring이메일 값
password requiredstring비밀번호 값

요청 예시

POST /api/v1/addnox/auth/email/signin
Content-Type: application/x-www-form-urlencoded
{
  "username ": "string",
  "password ": "string"
}

응답 예시

200 OK

로그인이 성공하면 사용자에게 access_token과 refresh_token을 발급합니다. API 호출시에는 access_token을 사용하세요. refresh_token은 access_token 만료시 재발급할때 사용하세요.

{
  "access_token": "string",
  "expires_in": 0,
  "refresh_token": "string",
  "refresh_expires_in": 0,
  "id": 0,
  "token_type": "string"
}
ERROR

오류 응답

HTTP 상태 코드별로 API 상태 코드와 메시지를 제공합니다. 아래의 표를 참고하세요.

HTTP status codedetaildescription
400Password is invalid잘못된 비밀번호입니다.
401Sign-up not completed회원가입이 완료되지 않았습니다.
403SMS verification requiredSMS 인증이 완료되지 않았습니다.
404User not found해당 유저를 찾을 수 없습니다.
410User is Deleted회원탈퇴한 계정입니다.
423Access denied. Account blocked차단된 계정입니다.
{
    "detail": "Password is invalid"
}

토큰 재발급

refresh_token을 이용해 token을 재발급 받는 API입니다. refresh_token의 유저 정보가 일치하지만 DB에 저장된 refresh_token과 일치하지 않을 경우 중복 로그인으로 판단하여 DB의 refresh_token을 삭제합니다. 프론트단에서는 401 Refresh token is not valid 오류에서 로그아웃으로 분기해야 합니다.

POST /api/v1/addnox/auth/refresh-token

Body Parameters

NameTypedescription
refresh_token requiredstring기존 Refresh Token

요청 예시

POST /api/v1/addnox/auth/refresh-token
Content-Type: application/json
{
  "refresh_token": "string"
}

응답 예시

200 OK
{
    "access_token": "access_token",
    "expires_in": 900, // 15 분 
    "refresh_token": "new_refresh_token",
    "refresh_expires_in": 1209600,  // 2 주
    "id": "uuid",
    "token_type": "bearer",
}
ERROR

오류 응답

HTTP 상태 코드별로 API 상태 코드와 메시지를 제공합니다. 아래의 표를 참고하세요.

HTTP status codedetaildescription
401Token is expiredrefresh_token이 만료됨, 로그아웃시켜야함.
401Could not validate credentials잘못된 refresh_token, 로그아웃시켜야함.
401Refresh token is not valid중복 로그인으로 판단, 로그아웃시켜야함.
{
    "detail": "Refresh token is not valid"
}

SMS 인증 메세지 전송

해당 전화번호로 인증 문자를 발송하는 API입니다. 회원가입 뿐만 아니라 잃어버린 계정을 찾는데도 사용됩니다.

POST /api/v1/addnox/auth/send-sms-auth

Body Parameters

NameTypedescription
phone requiredstring전화번호 값이 E.164 format 이어야 합니다.
- ex: +1012345678

요청 예시

POST /api/v1/addnox/auth/send-sms-auth
Content-Type: application/json
{
  "phone": "+1012345678"
}

응답 예시

200 OK

문자 발송이 성공하면 true가 반환됩니다.

  true
ERROR

오류 응답

HTTP 상태 코드별로 API 상태 코드와 메시지를 제공합니다. 아래의 표를 참고하세요.

HTTP status codedetaildescription
400Phone number is invalid잘못된 전화번호 형식입니다.
409Phone number is already registered이미 회원가입이 완료된 계정의 전화번호입니다.
409Failed to send SMSTwillo 서비스를 통한 문자 전송 실패.
{
  "detail": "Phone number is invalid"
}

SMS 인증 번호 검증

SMS 인증 메세지로 전송된 6자리 번호를 검증하는 API 입니다.

POST /api/v1/addnox/auth/phone-number-validation

Body Parameters

NameTypedescription
phone requiredstring전화번호 값이 E.164 format 이어야 합니다.
- ex: +1012345678
validnum requiredstringSMS 인증 메세지로 전송된 6자리 번호입니다.

요청 예시

POST /api/v1/addnox/auth/phone-number-validation
Content-Type: application/json
{
  "phone": "+1012345678",
  "validnum": "123456"
}

응답 예시

200 OK

SMS 인증 번호 검증이 성공하면 valid_token 을 return 해줍니다. signup API 호출시 해당 토큰을 Authorization Header에 담아서 보내주세요.

{
  "valid_token": "string"
}
ERROR

오류 응답

HTTP 상태 코드별로 API 상태 코드와 메시지를 제공합니다. 아래의 표를 참고하세요.

HTTP status codedetaildescription
400Validation code is expired인증번호가 만료되었습니다.
400Validation code is invalid잘못된 인증번호입니다.
403User previously deleted이미 탈퇴 처리된 사용자입니다.
409Phone number is already registered이미 회원가입한 번호입니다.
{
  "detail": "Validation code is expired"
}

이메일 회원가입

입력받은 정보를 통해 회원가입을 완료하는 API입니다. SMS 인증 검증을 통해 받은 valid_token을 확인해주세요.

POST /api/v1/addnox/auth/email/signup

Headers

NameTypedescription
Authorization requiredBearervalid_token

Body Parameters

NameTypedescription
email requiredstring이메일 값입니다.
password requiredstring비밀번호 입니다.
first_name requiredstring회원가입할 유저의 이름입니다.
last_name requiredstring회원가입할 유저의 성입니다.
birthdate requiredstring회원가입할 유저의 생년월일입니다(yyyymmdd).
- 예시 : 19970101
gender requiredstring회원가입할 유저의 성별입니다
- M : 남성
- F : 여성
- N : 논바이너리
- P : 알려주고 싶지 않음
phone requiredstring전화번호 값이 E.164 format 이어야 합니다.
- ex: +14155552671
register_type requiredstring회원가입 형식입니다.
- E : 이메일
- S : 소셜
is_push_agree requiredboolean푸시 알림 동의 여부입니다.
is_marketing_agree requiredboolean마케팅 수신 동의 여부입니다.
national_code requiredstring국가 코드입니다.
- WITHNOX : KR
- ADDNOX : ISO code (2)

요청 예시

POST /api/v1/addnox/auth/email/signup
Authorization: Bearer valid_token_here
Content-Type: application/json
{
  "email": "string",
  "password": "string",
  "first_name": "string",
  "last_name": "string",
  "birthdate": "string",
  "gender": "string",
  "phone": "string",
  "register_type": "string",
  "is_push_agree": true,
  "is_marketing_agree": true,
  "national_code": "string"
}

응답 예시

200 OK

회원가입이 성공하면 로그인이 성공한것 처럼 토큰을 전달해줍니다.

{
  "access_token": "string",
  "expires_in": 0,
  "refresh_token": "string",
  "refresh_expires_in": 0,
  "id": 0,
  "token_type": "string"
}
ERROR

오류 응답

HTTP 상태 코드별로 API 상태 코드와 메시지를 제공합니다. 아래의 표를 참고하세요.

HTTP status codedetaildescription
400Email is not valid유효하지 않은 이메일 형식입니다.
401Token is invalid유효하지 않은 토큰입니다.
409Same email is already registered이미 회원가입한 이메일입니다.
500Failed to sign up user회원가입을 실패하였습니다.
{
  "detail": "Email is not valid"
}

비밀번호 초기화

비밀번호 초기화를 위해 사용자의 이메일로 리셋 이메일을 보내주는 API입니다.

POST /api/v1/addnox/auth/send-reset-mail

Body Parameters

NameTypedescription
email requiredstring이메일 값입니다.

요청 예시

POST /api/v1/addnox/auth/phone-number-validation
Content-Type: application/json
{
  "email": "string"
}

응답 예시

200 OK
{
  "statusCode": 200,
  "message": "User reset password email send successfully"
}
ERROR

오류 응답

HTTP 상태 코드별로 API 상태 코드와 메시지를 제공합니다. 아래의 표를 참고하세요.

HTTP status codedetaildescription
400User signed up using a social account소셜 계정으로 회원가입한 유저입니다.
404User ID not found등록된 유저가 아닙니다.
500Email send failed해당 이메일로 전송이 실패하였습니다.
{
  "detail": "User id is not found"
}

아이디(계정) 찾기

아이디 또는 계정을 유저의 전화번호를 통해 찾는 API입니다. SMS 인증 메세지 전송 API 호출 후 불러야 합니다.

POST /api/v1/addnox/auth/find-id-by-phone

Body Parameters

NameTypedescription
phone requiredstring전화번호 값이 E.164 format 이어야 합니다.
- ex: +14155552671
validnum requiredstringSMS 인증 메세지로 전송된 6자리 번호입니다.

요청 예시

POST /api/v1/addnox/auth/phone-number-validation
Content-Type: application/json
{
  "phone": "string",
  "validnum": "string"
}

응답 예시

200 OK
{
  "email": "your@email.com",
  "provider": "naver"
}
ERROR

오류 응답

HTTP 상태 코드별로 API 상태 코드와 메시지를 제공합니다. 아래의 표를 참고하세요.

HTTP status codedetaildescription
400Validation code is expired인증번호가 만료되었습니다.
400Validation code is invalid잘못된 인증번호입니다.
403User previously deleted이미 탈퇴 처리된 사용자입니다.
404User id is not found해당 이메일로 회원가입한 사용자를 찾을 수 없습니다.
{
  "detail": "Validation code is expired"
}

소셜 로그인

소셜 로그인을 진행하는 API입니다. 파라미터로 소셜 provider를 전달해야합니다. 소셜 공급자별로 토큰이 다르기 때문에 Body Parameter 값 두개 중 하나만 보내도 됩니다.

403 에러는 소셜 회원가입을 진행하지 않은 유저이므로 소셜 회원가입으로 분기하시면 됩니다.

POST /api/v1/addnox/auth/social-signin/{provider}

Parameters

NameTypedescription
provider requiredstring소셜 provider 값입니다.
- 애플: apple
- 구글: google
- 페이스북(메타): facebook
- 네이버: naver
- 카카오: kakao

Body Parameters

NameTypedescription
id_token optionalstringprovider가 apple,google,kakao 인 경우에는 필수값
access_token optionalstringprovider가 facebook, naver 인 경우에는 필수값

요청 예시

POST /api/v1/addnox/auth/social-signin/google
Content-Type: application/json
{
  "id_token": "string",
  "access_token": "string"
}

응답 예시

200 OK

이미 소셜 회원가입한 유저라면 정상적으로 로그인이 진행되어 access_token을 발급합니다.

{
  "access_token": "string",
  "expires_in": 0,
  "refresh_token": "string",
  "refresh_expires_in": 0,
  "id": 0,
  "token_type": "string"
}
ERROR

오류 응답

HTTP 상태 코드별로 API 상태 코드와 메시지를 제공합니다. 아래의 표를 참고하세요.

HTTP status codedetaildescription
400User is signed up with email type이메일 방식으로 회원가입한 유저입니다.
401User is Deleted회원탈퇴한 계정입니다.
403User is not valid, please sign up소셜 회원가입이 필요한 유저입니다.
404User is signed up with {social_type} type다른 social provider로 회원가입한 유저입니다.
409Invalid {provider} access token유효하지 않은 토큰입니다.
423Access denied. Account blocked차단된 계정입니다.
{
  "detail": "User is not valid, please sign up"
}

소셜 회원가입

사용자의 정보를 가지고 소셜 회원가입을 진행합니다. 일반 회원가입과 마찬가지로 SMS 번호 검증을 통한 valid_token이 필요합니다.

POST /api/v1/addnox/auth/social/signup

Headers

NameTypedescription
Authorization requiredBearervalid_token

Body Parameters

NameTypedescription
email requiredstring이메일 값입니다.
first_name requiredstring회원가입할 유저의 이름입니다.
last_name requiredstring회원가입할 유저의 성입니다.
birthdate requiredstring회원가입할 유저의 생년월일입니다(yyyymmdd).
- 예시 : 19970101
gender requiredstring회원가입할 유저의 성별입니다
- M : 남성
- F : 여성
- N : 논바이너리
- P : 알려주고 싶지 않음
phone requiredstring전화번호 값이 E.164 format 이어야 합니다.
- ex: +14155552671
register_type requiredstring회원가입 형식입니다.
- E : 이메일
- S : 소셜
social_id requiredstring소셜 provider에 따라 고유 Sub 값 또는 ID를 보내주세요
social_type requiredstring소셜 provider 값입니다.
- 구글 : google
- 애플 : apple
- 페이스북(메타) : facebook
- 네이버 : naver
- 카카오 : kakao
is_push_agree requiredboolean푸시 알림 동의 여부입니다.
is_marketing_agree requiredboolean마케팅 수신 동의 여부입니다.
national_code requiredstring국가 코드입니다.
- WITHNOX : KR
- ADDNOX : ISO code (2)

요청 예시

POST /api/v1/addnox/auth/social/signup
Authorization: Bearer valid_token_here
Content-Type: application/json
{
  "email": "string",
  "first_name": "string",
  "last_name": "string",
  "birthdate": "string",
  "gender": "string",
  "phone": "string",
  "register_type": "string",
  "social_id": "string",
  "social_type": "string",
  "is_push_agree": true,
  "is_marketing_agree": true,
  "national_code": "string"
}

응답 예시

200 OK

소셜 회원가입이 성공하면 정상적으로 로그인이 진행되어 access_token을 발급합니다.

{
  "access_token": "string",
  "expires_in": 0,
  "refresh_token": "string",
  "refresh_expires_in": 0,
  "id": 0,
  "token_type": "string"
}
ERROR

오류 응답

HTTP 상태 코드별로 API 상태 코드와 메시지를 제공합니다. 아래의 표를 참고하세요.

HTTP status codedetaildescription
401Not authenticated유효하지않은 valid_token입니다.
{
  "detail": "Not authenticated"
}

공통 에러 처리

모든 엔드포인트에서 공통적으로 응답하는 에러코드입니다.

Error Response Example

  • 401 Unauthorized: 토큰이 잘못되었습니다.
    {
      "detail": "Could not validate credentials" // 토큰이 잘못되었습니다.
    }
    
  • 401 Unauthorized: 토큰이 만료되었습니다.
    {
      "detail": "Token is expired" // 토큰이 만료되었습니다.
    }
    
  • 404 Not Found: 리소스를 찾을 수 없습니다. URI를 다시 확인해주세요.
    {
      "detail": "Resource not found"
    }
    
  • 500 Internal Server Error: 서버 에러입니다.
    {
      "detail": "Internal server error. Please try again later."
    }
    
최근 수정:: 25. 4. 23. 오전 6:24
Contributors: Jeongtae Kim
Prev
소개
Next
유저