콘텐츠로 이동

도브러너 서비스 API 가이드

도브러너 서비스 고객은 도브러너 웹 콘솔에서 콘텐츠 패키징, 라이선스 발급 등 다양한 데이터를 확인할 수 있습니다. API 기반의 데이터 접근이 필요한 경우, 고객은 도브러너 서비스 API를 이용해 도브러너 서버 측 데이터를 자사 시스템과 통합할 수 있습니다.

이 문서는 2021년 12월에 출시된 PallCon 서비스 API V2를 기준으로 작성되었습니다.

도브러너 서비스 API는 정보의 안전한 전송을 위해 JSON Web Token(JWT)을 사용합니다.

온라인 JWT 도구 또는 서버 측 프로그래밍 언어를 사용하여 JWT 토큰을 생성하고 테스트할 수 있습니다.

Service API JWT Specification

토큰은 HMAC SHA256(HS256) 알고리듬과 함께 계정별 비밀 키를 사용하여 서명해야 합니다. 토큰 페이로드에 사용되는 서비스 API 키와 계정 seq 값은 헬프데스크 티켓을 통해 요청할 수 있습니다.

위 캡쳐 이미지에서 확인할 수 있듯이, 인코딩된 JWT 토큰의 형식은 다음과 같습니다.

Terminal window
base64UrlEncode(header) + "." + base64UrlEncode(payload) + "." + HS256 signature value

토큰은 아래 예시와 같은 JSON 페이로드 데이터를 사용합니다.

{
"sub" : "DoveRunnerAPI",
"aud" : "DoveRunner",
"iss" : "DoveRunner",
"doverunnerId" : "Your DoveRunner account ID",
"pallyconId": "Your ContentSecurity account SEQ",
"iat": 1724053758,
"exp": 1724055558
}
필수 여부
subYDoveRunnerAPI (고정 값)
audYDoveRunner (고정 값)
issYDoveRunner (고정 값)
doverunnerIdY도브러너 서비스 계정 ID (헬프데스크 티켓을 통해 요청 가능)
pallyconIdY컨텐츠시큐리티 서비스 계정의 SEQ (헬프데스크 티켓을 통해 요청 가능)
iatNJWT 발급 시간
expNJWT 만료 일자 (형식: date number)

SEQ는 도브러너 서비스 API에서 주요 데이터를 인덱싱하는데 사용되는 키값입니다.

도브러너 서비스 API를 호출하면 아래와 같은 HTTP 상태 코드 중 하나를 받게 됩니다.

HTTP 상태 코드설명
401JWT 토큰 사양이 잘못되었거나 사용자 정보를 찾을 수 없음
403호출된 API에 대한 권한이 없음
200HTTP 통신 성공

HTTP 상태 코드가 200(HTTP 통신 성공)인 경우 JSON 형식으로 아래 응답 데이터를 받게 됩니다.

유형
error_codeString0000: 성공 / 기타 숫자: 실패
error_messageString실패한 요청에 대한 오류 메시지 표시
dataJSONAPI 요청 결과 (성공 시)

도브러너 서비스 계정 및 사이트 관리를 위한 API입니다.

이 API는 도브러너 계정의 사이트 목록을 검색합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 UC011004100
유형설명
site_idString사이트 ID (네자리 영숫자, 도브러너 콘솔에서 조회 가능)
service_nameString서비스 사이트 이름
product_listArray제품 리스트
product_list.[].service_codeString제품 코드 ( PD001 : DRM, PD002 : FWM )
product_list.[].status_codeString서비스 상태 (SE000 : 서비스중, SE001 : 서비스 중지 )

이 API는 도브러너 계정에 대한 추가 서비스 사이트를 요청합니다. (한 계정에서 여러 개의 서비스 사이트를 운영하는 경우)

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 UA010310200
service_nameStringY추가될 서비스 사이트 명
유형설명
seqInt해당 요청에 대한 SEQ (시퀀스 번호)

이 API는 서비스 사이트 추가 요청에 대한 상태를 반환합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 UA010310100
fromStringN검색 기간 시작일 (YYYY-MM-DD)
toStringN검색 기간 종료일 (YYYY-MM-DD)
req_statusStringN사이트 추가 진행 상태
search_typeStringN검색 유형 (account_id, site_id)
search_keywordStringN검색 키워드 (검색 유형이 설정된 경우)
page_unitIntN검색 결과 수 지정 (기본 값:25, 최대: 1000)
page_indexIntN검색 결과 페이지 번호 (결과 수가 page_unit 보다 클 경우)
유형설명
seqInt사이트 추가 요청에 대한 SEQ 번호
account_idString도브러너 서비스 계정 ID
site_idString사이트 ID (네자리 영숫자)
service_nameString서비스 사이트 명
statusString사이트 추가 진행 상태
update_timeString상태 업데이트 시간
reg_timeString요청 등록 시간

