> For the complete documentation index, see [llms.txt](https://tech.x2bee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tech.x2bee.com/api/store-front-api/member-api/undefined-7.md).

# 로그인

## 소셜 로그인 처리

> \## 기능설명\
> \* 기연동되어있지 않은 회원이 신규로 소셜계정을 연동하고 토큰을 발행합니다.\
> \---\
> \## 상세설명\
> \* \*\*소셜타입(type)\*\*, \*\*회원번호(mbrNo)\*\*, \*\*소셜계정 고유ID(smpctId)\*\*, \*\*소셜ID(emailAddr)\*\*, \*\*로그인매체코드(loginMediaCd)\*\*는 필수입니다.\
> \* 넘어온 소셜타입에 대해 기존 연동된 데이터가 있는지 체크합니다.\
> \* 기존 회원에 소셜계정 연동정보를 저장합니다. 연동종료일자는 2999-12-31 23:59:59로 지정됩니다.\
> \* 정상적으로 소셜연동이 되면 기존 토큰 발행과 같은 방식으로 토큰이 발행됩니다.\
> \* 정상적으로 토큰이 발행되면 정상로그인 이력을, 실패하면 실패 로그인 이력을 생성합니다.\
> \---\
> \## 수정번호\
> \* \`\`\`Release v2.00\_240401\`\`\`: 소셜 로그인 처리 response refreshToken 추가<br>

````json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/social/connect":{"post":{"tags":["로그인"],"summary":"소셜 로그인 처리","description":"## 기능설명\n* 기연동되어있지 않은 회원이 신규로 소셜계정을 연동하고 토큰을 발행합니다.\n---\n## 상세설명\n* **소셜타입(type)**, **회원번호(mbrNo)**, **소셜계정 고유ID(smpctId)**, **소셜ID(emailAddr)**, **로그인매체코드(loginMediaCd)**는 필수입니다.\n* 넘어온 소셜타입에 대해 기존 연동된 데이터가 있는지 체크합니다.\n* 기존 회원에 소셜계정 연동정보를 저장합니다. 연동종료일자는 2999-12-31 23:59:59로 지정됩니다.\n* 정상적으로 소셜연동이 되면 기존 토큰 발행과 같은 방식으로 토큰이 발행됩니다.\n* 정상적으로 토큰이 발행되면 정상로그인 이력을, 실패하면 실패 로그인 이력을 생성합니다.\n---\n## 수정번호\n* ```Release v2.00_240401```: 소셜 로그인 처리 response refreshToken 추가\n","operationId":"connect","parameters":[{"name":"socialConnectRequest","in":"query","description":"소셜로그인 연동을 위한 회원 정보","required":true,"schema":{"type":"string","description":"SocialConnectRequest"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialConnectRequest"}}},"required":true},"responses":{"200":{"description":"성공","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SocialAuthResponse"}}}},"900":{"description":"업무처리 오류 내용","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}},"components":{"schemas":{"SocialConnectRequest":{"type":"object","description":"소셜로그인 연동, 연동해제 Request","properties":{"type":{"type":"string","description":"소셜 타입(ME052)","enum":["KAKAOTALK","NAVER","GOOGLE","APPLE"]},"mbrNo":{"type":"string","description":"회원번호"},"smpctId":{"type":"string","description":"소셜고유ID"},"emailAddr":{"type":"string","description":"소셜ID"},"loginMediaCd":{"type":"string","description":"로그인매체코드(ME026)","enum":["PC_WEB","MOBILE_WEB","MOBILE_APP"]},"siteNo":{"type":"string","description":"사이트번호"}},"required":["loginMediaCd","mbrNo","smpctId","type"]},"SocialAuthResponse":{"type":"object","description":"소셜로그인 인증 성공 후 사용자 조회 응답값","properties":{"brth":{"type":"string","description":"생년월일"},"mbrNm":{"type":"string","description":"회원명"},"emailAddr":{"type":"string","description":"이메일"},"sexGbCd":{"type":"string","description":"성별구분코드","enum":["MALE","FEMALE"]},"mbrMgrCd":{"type":"string","description":"회원관리코드","enum":["UNION_MEMBER","GENERAL_MEMBER","SOCIAL_MEMBER","ENTERPRISE_MEMBER","NO_MEMBER"]},"ciCtacVal":{"type":"string","description":"CI연계값"},"smpctGbCd":{"type":"string","description":"소셜구분코드","enum":["KAKAOTALK","NAVER","GOOGLE","APPLE"]},"nafrGbCd":{"type":"string","description":"내외국인구분코드"},"phoneNumber":{"type":"string","description":"휴대폰번호"},"mbrNo":{"type":"string","description":"회원번호"},"connectYn":{"type":"string","description":"기연동여부","enum":["Y","N"]},"smpctId":{"type":"string","description":"소셜고유ID"},"loginId":{"type":"string","description":"로그인ID"}}},"Response":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"result time"},"code":{"type":"string","description":"result code"},"message":{"type":"string","description":"result message"},"isProcess":{"type":"boolean","description":"process check"},"payload":{"description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}}}
````

## 소셜 계정 인증

> \## 기능설명\
> \* 로그인할 소셜계정 정보를 찾아 인증한 후, 후처리 방식을 결정합니다.\
> \---\
> \## 상세설명\
> \* 동의화면에서 넘어온 \*\*인가코드(code)\*\*와 로그인할 \*\*소셜 타입(type)\*\*은 필수로 넘어와야합니다.\
> \* 소셜사이트의 동의화면에서 넘겨준 인가코드(code)를 통해 사용자를 조회하는 액세스토큰을 발급받고, 소셜 계정을 찾습니다.\
> \* 해당 소셜 계정정보로 기연동여부, 휴면회원여부, 소셜계정의 CI 인증여부를 통해 본인인증필요여부를 함께 Response에 담아줍니다.\
> \* 카카오 로그인 관련 API \[카카오 개발자 링크]\(<https://developers.kakao.com)\\>
> &#x20;  \* 사용자조회 토큰 발급 URL: <https://kauth.kakao.com/oauth/token\\>
> &#x20;  \* 사용자조회 URL: <https://kapi.kakao.com/v2/user/me\\>
> &#x20;  \* 연결 끊기 URL: <https://kapi.kakao.com/v1/user/unlink\\>
> \* 네이버 로그인 관련 API \[네이버 개발자 링크]\(<https://developers.naver.com/main)\\>
> &#x20;  \* 사용자조회 토큰 발급 URL: <https://nid.naver.com/oauth2.0/token\\>
> &#x20;  \* 사용자조회 URL: <https://openapi.naver.com/v1/nid/me\\>
> \* 구글 로그인 관련 API \[구글 개발자 링크]\(<https://console.cloud.google.com)\\>
> &#x20;  \* 사용자조회 토큰 발급 URL: <https://oauth2.googleapis.com/token\\>
> &#x20;  \* 사용자조회 URL: <https://www.googleapis.com/oauth2/v2/userinfo\\>
> \* 애플 로그인 관련 API \[애플 개발자 링크]\(<https://developer.apple.com)\\>
> &#x20;  \* 사용자조회 토큰 발급 URL: <https://appleid.apple.com/auth/token\\>
> \---\
> \## 수정번호\
> \* \`\`\`Release v1.07\_231228\`\`\`: 휴면회원여부 조회 로직 제거\
> \* \`\`\`Release v2.00\_240530\`\`\`: 소셜 추가(구글, 애플)<br>

````json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/social/check":{"post":{"tags":["로그인"],"summary":"소셜 계정 인증","description":"## 기능설명\n* 로그인할 소셜계정 정보를 찾아 인증한 후, 후처리 방식을 결정합니다.\n---\n## 상세설명\n* 동의화면에서 넘어온 **인가코드(code)**와 로그인할 **소셜 타입(type)**은 필수로 넘어와야합니다.\n* 소셜사이트의 동의화면에서 넘겨준 인가코드(code)를 통해 사용자를 조회하는 액세스토큰을 발급받고, 소셜 계정을 찾습니다.\n* 해당 소셜 계정정보로 기연동여부, 휴면회원여부, 소셜계정의 CI 인증여부를 통해 본인인증필요여부를 함께 Response에 담아줍니다.\n* 카카오 로그인 관련 API [카카오 개발자 링크](https://developers.kakao.com)\n   * 사용자조회 토큰 발급 URL: https://kauth.kakao.com/oauth/token\n   * 사용자조회 URL: https://kapi.kakao.com/v2/user/me\n   * 연결 끊기 URL: https://kapi.kakao.com/v1/user/unlink\n* 네이버 로그인 관련 API [네이버 개발자 링크](https://developers.naver.com/main)\n   * 사용자조회 토큰 발급 URL: https://nid.naver.com/oauth2.0/token\n   * 사용자조회 URL: https://openapi.naver.com/v1/nid/me\n* 구글 로그인 관련 API [구글 개발자 링크](https://console.cloud.google.com)\n   * 사용자조회 토큰 발급 URL: https://oauth2.googleapis.com/token\n   * 사용자조회 URL: https://www.googleapis.com/oauth2/v2/userinfo\n* 애플 로그인 관련 API [애플 개발자 링크](https://developer.apple.com)\n   * 사용자조회 토큰 발급 URL: https://appleid.apple.com/auth/token\n---\n## 수정번호\n* ```Release v1.07_231228```: 휴면회원여부 조회 로직 제거\n* ```Release v2.00_240530```: 소셜 추가(구글, 애플)\n","operationId":"check","parameters":[{"name":"socialLoginRequest","in":"query","description":"소셜로그인 인증 정보","required":true,"schema":{"type":"string","description":"SocialAuthRequest"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialAuthRequest"}}},"required":true},"responses":{"200":{"description":"성공","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SocialAuthResponse"}}}},"900":{"description":"업무처리 오류 내용","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}},"components":{"schemas":{"SocialAuthRequest":{"type":"object","description":"소셜로그인 인증, 소셜로그인 연동 Request","properties":{"code":{"type":"string","description":"소셜 사이트 인증 성공 시 넘겨주는 인증코드"},"state":{"type":"string","description":"소셜 사이트 인증 시 애플리케이션 상태"},"type":{"type":"string","description":"소셜 타입(ME052)","enum":["KAKAOTALK","NAVER","GOOGLE","APPLE"]}},"required":["code","type"]},"SocialAuthResponse":{"type":"object","description":"소셜로그인 인증 성공 후 사용자 조회 응답값","properties":{"brth":{"type":"string","description":"생년월일"},"mbrNm":{"type":"string","description":"회원명"},"emailAddr":{"type":"string","description":"이메일"},"sexGbCd":{"type":"string","description":"성별구분코드","enum":["MALE","FEMALE"]},"mbrMgrCd":{"type":"string","description":"회원관리코드","enum":["UNION_MEMBER","GENERAL_MEMBER","SOCIAL_MEMBER","ENTERPRISE_MEMBER","NO_MEMBER"]},"ciCtacVal":{"type":"string","description":"CI연계값"},"smpctGbCd":{"type":"string","description":"소셜구분코드","enum":["KAKAOTALK","NAVER","GOOGLE","APPLE"]},"nafrGbCd":{"type":"string","description":"내외국인구분코드"},"phoneNumber":{"type":"string","description":"휴대폰번호"},"mbrNo":{"type":"string","description":"회원번호"},"connectYn":{"type":"string","description":"기연동여부","enum":["Y","N"]},"smpctId":{"type":"string","description":"소셜고유ID"},"loginId":{"type":"string","description":"로그인ID"}}},"Response":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"result time"},"code":{"type":"string","description":"result code"},"message":{"type":"string","description":"result message"},"isProcess":{"type":"boolean","description":"process check"},"payload":{"description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}}}
````

## 토큰 로그인

> \## 기능설명\
> \* 발급된 토큰로그인의 토큰으로 로그인합니다.\
> \---\
> \## 상세설명\
> \* 토큰로그인을 통해 사이트 내 정상적인 서비스 이용을 지원합니다.\
> \* 로그인을 통하여 서비스 이용을 위한 accessToken을 발급합니다.\
> \* 토큰 종류\
> &#x20;  \* accessToken : 액세스 토큰은 사이트 이용을 위하여 발급되는 토큰으로 회원의 권한을 갖는 토큰입니다.\
> &#x20;  \* refreshToken : 리프레시 토큰은 토큰의 유효기간이 상실된 액세스토큰을 사용자가 재로그인의 과정을 거치지 않고, 액세스 토큰의 유효시간을 갱신하는 토큰을 의미합니다.\
> \* accessToken에 포함된 정보\
> &#x20;  \* mbrNo : 회원번호\
> &#x20;  \* langCd : 회원의 가입 사이트 국가 및 로그인위치\
> \* 로그인 시 각 모듈에서 권한 확인 및 UserDetail(회원기본정보)을 사용하기 위하여 Redis 저장소에 등록합니다.\
> \---\
> \## 특이사항\
> \* 로그인 제한 사항\
> &#x20;  \* 국내 사이트에서 회원가입을 한 경우 글로벌 사이트에서 로그인이 제한됩니다.\
> &#x20;  \* 글로벌 사이트에서 회원가입을 한 경우 국내 사이트에서 로그인이 제한됩니다.\
> \* 토큰의 유효기간\
> &#x20;  \* accessToken : 액세스 토큰의 유효시간은 5분이며, 5분 이후에는 토큰의 권한을 상실하여 사이트 이용이 불가능합니다.\
> &#x20;  \* refreshToken : 리프레시 토큰의 유효시간은 30분이며, 30분 이후에는 토큰의 권한을 상실하여 액세스 토큰 재갱신이 불가능합니다.\
> \## 수정번호\
> \* Release v2.00\_251121: 토근 만료기간 추가<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/front/tokenlogin":{"post":{"tags":["로그인"],"summary":"토큰 로그인","description":"## 기능설명\n* 발급된 토큰로그인의 토큰으로 로그인합니다.\n---\n## 상세설명\n* 토큰로그인을 통해 사이트 내 정상적인 서비스 이용을 지원합니다.\n* 로그인을 통하여 서비스 이용을 위한 accessToken을 발급합니다.\n* 토큰 종류\n   * accessToken : 액세스 토큰은 사이트 이용을 위하여 발급되는 토큰으로 회원의 권한을 갖는 토큰입니다.\n   * refreshToken : 리프레시 토큰은 토큰의 유효기간이 상실된 액세스토큰을 사용자가 재로그인의 과정을 거치지 않고, 액세스 토큰의 유효시간을 갱신하는 토큰을 의미합니다.\n* accessToken에 포함된 정보\n   * mbrNo : 회원번호\n   * langCd : 회원의 가입 사이트 국가 및 로그인위치\n* 로그인 시 각 모듈에서 권한 확인 및 UserDetail(회원기본정보)을 사용하기 위하여 Redis 저장소에 등록합니다.\n---\n## 특이사항\n* 로그인 제한 사항\n   * 국내 사이트에서 회원가입을 한 경우 글로벌 사이트에서 로그인이 제한됩니다.\n   * 글로벌 사이트에서 회원가입을 한 경우 국내 사이트에서 로그인이 제한됩니다.\n* 토큰의 유효기간\n   * accessToken : 액세스 토큰의 유효시간은 5분이며, 5분 이후에는 토큰의 권한을 상실하여 사이트 이용이 불가능합니다.\n   * refreshToken : 리프레시 토큰의 유효시간은 30분이며, 30분 이후에는 토큰의 권한을 상실하여 액세스 토큰 재갱신이 불가능합니다.\n## 수정번호\n* Release v2.00_251121: 토근 만료기간 추가\n","operationId":"tokenlogin","parameters":[{"name":"autoBioLoginRequest","in":"query","description":"인증토큰 로그인 요청 정보","required":true,"schema":{"type":"string","description":"AutoBioLoginRequest"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoBioLoginRequest"}}},"required":true},"responses":{"200":{"description":"성공","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"900":{"description":"업무처리 오류 내용","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}},"components":{"schemas":{"AutoBioLoginRequest":{"type":"object","description":"인증토큰생성(등록) - 자동로그인, 생체인증로그인","properties":{"loginMediaCd":{"type":"string","description":"로그인 매체코드(ME026)","enum":["PC_WEB","MOBILE_WEB","MOBILE_APP"]},"mbrCertiTknGbCd":{"type":"string","description":"회원인증토큰 구분코드(ME053)","enum":["REFRESH","AUTO_LOGIN","BIO_LOGIN","CHATBOT_LOGIN","CHG_PASSWORD"]},"mbrNo":{"type":"string","description":"회원번호"},"token":{"type":"string","description":"토큰(토큰 삭제, 재발급 시 사용)"}},"required":["loginMediaCd","mbrCertiTknGbCd","token"]},"LoginResponse":{"type":"object","description":"로그인 Response","properties":{"accessToken":{"type":"string","description":"액세스 토큰"},"refreshToken":{"type":"string","description":"리프레시 토큰"},"accessTokenExpiresAt":{"type":"integer","format":"int64","description":"Access Token 만료 시간 (Unix Timestamp, 초 단위)"},"refreshTokenExpiresAt":{"type":"integer","format":"int64","description":"Refresh Token 만료 시간 (Unix Timestamp, 초 단위)"},"mbrNo":{"type":"string","description":"회원번호"},"ciCtacValYn":{"type":"string","description":"ci인증 여부"},"certiYn":{"type":"string","description":"성인인증 여부 (1일)"},"mbrMgrCd":{"type":"string","description":"회원관리코드"},"pwdChgYn":{"type":"string","description":"비밀번호 변경 대상 여부"},"tmpPwdIssuYn":{"type":"string","description":"임시비밀번호 발급 회원 여부"},"loginId":{"type":"string","description":"로그인 ID"},"joinSgtStatCd":{"type":"string","description":"가입 승인 상태 코드(ME058)"},"aprvRtrnCaus":{"type":"string","description":"승인 반려 사유"},"mbrStatCd":{"type":"string","description":"회원 상태(ME003)"},"resultMessage":{"type":"string","description":"Sub 결과 메세지"},"resultCode":{"type":"string","description":"Sub 결과 코드"}}},"Response":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"result time"},"code":{"type":"string","description":"result code"},"message":{"type":"string","description":"result message"},"isProcess":{"type":"boolean","description":"process check"},"payload":{"description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}}}
```

## 토큰정보 발급

> \## 기능설명\
> \* 토큰로그인을 진행하기 위하여 토큰을 발급합니다.\
> \---\
> \## 상세설명\
> \* 자동로그인 및 생체인증로그인을 위한 토큰을 발행하는 서비스입니다.\
> \* 자동로그인 토큰 활성화\
> &#x20;  \* 로그인 화면에서 자동로그인 체크박스를 체크 후 로그인을 진행합니다.\
> \* 생체인증 로그인 토큰 활성화\
> &#x20;  \* 모바일 전용 앱 에서만 활성화가 가능하며, 설정 -> 로그인 설정에서 설정 가능합니다.\
> \* 토큰 종류\
> &#x20;  \* 자동로그인 토큰\
> &#x20;  \* 생체인증 로그인 토큰\
> \---\
> \## 특이사항\
> \* 자동로그인 및 생체인증 로그인 토큰의 유효기간은 10년으로 설정되며, 유효기간이 지난 토큰의 경우 로그인이 불가능합니다.<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/front/tokenIssu":{"post":{"tags":["로그인"],"summary":"토큰정보 발급","description":"## 기능설명\n* 토큰로그인을 진행하기 위하여 토큰을 발급합니다.\n---\n## 상세설명\n* 자동로그인 및 생체인증로그인을 위한 토큰을 발행하는 서비스입니다.\n* 자동로그인 토큰 활성화\n   * 로그인 화면에서 자동로그인 체크박스를 체크 후 로그인을 진행합니다.\n* 생체인증 로그인 토큰 활성화\n   * 모바일 전용 앱 에서만 활성화가 가능하며, 설정 -> 로그인 설정에서 설정 가능합니다.\n* 토큰 종류\n   * 자동로그인 토큰\n   * 생체인증 로그인 토큰\n---\n## 특이사항\n* 자동로그인 및 생체인증 로그인 토큰의 유효기간은 10년으로 설정되며, 유효기간이 지난 토큰의 경우 로그인이 불가능합니다.\n","operationId":"saveAutoToken","parameters":[{"name":"autoBioLoginRequest","in":"query","description":"인증토큰 발급 요청 정보","required":true,"schema":{"type":"string","description":"AutoBioLoginRequest"}},{"name":"userDetail","in":"query","description":"회원 정보","required":true,"schema":{"type":"string","description":"UserDetail"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoBioLoginRequest"}}},"required":true},"responses":{"200":{"description":"성공","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AutoBioLoginResponse"}}}},"900":{"description":"업무처리 오류 내용","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}},"components":{"schemas":{"AutoBioLoginRequest":{"type":"object","description":"인증토큰생성(등록) - 자동로그인, 생체인증로그인","properties":{"loginMediaCd":{"type":"string","description":"로그인 매체코드(ME026)","enum":["PC_WEB","MOBILE_WEB","MOBILE_APP"]},"mbrCertiTknGbCd":{"type":"string","description":"회원인증토큰 구분코드(ME053)","enum":["REFRESH","AUTO_LOGIN","BIO_LOGIN","CHATBOT_LOGIN","CHG_PASSWORD"]},"mbrNo":{"type":"string","description":"회원번호"},"token":{"type":"string","description":"토큰(토큰 삭제, 재발급 시 사용)"}},"required":["loginMediaCd","mbrCertiTknGbCd","token"]},"AutoBioLoginResponse":{"type":"object","description":"인증토큰생성(등록) - 자동로그인, 생체인증로그인 Response","properties":{"token":{"type":"string","description":"자동 및 생체인증 로그인 토큰"}}},"Response":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"result time"},"code":{"type":"string","description":"result code"},"message":{"type":"string","description":"result message"},"isProcess":{"type":"boolean","description":"process check"},"payload":{"description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}}}
```

## 토큰정보 삭제

> \## 기능설명\
> \* 토큰로그인을 위해 발급된 토큰 정보를 삭제합니다.\
> \---\
> \## 상세설명\
> \* 발급된 자동로그인 및 생체인증로그인 토큰을 삭제합니다.<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/front/tokenIssu":{"delete":{"tags":["로그인"],"summary":"토큰정보 삭제","description":"## 기능설명\n* 토큰로그인을 위해 발급된 토큰 정보를 삭제합니다.\n---\n## 상세설명\n* 발급된 자동로그인 및 생체인증로그인 토큰을 삭제합니다.\n","operationId":"deleteAutoToken","parameters":[{"name":"autoBioLoginRequest","in":"query","description":"인증토큰 삭제 정보","required":true,"schema":{"type":"string","description":"AutoBioLoginRequest"}},{"name":"userDetail","in":"query","description":"회원 정보","required":true,"schema":{"type":"string","description":"UserDetail"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoBioLoginRequest"}}},"required":true},"responses":{"200":{"description":"성공"},"900":{"description":"업무처리 오류 내용","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}},"components":{"schemas":{"AutoBioLoginRequest":{"type":"object","description":"인증토큰생성(등록) - 자동로그인, 생체인증로그인","properties":{"loginMediaCd":{"type":"string","description":"로그인 매체코드(ME026)","enum":["PC_WEB","MOBILE_WEB","MOBILE_APP"]},"mbrCertiTknGbCd":{"type":"string","description":"회원인증토큰 구분코드(ME053)","enum":["REFRESH","AUTO_LOGIN","BIO_LOGIN","CHATBOT_LOGIN","CHG_PASSWORD"]},"mbrNo":{"type":"string","description":"회원번호"},"token":{"type":"string","description":"토큰(토큰 삭제, 재발급 시 사용)"}},"required":["loginMediaCd","mbrCertiTknGbCd","token"]},"Response":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"result time"},"code":{"type":"string","description":"result code"},"message":{"type":"string","description":"result message"},"isProcess":{"type":"boolean","description":"process check"},"payload":{"description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}}}
```

## 토큰정보 갱신

> \## 기능설명\
> \* 로그인 처리 시 발급받은 refreshToken으로 유효시간이 지난 accessToken을 재생성합니다.\
> \---\
> \## 상세설명\
> \* X2BEE 서비스 이용을 위한 accessToken의 유효시간이 만료된 경우, refreshToken을 통해 accessToken을 재생성합니다.\
> \* accessToken의 재생성 후에는 기존에 발급 되었던 refreshToken은 삭제되고, 새로운 refreshToken이 발급되어 저장됩니다.\
> \## 수정번호\
> \* Release v2.00\_240401: token Redis 이관작업 및 token 암호화\
> \* Release v2.00\_240425: 로그인 토큰 만료 시, API 중복 호출로 인한 오류 수정\
> \* Release v2.00\_251121: 토근 만료기간 추가<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/front/refresh":{"post":{"tags":["로그인"],"summary":"토큰정보 갱신","description":"## 기능설명\n* 로그인 처리 시 발급받은 refreshToken으로 유효시간이 지난 accessToken을 재생성합니다.\n---\n## 상세설명\n* X2BEE 서비스 이용을 위한 accessToken의 유효시간이 만료된 경우, refreshToken을 통해 accessToken을 재생성합니다.\n* accessToken의 재생성 후에는 기존에 발급 되었던 refreshToken은 삭제되고, 새로운 refreshToken이 발급되어 저장됩니다.\n## 수정번호\n* Release v2.00_240401: token Redis 이관작업 및 token 암호화\n* Release v2.00_240425: 로그인 토큰 만료 시, API 중복 호출로 인한 오류 수정\n* Release v2.00_251121: 토근 만료기간 추가\n","operationId":"refreshToken","parameters":[{"name":"tokenRefreshRequest","in":"query","description":"리프레시 토큰 정보","required":true,"schema":{"type":"string","description":"TokenRefreshRequest"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRefreshRequest"}}},"required":true},"responses":{"200":{"description":"성공","content":{"*/*":{"schema":{"$ref":"#/components/schemas/MemberTokenDto"}}}},"900":{"description":"업무처리 오류 내용","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}},"components":{"schemas":{"TokenRefreshRequest":{"type":"object","description":"accessToken 재생성을 위한 Request","properties":{"accessToken":{"type":"string","description":"액세스 토큰"},"refreshToken":{"type":"string","description":"refreshToken"},"mbrCertiTknIssuSeq":{"type":"string","description":"회원인증토큰발급순번"},"mbrNo":{"type":"string","description":"회원번호"},"mbrCertiTknGbCd":{"type":"string","description":"회원인증토큰구분코드(ME053)","enum":["REFRESH","AUTO_LOGIN","BIO_LOGIN","CHATBOT_LOGIN","CHG_PASSWORD"]},"loginId":{"type":"string","description":"로그인 ID"}},"required":["mbrCertiTknGbCd","refreshToken"]},"MemberTokenDto":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"mbrNo":{"type":"string"},"accessTokenExpiresAt":{"type":"integer","format":"int64"},"refreshTokenExpiresAt":{"type":"integer","format":"int64"}}},"Response":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"result time"},"code":{"type":"string","description":"result code"},"message":{"type":"string","description":"result message"},"isProcess":{"type":"boolean","description":"process check"},"payload":{"description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}}}
```

## 로그아웃

> \## 기능설명\
> \* 로그인 시 발급된 refreshToken 정보를 삭제합니다.\
> \---\
> \## 상세설명\
> \* 리프레시 토큰은 사이트 이용에 필요한 accessToken의 유효시간이 만료되었을 때 액세스 토큰의 유효시간을 재 갱신하기 위한 토큰입니다.\
> \* 로그아웃 이후 로그인 시 발급되었던 리프레시 토큰의 정보를 삭제하여, 액세스 토큰의 재갱신을 하지 못하도록 방지합니다.\
> \## 수정번호\
> \* Release v2.00\_240401: token Redis 이관작업에 따른 로직 변경<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/front/logout":{"post":{"tags":["로그인"],"summary":"로그아웃","description":"## 기능설명\n* 로그인 시 발급된 refreshToken 정보를 삭제합니다.\n---\n## 상세설명\n* 리프레시 토큰은 사이트 이용에 필요한 accessToken의 유효시간이 만료되었을 때 액세스 토큰의 유효시간을 재 갱신하기 위한 토큰입니다.\n* 로그아웃 이후 로그인 시 발급되었던 리프레시 토큰의 정보를 삭제하여, 액세스 토큰의 재갱신을 하지 못하도록 방지합니다.\n## 수정번호\n* Release v2.00_240401: token Redis 이관작업에 따른 로직 변경\n","operationId":"logout","parameters":[{"name":"request","in":"query","description":"토큰 정보","required":true,"schema":{"type":"string","description":"LogoutRequest"}},{"name":"userDetail","in":"query","description":"회원 정보","required":true,"schema":{"type":"string","description":"UserDetail"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoutRequest"}}},"required":true},"responses":{"200":{"description":"성공"},"900":{"description":"업무처리 오류 내용","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}},"components":{"schemas":{"LogoutRequest":{"type":"object","description":"로그아웃 Request","properties":{"accessToken":{"type":"string","description":"액세스토큰"},"biometricToken":{"type":"string","description":"생체인증 토큰"},"loginMediaCd":{"type":"string","description":"로그인매체코드(ME026)","enum":["PC_WEB","MOBILE_WEB","MOBILE_APP"]},"mbrNo":{"type":"string","description":"회원번호"}},"required":["accessToken","mbrNo"]},"Response":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"result time"},"code":{"type":"string","description":"result code"},"message":{"type":"string","description":"result message"},"isProcess":{"type":"boolean","description":"process check"},"payload":{"description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}}}
```

## 로그인

> \## 기능설명\
> \* X2BEE 쇼핑몰 이용을 위한 계정 로그인을 진행합니다.\
> \---\
> \## 상세설명\
> \* 회원 로그인을 통해 사이트 내 정상적인 서비스 이용을 지원합니다.\
> \* 로그인을 통하여 서비스 이용을 위한 accessToken을 발급합니다.\
> \* 토큰 종류\
> &#x20;  \* accessToken : 액세스 토큰은 사이트 이용을 위하여 발급되는 토큰으로 회원의 권한을 갖는 토큰입니다.\
> &#x20;  \* refreshToken : 리프레시 토큰은 토큰의 유효기간이 상실된 액세스토큰을 사용자가 재로그인의 과정을 거치지 않고, 액세스 토큰의 유효시간을 갱신하는 토큰을 의미합니다.\
> \* accessToken에 포함된 정보\
> &#x20;  \* mbrNo : 회원번호\
> &#x20;  \* langCd : 회원의 가입 사이트 국가 및 로그인위치\
> \* 로그인 시 각 모듈에서 권한 확인 및 UserDetail(회원기본정보)을 사용하기 위하여 Redis 저장소에 등록합니다.\
> \* UserDetail 정보는 Redis에 기록되고 있으며, Redis 정보를 보유하고 있는 타임아웃은 RefreshToken의 Expire time과 동일합니다.(x2bee 솔루션 기준 30분)\
> \* 로그인오류 3회 초과 시 무차별대입 공격을 방지하기 위해 캡차코드 검증을 진행합니다.\
> \---\
> \## 특이사항\
> \* 로그인 제한 사항\
> &#x20;  \* 국내 사이트에서 회원가입을 한 경우 글로벌 사이트에서 로그인이 제한됩니다.\
> &#x20;  \* 글로벌 사이트에서 회원가입을 한 경우 국내 사이트에서 로그인이 제한됩니다.\
> \* 토큰의 유효기간\
> &#x20;  \* accessToken : 액세스 토큰의 유효시간은 5분이며, 5분 이후에는 토큰의 권한을 상실하여 사이트 이용이 불가능합니다.\
> &#x20;  \* refreshToken : 리프레시 토큰의 유효시간은 30분이며, 30분 이후에는 토큰의 권한을 상실하여 액세스 토큰 재갱신이 불가능합니다.\
> \* 각 토큰은 X2BEE 암호화 시스템에 의해 암호화되어 관리됩니다.\
> \---\
> \## 수정번호\
> \* Release v1.07\_231228: 로그인 시 휴면회원여부 체크 로직 제거\
> \* Release v1.08\_240118: 캡챠코드 Redis 이관작업\
> \* Release v2.00\_240401: token Redis 이관작업 및 token 암호화\
> \* Release v2.00\_240401: 소셜 로그인 시 캡차코드 체크 제외, 일반 로그인 시 소셜 회원인 경우 에러 로직 제거\
> \* Release v2.00\_251121: 토근 만료기간 추가<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/front/login":{"post":{"tags":["로그인"],"summary":"로그인","description":"## 기능설명\n* X2BEE 쇼핑몰 이용을 위한 계정 로그인을 진행합니다.\n---\n## 상세설명\n* 회원 로그인을 통해 사이트 내 정상적인 서비스 이용을 지원합니다.\n* 로그인을 통하여 서비스 이용을 위한 accessToken을 발급합니다.\n* 토큰 종류\n   * accessToken : 액세스 토큰은 사이트 이용을 위하여 발급되는 토큰으로 회원의 권한을 갖는 토큰입니다.\n   * refreshToken : 리프레시 토큰은 토큰의 유효기간이 상실된 액세스토큰을 사용자가 재로그인의 과정을 거치지 않고, 액세스 토큰의 유효시간을 갱신하는 토큰을 의미합니다.\n* accessToken에 포함된 정보\n   * mbrNo : 회원번호\n   * langCd : 회원의 가입 사이트 국가 및 로그인위치\n* 로그인 시 각 모듈에서 권한 확인 및 UserDetail(회원기본정보)을 사용하기 위하여 Redis 저장소에 등록합니다.\n* UserDetail 정보는 Redis에 기록되고 있으며, Redis 정보를 보유하고 있는 타임아웃은 RefreshToken의 Expire time과 동일합니다.(x2bee 솔루션 기준 30분)\n* 로그인오류 3회 초과 시 무차별대입 공격을 방지하기 위해 캡차코드 검증을 진행합니다.\n---\n## 특이사항\n* 로그인 제한 사항\n   * 국내 사이트에서 회원가입을 한 경우 글로벌 사이트에서 로그인이 제한됩니다.\n   * 글로벌 사이트에서 회원가입을 한 경우 국내 사이트에서 로그인이 제한됩니다.\n* 토큰의 유효기간\n   * accessToken : 액세스 토큰의 유효시간은 5분이며, 5분 이후에는 토큰의 권한을 상실하여 사이트 이용이 불가능합니다.\n   * refreshToken : 리프레시 토큰의 유효시간은 30분이며, 30분 이후에는 토큰의 권한을 상실하여 액세스 토큰 재갱신이 불가능합니다.\n* 각 토큰은 X2BEE 암호화 시스템에 의해 암호화되어 관리됩니다.\n---\n## 수정번호\n* Release v1.07_231228: 로그인 시 휴면회원여부 체크 로직 제거\n* Release v1.08_240118: 캡챠코드 Redis 이관작업\n* Release v2.00_240401: token Redis 이관작업 및 token 암호화\n* Release v2.00_240401: 소셜 로그인 시 캡차코드 체크 제외, 일반 로그인 시 소셜 회원인 경우 에러 로직 제거\n* Release v2.00_251121: 토근 만료기간 추가\n","operationId":"login","parameters":[{"name":"loginRequest","in":"query","description":"회원 로그인 정보","required":true,"schema":{"type":"string","description":"LoginRequest"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"성공","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"900":{"description":"업무처리 오류 내용","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}},"components":{"schemas":{"LoginRequest":{"type":"object","description":"로그인 Request","properties":{"loginFromCd":{"type":"string","description":"로그인매체코드(ME026)","enum":["PC_WEB","MOBILE_WEB","MOBILE_APP"]},"loginType":{"type":"string","description":"로그인구분(ME056)","enum":["NORMAL","AUTO_LOGIN","SOCIAL_LOGIN"]},"lgnId":{"type":"string","description":"회원 아이디"},"passwd":{"type":"string","description":"비밀번호"},"captchaCd":{"type":"string","description":"캡챠코드"}},"required":["lgnId"]},"LoginResponse":{"type":"object","description":"로그인 Response","properties":{"accessToken":{"type":"string","description":"액세스 토큰"},"refreshToken":{"type":"string","description":"리프레시 토큰"},"accessTokenExpiresAt":{"type":"integer","format":"int64","description":"Access Token 만료 시간 (Unix Timestamp, 초 단위)"},"refreshTokenExpiresAt":{"type":"integer","format":"int64","description":"Refresh Token 만료 시간 (Unix Timestamp, 초 단위)"},"mbrNo":{"type":"string","description":"회원번호"},"ciCtacValYn":{"type":"string","description":"ci인증 여부"},"certiYn":{"type":"string","description":"성인인증 여부 (1일)"},"mbrMgrCd":{"type":"string","description":"회원관리코드"},"pwdChgYn":{"type":"string","description":"비밀번호 변경 대상 여부"},"tmpPwdIssuYn":{"type":"string","description":"임시비밀번호 발급 회원 여부"},"loginId":{"type":"string","description":"로그인 ID"},"joinSgtStatCd":{"type":"string","description":"가입 승인 상태 코드(ME058)"},"aprvRtrnCaus":{"type":"string","description":"승인 반려 사유"},"mbrStatCd":{"type":"string","description":"회원 상태(ME003)"},"resultMessage":{"type":"string","description":"Sub 결과 메세지"},"resultCode":{"type":"string","description":"Sub 결과 코드"}}},"Response":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"result time"},"code":{"type":"string","description":"result code"},"message":{"type":"string","description":"result message"},"isProcess":{"type":"boolean","description":"process check"},"payload":{"description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}}}
```

## 캡차코드 검증 처리

> \## 기능설명\
> \* 캡차코드의 일치 여부를 검증합니다.\
> \---\
> \## 상세설명\
> \* 생성된 캡차코드와 사용자가 입력한 캡차코드가 일치하는지 검증합니다.\
> \* Redis에 등록 및 관리되고 있는 캡차코드는 일치여부와 관계 없이 1회성으로 사용되며, 검증 로직 이후 Redis에서 삭제처리됩니다.\
> \---\
> \## 특이사항\
> \* 해당 API는 테스트용으로 개발된 것으로 외부에서 사용되지 않습니다.\
> \## 수정번호\
> \* Release v1.08\_240118: 캡챠코드 Redis 이관작업<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/captcha/validAnswer":{"post":{"tags":["로그인"],"summary":"캡차코드 검증 처리","description":"## 기능설명\n* 캡차코드의 일치 여부를 검증합니다.\n---\n## 상세설명\n* 생성된 캡차코드와 사용자가 입력한 캡차코드가 일치하는지 검증합니다.\n* Redis에 등록 및 관리되고 있는 캡차코드는 일치여부와 관계 없이 1회성으로 사용되며, 검증 로직 이후 Redis에서 삭제처리됩니다.\n---\n## 특이사항\n* 해당 API는 테스트용으로 개발된 것으로 외부에서 사용되지 않습니다.\n## 수정번호\n* Release v1.08_240118: 캡챠코드 Redis 이관작업\n","operationId":"validAnswer","parameters":[{"name":"loginRequest","in":"query","description":"회원 로그인 정보","required":true,"schema":{"type":"string","description":"LoginRequest"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"성공"}}}}},"components":{"schemas":{"LoginRequest":{"type":"object","description":"로그인 Request","properties":{"loginFromCd":{"type":"string","description":"로그인매체코드(ME026)","enum":["PC_WEB","MOBILE_WEB","MOBILE_APP"]},"loginType":{"type":"string","description":"로그인구분(ME056)","enum":["NORMAL","AUTO_LOGIN","SOCIAL_LOGIN"]},"lgnId":{"type":"string","description":"회원 아이디"},"passwd":{"type":"string","description":"비밀번호"},"captchaCd":{"type":"string","description":"캡챠코드"}},"required":["lgnId"]}}}}
```

## 캡차 코드 음성 변환

> \## 기능설명\
> \* 캡차코드를 음성으로 변환합니다.\
> \---\
> \## 상세설명\
> \* 생성된 캡차코드의 문자를 음성으로 변환합니다.\
> \---\
> \## 수정번호\
> \* \`\`\`Release v2.00\_240401\`\`\`: 캡챠코드 Redis 이관작업<br>

````json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/captcha/getCaptchaTextToAudio":{"get":{"tags":["로그인"],"summary":"캡차 코드 음성 변환","description":"## 기능설명\n* 캡차코드를 음성으로 변환합니다.\n---\n## 상세설명\n* 생성된 캡차코드의 문자를 음성으로 변환합니다.\n---\n## 수정번호\n* ```Release v2.00_240401```: 캡챠코드 Redis 이관작업\n","operationId":"createCaptchaTextToAudio","parameters":[{"name":"loginId","in":"query","required":true,"schema":{"type":"string"}},{"name":"req","in":"query","description":"고객 요청 데이터","required":true,"schema":{"type":"string","description":"HttpServletRequest"}},{"name":"res","in":"query","description":"고객 전달 데이터","required":true,"schema":{"type":"string","description":"HttpServletResponse"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"responses":{"200":{"description":"성공"}}}}}}
````

## 캡차 코드 생성

> \## 기능설명\
> \* 캡차코드를 생성합니다.\
> \---\
> \## 상세설명\
> \* 무차별 대입 공격을 방지하기 위한 캡차코드를 생성합니다.\
> \* 생성된 캡차코드의 자릿수는 6자리이며, 0-9 까지의 랜덤한 숫자를 조합하여 이미지로 생성합니다.\
> \* 비밀번호 3회 초과 오류 시 생성됩니다.\
> \* 생성된 캡차코드는 Redis에서 등록되어 관리되고 있으며, 유효시간은 2분입니다.\
> \* Redis에서 등록 및 관리되고 있는 Key는 ID + CaptchaCd로 관리되고 있습니다.\
> \## 수정번호\
> \* Release v1.08\_240118: 캡챠코드 Redis 이관작업<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE Member API","version":"v1"},"servers":[{"url":"https://api-member.x2bee.com/api/member/","description":"prd"}],"paths":{"/v1/captcha/getCaptchaImg":{"get":{"tags":["로그인"],"summary":"캡차 코드 생성","description":"## 기능설명\n* 캡차코드를 생성합니다.\n---\n## 상세설명\n* 무차별 대입 공격을 방지하기 위한 캡차코드를 생성합니다.\n* 생성된 캡차코드의 자릿수는 6자리이며, 0-9 까지의 랜덤한 숫자를 조합하여 이미지로 생성합니다.\n* 비밀번호 3회 초과 오류 시 생성됩니다.\n* 생성된 캡차코드는 Redis에서 등록되어 관리되고 있으며, 유효시간은 2분입니다.\n* Redis에서 등록 및 관리되고 있는 Key는 ID + CaptchaCd로 관리되고 있습니다.\n## 수정번호\n* Release v1.08_240118: 캡챠코드 Redis 이관작업\n","operationId":"createCaptchaImg","parameters":[{"name":"loginId","in":"query","required":true,"schema":{"type":"string"}},{"name":"req","in":"query","description":"고객 요청 데이터","required":true,"schema":{"type":"string","description":"HttpServletRequest"}},{"name":"res","in":"query","description":"고객 전달 데이터","required":true,"schema":{"type":"string","description":"HttpServletResponse"}},{"name":"Authorization","in":"header","description":"Access Token","required":false}],"responses":{"200":{"description":"성공"},"900":{"description":"업무처리 오류 내용","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}},"components":{"schemas":{"Response":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"result time"},"code":{"type":"string","description":"result code"},"message":{"type":"string","description":"result message"},"isProcess":{"type":"boolean","description":"process check"},"payload":{"description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}}}
```
