Server API

1. 들어가며

여기에 있는 API를 이용해 SmartBeat에서 수집한 데이터를 취득할 수 있습니다.

2. 서버 API

2-1. GET errors

에러 일람 취득

리퀘스트 예
GET /1/errors HTTP/1.1
Authorization: Basic <master authorization string>
Content-Type: application/json
Accept: application/json
{
"range":{"last_days":7},
"next_id":123,
"error_statuses":["open","working"]
}
cURL에서의 명령어 예
curl -v -X GET -u "<API Key>:<API Token>" -H "Content-Type: application/json" -d '{"range":{"last_days":7},"next_id":123,"error_statuses":["open","working"]}' https://api.smrtbeat.com/1/errors
리소스 URL

https://api.smrtbeat.com/1/errors

리소스 정보
형식
JSON
메서드
GET
인증
필수(Basic인증)

유저이름에는 API 키를 패스워드에는 API 토큰을 사용해 주세요.
설정할 값은 해당 App을 선택하신 후, 설정 => 일반설정에서 확인할 수 있습니다.

예)
API 키: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
API 토큰: 01234567890123456789의 경우, 아래의 문자열이
<master authorization string> 부분에 들어갑니다.

YWFhYWFhYWEtYmJiYi1jY2NjLWRkZGQtZWVlZW
VlZWVlZWVlOjAxMjM0NTY3ODkwMTIzNDU2Nzg5
리퀘스트 수 제한
있음
요구 파라미터
range
Optional
에러 취득대상의 기간

파라미터에는 일수를 지정하거나 기간을 지정합니다.

<일수로 지정하는 방법>
아래와 같이 last_days에 1〜90일 이내로 날짜를 지정해 주세요.

{"range": {"last_days":7}}

※ 지정한 일수가 1의 경우에만 24시간 이전의 시간이 설정됩니다.

<기간으로 지정하는 방법>
아래와 같은 형식(YYYY-MM-DD)로 지정해 주세요.

{"range": {"custom": {"from":"2015-01-01", "to":"2015-01-10"}}}

※ 지정가능한 일수는 해당일로부터 90일간 이내입니다.

파라미터를 생략한 경우에는 최근 1주일 내로 지정됩니다.

next_id
Optional
요구 offset

이전에 취득한 결과 이후의 값을 취득하고자 하실 경우,
이전에 취득하신 결과값에 포함된「next_id」값을 지정하시면 됩니다.
처음 취득하실 경우에는 이 파라미터가 필요하지 않습니다.

error_statuses
Optional
에러 상태

배열형식으로 값을 설정합니다. 여러 개의 값을 동시에 설정할 수 있습니다.
파라미터를 생략한 경우에는 전체 스테터스가 적용됩니다.

설정 가능한 값
open | working | resolved | wont_fix | reopened | closed

응답 예
{
"next_id": 1234,
"errors": [
{
"error_id": 534,
"error_name": "java.lang.NullPointerException",
"error_status": "open",
"error_count": 118,
"affected_users": 22,
"error_location": "OnClickHandler.java : 46",
"first_occurrence": "2014-02-11 17:25:19 GMT+09:00",
"last_occurrence": "2014-12-25 10:37:04 GMT+09:00",
"tags": [
{"id":1,"name":"tag1"},
{"id":2,"name":"tag2"}
],
"app_versions": [ "1.0", "1.1"],
"os_versions": ["5.0", "4.4.4", "4.1.2", "4.0.3"],
"url":"https://dash.smrtbeat.com/console/error_detail?a=111&e=534&range=20140211-20141225"
},
{
"error_id" : 567,
"error_name": "yyyyyy",
….
}
]
}
응답 파라미터
next_id
다음 번 요구할 id

결과 건수가 응답가능한 최대 수(1,000 에러)보다 큰 경우에 반환됩니다.
다음 번 요구 시에 파라미터로 사용하시면 지속된 결과를 취득할 수 있습니다.

에러 일람