이 API는 계정의 하위 구성원 목록을 조회합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 UA010700200
page_unitIntN검색 결과 수 지정 (기본 값:25, 최대: 1000)
page_indexIntN검색 결과 페이지 번호 (결과 수가 page_unit 보다 클 경우)
유형설명
group_nameString하위 사용자가 소속된 권한 그룹 명
group_seqInt권한 그룹의 SEQ 번호 (아래 테이블 참조)
member_seqInt해당 하위 사용자의 SEQ 번호
member_emailString하위 사용자의 이메일 주소
status_codeString하위 사용자 상태 코드 (MT001: 활성, MT002: 비활성)
reg_dateString하위 사용자 등록 날짜 (YYYY-MM-DD)
  • 그룹 SEQ 목록 | SEQ 번호 | 설명 | | :----- | :------- | | 1000 | BIZ 그룹. 서비스 사용 이력 및 연동 정보와 결제 관련 정보에 접근 가능 | | 1001 | TS 그룹. 서비스 사용 이력 및 연동 정보와 SDK 다운로드 페이지 접근 가능 | | 1014 | Clients 그룹. 서비스 사용 이력 페이지만 접근 가능 |

이 API는 계정에 하위 구성원을 만듭니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 UA010700200
member_emailStringY하위 사용자 이메일 주소
group_seqIntN해당 하위 사용자가 소속될 권한 그룹의 SEQ
유형설명
member_seqInt생성된 하위 사용자의 SEQ 번호

이 API는 하위 사용자의 비밀번호를 재설정합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 UA010700200
member_seqIntY하위 사용자의 SEQ 번호

이 API는 기본 응답 데이터를 응답합니다.

이 API는 그룹 및 상태와 같은 하위 사용자의 정보를 업데이트합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 UA010700200
member_seqIntY하위 사용자의 SEQ 번호
member_statusStringN적용할 사용자 상태 코드 (MT001: 활성, MT002: 비활성)
group_seqIntN적용할 권한 그룹의 SEQ

이 API는 기본 응답 데이터를 응답합니다.

도브러너의 여러 제품에서 공통으로 사용되는 서비스 API를 설명합니다.

서비스 상태 변경 요청 현황 조회

Section titled “서비스 상태 변경 요청 현황 조회”

이 API는 도브러너 제품 별로 서비스 상태 변경 요청에 대한 현황을 조회합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY회원 정보가 있는 암호화된 jwt
api_codeStringYapi 코드 (UA010301100)
site_idPathVariableYSITE ID
service_codeStringY제품코드 (PD001:DRM, PD002:FWM)
유형설명
site_idString사이트 ID
req_group_idString요청 ID (PK)
reg_typeString요청타입 코드
reg_messageString요청 내용
reg_statusString요청 상태 (ST001: 신청, ST002: 반려 또는 취소, ST003:승인)
reg_idString요청 ID
reg_dtString저장일 (UTC +00:00 기준)
update_dtString요청 내역 수정일 (UTC +00:00 기준)

이 API는 도브러너 제품 별로 서비스 상태를 변경하기 위한 요청을 등록합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY회원 정보가 있는 암호화된 jwt
api_codeStringYapi 코드 (UA010301200)
site_idPathVariableYSITE ID
service_codeStringY제품코드 (PD001:DRM, PD002:FWM)
request_typeStringY요청타입 코드 (SM001:서비스 재개 요청, SM002:서비스 중지 요청, SM003:트라이얼 기간 연장 요청)
request_messageStringN요청 내용
유형설명
site_idString사이트 ID
req_group_idString요청 ID (PK)
reg_typeString요청타입 코드
reg_messageString요청 내용
reg_idString요청 ID
reg_dtString저장일 (UTC +00:00 기준)

