본 문서는 Morpheus Mobile Client 와 Gateway Server간의 개발 연동을 위한 제반 사항을 기술한다.
해당 서비스 리소스에 대한 추가적인 요청 정보에 대해서 Parameter (HTTP Query String)로 정의하여 사용하도록 한다.
구분 | 항목 | Type | 필수 | 설명 |
---|---|---|---|---|
body | HTTP Method에 따른 선택적 정의 부분 | String | O | 해당 URI에 따른 값을 추가. (예: {“body”:{“deploy”:”0”…}}) |
API Response는 아래와 같은 구조를 같는 JSON 객체로 표현된다. 모바일 서버에서 클라이언트로 전송된 메시지 포맷은 아래와 같다.
구분 | 항목 | Type | 필수 | 설명 |
---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 |
result_msg | String | M | 처리 응답 결과 메시지 | |
body | 사용자 정의 부분 | String | M | 해당 리소스에 대한 정보를 표현하고 값이 존재 하지 않으면 공란으로 채운다. (예: {“body”:””}) |
(예제) API 호출 성공 응답
{
"head": {
"result_code": "200",
"result_msg": "OK"
},
"body": {
"name": "홍길동"
}
}
클라이언트와 서버간 오류 메시지는 다음과 같이 정의한다.
코드구분 | 구분명 | 코드 | 설명 |
---|---|---|---|
2xx | Successful | 200 | 정상적으로 처리 되었습니다. |
204 | 클라이언트 요구를 처리했으나 전송할 데이터가 없습니다. | ||
4xx | Client Error | 400 | 클라이언트의 잘못된 요청으로 처리할 수 없습니다. |
401 | 클라이이언트 인증에 실패 하였습니다. | ||
405 | 리소스를 허용할 수 없습니다. | ||
5xx | Server Error | 500 | 서버에서 오류가 발생 하였습니다. |
502 | 서버가 과부하 상태 입니다. | ||
503 | 서버가 일시적으로 다운 되었습니다. | ||
504 | 장시간 미사용으로 서버접속이 종료 되었습니다. | ||
599 | 보안 프로그램 오류 입니다. | ||
598 | 보안 통신이 원활하지 않습니다. | ||
597 | 응답결과 데이터가 존재하지 않습니다. | ||
596 | 응답 데이터 형식 오류가 발생하였습니다. |
App Store 기능을 사용하기 위해 다음과 같은 모바일 API를 사용한다.
구분 | API URL | 설명 |
---|---|---|
APP 목록 조회 | /api/appinfo/list | AppStore에 등록된 APP 목록 정보 조회 |
APP 정보 조회 | /api/appinfo/get | AppStore에 등록된 APP 상세 정보 조회 |
카테고리 목록 조회 | /api/category/list | 해당 상위코드 아래 카테고리 목록 조회 |
APP 다운로드 이력 저장 | /api/download/add | APP 다운로드 후 다운로드 이력 저장 |
로그인 | /api/login/get | APP에서 사용자 로그인 처리 |
단말기 목록 조회 | /api/device/get | 사용자의 단말기 목록 조회 |
단말기 사용 중지 | /api/device/disable | 사용자의 단말기를 사용 중지처리 |
공지사항 조회 | /api/notice/get | 스토어 공지사항 조회 |
AppStore에 등록된 APP 목록을 조회한다
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/api/appinfo/list |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | Array | M | ||
body | userid | String | M | |
system_name | String | M | 시스템명 | |
app_no | String | M | 앱일련번호 |
Request 예제
{
"head": {
},
"body": {
"userid": "test01",
"system_name": "iOS",
"app_no": "1"
}
}
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 | |
---|---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 | |
result_msg | String | M | 처리 응답 결과 메시지 | ||
body | list | Array | M | ||
ResultCd | String | M | 결과 코드 | ||
ResultMsg | String | M | 결과 메시지 | ||
app_no | String | M | 앱일련번호 | ||
app_id | String | M | 앱아이디 | ||
app_nm | String | M | 앱이름 | ||
package_nm | String | M | 패키지명 | ||
required | String | M | 필수여부(10. 필수, 20.일반) | ||
cate_cd | String | M | 카테고리코드 | ||
cate_nm | String | M | 카테고리명 | ||
icon_app_url | String | M | 작은아이콘URL(등록된 아이콘이 없으면 default 제공) | ||
icon_app_bic_url | String | M | 큰아이콘URL(등록된 아이콘이 없으면 default 제공) | ||
app_ver | String | M | 앱버전 | ||
bin_url | String | M | 앱설치파일경로 | ||
bin_size | Integer | M | 앱설치파일크기 | ||
reg_dttm | String | M | 등록일 | ||
dl_cnt | Integer | M | 다운로드 횟수 |
Response 예제
{
"head": {
"result_code": "200",
"result_msg": "Success"
},
"body": {
"ResultCd": 0,
"ResultMsg": "리스트 조회 완료",
"list": [
{
"app_no": "1",
"app_id": "1",
"app_nm": "PUSH_TEST",
"package_nm": "com.uracle.push.test",
"required": "20",
"cate_cd": "1",
"cate_nm": "TEST",
"icon_app_url": "http://127.0.0.1/msp-admin/.",
"icon_app_bic_url": "http://127.0.0.1/msp-admin/img/8ad72197-7f7e-4127-906b-d2c567a58851.png",
"app_ver": "0.0.1",
"bin_url": "http://127.0.0.1/msp-admin/apk/1fd63af6-42bc-4fda-9c7a-80b37b31bacf.apk",
"bin_size": 15,
"reg_dttm": "2024-02-16 10:26:23",
"dl_cnt": 1
}
]
}
}
AppStore에 등록된 APP 상세 정보를 조회한다
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/api/appinfo/get |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | Array | M | ||
body | app_no | String | M | 앱일련번호 |
Request 예제
{
"head": {},
"body": {
"app_no": "1"
}
}
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 | |
---|---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 | |
result_msg | String | M | 처리 응답 결과 메시지 | ||
body | ResultCd | String | M | 결과 코드 | |
ResultMsg | String | M | 결과 메시지 | ||
icon_app_bic_url | String | M | 큰아이콘URL(등록된 아이콘이 없으면 default 제공) | ||
icon_app_url | String | M | 작은아이콘URL(등록된 아이콘이 없으면 default 제공) | ||
package_nm | String | M | 패키지명 | ||
ios_dist_type | String | M | 배포 타입 | ||
required | String | M | 필수여부(10. 필수, 20.일반) | ||
cate_nm | String | M | 카테고리명 | ||
bin_no | String | M | 바이너리 일련번호 | ||
url_scheme | String | M | 호출 URL | ||
cate_cd | String | M | 카테고리코드 | ||
dl_cnt | String | M | 다운로드 횟수 | ||
app_ver | String | M | 앱버전 | ||
app_nm | String | M | 앱이름 | ||
con_detail_img | Array | M | 미리보기(등록된 미리보기가 없으면 default 제공) | ||
img_url | String | M | 미리보기 이미지 URL | ||
app_no | String | M | 앱일련번호 | ||
app_desc | String | M | 앱설명 | ||
reg_dttm | String | M | 등록일 | ||
app_id | String | M | 앱아이디 | ||
bin_url | String | M | 앱설치파일경로 | ||
bin_size | String | M | 앱설치파일크기 |
Response 예제
{
"head": {
"result_msg": "Success",
"result_code": "200"
},
"body": {
"ResultCd": "0",
"ResultMsg": "App 상세조회 완료",
"icon_app_bic_url": "http://127.0.0.1/msp-admin/.",
"icon_app_url": "http://127.0.0.1/msp-admin/.",
"package_nm": "hello",
"ios_dist_type": null,
"required": "10",
"cate_nm": "TEST",
"bin_no": "4",
"url_scheme": null,
"cate_cd": "2",
"dl_cnt": 2,
"app_ver": "0.0.2",
"app_nm": "hello",
"con_detail_img": [],
"app_no": "1",
"app_desc": null,
"reg_dttm": "2023-09-20 19:14:51.0",
"app_id": "1",
"bin_url": "http://127.0.0.1/msp-admin/apk/1fd63af6-42bc-4fda-9c7a-80b37b31bacf.apk",
"bin_size": 15
}
}
해당 상위코드 아래 카테고리 목록을 조회한다.
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/api/category/list |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | Array | M | ||
body | parent_cate_cd | String | M | 상위 카테고리코드 |
Request 예제
{
"head": {},
"body": {
"parent_cate_cd": "STORE"
}
}
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 | |
---|---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 | |
result_msg | String | M | 처리 응답 결과 메시지 | ||
body | list | Array | M | ||
cate_cd | String | M | 카테고리코드 | ||
cate_nm | String | M | 카테고리명 |
Response 예제
{
"head": {
"result_msg": "Success",
"result_code": "200"
},
"body": {
"list": [
{
"cate_cd": "2",
"cate_nm": "TEST"
}
]
}
}
APP 다운로드 후 다운로드 이력을 저장한다
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/api/download/add |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | screen_id | String | M | 화면 스크린아이디 |
system_name | String | M | 시스템명 | |
phone_no | String | M | 핸드폰번호 | |
app_version | String | M | 앱버전 | |
appid | String | M | 앱아이디 | |
device_md | String | M | 단말기 모델 | |
device_id | String | M | 단말기 아이디 | |
app_name | String | M | 앱이름 | |
callback_request_data_flag | String | M | HTTP 요청 데이터를 응답 데이터에 포함시켜 수신할지에 대한 여부 | |
system_version | String | M | 단말 OS 버전 | |
user_id | String | M | 사용자 아이디 | |
user_name | String | M | 사용자명 | |
body | emp_no | String | M | 사원번호 |
app_id | String | M | 앱아이디 | |
bin_no | String | M | 바이너리 일련번호 | |
cuid | String | M | 고객고유식별번호 예) 도시철도 : emp_no |
Request 예제
{
"head": {
"screen_id": "0",
"system_name": "Android",
"phone_no": "1234567890",
"app_version": "0",
"appid": "kr.co.morpheus.mobile1",
"device_md": "SM-N900S",
"device_id": "257630051275603",
"app_name": "Morpheus",
"callback_request_data_flag": "n",
"system_version": "19",
"user_id": "user",
"user_name": "name"
},
"body": {
"emp_no": "1",
"app_id": "kr.co.morpheus.mobile1",
"bin_no" : "4",
"cuid": "0001"
}
}
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 |
result_msg | String | M | 처리 응답 결과 메시지 | |
body | Array | M |
Response 예제
{
"head": {
"result_code": "200",
"result_msg": "Success"
},
"body": {
}
}
APP에서 사용자 로그인을 처리한다
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/api/login/get |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | screen_id | String | M | 화면 스크린아이디 |
system_name | String | M | 시스템명 | |
phone_no | String | M | 핸드폰번호 | |
app_version | String | M | 앱버전 | |
appid | String | M | 앱아이디 | |
device_md | String | M | 단말기 모델 | |
device_id | String | M | 단말기 아이디 | |
app_name | String | M | 앱이름 | |
callback_request_data_flag | String | M | HTTP 요청 데이터를 응답 데이터에 포함시켜 수신할지에 대한 여부 | |
system_version | String | M | 단말 OS 버전 | |
user_id | String | M | 사용자 아이디 | |
user_name | String | M | 사용자명 | |
body | emp_no | String | M | 사원번호 |
user_id | String | M | 사용자 ID | |
user_pw | String | M | 사용자 패스워드 |
Request 예제
{
"head": {
"screen_id": "0",
"system_name": "Android",
"phone_no": "1234567890",
"app_version": "0",
"appid": "kr.co.morpheus.mobile1",
"device_md": "SM-N900S",
"device_id": "111111223333338",
"app_name": "Morpheus",
"callback_request_data_flag": "n",
"system_version": "19",
"user_id": "user",
"user_name": "name"
},
"body": {
"emp_no": "1",
"user_id": "1",
"user_pw" : "1234"
}
}
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 |
result_msg | String | M | 처리 응답 결과 메시지 | |
body | EMP_NO | String | M | 사원번호 |
EMP_NM | String | M | 사원명 | |
MSG | String | M | 처리 메시지 |
Response 예제
{
"head": {
"result_code": "200",
"result_msg": "OK"
},
"body": {
"EMP_NO": "1",
"EMP_NM": "11",
"MSG": "로그인에 성공 했습니다."
}
}
사용자의 단말기 목록을 조회한다
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/api/device/get |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | device_id | String | M | 단말기 고유번호 |
body | emp_no | String | M | 사원번호 |
Request 예제
{
"head": {
"device_id": "111111223333338"
},
"body": {
"emp_no" : "1"
}
}
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 | |
---|---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 | |
result_msg | String | M | 처리 응답 결과 메시지 | ||
body | list | Array | M | ||
use_fg | String | M | 단말기 사용여부 | ||
device_nm | String | M | 단말기 모델명 | ||
os_nm | String | M | 운영체제 | ||
device_uuid | String | M | 단말기 고유번호 | ||
last_date | String | M | 마지막 접속일 |
Response 예제
{
"head": {
"result_msg": "Success",
"result_code": "200"
},
"body": {
"list": [
{
"use_fg": "P",
"device_nm": "SM-N960F",
"os_nm": "Android",
"device_uuid": "111111223333338",
"last_date": "2024.01.18 14:04"
}
]
}
}
사용자의 단말기를 사용 중지 처리한다
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/api/device/disable |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | Array | M | ||
body | emp_no | String | M | 사원번호 |
device_uuid | String | M | 단말기 고유번호 |
Request 예제
{
"head": {
},
"body": {
"emp_no" : "1",
"device_uuid": "257630051275603"
}
}
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 |
result_msg | String | M | 처리 응답 결과 메시지 | |
body | Array | M |
Response 예제
{
"head": {
"result_code": "200",
"result_msg": "OK"
},
"body": {
}
}
스토어 공지사항을 조회한다
Request 방식
메서드 | 요청 URL |
---|---|
POST | http://{주소}:{Port}/{Context}/api/notice/get |
Request Header
파라미터 | 헤더값 |
---|---|
Accept | application/json |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Request Paramerter
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 |
---|---|---|---|---|
head | Array | M | ||
body | page_num | String | M | 페이지 번호 |
page_size | String | M | 페이지 목록 크기 |
Request 예제
{
"head": {},
"body": {
"page_num": "1",
"page_size": "1"
}
}
JSON KEY | 파라미터 | 타입 | 필수여부 | 설명 | |
---|---|---|---|---|---|
head | result_code | String | M | 처리 응답 결과 코드 | |
result_msg | String | M | 처리 응답 결과 메시지 | ||
body | list | Array | M | ||
board_IDX | String | M | 글 번호 | ||
board_TYPE | String | M | 게시판 타입 | ||
board_DETAIL_TYPE | String | M | 게시판 상세타입 | ||
board_DETAIL_NAME | String | M | 게시판 상세이름 | ||
board_TITLE | String | M | 게시판 제목 | ||
board_CONTENT | String | M | 게시판 내용 | ||
secret_YN | String | M | 공개 여부 | ||
ref | String | M | 계층그룹 최상위부모 BOARD_IDX | ||
rnum | String | M | 게시글(공지사항) 순번 | ||
tot_CNT | String | M | 게시글(공지사항) 개수 | ||
svc_ID | String | M | 서비스 ID | ||
hit | String | M | 조회수 | ||
use_YN | String | M | 사용유무 | ||
reg_ID | String | M | 등록자 ID | ||
reg_DT | String | M | 등록일자 | ||
mod_DT | String | M | 수정일자 | ||
mod_ID | String | M | 수정자 ID | ||
stp | Integer | M | 계층별 단계 | ||
lvl | Integer | M | 레벨 |
Response 예제
{
"head": {
"result_msg": "Success",
"result_code": "200"
},
"body": {
"list": [
{
"board_IDX": "19",
"board_TYPE": "NOTICE",
"board_DETAIL_TYPE": "10",
"board_DETAIL_NAME": "공지",
"board_TITLE": "공지제목",
"board_CONTENT": "공지 내용입니다",
"secret_YN": "Y",
"ref": "19",
"rnum": "1",
"tot_CNT": "4",
"svc_ID": "2",
"hit": "5",
"use_YN": "Y",
"reg_ID": "admin",
"reg_DT": "2023.06.13",
"mod_DT": null,
"mod_ID": null,
"stp": 0,
"lvl": 0
}
]
}
}