errors/error_id
에러 ID
errors/error_name
에러 이름
errors/error_status
에러 상태
errors/error_count
에러 발생 수
errors/affected_users
영향받은 유저 수
errors/error_location
에러 발생장소
errors/first_occurrence
처음 발생일시
errors/last_occurrence
최종 발생일시
errors/tags
태그 리스트
errors/app_versions
에러가 발생한 App버전의 일람
errors/os_versions
에러가 발생한 OS버전의 일람
errors/url
에러 상세로의 링크

2-2. GET date listing

앱의 통계 정보가 취득 가능한 날짜 리스트

예:
GET /1/date_list HTTP/1.1
Authorization: Basic <master authorization string>
Content-Type: application/json
Accept: application/json
{
}
cURL 예
curl -v -X GET -u "<API Key>:<API Token>" -H "Content-Type: application/json" -d '{ }' https://api.smrtbeat.com/1/date_list
리소스 URL

https://api.smrtbeat.com/1/date_list

리소스 정보
형식
JSON
메서드
GET
인증
필수(Basic인증)

유저이름에는 API 키를 패스워드에는 API 토큰을 사용해 주세요.
설정할 값은 해당 App을 선택하신 후, 설정 => 일반설정에서 확인할 수 있습니다.

예)
API 키: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
API 토큰: 01234567890123456789의 경우, 아래의 문자열이
<master authorization string> 부분에 들어갑니다.

YWFhYWFhYWEtYmJiYi1jY2NjLWRkZGQtZWVlZW
VlZWVlZWVlOjAxMjM0NTY3ODkwMTIzNDU2Nzg5
리퀘스트 수 제한
없음
응답 예
[ {
"date" : "2016-04-13",
"start_timestamp" : "2016-04-13 00:00:00 GMT+09:00",
"end_timestamp" : "2016-04-14 00:00:00 GMT+09:00"
}, {
"date" : "2016-04-12",
"start_timestamp" : "2016-04-12 00:00:00 GMT+09:00",
"end_timestamp" : "2016-04-13 00:00:00 GMT+09:00"
}, {
"date" : "2016-04-11",
"start_timestamp" : "2016-04-11 00:00:00 GMT+09:00",
"end_timestamp" : "2016-04-12 00:00:00 GMT+09:00"
}, {
"date" : "2016-04-10",
"start_timestamp" : "2016-04-10 00:00:00 GMT+09:00",
"end_timestamp" : "2016-04-11 00:00:00 GMT+09:00"
} ]
응답 파라미터(Array)
date

앱의 통계 정보가 취득 가능한 날짜

start_timestamp

앱의 통계 정보를 취득하기 시작한 시간

end_timestamp

앱의 통계정보가 취득 완료된 시간

2-3. GET version listing

지정한 날짜 안에서 통계 정보를 취득할 수 있는 앱 버전 리스트

GET /1/app_versions HTTP/1.1
Authorization: Basic <master authorization string>
Content-Type: application/json
Accept: application/json
{
"date": "2016-04-14"
}
cURL 예
curl -v -X GET -u "<API Key>:<API Token>" -H "Content-Type: application/json" -d '{ "date": "2016-04-14" }' https://api.smrtbeat.com/1/app_versions
리소스 URL

https://api.smrtbeat.com/1/app_versions

리소스 정보
형식
JSON
메서드
GET
인증
필수(Basic인증)

유저이름에는 API 키를 패스워드에는 API 토큰을 사용해 주세요.
설정할 값은 해당 App을 선택하신 후, 설정 => 일반설정에서 확인할 수 있습니다.

예)
API 키: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
API 토큰: 01234567890123456789의 경우, 아래의 문자열이
<master authorization string> 부분에 들어갑니다.

YWFhYWFhYWEtYmJiYi1jY2NjLWRkZGQtZWVlZW
VlZWVlZWVlOjAxMjM0NTY3ODkwMTIzNDU2Nzg5
리퀘스트 수 제한
없음
요청 파라미터
date
필수
앱 버전을 취득할 날짜
응답 예
{
"date" : "2016-04-14",
"start_timestamp" : "2016-04-14 00:00:00 GMT+09:00",
"end_timestamp" : "2016-04-15 00:00:00 GMT+09:00",
"app_versions" : [ "*", "1.0.0", "1.0.1", "2.0.0SR1", "2.0.0", "2.1.1", "2.2.0", "3.0" ]
}
응답 파라미터
date

