# 로그인

## 비밀번호 초기화

> \## 기능설명\
> \* 계정의 비밀번호를 초기화합니다.\
> \---\
> \## 상세설명\
> \* 입력한 휴대폰 번호와 입력한 아이디 계정의 휴대폰 번호가 일치해야만 초기화 처리가 가능합니다.\
> \* 알파벳 소문자 5자, 숫자3자, 특수문자2자 가 랜덤으로 조합됩니다.\
> \* 초기화 된 비밀번호 안내 알림톡(카카오톡)이 입력한 휴대폰 번호로 발송됩니다.<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE BO API","version":"v1"},"servers":[{"url":"https://api-bo.x2bee.com/api/bo/","description":"prd"}],"security":[{"accessToken":[]}],"components":{"securitySchemes":{"accessToken":{"type":"http","name":"accessToken","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"LoginRequest":{"type":"object","properties":{"seq":{"type":"integer","format":"int64"},"loginId":{"type":"string","minLength":1},"password":{"type":"string"},"remoteAddr":{"type":"string"},"lastAccessTime":{"type":"integer","format":"int64"},"userGbCd":{"type":"string"},"rtGrpNo":{"type":"string"},"jobGrpCd":{"type":"string"},"ocpCd":{"type":"string"},"caloUrl":{"type":"string"},"sysGbCd":{"type":"string"},"userId":{"type":"string"},"pwd":{"type":"string"},"userNm":{"type":"string"},"cellSctNo":{"type":"string"},"cellTxnoNo":{"type":"string"},"cellEndNo":{"type":"string"},"pwdIniYn":{"type":"string"},"sessId":{"type":"string"},"tpCd":{"type":"string"},"entrNo":{"type":"string"},"entrNm":{"type":"string"},"applicationName":{"type":"string"},"privacyPolicyInfoList":{"type":"array","items":{"$ref":"#/components/schemas/PrivacyPolicyInfo"}},"permissionToViewPersonalInfo":{"type":"object","additionalProperties":{}},"username":{"type":"string"},"accountNonExpired":{"type":"boolean"},"accountNonLocked":{"type":"boolean"},"credentialsNonExpired":{"type":"boolean"},"name":{"type":"string"},"enabled":{"type":"boolean"}},"required":["loginId"]},"PrivacyPolicyInfo":{"type":"object","description":"개인정보취급권한 DTO","properties":{"userId":{"type":"string","description":"사용자 아이디"},"indInfoGbCd":{"type":"string","description":"개인정보구분코드(UR008)"},"useYn":{"type":"string","description":"사용여부"}}},"ResponseString":{"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":{"type":"string","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"}}},"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"}}}}}},"paths":{"/v1/login/initializePasswordOnLogin":{"put":{"tags":["로그인"],"summary":"비밀번호 초기화","description":"## 기능설명\n* 계정의 비밀번호를 초기화합니다.\n---\n## 상세설명\n* 입력한 휴대폰 번호와 입력한 아이디 계정의 휴대폰 번호가 일치해야만 초기화 처리가 가능합니다.\n* 알파벳 소문자 5자, 숫자3자, 특수문자2자 가 랜덤으로 조합됩니다.\n* 초기화 된 비밀번호 안내 알림톡(카카오톡)이 입력한 휴대폰 번호로 발송됩니다.\n","operationId":"initializePasswordOnLogin","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"성공","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResponseString"}}}},"900":{"description":"업무처리 오류 내용","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}}}
```

## 로그인 토큰 갱신(Refresh)

> \## 기능설명\
> \* 토큰 갱신을 수행합니다.\
> \---\
> \## 상세설명\
> \* refresh token을 이용하여 access token을 갱신합니다.\
> \* refresh token은 쿠키에 저장되어 있어야 합니다.\
> \* 발급받은 access token은 헤더에 accessToken으로 포함하여 사용합니다.<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE BO API","version":"v1"},"servers":[{"url":"https://api-bo.x2bee.com/api/bo/","description":"prd"}],"security":[{"accessToken":[]}],"components":{"securitySchemes":{"accessToken":{"type":"http","name":"accessToken","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ResponseLoginResponseV2":{"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":{"$ref":"#/components/schemas/LoginResponseV2","description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"LoginResponseV2":{"type":"object","description":"로그인 Response V2","properties":{"accessToken":{"type":"string","description":"Access Token"},"refreshToken":{"type":"string","description":"Refresh Token"}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}},"paths":{"/v2/token/refresh":{"post":{"tags":["로그인"],"summary":"로그인 토큰 갱신(Refresh)","description":"## 기능설명\n* 토큰 갱신을 수행합니다.\n---\n## 상세설명\n* refresh token을 이용하여 access token을 갱신합니다.\n* refresh token은 쿠키에 저장되어 있어야 합니다.\n* 발급받은 access token은 헤더에 accessToken으로 포함하여 사용합니다.\n","operationId":"validRefreshToken","responses":{"200":{"description":"토큰 갱신 성공","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResponseLoginResponseV2"}}}},"401":{"description":"토큰 갱신 실패","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResponseLoginResponseV2"}}}}}}}}}
```