이 API는 도브러너 제품 별 서비스 상태 변경 요청을 취소합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY회원 정보가 있는 암호화된 jwt
api_codeStringYapi 코드 (UA010301200)
site_idPathVariableYSITE ID
service_codeStringY제품코드 (PD001:DRM, PD002:FWM)
request_typeStringY요청타입 코드 (SM004:서비스 변경 요청 취소)
request_group_idStringY요청 ID (PK)
유형설명
site_idString사이트 ID
req_group_idString요청 ID (PK)
reg_typeString기존 요청타입 코드
reg_statusString요청 상태 (ST001: 신청, ST002: 반려 또는 취소, ST003:승인)
reg_messageString요청 내용
reg_idString요청 ID
reg_dtString저장일 (UTC +00:00 기준)
update_dtString요청 내역 수정일 (UTC +00:00 기준)

도브러너 멀티 DRM 서비스와 관련된 API를 설명합니다.

이 API는 특정 기간에 발급된 DRM 라이선스의 목록을 검색합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 (UA003001100)
site_idStringY사이트 ID (네자리 영숫자)
fromStringN검색 기간 시작일 (YYYY-MM-DD)
toStringN검색 기간 종료일 (YYYY-MM-DD)
search_statusStringN라이선스 발급 상태로 검색 (success or fail)
search_conditionStringN키워드 검색 카테고리 (cid, drm_type, user_id, device_id, device_model)
search_keywordStringN카테고리 검색에 사용될 키워드 (search_condition 설정 시)
page_unitIntN검색 결과 수 지정 (기본 값:25, 최대: 1000)
page_indexIntN검색 결과 페이지 번호 (결과 수가 page_unit 보다 클 경우)
  • 요청 예제
curl -H 'authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJQYWxseUNvbkFQSSIsImF1ZCI6IklOS0EiLCJpc3MiOiJQYWxseUNvbiIsImFkbWluIjp0cnVlLCJ1c2VySWQiOiJ0ZXN0dXNlciJ9.p7VJmRryoaSVU2qn9PDuoDRIFxphw0N2786bR6zhELQ' 'https://service.doverunner.com/api/v2/drm/license?api_code=UA003001100&site_id=DEMO&from=2020-03-01&to=2020-03-02&search_status=success&search_condition=cid&search_keyword=test'
유형설명
cidString콘텐츠의 고유 ID
statusString라이선스 발급 상태 (success, fail)
error_codeString에러 코드 (성공: 0000, 실패 시 해당 에러 코드)
drm_typeStringDRM 유형 (PlayReady, Widevine, FairPlay, NCG)
user_idString최종 사용자의 고유 ID
device_idString클라이언트 기기의 고유 ID
device_modelString클라이언트 기기 모델명
license_typeStringDRM 라이선스 연동 방식 (token, gateway)
platform_nameString클라이언트 플랫폼 정보
reg_timeString라이선스 요청 등록 시간
  • 응답 예제
{
"_links":{
"self":{
"href":"https://service.doverunner.com/api/v2/drm/license"
}
},
"error_code":"0000",
"data":[{
"cid":"configtest",
"status":"success",
"error_code":"0000",
"drm_type":"FairPlay",
"user_id":"uuu",
"device_id":"13406080a61bef63aaa1d99a32f51e31c804e659",
"device_model":"iOS-device",
"license_type":"gateway",
"platform_name":"iOS",
"reg_time":"20200302235959"
},
{
"cid":"configtest",
"status":"success",
"error_code":"0000",
"drm_type":"FairPlay",
"user_id":"uuu",
"device_id":"13406080a61bef63aaa1d99a32f51e31c804e659",
"device_model":"iOS-device",
"license_type":"gateway",
"platform_name":"iOS",
"reg_time":"20200302235956"
}],
"count":2
}
}

이 API는 특정 기간에 라이선스를 획득한 최종 사용자 ID의 목록을 검색합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 값 (UA003001100)
site_idStringY사이트 ID (네자리 영숫자)
fromStringN검색 기간 시작일 (YYYY-MM-DD)
toStringN검색 기간 종료일 (YYYY-MM-DD)
search_keywordStringN검색할 사용자 ID
page_unitIntN검색 결과 수 지정 (기본 값:25, 최대: 1000)
page_indexIntN검색 결과 페이지 번호 (결과 수가 page_unit 보다 클 경우)
  • 요청 예제