요청 시 파라미터로 보낸 날짜

start_timestamp

앱 통계정보를 취득하기 시작한 시간

end_timestamp

앱의 통계정보가 취득 완료된 시간

app_versions

통계 정보가 취득 가능한 앱의 버전

2-4. GET app statistics

지정한 날짜에서 특정 앱 버전의 통계치를 얻거나 (*)를 사용하여 모든 버전의 통계치를 얻을 수 있습니다.

GET /1/app_statistics HTTP/1.1
Authorization: Basic <master authorization string>
Content-Type: application/json
Accept: application/json
{
"date" : "2016-04-10",
"app_version":"*"
}
cURL 예
curl -v -X GET -u "<API Key>:<API Token>" -H "Content-Type: application/json" -d '{ "date" : "2016-04-14","app_version":"*" }' https://api.smrtbeat.com/1/app_statistics
리소스 URL

https://api.smrtbeat.com/1/app_statistics

리소스 정보
형식
JSON
메서드
GET
인증
필수(Basic인증)

유저이름에는 API 키를 패스워드에는 API 토큰을 사용해 주세요.
설정할 값은 해당 App을 선택하신 후, 설정 => 일반설정에서 확인할 수 있습니다.

예)
API 키: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
API 토큰: 01234567890123456789의 경우, 아래의 문자열이
<master authorization string> 부분에 들어갑니다.

YWFhYWFhYWEtYmJiYi1jY2NjLWRkZGQtZWVlZW
VlZWVlZWVlOjAxMjM0NTY3ODkwMTIzNDU2Nzg5
리퀘스트 수 제한
있음
요청 파라미터
date
필수
통계 정보를 취득할 날짜
app_version
필수
버전명 또는 전체 버전을 취득할 경우 (*)을 사용
응답 예
{
"date" : "2016-04-14",
"start_timestamp" : "2016-04-14 00:00:00 GMT+09:00",
"end_timestamp" : "2016-04-15 00:00:00 GMT+09:00",
"app_version" : "*",
"errors" : 222,
"crashes" : 187,
"signals" : 35,
"exceptions" : 35,
"affected_users_crash" : 12,
"affected_users_crash_signal" : 10,
"affected_users_crash_non_signal" : 3,
"unique_users" : 1244,
"returing_user_rate" : 0.540,
"user_loss_rate" : 0.460,
"user_loss_rate_with_crash" : 0.450,
"user_loss_rate_no_crash" : 0.480
}
응답 파라미터
date

통계정보를 취득할 날짜

start_timestamp

앱의 통계 정보를 취득하기 시작한 시간

end_timestamp

앱의 통계정보가 취득 완료된 시간

app_version

통계정보를 취득한 앱 버전

errors

전체 에러수(크래시(시그널 포함), 예외 포함)

crashes

크래시 수(시그널 포함)

signals

크래시 수(시그널만)

exceptions

예외 발생 수

affected_users_crash

크래시에 영향을 받은 유저 수

affected_users_crash_signal

시그널이 포함된 크래시에 영향을 받은 유저 수

affected_users_crash_non_signal

시그널이 포함되지 않은 크래시에 영향을 받은 유저 수

unique_users

유니크한 유저 수

returing_user_rate

다음 날 리턴율(앱 버전을 지정한 경우는 null을 반환)

user_loss_rate

다음 날 이탈율(앱 버전을 지정한 경우는 null을 반환)

user_loss_rate_with_crash

다음 날 이탈율(크래시에 영향을 받은 유저)(앱 버전을 지정한 경우는 null을 반환)

user_loss_rate_no_crash

다음 날 이탈율(크래시에 영향을 받지 않은 유저)(앱 버전을 지정한 경우는 null을 반환)

2-5. GET app rankings

지정한 날짜의 각종 랭킹을 취득

예:
GET /1/app_rankings HTTP/1.1
Authorization: Basic <master authorization string>
Content-Type: application/json
Accept: application/json
{
"date": "2016-04-14"
}
cURL 예
curl -v -X GET -u "<API Key>:<API Token>" -H "Content-Type: application/json" -d '{ "date": "2016-04-14" }' https://api.smrtbeat.com/1/app_rankings
리소스 URL