## Access Token 검증

> \## 기능설명\
> \* Access Token 검증을 수행합니다.\
> \---\
> \## 상세설명\
> \* Access Token 을 이용하여 토큰의 상태를 확인합니다.\
> \* 토큰이 만료된 경우와 이상한지를 구분하여 반환합니다.\
> \* 토큰이 정상인 경우는 로그인 아이디를 반환합니다.<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE BO API","version":"v1"},"servers":[{"url":"https://api-bo.x2bee.com/api/bo/","description":"prd"}],"security":[{"accessToken":[]}],"components":{"securitySchemes":{"accessToken":{"type":"http","name":"accessToken","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"LoginResponseV2":{"type":"object","description":"로그인 Response V2","properties":{"accessToken":{"type":"string","description":"Access Token"},"refreshToken":{"type":"string","description":"Refresh Token"}}},"ResponseString":{"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":{"type":"string","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"}}}}},"paths":{"/v2/token/access":{"post":{"tags":["로그인"],"summary":"Access Token 검증","description":"## 기능설명\n* Access Token 검증을 수행합니다.\n---\n## 상세설명\n* Access Token 을 이용하여 토큰의 상태를 확인합니다.\n* 토큰이 만료된 경우와 이상한지를 구분하여 반환합니다.\n* 토큰이 정상인 경우는 로그인 아이디를 반환합니다.\n","operationId":"validAccessToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponseV2"}}},"required":true},"responses":{"200":{"description":"토큰 검증 성공","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResponseString"}}}},"401":{"description":"토큰 검증 실패","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResponseString"}}}}}}}}}
```

## 로그아웃

> \## 기능설명\
> \* 로그아웃을 수행합니다.\
> \---\
> \## 상세설명\
> \* refresh token을 이용하여 로그아웃을 수행합니다.\
> \* refresh token은 쿠키에 저장되어 있어야 합니다.<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE BO API","version":"v1"},"servers":[{"url":"https://api-bo.x2bee.com/api/bo/","description":"prd"}],"security":[{"accessToken":[]}],"components":{"securitySchemes":{"accessToken":{"type":"http","name":"accessToken","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/v2/logout":{"post":{"tags":["로그인"],"summary":"로그아웃","description":"## 기능설명\n* 로그아웃을 수행합니다.\n---\n## 상세설명\n* refresh token을 이용하여 로그아웃을 수행합니다.\n* refresh token은 쿠키에 저장되어 있어야 합니다.\n","operationId":"logout","responses":{"200":{"description":"로그아웃 성공","content":{"*/*":{"schema":{"type":"string"}}}}}}}}}
```

## 로그인