curl -H 'authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJQYWxseUNvbkFQSSIsImF1ZCI6IklOS0EiLCJpc3MiOiJQYWxseUNvbiIsImFkbWluIjp0cnVlLCJ1c2VySWQiOiJ0ZXN0dXNlciJ9.p7VJmRryoaSVU2qn9PDuoDRIFxphw0N2786bR6zhELQ' 'https://service.doverunner.com/api/v2/drm/user?api_code=UA003001100&site_id=DEMO&from=2020-03-01&to=2020-03-02
유형설명
user_idString최종 사용자의 고유 ID
license_cntInt해당 사용자가 요청한 DRM 라이선스 수
device_cntInt해당 사용자가 이용한 클라이언트 기기 수
successInt성공한 라이선스 요청 수
failInt실패한 라이선스 요청 수
  • 응답 예제
{
"_links":{
"self":{
"href":"https://service.doverunner.com/api/v2/drm/user"
}
},
"error_code":"0000",
"data":[{
"user_id":"ta5uwrsw",
"license_cnt":1,
"device_cnt":1,
"success":1,
"fail":0
},
{
"user_id":"uuu",
"license_cnt":1729,
"device_cnt":1,
"success":1729,
"fail":0
},
{
"user_id":"5xhsdd36",
"license_cnt":1,
"device_cnt":1,
"success":1,
"fail":0
}],
"count":3
}
}

이 API는 특정 기간에 DRM 라이선스를 획득한 클라이언트 기기 목록을 검색합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 값 (UA003001100)
site_idStringY사이트 ID (네자리 영숫자)
fromStringN검색 기간 시작일 (YYYY-MM-DD)
toStringN검색 기간 종료일 (YYYY-MM-DD)
search_keywordStringN검색할 클라이언트 기기 ID
page_unitIntN검색 결과 수 지정 (기본 값:25, 최대: 1000)
page_indexIntN검색 결과 페이지 번호 (결과 수가 page_unit 보다 클 경우)
  • 요청 예제
curl -H 'authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJQYWxseUNvbkFQSSIsImF1ZCI6IklOS0EiLCJpc3MiOiJQYWxseUNvbiIsImFkbWluIjp0cnVlLCJ1c2VySWQiOiJ0ZXN0dXNlciJ9.p7VJmRryoaSVU2qn9PDuoDRIFxphw0N2786bR6zhELQ' 'https://service.doverunner.com/api/v2/drm/device?api_code=UA003001100&site_id=DEMO&from=2020-03-01&to=2020-03-02
유형설명
device_idString클라이언트 기기의 고유 ID
device_modelString클라이언트 기기 모델명
license_cntInt해당 기기에서 요청된 DRM 라이선스 수
successInt성공한 라이선스 요청 수
failInt실패한 라이선스 요청 수
  • 응답 예제
{
"_links":{
"self":{
"href":"https://service.doverunner.com/api/v2/drm/device"
}
},
"error_code":"0000",
"data":[{
"device_id":"ea2e698d95b28441422f4997d6ffd5450a",
"device_model":"ChromeCDM-Windows-2",
"license_cnt":1732,
"success":1732,
"fail":0
},
{
"device_id":"13406080a61bef63aaa1d99a32f51e31c804e659",
"device_model":"iOS-device",
"license_cnt":1729,
"success":1729,
"fail":0
},
{
"device_id":"ab3dd736cd46607abbd81ec942e07a620a",
"device_model":"ChromeCDM-Mac-2",
"license_cnt":1,
"success":1,
"fail":0
},
{
"device_id":"d838f619-69e0-4e3a-9b48-5a1b52ce287a",
"device_model":"playready-device",
"license_cnt":1728,
"success":1728,
"fail":0
}],
"count":4
}

이 API는 특정 기간 동안 각 CID(콘텐츠 ID)에 대해 발급된 라이선스 수를 검색합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 값 (UA003001100)
site_idStringY사이트 ID (네자리 영숫자)
fromStringN검색 기간 시작일 (YYYY-MM-DD)
toStringN검색 기간 종료일 (YYYY-MM-DD)
search_statusStringN라이선스 발급 상태로 조회 (success or fail)
page_unitIntN검색 결과 수 지정 (기본 값:25, 최대: 1000)
page_indexIntN검색 결과 페이지 번호 (결과 수가 page_unit 보다 클 경우)
  • 요청 예제