https://api.smrtbeat.com/1/app_rankings

리소스 정보
형식
JSON
메서드
GET
인증
필수(Basic인증)

유저이름에는 API 키를 패스워드에는 API 토큰을 사용해 주세요.
설정할 값은 해당 App을 선택하신 후, 설정 => 일반설정에서 확인할 수 있습니다.

예)
API 키: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
API 토큰: 01234567890123456789의 경우, 아래의 문자열이
<master authorization string> 부분에 들어갑니다.

YWFhYWFhYWEtYmJiYi1jY2NjLWRkZGQtZWVlZW
VlZWVlZWVlOjAxMjM0NTY3ODkwMTIzNDU2Nzg5
리퀘스트 수 제한
있음
요청 파라미터
date
Required

랭킹을 취득할 날짜

응답 예
{
"app_version" : {
"usage" : [ { "name" : "1.1" , "count" : 1 } ],
"crashes" : [ { "name" : "1.1" , "count" : 0 } ]
},
"os_version" : {
"usage" : [ { "name" : "9.3.4" , "count" : 1 } ],
"crashes" : [ { "name" : "9.3.4" , "count" : 0 } ]
},
"model" : {
"usage" : [ { "name" : "iPhone 6S [iPhone8,1]" , "count" : 1 } ],
"crashes" : [ { "name" : "iPhone 6S [iPhone8,1]" , "count" : 0 } ]
}
}
응답 파라미터

앱 버전 랭킹

app_version/usage

앱 버전별 이용하는 유저 수의 랭킹(리스트)

app_version/crashes

앱 버전별 크래시가 발생한 수의 랭킹(리스트)

OS버전 랭킹

os_version/usage

OS버전 별 이용하는 유저 수의 랭킹(리스트)

os_version/crashes

OS버전 별 크래시가 발생한 수의 랭킹(리스트)

모델 랭킹(iOS/Android의 경우)

model/usage

모델 별 이용하는 유저수의 랭킹(리스트)

model/crashes

모델 별 크래시가 발생한 수의 랭킹(리스트)

브라우저 순위(Web의 경우)

browser/usage

브라우저별 이용 사용자 수 순위(목록)

browser/crashes

브라우저별 크래시 발생 수 순위(목록)

2-6. GET app rankings change

랭킹 이력 취득

리퀘스트 예
GET /1/app_rankings_change HTTP/1.1
Authorization: Basic <master authorization string>
Content-Type: application/json
Accept: application/json
{
"range":{"last_days":7}
}
cURL에서의 명령어 예
curl -v -X GET -u "<API Key>:<API Token>" -H "Content-Type: application/json" -d '{ "range":{"last_days":7} }' https://api.smrtbeat.com/1/app_rankings_change
리소스 URL

https://api.smrtbeat.com/1/app_rankings_change

리소스 정보
형식
JSON
메서드
GET
인증
필수(Basic인증)

유저이름에는 API 키를 패스워드에는 API 토큰을 사용해 주세요.
설정할 값은 해당 App을 선택하신 후, 설정 => 일반설정에서 확인할 수 있습니다.

예)
API 키: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
API 토큰: 01234567890123456789의 경우, 아래의 문자열이
<master authorization string> 부분에 들어갑니다.

YWFhYWFhYWEtYmJiYi1jY2NjLWRkZGQtZWVlZW
VlZWVlZWVlOjAxMjM0NTY3ODkwMTIzNDU2Nzg5
리퀘스트 수 제한
있음
요청 파라미터
range
Required

취득하고자 하는 랭킹 이력의 기간 파라미터에는 일수나 기간을 지정할 수 있습니다.

<일수로 지정하는 방법>
아래와 같이 last_days에 1일〜90일 이내의 일수를 지정해 주세요.

{"range": {"last_days":7}}

<기간으로 지정하는 방법>
다음의 포맷형식(YYYY-MM-DD)으로 지정해 주세요.

{"range": {"custom": {"from":"2015-01-01", "to":"2015-01-10"}}}

