1.1개요
테넌트 별 개별 시나리오 편집기에 접속을 관리 하기 위한 API 입니다.
API는 http/https 프로토콜을 사용하며, GET, POST, DELETE method를 사용합니다.
request , response는 JSON String 형태로 전달됩니다.
1.1.1설명
그림 1-1시나리오 편집기 내재화 시스템구성도
시나리오 편집기가 실행될 서버 리스트를 관리 할 수 있습니다.
서버 별로 여러 개의 시나리오 편집기를 생성 할 수 있습니다.
하나 이상의 서버를 등록 후 시나리오 편집기를 실행 할 수 있습니다.
1.1.2멀티 인스턴스(Multi Instance)
서버 하나에 여러 개의 시나리오 편집기를 실행하는 것을 의미합니다.
https://서버:1880/[tenant_id]/editor/?access_token=[SID] 형식으로 접근을 지원 합니다.
1.1.3지원 목록
서버 정보 관리
테넌트 별 시나리오 편집기 정보 관리
시나리오 편집기 상태 관리
1.1.4선결 과제
시나리오 편집기가 실행 할 서버에는 반드시 시나리오편집기 GW 가 설치 되어있어야 합니다.
외부(내부) 통신을 하기 위해서는 다음의 포트가 열려 있어야 합니다.
1880 : 시나리오 편집기 접속용 포트
8600 : API 용 포트
1.2API
1.2.1SSO 인증
현재 해당 기능은 지원하지 않습니다.
- Header 의 Authorization 필드에 SSO 토큰 값으로 인증이 됩니다.
- [Request]
[MOTHOD] [PATH]
- [Header]
Authorization: Bearer 토큰
- [SAMPLE]
curl -H "Authorization: Bearer eyAiYWxnIjogIkhTMjU...hfrTUXE4bX5to" \ -X GET \ "http://127.0.0.1:8600/server/list"
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 코드정보 |
message | text | Y |
* 응답 성공
{ "code": "200", "message": "OK" , ...}
* 응답 실패(400)
{ "code": "401", "message": "Unauthorized" }
1.2.2서버정보 관리
시나리오 편집기가 실행될 서버 리스트를 관리 한다.
1.2.2.1서버정보 등록
시나리오 편집기가 실행될 서버를 등록한다.
서버이름은 중복을 허용하지 않는다.
POST /server/create
- [Header]
Authorization: Bearer 토큰
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
server_name | text(20) | Y | 서버이름 (유니트한 값) 최대 20자이며 [A-Za-z0-9_]{1,20}에 해당해야 합니다. |
ip | text(35) | Y | IP Address (IPV4 만 지원) |
port | int(5) | N | 서버 API 포트 기본값(8600) |
is_https | bool | N | 기본값 (false) |
desc | text(100) | N | 상세 설명 |
- [SAMPLE]
curl -H "Authorization: Bearer eyAiYWxnIjogIkhT...d8b2Thw" \ -X POST -H "Content-type: application/json" \ -d \ '{"server_name":"server1","ip":"127.0.0.1","desc":"테스트서버1" }' \ http://127.0.0.1:8600/server/create
* 응답
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 코드정보 |
message | text | N |
* 응답
{ "code": "200", "message": "OK" }
1.2.2.2서버정보 삭제
시나리오 편집기가 실행될 서버를 삭제한다.
서버에 시나리오 편집기가 등록되어 있을 경우는 삭제를 할 수가 없다. 시나리오 편집기를 모두 삭제한 후에 삭제가 가능하다.
POST /server/delete
- [Header]
Authorization: Bearer 토큰
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
server_name | text(20) | Y | 서버이름 (유니트한 값) |
desc | text(100) | N | 상세 설명 |
- [SAMPLE]
curl -H "Authorization: Bearer eyAiYWxnIjogIkhT...d8b2Thw" \ -X POST -H "Content-type: application/json" \ -d \ '{"server_name":"server1","desc":"테스트서버1 삭제" }' \ http://127.0.0.1:8600/server/delete
* 응답
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 코드정보 |
message | text | N |
* 응답
{ "code": "200", "message": "OK" }
1.2.2.3서버정보 리스트
시나리오 편집기가 실행될 서버 리스트 입니다.
전체 리스트가 출력됩니다.
GET /server/list
- [Header]
Authorization: Bearer 토큰
- [Parameter]
NONE
- [SAMPLE]
curl -H "Authorization: Bearer eyAiYWxnIjogIkhT...d8b2Thw" \ -X GET \ "http://127.0.0.1:8600/server/list"
* 응답
- [Response]
키 | 타입 | 필수 | 설명 | |
---|---|---|---|---|
code | text | Y | 결과 코드정보 | |
message | text | N | ||
list | array | - | ||
server_name | text | - | 서버이름 | |
ip | text | - | IP Address (IPV4 만 지원) | |
port | int | - | API 포트 | |
is_https | bool | - | https 적용여부 | |
desc | text | - | 상세 설명 | |
update_time | text | - | 변경일 |
* 응답
{ "code": "200", "message": "OK", "list": [ { "server_name": "server1", "ip": "10.10.10.1", "port": 8600, "is_https": false, "desc": "테스트 서버1", "update_time": "2024-01-17 13:55:17" }, { "server_name": "server2", "ip": "10.10.10.2", "port": 8600, "is_https": false, "desc": "테스트 서버2", "update_time": "2024-05-16 14:15:40" } ] }
1.2.3시나리오 편집기 관리
테넌트별 시나리오 편집기를 등록 및 관리 한다.
테넌트별 중복 등록은 불가능 하다.
1.2.3.1시나리오 편집기 생성
테넌트의 시나리오 편집기를 생성한다.
- [Request]
POST /editor/create
- [Header]
Authorization: Bearer 토큰
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
tenant_id | int(5) | Y | 테넌트 ID |
server_name | text(20) | Y | 서버정보 등록 에 등록된 서버명 |
is_https | bool | N | Https 사용 유무 ( true or false), 기본값은 false |
desc | text(100) | N | 상세 설명 |
- [SAMPLE]
curl -H "Authorization: Bearer eyAiYWxnIjogIkhT...d8b2Thw" \ -X POST -H "Content-type: application/json" \ -d \ '{"tenant_id":1, "server_name":"server1","desc":"테넌트1 편집기"}' \ http://127.0.0.1:8600/editor/create
- [Response] 조직도 배열
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 코드정보 |
message | text | N |
* 응답
{ "code": "200", "message": "OK" }
1.2.3.2시나리오 편집기 삭제
테넌트의 시나리오 편집기 정보를 삭제합니다.
- [Request]
POST /editor/delete
- [Header]
Authorization: Bearer 토큰
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
tenant_id | int(5) | Y | 테넌트 ID |
server_name | text(20) | Y | 서버정보등록 에 등록된 서버명 |
desc | text(100) | Y or N | 상세 설명 |
- [SAMPLE]
curl -H "Authorization: Bearer eyAiYWxnIjogIkhT...d8b2Thw" \ -X POST -H "Content-type: application/json" \ -d \ '{"tenant_id":1, "server_name":"server1","desc":"테넌트1 편집기 삭제"}' \ http://127.0.0.1:8600/editor/delete
- [Response] 조직도 배열
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 코드정보 |
message | text | N |
* 응답
{ "code": "200", "message": "OK" }
1.2.3.3시나리오 편집기 리스트
시나리오 편집기 목록을 요청합니다.
GET /editor/list
- [Header]
Authorization: Bearer 토큰
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
server_name | text(20) | Y | 서버정보등록 에 등록된 서버명 |
tenant_id | int(5) | N | 테넌트 ID 값 |
- [SAMPLE]
curl -H "Authorization: Bearer eyAiYWxnIjogIkhT...d8b2Thw" \ -X GET \ "http://127.0.0.1:8600/editor/list?server_name=server1"
* 응답
- [Response]
키 | 타입 | 필수 | 설명 | |
---|---|---|---|---|
code | text | Y | 결과 코드정보 | |
message | text | N | ||
list | array | - | 시나리오 편집기 정보 배열 | |
tenant_id | int | - | 테넌트 ID 값 | |
server_name | text | - | 서버이름 | |
port | int | - | port 정보 | |
is_https | bool | - | https 사용유무 | |
desc | text | - | 상세 설명 | |
update_time | text | - | 변경일 |
* 응답
{ "code": "200", "message": "OK", "list": [ { "tenant_id": 1, "server_name": "server1", "port": 1882, "is_https": false, "desc": "테넌트1", }, { "tenant_id": 2, "server_name": "server1", "port": 1884, "is_https": false, "desc": "테넌트2", } ] }
* 응답 실패(400)
{ "code": "404", "message": "Not Found" }
1.2.4시나리오편집기 상태 관리
테넌트별 시나리오 편집기를 시작 또는 종료 한다.
테넌트별 시나리오 편집기의 상태를 확인 한다.
1.2.4.1시나리오 편집기 시작
테넌트의 시나리오 편집기를 시작한다.
- [Request]
POST /editor/start
- [Header]
Authorization: Bearer 토큰
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
tenant_id | int(5) | Y | 테넌트 ID |
desc | text(100) | N | 상세 설명 |
- [SAMPLE]
curl -H "Authorization: Bearer eyAiYWxnIjogIkhT...d8b2Thw" \ -X POST -H "Content-type: application/json" \ -d \ '{"tenant_id":"1", "desc":"테넌트1 편집기 시작"}' \ http://127.0.0.1:8600/editor/start
- [Response] 조직도 배열
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 코드정보 |
message | text | N |
* 응답
{ "code": "200", "message": "OK" }
1.2.4.2시나리오 편집기 종료
테넌트의 시나리오 편집기 정보를 수정합니다.
상태가 start 일 경우만 stop 이 가능하다.
- [Request]
POST /editor/stop
- [Header]
Authorization: Bearer 토큰
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
tenant_id | int(5) | Y | 테넌트 ID |
desc | text(100) | N | 상세 설명 |
- [SAMPLE]
curl -H "Authorization: Bearer eyAiYWxnIjogIkhT...d8b2Thw" \ -X POST -H "Content-type: application/json" \ -d \ '{"tenant_id":"1", "desc":"테넌트1 편집기 종료"}' \ http://127.0.0.1:8600/editor/stop
- [Response] 조직도 배열
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 코드정보 |
message | text | N |
* 응답
{ "code": "200", "message": "OK" }
1.2.4.3시나리오 편집기 상태
시나리오 편집기 상태정보를 요청합니다.
GET /editor/status
- [Header]
Authorization: Bearer 토큰
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
server_name | text(20) | Y | 서버정보등록 에 등록된 서버명 |
tenant_id | int(5) | N | 테넌트 ID 값 (존재할 경우 하나의 객체만 리턴된다) |
- [SAMPLE]
curl -H "Authorization: Bearer eyAiYWxnIjogIkhT...d8b2Thw" \ -X GET \ "http://127.0.0.1:8600/editor/status?server_name=server1"
* 응답
- [Response]
키 | 타입 | 필수 | 설명 | |
---|---|---|---|---|
code | text | Y | 결과 코드정보 | |
message | text | N | ||
list | array | - | 시나리오 편집기 상태 정보 배열 | |
server_name | text | 서버이름 | ||
tenant_id | int | - | 테넌트 ID 값 | |
status | text | - | 상태 정보 ( start, stop ) |
* 응답
{ "code": "200", "message": "OK", "list": [ { "tenant_id": 1, "status": "start", }, { "tenant_id": 2, "status": "stop" } ] }
* 응답 실패(400)
{ "code": "404", "message": "Not Found" }
1.3코드 정의
1.3.1오류 코드
code | message | 설명 |
---|---|---|
0 | 정상코드 | |
400 | ForbiddenException | 권한 없음 |
401 | UnauthorizedException | 인증 실패 |
404 | [Error]Not found! | 찾기 실패 |
411 | [Error] message invalid. | 메시지 타입 오류 |
412 | [Error] duplicate (server_name) | 서버명 중복 오류 |
413 | [Error] Not found (server). | 서버 Not found. |
414 | [Error] The editor exists on the server. | 서버에 편집기 정보가 존재한다. |
415 | [Error] duplicate (tenant) | tenant 정보 중복 |
416 | [Error] parameter error(server_name) | SERVER NAME 오류 |
417 | [Error] parameter error(ip) | IP 오류 |
418 | [Error] Not found (editor). | 시나리오편집기 못참음 |
419 | [Error] parameter error(tenant_id) | TENANT ID 오류 |
421 | [Error] Not found (tenant) | Tenant 존재하지 않음 |
424 | [Error] Access Denied | 권한없음 |
431 | [Error] parameter error(max count) | 최대 요청 개수 초과 |
441 | [Error] The editor is running. | 편집기가 실행중 |
442 | [Error] An error occurred when running the editor. | 실행 오류 |
443 | [Error] The editor is not running. | 편집기가 실행중 아님 |
501 | [Error] Server DB (server) | 서버 DB 오류 |
502 | [Error] Server DB (editor) | 서버 DB 오류 |
600 | FailedToSendMessageException | 메시지 전송 실패 |
601 | InternalSystemErrorException | 내부 시스템 에러 |