WORKPLACE [g]
개요
Workplace[g]상품의 조직/사원/직급/직책/기본정보 설정등을 설정 할 수 있는 API를 제공합니다.
HTTP 방식의 POST/PUT/DELETE 메서드 호출을 통해서 이루어집니다.
공통설정
Workplace[g] URL
POST/PUT/DELETE
https://workplaceg.apigw.ntruss.com/organization/apigw/v1
요청 헤더
헤더 명 | 설명 |
---|---|
x-ncp-apigw-timestamp | 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타내며 API Gateway 서버와 시간차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주 x-ncp-apigw-timestamp:{Timestamp} |
x-ncp-apigw-api-key | APIGW 에서 발급받은 키 값x-ncp-apigw-api-key:{API Gateway API Key} |
x-ncp-iam-access-key | 네이버 클라우드 플랫폼 포털에서 발급받은 Access Key ID 값x-ncp-iam-access-key:{Account Access Key} |
x-ncp-apigw-signature-v1 | Access Key ID 값 과 Secret Key 로 암호화한 서명x-ncp-apigw-signature-v1:{API Gateway Signature} |
Content-Type | Request body content type을 application/json 으로 지정Content-Type: application/json |
인증 헤더
WORKPLACE[g] API는 네이버 클라우드 플랫폼 API Gateway를 통하여 제공되며, API Gateway에 등록된 API를 사용하기 위해서는 3가지 인증키(Access Key ID
, Secret Key
, API Key
)를 발급받아야 합니다
자세한 내용은 NAVER CLOUD PLATFORM API를 참고 부탁드립니다
- 인증키 생성
- 네이버 클라우드 플랫폼 포털의 마이페이지 > 계정관리 > 인증키 관리 메뉴에서 신규 API 인증키 생성을 클릭하여
Access Key ID
,Secret Key
를 생성합니다 - 만약
Access Key ID
,Secret Key
가 있다면 해당 키를 사용합니다.
- 네이버 클라우드 플랫폼 포털의 마이페이지 > 계정관리 > 인증키 관리 메뉴에서 신규 API 인증키 생성을 클릭하여
요청 예시
curl -i -X GET \
-H "x-ncp-apigw-timestamp:1505290625682" \
-H "x-ncp-apigw-api-key:cstWXuw4wqp1EfuqDwZeMz5fh0epaTykRRRuy5Ra" \
-H "x-ncp-iam-access-key:D78BB444D6D3C84CA38A" \
-H "x-ncp-apigw-signature-v1:WTPItrmMIfLUk/UyUIyoQbA/z5hq9o3G8eQMolUzTEo=" \
'https://workplageg.apigw.ntruss.com//calendar/v1/holiday?year=2018&locale=ko_KR&companyId=e721e2da-29ee-4782-9672-3d2b150ac1a6'
Signature 생성(개행 문자는 \n을 사용)
- 요청에 맞게 StringToSign를 생성하고 SecretKey로 HmacSHA256 알고리즘으로 암호화한 후 Base64로 인코딩합니다
- 이 값을
x-ncp-apigw-signature-v1
로 사용합니다.
샘플 코드
public String makeSignature() {
String space = " "; // 공백
String newLine = "\n"; // 줄바꿈
String method = "GET"; // HTTP 메소드
String url = "/calendar/v1/holiday?year=2018&locale=ko_KR&companyId=e721e2da-29ee-4782-9672-3d2b150ac1a6"; // 도메인을 제외한 "/" 아래 전체 url (쿼리스트링 포함)
String timestamp = "{timestamp}"; // 현재 타임스탬프 (epoch, millisecond)
String apiKey = "{apiKey}"; // api key (from api gateway)
String accessKey = "{accessKey}"; // access key id (from portal or Sub Account)
String secretKey = "{secretKey}"; // secret key (from portal or Sub Account)
String message = new StringBuilder()
.append(method)
.append(space)
.append(url)
.append(newLine)
.append(timestamp)
.append(newLine)
.append(apiKey)
.append(newLine)
.append(accessKey)
.toString();
SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));
String encodeBase64String = Base64.encodeBase64String(rawHmac);
return encodeBase64String;
}
공통오류
HTTP 상태 코드로 리턴되고, Body정보로 전달한다.
파라미터 | 설명 |
---|---|
resultCode | 오류코드 |
resultMessage | 오류상세 설명 |
오류코드 | 설명 |
---|---|
E900 | Path 파라미터 오류 |
E901 | WORKPLACE [g] > Developers API 설정 On or Off |
E902 | Body 파라미터 오류 |
E903 | 기본설정정보를 NO 로 설정 |
E904 | externalKey 유효성 오류 |
E1001 | 서버 내부 오류 |
E1003 | 사진파일 업로드 실패 |
{
"resultCode": "E901",
"resultMessage": "Please check if API is used in the developer console."
}
HTTP 상태 코드 | 응답 메세지 | 설명 |
---|---|---|
200 | OK | 일반적인 요청 성공 |
201 | Created | 리소스 생성 성공에 대한 응답 코드 |
400 | Bad Request | 일반적인 요청실패에 사용( 대체로 서버가 이해할 수 없는 형식의 요청이 왔을 때 응답하기 위해 사용) |
500 | Internal Server Error | 일반적인 서버 에러에 대한 응답코드입니다. 4XX대의 에러코드가 클라이언트 측 에러를 나타내기 위해 사용된다면, 5XX대의 에러코드는 서버 측 에러를 나타내기 위해 사용 |
오퍼레이션
참여해 주셔서 고맙습니다!
여러분의 의견을 귀기울여 듣고 개선해 나가겠습니다.