API 레퍼런스
공개 업데이트 내역, 관리 REST API와 앱 애널리틱스 엔드포인트
기본 주소는 https://crm.theseeker.io입니다. GET에는 공개 키를 key 쿼리로, POST에는 JSON의 key로 전달합니다. 웹은 허용된 Origin, 앱은 Origin 없이 X-TheSeeker-App에 허용 앱 ID가 필요합니다. 공개 키와 앱 ID는 관리 API 인증 비밀이 아닙니다.
메서드와 경로 | 기능 |
|---|---|
| 공개 설정 조회 |
| 게시 릴리스 조회, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
voter는 installId와 선택적 userId, name을 담습니다. 투표 값은 1, -1, 0이며 0은 취소입니다. 신고 사유는 spam, abuse, off_topic, other입니다. 공개 목록은 기본 20개, 최대 50개입니다. 릴리스 응답의 ETag를 다음 요청의 If-None-Match에 전달하면 변경이 없을 때 304를 받습니다.
공개 API 오류 본문은 { "error": "CODE" }입니다. 입력 오류는 BAD_REQUEST, VALIDATION_ERROR, PAYLOAD_TOO_LARGE, 허용 목록 오류는 ORIGIN_NOT_ALLOWED, APP_NOT_ALLOWED, 대상 오류는 CHANGES_NOT_FOUND, RELEASE_NOT_FOUND, COMMENT_NOT_FOUND입니다. 커뮤니티 설정과 차단에 따라 VOTES_DISABLED, COMMENTS_DISABLED, BANNED, GUIDELINES_REQUIRED가 반환될 수 있습니다. RATE_LIMITED 응답의 Retry-After를 따르세요.
GET /api/changes/releases의 선택적 locale 쿼리로 제목과 본문의 언어를 고릅니다. 지원 콘텐츠 코드는 ko, en, ja, zh-Hans, zh-Hant, es, fr, de, it, pt-BR, ru, id, tr입니다. 이 목록은 공개 설정의 UI 문구 언어(ko, en)와 별개입니다.
locale은 최대 35자이며 /^[A-Za-z]{2,3}(-[A-Za-z0-9]{1,8}){0,3}$/ 형식이어야 합니다. 형식이 잘못되면 400 VALIDATION_ERROR, 형식은 맞지만 지원하지 않는 언어이면 원문을 반환합니다. 언어 선택은 다음 순서로 처리합니다.
지원 코드와 대소문자를 구분하지 않고 정확히 일치하면 해당 코드를 사용합니다.
중국어는 zh-Hant*, zh-TW, zh-HK, zh-MO를 zh-Hant로, zh, zh-Hans*, zh-CN, zh-SG를 zh-Hans로 해석합니다.
포르투갈어 pt, pt-PT, 그 밖의 pt-*는 모두 pt-BR로 해석합니다.
이전 인도네시아어 태그 in, in-*는 id로 해석합니다.
그 밖에는 기본 언어 코드가 지원되는 경우 사용합니다. 예: ja-JP → ja, en-GB → en, es-MX → es.
지원 코드로 해석되지 않거나 해당 번역이 없으면 원래 title·body를 반환합니다. zh-Hant 번역이 없어도 zh-Hans로 대체하지 않습니다.
공개 릴리스 항목의 contentLocale은 실제 선택한 정규화 코드이며 원문을 반환하면 null입니다. blocks는 선택한 본문에서 생성하고, 원본 translations map은 공개 항목에 포함하지 않습니다. 번역 선택으로 응답이 달라지면 ETag도 달라지므로 locale별 응답의 ETag를 사용하세요.
locale을 생략하면 항상 원문입니다. 호스팅된 공개 페이지와 SDK들은 locale 선택을 전달하지 않으므로 원래 언어의 콘텐츠를 표시합니다.
Bearer API 키가 필요합니다. 조회는 admin:read, 변경은 admin:write scope를 요구하며 프로젝트 키는 자기 프로젝트에 제한됩니다.
메서드와 경로 | 기능 |
|---|---|
| 설정과 설치 정보 조회 |
| 설정 부분 변경 |
| 릴리스 목록, |
| 릴리스 생성 |
| 릴리스와 통계 조회 |
| 릴리스 수정 |
| 릴리스 삭제 |
| App Store 수동 동기화 |
조직 키에서 프로젝트를 선택할 때 목록 및 설정 조회는 projectSlug 쿼리, 설정 변경·생성·동기화는 JSON의 projectSlug를 사용합니다. 관리 목록의 limit은 최대 100입니다.
REST의 생성·수정과 MCP의 create_change_release·update_change_release는 선택적 translations 필드를 받습니다. 지원 콘텐츠 코드의 부분 map이며 각 항목은 { "title": "제목", "body": "본문" }입니다. 제목은 공백을 제거한 뒤 1~140자, 본문은 최대 10000자·200블록이며 생략하면 빈 문자열입니다. 지원하지 않는 locale 키는 거부합니다. REST는 400 VALIDATION_ERROR, MCP는 입력 검증 오류(isError: true, SDK 코드 -32602)를 반환합니다.
{
"title": "새로운 소식",
"translations": {
"ja": { "title": "新機能", "body": "## 改善\n\n- 同期を高速化" },
"en": { "title": "What's new", "body": "## Improved\n\n- Faster sync" }
}
}생성 시 translations를 생략하면 {}를 저장하며 App Store 동기화로 생성한 릴리스도 {}로 시작합니다. 관리 조회 응답에는 translations map이 포함됩니다. PATCH와 MCP 수정 시 translations를 전달하면 map 전체를 교체합니다. 생략하면 기존 map을 유지하고, "translations": {}는 모든 번역을 지웁니다. 한 언어만 수정할 때도 보존할 다른 언어를 함께 전달해야 합니다.
POST /api/app/events는 propertyId, installId, client, events 배열을 받으며 최대 50개를 처리하고 202와 accepted 수를 반환합니다. POST /api/app/errors는 같은 식별자와 client, error를 받아 JS 오류를 전송합니다. 두 요청 모두 X-TheSeeker-App에 속성의 허용 앱 ID가 필요합니다. React Native 설치를 참고하세요.
이 페이지가 도움이 되었나요?