API 문서
REST 엔드포인트와 파라미터, 응답 스키마를 설명합니다.
기본 URL: https://appatlas.dev/api/v1
Android SDK 버전
Maven Central에 올라간 dev.appatlas:atlas-links의 최신 릴리스입니다.
응답 본문은 JSON 문자열 하나입니다.
Android 아티팩트는 같은 버전으로 함께 배포되므로 atlas-core, atlas-crash, atlas-crash-ndk의 버전이기도 합니다.
Apple SDK 버전
CocoaPods trunk에 올라간 AppAtlasSDK의 최신 릴리스입니다.
응답 본문은 JSON 문자열 하나입니다.
Swift Package Manager도 같은 태그를 해석하므로 SPM 버전이기도 합니다.
.NET SDK 버전
NuGet에 올라간 AppAtlas.Sdk의 최신 릴리스입니다.
응답 본문은 JSON 문자열 하나입니다.
Track ID 조회
App Store의 bundle_id를 숫자 track_id로 바꿔 줍니다.
응답 본문은 JSON 문자열 하나입니다.
없는 식별자는 404로 응답합니다.
- bundle_id — 역도메인 형태의 번들 식별자입니다. 예: com.netflix.Netflix
Bundle ID 조회
App Store의 track_id를 bundle_id로 바꿔 줍니다.
응답 본문은 JSON 문자열 하나입니다.
없는 식별자는 404로 응답합니다.
- track_id — 스토어 URL의 숫자 ID입니다. 예: 363590051
Product ID 조회
Microsoft Store의 package_family_name을 product_id로 바꿔 줍니다.
응답 본문은 JSON 문자열 하나입니다.
없는 식별자는 404로 응답합니다.
- package_family_name — 패키지 패밀리 이름입니다.
예: 4DF9E0F8.Netflix_mcm4njqhnhss8
Package Family Name 조회
Microsoft Store의 product_id를 package_family_name으로 바꿔 줍니다.
응답 본문은 JSON 문자열 하나입니다.
없는 식별자는 404로 응답합니다.
Win32 제품(XP로 시작하는 ID)은 package_family_name이 없어 마찬가지로 404입니다.
- product_id — 12자리 스토어 ID입니다. 예: 9WZDNCRFJ3TJ
액세스 토큰
계정 페이지에서 발급한 API 키를 1시간짜리 Bearer 액세스 토큰으로 교환합니다.
모든 호출에 Authorization: Bearer 헤더로 보내세요.
Refresh 토큰은 없습니다.
만료되면 키로 다시 교환합니다.
키를 폐기하면 교환이 막히고 발급된 토큰도 즉시 무효화됩니다.
현재 권한
지금 호출하면 실제로 허용될 작업을 반환합니다.
키의 정책과 스토어가 허용하는 능력의 교집합입니다.
마지막 확인이 오래된 스토어 연결은 이 요청에서 다시 확인하므로, 스토어에서 폐기된 키는 다음 호출이 실패하는 대신 여기 grants에서 먼저 빠집니다.
global은 계정 단위 작업 목록이고, grants는 스토어·작업 조합별 한 항목으로 앱을 합쳐 담습니다.
readOnly는 grants와 계정 단위 작업이 전혀 없을 때만 true이며, 자체 프런트엔드의 익명 조회는 readOnly true에 빈 목록으로 응답합니다.
앱 정보
앱 하나의 전체 게시 정보입니다.
이름, 설명, 개발자, 가격, 평점, 스크린샷, 동영상, 카테고리를 담습니다.
일별 이력은 통계 엔드포인트에서 받습니다.
- lang — ISO 639-1 언어 코드.
스토어 게시물의 텍스트, 가격, 리뷰 언어를 결정합니다.
- country — ISO 3166-1 alpha-2 국가 코드.
스토어프론트를 결정하므로 가격·통화·제공 여부가 함께 바뀝니다.
- <identifier> — 경로의 스토어에 해당하는 식별자입니다.
package_name, track_id / bundle_id, product_id / package_family_name 중 하나이며, 없으면 422를 반환합니다.
앱 빌드
관리 중인 앱에 스토어가 받은 빌드 목록입니다. 최신순이며, 배송 메일이 경고할 내용을 함께 담습니다.
App Store 전용이며 다른 스토어는 빈 목록을 반환합니다.
공식 통계와 같은 방식으로 보호됩니다.
세션, data:read 권한의 API 키, 임베드 그랜트만 접근하고, 그 외에는 404가 아니라 빈 목록이 와서 빌드의 존재 자체가 드러나지 않습니다.
- page — 0부터 시작하는 페이지 번호입니다.
기본값 0.
- size — 페이지당 빌드 수입니다.
1~100, 기본값 5.
- sort — 정렬 기준입니다.
<b>uploaded</b>(기본), <b>version</b>, <b>state</b> 중 하나.
- direction — <b>desc</b>(기본) 또는 <b>asc</b>.
- state — 이 처리 상태만 남깁니다. 쉼표로 구분합니다(VALID, PROCESSING, INVALID, FAILED).
생략하면 전체입니다.
- q — 빌드 번호 또는 마케팅 버전을 검색합니다.
- <identifier> — 경로의 스토어에 해당하는 식별자입니다.
package_name, track_id / bundle_id, product_id / package_family_name 중 하나이며, 없으면 422를 반환합니다.
앱 통계
일별 스냅샷과, 관리 권한이 있으면 스토어 공식 통계를 반환합니다.
게시물 스크랩 없이 응답합니다.
받아올 기간은 <code>span</code> 하나로 지정합니다.
- span — 받아올 이력의 범위입니다. 기본값 30d.
<code>n</code>은 자연수, <code>u</code>는 d, w, m, y 중 하나, <code>A</code>와 <code>B</code>는 날짜 지정형입니다.
<code>yyyy</code> 그 해
<code>yyyy</code>-<code>MM</code> 그 달
<code>yyyy</code>-W<code>ww</code> 그 ISO 주
<code>yyyy</code>-<code>MM</code>-<code>dd</code> 그 날
<code>u</code> 현재 칸
<code>n</code><code>u</code> 현재 칸과 그 앞의 <code>n</code>-1칸
<code>n</code>c 최근 <code>n</code>건
0c 이력 없음
<code>A</code>~<code>B</code> <code>A</code>부터 <code>B</code>까지, 양끝 포함
<code>A</code>~ <code>A</code>부터
~<code>B</code> <code>B</code>까지
~ 전체
<code>n</code>c~<code>A</code> <code>A</code>로 끝나는 <code>n</code>건
<code>A</code>~<code>n</code>c <code>A</code>부터 <code>n</code>건
<code>n</code><code>u</code>~<code>A</code> <code>A</code>로 끝나는 <code>n</code>칸
<code>A</code>~<code>n</code><code>u</code> <code>A</code>부터 <code>n</code>칸
- official — 1로 설정하면 앱 관리 권한이 있는 호출자에 한해 스토어 공식 통계를 official 필드로 함께 반환합니다.
권한 판별에는 보낸 식별자를 그대로 씁니다.
Google Play는 package_name, App Store는 bundle_id입니다.
권한이 없으면 무시됩니다.
- lang — ISO 639-1 언어 코드.
App Store에서 bundle_id를 track id로 변환할 때만 쓰입니다.
이력 자체에는 언어가 없습니다.
- country — ISO 3166-1 alpha-2 국가 코드.
관측은 스토어프론트 단위이므로 어느 국가의 이력을 읽을지 정합니다.
- <identifier> — 경로의 스토어에 해당하는 식별자입니다.
package_name, track_id / bundle_id, product_id / package_family_name 중 하나이며, 없으면 422를 반환합니다.
카테고리
선택한 목록에 대한 스토어의 카테고리 목록입니다.
각 항목은 표시 이름, 스토어 자체 id, 해당 카테고리 페이지 링크를 담습니다.
lang에 맞춰 현지화됩니다.
이 엔드포인트는 앱 식별자를 읽지 않습니다.
- content_type — 어느 목록인지입니다.
앱(app) 또는 게임(game)이며, 기본값은 app입니다.
- pricing_type — 반환되는 link와 embed가 가리키는 차트입니다.
무료(free) 또는 유료(paid)이며, 기본값은 free입니다.
- lang — ISO 639-1 언어 코드.
스토어 게시물의 텍스트, 가격, 리뷰 언어를 결정합니다.
- country — ISO 3166-1 alpha-2 국가 코드.
스토어프론트를 결정하므로 가격·통화·제공 여부가 함께 바뀝니다.
카테고리 조회
카테고리 id 하나를 현지화된 표시 이름·스토어 링크·embed 주소로 해석합니다.
categories 엔드포인트가 나열하는 행과 동일한 형태입니다.
앱 식별자를 읽지 않습니다.
- id — 해석할 카테고리 id입니다. 알 수 없는 id면 404를 반환합니다.
- content_type — 어느 목록인지입니다.
앱(app) 또는 게임(game)이며, 기본값은 app입니다.
- pricing_type — 반환되는 link와 embed가 가리키는 차트입니다.
무료(free) 또는 유료(paid)이며, 기본값은 free입니다.
- lang — ISO 639-1 언어 코드.
스토어 게시물의 텍스트, 가격, 리뷰 언어를 결정합니다.
- country — ISO 3166-1 alpha-2 국가 코드.
스토어프론트를 결정하므로 가격·통화·제공 여부가 함께 바뀝니다.
인기 차트
스토어의 인기 차트입니다.
무료·유료·매출 차트를 스토어 전체 또는 카테고리 하나에 대해 조회합니다.
검색과 동일한 요약 카드를 반환하며, 앱 식별자를 읽지 않습니다.
- id — categories 엔드포인트가 반환하는 카테고리 id입니다.
생략하면 스토어 전체 차트를 반환하며, 알 수 없는 id면 404를 반환합니다.
- content_type — 어느 목록인지입니다.
앱(app) 또는 게임(game)이며, 기본값은 app입니다.
- pricing_type — 차트 종류입니다.
무료(free)·유료(paid)·매출(grossing) 중 하나입니다.
Microsoft Store는 매출 차트가 없어 grossing 요청에 422를 반환합니다.
- lang — ISO 639-1 언어 코드.
스토어 게시물의 텍스트, 가격, 리뷰 언어를 결정합니다.
- country — ISO 3166-1 alpha-2 국가 코드.
스토어프론트를 결정하므로 가격·통화·제공 여부가 함께 바뀝니다.
- count — 반환할 최대 항목 수입니다.
1~200이며 기본값은 20입니다.
스토어가 더 적게 줄 수 있습니다.
- token — 이전 페이지가 돌려준 연속 토큰이며 첫 페이지에서는 생략합니다.
함께 보낸 다른 파라미터는 무시되고 토큰의 스냅샷이 사용되며, 손상된 토큰은 400을 반환합니다.
응답의 token이 null이면 목록의 끝입니다.
리뷰
사용자 리뷰 한 페이지입니다.
개발자 답글이 있으면 함께 옵니다.
응답의 token을 다시 넣어 다음 페이지를 받습니다.
- order_by — 정렬 순서입니다.
recent 또는 helpful이며 기본값은 recent입니다.
helpful은 추천을 많이 받은 리뷰를 먼저 보여주며, Google Play에서는 Google의 관련성 정렬입니다.
- token — 이전 페이지가 돌려준 연속 토큰이며 첫 페이지에서는 생략합니다.
함께 보낸 다른 파라미터는 무시되고 토큰의 스냅샷이 사용되며, 손상된 토큰은 400을 반환합니다.
응답의 token이 null이면 목록의 끝입니다.
- official — 1로 설정하면 스크랩 대신 스토어 공식 API에서 리뷰를 읽습니다.
앱 관리 권한이 있는 호출자만 해당하며, 이때의 리뷰 id로만 답글을 달 수 있습니다.
권한이 없으면 무시되고 스크랩이 반환됩니다.
응답의 canReply를 참고하세요.
- lang — ISO 639-1 언어 코드.
스토어 게시물의 텍스트, 가격, 리뷰 언어를 결정합니다.
- country — ISO 3166-1 alpha-2 국가 코드.
스토어프론트를 결정하므로 가격·통화·제공 여부가 함께 바뀝니다.
- count — 반환할 최대 항목 수입니다.
1~200이며 기본값은 20입니다.
스토어가 더 적게 줄 수 있습니다.
- <identifier> — 경로의 스토어에 해당하는 식별자입니다.
package_name, track_id / bundle_id, product_id / package_family_name 중 하나이며, 없으면 422를 반환합니다.
리뷰 답글 작성·수정
리뷰 하나에 개발자 답글을 게시합니다.
이미 답글이 있으면 새 내용으로 교체되므로, 수정도 이 API로 합니다.
연결된 스토어 키로 관리 중인 앱에서만 가능하며, review_id는 공식 리뷰 목록(reviews의 official=1)이 준 id여야 합니다.
리뷰 답글 삭제
리뷰 하나의 개발자 답글을 삭제합니다.
App Store 전용입니다.
Google Play API는 답글 교체만 지원하고 삭제가 없어 play-store에서는 <b>400 unsupported_store</b>를 반환합니다.
답글이 없는 리뷰에 대한 삭제는 아무 일 없이 성공합니다.
리뷰 번역
리뷰 하나를 요청한 언어로 번역하고, 원문이 어떤 언어로 작성됐는지 감지해 함께 반환합니다.
reviews가 응답한 리뷰라면 무엇이든 됩니다.
공개 스크랩이든 공식 목록이든, 내 앱이 아니어도 됩니다.
reviews 응답의 각 리뷰에는 서명된 reviewKey가 실려 있으며, 리뷰의 title·content 원문과 함께 그대로 보내면 서명이 그 텍스트가 우리가 응답한 원문임을 증명합니다.
번역은 리뷰·언어별로 캐시되고, 수정된 리뷰는 새로 번역됩니다.
답글 초안
리뷰 하나에 대한 개발자 답글 초안을 써서 텍스트로 반환합니다.
스토어에는 아무것도 전송되지 않습니다.
게시는 답글 엔드포인트와 사람의 몫입니다.
초안은 리뷰가 쓰인 언어로 작성되며, 확인용으로 같은 답글을 lang 언어로 옮긴 사본이 함께 옵니다.
두 언어가 같으면 사본은 null입니다.
번역처럼 reviews 응답의 reviewKey를 리뷰 원문과 함께 보내면 됩니다.
같은 리뷰·옵션은 저장본으로 무료 응답하고, regenerate를 켜면 새로 씁니다(이전 초안은 보관됩니다).
검색
키워드로 스토어를 검색합니다.
전체 게시 정보 대신 앱별 요약 카드를 반환합니다.
- query — 검색어입니다.
사실상 필수이며 없으면 422로 응답합니다.
- lang — ISO 639-1 언어 코드.
스토어 게시물의 텍스트, 가격, 리뷰 언어를 결정합니다.
- country — ISO 3166-1 alpha-2 국가 코드.
스토어프론트를 결정하므로 가격·통화·제공 여부가 함께 바뀝니다.
- count — 반환할 최대 항목 수입니다.
1~200이며 기본값은 20입니다.
스토어가 더 적게 줄 수 있습니다.
- token — 이전 페이지가 돌려준 연속 토큰이며 첫 페이지에서는 생략합니다.
함께 보낸 다른 파라미터는 무시되고 토큰의 스냅샷이 사용되며, 손상된 토큰은 400을 반환합니다.
응답의 token이 null이면 목록의 끝입니다.
유사 앱
스토어가 해당 앱과 함께 추천하는 앱 목록입니다.
검색과 동일한 카드 형태입니다.
- lang — ISO 639-1 언어 코드.
스토어 게시물의 텍스트, 가격, 리뷰 언어를 결정합니다.
- country — ISO 3166-1 alpha-2 국가 코드.
스토어프론트를 결정하므로 가격·통화·제공 여부가 함께 바뀝니다.
- count — 반환할 최대 항목 수입니다.
1~200이며 기본값은 20입니다.
스토어가 더 적게 줄 수 있습니다.
- token — 이전 페이지가 돌려준 연속 토큰이며 첫 페이지에서는 생략합니다.
함께 보낸 다른 파라미터는 무시되고 토큰의 스냅샷이 사용되며, 손상된 토큰은 400을 반환합니다.
응답의 token이 null이면 목록의 끝입니다.
- <identifier> — 경로의 스토어에 해당하는 식별자입니다.
package_name, track_id / bundle_id, product_id / package_family_name 중 하나이며, 없으면 422를 반환합니다.
뉴스
앱과 관련된 최신 기사입니다.
관련성과 최신성을 기준으로 걸러집니다.
먼저 앱 이름을 확인한 뒤 좁은 쿼리에서 시작해 결과가 모자랄 때만 넓혀가므로, 잘 알려지지 않은 앱도 결과를 얻고 일반명사 앱은 잡음이 덜 섞입니다.
- lang — ISO 639-1 언어 코드.
스토어 게시물의 텍스트, 가격, 리뷰 언어를 결정합니다.
- country — ISO 3166-1 alpha-2 국가 코드.
스토어프론트를 결정하므로 가격·통화·제공 여부가 함께 바뀝니다.
- count — 반환할 최대 항목 수입니다.
1~200이며 기본값은 20입니다.
스토어가 더 적게 줄 수 있습니다.
- token — 이전 페이지가 돌려준 연속 토큰이며 첫 페이지에서는 생략합니다.
함께 보낸 다른 파라미터는 무시되고 토큰의 스냅샷이 사용되며, 손상된 토큰은 400을 반환합니다.
응답의 token이 null이면 목록의 끝입니다.
- <identifier> — 경로의 스토어에 해당하는 식별자입니다.
package_name, track_id / bundle_id, product_id / package_family_name 중 하나이며, 없으면 422를 반환합니다.
뉴스 썸네일
Google 뉴스 리다이렉트 URL을 원문 URL로 해석하고 각 기사에서 og:image를 추출합니다.
스토어와 무관하며 기사 URL 목록을 그대로 받습니다.
딥링크 목록
계정의 딥링크를 최신순으로 모두 반환합니다.
각 링크의 방문 수가 함께 옵니다.
키에 deeplink:read 권한이 필요합니다.
딥링크 생성
링크를 만들고 짧은 주소와 함께 반환합니다.
short id는 서버가 배정하며 지정할 수 없습니다.
요금제의 링크 수를 이미 다 쓴 경우 403 plan_limit으로 거절됩니다.
키에 deeplink:create 권한이 필요합니다.
딥링크 상세
링크 하나와 전체 라우팅 설정을 반환합니다.
키에 deeplink:read 권한이 필요합니다.
- short_id — 링크의 short id입니다. 짧은 주소의 마지막 부분입니다.
딥링크 수정
링크의 이름과 라우팅 설정을 교체합니다.
설정 전체를 덮어쓰므로 빠뜨린 항목은 유지되지 않고 삭제됩니다.
짧은 주소는 바뀌지 않으므로 이미 배포한 링크는 그대로 동작합니다.
키에 deeplink:update 권한이 필요합니다.
- short_id — 링크의 short id입니다. 짧은 주소의 마지막 부분입니다.
딥링크 삭제
링크와 그 링크에 기록된 방문 기록을 함께 삭제합니다.
짧은 주소는 즉시 동작을 멈추며, 그 id는 다시 발급되지 않습니다.
키에 deeplink:delete 권한이 필요합니다.
- short_id — 링크의 short id입니다. 짧은 주소의 마지막 부분입니다.
딥링크 통계
방문이 어떻게 끝났는지 보여줍니다.
총 방문·순 방문자, 각 실행이 최종적으로 택한 경로, OS·국가별 분포를 담습니다.
집계된 방문 직후 수 초 안에 반복된 방문은 행으로는 남지만 여기의 어떤 수치에도 포함되지 않습니다.
options는 필터와 무관하게 항상 전체 기간을 설명하므로, 현재 필터가 제외한 항목도 선택지에 남습니다.
키에 deeplink:stats 권한이 필요합니다.
- short_id — 링크의 short id입니다. 짧은 주소의 마지막 부분입니다.
- span — 집계할 기간입니다. 앱 통계 엔드포인트와 같은 문법을 씁니다. 기본값 30d.
건수 지정(30c)은 거부됩니다. 방문에는 셀 건수가 없습니다.
- countries — 쉼표로 구분한 국가 코드로 좁힙니다.
"unknown"은 국가를 알 수 없는 방문을 고릅니다.
- routes — 쉼표로 구분한 경로로 좁힙니다.
"failed"는 모든 후보가 실패한 실행을 고릅니다.
- os — 쉼표로 구분한 운영체제로 좁힙니다.
- channels — 쉼표로 구분한 채널로 좁힙니다.
"unknown"은 ch 라벨이 없는 방문을 고릅니다.
- campaigns — 쉼표로 구분한 캠페인으로 좁힙니다.
"unknown"은 cp 라벨이 없는 방문을 고릅니다.
- sources — 쉼표로 구분한 유입원으로 좁힙니다.
qr, push, 일반 열람은 web입니다.
관측 시작
매일 00:00 UTC에 스냅샷을 수집하도록 앱을 등록합니다.
등록되면 앱 정보 응답에 평점·리뷰 수·누적 설치 수(totalInstalls)·버전의 시계열이 snapshots로 함께 옵니다.
- country — ISO 3166-1 alpha-2 국가 코드.
스토어프론트를 결정하므로 가격·통화·제공 여부가 함께 바뀝니다.
- <identifier> — 경로의 스토어에 해당하는 식별자입니다.
package_name, track_id / bundle_id, product_id / package_family_name 중 하나이며, 없으면 422를 반환합니다.
관측 해제
등록을 해제합니다.
이미 수집된 이력은 삭제되지 않으며 새 스냅샷만 더 이상 수집되지 않습니다.
- country — ISO 3166-1 alpha-2 국가 코드.
스토어프론트를 결정하므로 가격·통화·제공 여부가 함께 바뀝니다.
- <identifier> — 경로의 스토어에 해당하는 식별자입니다.
package_name, track_id / bundle_id, product_id / package_family_name 중 하나이며, 없으면 422를 반환합니다.
App Atlas · 임베드 문서 · SDK 문서 · 이용약관 · 개인정보처리방침 · Sign up
en · zh