NHN Cloud CONSOLE에서 생성하신 조직 별로 유일한 Security Key를 보유하고 있습니다. Security Key를 통해 API로 전송되는 데이터를 암호화 처리할 수 있으며, 조직 관리와 관련된 Open API를 호출할 수 있습니다. (서비스 등록, 수정, 삭제 등) 사용하고 계시는 조직의 Online Contact에 접속하신 후 전체 관리 → SSO 로그인 → API Key에서 조직 레벨의 Security key를 확인하실 수 있습니다.
하나의 조직에서 여러 개의 서비스를 생성하실 수 있으며, 생성하신 각 서비스 별로 유일한 Security Key를 보유하고 있습니다. Security Key를 통해 API로 전송되는 데이터를 암호화 처리할 수 있으며, 서비스 관리와 관련된 Open API를 호출할 수 있습니다. (티켓 관리, FAQ 등) 서비스 추가 API(/openapi/v1/admin/service/add.json)를 통해 서비스 추가가 가능하며, 서비스 추가 후 리턴 결과 값에서 서비스 레벨의 Security Key를 취득할 수 있습니다. 또한 사용하고 계시는 조직의 Online Contact에 접속하신 후 security key를 확인하고자 하는 서비스를 선택, 서비스 관리 → 인증 → OPEN API → API Key에서도 서비스 레벨의 Security Key 취득이 가능합니다.
{
"header":{
"resultCode":200,
"resultMessage":"",
"isSuccessful":true
},
"result":{
"content":{
"serviceId":"GameBaseService",
"name":"GameBaseServiceAPI",
"active":true,
"language":"ko",
"timeZone":"Asia/Seoul",
"createdDt":1586745222442,
"updatedDt":1586745222442,
"securityKey":"cfdc25cc7ef54759ad29e6345213f2ed"
}
}
}
각 Request Header에 아래의 값들을 반드시 설정해야 합니다. - Authorization:Security Key를 통해 생성된 인증 문자열 - X-TC-Timestamp:현재 UTC 시간 값{new Date().getTime()} - OUCODE:유저 code(필수 아님,설정하지 않을 경우 기본 값은 Owner)
HmacSHA256로 암호화하거나, (조직ID + request URI + 파라미터 값 + 현재 UTC시간 값)문자열에 대해 암호화하여 Authorization 문자열을 생성하실 수 있습니다.
String URL = "http://nhn-cs.alpha-oc.toast.com/openapi/v1/admin/service/add.json";
String organizationId = "WopqM8euoYw89B7i"; // 조직ID
String securityKey = "0983e74b682b416684d2da59347aec82"; //조직 API Key
String uri = "/openapi/v1/admin/service/add.json"; // request uri
StringBuilder sb = new StringBuilder();
sb.append(organizationId);
sb.append(uri);
sb.append("GameBaseService").append("&").append("GameBaseServiceAPI").append("&").append("ko").append("&").append("Asia/Seoul");// 파라미터 값은 이름 오름차 순, 파라미터 사이는 &로 분리
Date date = new Date();
sb.append(date.getTime());
SecretKeySpec signingKey = new SecretKeySpec(securityKey.getBytes("UTF-8"), "HmacSHA256");
Mac mac = Mac.getInstance(signingKey.getAlgorithm());
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(sb.toString().getBytes("UTF-8"));
String authorization = new String(Base64.encodeBase64(rawHmac));
명칭 | 변수 | 데이터 타입 | 필수 | 설명 |
---|---|---|---|---|
Header | resultCode | VARCHAR(2) | O | 리턴 결과 Code , 정상은 200 |
resultMessage | VARCHAR(50) | O | 리턴 오류 메시지 | |
isSuccessful | Boolean | O | 실행 결과(성공:true ,실패:false) | |
Result | contents | JSON | X | 목록 결과 내용 |
content | JSON | X | 상세 결과 내용 |
환경 | BaseUrl |
---|---|
알파 | https://{domain}.alpha-oc.toast.com |
리얼 | https://{domain}.oc.toast.com |
Security Key | URL |
---|---|
조직 레벨 | /openapi/v1/admin/* |
서비스 레벨 | /{serviceId}/openapi/v1/* |
레벨 | 그룹 | 명칭 | 설명 |
---|---|---|---|
조직 레벨 | 서비스 | 서비스 추가 | 신규 서비스 추가 |
서비스 상세 | 서비스 ID를 통해 서비스 정보 조회 | ||
서비스 수정 | 서비스 ID를 통해 서비스 정보 수정 | ||
서비스 비활성화 | 서비스 ID를 통해 서비스 비활성화 | ||
서비스 활성화 | 서비스 ID를 통해 서비스 활성화 | ||
서비스 삭제 | 서비스 ID를 통해 비활성화 된 서비스 삭제 | ||
서비스 API Key 재발급 | 서비스 ID를 통해 해당 서비스에 생성된 API Key 다시 발급 | ||
서비스 목록 | 조직내에 생성된 모든 서비스 조회 | ||
서비스 계약 등록 | 서비스 계약 등록 | ||
서비스 계약 변경 | 계약 변경 (하루에 1번만 가능) | ||
서비스 계약 목록 | 조직 내 서비스 계약 목록 | ||
서비스 계약 상세 - 서비스 ID | 서비스 ID로 계약 상세 정보 취득 | ||
서비스 계약 상세 - 계약 ID | 계약 ID로 서비스 계약 상세 정보 취득 | ||
서비스 레벨 | 이메일 설정 | 대표계정 생성 | 서비스 대표계정 생성. (생성 후 수정 불가) 형식: **@oc.toast.com |
이메일 정보 조회 | 해당 서비스 모든 이메일 정보 조회 | ||
외부계정 유효성 체크 | 외부계정 유효성 체크 | ||
외부계정 등록 | 외부계정 등록(유효성 체크 후 등록 가능) | ||
외부계정 수정 | 외부계정 수정(유효성 체크 후 수정 가능) | ||
외부계정 활성화 | 비활성화 상태 외부계정을 활성화 | ||
외부계정 비활성화 | 활성화 상태 외부계정을 비활성화 | ||
외부계정 삭제 | 비활성화 상태 외부계정 삭제 | ||
이메일 정보 저장 | 이메일 정보 저장 | ||
접수유형 관리 | 접수유형 추가 | 신규 접수유형 추가 | |
접수유형 상세 | 접수유형 ID를 통해 접수유형 조회 | ||
접수유형 수정 | 접수유형 ID를 통해 접수유형 수정 | ||
접수유형 삭제 | 접수유형 ID를 통해 접수유형 삭제 | ||
접수유형 목록 | 서비스 내 접수유형 조회 | ||
티켓 관리 | 티켓 생성 | 신규 티켓 생성 | |
티켓 처리 | 티켓 ID를 통해 티켓 처리 | ||
티켓 상세 | 티켓 ID를 통해 티켓 조회 | ||
티켓 목록 | 검색 조건을 통해 조건에 맞는 티켓 리스트 노출 | ||
유저 티켓 목록 | 검색 조건을 통해 조건에 맞는 고객의 티켓 리스트 노출 | ||
티켓 첨부파일 첨부 | 서버에 파일 업로드 | ||
티켓 첨부파일 열기/다운 | 서버에 업로드 된 파일 열기/다운 | ||
티켓 첨부파일 삭제 | 서버에 업로드 된 파일 삭제 | ||
공지사항 | 공지사항 목록 조회 | 공지사항의 내용 조회, 검색 조건에 따라 공지사항 리스트를 리턴 | |
공지사항 상세 조회 | 공지사항 ID를 통해 공지사항 내용 취득 | ||
공지사항 상세 조회(여러 건) | 여러개의 공지사항 ID를 통해 내용 취득 | ||
공지사항 등록 | 신규 공지사항 등록 | ||
공지사항 수정 | ID를 통해 공지사항 수정 | ||
공지사항 삭제 | ID를 통해 공지사항 삭제 | ||
공지사항 템플릿 목록 조회 | 템플릿 내용 조회,템플릿 리스트를 리턴 | ||
공지사항 템플릿 상세 조회 | 템플릿 ID를 통해 템플릿 내용 취득 | ||
공지사항 템플릿 등록 | 신규 템플릿 등록 | ||
공지사항 템플릿 수정 | ID를 통해 템플릿 수정 | ||
공지사항 템플릿 삭제 | ID를 통해 템플릿 삭제 | ||
공지사항 첨부파일 첨부 | 서버에 파일 업로드 | ||
공지사항 첨부파일 삭제 | 서버에 업로드 한 파일 삭제 | ||
공지사항 태그 목록 조회 | 공지사항 태그 리스트 취득 | ||
공지사항 태그 상세 조회 | 태그 ID를 통해 공지사항 태그내용 취득 | ||
공지사항 태그 등록 | 신규 태그 등록 | ||
공지사항 태그 수정 | 태그 ID를 통해 공지사항 태그 수정 | ||
공지사항 태그 삭제 | 태그 ID를 통해 공지사항 태그 삭제 | ||
공지사항 말머리 목록 조회 | 공지사항 말머리 리스트 취득 | ||
공지사항 말머리 상세 조회 | 말머리 ID를 통해 공지사항 말머리 내용 취득 | ||
공지사항 말머리 등록 | 신규 말머리 등록 | ||
공지사항 말머리 수정 | 말머리 ID를 통해 말머리 명 수정 | ||
공지사항 말머리 삭제 | 말머리 ID를 통해 공지사항 말머리 삭제 | ||
상담원 관리 | 상담원 목록 조회 | 상담원 리스트 취득 | |
상담원 상세 조회 | 상담원 ID를 통해 상담원 정보 취득 | ||
상담원 추가 | 지정한 서비스에 상담원 추가 및 권한 부여 | ||
상담원 권한 변경 | 서비스 내 상담원 권한 변경 | ||
상담원 삭제 | 지정한 서비스에서 상담원 삭제 | ||
헬프센터 | 헬프센터 지정 데이터 추가 | 추가 필요한 고객정보를 DB에 저장 | |
FAQ | FAQ 목록 조회 | 조회 조건 기준으로 FAQ 리스트를 리턴 | |
FAQ 상세 조회 | FAQ ID를 통해 FAQ 내용 취득 | ||
FAQ 등록 | 신규 FAQ 등록 | ||
FAQ 수정 | FAQ ID 기준으로 내용 수정 | ||
FAQ 카테고리별 고정 설정 | FAQ 문서가 속한 카테고리 상단에 고정되도록 설정 | ||
FAQ 메인화면 고정 설정 | FAQ 문서가 메인화면 카테고리 상단에 고정되도록 설정 | ||
FAQ 완료처리 | FAQ 상태를 완료상태로 변경(status=C) | ||
FAQ 삭제 | FAQ ID 기준으로 FAQ 삭제 | ||
FAQ 카테고리 목록 조회 | FAQ 카테고리 리스트 취득 | ||
FAQ 카테고리 상세 조회 | 카테고리 ID를 통해 FAQ 카테고리 내용 취득 | ||
FAQ 카테고리 추가 | 신규 FAQ 카테고리 추가 | ||
FAQ 카테고리 수정 | ID 기준으로 카테고리 명 수정 | ||
FAQ 카테고리 삭제 | 카테고리 ID를 통해 FAQ 카테고리 삭제 | ||
FAQ 첨부파일 첨부 | 서버에 파일 업로드 | ||
FAQ 첨부파일 삭제 | 서버에 업로드한 파일 삭제 | ||
SSO | SSO 원격로그인 API (Client Side) | 사용자 시스템에서 동적으로 form을 생성하여 브라우저에 반환, form은 자동으로 API에 form 정보를 전달, 인증 후 성공 시 로그인 쿠키 값 설정 | |
SSO 원격로그인 API (Server Side) | 사용자가 서버에서 직접 API 호출, API 로그인 성공 후 로그인 쿠키 값 설정 | ||
SSO 로그인 상태 API | 사용자가 쿠키 정보를 기준으로 로그인 여부를 확인 후, JSON 형식의 데이터를 리턴 | ||
고객정보 연동 | 고객정보 연동 | 전화 문의 인입 시 매체번호를 통해 고객 데이터를 조회하여 화면에 표시 |