※ 지정 가능한 날짜는 오늘부터 90일 전까지의 기간입니다.

파라미터를 생략할 경우, 최근 1주일 간으로 지정됩니다.

limit
Optional
취득 가능한 랭킹의 버전 수는 기본:5개, 최대:100개입니다.
Example Response:
{
"dates":["2016-01-07","2016-01-06","2016-01-05","2016-01-04","2016-01-03","2016-01-02","2016-01-01"],
"app_version": {
    "usage":[
            {"name":"1.0","data":[100,90,80,50,30,10,0]},
            {"name":"1.1","data":[0,50,90,80,70,60,50]},
            {"name":"1.2","data":[0,0,30,50,90,70,50]},
            {"name":"1.3","data":[0,0,0,30,50,70,50]},
            {"name":"1.3.1","data":[0,0,0,0,50,90,100]}
        ]
    },
    "crashes":[
            {"name":"1.0","data":[100,90,80,50,30,10,0]},
            {"name":"1.1","data":[0,5,9,8,7,6,5]},
            {"name":"1.2","data":[0,0,1,2,4,3,2]},
            {"name":"1.3","data":[0,0,0,1,2,2,1]},
            {"name":"1.3.1","data":[0,0,0,0,0,1,2]}
        ]
    },
"os_version": {
     "usage":[
            {"name":"4.4.0","data":[100,90,80,50,30,10,0]},
            {"name":"4.4.1","data":[0,0,30,50,90,70,50]},
            {"name":"4.4.2","data":[0,0,0,0,50,90,100]}
         ],
     "crashes":[
            {"name":"4.4.0","data":[100,90,80,50,30,10,0]},
            {"name":"4.4.1","data":[0,0,1,2,4,3,2]},
            {"name":"4.4.2","data":[0,0,0,0,0,1,2]}
         ]
     },
"model": {
     "usage":[
            {"name":"ACME-2","data":[100,90,80,50,80,50,70]},
            {"name":"ACME-1","data":[10,15,20,15,17,19,20]},
            {"name":"ACME-3","data":[5,5,7,9,1,4,3]}
         ],
     "crashes":[
            {"name":"ACME-2","data":[10,9,8,5,8,5,7]},
            {"name":"ACME-1","data":[10,15,20,15,17,19,20]},
            {"name":"ACME-3","data":[500,500,700,900,100,400,300]}
         ]
     }
}
응답 파라미터

날짜 목록

dates

날짜(목록)

앱별 추이

app_version/usage

이용자가 많은 앱의 유저 수 추이

app_version/crashes

크래시가 많은 앱의 크래시 수 추이

OS버전별 추이

os_version/usage

이용자가 많은 OS버전의 유저 수 추이

os_version/crashes

크래시 수가 많은 OS버전의 크래시 수 추이

모델별 추이(iOS/Android의 경우)

model/usage

이용자가 많은 모델의 유저 수 추이

model/crashes

크래시가 많은 모델의 크래시 수 추이

브라우저별 추이(Web의 경우)

browser/usage

이용자가 많은 브라우저의 사용자 수 추이

browser/crashes

크래시 발생이 많은 브라우저의 크래시 발생 수 추이

3. 공통 에러 대응

3-1. 인증 에러

Basic인증에 실패한 경우, 아래의 응답을 반환합니다.

HTTP/1.1 401 Unauthorized
Content-Type: application/json
{ "message": "Authentication failed"}

3-2. 리퀘스트 수 제한 에러

리퀘스트 수가 최대치에 도달한 경우 다음의 응답이 반환됩니다.
헤더부의 「X-RateLimit-NextAvailable」는 다음 번 액세스 가능한 시각(UNIX시간)이며,
액세스가 가능하게 되기 전까지는 429 스테터스 코드가 반환됩니다.

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-NextAvailable: 123456
{“message”: “Rate limit exceeded”}

4. 리퀘스트 수 제한

리퀘스트가 가능한 API 수에는 다음과 같은 제한이 있습니다.

계약단위로 제한 수
10,000리퀘스트/월
※ 기간은 계약하신 MAU의 집계기간과 같은 기간이 됩니다.
각 앱별 제한 수
100리퀘스트/시