curl -H 'authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJQYWxseUNvbkFQSSIsImF1ZCI6IklOS0EiLCJpc3MiOiJQYWxseUNvbiIsImFkbWluIjp0cnVlLCJ1c2VySWQiOiJ0ZXN0dXNlciJ9.p7VJmRryoaSVU2qn9PDuoDRIFxphw0N2786bR6zhELQ' 'https://service.doverunner.com/api/v2/drm/cid-drmLicense?api_code=UA003001100&site_id=DEMO&from=2020-03-01&to=2020-03-02
유형설명
cidString콘텐츠의 고유 ID
license_cntInt해당 콘텐츠에 발급된 DRM 라이선스 수
  • 응답 예제
{
"_links":{
"self":{
"href":"https://service.doverunner.com/api/v2/drm/cid-drmLicense"
}
},
"error_code":"0000",
"data":[
{
"cid":"bigbuckbunny",
"license_cnt":1733
},
{
"cid":"configtest",
"license_cnt":1729
}],
"count":2
}

이 API는 특정 기간의 DRM 패키징 이력을 검색합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
api_codeStringYAPI 코드 값 (UA003001100)
site_idStringY사이트 ID (네자리 영숫자)
fromStringN검색 기간 시작일 (YYYY-MM-DD)
toStringN검색 기간 종료일 (YYYY-MM-DD)
search_conditionStringN검색 카테고리 (cid, drm_type, user_id, device_id, device_model)
search_keywordStringN카테고리 별 검색 키워드 (valid when search_condition is set)
last_created_time_cidStringN조회 리스트 중 마지막 CID 값 (페이지 처리 용)
last_update_timeStringN조회 리스트 중 마지막 update_time (페이지 처리 용)

last_created_time_cidlast_update_time이 설정되면 응답에는 설정된 값 이후의 데이터만 포함됩니다.

유형설명
site_idString사이트 ID (네자리 영숫자)
cidString콘텐츠의 고유 ID
trackString콘텐츠 트랙 정보 (기본값: HD)
created_timeString최초 패키징 시간 (YYYYMMDDhhmmss)
update_timeString마지막 재패키징 시간 (YYYYMMDDhhmmss)

이 API는 DRM 연동과 관련된 정보를 조회합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
site_idPath VariableY사이트 ID (네자리 영숫자)
api_codeStringYAPI 코드 값 (UA003004100)
유형설명
site_idString사이트 ID (네자리 영숫자)
site_keyString서비스 사이트 연동에 필요한 암호화 키 (Base64 인코딩된 32바이트 문자열)
access_keyString추가적인 연동에 사용되는 암호화 키
license_callback_urlString콜백 방식 라이선스 연동에 사용되는 웹 페이지 URL (지원 중단)
package_callback_urlString콜백 방식 패키저 연동에 사용되는 웹 페이지 URL (지원 중단)
kms_tokenStringCPIX, SPEKE API 등 KMS 연동에 사용되는 토큰
token_durationInt라이선스 토큰 유효 기간 (초 단위)
ivString사이트 별로 지정되는 고유 IV(Initial Vector) 값. DRM 패키징에 사용

이 API는 DRM과 관련한 정보를 업데이트합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
site_idPath VariableY사이트 ID (네자리 영숫자)
api_codeStringYAPI 코드 값 (UA003004100)
license_callback_urlStringN콜백 방식 라이선스 연동에 사용되는 웹 페이지 URL (지원 중단됨)
package_callback_urlStringN콜백 방식 패키저 연동에 사용되는 웹 페이지 URL (지원 중단됨)
token_durationIntN라이선스 토큰 유효 기간 (초 단위)

이 API는 기본 응답 데이터를 응답합니다.

이 API는 애플로부터 발급받은 FPS 인증서를 도브러너 서비스에 등록합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY인코딩된 JWT 데이터
site_idPath VariableY사이트 ID (네자리 영숫자)
api_codeStringYAPI 코드 값 (UA003004200)
askStringYApplication secret key (ASK) 문자열
key_pwStringY개인 키 암호 (최대 32 바이트)
fps_certblobYFPS 인증서 파일 (.der 또는 .cer)
private_keyblobY개인 키 파일 (.pem)

이 API는 기본 응답 데이터를 응답합니다.

이 API는 특정 날짜에 발생한 MAL(월간 라이선스 발급 수), MAU(월간 활성 사용자 수) 및 MAD(월간 활성 기기 대수) 수치를 조회합니다.

파라미터유형필수 여부설명
AuthorizationHeaderY회원 정보가 있는 암호화된 jwt
api_codeStringYapi 코드 : UA003003100
site_idStringY사이트 아이디
target_dateStringY조회 대상 날짜 (YYYY-MM-DD)
유형설명
license_cntIntegerMAL (Monthly Active Licenses)
user_acc_cntIntegerMAU (Monthly Active Users)
device_acc_cntIntegerMAD (Monthly Active Devices)
target_dateInteger조회 대상 날짜