> \## 기능설명\
> \* 로그인을 수행합니다.\
> \---\
> \## 상세설명\
> \* id, password를 입력받아 로그인을 수행합니다.\
> \* 로그인 성공시 access token, refresh token을 발급합니다.\
> \* 발급받은 access token은 헤더에 accessToken으로 포함하여 사용합니다.\
> \* 발급받은 refresh token은 쿠키에 저장하여 사용합니다.<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE BO API","version":"v1"},"servers":[{"url":"https://api-bo.x2bee.com/api/bo/","description":"prd"}],"security":[{"accessToken":[]}],"components":{"securitySchemes":{"accessToken":{"type":"http","name":"accessToken","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"LoginRequest":{"type":"object","properties":{"seq":{"type":"integer","format":"int64"},"loginId":{"type":"string","minLength":1},"password":{"type":"string"},"remoteAddr":{"type":"string"},"lastAccessTime":{"type":"integer","format":"int64"},"userGbCd":{"type":"string"},"rtGrpNo":{"type":"string"},"jobGrpCd":{"type":"string"},"ocpCd":{"type":"string"},"caloUrl":{"type":"string"},"sysGbCd":{"type":"string"},"userId":{"type":"string"},"pwd":{"type":"string"},"userNm":{"type":"string"},"cellSctNo":{"type":"string"},"cellTxnoNo":{"type":"string"},"cellEndNo":{"type":"string"},"pwdIniYn":{"type":"string"},"sessId":{"type":"string"},"tpCd":{"type":"string"},"entrNo":{"type":"string"},"entrNm":{"type":"string"},"applicationName":{"type":"string"},"privacyPolicyInfoList":{"type":"array","items":{"$ref":"#/components/schemas/PrivacyPolicyInfo"}},"permissionToViewPersonalInfo":{"type":"object","additionalProperties":{}},"username":{"type":"string"},"accountNonExpired":{"type":"boolean"},"accountNonLocked":{"type":"boolean"},"credentialsNonExpired":{"type":"boolean"},"name":{"type":"string"},"enabled":{"type":"boolean"}},"required":["loginId"]},"PrivacyPolicyInfo":{"type":"object","description":"개인정보취급권한 DTO","properties":{"userId":{"type":"string","description":"사용자 아이디"},"indInfoGbCd":{"type":"string","description":"개인정보구분코드(UR008)"},"useYn":{"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"}}}}},"paths":{"/v2/login":{"post":{"tags":["로그인"],"summary":"로그인","description":"## 기능설명\n* 로그인을 수행합니다.\n---\n## 상세설명\n* id, password를 입력받아 로그인을 수행합니다.\n* 로그인 성공시 access token, refresh token을 발급합니다.\n* 발급받은 access token은 헤더에 accessToken으로 포함하여 사용합니다.\n* 발급받은 refresh token은 쿠키에 저장하여 사용합니다.\n","operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"로그인 성공","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"로그인 실패","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Response"}}}}}}}}}
```

## 로그인 사용자 정보

> \## 기능설명\
> \* 로그인 된 사용자의 정보를 반환합니다.\
> \---\
> \## 상세설명\
> \* 로그인 사용자의 아이다를 통해 사용자 조회 후 비민감 데이터를 반환합니다.\
> \* access token이 필요합니다.<br>

```json
{"openapi":"3.1.0","info":{"title":"X2BEE BO API","version":"v1"},"servers":[{"url":"https://api-bo.x2bee.com/api/bo/","description":"prd"}],"security":[{"accessToken":[]}],"components":{"securitySchemes":{"accessToken":{"type":"http","name":"accessToken","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ResponseAuthUserInfo":{"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":{"$ref":"#/components/schemas/AuthUserInfo","description":"payload"},"error":{"type":"boolean","description":"is error"},"errors":{"type":"array","description":"validation error list","items":{"$ref":"#/components/schemas/ValidationError"}}}},"AuthUserInfo":{"type":"object","properties":{"userId":{"type":"string"},"userNm":{"type":"string"},"emailAddr":{"type":"string"},"entrNo":{"type":"string"},"entrNm":{"type":"string"},"userGbCd":{"type":"string"},"rtGrpNo":{"type":"string"},"jobGrpCd":{"type":"string"},"sysGbCd":{"type":"string"},"rcntUseDtm":{"type":"string","format":"date-time"},"userIpAddr":{"type":"string"},"indInfoDealYn":{"type":"string"}}},"ValidationError":{"type":"object","properties":{"field":{"type":"string","description":"field"},"message":{"type":"string","description":"field message"}}}}},"paths":{"/v2/login/auth":{"get":{"tags":["로그인"],"summary":"로그인 사용자 정보","description":"## 기능설명\n* 로그인 된 사용자의 정보를 반환합니다.\n---\n## 상세설명\n* 로그인 사용자의 아이다를 통해 사용자 조회 후 비민감 데이터를 반환합니다.\n* access token이 필요합니다.\n","operationId":"getAuthUserInfo","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResponseAuthUserInfo"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://tech.x2bee.com/api/back-office-api/system-bo-api/undefined-4.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
