문서
문서 둘러보기

Analytics REST API

The Privatus Analytics REST API: add .json to any app URL and send a token. Conventions and a reference of every operation, generated from the code.

Markdown으로 보기

Every page and action in Privatus Analytics is also an API endpoint (only form pages such as new and edit have no JSON form). There's no separate /api/v1: add .json to a URL and send an API token.

sh
curl https://privatusanalytics.com/sites/pa_7Q2K9XH3AB/stats/aggregate.json?period=7d \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
json
{
  "data": {
    "period": { "from": "2026-09-23T00:00:00Z", "to": "2026-09-30T00:00:00Z" },
    "metrics": {
      "visitors": 1840, "visits": 2310, "pageviews": 5122,
      "views_per_visit": 2.22, "bounce_rate": 41.3,
      "visit_duration": 48000, "revenue": 129900
    }
  }
}

The reference below lists every operation with its method, path, permission, input schema and response schema. It's generated from the running code, as is the OpenAPI 3.1 document, so neither can drift from what the server does. The same operations are MCP tools.

Conventions#

Base URL https://privatusanalytics.com
Format JSON. Add .json to the path (or send Accept: application/json)
Auth Authorization: Bearer pat_… (Authentication)
Ids Public ids with a prefix: ws_… workspaces, pa_… sites, goal_… goals, seg_… segments, wh_… webhooks
Reads GET with query parameters
Writes POST, PATCH, DELETE with a JSON body of flat fields
Success { "data": … }, plus "meta" for lists
Errors { "error": { "code", "message", "details" } } (Errors)
Lists page and per_page (max 100) (Pagination)
Times ISO 8601 in UTC. Date parameters (from, to) are days in the site's timezone
Money Minor units (cents) in the site currency, e.g. revenue: 129900 = 1,299.00
Durations Milliseconds

Common tasks#

Task Operation
List workspaces GET /workspaces.json
List sites GET /workspaces/{workspace_id}/sites.json
Headline metrics GET /sites/{site_id}/stats/aggregate.json
Chart data GET /sites/{site_id}/stats/timeseries.json
Top pages, sources, countries… GET /sites/{site_id}/breakdown/{dimension}.json
Everything on the Overview GET /sites/{site_id}/overview.json
Live visitors GET /sites/{site_id}/live.json
Add a note (e.g. a deploy) POST /sites/{site_id}/notes.json

See Stats endpoints and Examples.

In this section#

Authentication · Errors · Pagination · Rate limits · Filters · Stats endpoints · Examples · Webhooks · Changelog and deprecation

모든 작업

인증

Authorization: Bearer pat_…를 보내세요. 토큰은 워크스페이스 설정의 API 토큰에서 만듭니다. 인증 가이드.

어디서나 JSON

어떤 경로에든 .json을 붙이세요. 응답은 { "data": … } 형식이고 오류는 { "error": { "code", "message" } } 형식입니다. 오류.

MCP

같은 토큰으로 https://privatusanalytics.com/mcp에 JSON-RPC를 POST하세요. 아래의 각 작업이 하나의 도구입니다. MCP 가이드.

openapi.json 다운로드 · 작업 527개

API 토큰

POST /workspaces/:workspace_id/api_tokens.json API 토큰 만들기 (토큰은 한 번만 반환됩니다) api_tokens_create

워크스페이스에서 호출한 멤버의 API 토큰을 만들고, 시크릿을 token 필드에 단 한 번만 반환합니다. 바로 복사해 두세요. 다시 읽을 수 없으며, 잃어버린 토큰은 폐기하고 다시 만들어야 합니다. 토큰은 멤버가 할 수 있는 범위를 좁히기만 할 수 있습니다. permissions를 생략하면 멤버 본인의 모든 권한이 기본값이 됩니다(명시적인 빈 목록은 거부되며, 없는 권한을 요청하면 오류입니다). site_ids는 공개 사이트 ID(pa_...)를 받아 토큰을 해당 사이트로 제한하고, 비어 있으면 토큰은 멤버가 접근할 수 있는 모든 사이트에서 작동합니다(또는 이 호출을 하는 토큰의 사이트 목록을 유지합니다). expires_at은 선택 사항이며 ISO 8601 형식이어야 하고, 미래이면서 최대 3년 이내여야 합니다. 만료되지 않는 토큰을 원하면 생략하세요. allowed_ips는 토큰을 해당 IP 또는 CIDR 대역으로 제한합니다. 이 호출을 하는 토큰에는 tokens.manage가 필요합니다. 2단계 인증을 필수로 하는 워크스페이스는 본인의 2단계 인증 수단이 없는 멤버의 토큰 생성을 거부합니다. api_tokens_list와 같은 필드에 token을 더해 반환합니다.

권한: member · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/api_tokens.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /workspaces/:workspace_id/api_tokens/:id.json API 토큰 폐기 api_tokens_delete

API 토큰을 즉시 영구적으로 폐기합니다. 이후 해당 토큰을 사용하는 요청은 실패하며, 폐기된 토큰은 복원할 수 없으므로 새로 만드세요. 토큰 레코드는 status revoked 상태로 목록에 남습니다(보려면 api_tokens_list에 include_revoked를 사용하세요). 이미 폐기된 토큰을 다시 폐기해도 변경되는 것은 없습니다. ID(uuid)는 api_tokens_list에서 가져오세요. 본인의 토큰은 폐기할 수 있고, 다른 사람의 토큰을 폐기하려면 tokens.manage 권한과 해당 토큰이 포함하는 모든 사이트에 대한 접근 권한이 필요합니다. 이 호출을 하는 토큰에는 tokens.manage가 필요합니다. 시크릿을 제외한 폐기된 토큰을 반환합니다.

권한: member · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/api_tokens/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/api_tokens.json API 토큰 목록 보기 api_tokens_list

워크스페이스의 API 토큰을 최신순으로, 페이지를 나누어 나열합니다. tokens.manage 권한이 없으면 본인의 토큰만 보이고, 있으면 모든 멤버의 토큰이 보입니다. 폐기되었거나 만료된 토큰은 include_revoked가 true가 아니면 숨겨집니다. 각 항목에는 id(uuid, api_tokens_delete에서 사용), name, token_prefix(토큰을 알아보기 위한 앞부분 문자), owner(멤버의 이메일), permissions(analytics.read 같은 이름), site_ids(공개 사이트 ID pa_..., 빈 배열은 소유자가 접근할 수 있는 모든 사이트를 뜻함), allowed_ips, oauth_client(OAuth로 발급된 경우 연결된 앱의 이름, 그 외에는 null), status(active, expired 또는 revoked), expires_at, last_used_at, revoked_at, created_at이 있습니다. 시크릿 자체는 여기서 절대 반환되지 않으며 목록에서 token은 항상 null입니다. 시크릿은 api_tokens_create에서 한 번만 표시됩니다.

권한: member

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/api_tokens.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

Domain Rating

GET /sites/:site_id/domain-rating.json Domain Rating 리포트: 최신 평점, 인바운드 및 아웃바운드 링크, 직전 릴리스 대비 변화, 월별 기록 domain_rating_report

사이트의 도메인 레이팅을 반환합니다. 도메인을 가리키는 링크가 얼마나 강한지를 0에서 100으로 추정한 값이며, 인바운드 및 아웃바운드 링크 수와 그 기록도 함께 제공합니다. 이것은 Privatus Analytics 자체 점수이며 Google 지표가 아닙니다. 레이팅은 릴리스마다 월 1회 업데이트되므로 변화는 월 단위로 나타납니다. months(1에서 120, 기본값 12)는 포함할 월별 기록 포인트 수를 정합니다. 결과에는 domain, checked_at(사이트를 마지막으로 확인한 시각, 한 번도 없으면 null), release(최신 데이터의 월, YYYY-MM), rating, inbound_links, outbound_links(아직 알 수 없으면 각각 null), changes(같은 세 지표를 이전 릴리스와의 차이로 나타낸 값, 둘 중 하나라도 알 수 없으면 null), history(month, rating, inbound_links, outbound_links가 있는 월별 행이며 오래된 순)가 있습니다. 새 사이트는 몇 분 동안 레이팅이 없을 수 있습니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/domain-rating.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

SCIM

POST /scim/v2/Users.json 사용자 프로비저닝 scim_users_create

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/scim/v2/Users.json \
  -H "Content-Type: application/json" -d '{…}'
DELETE /scim/v2/Users/:id.json 사용자 프로비저닝 해제 scim_users_delete

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/scim/v2/Users/:id.json \
  -H "Content-Type: application/json" -d '{…}'
GET /scim/v2/Users.json 프로비저닝된 사용자 목록 보기 scim_users_list

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/scim/v2/Users.json
GET /scim/v2/Users/:id.json 프로비저닝된 사용자 조회 scim_users_get

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/scim/v2/Users/:id.json
PATCH /scim/v2/Users/:id.json 사용자 수정 (PATCH active, name) scim_users_update

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X PATCH https://privatusanalytics.com/scim/v2/Users/:id.json \
  -H "Content-Type: application/json" -d '{…}'

SSO

POST /workspaces/:workspace_id/sso/activate.json 테스트를 마친 SSO 구성 활성화 sso_activate

워크스페이스의 SSO를 켭니다. 구성은 이미 status가 tested여야 하며(앱의 워크스페이스 SSO 설정 페이지에서 시작하는 시험 로그인이 성공하면 되고, 브라우저 로그인이 필요하므로 여기서 실행할 수 없음), 아니면 이미 active여야 합니다. Business 요금제 전용입니다. 활성화 후에는 멤버가 SSO로 로그인할 수 있고, sso_update로 enforced를 설정하면 모든 로그인에 SSO가 필수가 됩니다. 구성이 시험되지 않았거나 요금제에 SSO가 없으면 실패합니다. workspace.manage가 필요합니다. status가 active인 구성을 반환합니다(sso_get 참고).

권한: workspace.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sso/activate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/sso/deactivate.json SSO 끄기 (초안으로 되돌림) sso_deactivate

구성을 draft로 되돌리고 enforced를 지워서 SSO를 끄므로, 멤버는 워크스페이스의 다른 로그인 방법으로 돌아갑니다. 제공자 세부 정보는 유지됩니다. 다시 활성화하려면 새로운 시험 로그인과 sso_activate가 필요합니다. 먼저 멤버에게 다른 로그인 방법이 있는지 확인하세요. 모든 요금제에서 작동합니다. workspace.manage가 필요합니다. status가 draft인 구성을 반환합니다(sso_get 참고).

권한: workspace.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sso/deactivate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/sso/scim_token.json 새 SCIM 토큰 생성 (한 번만 표시됨) sso_scim_token

권한: workspace.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sso/scim_token.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/sso.json SSO 설정 조회 sso_get

워크스페이스의 싱글 사인온(SSO) 구성을 반환하며, 없으면 빈 draft를 반환합니다. 필드는 protocol(saml 또는 oidc), status(draft, testing, tested 또는 active), enforced(멤버가 SSO로 로그인해야 함), domains(이 SSO를 사용하는 이메일 도메인), SAML의 idp_sso_url과 idp_entity_id, OIDC의 oidc_issuer와 oidc_client_id, default_role과 jit_provisioning(첫 SSO 로그인 시 멤버 생성), scim_enabled입니다. 시크릿은 반환되지 않으며 idp_cert_present와 oidc_client_secret_present 불리언만 반환됩니다. SSO는 Business 요금제 기능입니다. workspace.manage가 필요합니다.

권한: workspace.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/sso.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/sso.json SSO 설정 만들기 또는 수정 sso_update

워크스페이스의 SSO 설정을 만들거나 편집합니다. Business 요금제 전용입니다. 보낸 입력만 변경됩니다. SAML은 protocol saml과 idp_sso_url, idp_entity_id, idp_cert(PEM 텍스트)를 보내세요. OIDC는 protocol oidc와 oidc_issuer, oidc_client_id, oidc_client_secret을 보내세요. oidc_client_secret은 쓰기 전용이며 빈 값은 기존 시크릿을 유지합니다. domains는 이 SSO를 사용하는 이메일 도메인을 나열합니다. default_role은 첫 로그인 프로비저닝 또는 SCIM으로 생성된 멤버에게 주어지는 역할이며(owner나 custom은 불가), 본인이 부여할 수 있는 역할만 설정할 수 있습니다. 아이덴티티 제공자 세부 정보를 하나라도 바꾸면 active 또는 tested 구성이 draft로 돌아가고 enforced가 꺼지므로, sso_activate가 작동하려면 다시 시험해야 합니다. enforced true는 status가 active일 때만 허용됩니다. workspace.manage가 필요합니다. 구성을 반환합니다(sso_get 참고).

권한: workspace.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/sso.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

Wall of Love

POST /sites/:site_id/testimonials/walls.json Wall of Love를 만듭니다 testimonial_walls_create

https://privatus.page/w/<slug>에서 호스팅되는 페이지입니다. 생략한 항목은 기본값으로 시작합니다. 제목은 Wall of Love, 레이아웃은 masonry, slug는 이름에서 만들어집니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/walls.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/walls/:id.json 월을 휴지통으로 옮깁니다 testimonial_walls_trash

월의 페이지는 복원될 때까지 내려졌다고 응답하며, 임베드된 사본은 아무것도 렌더링하지 않습니다. 복원하면 같은 주소로 돌아옵니다. 30일 뒤 영구 삭제됩니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/walls/:id/duplicate.json 월을 새 이름과 주소로 복사합니다 testimonial_walls_duplicate

새 ID, 끝에 "copy"가 붙은 이름, 자체 slug를 가진 복사본을 만들므로 고유한 주소가 생깁니다. 원본과 그 주소는 변경되지 않습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id/duplicate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/walls/:id/embed.json 월의 링크와 다른 페이지 안에 넣는 코드를 가져옵니다 testimonial_walls_embed

월의 공개 주소와, 다른 페이지 안에 월을 넣는 스크립트, 프레임, 일반 링크 코드입니다. 월을 수정해도 코드는 바뀌지 않습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id/embed.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/walls.json 사이트의 Wall of Love를 나열합니다 testimonial_walls_list

휴지통에 없는 사이트의 모든 Wall of Love를 주소, 공급하는 것, 표시하는 추천사 수와 함께 나열합니다. q로 이름이나 slug를 검색하고 sort로 이름순 또는 최신순으로 정렬하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/walls/:id/restore.json 휴지통에서 월을 복원합니다 testimonial_walls_restore

월을 휴지통에서 꺼냅니다. 페이지는 같은 주소에서 다시 응답하며, 붙여 넣은 코드를 바꾸지 않아도 임베드된 모든 사본이 다시 월을 표시합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id/restore.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/walls/:id.json 월 하나를 모든 설정과 함께 가져옵니다 testimonial_walls_get

빌더가 저장하는 모든 것입니다. 주소(/w/<slug>), 헤더와 버튼, 레이아웃, 월에 내용을 공급하는 것, 각 카드가 표시하는 것, 스타일, 검색엔진 설정입니다. 휴지통의 월은 404로 응답합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/walls/:id.json 월을 변경합니다 testimonial_walls_update

보낸 입력만 변경됩니다. slug를 바꾸면 이전 주소는 계속 리디렉션됩니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

가동 시간

POST /sites/:site_id/uptime.json 사이트에 가동 시간 검사 추가 uptime_checks_create

사이트 하나에 연결된 가동 시간 검사를 추가합니다. 어떤 사이트에도 속하지 않는 검사는 workspace_uptime_checks_create를 사용하세요. kind가 대상을 결정합니다. http는 url의 상태 코드를 확인하고, keyword는 url의 응답 본문에 keyword가 포함되어 있는지 확인하고, tcp는 host와 port에 연결하고, dns는 host가 확인되는지 검사합니다. 다른 kind의 필드는 무시됩니다. http 검사에서 url의 기본값은 사이트의 홈페이지입니다. expected_status(100에서 599, 기본값 200), http_method(GET 또는 HEAD), timeout_seconds(1에서 30, 기본값 20)는 http와 keyword 검사에 적용됩니다. interval_seconds는 점검 사이의 시간이며 요금제 최소값 이상이어야 하고(Free 300, Pro 60, Business 30), 기본값은 300 또는 그보다 높으면 최소값입니다. public true는 검사가 상태 페이지에 나타날 수 있게 합니다. 비공개 및 내부 주소는 거부되고, 요금제가 워크스페이스당 검사 수를 제한합니다(Free 3개, Pro 20개, Business 100개). 첫 점검은 곧바로 실행되고 status는 pending으로 시작합니다. uptime.manage 권한이 필요합니다. id(upc_...)가 있는 검사를 반환합니다.

권한: uptime.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/uptime.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /uptime/checks/:id.json 가동 시간 검사와 기록 삭제 uptime_checks_delete

가동 시간 검사를 결과와 인시던트 기록과 함께 영구 삭제하고, 그것을 표시하는 모든 상태 페이지에서 제거합니다. 되돌릴 수 없습니다. 기록은 유지하면서 점검만 멈추려면 uptime_checks_pause를 사용하세요. ID는 uptime_checks_list에서 가져옵니다. uptime.manage 권한이 필요합니다. 삭제된 검사를 반환합니다.

권한: uptime.manage

예시
curl -X DELETE https://privatusanalytics.com/uptime/checks/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/uptime.json 사이트의 가동 시간 검사 목록 보기 uptime_checks_list

사이트 하나의 가동 시간 검사를 나열하며, 사이트의 도메인이나 그 서브도메인을 점검하는 워크스페이스 전체 검사도 포함합니다. 이름순입니다. 워크스페이스의 모든 검사는 workspace_uptime_checks_list를 사용하세요. status(up, down, pending 또는 paused) 또는 query(name, url 또는 host의 일부)로 필터링합니다. page와 per_page(최대 100)로 페이지를 나눕니다. 각 검사에는 id(upc_...), workspace_id, site_id(워크스페이스 전체 검사는 null), name, kind, url, host, port, keyword, expected_status, http_method, interval_seconds, timeout_seconds, status(up, down, pending 또는 paused), enabled, public, last_checked_at, next_check_at, last_response_ms(밀리초), ssl_expires_at, ssl_issuer, domain_expires_at, created_at이 있습니다. 가동률과 인시던트는 uptime_checks_get을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/uptime.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /uptime/checks/:id/pause.json 가동 시간 검사 일시 중지 uptime_checks_pause

가동 시간 검사를 일시 중지해서 더 이상 점검하지 않게 합니다. 열려 있는 인시던트는 즉시 닫히며, 일시 중지된 동안에는 다운 또는 업 알림이 발송되지 않습니다. 기록은 유지되고 status는 paused로 표시됩니다. 재개하려면 uptime_checks_resume을 사용하세요. ID는 uptime_checks_list에서 가져옵니다. uptime.manage 권한이 필요합니다. 검사를 반환합니다.

권한: uptime.manage

예시
curl -X POST https://privatusanalytics.com/uptime/checks/:id/pause.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /uptime/checks/:id/resume.json 일시 중지된 가동 시간 검사 재개 uptime_checks_resume

일시 중지된 가동 시간 검사를 재개합니다. 다음 스케줄러 틱에 점검되며 첫 결과가 들어올 때까지 status는 pending입니다. ID는 uptime_checks_list에서 가져옵니다. uptime.manage 권한이 필요합니다. 검사를 반환합니다.

권한: uptime.manage

예시
curl -X POST https://privatusanalytics.com/uptime/checks/:id/resume.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /uptime/checks/:id.json 가동 시간 검사 조회: 24시간, 7일, 30일 가동률, 응답 시간, 인시던트 uptime_checks_get

설정만이 아니라 기록과 함께 가동 시간 검사 하나를 반환합니다. 응답 시간 차트에 쓸 range(24h 기본값, 7d 또는 30d)를 고르세요. 응답에는 check(설정과 실시간 상태, uptime_checks_list 참고), uptime(24h, 7d, 30d의 퍼센트이며 첫 점검이 실행되기 전에는 null), range, response_times(단위는 hour 또는 day, ISO 8601 시각의 labels, 위치별 평균 응답 시간(밀리초)의 series이며 빈 구간은 null), incidents(started_at, 아직 열려 있으면 null인 resolved_at, duration_seconds, cause, failed_locations가 있는 최근 50개)가 있습니다. 성공한 점검만 응답 시간에 집계됩니다. ID는 uptime_checks_list에서 가져옵니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/uptime/checks/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /uptime/checks/:id.json 가동 시간 검사 변경 uptime_checks_update

가동 시간 검사를 변경합니다. 보낸 입력만 변경됩니다. 규칙과 한도는 uptime_checks_create와 같습니다(간격은 요금제 최소값 이상이어야 하고, 비공개 주소는 거부됨). kind를 바꾸면 더 이상 적용되지 않는 대상 필드가 지워집니다. interval_seconds를 바꾸면 다음 점검이 즉시 예약됩니다. ID는 uptime_checks_list에서 가져옵니다. uptime.manage 권한이 필요합니다. 업데이트된 검사를 반환합니다.

권한: uptime.manage

예시
curl -X PATCH https://privatusanalytics.com/uptime/checks/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /uptime/probes.json 프로브 데이터센터, User-Agent, 송신 IP 범위 (가동 시간 프로브를 허용 목록에 추가할 때 사용) uptime_probes_list

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/uptime/probes.json
POST /uptime/probes/results.json 외부 프로브 에이전트의 결과 제출 (Bearer 가동 시간 프로브 토큰) uptime_probes_results

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/uptime/probes/results.json \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/uptime.json 워크스페이스 가동 시간 검사 추가 (사이트에 연결되지 않음) workspace_uptime_checks_create

사이트 하나가 아니라 워크스페이스 전체에 속하는 가동 시간 검사를 추가합니다. 검사를 사이트에 연결하려면 uptime_checks_create를 사용하세요. 입력, 요금제 한도, 규칙은 같으며 uptime_checks_create를 참고하세요. kind는 http, keyword, tcp 또는 dns이며 url, keyword, host, port 중 무엇이 적용되는지 결정합니다. 사이트가 없으므로 http 검사에는 명시적인 url이 필요합니다. 일부 사이트로 제한된 호출자는 워크스페이스 전체 검사를 만들 수 없습니다. workspaces_list의 workspace_id와 uptime.manage 권한이 필요합니다. id(upc_...)가 있고 site_id가 null인 검사를 반환합니다.

권한: uptime.manage

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/uptime.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/uptime.json 워크스페이스의 모든 가동 시간 검사 목록 보기 workspace_uptime_checks_list

사이트에 연결되지 않은 검사를 포함해 워크스페이스의 모든 가동 시간 검사를 이름순으로 나열합니다. 일부 사이트로 제한된 호출자는 그 사이트의 검사만 볼 수 있습니다. 사이트 하나의 검사는 uptime_checks_list를 사용하세요. status(up, down, pending 또는 paused) 또는 query(name, url 또는 host의 일부)로 필터링합니다. page와 per_page(최대 100)로 페이지를 나눕니다. 각 항목은 uptime_checks_list에 설명된 필드를 가집니다. workspaces_list의 workspace_id가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/uptime.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

가져오기

DELETE /sites/:site_id/imports/google/connection.json Google Analytics 계정 연결을 해제하고 저장된 액세스 토큰을 삭제합니다 imports_google_disconnect

이 사이트의 워크스페이스에 대해 호출한 멤버의 저장된 Google Analytics 연결을 제거하므로, 앱에서 다시 연결하기 전까지 GA4 가져오기는 Google에서 읽을 수 없습니다. 이미 가져온 데이터는 남으며 imports_delete로 해당 가져오기를 삭제해야만 제거됩니다. Google 쪽의 권한 부여는 취소되지 않습니다. 연결이 없거나 멤버의 GA4 가져오기가 대기 중이거나 실행 중인 동안에는 검증 오류로 실패합니다. disconnected가 true인 객체를 반환합니다. 연결은 앱에서 합니다(Google 로그인 화면). 해당 도구는 없습니다.

권한: sites.manage

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/imports/google/connection.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/imports/google/properties.json 가져올 수 있는 Google Analytics 4 속성 목록 보기 imports_google_properties

호출한 멤버가 연결한 Google 계정이 읽을 수 있는 Google Analytics 4 속성을 나열합니다. source가 ga4인 imports_create 전에 호출해서 사용할 property_id를 얻으세요. id(properties/123456789 같은 형태이며 property_id로 전달), name, account가 있는 객체의 목록을 반환합니다. 멤버가 이 워크스페이스에 Google을 연결하지 않았거나(앱에서 수행하며 해당 도구는 없음) Google이 요청을 거부하면 검증 오류로 실패합니다. Google에 실시간으로 호출하며 아무것도 변경하지 않습니다.

권한: sites.manage

예시
curl https://privatusanalytics.com/sites/:site_id/imports/google/properties.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/imports.json 가져오기 시작 (GA4 속성 또는 CSV 업로드) imports_create

다른 분석 도구의 과거 데이터를 사이트로 가져오는 작업을 시작하며, 백그라운드에서 처리되고 status queued인 가져오기를 반환합니다. Google Analytics 4 API에서 가져오려면 source를 ga4로 선택하세요. 앱에서 만든 Google 연결, property_id(imports_google_properties에서 가져옴), date_from이 필요합니다. date_to의 기본값은 사이트의 첫 추적 이벤트 전날 또는 어제입니다. 다른 소스(universal_analytics, fathom, simple_analytics, plausible, matomo, umami, clicky)는 file 입력으로 업로드한 CSV 내보내기를 받으며(multipart 양식 업로드, 최대 50MB), 그래서 MCP로 시작하기에는 비현실적이고 앱에서 하는 것이 가장 좋습니다. dimension은 CSV 행이 무엇으로 나뉘는지 감지하는 것을 재정의해야 할 때만 필요합니다(예를 들어 Matomo Label 내보내기). 가져온 행은 이벤트 허용량에 포함되지 않으며 include_imported true를 전달할 때만 통계에 나타납니다. 워크스페이스는 동시에 대기 중이거나 실행 중인 가져오기를 최대 5개까지 가질 수 있습니다. status가 complete 또는 failed가 될 때까지 imports_get을 폴링하세요. sites.manage 권한이 필요합니다.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/imports.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/imports/:id.json 가져오기와 가져온 모든 데이터 삭제 imports_delete

가져오기를 그것이 들여온 모든 행과 업로드된 파일과 함께 영구 삭제합니다. include_imported가 켜져 있으면 가져온 데이터를 포함한 통계가 즉시 바뀌며, 되돌릴 수 없지만 다시 가져올 수는 있습니다. ID는 imports_list에서 가져오며 site_id가 필요합니다. 삭제된 가져오기를 반환합니다. sites.manage 권한이 필요합니다. 트래커가 수집한 데이터는 건드리지 않습니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/imports/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/imports.json 사이트의 가져오기 목록 보기 imports_list

사이트의 가져오기를 최신순으로 나열합니다. 가져오기 ID를 찾거나 아직 실행 중인지 확인할 때 사용하세요. 선택적으로 status(queued, running, complete 또는 failed)로 필터링합니다. page와 per_page(최대 100)로 페이지를 나눕니다. 각 항목에는 id, site_id, source, status, date_from, date_to, rows_imported, error, completed_at, created_at이 있습니다. 상세는 imports_get을, 시작은 imports_create를 참고하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/imports.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/imports/:id.json 가져오기와 상태 조회 imports_get

사이트의 가져오기 하나를 반환하며, imports_create로 시작한 가져오기를 폴링하는 데 사용합니다. 필드는 id(imp_...), site_id, source, status(queued, running, complete 또는 failed), date_from과 date_to(YYYY-MM-DD, 알 수 없으면 null), rows_imported(가져온 일별 행 수), error(실패 시 설정), completed_at, created_at입니다. ID는 imports_create 또는 imports_list에서 가져옵니다. 가져온 행은 통계 호출에서 include_imported를 true로 설정했을 때만 통계에 나타납니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/imports/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

감사 로그

GET /workspaces/:workspace_id/audit_log.json 감사 로그 항목 목록 보기 (.csv를 붙여 내보내기) audit_logs_get

워크스페이스 감사 로그를 반환합니다. 누가 무엇을(설정, 멤버, 사이트, 목표, 토큰 등) 변경했는지를 최신순으로 페이지를 나눈 기록입니다. workspace.manage 권한과 감사 기록이 포함된 요금제가 필요합니다. Free 요금제에는 없어서 호출은 요금제 한도 오류로 실패하고, Pro는 30일, Business는 365일을 보관하며 Enterprise는 제한이 없습니다. 보관 기간보다 오래된 항목은 반환되지 않습니다. actor(멤버의 이메일, 정확히 일치), item_type(Site, Goal, Membership 같은 레코드 종류), event(create, update 또는 destroy), from과 to(YYYY-MM-DD, 양 끝 포함, UTC)로 필터링합니다. 각 항목에는 id, created_at, event, item_type, item_id, target(Site: example.com 같은 읽기 쉬운 라벨), actor_email(시스템이나 삭제된 사용자가 변경했으면 null), actor_name, token_name(사용된 API 토큰, 브라우저 세션이면 null), changes(변경된 각 필드를 [이전, 이후] 쌍에 매핑한 객체이며 시크릿은 제거됨), ip(멤버 또는 API 클라이언트가 사용한 주소, 알 수 없으면 null)가 있습니다. 같은 로그의 CSV 내보내기는 앱에서만 가능합니다.

권한: workspace.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/audit_log.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

검색

GET /sites/:site_id/search.json 검색 리포트: 클릭, 노출, CTR, 순위, 상위 검색어 및 페이지, 방문 페이지, 기회 search_report

Google Search Console과 Bing Webmaster의 검색 성과를 사이트 자체의 랜딩 페이지 지표와 결합한 것입니다. provider를 선택하세요. all(기본값)은 연결된 모든 엔진을 합산하며 position은 노출 수로 가중하고 국가와 기기는 Google 데이터만 사용합니다. google 또는 bing만 선택할 수도 있습니다. 일반적인 period 또는 사용자 지정 from과 to도 선택하세요. limit(1에서 100, 기본값 25)은 각 표의 행 수를 제한합니다. 결과에는 period, provider, connection(선택한 엔진의 property, status, last_synced_at, 연결되지 않았거나 provider가 all이면 null), connections(연결된 각 엔진의 provider, property, status, last_synced_at), latest_date(데이터가 있는 가장 최근 날짜), delayed(범위가 latest_date를 넘으면 true), totals와 series(일별)가 있으며 각각 clicks, impressions, ctr(분수가 아닌 퍼센트, 소수점 둘째 자리), position(평균 순위, 1이 최고, 알 수 없으면 null)이 있고, query, page, country, device의 breakdowns(value와 같은 네 지표의 행), landing_pages(visits, bounce_rate와 conversion_rate는 퍼센트, conversions가 있는 상위 페이지), opportunities(노출 100회 이상이면서 CTR이 2퍼센트 미만인 low_ctr_queries, 평균 순위가 8에서 20인 striking_distance 페이지)가 있습니다. 국가 값은 제공자가 보고한 그대로입니다. 방문자 데이터는 stats_breakdown을, 클릭 이전에 일어나는 일은 이 도구를 사용하세요. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/search.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE /sites/:site_id/search/connections/:provider.json Search Console 또는 Bing 연결 해제 및 데이터 삭제 search_disconnect

사이트에서 검색 제공자(google 또는 bing)의 연결을 해제하고, 해당 제공자에서 가져온 검색 데이터를 영구 삭제합니다. 되돌릴 수 없습니다. Google 인증은 그것을 사용하는 사이트가 더 이상 없으면 함께 제거됩니다. 해당 제공자가 연결되어 있지 않으면 실패합니다. 제거된 연결을 반환합니다. sites.manage가 필요합니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/search/connections/:provider.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/search/sync.json 지금 검색 데이터 가져오기 search_sync

정기 일정을 기다리지 않고, 연결된 제공자(google이 기본값, 또는 bing)의 검색 데이터를 즉시 가져오도록 대기열에 넣습니다. 연결 정보와 함께 바로 반환되며(HTTP 202) 가져오기는 백그라운드에서 실행됩니다. search_report를 폴링하면서 connection.last_synced_at을 확인하세요. 검색 엔진은 이틀 정도 늦게 보고하므로, 동기화한 후에도 가장 최근 며칠은 비어 있습니다. 제공자가 연결되어 있지 않으면 실패합니다. sites.manage가 필요합니다.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/search/sync.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

결제

POST /workspaces/:workspace_id/billing/badge.json 배지 보너스 사용 여부 설정 (무료 요금제) billing_badge

Free 워크스페이스를 Privatus Analytics 배지 보너스에 가입시키거나 해제합니다. 보너스를 받으면 월간 이벤트 허용량이 늘어납니다. 가입하려면 enabled를 true로 설정하세요. 이후 백그라운드 검사가 워크스페이스의 사이트에서 배지를 찾아 확인하므로 시간이 조금 걸릴 수 있습니다. 그 뒤에 billing_get을 읽어 badge.verified_at을 확인하세요. 해제하려면 enabled를 false로 설정하면 검사 및 확인 날짜가 지워지고 보너스가 사라집니다. 유료 요금제에는 보너스가 없으므로 Pro 또는 Business 워크스페이스에서 가입하는 것은 거부됩니다. billing_get과 같은 워크스페이스 결제 객체를 반환합니다. billing.manage가 필요합니다.

권한: billing.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/badge.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/billing/cancel.json 결제 기간 종료 시 해지 billing_cancel

현재 결제 기간이 끝날 때 유료 구독을 취소합니다. 환불은 없으며 요금제는 current_period_ends_at까지 유지되고, 그 이후 워크스페이스는 Free 요금제로 이동합니다. 그 전에 취소를 되돌리려면 billing_resume을 사용하세요. 워크스페이스에 구독이 없거나 취소가 이미 예약되어 있으면 실패합니다. 선택 사항인 reason(enum 값 중 하나)과 comment는 해지 설문입니다. comment가 있으면 멤버가 보낸 피드백 메시지로 Privatus Analytics 팀에 이메일로 전달되며 저장되지 않습니다. cancel_at_period_end가 true인 결제 객체를 반환합니다. billing.manage가 필요합니다.

권한: billing.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/cancel.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/billing/change_plan.json 요금제, 티어 또는 주기 변경 (일할 계산) billing_change_plan

기존 구독을 다른 요금제, 이벤트 티어 또는 결제 주기로 옮깁니다. 비용이 청구됩니다. 변경은 즉시 적용되고 Paddle이 일할 계산하므로, 등록된 결제 수단에 청구 또는 크레딧이 바로 적용됩니다. 정확한 금액을 보려면 같은 입력으로 먼저 billing_preview를 실행하세요. 워크스페이스에 구독이 없거나(이 경우 billing_checkout 사용), 대상이 현재 요금제, 티어, 주기와 같거나, 요금제와 이벤트 조합에 맞는 가격이 없으면 실패합니다. events 값은 plans_list의 티어 중 하나여야 합니다. 업데이트된 결제 객체를 반환합니다. billing.manage가 필요합니다.

권한: billing.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/change_plan.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/billing/checkout.json 유료 요금제의 Paddle 결제 시작 billing_checkout

아직 구독이 없는 워크스페이스의 Paddle 결제를 시작하고, 호스팅된 결제 URL을 반환합니다. 사람이 브라우저에서 결제를 완료하기 전에는 아무것도 청구되지 않으므로 url을 그 사람에게 전달하세요. 워크스페이스에 이미 구독이 있다면 billing_change_plan을 대신 사용하세요. 입력은 plan(pro 또는 business), events(plans_list의 월간 이벤트 티어), interval(month 또는 year, 기본값 month)입니다. 가격에는 VAT 또는 판매세가 포함되어 있습니다. 승인된 할인 프로그램은 자동으로 적용되며 discount_id로 보고됩니다. transaction_id, url(null 가능), price_id, plan, events, interval, amount(주기에 대한 USD 정수 금액), client_token, environment(sandbox 또는 production, Paddle 오버레이에서 사용), custom_data, discount_id(null 가능)를 반환합니다. 워크스페이스에 이미 구독이 있으면 실패합니다. billing.manage가 필요합니다.

권한: billing.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/checkout.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/billing/discount.json 비영리, 교육 또는 오픈 소스 할인 신청 billing_discount

워크스페이스에 할인 프로그램을 신청합니다. 담당자 검토를 위한 신청서를 제출하고 Privatus Analytics 팀에 이메일을 보내며, 그것만으로 할인이 적용되지는 않습니다. 프로그램은 nonprofit, education, open_source(50퍼센트 할인), open_source_free(월 최대 100만 이벤트까지 Pro 무료), agency(소유한 모든 워크스페이스 20퍼센트 할인)입니다. 워크스페이스당 진행 중인 신청(pending, approved 또는 active)은 하나만 허용되며, 거절 또는 취소 후에는 다시 신청할 수 있습니다. license는 두 개의 오픈 소스 프로그램에서만 보관됩니다. program, status, percent, comp_events(null 가능), organization_name, website, proof_url, license, note, rejection_reason, created_at, reviewed_at, applied_at, revoked_at(null 가능한 타임스탬프)이 포함된 신청서를 반환합니다. 진행 상황은 나중에 billing_get의 discount 필드에서 확인하세요. billing.manage가 필요합니다.

권한: billing.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/discount.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/billing/payment_method.json 결제 수단 업데이트 링크 받기 billing_payment_method

사람이 구독의 결제 수단을 업데이트할 수 있는 Paddle 링크를 반환합니다. 호출 자체로 변경되는 것은 없습니다. url을 사람에게 전달해 브라우저에서 열도록 하세요. 결과에는 kind(payment_method)와 url이 있습니다. 워크스페이스에 활성 구독이 없으면 실패합니다. 청구서, 주소 및 그 밖의 모든 결제 정보는 billing_portal을 사용하세요. billing.manage가 필요합니다.

권한: billing.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/payment_method.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/billing/portal.json Paddle 고객 포털 링크 받기 billing_portal

사람이 청구서, 결제 수단, 주소를 볼 수 있는 Paddle 고객 포털 링크를 반환합니다. 호출 자체로 변경되는 것은 없습니다. url을 사람에게 전달해 브라우저에서 열도록 하세요. 결과에는 kind(portal)와 url이 있습니다. 워크스페이스에 아직 Paddle 고객이 없거나(결제를 한 적이 없는 경우), 호출자가 접근할 수 없는 다른 워크스페이스와 고객이 공유되고 있으면 실패합니다. 포털은 고객의 모든 데이터를 노출하기 때문입니다. 카드만 필요하면 billing_payment_method를 사용하세요. billing.manage가 필요합니다.

권한: billing.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/portal.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/billing/preview.json 일할 계산이 포함된 요금제 변경 미리 보기 billing_preview

구독을 다른 요금제, 티어 또는 주기로 옮기면 지금 비용이 얼마가 되는지, 아무것도 변경하지 않고 보여 줍니다. billing_change_plan 전에 같은 plan, events, interval 입력으로 항상 먼저 실행하세요. 워크스페이스에 구독이 없거나 대상이 현재 가격과 같으면 실패합니다. plan, events, interval, price_id, amount(주기에 대한 USD 정가 정수 금액), currency, charge_minor(지금 청구될 금액), credit_minor(미사용 기간에 대한 크레딧), result_minor(순 금액)를 모두 통화 소액 단위로 반환하며, result_action(charge 또는 credit, null 가능), next_billed_at(null 가능), warnings(문자열, 예를 들어 지난달 사용량이 새 티어를 초과하거나 새 요금제가 위반하게 될 사이트 또는 멤버 수 같은 요금제 한도)도 반환합니다. billing.manage가 필요합니다.

권한: billing.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/preview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/billing/resume.json 예약된 해지를 취소하거나 일시 중지 해제 billing_resume

예약된 취소를 되돌리거나 일시 중지된 구독을 재개해 요금제가 계속 갱신되게 합니다. billing_cancel 이후 current_period_ends_at 전에 사용하세요. 일시 중지된 구독은 즉시 재개됩니다. 예약된 취소가 없고 구독이 일시 중지 상태도 아니면 실패합니다. 업데이트된 결제 객체를 반환합니다. billing.manage가 필요합니다.

권한: billing.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/resume.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/billing.json 요금제, 구독, 사용량 조회 billing_get

워크스페이스의 요금제와 결제 상태를 반환합니다. 결제와 관련된 것을 변경하기 전에, 그리고 구독이 활성 상태인지 취소 중인지 알아볼 때 사용하세요. 필드에는 workspace_id, plan(free, pro, business 또는 enterprise), plan_events(판매된 월간 이벤트 티어), allowance(배지 보너스를 포함해 실제로 허용되는 월간 이벤트), billing_interval(month 또는 year, null 가능), price(주기에 대한 USD 정수 금액, null 가능), subscription_status, current_period_ends_at, cancel_at_period_end(취소가 예약되어 있으면 true), canceled_at, auto_upgrade, discount(가장 최근 할인 신청, null 가능), discount_percent, billing_emails(배열), tax_id, badge(opted_in, verified_at, checked_at, 보너스 크기), usage(billing_usage가 반환하는 것과 같은 객체)가 있습니다. billing.manage가 필요합니다. 청구서는 billing_invoices_list에 있고 월별 사용량 보기는 billing_usage입니다.

권한: billing.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/billing.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/billing.json 결제 이메일, 세금 ID, 자동 업그레이드 수정 billing_update

워크스페이스의 결제 설정을 업데이트합니다. 보낸 입력만 변경됩니다. billing_emails는 청구서와 결제 알림을 받을 추가 주소 최대 5개의 배열이며 전체 목록을 교체합니다. tax_id는 워크스페이스에 저장되지만 청구서에 추가되지는 않으므로 결제 시에도 입력해야 합니다. auto_upgrade의 기본값은 false입니다. true이면 월간 이벤트 한도에 도달했을 때 수집을 멈추는 대신 워크스페이스를 다음 티어로 옮기고 차액을 청구합니다. 한도에서 수집이 이미 일시 중지된 상태에서 켜면 즉시 업그레이드와 청구가 이루어지고 확인 이메일이 발송되며, Paddle이 업그레이드를 거부하면 아무것도 저장되지 않습니다. billing_get과 같은 결제 객체를 반환합니다. billing.manage가 필요합니다.

권한: billing.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/billing.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/billing/usage.json 이번 달 사용량, 예측, 사이트별 분포 조회 billing_usage

워크스페이스의 한 달 이벤트 사용량을 반환합니다. 워크스페이스가 월간 하드 한도에 얼마나 가까운지 확인할 때 사용하세요. 입력은 month(해당 월의 아무 날짜, 기본값은 현재 월)입니다. 페이지뷰와 사용자 지정 이벤트만 집계됩니다. 필드는 month, events, bots(봇 집계 수, 과금되지 않음), allowance, percent(0에서 100 이상, 소수점 한 자리), forecast와 forecast_percent(월말까지의 직선 예측, 지난 달은 null), days_left, status(ok, 80퍼센트에서 warning, 100퍼센트에서 over, paused 또는 locked), sites(사이트별 site_id, domain, name, events, share 퍼센트이며 큰 순), history(이전 달의 month와 events), access_locked_at, collection_paused(새 이벤트가 버려지고 있으면 true), pause_reason(limit 또는 staff, null 가능), collection_paused_at, resumes_at(한도 때문에 일시 중지된 경우 다음 달 1일)입니다. billing.manage가 필요합니다.

권한: billing.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/usage.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/billing/invoices.json 인보이스 목록 보기 billing_invoices_list

워크스페이스의 결제 거래를 최신순으로 나열합니다. 각 항목에는 id(billing_invoices_get에 사용), invoice_number(null 가능), status, amount_minor(통화 소액 단위의 정수이므로 900은 9.00을 뜻함), currency(USD 같은 ISO 코드), billed_at(null 가능한 ISO 8601)가 있습니다. page와 per_page(최대 100)로 페이지를 나눕니다. 거래만 나열합니다. PDF를 받으려면 billing_invoices_get을, 카드를 업데이트하려면 billing_payment_method를 사용하세요. billing.manage가 필요합니다.

권한: billing.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/invoices.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/billing/invoices/:id.json 인보이스의 PDF 링크 받기 billing_invoices_get

결제된 거래 하나의 PDF 청구서 링크를 반환합니다. 청구서 ID는 billing_invoices_list에서 가져오세요(id 필드, Paddle 거래 ID). 결과에는 kind(invoice)와 url이 있으며, url은 Paddle의 PDF 링크이므로 호출 직후에 가져오거나 공유하세요. ID가 이 워크스페이스의 것이 아니거나 Paddle에 해당 청구서가 없으면 실패합니다. billing.manage가 필요합니다.

권한: billing.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/invoices/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

계정

GET /account.json 프로필과 환경설정 조회 account_get

로그인한 멤버 본인의 프로필과 환경설정을 반환합니다. account_update로 변경하기 전에 설정을 읽을 때 사용하세요. 워크스페이스가 아니라 사람에 대한 정보입니다. 워크스페이스 요금제와 청구서는 billing_get에 있습니다. 필드는 email, unconfirmed_email(이메일 변경이 확인을 기다리는 동안 설정되고, 그 외에는 null), name(null 가능), theme(system, light 또는 dark), default_landing(sites 또는 last_site), locale(로그인한 앱의 언어 코드), timezone(IANA 이름, null 가능), shortcuts_enabled, reduce_motion, product_emails, site_audit_emails, marketing_emails, newsletter(모두 불리언이며 true는 구독 중), two_factor(불리언), passkeys(등록된 패스키 수), created_at(ISO 8601)입니다. 워크스페이스 ID 제공자를 통해서만 열린 세션에는 email과 화면 표시 설정만 보입니다.

권한: member

예시
curl https://privatusanalytics.com/account.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /account.json 프로필과 환경설정 수정 account_update

로그인한 멤버 본인의 프로필, 화면 표시 환경설정, 이메일 구독을 업데이트합니다. 보낸 입력만 변경되고 나머지는 그대로 유지됩니다. email 변경은 즉시 적용되지 않습니다. 새 주소로 확인 이메일이 발송되고(요청 횟수 제한 있음), 확인될 때까지 unconfirmed_email에 대기 중인 주소가 표시됩니다. API 토큰으로는 이메일 주소를 변경할 수 없고, 수신 거부 후 marketing_emails를 다시 켤 수도 없습니다. 둘 다 로그인된 브라우저가 필요합니다. marketing_emails를 끄는 것은 허용됩니다. 워크스페이스 ID 제공자가 연 세션은 화면 표시 설정(theme, default_landing, locale, timezone, shortcuts_enabled, reduce_motion)만 변경할 수 있습니다. 업데이트된 계정을 account_get과 같은 형태로 반환합니다. 계정을 삭제하지 않으며 워크스페이스 설정도 변경할 수 없습니다.

권한: member

예시
curl -X PATCH https://privatusanalytics.com/account.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

공유

GET /badge/:site_id.json 공개 사이트의 방문자 카운터 배지 (SVG) badges_get

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/badge/:site_id.json
GET /share/:token/breakdown/:dimension.json 공유된 차원의 상위 값 shares_breakdown

공유 링크 뒤에 있는 한 차원의 상위 값이며, stats_breakdown의 공유 버전입니다. 경로에는 token(공유 URL의 마지막 부분)과 dimension을 사용하며, dimension은 링크가 공유하는 섹션에 속해야 합니다. 예를 들어 sources는 channel, referrer, referrer_url을, pages는 page, entry_page, exit_page, hostname을, campaigns는 utm_ 차원을, locations는 country와 language를, technology는 device, browser, os, screen을, conversions는 goal을, events는 event를 공유합니다. 링크의 섹션 밖의 차원은 검증 오류로 거부됩니다. limit는 1에서 100행입니다(기본값 10). 행은 해당 차원의 stats_breakdown과 같은 필드와 단위를 가집니다. 링크의 고정된 기간과 필터가 period, from, to, filters보다 우선하며, 링크가 허용하지 않으면 호출자의 필터는 무시됩니다. 비밀번호 링크에는 X-Share-Password 헤더가 필요합니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/share/:token/breakdown/:dimension.json
GET /share/:token.json 공유 토큰으로 보는 공유 대시보드 개요 shares_overview

계정이 없는 사람을 위해 공유 링크 뒤의 대시보드를 읽습니다. 경로의 token은 공유 URL(/share/<token>)의 마지막 부분이며 유일한 자격 증명입니다. 비밀번호 링크에는 X-Share-Password 헤더도 필요하고, sso 링크에는 로그인한 멤버가 필요합니다. 사이트의 공개 대시보드가 켜져 있으면 사이트 ID(pa_...)도 받습니다. 링크가 공유하는 범위로 제한된 stats_overview와 같은 데이터를 반환합니다. 즉 period, metrics(visitors, visits, pageviews, views_per_visit, 퍼센트인 bounce_rate, 밀리초인 visit_duration, 소액 단위의 revenue), interval에 대한 차트 series, compare가 설정되었을 때의 비교 데이터, 공유된 섹션에 대한 상위 값만 있는 panels입니다. 여기에 site(id, name, domain, timezone), sections, locked_period가 추가됩니다. live_visitors는 링크가 live를 공유할 때만 나타납니다. 링크의 고정된 기간과 고정된 필터가 period, from, to, filters를 덮어씁니다. 한 차원의 더 많은 행은 shares_breakdown을 사용하세요. 본인의 사이트는 stats_overview를 사용하세요.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/share/:token.json

광고 게재 위치

POST /sites/:site_id/experiments/ads.json 광고 게재 위치 만들기 ad_placements_create

사이트에 하나의 크기를 가진 슬롯을 만듭니다. size(medium_rectangle 또는 leaderboard 같은 일반 크기) 또는 픽셀 단위의 width와 height를 보내세요. key는 사이트의 태그가 슬롯을 부르는 이름이며 생략하면 이름으로 만들어집니다. 그다음 ad_creatives_create로 소재를 추가하고 ad_placements_embed의 태그를 사이트에 넣으세요. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/ads.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/experiments/ads/:id.json 광고 게재 위치와 소재 삭제하기 ad_placements_delete

게재 위치와 그 소재, 이미지, 광고 실험과 결과, 스폰서 링크를 영구 삭제합니다. 이후 사이트의 태그는 아무것도 그리지 않습니다. MCP 도구는 이를 실행하지 않고 human_only와 사람이 삭제하는 페이지로 응답합니다. content.write 권한이 필요합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/ads/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/experiments/ads/:id/embed.json 사이트에 게재 위치를 표시하는 태그 가져오기 ad_placements_embed

붙여넣을 html 형태의 로더 스크립트(페이지당 한 번)와 이 게재 위치의 슬롯입니다. 슬롯은 로더가 실행되기 전에도 크기를 유지합니다. analytics.read 권한이 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:id/embed.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/experiments/ads.json 사이트의 광고 게재 위치와 최근 30일 수치 목록 ad_placements_list

각 게재 위치의 키, 크기, 소재 수, 최근 30일 통계(노출, 가시 노출, 클릭, 가시 노출당 클릭률인 ctr)를 보여 줍니다. analytics.read 권한이 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/experiments/ads.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/experiments/ads/:id.json 게재 위치와 소재별 수치 가져오기 ad_placements_get

게재 위치, 기간(7d, 30d 또는 90d) 동안의 소재별 통계, 게재 위치의 일별 수치입니다. humans_only는 봇 점수가 사람일 가능성이 높다고 판단한 것만 남깁니다 (Pro 이상). analytics.read 권한이 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/experiments/ads/:id.json 광고 게재 위치 변경하기 ad_placements_update

이름, 키, 크기 또는 라벨을 변경합니다. 지정한 입력만 바뀝니다. 새 키는 사이트에 새 태그가 필요합니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/experiments/ads/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

광고 소재

POST /sites/:site_id/experiments/ads/:ad_placement_id/creatives.json 광고 게재 위치에 소재 추가하기 ad_creatives_create

게재 위치의 비율에 맞는 이미지(최소한 그 크기 이상, 두 배 크기가 가장 선명함)와 클릭 시 이동할 주소를 추가합니다. 이미지는 multipart 파일로 보내거나 image_url로 다운로드하게 하세요. 백그라운드에서 처리되므로 state가 ready가 될 때까지 ad_creatives_get을 조회하세요. 일정, 기기, 경로는 Pro 이상입니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json 소재와 이미지 삭제하기 ad_creatives_delete

소재와 이미지를 영구 삭제합니다. 실험에서 비교 중인 소재는 삭제할 수 없으며, 대신 끄세요. MCP 도구는 이를 실행하지 않고 human_only와 사람이 삭제하는 페이지로 응답합니다. content.write 권한이 필요합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json 상태와 함께 소재 하나 가져오기 ad_creatives_get

소재는 이미지가 만들어질 때까지 processing이고, 그 후 ready(또는 failed이며 이유는 error에 있음)가 됩니다. analytics.read 권한이 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json 소재 변경하기 ad_creatives_update

링크, 가중치, 일정 또는 타기팅을 변경하거나, 끄거나(active false), 이미지를 교체합니다. 지정한 입력만 바뀝니다. 새 이미지는 준비되면 기존 이미지를 대체합니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

구독

DELETE /sites/:site_id/subscriptions/connections/:provider.json 결제 제공업체 연결을 해제하고 키와 구독 데이터 삭제 subscriptions_disconnect

사이트에서 결제 제공자(stripe, paddle, lemon_squeezy, chargebee 또는 polar)의 연결을 해제하고, 저장된 API 키와 그곳에서 읽은 모든 구독 행을 영구 삭제합니다. 되돌릴 수 없으며, MRR, 이탈, 코호트 수치에서 해당 제공자의 구독이 즉시 빠집니다. 해당 제공자가 연결되어 있지 않으면 실패합니다. 제거된 연결을 반환합니다. sites.manage가 필요합니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/subscriptions/connections/:provider.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/subscriptions/sync.json 결제 제공업체에서 지금 구독 읽기 subscriptions_sync

정기 일정을 기다리지 않고, 연결된 제공자 하나(stripe, paddle, lemon_squeezy, chargebee 또는 polar)의 구독을 즉시 동기화하도록 대기열에 넣습니다. 연결 정보와 함께 바로 반환되며(HTTP 202) 동기화는 백그라운드에서 실행됩니다. subscriptions_report를 폴링하거나 연결의 last_synced_at과 last_error를 확인하세요. 리포트는 최대 15분간 캐시됩니다. 제공자가 연결되어 있지 않으면 실패합니다. sites.manage가 필요합니다.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/subscriptions/sync.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/subscriptions/cohorts.json 이탈 코호트 표: 첫 결제 월별 이탈률 또는 유지율 subscriptions_cohorts

사이트 구독의 이탈 코호트 그리드이며, 첫 결제 월마다 한 행입니다. months는 6, 12(기본값) 또는 24개 코호트입니다. plan은 한 요금제의 구독만 남깁니다(subscriptions_report의 plans 참고). metric은 subscriptions(개수) 또는 mrr(금액)입니다. view는 churn(그 시점까지 종료된 비율, 기본값) 또는 retention(여전히 유지 중인 비율)입니다. metric, view, months, plan(필터, 없으면 null), currency, cohorts를 반환하며, 각 코호트에는 month(YYYY-MM), size(구독 수 또는 사이트 통화의 소액 단위 MRR), cells가 있고, 각 셀에는 offset(코호트 월로부터의 개월 수, 0이 첫 번째), retained(size와 같은 단위), percent(0에서 100, 빈 코호트는 null)가 있습니다. 결제한 적이 없는 체험은 어떤 코호트에도 없습니다. 핵심 MRR, ARR, 이탈은 subscriptions_report를 사용하세요. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/subscriptions/cohorts.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/subscriptions.json 구독 지표: MRR, ARR, MRR 변동, 이탈, 매출 유지율, 체험, 요금제, 예측 subscriptions_report

사이트에 연결된 Stripe, Paddle, Lemon Squeezy, Chargebee 또는 Polar 계정에서 읽은 사이트의 구독 지표입니다. months는 6, 12(기본값) 또는 24입니다. plan은 plans에 나열된 이름으로 지정한 한 요금제의 구독만 남깁니다. 금액 필드는 사이트 통화(응답의 currency)의 소액 단위 정수이며, 다른 통화는 오늘의 환율로 환산됩니다. 결과에는 currency, connected(연결된 제공자가 없으면 false), plan(요금제 필터, 또는 null), connections(연결된 제공자마다 하나로 provider, account_name, sandbox, status, last_error, last_synced_at, created_at이 있으며 키는 절대 포함되지 않음), skipped_currencies(환율이 없어 금액이 집계되지 않은 통화), totals, series, forecast, plans가 있습니다. totals에는 mrr_minor, arr_minor, previous_mrr_minor(30일 전의 MRR), active_subscriptions, arpa_minor(구독이 없으면 null), trialing, trial_conversion_rate(최근 90일 동안 종료되어 결제로 이어진 체험의 퍼센트, 종료된 체험이 없으면 null)가 있고, 최근 30일의 new_subscriptions, new_mrr_minor, expansion_mrr_minor, contraction_mrr_minor, churned_subscriptions, churned_mrr_minor, net_new_mrr_minor, quick_ratio(잃은 MRR인 이탈과 축소 1단위당 얻은 MRR인 신규와 확장, 잃은 것이 없으면 null), subscription_churn_rate와 mrr_churn_rate(퍼센트, 기준이 없으면 null)도 있습니다. 또한 net_revenue_retention과 gross_revenue_retention(12개월 전에 결제하던 구독이 당시 냈던 금액 중 지금도 내는 금액의 퍼센트로, 각각 업그레이드를 포함한 경우와 제외한 경우, 기준이 없으면 null), forecast_mrr_minor(12개월 후의 MRR, 예측이 없으면 null)가 있습니다. series에는 월별 행(month는 YYYY-MM)이 있으며 mrr_minor, active_subscriptions, 같은 변동 필드, churn_rate가 있습니다. forecast에는 다음 12개월의 월별 행(month, mrr_minor)이 있으며 최근 완전한 세 달을 바탕으로 추정하고, MRR로 시작한 완전한 세 달이 없으면 비어 있습니다. plans는 MRR 기준 최대 50개 요금제를 나열하며 plan(제공자가 요금제 이름을 주지 않은 구독은 null), mrr_minor, active_subscriptions, churned_subscriptions, subscription_churn_rate(최근 30일)가 있고, 항상 모든 요금제를 대상으로 합니다. 구독은 첫 결제부터 집계됩니다. 업그레이드와 다운그레이드는 첫 동기화부터 알 수 있으며, 그 이전의 과거 월은 구독을 처음 읽었을 때의 가격을 사용합니다. 첫 결제 월별 유지율은 subscriptions_cohorts를 사용하세요. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/subscriptions.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

내보내기

POST /workspaces/:workspace_id/exports.json 내보내기 대기열에 추가 (백그라운드에서 생성) exports_create

백그라운드에서 만들어지는 데이터 내보내기를 대기열에 넣고 status queued로 바로 반환합니다. 파일(CSV, JSON, XLSX, NDJSON 또는 대시보드 패널의 ZIP)이 필요할 때 선택하고, 아무것도 만들지 않고 열과 크기를 확인하려면 먼저 exports_preview를 사용하세요. 가벼운 수치는 대신 stats 도구를 사용하세요. 필수 입력은 workspace_id(경로), site_id, from과 to(YYYY-MM-DD, 양 끝 포함, 내보내기 시간대 기준)입니다. kind가 무엇을 내보낼지와 어떤 옵션이 적용되는지를 결정합니다. aggregated(기본값)는 시간 버킷별 방문 지표를 제공하며 grouping, dimensions(최대 6개), metrics, filters, segment_id를 사용합니다. pageviews, events, raw는 히트당 한 행을 제공하며 fields, filters, segment_id를 사용하고 Pro 이상 요금제가 필요하며 400일로 제한됩니다(raw는 93일). imported는 가져온 일별 통계를 제공하며 dimensions만 사용합니다. dashboard는 개요 패널의 ZIP을 제공합니다(format은 zip만 가능). kind별로 허용되는 file_format은 aggregated, pageviews, events, imported는 csv, json 또는 xlsx, raw는 csv 또는 ndjson, dashboard는 zip입니다. 선택한 kind에 적용되지 않는 옵션은 무시됩니다. 워크스페이스는 동시에 대기 중이거나 실행 중인 내보내기를 최대 5개까지 가질 수 있습니다. 응답은 id(exp_...), status, row_count, expires_at(만들어질 때까지 null)이 있는 내보내기입니다. status가 complete가 될 때까지 exports_get을 폴링한 다음 exports_download를 호출하세요. 요청한 사용자는 준비되면 이메일을 받고, export.ready 웹훅이 전송되며, 이 작업은 감사 로그에 기록됩니다. props 열의 이벤트 속성에는 내보내기에 안전하다고 표시된 속성만 포함됩니다(event_properties_list 참고).

권한: analytics.export

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/exports.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /exports/:id.json 내보내기와 파일 삭제 exports_delete

내보내기와 생성된 파일을 영구 삭제합니다. 다운로드 링크는 즉시 작동을 멈추며 되돌릴 수 없지만, 내보내기를 다시 만들 수는 있습니다. 파일은 만들어진 지 7일 후에 자동으로 삭제되기도 하므로, 더 이상 필요 없는 완료되었거나 실패한 내보내기를 제거할 때 사용하세요. ID는 exports_list에서 가져옵니다. 삭제 전 상태 그대로의 삭제된 내보내기 객체를 반환합니다.

권한: analytics.export · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/exports/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /exports/:id/download.json 파일의 서명된 링크 받기 (10분간 유효) exports_download

완료된 내보내기의 유효 기간이 짧은 다운로드 링크를 반환합니다. exports_get이 status complete를 보여 준 후에 선택하세요. 응답에는 url(10분간 유효한 서명된 링크이므로 바로 가져오세요), expires_at(링크가 작동을 멈추는 시각, ISO 8601), filename, byte_size(바이트)가 있습니다. 내보내기가 7일보다 오래되었으면 not found 오류 코드 expired로 실패하고, 내보내기가 아직 대기 중이거나 실행 중이거나 실패한 경우에는 검증 오류로 실패합니다(오류 메시지에 이유가 나옴). 내보내기 자체가 만료되지 않았다면 다시 호출해서 새 링크를 받을 수 있습니다. ID는 exports_list에서 가져옵니다.

권한: analytics.export

예시
curl https://privatusanalytics.com/exports/:id/download.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/exports.json 내보내기 목록 보기 (작업 대기열) exports_list

접근 가능한 사이트에 대한 워크스페이스의 내보내기를 최신순으로 나열합니다. 내보내기 ID를 찾거나, 아직 실행 중인 내보내기를 확인하거나, 무엇이 만료되었는지 볼 때 사용하세요. site_id, status(queued, running, complete, failed 또는 expired), kind(aggregated, pageviews, events, imported, raw 또는 dashboard)로 필터링합니다. page와 per_page(최대 100)로 페이지를 나누며, data(내보내기 목록, 필드는 exports_get 참고)와 페이지 정보 meta를 반환합니다. workspaces_list의 workspace_id가 필요합니다.

권한: analytics.export

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/exports.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/exports/preview.json 내보내기 미리 보기: 처음 20개 행과 예상 행 수 exports_preview

아무것도 만들지 않는 내보내기 시험 실행입니다. exports_create와 같은 입력을 받아 kind, file_format, columns(순서대로의 열 이름), rows(열을 키로 하는 객체인 샘플 행 최대 20개), estimated_rows(전체 파일의 대략적인 행 수)를 반환합니다. dashboard kind에서는 샘플 행이 각 파일 이름과 행 수를 나열합니다. exports_create를 호출하기 전에 dimensions, fields, filters, 날짜 범위를 검증하고 내보내기가 얼마나 클지 확인할 때 사용하세요. 동기적으로 실행되므로 날짜 범위는 적당히 유지하세요. 검증 오류는 행 단위 kind의 Pro 요금제 요구 사항을 포함해 exports_create와 같습니다. 아무것도 저장되지 않고 이메일도 발송되지 않습니다.

권한: analytics.export

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/exports/preview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /exports/:id.json 내보내기와 상태 조회 exports_get

진행 상황을 포함한 내보내기 하나를 반환합니다. exports_create로 시작한 내보내기를 status가 complete 또는 failed가 될 때까지 폴링할 때 사용하세요. 상태는 queued, running, complete, failed, expired입니다. 필드에는 id(exp_...), site_id(pa_...), kind, format, status, params(저장된 내보내기 정의), row_count(완료 전에는 null), error(실패 시 설정), completed_at, expires_at(파일은 완료 후 7일간 보관), download_url(파일을 다운로드할 수 있는 동안에만 설정되며, 서명된 링크는 exports_download로 받으세요), created_at이 있습니다. ID는 exports_create 또는 exports_list에서 가져옵니다.

권한: analytics.export

예시
curl https://privatusanalytics.com/exports/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

대시보드

GET /workspaces/:workspace_id/dashboards/:id/cards/:index.json 사용자 지정 대시보드의 카드 하나에 대한 데이터 dashboards_card

사용자 지정 대시보드의 카드 하나의 실시간 데이터를 반환합니다. 대시보드는 카드의 목록이며(카드 목록은 dashboards_get 참고) 각 카드는 따로 로드되므로, index에 0부터 센 카드 위치를 넣어 카드마다 한 번씩 호출하세요. index, type, title, site_id, site_name, params, status, data를 반환합니다. status는 ok, not_available(카드에 보여 줄 것이 없는 경우로, 예를 들어 퍼널이 없는 사이트의 퍼널 카드나 검사가 없는 가동 시간 카드), no_access(카드가 토큰이나 역할로 열 수 없는 사이트에 속하는 경우로, 이때 title, params, data는 비어 있음)입니다. data의 형태는 type에 따라 다릅니다. metric은 이전 기간과 비교한 {metric, value, previous, change, period}를 줍니다. chart는 {metric, interval, period, series: [{date, value}]}를 줍니다. breakdown은 {dimension, label, rows}를 줍니다. goal은 목표 완료의 {rows}를 줍니다. live는 {visitors}를 줍니다. funnel은 {funnel_id, name, overall_conversion_rate, steps}를 줍니다. uptime은 {checks: [{name, status, uptime}]}를 줍니다. vitals는 {scorecard}를 줍니다. subscriptions는 {currency, mrr_minor, previous_mrr_minor(30일 전), change(퍼센트, 30일 전에 MRR이 없으면 null), active_subscriptions, subscription_churn_rate(최근 30일)}를 주며, 사이트에 연결된 결제 제공자가 없으면 not_available입니다. 카드 params의 기본값은 period 30d, metric visitors, dimension page, 5행입니다(limit은 최대 10). 목록 범위를 벗어난 index는 404를 반환합니다. 카드가 몇 개인지 보려면 먼저 dashboards_get을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id/cards/:index.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/dashboards.json 사용자 지정 대시보드 만들기 dashboards_create

워크스페이스에 사용자 지정 대시보드를 만듭니다. 사용자 지정 대시보드는 이름이 있고 순서가 있는 최대 40개 카드의 목록이며, 카드는 워크스페이스의 서로 다른 사이트에서 가져올 수 있습니다. name(최대 100자)과 cards를 전달하세요. cards는 type(metric, chart, breakdown, goal, live, funnel, uptime, vitals 또는 subscriptions), site_id(pa_..., sites_list에서 가져옴), 선택 사항인 title(최대 80자)과 params가 있는 객체의 목록입니다. type별로 사용되는 params는 metric(period, metric), chart(period, metric, interval), breakdown(period, dimension, limit), goal(period, limit), funnel(period, funnel_id), uptime(limit), vitals(period)입니다. live와 subscriptions는 params가 없습니다. 다른 params는 버려집니다. period는 30d 같은 프리셋이어야 하며(custom은 불가), metric은 visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration 중 하나여야 합니다. 모든 카드는 토큰이 접근할 수 있는 사이트를 가리켜야 하며, 일부 사이트로 제한된 토큰은 카드를 하나 이상 포함해야 합니다. id(dash_...), name, cards, 타임스탬프가 있는 대시보드를 반환합니다. dashboards_get으로 읽고 각 카드의 수치는 dashboards_card로 불러오세요. content.write 권한이 필요합니다. 워크스페이스가 가질 수 있는 대시보드 수는 요금제에 따라 정해집니다. Free는 1개, Pro는 3개, Business는 무제한입니다. 개수를 초과하면 검증 오류로 거부됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/dashboards.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /workspaces/:workspace_id/dashboards/:id.json 사용자 지정 대시보드 삭제 dashboards_delete

사용자 지정 대시보드를 영구 삭제합니다. 대시보드 레이아웃만 제거되고 분석 데이터는 건드리지 않으며 되돌릴 수 없습니다. 대시보드에 카드가 있는 모든 사이트에 접근할 수 있어야 하고, 대시보드에는 접근 가능한 사이트의 카드가 하나 이상 있어야 합니다. 삭제된 대시보드를 반환합니다. 대신 대시보드를 수정하려면 dashboards_update를 사용하세요. ID(dash_...)는 dashboards_list에서 가져옵니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/dashboards.json 사용자 지정 대시보드 목록 보기 dashboards_list

워크스페이스의 사용자 지정 대시보드를 이름순으로 나열합니다. 각 항목에는 id(dash_...), name, cards, 타임스탬프가 있으며 dashboards_get과 같은 형태입니다. 일부 사이트로 제한된 토큰은 해당 사이트의 카드가 포함된 대시보드만 볼 수 있고, 다른 사이트의 카드는 {type, status: no_access}로 가려집니다. page와 per_page(최대 100)로 페이지를 나눕니다. 카드의 데이터를 불러오려면 dashboards_card를, 대시보드를 추가하려면 dashboards_create를 사용하세요. 사이트 하나라면 stats_overview가 대시보드 없이 같은 종류의 수치를 제공합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/dashboards/:id.json 사용자 지정 대시보드와 카드 조회 dashboards_get

사용자 지정 대시보드 하나를 반환합니다. id(dash_...), name, cards, created_at, updated_at입니다. 각 카드는 {type, site_id, title, params}입니다(type은 metric, chart, breakdown, goal, live, funnel, uptime, vitals 또는 subscriptions). 접근할 수 없는 사이트의 카드는 다른 필드 없이 {type, status: no_access}로 반환됩니다. 레이아웃만 반환하며 수치는 포함하지 않습니다. 카드의 수치는 0부터 센 카드 위치를 사용해 dashboards_card로 불러오세요. ID는 dashboards_list에서 가져옵니다. 요금제의 개수(Free 1개, Pro 3개)를 초과한 대시보드는 유지되지만 잠기며, 워크스페이스가 업그레이드하거나 다른 대시보드를 삭제하기 전까지 402 plan_limit으로 응답합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/dashboards/:id.json 사용자 지정 대시보드 이름 변경 또는 카드 교체 dashboards_update

사용자 지정 대시보드의 이름을 바꾸거나 카드 목록 전체를 교체하거나 둘 다 합니다. 보낸 필드만 변경되며 name이 비어 있으면 그대로 둡니다. cards를 보내면 모든 카드가 교체되므로, dashboards_get에서 가져와 편집한 전체 목록을 원하는 순서로 보내세요. 카드 형식과 type별 params는 dashboards_create와 같습니다(최대 40개 카드). {type, status: no_access}로 표시된 카드는 열 수 없는 사이트에 속합니다. 유지하려면 그대로 다시 보내세요. 이런 카드는 편집할 수 없고 해당 사이트의 마지막 카드는 제거할 수 없습니다. 일부 사이트로 제한된 토큰은 대시보드를 비워 둘 수 없습니다. 업데이트된 대시보드를 반환합니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

도움말 및 피드백

POST /help.json Privatus Analytics 팀에 질문이나 피드백 보내기 support_message_send

메시지는 계정, 워크스페이스, 요금제 정보와 함께 팀에 이메일로 전달됩니다. 답변과 접수 확인은 계정 이메일로 갑니다. 하루 최대 10개까지 보낼 수 있습니다.

권한: member

예시
curl -X POST https://privatusanalytics.com/help.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

메모

POST /sites/:site_id/notes.json 사이트에 메모 추가 (릴리스 웹훅에는 source "deploy" 사용) notes_create

사이트 하나의 차트에 주석을 추가합니다. 예를 들어 런칭, 캠페인, 릴리스입니다. 모든 사이트에 표시되는 메모는 대신 workspace_notes_create를 사용하세요. date의 기본값은 사이트 시간대 기준 오늘이며, end_date는 범위를 나타냅니다(YYYY-MM-DD). title은 차트에 표시되고, body는 일반 텍스트이며, url은 PR이나 변경 로그를 가리킬 수 있습니다. color는 neutral, brand, blue, amber, red 또는 violet 중 하나이며 기본값은 neutral입니다. source의 기본값은 manual입니다. 배포 연동은 source deploy를 보내며, 이때 title의 기본값은 version(릴리스 버전 또는 커밋)으로 만든 텍스트이고 color의 기본값은 blue입니다. content.write가 필요합니다. 생성된 메모를 반환합니다(필드는 notes_list 참고).

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/notes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/notes/:id.json 메모 삭제 notes_delete

사이트 메모를 영구 삭제합니다. 차트에서 사라지며 복원할 수 없습니다. 메모는 이 사이트에 속해야 하며, 워크스페이스 전체 메모는 workspace_notes_delete로 삭제합니다. ID(note_...)는 notes_list에서 가져옵니다. content.write가 필요합니다. 삭제된 메모를 반환합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/notes/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/notes.json 사이트의 메모 목록 보기 (워크스페이스 전체 메모 포함) notes_list

사이트 차트에 표시되는 주석(메모)을 날짜가 최근인 순으로, 페이지를 나누어 나열합니다. 사이트 자체의 메모와 모든 사이트에 적용되는 워크스페이스 전체 메모를 반환합니다. from과 to(YYYY-MM-DD, 메모의 날짜가 범위 안에 있으면 일치), source(manual, deploy, system, import 또는 incident), query(title, body, url의 대소문자 구분 없는 검색)로 필터링합니다. 모든 사이트에 걸친 워크스페이스 보기는 workspace_notes_list를 사용하세요. 각 메모에는 id(note_...), site_id(공개 사이트 ID pa_..., 워크스페이스 전체 메모는 null), date, end_date(하루짜리는 null), title, body(null 가능한 일반 텍스트), url(null 가능), color(neutral, brand, blue, amber, red 또는 violet), source, created_at이 있습니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/notes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/notes/:id.json 메모 조회 notes_get

사이트에 대해 ID(note_..., notes_list에서 가져옴)로 메모 하나를 반환하며, 사이트에 적용되는 워크스페이스 전체 메모도 포함합니다. 메모는 차트에 표시되는 날짜가 있는 주석이며, 예를 들어 런칭, 캠페인, 배포입니다. 필드는 id, site_id(워크스페이스 전체이면 null), date와 end_date(YYYY-MM-DD, 하루짜리는 end_date가 null), title, body(null 가능), url(null 가능), color(neutral, brand, blue, amber, red 또는 violet), source(manual, deploy, system, import 또는 incident), created_at입니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/notes/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/notes/:id.json 메모 편집 notes_update

사이트 메모를 편집하며, 보낸 필드(date, end_date, title, body, url, color)만 변경합니다. source는 변경할 수 없습니다. 빈 url을 보내면 링크가 제거되고, null인 date는 무시됩니다. 메모는 이 사이트에 속해야 하며, 워크스페이스 전체 메모는 workspace_notes_update로 편집합니다. ID(note_...)는 notes_list에서 가져옵니다. content.write가 필요합니다. 업데이트된 메모를 반환합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/notes/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/notes.json 워크스페이스 전체 메모 추가 (모든 사이트에 표시) workspace_notes_create

워크스페이스의 모든 사이트 차트에 나타나는 워크스페이스 전체 주석을 추가합니다. 예를 들어 회사 전체 런칭이나 장애입니다. 사이트 없이 만들어집니다(site_id는 null). 사이트 하나의 메모는 notes_create를 사용하세요. date의 기본값은 워크스페이스 시간대 기준 오늘이며, end_date는 범위를 나타내고(YYYY-MM-DD), color는 neutral, brand, blue, amber, red 또는 violet 중 하나입니다. content.write가 필요하며, 일부 사이트로 제한된 호출자는 워크스페이스 전체 메모를 만들 수 없습니다. 생성된 메모를 반환합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/notes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /workspaces/:workspace_id/notes/:id.json 워크스페이스 메모 삭제 workspace_notes_delete

워크스페이스 전체 메모를 영구 삭제해서 모든 사이트의 차트에서 사라지게 하며, 복원할 수 없습니다. 사이트가 없는 메모만 여기서 삭제할 수 있으며, 사이트 메모는 notes_delete를 사용하세요. ID(note_...)는 workspace_notes_list에서 가져옵니다. content.write가 필요하며, 일부 사이트로 제한된 호출자는 워크스페이스 전체 메모를 삭제할 수 없습니다. 삭제된 메모를 반환합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/notes/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/notes.json 워크스페이스 전체의 메모 목록 보기 workspace_notes_list

워크스페이스 전체의 주석을 날짜가 최근인 순으로, 페이지를 나누어 나열합니다. 워크스페이스 전체 메모(모든 사이트에 표시됨)와 호출자가 접근할 수 있는 모든 사이트의 메모를 반환하므로, 각 항목의 site_id를 확인하세요(null이면 워크스페이스 전체). 사이트 하나는 notes_list를 사용하세요. from과 to(YYYY-MM-DD), source(manual, deploy, system, import 또는 incident), query(title, body, url 검색)로 필터링합니다. 필드는 id(note_...), site_id, date, end_date, title, body, url, color(neutral, brand, blue, amber, red 또는 violet), source, created_at입니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/notes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/notes/:id.json 워크스페이스 메모 편집 workspace_notes_update

워크스페이스 전체 메모를 편집하며, 보낸 필드(date, end_date, title, body, url, color)만 변경합니다. 사이트가 없는 메모만 여기서 편집할 수 있으며, 사이트 메모는 notes_update를 사용하세요. ID(note_...)는 workspace_notes_list에서 가져옵니다. content.write가 필요하며, 일부 사이트로 제한된 호출자는 워크스페이스 전체 메모를 편집할 수 없습니다. 업데이트된 메모를 반환합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/notes/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

멤버

POST /workspaces/:workspace_id/invitations.json 이메일로 사용자 초대 invitations_create

이메일로 한 명 이상을 워크스페이스에 초대하고, 각각에게 14일간 유효한 링크가 담긴 초대 이메일을 보냅니다. emails는 최대 50개 주소의 목록입니다(앱 양식에서는 쉼표, 공백 또는 세미콜론으로 구분된 문자열도 가능). 이미 멤버인 주소는 건너뛰지만, 모두 멤버이면 오류입니다. 이미 대기 중인 초대가 있는 주소를 초대하면 그 초대가 교체되고 새 이메일이 발송됩니다. role은 members_list에 있는 역할 중 하나입니다(기본값 viewer, owner는 초대할 수 없음). role custom은 custom_role_id(roles_list의 id, Business 요금제)와 함께 사용하세요. 기본적으로 접근 권한은 앞으로 생길 사이트를 포함한 모든 사이트에 해당합니다. 접근을 제한하려면 all_sites를 false로 설정하고 site_ids를 공개 사이트 ID(pa_...)로 나열하세요. 대기 중인 초대는 요금제의 멤버 한도에 포함되며(Free는 멤버 3명 허용), 한도를 초과하게 되면 호출이 실패합니다. 초대 이메일은 요청 횟수가 제한됩니다. 본인보다 권한이나 사이트가 더 많은 역할은 부여할 수 없습니다. members.manage가 필요합니다. 생성된 초대를 반환합니다(필드는 invitations_list 참고).

권한: members.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/invitations.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /workspaces/:workspace_id/invitations/:id.json 대기 중인 초대 취소 invitations_delete

대기 중인 초대를 폐기해서 링크가 더 이상 작동하지 않게 하고, 그 초대가 차지하던 자리를 비웁니다. 삭제는 되돌릴 수 없으며, 그 사람은 invitations_create로 다시 초대하세요. ID(uuid)는 invitations_list에서 가져옵니다. 일부 사이트로 제한된 호출자는 본인의 사이트를 넘지 않는 초대만 폐기할 수 있습니다. members.manage가 필요합니다. 폐기된 초대를 반환합니다.

권한: members.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/invitations/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/invitations.json 대기 중인 초대 목록 보기 invitations_list

워크스페이스에서 대기 중인 팀 초대를 최신순으로, 페이지를 나누어 나열합니다. 수락되었거나 폐기된 초대는 나열되지 않으며(합류한 사람은 members_list 사용), 만료된 초대는 교체되거나 폐기될 때까지 남아 있습니다. members.manage가 필요합니다. 일부 사이트로 제한된 호출자는 본인의 범위 내 초대만 볼 수 있습니다. 각 항목에는 id(uuid, invitations_delete에서 사용), email, role, custom_role(role이 custom일 때 사용자 지정 역할의 이름, 그 외에는 null), all_sites, site_ids(공개 사이트 ID pa_..., all_sites가 true이면 비어 있음), invited_by(초대한 사람의 이메일), expires_at, created_at이 있습니다.

권한: members.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/invitations.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE /workspaces/:workspace_id/members/:id.json 멤버 제거 (또는 워크스페이스 나가기) members_delete

워크스페이스에서 멤버를 제거하거나, ID가 본인의 멤버십이면 호출자가 워크스페이스를 떠나게 합니다. 즉시 적용되며 되돌릴 수 없습니다. 그 사람은 접근 권한을 잃고, 이 워크스페이스에 대한 API 토큰이 폐기되며, SCIM 연결이 제거됩니다. 그 사람의 메모와 과거 감사 항목은 남습니다. 소유자는 제거되거나 떠날 수 없으며, 먼저 ownership_transfers_create로 소유권을 이전하세요. 다른 사람을 제거하려면 members.manage가 필요하고, 본인보다 권한이나 사이트가 더 많은 사람은 제거할 수 없습니다. 떠나는 데는 권한이 필요 없지만 권한이나 사이트가 제한된 토큰으로는 떠날 수 없습니다. 그 사람은 나중에 invitations_create로 다시 초대할 수 있습니다. ID(멤버십 uuid)는 members_list에서 가져옵니다. 제거된 멤버를 반환합니다.

권한: member · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/members/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/members.json 워크스페이스 멤버 목록 보기 members_list

워크스페이스의 멤버를 합류한 순서로, 페이지를 나누어 나열합니다. 이름이나 이메일로 검색하려면 query(부분 일치, 대소문자 구분 없음)를, 역할로 필터링하려면 role을 사용하세요. 대기 중인 초대는 포함되지 않습니다(invitations_list 사용). 각 멤버에는 id(멤버십 uuid, members_update, members_delete, ownership_transfers_create에서 사용), email, name(null 가능), role, custom_role(이름, role이 custom이 아니면 null), custom_role_id, all_sites, include_future_sites, site_ids(공개 사이트 ID pa_..., all_sites가 true이면 비어 있음), two_factor(멤버에게 인증 앱 또는 패스키가 있는지 여부), last_active_at(null 가능), created_at이 있습니다. 일부 사이트로 제한된 호출자는 본인의 범위 내 멤버만 볼 수 있습니다.

권한: member

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/members.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/members/:id.json 멤버의 역할 또는 사이트 접근 권한 변경 members_update

워크스페이스에서 멤버의 역할 또는 사이트 접근 권한, 또는 둘 다 변경합니다. 보낸 입력만 변경됩니다. 역할을 바꾸려면 role을 보내세요(admin, editor, analyst, viewer 또는 billing, Business 요금제에서는 roles_list의 custom_role_id가 있는 custom). 소유자의 역할은 여기서 바꿀 수 없으며 대신 ownership_transfers_create를 사용하고, 본인의 멤버십이나 본인보다 높은 사람은 편집할 수 없습니다. 사이트를 제한하려면 all_sites false를 site_ids(공개 사이트 ID pa_...)와 함께 보내고, 나중에 만들어지는 사이트도 부여하려면 include_future_sites true를 추가하세요. 모든 사이트에 접근하게 하려면 all_sites true를 보내세요. 현재 모든 사이트를 가진 멤버에게 all_sites false 없이 site_ids 목록을 보내면 오류입니다. 본인이 가진 것보다 많은 권한이나 사이트는 부여할 수 없습니다. members.manage가 필요합니다. ID는 members_list에서 가져옵니다. 업데이트된 멤버를 반환합니다.

권한: members.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/members/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/ownership_transfer.json 워크스페이스 소유권을 다른 멤버에게 이전 (소유자 전용, 본인은 관리자가 됨) ownership_transfers_create

워크스페이스의 소유권을 다른 멤버에게 이전하고 호출자를 admin으로 강등합니다. 새 소유자만 다시 이전할 수 있어서 되돌리기 어렵습니다. 현재 소유자만 호출할 수 있으며, 토큰이 특정 사이트나 권한으로 제한되어서는 안 됩니다. membership_id는 members_list의 새 소유자 멤버십 uuid입니다(사용자 ID나 이메일이 아님). 그 사람은 이미 멤버여야 하며, 아니면 먼저 초대하세요. 새 소유자는 모든 사이트에 접근할 수 있는 role owner를 받으며, owner 역할은 members_update로 부여할 수 없습니다. 이미 다른 Free 워크스페이스를 소유한 사람에게는 Free 워크스페이스를 줄 수 없습니다. 결제는 워크스페이스에 남습니다. 이 호출을 하는 토큰에는 members.manage가 필요합니다. 새 소유자의 멤버 레코드를 반환합니다.

권한: member · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/ownership_transfer.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

모바일 앱

GET /workspaces/:workspace_id/app.json 모바일 앱이 워크스페이스를 여는 데 필요한 정보 가져오기 mobile_bootstraps_get

워크스페이스 하나(경로의 workspace_id 사용)에 대해 호출자의 역할과 권한, features(요금제에 포함된 제한 리포트: traffic_quality, bot_detection, external_experiments, campaign_costs, status_pages, traffic_rules, experiment_advanced(실험의 고급 설정), survey_ai_themes(설문 서술형 답변의 주제)를 true 또는 false로, retention_months는 개월 수 또는 제한이 없으면 null), sites_count(호출자가 열 수 있는 사이트 수), min_app_version(API가 아직 지원하는 가장 오래된 모바일 앱 버전)을 반환합니다. 모바일 앱은 워크스페이스를 열 때 한 번 읽으며, 요금제에 없는 리포트를 요청하지 않고 포함되지 않음으로 표시할 수 있어요. analytics.read 권한이 필요합니다.

권한: analytics.read · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/app.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE /account/device.json 모바일 앱으로의 푸시 알림 중지 mobile_devices_delete

호출 중인 모바일 앱 로그인의 푸시 등록을 삭제해, 기기가 더 이상 푸시를 받지 않게 합니다. 로그인은 그대로 유지되며 앱에서 다시 등록할 수 있어요. 로그아웃(리프레시 토큰으로 POST /oauth/revoke)해도 삭제됩니다. 모바일 앱의 토큰으로만 호출할 수 있어요.

권한: member · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/account/device.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /account/device.json 모바일 앱의 푸시 등록 정보 가져오기 mobile_devices_get

호출 중인 모바일 앱 로그인의 기기 정보를 반환합니다. registered(앱이 푸시 토큰을 등록하기 전까지 false), platform, locale, timezone, app_version, kinds(푸시의 모든 종류), muted_kinds, muted_site_ids(사용자가 끈 항목)가 포함돼요. 모바일 앱의 토큰으로만 호출할 수 있습니다.

권한: member · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/account/device.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /account/device.json 모바일 앱을 푸시 알림에 등록하기 mobile_devices_update

호출 중인 모바일 앱 로그인의 기기를 푸시 알림에 등록하거나 받을 알림을 변경합니다. 보낸 입력만 변경돼요. 첫 호출에는 platform과 push_token이 필요합니다. 기기는 멤버가 열 수 있는 모든 사이트에 대해, 모든 요금제에서 uptime(체크가 다운되었거나 복구됨), alert(알림이 발생했거나 해결됨), site_audit(사이트 점검 완료), experiment(실험 결과가 나왔거나 종료됨), usage(월 사용량이 거의 또는 모두 소진됨) 푸시를 받아요. muted_kinds와 muted_site_ids는 종류와 사이트를 끄며, 각각 전체 목록을 대체합니다. 앱의 다른 로그인이 가진 푸시 토큰을 등록하면 이 로그인으로 옮겨져요. 모바일 앱의 토큰으로만 호출할 수 있습니다. 이 토큰이 할 수 있는 두 가지 쓰기 중 하나예요.

권한: member · HTTP 전용 (MCP 도구 아님)

예시
curl -X PATCH https://privatusanalytics.com/account/device.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

목표

POST /sites/:site_id/goals/:id/archive.json 목표 보관 (리포트에서 숨김) goals_archive

목표를 보관합니다. 보관된 목표는 리포트에서 숨겨지고, 요금제의 목표 한도에 포함되지 않으며, 정의는 유지되므로 나중에 goals_unarchive로 복원할 수 있습니다. 삭제되는 데이터는 없습니다. archived가 true이고 archived_at이 설정된 목표를 반환합니다. 이미 보관된 목표를 보관해도 아무 일도 일어나지 않습니다. 완전히 제거하려면 goals_delete를 사용하세요. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/goals/:id/archive.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/goals.json 목표 만들기 goals_create

전환 목표를 만듭니다. 목표는 리포트를 읽을 때 적용되는 정의이므로, 새 목표는 기존의 모든 과거 기록에서 일치하는 이벤트를 즉시 집계합니다. name과 kind는 필수입니다. kind가 어떤 다른 입력이 적용되는지를 결정합니다. page는 pattern(경로, 예를 들어 /thank-you, match_type은 exact, prefix, glob 또는 regex)이 필요하며 hostname을 사용할 수 있습니다. event는 event_name이 필요하며 conditions를 사용할 수 있습니다(속성 테스트로, 예를 들어 {key: plan, operator: is, value: pro}이며 모두 일치해야 하고 연산자는 is, is_not, contains, gt, lt). engagement는 pattern과 함께 scroll_threshold(퍼센트 1에서 100)와 time_threshold_seconds 중 하나 또는 둘 다가 필요합니다(둘 중 하나가 충족되면 달성). outbound는 링크 도메인을 pattern(예를 들어 stripe.com)으로 일치시키고 download는 파일을 pattern(예를 들어 *.pdf)으로 일치시킵니다. value_mode는 none(기본값), fixed(fixed_value를 사용하며, 49.5 같은 사이트 통화의 소수 금액이고 센트 단위의 fixed_value_minor로 저장됨) 또는 revenue(이벤트 자체의 수익)입니다. count_mode는 once_per_visit(기본값) 또는 every입니다. Free 워크스페이스는 사이트당 활성 목표 10개를 허용하고 유료 요금제는 무제한입니다. id(goal_...)가 있는 목표를 반환합니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/goals.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/goals/:id.json 목표 삭제 (데이터는 유지됨) goals_delete

목표 정의를 영구 삭제합니다. 이벤트 데이터는 삭제되지 않지만, 목표는 리포트에서 사라지고 이를 가리키는 퍼널 단계, 여정, 실험은 작동을 멈춥니다. 되돌릴 수 없습니다. 목표를 숨기면서 유지하려면 goals_archive를 사용하세요. 삭제된 목표를 반환합니다. ID(goal_...)는 goals_list에서 가져옵니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/goals/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/goals/:id/duplicate.json 목표 복사 goals_duplicate

목표의 정의를 새 활성 목표로 복사합니다. 복사본의 이름은 name을 보내면 그 값이고, 보내지 않으면 원래 이름 뒤에 (copy)가 붙습니다. 요금제의 목표 한도에 포함됩니다(Free는 사이트당 활성 목표 10개). 새 id가 있는 새 목표를 반환합니다. 목표의 변형을 시작할 때 사용한 다음 goals_update로 변경하세요. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/goals/:id/duplicate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/goals.json 기간의 완료 수, 전환 수, 비율, 가치가 포함된 목표 목록 보기 goals_list

사이트의 목표를 기간의 결과와 함께 나열합니다. 각 목표는 정의(id goal_..., name, kind, match_type, pattern, hostname, event_name, conditions, scroll_threshold, time_threshold_seconds, value_mode, 센트 단위의 fixed_value_minor, count_mode, archived, archived_at)에 stats {completions, conversions, conversion_rate, value, change}가 더해진 것입니다. conversion_rate는 퍼센트(0에서 100), value는 소액 단위(센트), change는 이전 기간 대비 전환의 퍼센트 변화입니다(이전 카운트가 0이면 null). status는 active(기본값), archived 또는 all로 필터링합니다. page와 per_page(최대 100, 기본값 25)로 페이지를 나눕니다. 목표 하나의 전체 리포트는 goals_get을 사용하세요. 공통 period, compare, filters 입력을 받습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/goals.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/goals/:id.json 목표 리포트: 지표, 차트, 세부 분석, 전환까지의 여정 goals_get

한 기간 동안의 목표 하나를 깊이 있게 봅니다. period, goal_id, goal(정의), metrics, interval, series, breakdowns, journey를 반환하며, compare를 쓰면 comparison_period, comparison, change도 반환합니다. metrics에는 completions(일치하는 모든 이벤트), conversions(완료가 한 번 이상 있는 방문), conversion_rate(0에서 100 사이의 퍼센트), value(소액 단위, 센트)가 있습니다. conversion_rate는 방문으로 나누거나, 사이트가 그렇게 설정되어 있으면 방문자로 나눕니다. series는 시간 버킷별 {date, completions, conversions, conversion_rate}의 목록입니다(interval을 설정해서 변경). breakdowns에는 channel, utm_campaign, entry_page, country, device별 전환 상위 10개가 {value, completions, conversions, conversion_rate} 형태로 들어 있습니다. journey는 converting_visits, median_seconds_to_convert, median_pages_before, pages_before(전환 전에 본 상위 10개 페이지와 visits, share)를 보여 줍니다. 모든 목표를 한 번에 보려면 goals_list를, 여러 단계의 흐름은 funnels_get을 사용하세요. 공통 period, compare, filters, segment 입력을 받습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/goals/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/goals/:id/unarchive.json 보관된 목표 복원 goals_unarchive

보관된 목표를 복원해서 다시 리포트에 표시합니다. 다시 요금제의 목표 한도에 포함되므로(Free는 사이트당 활성 목표 10개), 사이트가 이미 가득 찼으면 호출은 요금제 한도 오류로 실패합니다. 보관되지 않은 목표를 복원해도 아무 일도 일어나지 않습니다. archived가 false인 목표를 반환합니다. ID는 status가 archived인 goals_list에서 가져옵니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/goals/:id/unarchive.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
PATCH /sites/:site_id/goals/:id.json 목표 수정 goals_update

목표의 정의를 변경합니다. 보낸 입력만 변경됩니다. 새 정의는 모든 과거 기록에 즉시 적용되므로 과거 전환 수치가 바뀝니다. 입력은 goals_create와 같고 같은 조합이 적용됩니다. 예를 들어 event_name과 conditions는 event 목표에서만, scroll_threshold와 time_threshold_seconds는 engagement 목표에서만 의미가 있습니다. fixed_value는 사이트 통화의 소수 금액입니다(센트로 저장됨). conditions를 보내면 기존 조건이 모두 교체됩니다. 목표를 반환합니다. ID는 goals_list에서 가져옵니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/goals/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

문서

GET /docs/api.json 모든 API 작업과 MCP 도구 목록 보기 docs_api

모든 API 작업의 전체 카탈로그를 반환하며, 이는 곧 모든 MCP 도구이기도 합니다. 어떤 도구나 엔드포인트가 있고 정확히 무엇을 받는지 알아볼 때 사용하세요. 각 항목에는 tool_name, summary, description(null 가능), group, verb(HTTP 메서드), path(플레이스홀더가 있는 템플릿), permission(멤버 또는 토큰에 필요한 권한, 공개 도구는 null 가능), input_schema(입력의 JSON Schema), response_schema(응답의 JSON Schema)가 있습니다. 응답이 큽니다. 이미 알고 있는 도구 하나에 대해서는 문서 페이지(docs_search)를 권장합니다. docs_openapi는 같은 정보를 OpenAPI 문서로 반환합니다. 공개이며 인증이 필요 없습니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/docs/api.json
GET /docs.json 문서 페이지 목록 보기 docs_list

제목, 설명, path(/docs/api/authentication 같은), section이 있고 본문은 없는 모든 문서 페이지를 나열합니다. 무엇이 있는지 둘러볼 때 사용하세요. 주제로 페이지를 찾으려면 docs_search를, 읽으려면 section과 page로 docs_get을 사용하세요. page와 per_page(최대 100)로 페이지를 나눕니다. 공개이며 인증이 필요 없습니다.

권한: public

예시
curl https://privatusanalytics.com/docs.json
GET /openapi.json 전체 API의 OpenAPI 3.1 문서 docs_openapi

전체 공개 API를 설명하는 OpenAPI 3 문서를 원시 JSON으로 반환합니다(data 필드로 감싸지 않음). 코드 생성을 위한 기계 판독 가능한 명세가 필요할 때 사용하세요. 입력 및 응답 스키마가 포함된 작업을 둘러볼 수 있는 목록은 docs_api가 읽기 더 쉽습니다. MCP 도구로 노출된 것과 같은 작업을 설명합니다. 공개이며 인증이 필요 없습니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/openapi.json
GET /docs/:section/:page.json 문서 페이지 읽기 (Markdown 및 HTML) docs_get

section과 page는 페이지 경로 /docs/<section>/<page>에서 가져옵니다. 섹션 개요는 page에 "index"를 사용하세요.

권한: public

예시
curl https://privatusanalytics.com/docs/:section/:page.json

보상

POST /sites/:site_id/testimonials/settings/rewards/:id/copy.json 양식의 보상을 같은 사이트의 다른 양식에 복사합니다 testimonial_rewards_copy

이 양식 보상의 제목, 텍스트, 코드, 켜짐 또는 꺼짐 상태를 form_ids의 각 양식(같은 사이트의 휴지통에 없는 양식 1~100개)에 복사합니다. 대상 양식에 이미 있는 보상은 교체됩니다. ID가 사이트의 양식이 아니면 서버가 422와 unknown_ids 코드로 응답하며, 이때는 아무것도 복사되지 않습니다.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/rewards/:id/copy.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/settings/rewards.json 사이트의 모든 양식의 보상을 나열합니다 testimonial_rewards_list

양식당 한 행입니다. 보상이 설정되지 않은 양식은 enabled가 false입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/rewards.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/settings/rewards/:id.json 양식이 감사 단계에서 보여 주는 보상을 설정합니다 testimonial_rewards_update

ID는 양식의 ID입니다. 코드는 직접 제공하는 텍스트입니다. Privatus Analytics는 코드를 만들거나 확인하거나 만료시키지 않습니다.

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/rewards/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

봇 탐지

GET /sites/:site_id/bot-detection.json 고급 봇 탐지 리포트: 사이트의 허니팟 페이지에 들어온 히트를 페이지별, 봇이 들통난 이유별로 보여 줍니다 bot_detection_report

사이트의 허니팟 페이지에 들어온 히트를 리포트합니다. 허니팟 페이지는 숨겨진 링크로만 닿을 수 있는 페이지이며, 앱의 고급 봇 탐지 페이지가 안내하는 대로 설정합니다. 이 히트는 봇이므로 페이지뷰나 방문이 되지 않으며 stats_overview나 stats_breakdown에도 나타나지 않습니다. 범위는 period(7d, 30d(기본값), 90d 또는 12mo)로 고릅니다. 히트는 12개월간 보관됩니다. 결과에는 period, from(범위의 시작), has_data(첫 히트 전에는 false), totals(hits, 고유 페이지 수, automated(트래커가 자동화된 브라우저를 본 히트), no_interaction(포인터, 키, 터치 입력이 없는 히트)), pages(path, hits, last_hit_at이 있는 최대 50행), reasons(표준 봇 필터 결과별 히트: known_bot, automation, datacenter, empty_user_agent, referrer_spam, 또는 필터가 사람으로 집계했을 히트는 undetected), recent(occurred_at, path, country, browser, device, bot_reason, automation, interacted가 있는 최근 50개 히트)가 있습니다. 히트와 함께 IP 주소나 User-Agent는 보관되지 않으며, 누구도 식별할 수 없는 키 해시만 보관되고 그 해시는 반환되지 않습니다. analytics.read와 Business 또는 Enterprise 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/bot-detection.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

분석

GET /sites/:site_id/clicks.json 클릭 맵: 사이트 전체 또는 한 페이지에서 가장 많이 클릭된 요소와, 각 요소를 클릭한 방문의 비율 clicks_list

클릭 추적 모듈이 기록한 요소별 클릭 수입니다. 요소는 짧은 CSS 선택자(태그, id, 클래스 최대 두 개, 최대 네 단계)이거나, 사이트가 이름을 붙인 경우 [data-privatus-click="name"]입니다. 한 페이지만 보려면 path(저장된 그대로 슬래시로 시작)를 보내세요. 이때 elements는 {selector, clicks, visits, visit_share}이고, page_visits는 그 페이지를 본 방문 수이며, visit_share는 그중 해당 요소를 클릭한 방문의 퍼센트(0에서 100)입니다. path가 없으면 elements는 사이트 전체의 {path, selector, clicks, visits}입니다. visits는 한 번 이상 클릭한 방문 수입니다. period, path, page_visits, elements를 반환하며, 가장 많이 클릭된 순서입니다. 요소의 글자, 좌표, 마우스 움직임은 절대 수집하지 않습니다. 페이지의 나머지 내용은 pages_detail을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/clicks.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/overview.json 사이트 개요: 지표, 차트 시리즈, 상위 패널, 실시간 방문자, 메모 stats_overview

사이트 개요 페이지가 보여 주는 모든 것을 한 번의 호출로 반환합니다. 여러 도구를 호출하는 대신 사이트가 어떻게 되고 있는지 같은 폭넓은 질문에 답할 때 사용하세요. period, metrics(visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue), interval, series(시간 버킷당 항목 하나), panels, notes, live_visitors를 반환합니다. compare를 쓰면 stats_aggregate 및 stats_timeseries와 같이 comparison_period, comparison, change, comparison_series가 추가됩니다. 단위는 이 도구들과 같습니다. bounce_rate는 0에서 100 사이의 퍼센트, visit_duration은 참여 시간의 중앙값(밀리초), revenue는 소액 단위(센트)의 정수입니다. panels는 차원 이름을 키로 하는 객체이며, 각각 점유율이 포함된 상위 10개 행을 담고 있고 행의 형태는 해당 차원의 stats_breakdown과 같습니다. 기본적으로 channel, referrer, page, entry_page, country, device, browser, os, utm_campaign, event, goal을 반환합니다. 다른 차원을 고르려면 panels를 보내세요(prop 키를 제외한 모든 차원 이름 사용 가능). notes는 범위 내 주석을 {id, date, end_date, title, url, color}로 나열합니다. live_visitors는 최근 5분의 방문자 수를 셉니다. 한 차원의 10개를 넘는 행은 stats_breakdown을, 숫자 하나는 stats_aggregate를 사용하세요. 공통 period, compare, filters, segment 입력을 받습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/overview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/experiments/external.json 실험 리포트: 변형별 전환율, 대조군 대비 상승률, 유의성 (두 비율 z-검정) experiments_report

이벤트 데이터로 A/B 테스트를 리포트합니다. 방문은 이벤트 속성에서 발견된 변형(방문에서 처음 본 값, 예를 들어 값이 control과 b인 속성 variant)에 배정되고, 전환은 목표를 완료한 방문입니다. 필수 입력은 property(소문자 키, 최대 64자)와 goal_id(활성 목표, goals_list에서 가져옴)입니다. period, property, goal {id, name}, control, confidence(0.95), variants를 반환합니다. 각 변형에는 visits, conversions, conversion_rate(퍼센트, 0에서 100), control(기준선이면 true), uplift(대조군 대비 전환율 변화 퍼센트, 대조군이거나 대조군 비율이 0이면 null), z, p_value, significant(두 비율 z검정에서 p_value가 0.05 미만이면 true)가 있습니다. 대조군은 control에 전달한 변형이고, 없으면 control이라는 이름의 변형, 그것도 없으면 방문이 가장 많은 변형입니다. 변형은 최대 20개이며 방문이 많은 순입니다. 먼저 사이트가 변형을 이벤트 속성으로 보내고 있는지 확인하세요. 공통 period와 filters 입력을 받습니다. 단순한 목표 전환율은 goals_get을 사용하세요. Business 또는 Enterprise 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/experiments/external.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/insights.json 이전 기간 대비 주목할 만한 변화를 일상 언어로 요약 (가장 크게 변한 항목, 목표 전환 변화) insights_get

직전의 같은 길이 기간과 비교해, 사이트에서 눈에 띄는 변화를 쉬운 말로 알려 줍니다. period, comparison_period, insights를 반환합니다. 기간은 어제까지의 온전한 일 단위이며 period(7d, 14d, 28d 또는 30d, 기본값 7d)로 고릅니다. 각 인사이트에는 dimension(total, channel, page, country 또는 goal), metric, value, previous, current, change, sentence가 있습니다. change는 횟수에는 퍼센트, 목표 전환율에는 퍼센트 포인트이며, sentence는 바로 읽을 수 있는 영어 문장입니다. 전체 방문자와 페이지뷰, 차원별로 변동이 가장 큰 두 항목(방문 또는 조회가 10 이상이면서 20퍼센트 이상 변화), 전환율이 0.5포인트 이상 움직인 목표를 포함합니다. 중요한 순서로 정렬되며 limit(기본값 8, 최대 20)로 제한됩니다. 결과는 하루 동안 보관됩니다. 정확한 수치는 stats_aggregate와 stats_breakdown을 사용하고, 무엇이 바뀌었는지 찾을 때 이 도구를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/insights.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/journeys.json 여정: 페이지(또는 임의의 진입점) 이후, 또는 페이지나 목표 이전의 상위 3단계 경로 journeys_explore

방문 안에서 가장 흔한 세 단계 페이지 경로를 탐색합니다. 정방향 모드(기본값)에서는 path에 지정한 시작 페이지 이후의 경로를 보여 주고, path가 비어 있으면 모든 진입 이후의 경로를 보여 줍니다. 역방향 모드에서는 종료 페이지(path) 또는 목표(goal_id, 지정하면 자동으로 역방향으로 전환됨)로 이어지는 경로를 보여 줍니다. reverse에는 path 또는 goal_id가 필요합니다. path는 슬래시로 시작해야 합니다. period, mode, path, goal, sampled, sample_rate(퍼센트), total_visits, 그리고 단계별 nodes와 links가 있는 경로 그래프를 반환하며, 단계당 페이지 수는 limit(2에서 12, 기본값 6)으로 제한됩니다. 방문이 100,000건을 넘으면 데이터를 샘플링합니다. 페이지 필터는 경로를 끊어 버리므로 무시됩니다. 방문자 ID를 저장하지 않으므로 경로는 방문 단위로 만들어집니다. 공통 period, filters, segment 입력을 받습니다. 한 페이지의 이웃 페이지는 pages_detail을, 단계별 전환은 funnels_get을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/journeys.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/pages/detail.json 페이지 상세: 한 경로의 지표, 이전 및 다음 페이지, 소스, 웹 바이탈, 이벤트, 클릭 맵 pages_detail

페이지 하나를 깊이 있게 봅니다. path를 전달하세요(슬래시로 시작해야 하며, 예를 들어 /pricing). 쿼리 문자열과 호스트 없이 저장된 그대로여야 합니다. period, path, url, metrics, previous_pages, next_pages, sources, vitals, events, clicks, goals, notes를 반환합니다. metrics에는 visitors, visits, pageviews, entrances, exits, entry_rate, exit_rate, bounce_rate(퍼센트, 0에서 100), time_on_page(중앙값 밀리초), scroll_depth(중앙값 퍼센트)가 있으며, 마지막 둘은 참여 데이터가 없으면 null입니다. previous_pages와 next_pages는 같은 방문에서 앞뒤로 본 페이지이며 {value, count, share} 형태이고, (entrance)와 (exit)는 특수한 값입니다. sources에는 이 페이지로 진입한 방문의 상위 채널과 리퍼러가 있습니다. vitals에는 웹 바이탈별 p75 값과 등급이 있습니다. events는 이 페이지에서 발생한 사용자 지정 이벤트, clicks는 가장 많이 클릭된 요소 셀렉터, goals는 이 페이지에서 완료된 목표, notes는 이 페이지를 언급하는 주석입니다. 페이지 순위는 dimension이 page인 stats_breakdown을, 유입 사이트는 referrers_detail을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/pages/detail.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/referrers.json 유입 경로: 이 사이트로 링크하는 사이트와 방문자 수, 참여도, 트래픽 종류, 링크한 페이지 수 referrers_list

방문자를 보내 준 외부 사이트의 순위와 각 사이트가 보낸 내용을 보여 줍니다. 직접 방문(리퍼러 없음)은 제외됩니다. period, summary, channels, page, limit, has_more, rows를 반환합니다. summary에는 visitors, visits, pageviews, bounce_rate(퍼센트), visit_duration(참여 시간 중앙값, 밀리초), revenue(소액 단위, 센트), sites(유입 사이트 수), share(리퍼러에서 온 전체 방문의 퍼센트)가 있습니다. channels는 트래픽 종류를 {value, visitors, visits}로 보여 줍니다. 각 행에는 value(리퍼러 호스트), visitors, visits, pageviews, bounce_rate, visit_duration, revenue, channel(주로 쓰이는 채널), linking_pages(해당 사이트에서 여기로 링크하는 서로 다른 페이지 수), share(유입 방문자의 퍼센트)가 있습니다. sort(visitors, visits, pageviews 또는 revenue, 기본값 visitors)로 정렬하고, search(호스트에 포함된 텍스트)로 좁히고, has_more가 true인 동안 page와 limit(최대 100)로 페이지를 넘기세요. 사이트 하나는 referrers_detail을 사용하세요. 공통 period, compare, filters, segment 입력을 받습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/referrers.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/referrers/detail.json 유입 경로 상세: 한 유입 사이트의 지표와 추세, 링크한 페이지, 방문 페이지, 국가, 기기, 캠페인, 전환 referrers_detail

유입 사이트 하나를 깊이 있게 봅니다. referrer는 www와 경로를 뺀 호스트로 전달하세요(예를 들어 news.ycombinator.com). referrers_list와 같은 값입니다. period, referrer, url, channel(가장 흔한 채널), metrics, share(전체 방문 대비 퍼센트), interval, series(시간에 따른 트래픽), linking_pages, landing_pages, channels, countries, devices, campaigns, goals를 반환하며, compare를 쓰면 comparison, change, comparison_series도 반환합니다. metrics와 series는 stats_aggregate 및 stats_timeseries와 같은 필드와 단위를 사용합니다. linking_pages는 방문자를 보내 준 해당 유입 사이트의 페이지이며 path, url, visitors, share가 있는 행입니다(쿼리 문자열은 저장되지 않음). landing_pages는 그 방문자들이 진입한 곳입니다. channels, countries, devices, campaigns는 지표가 포함된 상위 값이고, goals는 그들이 완료한 목표를 conversions와 conversion_rate와 함께 나열합니다. 유입 사이트 순위는 referrers_list를, 간단한 목록은 dimension이 referrer인 stats_breakdown을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/referrers/detail.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/stats/aggregate.json 기간의 주요 지표 (비교 포함) stats_aggregate

한 기간의 핵심 수치를 객체 하나로 반환합니다. period {from, to}와 metrics {visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue}를 반환합니다. compare를 쓰면 comparison_period, comparison(다른 범위의 같은 지표), change(지표별 퍼센트 변화, 이전 값이 0이면 null)도 반환합니다. 단위: bounce_rate는 0에서 100 사이의 퍼센트입니다(10.9는 10.9%). visit_duration은 방문의 참여 시간 중앙값(밀리초)입니다. revenue는 사이트 통화의 소액 단위(센트) 정수입니다. views_per_visit은 소수입니다. 지속적인 방문자 ID를 저장하지 않으므로 방문자는 하루 단위로 집계되며, 다른 날 다시 온 사람은 다시 집계됩니다. 합계와 기간 대비 변화에 사용하세요. 시간에 따른 차트는 stats_timeseries, 차원의 상위 값은 stats_breakdown, 전부 한 번에 보려면 stats_overview를 사용하세요. 모두 filters로 범위를 좁힐 수 있습니다(차원 이름과 연산자는 filters 참고).

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/stats/aggregate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/breakdown/:dimension.json 차원의 상위 값 (페이지, 소스, 국가 등) stats_breakdown

한 차원의 상위 값을 지표와 함께 중요한 순으로, 페이지를 나누어 반환합니다. 차원은 경로의 마지막 부분이며 설명에 나온 정확한 이름이어야 합니다(예를 들어 country, page, channel, utm_campaign, prop:plan). period, dimension, label, page, limit, has_more, rows를 반환합니다. has_more가 true인 동안 다음 페이지를 요청하세요. 모든 행에는 value와 share(기간 전체 대비 퍼센트)가 있습니다. 행의 나머지 필드는 차원에 따라 달라집니다. 방문 차원(channel, referrer, referrer_url, utm_*, ref, hostname, country, language, device, browser, browser_version, os, os_version, screen, entry_page, exit_page, interaction, bot_score)은 visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue를 제공합니다. page는 pageviews, visits, time_on_page(밀리초), scroll_depth(퍼센트)를 제공하며 visitors는 없습니다. event와 prop:<key>는 completions, visits, revenue, conversion_rate를 제공합니다. goal은 goal_id, completions, conversions, conversion_rate, revenue를 제공합니다. 단위: bounce_rate와 conversion_rate는 퍼센트(0에서 100), 시간은 밀리초, revenue는 소액 단위(센트)입니다. 잘못된 차원은 유효한 이름을 나열한 422를 반환합니다. 모든 행에서 값을 찾으려면 search를, 먼저 데이터를 좁히려면 filters를 사용하세요(예를 들어 한 국가가 방문한 페이지). 페이지 하나나 리퍼러 하나를 깊이 보려면 pages_detail 또는 referrers_detail을 사용하세요. interaction과 bot_score 차원은 Business 또는 Enterprise 요금제가 필요합니다. 세부 분석으로 요청하면 다른 요금제에서는 402 plan_limit으로 응답하고, 이들에 대한 필터는 무시됩니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/breakdown/:dimension.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/stats/timeseries.json 차트용 시간 구간별 지표 stats_timeseries

차트와 추세를 위한 시간 버킷별 지표입니다. period, interval(실제로 사용된 버킷), series를 반환합니다. series는 {date, visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue}의 목록이며 버킷마다 항목 하나이고 date는 버킷 시작의 ISO 8601 값입니다. compare를 쓰면 다른 범위의 comparison_series도 버킷별로 반환합니다. 단위는 stats_aggregate와 같습니다. bounce_rate는 퍼센트(0에서 100), visit_duration은 참여 시간 중앙값(밀리초), revenue는 소액 단위(센트)입니다. interval의 기본값은 auto이며, 범위에 맞게 minute, hour, day, week 또는 month를 고릅니다. 버킷 크기를 강제하려면 직접 설정하세요. 합계 하나는 stats_aggregate를, country나 page 같은 차원으로 나누려면 stats_breakdown을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/stats/timeseries.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

비공개 의견

GET /sites/:site_id/testimonials/forms/:form_id/feedback.json 양식의 비공개 의견을 최신순으로 나열합니다 testimonial_feedback_list

비공개 의견은 낮은 별점 라우팅이 켜진 양식(Business 이상)에서 별점 1~3점을 준 답변입니다. 추천사가 아니고, 공개되지 않으며, 집계되지 않습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:form_id/feedback.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/forms/:form_id/feedback/:id/mark_read.json 비공개 의견 답변을 읽음으로 표시하거나 다시 읽지 않음으로 표시합니다 testimonial_feedback_mark_read

비공개 의견 답변 하나의 read_at을 설정하거나, read false로 지웁니다. 이미 읽은 답변을 읽음으로 표시해도 처음 읽은 시각이 유지됩니다. 작성한 사람에게는 아무것도 전송되지 않습니다.

권한: analytics.read

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms/:form_id/feedback/:id/mark_read.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/forms/:form_id/feedback/:id.json 비공개 의견 답변 하나를 가져옵니다 testimonial_feedback_get

별점, 텍스트, 작성자가 남긴 이름, 읽은 시각을 반환합니다. 비공개 의견은 낮은 별점 라우팅이 켜진 양식에서 낮은 별점을 준 답변입니다. 추천사가 아니며 공개되지 않습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:form_id/feedback/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

사이트

POST /sites/:site_id/data_reset.json 날짜 범위의 모든 이벤트와 방문 삭제 (백그라운드에서 실행되며 되돌릴 수 없음) sites_reset_data

날짜 범위에 대한 사이트의 페이지뷰, 사용자 지정 이벤트, 방문을 되돌릴 수 없게 삭제하며, 취소할 수 없습니다. 테스트 트래픽을 지우거나 잘못된 기간을 제거할 때 사용하세요. 사이트, 목표, 설정은 삭제하지 않습니다(사이트는 sites_delete 사용). from과 to는 YYYY-MM-DD 날짜이며 둘 다 포함하고 사이트 시간대 기준으로 읽으며, to는 from보다 앞서면 안 됩니다. confirm은 sites_get에 표시된 사이트의 도메인과 정확히 같아야 합니다(대소문자는 무관). 요청은 수락되어 status queued, site_id, from, to와 함께 바로 반환됩니다. 삭제는 백그라운드에서 배치로 실행되므로 stats 도구의 수치가 안정되기까지 시간이 조금 걸릴 수 있으며, 폴링할 상태 엔드포인트는 없으므로 범위가 빌 때까지 stats 도구를 확인하세요. 이 작업은 감사 로그에 기록됩니다. sites.manage 권한이 필요합니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/data_reset.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/filter_stats.json 필터링된 트래픽 요약: 사유 및 국가별 봇, 트래픽 규칙, 개인정보 삭제 (집계 수만) sites_filter_stats

최근 며칠 동안 저장 전에 버려지거나 정리된 히트의 수입니다. 사이트에 봇 트래픽, 규칙으로 차단된 트래픽, 가림 처리가 얼마나 있는지 볼 때 사용하세요. kind는 bot(봇으로 버려진 히트), rule(트래픽 규칙으로 버려진 히트), redaction(개인정보 스크러버가 가린 값) 중에서 고릅니다. kind, days, total, by_reason, by_country, by_day를 반환합니다. by_reason과 by_country는 {value, count}의 목록(최대 50개, 큰 순, 알 수 없으면 value는 null)이고 by_day는 {date, count}의 목록입니다. days는 1에서 395 사이로 조정되며 기본값은 30입니다. 집계 수치일 뿐입니다. IP 주소, User-Agent, 가려진 값은 저장되지 않으므로 어떤 것도 사람에게 추적될 수 없습니다. 이 히트는 결제용 이벤트로 집계되지 않습니다. 규칙을 보거나 변경하려면 traffic_rules_list를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/filter_stats.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/access.json 멤버와 이 사이트를 볼 수 있는지 여부 목록 보기 sites_access_list

어떤 워크스페이스 멤버가 사이트 하나를 볼 수 있는지 보여 줍니다. 워크스페이스의 모든 멤버가 합류한 순서로 나열되며 페이지를 나누지 않습니다. 필드는 membership_id(sites_access_update에서 사용하는 uuid), email, name, role, access(멤버가 이 사이트를 볼 수 있으면 true), locked(항상 접근 권한이 있고 변경할 수 없는 owner와 admin이면 true)입니다. 다른 멤버는 모든 사이트에 접근할 수 있거나 이 사이트에 대한 명시적 권한이 있을 때 접근할 수 있습니다. 멤버의 전체 사이트 목록은 members_list를 사용하세요. members.manage가 필요합니다.

권한: members.manage

예시
curl https://privatusanalytics.com/sites/:site_id/access.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/access.json 멤버 한 명의 이 사이트 접근 권한 부여 또는 제거 sites_access_update

멤버 한 명의 사이트 하나에 대한 접근 권한을 부여하거나 제거합니다. membership_id는 sites_access_list(또는 members_list)에서 가져오며, access가 true면 부여하고 false면 제거합니다. owner와 admin은 항상 접근 권한이 있으며 변경할 수 없습니다. 모든 사이트에 접근하던 멤버의 접근을 제거하면, 워크스페이스의 다른 모든 사이트의 명시적 목록으로 전환되고 include_future_sites가 꺼지므로 나중에 만들어지는 사이트는 받지 못합니다. 이미 모든 사이트에 접근하는 사람에게 부여해도 변경되는 것은 없습니다. 본인에게 없는 권한이나 본인을 넘어서는 사이트를 가진 멤버는 변경할 수 없습니다. members.manage가 필요합니다. 해당 멤버의 행을 sites_access_list와 같은 형태로 반환합니다.

권한: members.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/access.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/favorite.json 사이트에 별표 표시 (모든 사이트에서 맨 위에 고정) sites_favorite

호출한 사용자를 위해 사이트에 별표를 달아서 sites_list와 모든 사이트 페이지에서 맨 앞에 나열되게 합니다. 호출자에게만 영향을 주며 다른 멤버에게는 영향이 없고, 이미 별표가 달린 사이트에 별표를 달아도 변경되는 것은 없습니다. 호출에는 사이트 ID 외의 입력이 필요 없습니다. 별표를 제거하려면 sites_unfavorite를 사용하세요. analytics.read가 필요합니다. favorite이 true인 사이트를 반환합니다(sites_get 참고).

권한: analytics.read

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/favorite.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/favorite.json 사이트 별표 해제 sites_unfavorite

호출한 사용자의 사이트 별표를 제거하므로 sites_list에서 더 이상 맨 앞에 고정되지 않습니다. 호출자에게만 영향을 주며 사이트에 별표가 없었다면 아무 일도 일어나지 않습니다. 다시 별표를 달려면 sites_favorite를 사용하세요. analytics.read가 필요합니다. favorite이 false인 사이트를 반환합니다(sites_get 참고).

권한: analytics.read

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/favorite.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/setup.json 사이트의 설치 상태와 스니펫 sites_setup_get

사이트에 추적을 설치하는 데 필요한 것과 데이터가 도착했는지 반환합니다. 필드는 site_id, snippet(모든 트래커 모듈이 활성화된, 바로 붙여 넣을 수 있는 HTML 스크립트 태그), receiving_data(첫 이벤트가 수신되면 true), first_event_at(ISO 8601, 그때까지는 null)입니다. 설치한 후 이벤트가 들어오는지 보려면 이것을 폴링하세요. 맞춤 스니펫(선택한 모듈, 수동 페이지뷰, SPA 모드, 마스크)이 필요하면 대신 tracking_snippet을, 실제 페이지를 가져와 스크립트가 있는지 확인하려면 tracking_verify를 사용하세요. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/setup.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /transfers/:token/accept.json 내 워크스페이스 중 하나로 사이트 이전 수락 site_transfers_accept

사이트 이전 초대를 수락하고 사이트를 호출자의 워크스페이스 중 하나로 옮깁니다. token 경로 파라미터는 초대 링크에서 가져오고, workspace_id는 호출자가 sites.manage를 가진 대상 워크스페이스(ws_...)입니다. 호출자의 이메일은 초대가 발송된 주소와 일치해야 하며, 대상은 사이트가 있던 워크스페이스일 수 없습니다. 사이트는 id, 설정, 목표, 데이터를 유지하지만 멤버별 접근 권한은 초기화되고 공유 링크는 새 워크스페이스로 이동합니다. 초대가 더 이상 대기 중이 아니거나 만료되었거나, 대상이 요금제의 사이트 한도에 도달했거나, 같은 도메인의 활성 사이트가 이미 있으면 실패합니다. 이동은 다시 이전하는 방법 외에는 되돌릴 수 없습니다. 이 호출을 하는 토큰은 대상 워크스페이스에 속해야 하며 sites.manage가 있어야 합니다. status가 accepted인 이전을 반환합니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/transfers/:token/accept.json \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/transfer.json 사이트를 다른 워크스페이스로 이전 시작 (수신자에게 이메일 발송) sites_transfer_start

받는 사람에게 7일간 유효한 초대 링크를 이메일로 보내서 사이트를 다른 워크스페이스로 옮기는 과정을 시작합니다. 받는 사람이 그 이메일로 로그인해서 수락(site_transfers_accept)하기 전에는 아무것도 이동하지 않으므로, 그때까지 사이트는 여기에 남아 있습니다. 같은 사이트에 대해 새 이전을 시작하면 이전의 대기 중인 이전이 취소됩니다. email은 유효한 주소여야 하며 대상 워크스페이스는 받는 사람이 고릅니다. 이전 이메일은 요청 횟수가 제한됩니다. 철회하려면 sites_transfer_cancel을 사용하세요. sites.manage가 필요합니다. site_id, site_domain, from_workspace, to_email, status pending, expires_at이 있는 이전을 반환합니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/transfer.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/transfer.json 대기 중인 사이트 이전 취소 sites_transfer_cancel

사이트의 대기 중인 이전 초대를 취소해서 링크가 더 이상 작동하지 않게 합니다. 대기 중인 이전이 없으면 검증 오류로 실패합니다. 이미 수락된 이전은 취소할 수 없습니다. sites.manage가 필요합니다. status가 canceled인 이전을 반환합니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/transfer.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /transfers/:token.json 이메일로 받은 토큰으로 대기 중인 이전 조회 site_transfers_get

링크의 token(token 경로 파라미터이며 sites_transfer_start가 보낸 초대 이메일에 있음)으로 사이트 이전 초대를 보여 줍니다. 호출자는 로그인했거나 API 토큰을 사용해야 합니다. site_id, site_domain, from_workspace(보내는 워크스페이스의 이름), to_workspace_id(수락 전에는 null), to_email(초대된 주소), status(pending, accepted 또는 canceled), expires_at을 반환합니다. 초대는 발송 7일 후에 만료됩니다. 수락하려면 site_transfers_accept를 사용하세요.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/transfers/:token.json
POST /workspaces/:workspace_id/sites.json 사이트 추가 sites_create

워크스페이스에 웹사이트를 추가하고, 설치할 추적 스니펫을 포함해 반환합니다. 워크스페이스의 요금제가 사이트 수를 제한하며(Free는 3개 허용), 한도에 도달하면 호출은 요금제 한도 오류로 실패합니다. domain은 필수이며 정규화됩니다(예를 들어 전체 URL이나 www 접두사는 호스트 이름으로 줄어듦). name의 기본값은 도메인, timezone의 기본값은 워크스페이스의 시간대(Europe/Berlin 같은 IANA 이름), currency의 기본값은 워크스페이스 통화(USD 같은 3자리 ISO 4217 코드)입니다. 부수 효과로 워크스페이스의 알림 채널로 site.created 알림이 가고, 첫 SEO 사이트 감사와 도메인 레이팅 확인이 대기열에 들어가며, 사이트를 만든 멤버에게 추적 코드가 담긴 이메일이 발송됩니다(데이터가 도착하지 않는 동안 리마인더 포함). 선택한 사이트로 제한되어 있으면서 앞으로 생길 사이트에 동의한 멤버는 이 사이트에 접근할 수 있게 됩니다. sites.manage가 필요합니다. 설치는 tracking_snippet 또는 sites_setup_get으로, 확인은 tracking_verify로 이어서 하세요.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sites.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:id.json 사이트 삭제 (7일 후 완전 삭제) sites_delete

사이트를 삭제합니다. 소프트 삭제이며, 사이트는 수집을 멈추고 목록에서 즉시 사라지며, 데이터는 7일 후에 영구적으로 삭제되므로 되돌릴 수 없는 것으로 간주하고 실수였다면 빨리 지원팀에 문의하세요. confirm은 사이트의 도메인이어야 합니다(대소문자는 무관). 사이트의 대기 중인 이전은 취소되고 site.deleted 알림이 워크스페이스의 알림 채널로 전송됩니다. 일부 트래픽만 지우고 사이트를 유지하려면 sites_reset_data를 사용하세요. sites.manage가 필요합니다. 사이트를 반환합니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/sites.json 워크스페이스의 사이트 목록 보기 sites_list

호출자가 접근할 수 있는 워크스페이스의 사이트를 페이지를 나누어 나열하며, 호출자가 별표를 단 사이트가 먼저 옵니다. 도메인이나 이름을 검색하려면 query(부분 일치, 대소문자 구분 없음), 라벨 하나가 있는 사이트만 남기려면 label, 정렬은 sort(position은 저장된 순서이며 기본값, name 또는 visitors는 최근 30일의 방문자가 많은 순)를 사용하세요. 응답의 meta에는 페이지당 페이지 정보에 더해 stats(사이트 ID를 키로 하는 객체이며 visitors(최근 고유 방문자), change(이전 기간 대비 퍼센트 변화), sparkline(일별 값의 목록), live(현재 방문자)가 있음)와 페이지 전체의 totals가 있습니다. 각 항목은 sites_get과 같은 필드를 가집니다. 다른 모든 사이트 도구에서 사용하는 사이트 ID(pa_...)를 찾는 출발점입니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/sites.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:id.json 사이트와 모든 설정 조회 sites_get

공개 ID(pa_..., sites_list에서 가져옴)로 사이트 하나의 설정과 상태를 반환합니다. 주요 필드는 id, workspace_id(ws_...), domain, name, extra_domains와 multi_domain_mode(combined 또는 separate), timezone(IANA 이름), currency(ISO 4217), labels, 개인정보 옵션(honor_dnt, honor_gpc, pii_scrubber, redaction_rules, allowed_params, path_masks), retention_months(null이면 모든 데이터 보관), bot_filtering, traffic_rule_modes(규칙 목록을 block 또는 allow에 매핑한 객체), vitals_sample_rate(퍼센트), conversion_denominator(visits 또는 visitors), public_dashboard와 public_indexable, ingest_key_prefix(사이트에 크롤러 로그 키가 없으면 null), verified_at, first_event_at과 last_event_at(데이터가 도착하기 전에는 null), domain_rating(null 가능), snippet(HTML 추적 태그), favorite(호출자가 별표를 달았는지 여부), created_at입니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:id.json 사이트 설정 수정 sites_update

사이트의 설정을 업데이트하며, 보낸 필드만 변경합니다. 이름과 식별 필드는 name, domain(바꾸면 도메인 레이팅을 다시 확인), extra_domains(호스트 이름의 목록), multi_domain_mode(combined는 도메인에 걸쳐 방문자 한 명으로 집계하고 separate는 따로 유지)입니다. timezone은 IANA 이름이고 currency는 3자리 ISO 4217 코드입니다. 개인정보 필드는 honor_dnt, honor_gpc, pii_scrubber, redaction_rules(name과 pattern이 있는 객체의 목록이며 pattern은 정규식), allowed_params(유지할 쿼리 파라미터), path_masks(pattern과 replacement가 있는 객체의 목록), bot_filtering입니다. 목록은 기존 목록 전체를 교체합니다. retention_months는 요금제의 보관 기간(Free는 6개월)을 넘을 수 없습니다. traffic_rule_modes는 규칙 목록(hostnames, paths, referrers, countries, ip_ranges, user_agents 또는 events)을 block 또는 allow에 매핑합니다. vitals_sample_rate는 퍼센트이며 요금제가 상한을 정합니다(Free는 10, 유료 요금제는 100). conversion_denominator는 visits 또는 visitors입니다. public_dashboard는 링크가 있는 누구나 통계를 볼 수 있게 하고 public_indexable은 검색 엔진이 그 페이지를 색인하게 합니다. 변경은 새 이벤트에 몇 분 안에 적용됩니다. sites.manage가 필요합니다. 업데이트된 사이트를 반환합니다.

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

사이트 감사

GET /sites/:site_id/audit/issues.json 사이트 감사의 문제 목록 (검사 항목당 한 행) site_audit_issues_list

감사 하나의 이슈를 무언가를 표시한 검사마다 한 행씩, 심각한 순서로 나열합니다(오류, 경고, 알림 순이며 각각 영향받는 URL 수 순). 각 행에는 check_key(site_audit_issues_get과 음소거 도구에서 사용), title, category, severity(error, warning 또는 notice), affected(표시된 URL, 음소거된 것은 제외), added와 fixed(이전 감사 이후의 변화), pageviews(감사 전 30일 동안 영향받은 페이지에 대한 방문)가 있습니다. 기본값은 가장 최근에 끝난 감사이며, 아니면 audit_id를 전달하세요. severity, category, new_only(이전 감사 이후 새로 생긴 URL이 있는 검사만)로 필터링합니다. page와 per_page(최대 100, 기본값 50)로 페이지를 나눕니다. 검사가 표시한 URL을 보려면 site_audit_issues_get을 사용하세요. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/audit/issues.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/audit/issues/:check_key.json 사이트 감사 검사 항목 하나 가져오기: 중요한 이유, 해결 방법, 영향받는 URL site_audit_issues_get

site_audit_issues_list의 check_key(예를 들어 title_missing)로 감사의 검사 하나를 상세히 봅니다. audit_id, issue(목록과 같은 행), why(문제의 의미), fix(해결 방법), muted(검사 전체가 사이트에 대해 음소거되어 있으면 true), urls를 반환하며, urls는 표시된 URL로 page_id(site_audit_pages_get에서 사용), url, pageviews, detail(발견에 대한 추가 사실, 비어 있을 수 있음), is_new, muted가 있습니다. sort는 pageviews(기본값, 많은 순) 또는 url입니다. page와 per_page(최대 100, 기본값 25)로 페이지를 나눕니다. 기본값은 가장 최근에 끝난 감사이며, 아니면 audit_id를 전달하세요. 음소거된 URL은 마지막에 정렬됩니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/audit/issues/:check_key.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/audit/mutes/bulk.json 여러 URL 또는 여러 검사 항목 전체에 대해 사이트 감사 검사 항목을 한 번에 숨깁니다 site_audit_mutes_bulk

여러 발견을 한 요청으로 전부 아니면 전무로 음소거합니다. 두 가지 형태 중 하나를 사용하세요. check_key와 urls(최대 100개 URL)를 보내 여러 페이지에서 검사 하나를 음소거하거나, check_keys(최대 100개)를 보내 사이트에 대해 검사 전체를 음소거합니다. urls와 check_keys를 섞지 마세요. 알 수 없는 검사나 잘못된 URL이 있으면 전체 요청이 실패하고 아무것도 음소거되지 않습니다. 이미 음소거된 항목은 그대로 반환됩니다. 가장 최근 감사의 카운트와 점수는 마지막에 한 번 갱신됩니다. 음소거의 목록을 반환합니다. 각각은 site_audit_mutes_delete로 되돌리세요. content.write가 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/audit/mutes/bulk.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/audit/mutes.json 사이트 전체 또는 URL 하나에 대해 사이트 감사 검사 항목 숨기기 site_audit_mutes_create

사이트에 대해, 또는 URL 하나에 대해서만 검사 하나를 음소거합니다. check_key는 site_audit_issues_list에서 가져옵니다. 모든 곳에서 검사를 음소거하려면 url을 생략하고, 해당 페이지에서만 음소거하려면 전체 URL(예를 들어 https://example.com/old)을 전달하세요. URL은 크롤러가 하는 방식으로 정규화됩니다. 가장 최근 감사의 카운트와 점수가 즉시 업데이트됩니다. 같은 것을 두 번 음소거하면 오류 대신 기존 음소거를 반환합니다. 여러 개를 한 번에 음소거하려면 site_audit_mutes_bulk를, 되돌리려면 site_audit_mutes_delete를 사용하세요. content.write가 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/audit/mutes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/audit/mutes/:id.json 사이트 감사 검사 항목 숨김 해제 site_audit_mutes_delete

site_audit_mutes_list의 ID로 찾은 음소거를 제거해서, 해당 검사나 URL이 다시 감사 점수에 집계되게 합니다. 가장 최근 감사가 즉시 다시 집계됩니다. 음소거만 제거하며 감사 데이터는 삭제하지 않습니다. 제거된 음소거를 반환합니다. content.write가 필요합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/audit/mutes/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/audit/mutes.json 사이트에서 숨긴 검사 항목 목록 site_audit_mutes_list

사이트에 대해 음소거된 검사를 최신순으로 나열합니다. 음소거는 검사를 사이트 전체(url이 null)나 URL 하나에 대해 숨기므로, 감사가 여전히 기록하더라도 해당 발견은 카운트와 점수에서 제외됩니다. 각 행에는 id(음소거 ID, site_audit_mutes_delete에서 사용), site_id, check_key, title, url(사이트 전체 음소거는 null), muted_by(멤버 이름, 알 수 없으면 null), created_at이 있습니다. check_key로 필터링합니다. page와 per_page(최대 100)로 페이지를 나눕니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/audit/mutes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/audit/notifications.json 사이트의 감사 요약 이메일 켜기 또는 끄기 site_audit_notifications_update

사이트 하나에 대해 호출한 멤버의 주간 감사 요약 이메일을 켜거나 끕니다. 개인 설정이며 다른 멤버에게는 영향이 없습니다. enabled true는 이 사이트의 감사 후 멤버에게 요약을 보내고, false는 중단합니다. site_id, enabled, all_sites_enabled(멤버가 계정 설정에서 모든 사이트의 감사 이메일을 껐으면 false이며, 이 설정보다 우선함)를 반환합니다. analytics.read가 있는 모든 멤버는 본인의 설정을 변경할 수 있습니다.

권한: analytics.read

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/audit/notifications.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/audit/pages.json 사이트 감사의 페이지 목록 보기 및 필터링 site_audit_pages_list

페이지 탐색기이며 감사 하나의 URL을 나열합니다(기본값은 가장 최근에 끝난 감사, 아니면 audit_id). kind는 page(기본값, HTML 문서), resource(이미지, 스크립트, 스타일시트) 또는 external(다른 사이트로의 링크)입니다. state(queued, fetched, skipped, blocked, failed), status_class(2xx, 3xx, 4xx 또는 5xx), indexable, in_sitemap, has_issues(음소거되지 않은 이슈만 집계), depth(시작 페이지에서의 클릭 수), query(URL 또는 제목의 텍스트)로 필터링합니다. sort는 pageviews(기본값), inlinks, depth, response_ms(느린 순) 또는 word_count(적은 순)입니다. 각 행에는 id(site_audit_pages_get용 UUID), url, path, kind, state, status, depth, indexable, indexability_reason, title, word_count, response_ms, cache_status, inlinks, pageviews, in_sitemap, issues(개수)가 있습니다. page와 per_page(최대 100)로 페이지를 나눕니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/audit/pages.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/audit/pages/:id.json 감사한 페이지 하나 가져오기: 메타데이터, 문제, 들어오는 링크와 나가는 링크 site_audit_pages_get

ID(site_audit_pages_list 또는 site_audit_issues_get의 urls에서 가져온 UUID)로 URL 하나에 대해 감사가 저장한 모든 것을 반환합니다. id, audit_id, page(url, status, redirect_to, content_type, bytes, response_ms, title, meta_description, h1, canonical, robots_meta, indexable과 indexability_reason, word_count, lang, hreflang, schema_types, 소셜 태그, images_count, images_missing_alt, 링크 수, link_score, in_sitemap, has_tracker, pageviews와 search_clicks, fetched_at 등), redirect_target_id(감사 내에서 리디렉션되는 페이지, 또는 null), issues(check_key, title, category, severity, detail, is_new, muted), inlinks와 outlinks(각각 page_id, url, status, kind, anchor, nofollow, count가 있는 최대 100개)를 반환합니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/audit/pages/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/audit/settings.json 사이트의 감사 설정 가져오기 site_audit_settings_get

사이트의 감사 설정을 반환합니다. 필드는 site_id, enabled(예약된 감사의 켜짐 또는 꺼짐, 기본값은 켜짐), include_subdomains, check_external_links, exclude_paths, ignored_params, extra_start_urls, next_run_at(다음 예약 감사 예정 시각, 없으면 null), page_limit(현재 요금제에서 감사당 페이지 수, 무제한이면 null), interval_days(요금제에서 예약된 감사 사이의 일수)입니다. 설정을 한 번도 바꾸지 않은 사이트는 기본값을 반환합니다. 변경은 site_audit_settings_update로 합니다. sites.manage가 필요합니다.

권한: sites.manage

예시
curl https://privatusanalytics.com/sites/:site_id/audit/settings.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/audit/settings.json 사이트의 감사 설정 변경 site_audit_settings_update

사이트가 감사되는 방식을 변경합니다. 보낸 입력만 변경됩니다. enabled는 예약 감사와 수동 감사를 켜거나 끕니다(켜면 요금제 간격 뒤로 다음 감사가 예약됨). include_subdomains와 check_external_links는 불리언입니다. 세 목록은 저장된 목록을 병합하지 않고 교체하므로 전체 목록을 보내세요. exclude_paths는 크롤러가 건너뛰는 경로 접두사이며 각각 슬래시로 시작해야 합니다(최대 50개). ignored_params는 다른 페이지를 만들지 않는 쿼리 파라미터 이름이며 utm_source나 sessionid 같은 것입니다(최대 50개, 문자, 숫자, 점, 대시, 밑줄). extra_start_urls는 홈페이지에 더해 크롤링할 전체 http 또는 https URL입니다(최대 20개). 목록은 한 줄에 항목 하나인 텍스트로 보낼 수도 있습니다. 업데이트된 설정을 반환합니다. sites.manage가 필요합니다.

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/audit/settings.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /audit/unsubscribe/:token.json 이메일에 포함된 토큰으로 사이트 감사 요약 이메일 수신 거부 site_audit_unsubscribes_create

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/audit/unsubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/audit/cancel.json 진행 중인 사이트 감사 취소 site_audit_cancel

사이트에 대해 실행 중이거나 대기 중인 감사를 중단합니다. 감사는 canceled로 표시되며 끝나지 않은 크롤링의 결과는 리포트되지 않습니다. 취소된 감사는 Free 요금제의 월간 허용량을 소진하지 않습니다. 실행 중인 감사가 없으면 검증 오류로 실패합니다. 취소된 감사를 반환합니다. content.write가 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/audit/cancel.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/audit/compare.json 두 사이트 감사 비교: 검사 항목별로 추가되거나 해결된 URL site_audit_compare

사이트의 두 감사를 검사 단위로 비교합니다. audit_id는 더 최근 감사이고 base_id는 더 오래된 감사입니다. 둘 다 합리적인 기본값이 있으며(가장 최근에 끝난 감사와 그 이전에 끝난 감사), 순서를 거꾸로 전달하면 도구가 바꿔 줍니다. audit과 base(각각 감사 요약이며, 이전 것이 없으면 base는 null), 그리고 URL이 바뀐 검사마다 객체 하나씩인 checks를 반환하며, 각 객체에는 check_key, title, category, severity, base_affected, affected, added와 fixed(URL 수)가 있고 오류가 먼저 정렬됩니다. 변화가 없는 검사는 제외됩니다. 연속된 두 감사에서는 added와 fixed가 정확하고, 더 떨어진 감사에서는 순 변화입니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/audit/compare.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/audit.json 지금 사이트 감사 시작 site_audit_run

사이트의 새 크롤링과 SEO 감사를 지금 시작합니다. 백그라운드에서 사이트의 공개 페이지를 크롤링하므로, status queued인 새 감사와 함께 바로 반환됩니다. status가 complete가 될 때까지 site_audit_get(live 필드) 또는 site_audit_history를 폴링하세요. site_audit_settings_update에서 감사가 꺼져 있거나, 다른 감사가 이미 대기 중이거나 실행 중이거나, 수동 감사가 최근 24시간 안에 시작되었거나, Free 요금제에서 최근 30일 안에 감사가 실행된 경우(실패 및 취소된 것은 제외) 검증 오류로 거부됩니다. 이벤트가 없는 미확인 사이트도 도메인당 하루에 감사 한 번으로 제한됩니다. 크롤링하는 페이지는 요금제가 상한을 정합니다(Free 100, Pro 1,000, Business 10,000). 먼저 site_audit_get의 can_run을 확인하세요. content.write가 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/audit.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/audit/history.json 사이트의 감사 목록 (최신순) site_audit_history

사이트의 감사를 최신순으로 나열하며, 각각 id(aud_...), status(queued, running, analyzing, complete, partial, failed 또는 canceled), trigger(first, scheduled 또는 manual), score(0에서 100, 끝나기 전에는 null), score_band, page_limit, pages_crawled, urls_discovered, errors, warnings, notices, new_issues, fixed_issues, failure(실패 시 사유, 그 외에는 null), 타임스탬프가 있습니다. status로 필터링합니다. page와 per_page(최대 100)로 페이지를 나눕니다. ID는 site_audit_get, site_audit_compare, 이슈 및 페이지 도구에서 사용하세요. 감사 하나의 현재 상태는 site_audit_get을 사용하세요. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/audit/history.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/audit.json 사이트 감사 개요 가져오기: 점수, 개수, 트래픽 기준 주요 문제, 현재 진행 중인 감사 site_audit_get

SEO 사이트 감사 개요이며, 감사 관련 질문에서 가장 먼저 호출하기 좋은 도구입니다. 기본적으로 가장 최근에 끝난 감사를 설명하며, 이전 감사는 audit_id(aud_..., site_audit_history에서 가져옴)를 전달하세요. 결과에는 audit(점수 0에서 100, score_band, score_delta, 오류, 경고, 알림의 개수, pages_crawled, page_limit, capped, 요약과 robots 세부 정보가 있는 끝난 감사, 끝난 것이 없으면 null), live(지금 실행 중인 감사, 또는 null), enabled와 next_run_at(일정), can_run과 run_blocked(live, disabled 또는 too_soon), run_allowed_at(site_audit_run이 다시 허용되는 시각), changes(심각도별 추가 및 수정된 URL 수), trend(id, finished_at, score인 최근 점수 최대 30개), top_issues(심각도 순, 이어서 영향받는 페이지의 페이지뷰 순으로 정렬된 최대 10개 검사), email_enabled(본인의 요약 이메일 설정)가 있습니다. 모든 이슈는 site_audit_issues_list로, URL은 site_audit_pages_list로 이어서 보세요. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/audit.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

삭제 요청

POST /sites/:site_id/testimonials/removal_requests/:id/dismiss.json 삭제 요청을 기각합니다 testimonial_removal_requests_dismiss

메모와 함께 요청을 닫고 추천사는 표시되는 곳에 그대로 둡니다. 아무것도 삭제되지 않으며 요청한 사람에게 이메일이 가지 않습니다. 메모는 필수입니다. 이미 결정된 요청은 422로 응답합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests/:id/dismiss.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/removal_requests.json 사이트의 삭제 요청을 나열합니다 testimonial_removal_requests_list

다른 상태를 지정하지 않으면 열린 요청입니다. 작성자가 입력한 이메일은 콘텐츠를 변경할 수 있는 호출자에게만 반환됩니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/removal_requests/:id/resolve.json 삭제 요청을 결정합니다 testimonial_removal_requests_resolve

trash는 추천사를 휴지통으로 옮겨 모든 위젯, 월, 공개 페이지에서 즉시 내리며 30일 동안 실행 취소할 수 있습니다. dismiss는 계속 표시하며 메모가 필요합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests/:id/resolve.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/removal_requests/:id.json 삭제 요청 하나를 가져옵니다 testimonial_removal_requests_get

요청 하나를 대상 추천사, 그 사람이 남긴 메모, 입력한 이메일이 추천사의 이메일과 일치하는지 여부, 요청 횟수, 결정이 있으면 그 결정과 함께 반환합니다. 이메일 자체는 content.write 권한이 있는 호출자에게만 반환됩니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

상태 페이지

GET /status/:slug/confirm/:token.json 이메일로 받은 링크에서 구독 확인 public_status_pages_confirm

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/status/:slug/confirm/:token.json
GET /status/:slug.json 공개 상태 페이지: 현재 상태, 90일 가동 시간 막대, 인시던트, 게시물 public_status_pages_get

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/status/:slug.json
POST /status/:slug/subscribers.json 이메일 주소 구독 (이중 수신 동의) public_status_pages_subscribe

브라우저 클라이언트는 Cloudflare Turnstile 토큰을 `cf-turnstile-response`로 보냅니다. API 토큰을 쓰는 요청에는 필요하지 않습니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/status/:slug/subscribers.json \
  -H "Content-Type: application/json" -d '{…}'
POST /status/:slug/unsubscribe/:token.json 이메일로 받은 토큰으로 구독 해지 public_status_pages_unsubscribe

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/status/:slug/unsubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /status_pages/:status_page_id/posts.json 인시던트 업데이트 게시 (구독자에게 이메일 발송) status_page_posts_create

상태 페이지에 인시던트 업데이트를 게시하고, 기본적으로 확인된 구독자에게 이메일을 보냅니다. 인시던트를 알리거나 업데이트할 때 선택하고, 새 게시물을 만드는 대신 기존 인시던트를 진행시키려면(예를 들어 resolved로) status_page_posts_update를 사용하세요. title은 필수입니다(최대 200자). status는 investigating(기본값), identified, monitoring 또는 resolved 중 하나입니다. body는 일반 텍스트(최대 10,000자)이고, posted_at은 기본값이 지금인 ISO 8601 시각이며, notify(기본값 true)는 이메일을 제어합니다. 이메일은 게시된 페이지에서만 발송되며 페이지별로 요청 횟수가 제한되고, 한도를 넘으면 게시물은 게시되지만 아무에게도 이메일이 가지 않습니다. status_page_id는 status_pages_list에서 가져옵니다. uptime.manage 권한이 필요합니다. id(spp_...), title, body, status, posted_at, updated_at이 있는 게시물을 반환합니다.

권한: uptime.manage

예시
curl -X POST https://privatusanalytics.com/status_pages/:status_page_id/posts.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /status_pages/:status_page_id/posts/:id.json 상태 페이지 게시물 삭제 status_page_posts_delete

상태 페이지에서 인시던트 게시물을 영구 삭제합니다. 공개 페이지에서 즉시 사라지며 되돌릴 수 없습니다. 이메일은 발송되지 않습니다. ID는 status_page_posts_list에서 가져옵니다. uptime.manage 권한이 필요합니다. 삭제된 게시물을 반환합니다.

권한: uptime.manage

예시
curl -X DELETE https://privatusanalytics.com/status_pages/:status_page_id/posts/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /status_pages/:status_page_id/posts.json 상태 페이지의 게시물 목록 보기 status_page_posts_list

상태 페이지의 인시던트 게시물을 posted_at이 최근인 순으로 나열합니다. 게시물 ID를 찾거나 인시던트 기록을 볼 때 사용하세요. 선택적으로 status(investigating, identified, monitoring 또는 resolved)로 필터링합니다. page와 per_page(최대 100)로 페이지를 나눕니다. 각 게시물에는 id(spp_...), title, body(비어 있으면 null), status, posted_at, updated_at이 있습니다. status_page_id는 status_pages_list에서 가져옵니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/status_pages/:status_page_id/posts.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /status_pages/:status_page_id/posts/:id.json 상태 페이지 게시물 편집 status_page_posts_update

인시던트 게시물을 편집합니다. 보낸 입력만 변경되므로 인시던트를 해결하려면 status만 보내세요. 구독자에게는 status가 실제로 바뀌고 notify가 false가 아닐 때(기본값 true)만 이메일이 갑니다. title이나 body만 편집하면 이메일이 발송되지 않습니다. 이메일은 게시된 페이지의 확인된 구독자에게 가며 페이지별로 요청 횟수가 제한됩니다. 유효한 status 값은 investigating, identified, monitoring, resolved입니다. ID는 status_page_posts_list에서 가져옵니다. uptime.manage 권한이 필요합니다. 업데이트된 게시물을 반환합니다.

권한: uptime.manage

예시
curl -X PATCH https://privatusanalytics.com/status_pages/:status_page_id/posts/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /status_pages/:status_page_id/subscribers/:id.json 구독자 제거 status_page_subscribers_delete

상태 페이지에서 이메일 구독자를 제거해서 인시던트와 가동 시간 이메일을 더 이상 받지 않게 합니다. 되돌릴 수 없지만 그 사람은 공개 페이지에서 다시 구독할 수 있습니다. ID는 status_page_subscribers_list의 구독자 ID입니다(접두사가 없는 일반 UUID). uptime.manage 권한이 필요합니다. 제거된 구독자를 반환합니다.

권한: uptime.manage

예시
curl -X DELETE https://privatusanalytics.com/status_pages/:status_page_id/subscribers/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /status_pages/:status_page_id/subscribers.json 상태 페이지의 구독자 목록 보기 status_page_subscribers_list

상태 페이지의 이메일 구독자를 이메일순으로 나열합니다. 주소를 확인한 사람만(이들만 이메일을 받음) 보려면 confirmed true를, 대기 중인 사람은 confirmed false를 사용하세요. page와 per_page(최대 100)로 페이지를 나눕니다. 각 항목에는 id(UUID, status_page_subscribers_delete에서 사용), email, confirmed_at(대기 중에는 null), created_at이 있습니다. status_page_id는 status_pages_list에서 가져옵니다. uptime.manage 권한이 필요하며 개인정보(이메일 주소)를 반환합니다. Business 또는 Enterprise 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: uptime.manage

예시
curl https://privatusanalytics.com/status_pages/:status_page_id/subscribers.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/status_pages.json 상태 페이지 만들기 status_pages_create

선택한 가동 시간 검사, 인시던트 게시물, 이메일 가입을 보여 주는 워크스페이스의 공개 상태 페이지를 만듭니다. name은 필수입니다(최대 100자). slug(소문자, 숫자, 하이픈이며 모든 워크스페이스에서 고유)의 기본값은 이름에서 만들어지고 페이지는 /status/<slug>에서 제공됩니다. check_ids는 표시할 가동 시간 검사를 나열하며(uptime_checks_list의 upc_... ID) public true로 만든 검사만 허용됩니다. published의 기본값은 true이므로 페이지는 즉시 모든 사람에게 보입니다. 선택 사항인 브랜딩은 description(최대 2,000자), logo_url(https여야 함), brand_color(#06755b 같은 16진수), custom_domain(앱을 가리키는 CNAME을 설정하는 호스트 이름, 고유)입니다. 이후 인시던트를 게시하려면 status_page_posts_create를 사용하세요. uptime.manage 권한이 필요합니다. id(sp_...), slug, check_ids, subscribers(확인된 구독자 수)가 있는 페이지를 반환합니다. 워크스페이스가 가질 수 있는 페이지 수는 요금제에 따라 정해집니다. Free는 없음(402 plan_limit), Pro는 1개, Business는 10개입니다. custom_domain과 이메일 구독자는 Business 또는 Enterprise 요금제가 필요합니다. 요금제의 개수를 초과한 페이지는 유지되지만 오프라인이 됩니다.

권한: uptime.manage

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/status_pages.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /status_pages/:id.json 상태 페이지 삭제 status_pages_delete

상태 페이지를 모든 인시던트 게시물과 구독자와 함께 영구 삭제합니다. 공개 페이지와 사용자 지정 도메인은 즉시 작동을 멈추며 되돌릴 수 없습니다. 가동 시간 검사 자체는 삭제되지 않습니다. ID는 status_pages_list에서 가져옵니다. uptime.manage 권한이 필요합니다. 삭제된 페이지를 반환합니다.

권한: uptime.manage

예시
curl -X DELETE https://privatusanalytics.com/status_pages/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/status_pages.json 상태 페이지 목록 보기 status_pages_list

워크스페이스의 상태 페이지를 이름순으로 나열합니다. 이름이나 slug의 일부와 일치시키려면 query를 사용하세요. 호출자가 일부 사이트로 제한된 경우, 검사가 모두 그 사이트 안에 있는 페이지만 반환됩니다. page와 per_page(최대 100)로 페이지를 나눕니다. 각 항목은 status_pages_get에 설명된 필드를 가집니다. workspaces_list의 workspace_id가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/status_pages.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /status_pages/:id.json 상태 페이지 조회 status_pages_get

상태 페이지 하나를 설정과 함께 반환합니다. 필드는 id(sp_...), workspace_id, name, slug, custom_domain(없으면 null), description, logo_url, brand_color, published, check_ids(페이지에 표시되는 가동 시간 검사 ID), subscribers(확인된 이메일 구독자 수), created_at입니다. 인시던트는 status_page_posts_list를, 구독자는 status_page_subscribers_list를 사용하세요. ID는 status_pages_list에서 가져옵니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/status_pages/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /status_pages/:id.json 상태 페이지 변경 status_pages_update

상태 페이지를 변경합니다. 보낸 입력만 변경되므로, 페이지를 오프라인으로 하려면 published false만, 표시되는 검사를 교체하려면 check_ids만 보내세요(목록 전체가 병합되지 않고 교체됨). 입력과 한도는 status_pages_create와 같습니다. 사용자 지정 도메인을 제거하려면 custom_domain을 빈 문자열로 보내세요. public true인 검사만 표시할 수 있으며, 일부 사이트로 제한된 호출자는 그 사이트의 검사만 페이지에 넣을 수 있습니다. ID는 status_pages_list에서 가져옵니다. uptime.manage 권한이 필요합니다. 업데이트된 페이지를 반환합니다.

권한: uptime.manage

예시
curl -X PATCH https://privatusanalytics.com/status_pages/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

설문

POST /sites/:site_id/surveys.json 설문 만들기 surveys_create

사이트용 쿠키 없는 사이트 내 설문을 만듭니다. status가 active가 되기 전에는 아무것도 수집하지 않으므로, 먼저 draft로 만들거나 status active를 전달해 바로 시작하세요. name(내부용이며 방문자에게는 보이지 않고 최대 120자)과 questions(순서대로 1에서 5개 행)가 필수입니다. 각 질문은 key(선택, 소문자, 숫자, 밑줄로 된 고정 ID이며 생략하면 생성됨), kind(text, choice, multi, rating, nps 또는 yes_no), prompt(필수, 최대 200자), required(불리언), choices(최대 10개 선택지의 목록이며 choice와 multi에만 해당), scale(3, 5, 7 또는 10이며 rating에만 해당, 기본값 5)이 있는 객체입니다. NPS는 항상 0에서 10을 사용합니다. 타겟팅은 trigger_kind(immediate, delay, scroll, exit 또는 manual)와 delay_seconds(0에서 600, 기본값 10, delay에만 해당), scroll_percent(1에서 100, 기본값 50, scroll에만 해당), paths(match_type이 exact, prefix 또는 glob이고 pattern이 있는 행이며 비어 있으면 모든 페이지), devices(desktop, mobile, tablet, 비어 있으면 전체), position(bottom_right, bottom_left 또는 center), sample_rate(방문자의 1에서 100퍼센트), thank_you(최대 200자), starts_on과 ends_on(YYYY-MM-DD)입니다. 설문은 이메일 주소를 물을 수 없으며 서술 답변에서는 개인정보가 제거됩니다. Free 요금제는 워크스페이스당 설문 1개와 월간 응답 수 제한을 허용하고 유료 요금제는 무제한입니다. content.write 권한이 필요합니다. id(svy_...)가 있는 설문을 반환합니다. 답변은 surveys_get으로 읽으세요.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/surveys/:id.json 설문과 응답 삭제 surveys_delete

설문을 모든 응답과 답변과 함께 영구 삭제합니다. 되돌릴 수 없으며 결과가 사라집니다. 수집만 중단하려면 대신 surveys_pause를 사용하세요. ID는 surveys_list에서 가져오며 site_id가 필요합니다. content.write 권한이 필요합니다. 삭제된 설문을 반환합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/surveys/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/surveys.json 사이트의 설문과 응답 수 목록 surveys_list

사이트의 설문을 최신순으로 설정과 응답 수와 함께 나열합니다. status(draft, active, paused 또는 all, 기본값 all)로 필터링합니다. page와 per_page(기본값 25, 최대 100)로 페이지를 나눕니다. 각 설문에는 id(svy_...), name, status, questions, 타겟팅 설정, starts_on, ends_on, created_at, updated_at, stats(responses, completed, this_month 카운트)가 있습니다. 설문 하나의 답변과 결과는 surveys_get을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/surveys.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/surveys/:id/pause.json 답변 수집을 멈추고 이미 받은 답변은 유지 surveys_pause

설문을 일시 중지해서 방문자에게 즉시 표시되지 않게 합니다. 이미 수집된 응답은 유지되어 surveys_get에 표시되며, surveys_start로 재개합니다. 수집만 중단하려면 surveys_delete 대신 사용하세요. ID는 surveys_list에서 가져오며 site_id가 필요합니다. content.write 권한이 필요합니다. status가 paused인 설문을 반환합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys/:id/pause.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/surveys/:id.json 기간별 설문 결과 (질문별 분석) surveys_get

설정만이 아니라 한 기간 동안의 설문 하나의 결과 리포트를 반환합니다(설정과 카운트는 surveys_list 사용). 기간은 프리셋 period(기본값 30d) 또는 from과 to가 있는 period custom을 고르세요. 응답에는 survey(설정), period(ISO 8601 시각인 from과 to), responses(질문에 한 개 이상 답한 사람), completed(마지막 질문에 답한 사람), questions(질문마다 key, kind, prompt, 답변 수와 kind별 상세가 있는 항목 하나), pages, devices, countries(각각 value와 count의 최대 10행)가 있습니다. kind별 상세는 text는 texts(text와 at이 있는 최신 서술 답변 최대 100개), choice, multi, yes_no는 choices(value, count, 소수점 한 자리 퍼센트인 share, offered), rating은 average(답변이 없으면 null), scale, distribution, nps는 score(-100에서 100의 NPS, 답변이 없으면 null), promoters(9와 10), passives(7과 8), detractors(0에서 6), distribution입니다. 서술 답변을 요약하려면 surveys_themes를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/surveys/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/surveys/:id/start.json 답변 수집 시작 surveys_start

설문을 active로 설정해서 방문자에게 보여 줄 수 있게 합니다. 현재 날짜가 starts_on과 ends_on 사이에 있고(설정된 경우), 페이지가 paths와 devices에 일치하며, 요금제의 월간 응답 허용량을 다 쓰지 않았을 때만 표시됩니다. draft나 일시 중지된 설문에 사용하세요. ID는 surveys_list에서 가져오며 site_id가 필요합니다. content.write 권한이 필요합니다. status가 active인 설문을 반환합니다. 다시 중단하려면 surveys_pause를 사용하세요.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys/:id/start.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/surveys/:id/themes.json 한 질문의 서술형 답변을 주제별로 묶기 (Business 플랜) surveys_themes

AI를 사용해 자유 서술형 질문 하나에 대한 서술 답변을 주제로 묶습니다. Business 요금제 전용입니다. surveys_get에서 답변이 충분한 text 질문이 보인 후에 선택하고, question_key(surveys_get의 kind가 text인 질문의 key)를 전달하세요. 서술 답변이 최소 5개 필요하며 가장 최근 300개를 사용합니다. 결과에는 최대 12개의 주제가 나열되며 각각 label, count, sentiment(positive, neutral 또는 negative), example(대표 답변, null일 수 있음)이 있고, answers(요약된 답변 수)와 generated_at이 함께 있습니다. 새로 생성할 때마다 워크스페이스의 월간 AI 허용량에서 질문 하나가 사용되며, 실패하면 돌려받습니다. 결과는 답변에 대해 캐시되므로 새 답변이 없는 상태에서 다시 호출해도 비용이 들지 않습니다. 요금제에 포함되지 않았거나, 허용량을 다 썼거나, AI가 구성되지 않았거나, 답변이 너무 적으면 검증 오류로 실패합니다.

권한: analytics.read

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys/:id/themes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
PATCH /sites/:site_id/surveys/:id.json 설문 수정 surveys_update

설문을 변경합니다. 보낸 입력만 변경됩니다. 입력과 한도는 surveys_create와 같으며 status는 draft, active 또는 paused입니다. questions를 보내면 전체 목록이 교체되므로, 유지하려는 모든 질문을 포함하고 수집된 답변을 유지하려면 기존 key를 그대로 두세요(같은 key로 prompt의 문구를 바꿔도 결과가 나뉘지 않음). 생략한 질문은 결과에 나타나지 않게 됩니다. 타겟팅 변경은 방문자에게 즉시 적용됩니다. ID는 surveys_list에서 가져오며 site_id가 필요합니다. content.write 권한이 필요합니다. 업데이트된 설문을 반환합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/surveys/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

성능

GET /sites/:site_id/performance.json 웹 바이탈: p75 점수표, 일별 추세, 페이지, 기기, 브라우저, 국가별 세부 분석 performance_report

실제 방문자의 웹 바이탈 리포트입니다. period, metric, sample_rate, scorecard, trend, breakdowns를 반환합니다. scorecard에는 LCP, INP, CLS, FCP, TTFB 각각에 대한 행이 하나씩 있으며 p75(75번째 백분위수, 단위가 없는 점수인 CLS를 제외하고 밀리초), samples, rating(good, needs_improvement 또는 poor, 데이터가 없으면 null), good, needs_improvement, poor(샘플의 퍼센트), previous_p75, change(이전 기간 대비 퍼센트, 알 수 없으면 null), thresholds [good 한계, poor 한계]가 있습니다. trend는 선택한 지표의 일별 p75이며 {date, p75, samples} 형태입니다. breakdowns에는 page, device, browser, country가 있으며, 각각 선택한 지표에 대해 {value, p75, samples, rating, slow_share, poor} 형태로 최대 limit개 행(기본값 10, 최대 100)이 나쁜 순, 많은 순으로 들어 있습니다. metric은 LCP, INP, CLS, FCP 또는 TTFB 중 정확히 하나를 대문자로 선택하세요(기본값 LCP). sample_rate는 바이탈을 보고하는 방문의 비율이므로 카운트는 샘플이며 모든 방문이 아닙니다. 공통 period, compare, filters, segment 입력을 받습니다. 페이지 하나의 바이탈은 pages_detail을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/performance.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

세그먼트

POST /sites/:site_id/segments.json 필터를 세그먼트로 저장 segments_create

필터 모음을 이름이 있는 세그먼트로 저장해서 segment_id를 통해 어떤 stats 도구에서든 다시 사용할 수 있게 합니다. name과 filters를 전달하세요(모든 조건이 일치해야 하며, {any: [...]} 그룹은 여러 조건 중 하나가 일치하면 일치함. 차원 이름과 연산자는 filters 입력 참고). 필터는 검증되므로, 알 수 없는 차원이나 잘못된 값은 행마다 메시지가 있는 422를 반환합니다. 필터 모음이 무엇과 일치하는지 확인하려면 먼저 segments_preview를 사용하세요. shared의 기본값은 true이며 사이트에 접근할 수 있는 모든 사람에게 세그먼트가 보이고, false이면 본인만 볼 수 있습니다. id(seg_...), site_id, name, description, filters, summary(쉬운 말로 된 설명), shared, mine, 타임스탬프가 있는 세그먼트를 반환합니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/segments.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/segments/:id.json 세그먼트 삭제 segments_delete

저장된 세그먼트를 영구 삭제합니다. 이를 사용하는 대시보드와 링크는 전체 트래픽으로 돌아갑니다. 분석 데이터는 건드리지 않으며 되돌릴 수 없습니다. 삭제된 세그먼트를 반환합니다. ID(seg_...)는 segments_list에서 가져옵니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/segments/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/segments.json 사이트에서 사용할 수 있는 세그먼트 목록 보기 segments_list

사이트의 저장된 세그먼트를 이름순으로 나열합니다. 공유된 세그먼트와 본인의 비공개 세그먼트입니다. 각 세그먼트에는 id(seg_...), site_id, name, description, filters, summary, shared, mine, 타임스탬프가 있습니다. 세그먼트의 필터를 적용하려면 id를 어떤 stats 도구(stats_aggregate, stats_breakdown, funnels_get 등)에든 segment_id로 전달하세요. 표준 page 파라미터로 페이지를 나눕니다. 추가하려면 segments_create를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/segments.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/segments/preview.json 필터를 일상 언어로 설명하고 최근 30일 동안 일치한 방문자 수 세기 segments_preview

아무것도 저장하지 않고 필터 모음을 확인합니다. summary(쉬운 말로 된 필터), visitors(최근 30일 동안 일치한 방문자 수, 필터가 잘못되었으면 null), period(항상 30d), filters(저장될 정리된 표준 형태)를 반환합니다. 필터는 segments_create와 같은 형식을 사용하며, {any: [...]} 그룹과 코드와 ID로 변환되는 국가, 채널, 목표의 풀어 쓴 이름도 선택적으로 사용할 수 있습니다. 잘못된 필터는 해당 행을 밝히는 422를 반환합니다. segments_create 전에 필터를 시험해 볼 때 사용하고, 다른 기간의 수치는 filters를 쓴 stats_aggregate를 사용하세요.

권한: analytics.read

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/segments/preview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/segments/:id.json 세그먼트 조회 segments_get

저장된 세그먼트 하나를 반환합니다. id(seg_...), site_id, name, description, filters(저장된 조건), summary(미국에서 모바일로 온 방문자 같은 쉬운 말 설명), shared(사이트에 접근할 수 있는 모든 사람에게 보임), mine(본인이 만들었으면 true), 타임스탬프입니다. 공유된 세그먼트와 본인의 비공개 세그먼트를 읽을 수 있습니다. ID는 segments_list에서 가져옵니다. 필터 모음에 해당하는 방문자 수를 세려면 segments_preview를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/segments/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/segments/:id.json 세그먼트 이름, 필터 또는 공유 설정 변경 segments_update

세그먼트의 이름을 바꾸거나, 필터를 교체하거나, 볼 수 있는 사람을 변경합니다. 보낸 입력만 변경됩니다. filters를 보내면 기존의 모든 필터가 segments_create와 같은 형식과 같은 검사로 교체됩니다. shared false는 만든 사람만 볼 수 있게 합니다. description은 빈 값으로 보내서 지울 수 있습니다. segment_id가 있는 stats 호출 등 세그먼트를 사용하는 모든 것이 즉시 바뀝니다. 세그먼트를 반환합니다. ID는 segments_list에서 가져옵니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/segments/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

수집

POST /embed/ads/e.json 광고 로더가 호출하는, 소재가 표시, 확인 또는 클릭되었음을 기록 ad_serving_event

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/embed/ads/e.json \
  -H "Content-Type: application/json" -d '{…}'
GET /embed/ads/:site.json 광고 로더가 호출하는, 사이트의 광고 슬롯과 각 슬롯에 표시할 소재 ad_serving_slots

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/embed/ads/:site.json
POST /api/overlay.json 클릭 맵 오버레이에 쓸 한 페이지의 클릭 수입니다. pa.overlay.js가 자기 패스로 호출합니다 click_overlays_read

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/api/overlay.json \
  -H "Content-Type: application/json" -d '{…}'
POST /api/logs.json AI 크롤러 리포트용 서버 액세스 로그 보내기 (JSON {lines: [...]} 또는 combined 로그 텍스트, 사이트의 크롤러 로그 키를 Bearer 토큰으로 사용) crawler_logs_create

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/api/logs.json \
  -H "Content-Type: application/json" -d '{…}'
POST /api/event.json 브라우저 히트 수집 (/js/pa.js에서 사용) ingest_event

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/api/event.json \
  -H "Content-Type: application/json" -d '{…}'
GET /api/experiment.json 실험이 이 방문자를 변형 페이지로 보낼지 여부이며, 실험 head 스크립트가 호출합니다 ingest_experiment

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/api/experiment.json
GET /js/exp/:site.json 사이트용 선택적 실험 head 태그가 불러오는 스크립트 ingest_experiment_script

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/js/exp/:site.json
POST /api/survey.json 설문 카드가 표시, 닫힘 또는 답변되었음을 기록 ingest_survey

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/api/survey.json \
  -H "Content-Type: application/json" -d '{…}'
GET /api/surveys.json 페이지에 표시할 설문 (트래커의 ask 모듈이 호출) ingest_surveys

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/api/surveys.json

스폰서 리포트

GET /sponsor/:token.json 링크 토큰으로 조회하는 스폰서 리포트 ad_reports_get

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/sponsor/:token.json

실시간

GET /sites/:site_id/live.json 실시간 방문자, 활동 스트림, 지금 인기 있는 항목 (최근 30분) live_get

지금 사이트에서 일어나고 있는 일입니다. live_visitors(최근 5분의 방문자), window_minutes(30), sparkline(최근 30분의 분당 방문이며 오래된 순, 각각 {minute, visits}), feed(최근 활동), top_pages, top_referrers, top_countries(각각 {value, visits}의 최대 8행), top_events({value, completions}의 최대 8개)를 최근 30분에 대해 반환합니다. feed 항목에는 occurred_at, kind, name, path, channel, referrer_host, country, device, browser가 있습니다. 이들은 익명이며 IP, 도시, 방문자 이동 경로가 없습니다. feed는 기본적으로 모든 히트를 보여 주며, 페이지뷰만 또는 이벤트만 보여 줄 수도 있고, limit개의 항목을 보여 줍니다(기본값 50, 버퍼 크기인 100까지). 수치는 캐시되지 않으며 period를 받지 않습니다. filters(stats_aggregate와 같은 형식)를 전달하면 모든 수치와 피드를 일치하는 히트로 좁힙니다. 간결한 여러 사이트 보기는 live_wallboard를, 전체 기간은 stats_overview를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/live.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/live/wallboard.json 사이트 하나 이상의 월보드 카드 (실시간 및 오늘) live_wallboard

사무실 화면용으로 만든, 하나 이상의 사이트에 대한 간결한 큰 숫자 카드입니다. rotate_seconds, generated_at, sites를 반환합니다. 각 사이트 카드에는 id(pa_...), name, domain, live_visitors(최근 5분), sparkline(최근 30분, 분 단위), visitors_today, pageviews_today, bounce_rate_today(퍼센트, 0에서 100), top_pages, top_countries, top_referrers(각각 5행)가 있습니다. 오늘은 사이트 자체의 시간대를 기준으로 하며 수치는 실시간 데이터에서 읽습니다. site_ids는 포함할 사이트를 나열하며(최대 12개, 토큰이 열 수 있는 사이트만), 없으면 경로의 사이트가 사용됩니다. rotate_seconds는 5에서 300 사이로 조정되며 화면이 각 카드를 얼마나 오래 보여 줄지만 알려 줍니다. 공유 가능한 공개 화면은 wallboard_links_create를 사용하세요. 사이트 하나의 전체 실시간 보기는 live_get을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/live/wallboard.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /wallboard/:token.json 월보드 토큰으로 보는 월보드 (로그인 불필요) live_public_wallboard

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl https://privatusanalytics.com/wallboard/:token.json

실험

POST /sites/:site_id/experiments.json 초안으로 실험 만들기 experiments_create

사이트의 A/B 테스트 또는 분할 URL 테스트를 만듭니다. 초안으로 저장되며 사람이 앱에서 시작하기 전까지는 방문자를 어디로도 보내지 않습니다. name, path(원본 페이지, 예를 들어 /pricing), goal_id(goals_list에서 가져옴), variants가 필요합니다. variants는 { name, path, weight } 목록이며 첫 행이 원본 페이지이고(path는 무시됨) 나머지 행은 같은 사이트의 페이지입니다. 균등 분할하려면 weight를 모두 생략하고, 아니면 합이 100이 되는 weight를 보내세요. Free 요금제는 한 번에 실험 하나(원본과 변형 하나)를 허용합니다. Pro 이상은 변형 추가, 자동 배분, 타기팅, 경로의 *, 보조 목표, 예약 시작, 배타 그룹을 더합니다. content.write가 필요합니다. 만든 실험을 반환합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/experiments/:id.json 실험과 그 결과 삭제 experiments_delete

실험과 그 변형, 결과를 영구 삭제합니다. 되돌릴 수 없습니다. 중지하면서 결과를 유지하려면 experiments_pause를 사용하세요. MCP 도구는 실행하지 않고 human_only와 사람이 삭제하는 페이지로 응답합니다. content.write가 필요합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/experiments/:id/duplicate.json 실험을 새 초안으로 복사 experiments_duplicate

기존 실험과 같은 페이지, 비율, 목표, 규칙을 가지고 결과는 없는 초안을 만듭니다. 이미 시작된 테스트를 바꾸고 싶을 때 사용하세요. 새 실험처럼 요금제 한도에 포함됩니다. content.write가 필요합니다. 새 실험을 반환합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/duplicate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/experiments/:id/end.json 실험을 완전히 종료 experiments_end

실행 중이거나 일시중지된 실험을 종료합니다. 다시 시작할 수 없고, 결과는 유지되며, 더 이상 요금제 한도에 포함되지 않습니다. MCP 도구는 실행하지 않고 human_only와 사람이 종료하는 페이지로 응답합니다. API는 실행합니다. content.write가 필요합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/end.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/experiments.json 사이트의 실험 목록 experiments_list

사이트의 A/B 테스트와 분할 URL 테스트를 최신순으로 나열합니다. status로 필터링합니다(draft, scheduled, running, paused, ended 또는 all, 기본값 all). page와 per_page로 페이지를 나눕니다(기본값 25, 최대 100). 각 실험에는 id(exp_...), name, status, path(원본 페이지), goal_id, variants(id, name, path, weight, control), 종료 규칙, locked(요금제가 더 이상 포함하지 않으면 true)가 있습니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/experiments.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/experiments/:id/pause.json 실험을 일시중지하고 결과 유지 experiments_pause

실행 중이거나 예약된 실험을 일시중지합니다. 모든 방문자가 즉시 다시 원본 페이지를 보게 되며 지금까지의 결과는 유지됩니다. experiments_start로 다시 시작합니다. content.write가 필요합니다. 실험을 반환합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/pause.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/experiments/:id.json 실험 하나와 그 결과 조회 experiments_get

ID(exp_..., experiments_list에서 가져옴)로 실험 하나와 그 결과를 반환합니다. 변형별 방문, 목표 전환 수, 전환율과 함께 원본 대비 상승률, 차이의 예상 범위, p-값, 선택한 신뢰도에서 유의한지 여부, 원본을 이길 확률을 제공합니다. results.progress는 우승 페이지를 판정하기까지 얼마나 남았는지를 알려 주고, results.mismatch.found가 true이면 방문이 가중치대로 배분되지 않았다는 뜻이므로 결과를 신뢰해서는 안 됩니다. split은 결과를 기기, 채널 또는 국가별로 나누고(Pro 이상) humans_only는 봇 점수가 사람일 가능성이 높다고 판단한 방문만 남깁니다(Business). 방문은 해당 변형을 본 경우에만 그 변형으로 집계되고, 전환은 그 이후에만 집계됩니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/experiments/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/experiments/:id/start.json 실험 시작 experiments_start

초안 또는 일시중지된 실험을 시작하여 원본 페이지 방문자를 변형으로 보내기 시작합니다. starts_at이 미래이면 그 시각까지 기다립니다. 실제 방문자를 리디렉션하므로 MCP 도구는 실행하지 않고 human_only와 사람이 시작하는 페이지로 응답합니다. API는 실행합니다. content.write가 필요합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/start.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
PATCH /sites/:site_id/experiments/:id.json 실험 업데이트 experiments_update

실험을 변경합니다. 보낸 입력만 변경되며 variants는 목록 전체를 교체합니다. 실험이 시작된 뒤에는 도중에 새 페이지, 비율, 목표를 바꾸면 결과가 왜곡되므로 name과 send_to_winner만 변경할 수 있습니다. 대신 experiments_duplicate를 사용해 복사본을 편집하세요. content.write가 필요합니다. 실험을 반환합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/experiments/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

알림

POST /alerts/:id/acknowledge.json 최신 인시던트 확인 처리 alerts_acknowledge

알림의 가장 최근 미확인 인시던트를 호출한 사용자가 확인한 것으로 표시합니다. 인시던트를 해결하거나 알림을 음소거하지는 않으며, 알림은 조건이 해소되면 저절로 해결됩니다. 알림에 미확인 인시던트가 없으면 호출은 검증 오류로 실패합니다. 알림을 반환합니다. acknowledged_at과 acknowledged_by가 포함된 인시던트를 보려면 alerts_history를 사용하세요. 분석 읽기 권한만 있으면 되므로 뷰어도 확인할 수 있습니다.

권한: analytics.read

예시
curl -X POST https://privatusanalytics.com/alerts/:id/acknowledge.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/alerts.json 알림 만들기 alerts_create

사이트(또는 kind가 usage일 때는 워크스페이스 전체)를 감시하고, 트리거되면 선택한 채널로 알리는 알림 규칙을 만듭니다. 경로에는 workspace_id를 사용합니다. name과 kind는 필수입니다. 그 외에 필요한 값은 kind에 따라 달라집니다. threshold는 site_id, metric(visitors, visits, pageviews, bounce_rate 또는 conversion), operator(gt, gte, lt 또는 lte), threshold가 필요하고, conversion은 goal_id도 필요합니다. anomaly는 site_id와 metric(visitors, visits 또는 pageviews)이 필요하며, 최근 구간을 이전 4주 각각의 같은 구간과 비교하고 sensitivity(low, medium 또는 high)를 사용합니다. operator가 lt면 감소에만, gt면 급증에만 알리고, 비워 두면 둘 다에 알립니다. goal은 site_id, goal_id, threshold(구간 내 완료 횟수)가 필요합니다. no_data는 site_id와 이벤트가 없는 시간 단위의 threshold가 필요합니다(기본값 24). usage는 사이트가 필요 없고 threshold는 월간 이벤트 허용량에 대한 퍼센트입니다(기본값 80). uptime은 site_id가 필요하고, uptime_check_id는 선택입니다(기본값은 사이트의 모든 검사). ssl은 site_id와 인증서 또는 도메인이 만료되기 전 일 단위의 threshold가 필요합니다(기본값 14). vitals는 site_id, metric(lcp, inp, cls, fcp 또는 ttfb), 밀리초 단위의 threshold가 필요합니다(cls는 점수). subscriptions는 site_id, metric(mrr_drop: 최근 30일 동안 MRR이 threshold 퍼센트보다 많이 하락, churn_rate 또는 mrr_churn_rate: 최근 30일의 이탈이 threshold 퍼센트보다 높음), threshold(기본값 10)가 필요하며, 사이트에 결제 제공자가 연결되어 있지 않거나 측정할 것이 없으면 건너뜁니다. window_minutes(기본값 60, 5에서 10080)는 각 평가가 되돌아보는 범위입니다. channel_ids는 notification_channels_list에서 가져오고, sensitivity의 기본값은 medium입니다. 알림은 5분마다 자동으로 평가됩니다. bounce_rate와 conversion의 임계값은 0에서 100 사이의 퍼센트입니다. testimonials는 site_id와 metric이 필요하며, metric은 감시 대상을 지정합니다: new(새 추천사 도착), low_rating(평점 3 이하 도착), approved(추천사 승인), allowance(이번 달 새 추천사 허용량이 80% 사용되었거나, 모두 사용되었거나, 추천사를 대기 상태로 보류 중), sync_found(동기화에서 새 리뷰 발견), import_failed(가져오기 실패, 또는 소스가 연속 세 번 동기화에 실패), removal_requested(누군가 자신의 추천사 삭제를 요청) 또는 request_bounced(요청 이메일이 반송됨). testimonials 알림은 5분마다 평가되지 않습니다. 해당 일이 일어날 때마다 즉시 트리거되고, 이미 해결된 상태의 인시던트를 기록하며, 상태는 ok로 유지됩니다. metric이 allowance이면 워크스페이스 전체를 감시하고 사이트는 지정하지 않습니다. state가 ok인 생성된 알림을 반환합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/alerts.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /alerts/:id.json 알림 삭제 alerts_delete

알림 규칙과 전체 인시던트 기록을 영구적으로 삭제합니다. 되돌릴 수 없으며 알림 발송이 즉시 중단됩니다. 기록을 잃지 않고 알림을 일시 중지하려면 enabled를 false로 한 alerts_update 또는 alerts_mute를 사용하세요. ID(alr_...)는 alerts_list에서 가져옵니다. 삭제된 알림을 삭제 전 상태 그대로 반환합니다. 콘텐츠 쓰기 권한이 필요합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/alerts/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /alerts/:id/history.json 알림의 인시던트 기록 alerts_history

알림 하나의 인시던트를 최신순으로, 페이지를 나누어 나열합니다. 각 인시던트에는 triggered_at, resolved_at(아직 진행 중이면 null), value(트리거 시 측정된 값, 알림 임계값과 같은 단위), message(읽기 쉬운 설명), acknowledged_at, acknowledged_by(멤버의 표시 이름 또는 null)가 있습니다. open을 true로 설정하면 해결되지 않은 인시던트만 보입니다. 가장 최근 것을 확인 처리하려면 alerts_acknowledge를, 규칙의 현재 상태를 보려면 alerts_get을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/alerts/:id/history.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/alerts.json 알림 목록 보기 alerts_list

워크스페이스의 알림 규칙을 이름순으로, 페이지를 나누어 나열합니다(경로에는 workspace_id 사용). meta 페이지 정보와 함께 알림의 data 배열을 반환합니다. 각 알림에는 id(alr_...), site_id(pa_..., 워크스페이스 전체를 감시하는 usage 알림은 null), name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids(nch_... ID), state(ok 또는 triggered), enabled, muted_until, last_triggered_at, last_evaluated_at, created_at이 있습니다. site_id, state(ok 또는 triggered), kind로 범위를 좁힐 수 있습니다. 사이트 경로에서 한 사이트의 알림을 나열하려면 site_alerts_list를, 알림 하나는 alerts_get을, 인시던트는 alerts_history를 사용하세요. 일부 사이트로 제한된 호출자에게는 usage 알림이 보이지 않습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/alerts.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /alerts/:id/mute.json 알림의 통지 음소거 (또는 해제) alerts_mute

알림 하나의 발송을 지정한 분 동안 조용히 하되, 평가와 인시던트 기록은 계속합니다. minutes의 기본값은 60이고 최댓값은 43200(30일)이며, 0이면 즉시 음소거를 해제합니다. 응답은 muted_until이 음소거 종료 시각으로 설정된 알림입니다(해제되면 null). 평가를 완전히 중단하려면 enabled를 false로 한 alerts_update를, 음소거 없이 인시던트를 확인 처리하려면 alerts_acknowledge를 사용하세요.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/alerts/:id/mute.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /alerts/:id.json 알림 조회 alerts_get

ID(alr_..., alerts_list 또는 site_alerts_list에서 가져옴)로 알림 규칙 하나를 반환합니다. 응답은 id, site_id(usage 알림은 null), name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids, state(ok 또는 triggered), enabled, muted_until, last_triggered_at, last_evaluated_at, created_at이 있는 알림 객체입니다. 인시던트는 포함되지 않으므로 alerts_history를 사용하세요. threshold는 kind에 따라 단위가 달라지는 숫자입니다(alerts_create 참고). 분석 읽기 권한이 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/alerts/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /alerts/:id.json 알림 수정 alerts_update

기존 알림 규칙을 변경합니다(ID는 alerts_list에서 가져옴). 보낸 입력만 변경되고 나머지는 값이 유지됩니다. alerts_create와 같은 kind별 규칙이 결과에 적용되므로, kind나 metric을 바꾸면 그에 맞는 site_id, goal_id, operator 또는 threshold가 필요할 수 있습니다. 알림 채널 목록 전체를 교체하려면 channel_ids를, 삭제하지 않고 평가를 중단하려면 enabled false를 보내세요. 인시던트 기록은 유지하면서 한동안 알림만 조용히 하려면 alerts_mute를 대신 사용하세요. 업데이트된 알림을 반환합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/alerts/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/alerts.json 사이트의 알림 목록 보기 site_alerts_list

사이트 하나의 알림 규칙을 이름순으로, 페이지를 나누어 나열합니다(경로에는 site_id 사용). alerts_list와 같은 알림 객체를 반환하고 같은 state, kind 필터를 받지만 이 사이트에 대해서만 동작하므로 사이트가 없는 usage 알림은 포함되지 않습니다. 이미 사이트 ID가 있을 때 사용하고, 워크스페이스의 모든 알림이 필요하면 alerts_list를 사용하세요. 각 알림에는 id(alr_...), site_id, name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids, state(ok 또는 triggered), enabled, muted_until, last_triggered_at, last_evaluated_at, created_at이 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/alerts.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

알림 채널

DELETE /channels/:id.json 알림 채널 삭제 notification_channels_delete

알림 채널을 삭제하고 그것을 사용하던 모든 알림에서 제거하므로, 해당 알림은 더 이상 그곳으로 알리지 않습니다. 되돌릴 수 없으며 알림 자체는 유지됩니다. ID(nch_...)는 notification_channels_list에서 가져옵니다. 삭제된 채널을 반환합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/channels/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/channels.json 알림 채널 목록 보기 notification_channels_list

워크스페이스의 알림 채널을 이름순으로, 페이지를 나누어 나열합니다(경로에는 workspace_id 사용). 채널은 알림이 전달되는 곳입니다. 각 채널에는 id(nch_...), kind(email, slack, teams, discord, webhook, pagerduty, opsgenie 또는 push), name, target(이메일 주소나 웹훅 URL의 끝부분 같은 가려진 요약이며 시크릿은 반환되지 않음), last_used_at, created_at이 있습니다. kind로 필터링합니다. ID는 alerts_create와 alerts_update의 channel_ids로 사용하세요. 일부 사이트로 제한된 호출자는 본인의 사이트에 대한 알림이 사용하는 채널만 볼 수 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/channels.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /channels/:id/send_test.json 채널로 테스트 메시지 보내기 notification_channels_send_test

채널을 통해 실제 테스트 메시지를 보냅니다(이메일, 채팅 게시, 웹훅 호출 등). 따라서 사용자가 원할 때만 사용하세요. 전송이 작동하지 않으면 원인을 밝히는 오류와 함께 호출이 실패하고, 그렇지 않으면 채널을 반환합니다. 테스트 발송은 워크스페이스별로 요청 횟수가 제한되며 이메일 채널은 외부 주소별로도 제한됩니다. URL이나 키가 맞는지 확인하려면 notification_channels_create 또는 notification_channels_update 후에 사용하세요.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/channels/:id/send_test.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /channels/:id.json 알림 채널 조회 notification_channels_get

ID(nch_..., notification_channels_list에서 가져옴)로 알림 채널 하나를 반환합니다. 응답에는 kind, name, target(가려진 요약이며 웹훅 URL과 키 같은 시크릿은 반환되지 않음), last_used_at, created_at이 있습니다. 전달이 되는지 확인하려면 notification_channels_send_test를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/channels/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /notifications/unsubscribe/:token.json 이메일의 토큰으로 주소 하나를 알림 채널 또는 가동 시간 검사 한 곳에서 수신 거부 notification_unsubscribes_create

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/notifications/unsubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /push_subscription.json 푸시 알림용 브라우저 등록 push_subscriptions_create

브라우저의 PushSubscription에서 가져온 세 값(endpoint, p256dh, auth)을 사용해 현재 브라우저를 웹 푸시 알림에 등록합니다. 구독은 멤버가 속한 모든 워크스페이스의 모든 사이트에 대한 알림을 받으므로, API 토큰은 워크스페이스 전체를 읽을 수 있고 멤버에게 다른 워크스페이스가 없을 때만 이것을 사용할 수 있습니다. 같은 endpoint로 다시 호출하면 키가 업데이트되고 구독이 호출자에게 이동합니다. endpoint는 공개 https 푸시 서비스 URL이어야 합니다. 이것은 브라우저를 등록할 뿐이므로 알림에는 여전히 kind가 push인 알림 채널이 필요합니다(notification_channels_create). endpoint_host(전체 endpoint가 아니라 푸시 서비스의 호스트 이름)와 created_at을 반환합니다. 워크스페이스 ID 제공자를 통해 열린 세션에서는 사용할 수 없습니다.

권한: member

예시
curl -X POST https://privatusanalytics.com/push_subscription.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /push_subscription.json 브라우저 푸시 등록 제거 push_subscriptions_delete

로그인한 멤버의 브라우저 푸시 등록 하나를 제거해서 그 브라우저가 알림을 받지 않게 합니다. push_subscriptions_create에 사용한 것과 같은 endpoint를 전달하세요. 멤버에게 해당 구독이 없으면 not found로 실패합니다. 제거된 구독을 endpoint_host와 created_at으로 반환합니다. 알림 채널은 삭제하지 않습니다. push_subscriptions_create와 같은 토큰 제한이 적용됩니다.

권한: member

예시
curl -X DELETE https://privatusanalytics.com/push_subscription.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

양식

POST /sites/:site_id/testimonials/forms.json 양식을 만듭니다 testimonial_forms_create

한 번의 호출로 양식 전체를 보냅니다. 단계, 질문, 건너뛰기 로직, 동의 문구, 언어입니다. 생략한 항목은 양식 언어에 맞는 적절한 기본값으로 시작하며, slug는 이름에서 만들어집니다. 링크는 https://privatus.page/f/<slug>입니다. 낮은 별점 라우팅과 사용자 지정 CSS에는 Business 요금제가 필요합니다(없으면 402 plan_limit). 동영상과 오디오 답변은 Pro 이상에서 작성자에게 제공됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/forms/:id/permanent.json 양식을 영구 삭제합니다 testimonial_forms_delete

양식, 제출 기록, 보상, 비공개 의견을 삭제합니다. 양식이 수집한 추천사는 유지됩니다. 되돌릴 수 없으므로 사람이 페이지에서 처리합니다. API는 confirm(양식의 이름 또는 ID)을 받습니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/permanent.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/forms/:id.json 양식을 휴지통으로 옮깁니다 testimonial_forms_trash

양식의 링크는 복원될 때까지 양식이 닫혔다고 응답합니다. 휴지통은 30일 뒤에 비워집니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/forms/:id/duplicate.json 양식을 복사합니다. 다른 언어로 복사할 수도 있습니다 testimonial_forms_duplicate

slug, 통계, 보상을 제외한 모든 설정을 복사합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/duplicate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/forms.json 사이트의 양식을 나열합니다 testimonial_forms_list

휴지통의 양식은 trashed가 true일 때 나열되며, 그렇지 않으면 제외됩니다. 각 양식에는 설정, 보상, 지금까지 받은 제출 수가 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/forms/:id/qr.json 양식의 QR 코드를 SVG 또는 PNG로 가져옵니다 testimonial_forms_qr

코드에는 ?src=qr이 붙은 양식 링크가 들어 있어 스캔이 별도의 채널로 집계됩니다. slug를 바꿔도 인쇄된 코드는 계속 작동합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/qr.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/forms/:id/restore.json 휴지통에서 양식을 복원합니다. 링크가 다시 작동합니다 testimonial_forms_restore

양식을 질문, 제출, 비공개 의견과 함께 원래대로 휴지통에서 꺼냅니다. 링크(/f/<slug>)와 임베드가 다시 답변을 받습니다. 휴지통에 없는 양식에는 서버가 422와 not_in_trash 코드로 응답합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/restore.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/forms/:id/share.json 양식의 링크, QR 코드 링크, 임베드 코드를 가져옵니다 testimonial_forms_share

링크, 인라인 임베드 코드, 팝업 임베드 코드를 반환합니다. 팝업 입력(trigger, label, position, accent)은 팝업 코드를 바꿉니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/share.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/forms/:id.json 양식 하나를 모든 단계, 질문, 규칙, 설정과 함께 가져옵니다 testimonial_forms_get

testimonial_forms_create와 testimonial_forms_update가 받는 형태 그대로 양식 전체를 반환하며, slug, 링크, 보상, 제출 수가 포함됩니다. 휴지통에 있는 양식은 여기서 찾을 수 없으므로 먼저 복원하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/forms/:id.json 양식을 변경합니다. 보낸 입력만 변경됩니다 testimonial_forms_update

단계, 질문, 동의 문구를 변경하면 양식의 버전이 올라가며, 모든 동의 기록이 이 버전을 저장합니다. slug를 바꾸면 이전 링크는 계속 리디렉션됩니다. questions는 전체 목록으로 보내세요.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

어시스턴트

POST /sites/:site_id/ask.json 새 대화에서 질문하기 (월간 AI 질문 한도에 포함됩니다) assistant_ask

사이트 하나에서 새로운 Ask 대화를 시작하고, 해당 사이트의 분석 데이터로 첫 질문에 답합니다. 사이트에 대한 쉬운 질문에 사용하세요. 기존 대화를 이어가려면 assistant_ask_followup을, 정확한 쿼리를 이미 알고 있다면 stats 도구를 사용하세요. 답변은 AI 모델이 읽기 전용 분석 쿼리를 스스로 실행해 만들기 때문에 호출에 수 초가 걸릴 수 있습니다. 워크스페이스의 월간 허용량(Free 5회, Pro 20회, Business 100회) 중 AI 질문 1회로 계산되며, 허용량을 다 쓰면 한도 오류로 실패합니다. 질문은 최대 2,000자입니다. 대화는 시작한 멤버만 볼 수 있으며 마지막 메시지 이후 30일이 지나면 삭제됩니다. messages 배열이 포함된 대화(id, site_id, 질문에서 가져온 title, created_at, updated_at, expires_at)를 반환합니다. 각 메시지에는 role(user 또는 assistant), content(답변 텍스트), queries(어시스턴트가 실행한 정확한 분석 쿼리), chart(null 가능한 차트 정의), goal_draft(null 가능한 목표 제안), 토큰 수, created_at이 있습니다. 답변이 실패하면 대화는 삭제되고 질문은 집계되지 않습니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/ask.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/ask/:id.json 질문 대화와 그 메시지 삭제 assistant_conversations_delete

Ask 대화 하나와 모든 메시지를 즉시 영구 삭제합니다. 되돌릴 수 없습니다. 대화 ID는 assistant_conversations_list에서 가져오세요. 대화는 시작한 멤버만 보고 삭제할 수 있습니다. analytics.read와 site_id가 필요합니다. 삭제된 대화 요약(id, site_id, title, 타임스탬프)을 반환합니다. 이번 달에 이미 집계된 AI 질문 횟수는 환불되지 않습니다.

권한: analytics.read

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/ask/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/ask.json 사이트의 질문 대화 목록 보기 assistant_conversations_list

한 사이트에서 로그인한 멤버의 Ask 대화를 최근 업데이트순으로 나열합니다. 다른 멤버의 대화는 절대 보이지 않습니다. assistant_conversations_get, assistant_ask_followup, assistant_conversations_delete에 쓸 대화 ID를 찾을 때 사용하세요. 각 항목에는 id, site_id, title(첫 질문, 80자로 잘림), created_at, updated_at, expires_at이 있으며 메시지는 없습니다. page와 per_page(최대 100)로 페이지를 나눕니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/ask.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/ask/:id.json 질문 대화: 질문, 답변, 그 근거가 된 쿼리와 차트 assistant_conversations_get

Ask 대화 하나를 전체 메시지 기록과 함께 반환합니다. 대화 ID는 assistant_conversations_list 또는 assistant_ask의 결과에서 가져오세요. 필드는 id, site_id, title, created_at, updated_at, expires_at(마지막 메시지 30일 후, 이후 대화는 삭제됨), messages입니다. 각 메시지에는 role(user 또는 assistant), content, queries(어시스턴트가 실행한 분석 쿼리), chart(null 가능), goal_draft(null 가능), input_tokens와 output_tokens(null 가능한 정수)가 있습니다. 대화를 시작한 멤버만 읽을 수 있습니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/ask/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/ask/:ask_conversation_id/messages.json 대화에서 추가 질문하기 (월간 AI 질문 한도에 포함됩니다). 답변을 반환합니다. assistant_ask_followup

기존 Ask 대화 안에서 후속 질문을 합니다. 어시스턴트가 이전 질문과 답변을 맥락으로 유지합니다. 새 대화를 시작하려면 assistant_ask를 대신 사용하세요. conversation_id는 assistant_conversations_list에서 가져오세요. 어시스턴트가 읽기 전용 분석 쿼리를 실행하므로 호출에 수 초가 걸릴 수 있습니다. 각 질문은 워크스페이스의 월간 AI 질문 허용량(Free 5회, Pro 20회, Business 100회)에서 차감되며, 다 쓰면 한도 오류로 실패합니다. 질문은 최대 2,000자입니다. 전체 대화가 아니라 새 어시스턴트 메시지만 id, role, content(답변), queries(실행한 정확한 쿼리), chart(null 가능), goal_draft(null 가능), input_tokens, output_tokens, created_at과 함께 반환합니다. analytics.read가 필요하며 본인의 대화에서만 작동합니다.

권한: analytics.read

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/ask/:ask_conversation_id/messages.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

역할

POST /workspaces/:workspace_id/roles.json 사용자 지정 역할 만들기 roles_create

멤버에게 invitations_create 또는 members_update에서 role custom과 역할의 id를 custom_role_id로 사용해 부여할 수 있는, 이름이 있는 권한 집합인 사용자 지정 역할을 만듭니다. Business 요금제와 members.manage가 필요합니다. permissions에는 허용된 값(analytics.read, analytics.export, content.write, sites.manage, uptime.manage, members.manage, tokens.manage, billing.manage, workspace.manage) 중 최소 하나의 이름을 나열해야 하며, 본인이 가지지 않은 권한은 포함할 수 없습니다. 역할을 반환합니다(필드는 roles_list 참고).

권한: members.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/roles.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /workspaces/:workspace_id/roles/:id.json 사용자 지정 역할 삭제 (사용 중이 아니어야 함) roles_delete

사용자 지정 역할을 삭제합니다. 되돌릴 수 없으며, 어떤 멤버나 대기 중인 초대가 아직 그 역할을 사용하는 동안에는 실패하므로, 먼저 members_update로 그 사람들을 다른 역할로 옮기세요(members_list로 찾기). 내장 역할은 삭제할 수 없습니다. ID(uuid)는 roles_list에서 가져옵니다. members.manage가 필요합니다. 삭제된 역할을 반환합니다.

권한: members.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/roles/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/roles.json 사용자 지정 역할 목록 보기 roles_list

워크스페이스의 사용자 지정 역할을 이름순으로 나열합니다. 사용자 지정 역할은 권한을 원하는 이름으로 묶는 Business 요금제 기능이며, 내장 역할(owner, admin, editor, analyst, viewer, billing)은 여기에 나열되지 않습니다. 각 역할에는 id(uuid, invitations_create와 members_update에서 custom_role_id로 사용), name, permissions(analytics.read, content.write, members.manage 같은 이름), members(그 역할을 가진 멤버 수), created_at이 있습니다. 일부 사이트로 제한된 호출자는 본인의 범위 내 역할만 볼 수 있습니다.

권한: member

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/roles.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/roles/:id.json 사용자 지정 역할 수정 roles_update

사용자 지정 역할의 이름을 바꾸거나 전체 권한 목록을 교체하거나 둘 다 합니다. 보낸 입력만 변경되며, permissions는 기존 목록에 더하지 않고 교체합니다. 변경은 그 역할을 가진 모든 멤버와 대기 중인 초대에 즉시 적용됩니다. 권한을 모두 가지고 있는 역할만 편집할 수 있으며, 일부 사이트로 제한된 호출자는 해당 역할 보유자의 모든 사이트에 대한 범위가 필요합니다. members.manage가 필요합니다. ID(uuid)는 roles_list에서 가져옵니다. 업데이트된 역할을 반환합니다.

권한: members.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/roles/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

요금제

GET /plans.json 요금제, 가격, 한도 목록 보기 plans_list

공개 요금제(free, pro, business, enterprise)를 한도와 가격 티어와 함께 나열하므로, billing_checkout, billing_preview, billing_change_plan에 사용할 유효한 값을 고를 수 있습니다. 각 요금제에는 name, events(포함된 월간 이벤트, 티어제 또는 맞춤 요금제는 null), badge_bonus(배지로 얻는 추가 월간 이벤트, Free에만 해당하며 그 외에는 null), limits(사이트, 멤버 자리, 월 단위 기록 보관, 사이트당 목표, AI 질문, 시간당 API 요청 같은 요금제 한도의 객체), tiers(각각 월간 이벤트와 VAT 또는 판매세를 포함한 월간 및 연간 가격으로 USD 정수), contact_sales(맞춤 요금제는 true)가 있습니다. meta 객체에는 currency, 연간 요금에 대한 설명, counted(과금되는 이벤트로 집계되는 것), not_counted가 추가됩니다. 워크스페이스 하나의 자체 요금제는 billing_get을 사용하세요. 공개이며 인증이 필요 없습니다.

권한: public

예시
curl https://privatusanalytics.com/plans.json

워크스페이스

GET /workspaces/:workspace_id/white_label.json 화이트 라벨 브랜드 조회 white_label_get

워크스페이스의 화이트 라벨 브랜딩을 반환합니다. 필드는 workspace_id(ws_...), brand_name, brand_logo_url, brand_color(#06755b 같은 16진수 색상)이며 설정되지 않았으면 각각 null이고, hide_branding, available(요금제에 화이트 라벨이 포함되면 true이며 Business 이상), active(브랜딩이 설정되어 적용 중이면 true)입니다. 브랜딩은 공유 대시보드, 임베드, 상태 페이지, 이메일 리포트에서 Privatus Analytics를 대체합니다. workspace.manage가 필요합니다.

권한: workspace.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/white_label.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/white_label.json 공유 대시보드와 이메일 리포트의 화이트 라벨 브랜드 설정 (Business) white_label_update

워크스페이스의 화이트 라벨 브랜딩을 설정합니다. Business 요금제 전용이며, 아니면 요금제 오류로 실패합니다. 보낸 입력만 변경되며, 빈 문자열은 brand_name, brand_logo_url 또는 brand_color를 지웁니다. brand_logo_url은 이미지의 https URL이어야 하고 brand_color는 #06755b 같은 16진수 색상이어야 합니다. hide_branding true는 공유 대시보드, 임베드, 상태 페이지에서 Privatus Analytics 링크를, 이메일 리포트에서 로고를 제거합니다. 변경은 기존 공유 링크에 즉시 적용됩니다. workspace.manage가 필요합니다. 브랜딩을 반환합니다(white_label_get 참고).

권한: workspace.manage

예시
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/white_label.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/security.json 워크스페이스 보안 설정 조회 workspace_security_get

워크스페이스 보안 정책을 반환합니다. 필드는 workspace_id(ws_...), enforce_2fa(멤버가 2단계 인증을 사용해야 함), login_methods(password, magic_link, passkey, google, github, sso 중 허용된 방법), session_ttl_hours(이 시간이 지나면 로그아웃, 제한이 없으면 null), app_ip_allowlist(앱과 API를 사용할 수 있는 IP 또는 CIDR 대역, 비어 있으면 어디서든 가능), support_access_until(Privatus Analytics 지원팀이 워크스페이스를 볼 수 있는 시한의 ISO 8601 시각, 접근이 부여되지 않았으면 null)입니다. workspace.manage가 필요합니다.

권한: workspace.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/security.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/security.json 워크스페이스 보안 설정 수정 (2FA, 로그인 방법, 세션 유효 기간, IP 허용 목록, 지원 접근) workspace_security_update

워크스페이스 보안 정책을 변경하며, 보낸 입력만 반영됩니다. enforce_2fa true는 모든 멤버가 2단계 인증을 사용하도록 요구하며 Business 요금제가 필요합니다. login_methods는 허용 목록을 password, magic_link, passkey, google, github, sso의 값으로 교체하며, 방법을 제거하면 멤버의 기억된 로그인이 로그아웃되므로 다시 로그인해야 합니다. session_ttl_hours는 해당 시간이 지나면 멤버를 로그아웃시킵니다(0이면 제한 없음). app_ip_allowlist는 앱과 API에 접근할 수 있는 IP 또는 CIDR 대역의 목록을 교체하며(Business 요금제, 빈 목록은 어디서든 가능) 호출자의 IP를 제외하게 되면 거부되므로 스스로 접근을 막을 수는 없습니다. support_access true는 Privatus Analytics 지원팀이 7일간 워크스페이스를 볼 수 있게 하고 false는 그 접근을 철회합니다. workspace.manage가 필요합니다. 정책을 반환합니다(workspace_security_get 참고).

권한: workspace.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/security.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces.json 워크스페이스 만들기 (본인이 소유자가 됨) workspaces_create

권한: member · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /workspaces/:id.json 워크스페이스와 모든 사이트 삭제 (소유자 전용, 구독도 해지됨) workspaces_delete

워크스페이스를 모든 사이트와 함께 삭제합니다. 소프트 삭제이며 모든 것이 즉시 사라지고 7일 후에 영구적으로 삭제되므로 되돌릴 수 없는 것으로 간주하세요. 소유자만 할 수 있으며 confirm은 워크스페이스의 정확한 이름이어야 합니다(대소문자 구분). 진행 중인 유료 구독이 먼저 즉시 취소되며, 그 취소가 실패하면 아무것도 삭제되지 않습니다. 워크스페이스에서 대기 중인 사이트 이전은 취소됩니다. 멤버는 접근 권한을 잃습니다. 이름을 읽으려면 workspaces_get을 사용하세요. workspace.manage와 owner 역할이 필요합니다. 워크스페이스를 반환합니다.

권한: workspace.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/workspaces/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces.json 내 워크스페이스 목록 보기 workspaces_list

호출자가 속한 워크스페이스를 이름순으로 나열합니다. API 토큰이나 MCP 연결은 발급된 워크스페이스 하나만 볼 수 있습니다. 각 항목에는 id(ws_..., 대부분의 도구에서 workspace_id로 사용), name, timezone, currency, plan, plan_events, subscription_status, role(호출자의 역할)이 있습니다. 이어서 워크스페이스 ID로 sites_list를 호출해 사이트 ID를 찾으세요. 워크스페이스는 앱에서만 만들 수 있습니다.

권한: member

예시
curl https://privatusanalytics.com/workspaces.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:id.json 워크스페이스 조회 workspaces_get

공개 ID(ws_..., workspaces_list에서 가져옴)로 워크스페이스 하나를 반환합니다. 필드는 id, name, timezone(IANA 이름), currency(ISO 4217), plan(free, pro, business 또는 enterprise), plan_events(요금제의 월간 이벤트 허용량), subscription_status(none, trialing, active, past_due, paused 또는 canceled), role(그 안에서의 호출자 역할), created_at입니다. 전체 결제 세부 정보는 billing_get을, 이번 달 사용량은 billing_usage를 사용하세요. 모든 멤버가 읽을 수 있습니다.

권한: member

예시
curl https://privatusanalytics.com/workspaces/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:id.json 워크스페이스 설정 수정 workspaces_update

워크스페이스의 이름, 기본 시간대 또는 기본 통화를 변경하며, 보낸 입력만 반영됩니다. timezone은 Europe/Berlin 같은 IANA 이름이고 currency는 3자리 ISO 4217 코드입니다. 이는 새 사이트의 기본값이며 기존 사이트는 바뀌지 않습니다(그것들은 sites_update 사용). workspace.manage가 필요합니다. 워크스페이스를 반환합니다(workspaces_get 참고).

권한: workspace.manage

예시
curl -X PATCH https://privatusanalytics.com/workspaces/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

웨어하우스 동기화

POST /workspaces/:workspace_id/warehouses.json 웨어하우스 대상 추가 warehouse_destinations_create

매일의 원시 이벤트를 받는 웨어하우스 대상을 추가합니다(Business 요금제 전용). 매일 02:00 UTC에 전날(UTC 기준)이 업로드되고, 첫 실행은 다음 02:00 UTC이며, 실패한 실행은 한 시간 후 재시도됩니다. kind를 반드시 지정해야 하며 필수 설정을 결정합니다. s3(endpoint를 통한 GCS, R2, MinIO 포함)는 bucket, access_key_id, secret_access_key가 필요하고 region, prefix, endpoint(https, 공개 호스트만)는 선택입니다. bigquery는 service_account_json, dataset, table이 필요하고 project_id는 선택입니다. snowflake는 account, user, private_key(PEM RSA), database, schema, table이 필요하고 warehouse와 role은 선택입니다. azure는 sas_url(쓰기 권한이 있는 https blob 컨테이너 SAS 링크)이 필요하고 prefix는 선택입니다. 시크릿(secret_access_key, service_account_json, private_key, sas_url)은 쓰기 전용이며 반환되지 않습니다. site_ids는 사이트(pa_... ID)를 제한하고, 비어 있으면 모든 사이트를 뜻하며, 일부 사이트로 제한된 멤버나 토큰은 해당 사이트를 지정해야 합니다. 이벤트 속성은 내보내기에 안전하다고 표시된 경우에만 전송됩니다(event_properties_list 참고). workspace.manage 권한이 필요합니다. id(whd_...), 가려진 target, configured(채워진 설정의 이름)가 있는 대상을 반환합니다.

권한: workspace.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/warehouses.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /warehouses/:id.json 웨어하우스 대상 삭제 warehouse_destinations_delete

웨어하우스 대상을 삭제해서 더 이상 아무것도 전송되지 않게 합니다. 이미 업로드된 데이터는 버킷이나 웨어하우스에 남으며, 되돌릴 수 없지만 대상을 다시 추가할 수는 있습니다(기록은 자동으로 다시 전송되지 않음). 아직 대기 중인 수동 동기화는 회수되지 않습니다. ID는 warehouse_destinations_list에서 가져옵니다. workspace.manage 권한이 필요합니다. 삭제된 대상을 반환합니다.

권한: workspace.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/warehouses/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/warehouses.json 웨어하우스 대상 목록 보기 warehouse_destinations_list

워크스페이스의 웨어하우스 대상을 이름순으로 나열하며, 선택적으로 한 종류(s3, bigquery, snowflake 또는 azure)만 나열합니다. 일부 사이트로 제한된 멤버나 토큰은 모든 사이트가 본인의 것 중에 있는 대상만 볼 수 있으며, 모든 사이트를 전송하는 대상은 숨겨집니다. page와 per_page(최대 100)로 페이지를 나눕니다. 각 항목은 warehouse_destinations_get에 설명된 필드를 가집니다. workspaces_list의 workspace_id와 workspace.manage 권한이 필요합니다.

권한: workspace.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/warehouses.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /warehouses/:id.json 웨어하우스 대상 조회 (비밀 값 제외) warehouse_destinations_get

자격 증명 없이 웨어하우스 대상 하나를 반환합니다. 필드는 id(whd_...), kind(s3, bigquery, snowflake 또는 azure), name, target(s3://bucket/prefix 같은 가려진 요약), configured(채워진 설정의 이름이며 시크릿은 이름만 표시됨), site_ids(비어 있으면 모든 사이트), schedule(daily), schema_version(전송되는 행 레이아웃), last_run_at, next_run_at, last_error(마지막 실행이 성공했으면 null), created_at입니다. ID는 warehouse_destinations_list에서 가져옵니다. 동기화가 어떻게 되었는지는 warehouse_destinations_sync 후에 last_error를 확인하세요.

권한: workspace.manage

예시
curl https://privatusanalytics.com/warehouses/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /warehouses/:id/sync.json 하루치 동기화를 지금 대기열에 추가 warehouse_destinations_sync

일일 일정 밖에서, 대상으로 UTC 기준 하루치 원시 이벤트를 즉시 업로드하도록 대기열에 넣습니다. Business 요금제 전용입니다. date(YYYY-MM-DD)는 UTC 기준 오늘 이전이어야 하며 기본값은 어제입니다. 대상의 모든 사이트에 대해 해당 날짜를 업로드하므로 이미 전송된 날짜를 동기화하지 않도록 하세요. 수동 동기화는 워크스페이스당 시간당 30회로 요청 횟수가 제한됩니다. 호출은 대상과 함께 바로 202를 반환하고 업로드는 백그라운드에서 실행됩니다. 결과를 보려면 warehouse_destinations_get을 폴링하면서 last_run_at과 last_error를 읽으세요. ID는 warehouse_destinations_list에서 가져옵니다. workspace.manage 권한이 필요합니다.

권한: workspace.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/warehouses/:id/sync.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
PATCH /warehouses/:id.json 웨어하우스 대상 수정 (비워 둔 비밀 값은 유지됨) warehouse_destinations_update

웨어하우스 대상을 변경합니다(Business 요금제 전용). 보낸 입력만 변경되며 kind는 바꿀 수 없습니다. 빈 시크릿은 저장된 값을 유지하므로 자격 증명을 다시 보내지 않고도 다른 설정을 편집할 수 있습니다. 설정은 warehouse_destinations_create와 같이 대상의 kind에 맞게 검증됩니다. site_ids를 보내면 사이트 목록이 교체됩니다. 대상이 바뀌면(다른 버킷, 데이터셋, 테이블, 데이터베이스 등) 끝나지 않은 날짜의 진행 상황이 처음부터 다시 시작되므로, 해당 날짜는 새 위치로 다시 전송됩니다. ID는 warehouse_destinations_list에서 가져옵니다. workspace.manage 권한이 필요합니다. 업데이트된 대상을 반환합니다.

권한: workspace.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X PATCH https://privatusanalytics.com/warehouses/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

웹사이트

GET /blog.json 블로그 게시물을 나열합니다 blog_list

Privatus Analytics 블로그의 게시물을 최신순으로 나열하며, slug, title, kicker, rubric(한 문장 요약), description, path, 날짜가 있고 본문은 없습니다. 하나를 읽으려면 slug로 blog_get을 사용하세요. page와 per_page로 페이지를 나눕니다(최대 100). 공개이며 인증이 필요 없습니다.

권한: public

예시
curl https://privatusanalytics.com/blog.json
GET /blog/:slug.json 블로그 게시물을 읽습니다(Markdown과 HTML) blog_get

slug(blog_list에서 가져오며 /blog/<slug>의 마지막 부분)로 블로그 게시물 하나를 제목들, Markdown 본문, 렌더링된 HTML과 함께 반환합니다. 게시물은 영어로 작성됩니다. 공개이며 인증이 필요 없습니다.

권한: public

예시
curl https://privatusanalytics.com/blog/:slug.json
GET /changelog.json 변경 내역 항목 목록 보기 changelog_list

게시된 제품 업데이트를 최신순으로 제공합니다. /changelog.rss에서 RSS로도 받을 수 있습니다.

권한: public

예시
curl https://privatusanalytics.com/changelog.json
POST /contact.json Privatus Analytics 팀에 메시지 보내기 contact_create

브라우저 클라이언트는 Cloudflare Turnstile 토큰을 `cf-turnstile-response`로 보냅니다. API 토큰을 쓰는 요청에는 필요하지 않습니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/contact.json \
  -H "Content-Type: application/json" -d '{…}'
POST /newsletter/confirm.json 뉴스레터 구독 확인 (서명된 토큰) newsletter_confirm

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/newsletter/confirm.json \
  -H "Content-Type: application/json" -d '{…}'
POST /newsletter.json 이메일을 뉴스레터에 구독 newsletter_subscribe

브라우저 클라이언트는 Cloudflare Turnstile 토큰을 `cf-turnstile-response`로 보냅니다. API 토큰을 쓰는 요청에는 필요하지 않습니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/newsletter.json \
  -H "Content-Type: application/json" -d '{…}'
POST /newsletter/unsubscribe.json 서명된 링크 토큰으로 구독 해지 newsletter_unsubscribe

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/newsletter/unsubscribe.json \
  -H "Content-Type: application/json" -d '{…}'
GET /pricing.json 요금제, 가격, 요금제 한도 조회 pricing_get

가격 페이지와 같은 데이터입니다: 이벤트 구간표, 모든 요금제 한도, 이벤트로 집계되는 항목. events를 넘기면 해당하는 티어를 받습니다.

권한: public

예시
curl https://privatusanalytics.com/pricing.json
GET /status.json 현재 시스템 상태 조회 status_get

데이터베이스, Redis, 백그라운드 작업 상태이며 최대 15초마다 확인됩니다.

권한: public

예시
curl https://privatusanalytics.com/status.json
GET /tools/header-checker.json 분석을 위한 페이지의 Referrer-Policy와 CSP 확인 tools_header_check

공개 페이지 하나를 가져와서 분석에 영향을 주는 응답 헤더를 확인합니다. 추적 데이터가 없거나 리퍼러가 이상해 보일 때 사용하세요. Referrer-Policy, Content-Security-Policy의 script-src 및 connect-src 지시문(Privatus Analytics가 데이터를 로드하고 전송할 수 있는지 여부), Permissions-Policy, Set-Cookie 헤더의 수를 살펴봅니다. url(최대 3번의 리디렉션 후의 최종 URL), status(HTTP 상태), findings를 반환하며, findings에는 각각 check, value(null 가능), level(ok, warn 또는 info), 쉬운 말로 된 설명이 있습니다. URL은 http 또는 https이면서 공개여야 하고, 비공개 및 내부 주소는 거부되며, 처음 1MB만 읽고, 가져오기는 5초 후 시간 초과됩니다. 클라이언트당 분당 10회로 요청 횟수가 제한됩니다. 공개이며 인증이 필요 없습니다.

권한: public

예시
curl https://privatusanalytics.com/tools/header-checker.json
GET /tools/privacy-policy-generator.json Privatus Analytics용 개인정보 처리방침 문단 초안 작성 tools_privacy_policy

Privatus Analytics가 고객의 사이트에서 데이터를 수집하는 방식(쿠키 없음, 개인정보 저장 없음, 국가 단위 위치만)을 설명하는 개인정보처리방침 문단 초안을 작성합니다. 출발점일 뿐이며 법률 자문이 아닙니다. 입력은 site_name(최대 120자), contact_email(선택, 연락처 문장을 추가), honors_gpc(기본값 true, Do Not Track과 Global Privacy Control을 존중한다는 문장을 추가)입니다. site_name, paragraphs(문자열 배열), text(문단을 빈 줄로 이은 것으로, 이름 뒤 괄호 안에 Privatus Analytics 주소가 들어감), html(문단을 <p> 요소로 만든 것으로, 이름이 단순한 링크가 됨)을 반환합니다. 텍스트는 요청의 언어로 작성되며 기본값은 영어입니다. 어떤 계정에도 변경을 가하지 않습니다. 공개이며 인증이 필요 없습니다.

권한: public

예시
curl https://privatusanalytics.com/tools/privacy-policy-generator.json
GET /tools/qr-code.json QR 코드를 SVG로 생성 tools_qr_code

인쇄물이나 포스터용으로 SVG 이미지 QR 코드를 생성합니다. tools_utm_builder의 UTM 파라미터가 있는 링크와 함께 사용하세요. 입력은 text(URL 또는 텍스트, 최대 1,000자)와 level(오류 정정 l, m, q 또는 h, 기본값 m이며 높을수록 손상에 더 잘 견디지만 더 촘촘한 코드가 필요)입니다. text, level, size(한 변의 모듈 수), svg(흰 바탕에 검은색의 독립 SVG 문서)를 반환합니다. 선택한 level에 비해 너무 긴 텍스트는 거부됩니다. 추적되는 짧은 링크의 QR 코드는 대신 links_qr을 사용하세요. 공개이며 인증이 필요 없습니다.

권한: public

예시
curl https://privatusanalytics.com/tools/qr-code.json
GET /tools/tracker-scanner.json 페이지의 쿠키와 알려진 트래커 목록 보기 tools_tracker_scan

공개 페이지 하나를 가져와서 페이지가 설정하는 쿠키와 참조하는 알려진 서드파티 트래커를 나열합니다. 동의 방식을 고르기 전에 페이지가 무엇을 로드하는지 빠르게 확인할 때 사용하세요. HTML과 응답 헤더만 정적으로 스캔하며 JavaScript를 실행하지 않으므로, 스크립트가 설정하는 쿠키와 나중에 태그 관리자가 로드하는 태그는 놓칩니다. url(최대 3번의 리디렉션 후의 최종 URL), status, truncated(처음 1MB만 읽었으면 true), cookies(name, domain, path, expires, secure, http_only, same_site이며 값은 반환되지 않음), trackers(name, category, match, evidence이며 category는 advertising, analytics, session_recording, tag_manager, marketing 또는 privacy_analytics), third_party_hosts(다른 사이트의 정렬된 호스트 이름)를 반환합니다. URL은 공개 http 또는 https여야 하고 가져오기 제한 시간은 5초이며, 호출은 클라이언트당 분당 10회로 제한됩니다. 공개이며 인증이 필요 없습니다.

권한: public

예시
curl https://privatusanalytics.com/tools/tracker-scanner.json
GET /tools/utm-builder.json UTM 매개변수가 포함된 캠페인 URL 만들기 tools_utm_builder

UTM 파라미터가 있는 캠페인 URL을 만들고 흔한 실수를 알려 줍니다. 입력은 url(http 또는 https여야 함), source, medium, campaign(모두 필수)과 선택 사항인 term, content입니다. URL에 이미 있는 utm_ 파라미터는 교체되고 다른 쿼리 파라미터는 유지됩니다. url(완성된 링크), params(추가된 utm_ 값이며 빈 값은 제외), warnings(대문자, 공백, 이메일 주소나 긴 숫자처럼 보이는 텍스트가 있는 값에 대한 문자열로, URL에는 절대 넣어서는 안 됨)를 반환합니다. 같은 캠페인이 리포트에서 여러 행으로 나뉘지 않도록 공백 없는 소문자 값을 사용하세요. 아무것도 저장하지 않습니다. 공개이며 인증이 필요 없습니다.

권한: public

예시
curl https://privatusanalytics.com/tools/utm-builder.json
POST /waitlist.json 대기자 명단 등록 (EU 호스팅) waitlist_join

브라우저 클라이언트는 Cloudflare Turnstile 토큰을 `cf-turnstile-response`로 보냅니다. API 토큰을 쓰는 요청에는 필요하지 않습니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/waitlist.json \
  -H "Content-Type: application/json" -d '{…}'

웹훅

GET /workspaces/:workspace_id/webhooks/:webhook_id/deliveries.json 웹훅의 전송 기록 목록 보기 webhook_deliveries_list

웹훅 하나로 전송된 전달 내역을 최신순으로, 페이지를 나누어 나열합니다(경로에는 webhook_id 사용). 각 항목에는 id(whd_...), event, status(pending, 2xx 응답이면 succeeded, 또는 failed), status_code(응답이 오지 않았으면 null), error(타임아웃 같은 짧은 사유, 그 외에는 null), attempt(지금까지의 시도 횟수), duration_ms, payload(전송된 JSON 데이터), response_body(응답의 처음 2000자), delivered_at, created_at이 있습니다. status를 succeeded 또는 failed로 필터링합니다. 엔드포인트를 디버깅할 때 사용하고, 하나를 다시 보내려면 webhook_deliveries_redeliver를 사용하세요.

권한: workspace.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:webhook_id/deliveries.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/webhooks/:webhook_id/deliveries/:id/redeliver.json 전송 다시 보내기 webhook_deliveries_redeliver

과거 전달의 페이로드를 같은 엔드포인트로 새 전달로 다시 보냅니다(ID whd_..., webhook_deliveries_list에서 가져옴). 고객의 URL로 HTTP 요청을 보내므로, 수신자가 같은 이벤트를 두 번 처리할 수 있습니다. 워크스페이스별로 요청 횟수가 제한됩니다(webhooks_test와 공유). 대기열에 들어가므로 응답은 status pending인 새 전달이며, 결과는 webhook_deliveries_list를 읽어서 확인하세요.

권한: workspace.manage

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:webhook_id/deliveries/:id/redeliver.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/webhooks.json 웹훅 엔드포인트 추가 webhooks_create

워크스페이스 이벤트에 대해 POST된 JSON을 받는 엔드포인트를 추가합니다(경로에는 workspace_id 사용). url은 공개 https 주소여야 하며 비공개 및 내부 주소는 거부됩니다. events는 alert.triggered, alert.resolved, goal.completed_threshold, uptime.down, uptime.up, export.ready, import.completed, import.failed, site.created, site.deleted, member.added, usage.threshold, site_audit.completed 중에서 고른 필수 목록입니다. enabled의 기본값은 true입니다. 서명 시크릿(whsec_...)이 생성되어 응답으로 반환되며, 각 전달에는 타임스탬프와 그 시크릿으로 만든 본문의 HMAC-SHA256이 담긴 Privatus-Signature 헤더가 있습니다. 실패한 전달은 백오프와 함께 재시도되며 연속 20회 실패하면 엔드포인트가 비활성화됩니다. 샘플을 보내려면 webhooks_test를 사용하세요.

권한: workspace.manage

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/webhooks.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /workspaces/:workspace_id/webhooks/:id.json 웹훅 삭제 webhooks_delete

웹훅 엔드포인트와 전체 전달 로그를 삭제합니다. 되돌릴 수 없으며 대기 중인 재시도가 중단됩니다. 대신 일시 중지하려면 enabled를 false로 한 webhooks_update를 사용하세요. ID(wh_...)는 webhooks_list에서 가져옵니다. 삭제된 웹훅을 반환합니다.

권한: workspace.manage

예시
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/webhooks.json 웹훅 목록 보기 webhooks_list

워크스페이스의 발신 웹훅 엔드포인트를 오래된 순으로 나열합니다(경로에는 workspace_id 사용). 각 엔드포인트에는 id(wh_...), url, events(수신하는 이벤트 이름), enabled, status(active, 최근 실패 후 failing, 또는 disabled), secret(서명 시크릿이며 민감한 정보로 취급), consecutive_failures, last_success_at, last_failure_at, created_at이 있습니다. workspace.manage 권한이 필요합니다. 원시 이벤트를 본인의 서버로 보내는 용도입니다. 사람에게 알리려면 notification_channels_list를 사용하세요. 무엇이 전송되었는지는 webhook_deliveries_list를 사용하세요.

권한: workspace.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/webhooks/:id.json 웹훅 조회 webhooks_get

ID(wh_..., webhooks_list에서 가져옴)로 웹훅 엔드포인트 하나를 반환하며, 각 전달의 Privatus-Signature 헤더를 검증하는 데 쓰는 서명 시크릿(whsec_...)도 포함합니다. 필드는 url, events, enabled, status(active, failing 또는 disabled), secret, consecutive_failures, last_success_at, last_failure_at, created_at입니다. workspace.manage 권한이 필요합니다.

권한: workspace.manage

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/webhooks/:id/test.json 테스트 전송 보내기 webhooks_test

비활성화된 엔드포인트라도, 샘플 메시지가 담긴 webhook.test 전달을 엔드포인트 하나에 대기열로 넣으며, 고객의 URL로 HTTP 요청을 보냅니다. 워크스페이스별로 요청 횟수가 제한되며(webhook_deliveries_redeliver와 공유) 테스트는 재시도되지 않습니다. 전달은 백그라운드에서 전송되므로 응답은 status pending인 대기 중인 전달을 반환합니다. 잠시 후 webhook_deliveries_list를 읽어서 status_code, error, duration_ms, response_body를 확인하세요.

권한: workspace.manage

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id/test.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
PATCH /workspaces/:workspace_id/webhooks/:id.json 웹훅 수정 (이벤트, URL, 활성화, 시크릿 교체) webhooks_update

웹훅을 변경합니다(ID는 webhooks_list에서 가져옴). 보낸 입력만 변경됩니다. events를 보내면 전체 목록이 교체됩니다. 비활성화된 엔드포인트에 enabled true를 설정하면 실패 횟수가 초기화되며, 반복된 실패로 비활성화된 엔드포인트를 다시 켜는 방법입니다. rotate_secret true를 설정하면 새 서명 시크릿이 생성되어 응답에 표시되고, 이전 것은 즉시 작동을 멈추므로 수신자를 업데이트해야 합니다. url 규칙은 webhooks_create와 같습니다. 웹훅을 반환합니다.

권한: workspace.manage

예시
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

위젯

POST /sites/:site_id/testimonials/widgets/:id/copied.json 위젯의 붙여 넣는 HTML 임베드를 복사했음을 기록합니다 testimonial_widgets_mark_copied

붙여 넣은 HTML은 저절로 업데이트되지 않습니다. 이 호출 이후 testimonial_widgets_embed가 그 뒤로 위젯이 몇 번 바뀌었는지 알려 줍니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/copied.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/widgets.json 위젯을 만듭니다 testimonial_widgets_create

한 번의 호출로 위젯 전체를 보냅니다. 레이아웃과 옵션, 내용을 공급하는 것, 각 카드가 표시하는 것, 모양입니다. 생략한 항목은 기본값으로 시작하며, 비어 있는 스타일 설정은 브랜드 키트를 따릅니다. 붙여 넣을 코드를 받으려면 이어서 testimonial_widgets_embed를 호출하세요.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/widgets/:id.json 위젯을 휴지통으로 옮깁니다 testimonial_widgets_trash

복원될 때까지 임베드는 아무것도 렌더링하지 않고 공간도 차지하지 않습니다. 30일 뒤 영구 삭제됩니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/widgets/:id/duplicate.json 위젯을 모든 설정과 함께 복사합니다 testimonial_widgets_duplicate

새 ID와 이름 끝에 "copy"가 붙은 복사본을 만듭니다. 복사본은 자체 임베드 코드가 있으며 아직 어디에서도 실제로 확인되지 않았습니다. 원본은 변경되지 않습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/duplicate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/widgets/:id/embed.json 위젯의 임베드 코드와 무게를 가져옵니다 testimonial_widgets_embed

스크립트 코드(권장), 붙여 넣는 HTML, 프레임 코드, 공개 데이터의 주소를 반환하며, 로더 스크립트와 이 위젯의 측정된 크기도 포함됩니다. 붙여 넣는 HTML과 프레임은 모서리 팝업에서는 null입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/embed.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/widgets.json 사이트의 위젯을 나열합니다 testimonial_widgets_list

휴지통의 위젯은 나열되지 않습니다. 각 위젯에는 설정, 현재 표시하는 추천사 수, 최근 30일의 조회와 클릭, 실제로 처음 확인된 페이지가 포함됩니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/widgets/:id/installs.json 위젯이 실제로 확인된 페이지를 나열합니다 testimonial_widgets_installs

최대 50페이지이며 최신순입니다. 스크립트와 프레임만 감지할 수 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/installs.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/widgets/:id/restore.json 휴지통에서 위젯을 복원합니다 testimonial_widgets_restore

붙여 넣었던 모든 곳에서 다시 나타납니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/restore.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/widgets/:id.json 위젯 하나를 모든 설정, 표시 내용, 실제 사용 위치와 함께 가져옵니다 testimonial_widgets_get

빌더가 저장하는 모든 것입니다. 레이아웃과 옵션, 위젯의 내용을 공급하는 것(컬렉션, 저장된 보기, 태그 또는 직접 고른 목록), 각 카드가 표시하는 것, 스타일, 언어, 리뷰 마크업이며, 실제로 확인된 위치와 현재 표시하는 추천사 수도 포함합니다. 휴지통의 위젯은 404로 응답합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/widgets/:id.json 위젯을 변경합니다 testimonial_widgets_update

보낸 입력만 변경됩니다. 캐시된 사본이 지워지므로 저장한 변경은 코드를 건드리지 않고도 위젯이 있는 모든 사이트에 반영됩니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

이메일 리포트

DELETE /recipients/:id.json 이메일 리포트에서 수신자 제거 email_report_recipients_delete

이메일 리포트에서 주소 하나를 제거합니다(수신자의 ID, email_report_recipients_list에서 가져옴). 해당 주소는 리포트를 받지 않게 되고 행이 삭제됩니다. 주소가 스스로 수신 거부했다면 그 거부는 기록에 남으므로, 제거해도 누군가가 다시 초대할 수 있게 되지는 않습니다. 여러 주소를 한 번에 바꾸려면 대신 email_reports_update로 전체 목록을 보내세요. 제거된 수신자를 반환합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/recipients/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /reports/:report_id/recipients.json 이메일 리포트의 수신자와 상태 목록 보기 email_report_recipients_list

상태: active (리포트 수신), pending (초대됨, 아직 수락하지 않음), declined 또는 unsubscribed. 주소는 리포트의 수신자 목록에서 추가하거나 제거하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/reports/:report_id/recipients.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /recipients/:id/resend.json 대기 중인 리포트 초대 다시 보내기 email_report_recipients_resend

새 링크로 초대를 다시 보냅니다. 리포트당 주소별로 7일에 한 번 가능합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/recipients/:id/resend.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/reports.json 이메일 리포트 만들기 email_reports_create

하나 이상의 사이트를 다루는 예약 분석 이메일 리포트를 만듭니다(경로에는 workspace_id 사용). name과 site_ids(pa_... ID)는 필수입니다. frequency는 daily, weekly(기본값, 평일에 발송) 또는 monthly(매월 1일)이고, hour는 워크스페이스 시간대 기준 0에서 23까지의 시각(기본값 8), weekday는 일요일 0에서 토요일 6까지입니다(기본값 1, 주간 리포트에서만 사용). blocks는 kpis, chart, pages, sources, goals, campaigns, vitals, uptime, testimonials, subscriptions 중에서 내용을 고릅니다(기본값은 kpis, chart, pages, sources, goals, testimonials, subscriptions). subscriptions는 결제 제공자가 연결된 사이트에 대해 해당 기간의 MRR과 그 변동 요인을 보여 줍니다. recipients는 이메일 주소의 목록입니다(최대 50개). 워크스페이스 멤버는 즉시 활성화되고, 그 외의 주소는 pending 상태가 되어 초대 이메일을 받으며 수락한 후에만 리포트를 받습니다. 수신 거부한 주소는 거부됩니다. recipients를 생략하면 호출한 사용자가 추가됩니다. 활성화된 리포트에는 수신자가 최소 한 명 필요합니다. Free 요금제는 리포트 3개를 허용하고 유료 요금제는 무제한입니다. next_run_at이 포함된 리포트를 반환합니다. 미리 보려면 email_reports_send_test를 사용하세요.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/reports.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /reports/:id/deliveries.json 이메일 리포트의 발송 로그 email_reports_deliveries

이메일 리포트 하나의 발송 로그를 최신순으로, 페이지를 나누어 나열합니다. 각 항목에는 status(예약 발송이면 sent, test, failed 또는 skipped), recipients_count, error(실패 사유, 그 외에는 null), sent_at이 있습니다. status로 필터링합니다. 예약된 리포트가 발송되었는지 확인하거나 실패한 이유를 볼 때 사용하세요. 테스트 이메일을 보내려면 email_reports_send_test를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/reports/:id/deliveries.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE /reports/:id.json 이메일 리포트 삭제 email_reports_delete

이메일 리포트를 수신자와 발송 로그와 함께 영구 삭제합니다. 되돌릴 수 없으며 더 이상 이메일이 발송되지 않습니다. 리포트는 유지하면서 발송만 중단하려면 enabled를 false로 한 email_reports_update를 사용하세요. ID(rep_...)는 email_reports_list에서 가져옵니다. 삭제된 리포트를 반환합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/reports/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces/:workspace_id/reports.json 이메일 리포트 목록 보기 email_reports_list

워크스페이스의 예약된 이메일 리포트를 이름순으로, 페이지를 나누어 나열합니다(경로에는 workspace_id 사용). 각 리포트에는 id(rep_...), name, site_ids, frequency, hour, weekday, recipients(리포트의 모든 주소), recipient_details(각각의 id, email, status, invited_at, expires_at, confirmed_at), blocks, attach_pdf, intro, enabled, last_sent_at, next_run_at, created_at이 있습니다. frequency(daily, weekly 또는 monthly)로 필터링합니다. 일부 사이트로 제한된 호출자는 모든 사이트가 본인의 것인 리포트만 볼 수 있습니다. status가 active인 수신자만 실제로 리포트를 받습니다. 발송 로그는 email_reports_deliveries를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/workspaces/:workspace_id/reports.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /reports/:id/send_test.json 이메일 리포트를 테스트로 지금 보내기 email_reports_send_test

일정이나 last_sent_at을 바꾸지 않고, 리포트를 지금 바로 주소 하나로 테스트로 발송합니다. 실제 이메일이 발송되므로 사용자가 원할 때만 사용하세요. recipient의 기본값은 호출한 사용자이며, 호출자 본인, 워크스페이스의 다른 멤버 또는 리포트의 활성 수신자만 가능합니다. 다른 주소를 넣으면 테스트는 대신 호출자에게 갑니다. 테스트 발송은 워크스페이스별, 외부 주소별로 요청 횟수가 제한되며 거부된 발송은 요청 제한 오류를 반환합니다. status(test, 또는 실패 시 failed이며 사유는 error에), recipients_count, sent_at이 포함된 발송 내역을 반환합니다. 전체 로그는 email_reports_deliveries를 사용하세요.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/reports/:id/send_test.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /reports/:id.json 이메일 리포트 조회 email_reports_get

ID(rep_..., email_reports_list에서 가져옴)로 이메일 리포트 하나를 반환합니다. 응답에는 name, site_ids, frequency, hour, weekday, recipients, 각 주소와 수신 동의 상태가 있는 recipient_details, blocks, attach_pdf, intro, enabled, last_sent_at, next_run_at(UTC 타임스탬프)이 있습니다. recipients에는 대기 중인 주소를 포함한 모든 주소가 나열되며, recipient_details에서 status가 active인 주소만 리포트를 받습니다. 무엇이 발송되었는지는 email_reports_deliveries를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/reports/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /reports/:id.json 이메일 리포트 수정 email_reports_update

이메일 리포트를 변경합니다(ID는 email_reports_list에서 가져옴). 보낸 입력만 변경됩니다. recipients를 보내면 전체 목록이 교체됩니다. 제외한 주소는 제거되고, 새 주소는 email_reports_create와 같은 수신 동의 규칙을 따르며(멤버는 즉시 활성화, 그 외에는 초대 이메일 발송), 리포트에 이미 있던 주소는 상태를 유지합니다. frequency, hour, weekday 또는 enabled를 바꾸면 next_run_at이 다시 계산됩니다. 일시 중지하려면 enabled를 false로 설정하세요. 수신 동의 상태를 보려면 email_report_recipients_list를, 개별 주소를 관리하려면 email_report_recipients_resend 또는 email_report_recipients_delete를 사용하세요.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/reports/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /reports/invites/:token/accept.json 리포트 초대 수락 report_invites_accept

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/reports/invites/:token/accept.json \
  -H "Content-Type: application/json" -d '{…}'
POST /reports/invites/:token/decline.json 리포트 초대 거절 report_invites_decline

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/reports/invites/:token/decline.json \
  -H "Content-Type: application/json" -d '{…}'
POST /reports/resubscribe/:token.json 수신 거부 후 리포트 다시 받기 report_resubscribes_confirm

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/reports/resubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /reports/unsubscribe/:token/resubscribe.json 리포트를 다시 받을 수 있는 링크를 주소로 이메일 전송 report_resubscribes_create

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/reports/unsubscribe/:token/resubscribe.json \
  -H "Content-Type: application/json" -d '{…}'
POST /reports/unsubscribe/:token.json 이메일 리포트에서 주소 수신 거부 report_unsubscribes_create

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/reports/unsubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'

이메일 설정

POST /email/preferences/:token/unsubscribe.json 이메일 설정 링크의 토큰으로, 끌 수 있는 이메일을 이 주소로 모두 보내지 않게 합니다 email_preferences_unsubscribe_all

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/email/preferences/:token/unsubscribe.json \
  -H "Content-Type: application/json" -d '{…}'
POST /email/preferences/:token.json 이메일 설정 링크의 토큰으로 주소로 가는 이메일을 끄거나 켭니다 email_preferences_update

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/email/preferences/:token.json \
  -H "Content-Type: application/json" -d '{…}'

이벤트

GET /sites/:site_id/events/properties.json 최근 30일 동안 확인된 이벤트 속성 키 목록 보기 event_properties_list

최근 30일 동안 사용자 지정 이벤트가 가지고 있던 속성 키를 표시 설정과 함께 나열합니다. {key, events, display_name, hidden, export_safe}의 목록을 반환합니다. events는 해당 키를 가진 사용자 지정 이벤트 수이고(설정은 있지만 최근에 보이지 않은 키는 0), display_name은 이름 변경 값(없으면 null), hidden은 키가 리포트에서 숨겨져 있음을, export_safe는 개인정보가 없는 키로 표시되었음을 뜻합니다. 키는 최대 200개이며 많이 쓰인 순으로 반환됩니다. event를 전달하면 원시 이벤트 이름 하나에서 본 키만 볼 수 있습니다. 속성 값은 여기서 반환되지 않으므로, 값은 dimension이 prop:<key>인 stats_breakdown 또는 events_get을 사용하세요. 설정은 event_properties_update로 변경합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/events/properties.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/events/properties.json 이벤트 속성 키 이름 변경 또는 숨기기 event_properties_update

이벤트 속성 키 하나의 이름을 바꾸거나, 숨기거나, 내보내기 안전으로 표시합니다. 사이트 전체에 적용됩니다. 보낸 입력만 변경됩니다. key는 저장된 그대로의 키여야 합니다(소문자, 숫자, 밑줄, 최대 64자, 예를 들어 plan). display_name은 최대 64자의 라벨입니다(이름 변경을 제거하려면 빈 값으로 보내세요). hidden은 데이터는 유지한 채 리포트와 이벤트 상세 피벗에서 키를 제거합니다. export_safe는 키에 개인정보가 절대 들어 있지 않다고 선언하며, 그러면 키의 값이 원시 내보내기와 웨어하우스 동기화에 포함되므로 실제로 그럴 때만 설정하세요. 이름 변경과 숨김은 리포트를 읽을 때 적용되며 저장된 데이터를 다시 쓰지 않습니다. {key, display_name, hidden, export_safe}를 반환합니다. sites.manage 권한이 필요합니다. 키 목록은 event_properties_list로 확인하세요.

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/events/properties.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/events.json 이벤트와 그 기록 삭제 (백그라운드에서 실행되며 이름을 입력해 확인) events_delete

사용자 지정 이벤트와 그 전체 기록을 영구 삭제합니다. 되돌릴 수 없습니다. 안전 확인을 위해 원시 이벤트 이름을 name과 confirm에 두 번 보내야 합니다. 행이 백그라운드에서 배치로 제거되므로 HTTP 202와 함께 {name, status: queued}를 반환하며, 끝날 때까지 수치가 계속 바뀝니다. 이벤트는 즉시 숨겨지기도 하고, 삭제는 감사 로그에 기록됩니다. 페이지뷰는 영향을 받지 않습니다. 이벤트를 표시하지 않기만 하려면 데이터를 유지하는 hidden true의 events_update를 사용하세요. sites.manage 권한이 필요합니다. 이름은 events_list에서 가져오세요(이벤트 이름이 변경되었거나 병합된 경우 raw_names 필드 사용).

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/events.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/events.json 완료 수, 방문 수, 전환율, 처음 및 마지막 확인 시점이 포함된 이벤트 목록 보기 events_list

이벤트 탐색기입니다. 기간 내의 모든 사용자 지정 이벤트입니다. period, events, hidden을 반환합니다. 각 이벤트에는 name(이름 변경과 병합 후의 표시 이름), raw_names(트래커가 보낸 이름), completions, visits, conversion_rate(방문 대비 퍼센트, 0에서 100), revenue(소액 단위, 센트), first_seen과 last_seen(기간 내의 ISO 8601 타임스탬프), currency(수익 통화, 설정되지 않았으면 null)가 있습니다. hidden은 숨긴 이벤트를 {name, display_name}으로 나열합니다. 이름에 특정 텍스트가 포함된 이벤트만 남기려면 search를 사용하세요. 여기서 페이지뷰는 이벤트가 아닙니다. 이벤트 하나를 깊이 보려면 events_get을, 순위가 매겨진 페이지 목록은 dimension이 event인 stats_breakdown을 사용하세요. 공통 period, compare, filters, segment 입력을 받습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/events.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/events/merge.json 여러 이벤트를 하나의 표시 이름으로 병합 events_merge

여러 원시 이벤트 이름을 하나의 표시 이름으로 병합합니다. 예를 들어 signup_click과 signup_button을 Signup으로 합칩니다. 그러면 리포트에는 합산된 횟수의 이벤트 하나가 표시됩니다. 리포트를 읽을 때 적용되며 저장된 이벤트는 변경되거나 삭제되지 않습니다. names(원시 이름, 최소 하나)와 into(표시 이름)를 전달하세요. 병합된 이름마다 {name, display_name, hidden, currency, updated_at}인 설정 객체 하나를 반환합니다. 되돌리려면 이름에 대해 display_name을 비운 events_update를 호출하세요. sites.manage 권한이 필요합니다. 이름은 events_list(raw_names)에서 가져오세요.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/events/merge.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/events/detail.json 이벤트 하나: 차트, 속성 피벗, 숫자 속성 집계, 페이지, 소스 events_get

사용자 지정 이벤트 하나의 상세입니다. events_list에 표시된 그대로(이름 변경과 병합 후의 표시 이름) name을 전달하세요. period, name, raw_names(그 뒤에 있는 저장된 이름), interval, totals, setting, series, property_keys, pivot, numeric, pages, channels, referrers를 반환합니다. totals에는 completions, visits(이벤트를 발생시킨 방문), revenue(소액 단위, 센트), conversion_rate(기간 내 전체 방문 대비 퍼센트)가 있습니다. series는 시간 버킷별 completions입니다. setting에는 display_name, hidden, currency가 있습니다. property_keys는 본 속성 키를 나열합니다. properties(키 최대 3개)를 보내면 각 값 조합에 대한 {values, completions, visits} 행인 pivot을 상위 100개까지 받습니다. numeric은 숫자를 가진 속성의 합계, 평균 등의 수치를 줍니다. pages, channels, referrers는 이벤트가 발생한 상위 10개 위치이며 {value, completions, visits} 형태입니다. 모든 이벤트는 events_list를, 사이트 전체에서 한 속성은 dimension이 prop:<key>인 stats_breakdown을, 이름 변경은 events_update를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/events/detail.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/events/settings.json 이벤트 이름 변경, 숨기기 또는 숨기기 해제, 통화 설정 events_update

사용자 지정 이벤트 하나가 표시되는 방식을 변경합니다. display_name으로 이름을 바꾸거나, hidden으로 숨기거나 숨김을 해제하거나, 수익 통화를 설정합니다. name은 트래커가 보낸 원시 이벤트 이름입니다(events_list의 raw_names 참고). 보낸 입력만 변경됩니다. 빈 display_name은 이름 변경을 제거합니다. hidden은 데이터는 유지한 채 목록과 리포트에서 이벤트를 제거합니다. currency는 USD 같은 3자리 ISO 4217 코드이며 대문자로 저장됩니다. 리포트를 읽을 때 적용되며 저장된 이벤트를 다시 쓰지 않습니다. {name, display_name, hidden, currency, updated_at}를 반환합니다. 여러 이벤트를 합치려면 events_merge를, 데이터를 지우려면 events_delete를 사용하세요. sites.manage 권한이 필요합니다.

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/events/settings.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

제휴 프로그램

GET /account/affiliate/commissions.json 제휴 수수료 목록 보기 affiliate_commissions_list

수수료, 환불 및 지불 거절에 따른 회수와 그 취소를 최신순으로 보여 줍니다. 금액은 센트 단위입니다.

권한: member

예시
curl https://privatusanalytics.com/account/affiliate/commissions.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /account/affiliate/signup-box.json 제휴 가입 상자 코드와 결과 가져오기 affiliate_signup_box_get

선택한 테마에 맞는 가입 상자 임베드 코드(스크립트와 일반 iframe), 양식을 미리 채우는 속성, 스크립트가 페이지에서 발생시키는 이벤트, 그리고 상자의 수치(확인 대기 중인 가입, 확인된 가입, 결제 고객)를 제공합니다. 제휴 신청이 승인되기 전에는 available이 false입니다.

권한: member

예시
curl https://privatusanalytics.com/account/affiliate/signup-box.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /account/affiliate.json 제휴 상태, 추천 링크, 통계 조회 affiliate_get

제휴 신청 상태, 추천 링크, 소개한 가입과 결제 고객, 통화별 잔액 (보류 중, 지급 가능, 지급 완료)입니다. 신청하지 않았다면 status는 none입니다.

권한: member

예시
curl https://privatusanalytics.com/account/affiliate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

채널 규칙

POST /sites/:site_id/channel_rules.json 채널 규칙 추가 channel_rules_create

목록 끝에 사용자 지정 채널 규칙을 추가합니다. 따라서 기존 모든 규칙 뒤에 실행되며, 내장 분류는 일치하는 규칙이 없을 때만 적용됩니다. channel은 배정할 이름입니다(최대 32자, 예를 들어 Partners). conditions는 field(referrer_host, utm_source, utm_medium, utm_campaign, ref 또는 path), operator(is, contains, starts_with 또는 regex), value가 있는 객체의 비어 있지 않은 목록입니다. 규칙이 적용되려면 모든 조건이 일치해야 하며 대소문자는 구분하지 않습니다. value가 빈 조건은 버려지고, 조건이 하나도 남지 않은 규칙은 거부됩니다. 컴파일되지 않는 정규식은 거부됩니다. 규칙은 몇 분 안에 새 방문에 적용되며 과거 기록은 바꾸지 않습니다. 순서를 바꾸려면 channel_rules_move를, 테스트하려면 channel_rules_preview를 사용하세요. sites.manage가 필요합니다.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/channel_rules.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/channel_rules/:id.json 채널 규칙 삭제 channel_rules_delete

channel_rules_list의 ID로 찾은 사용자 지정 채널 규칙을 삭제합니다. 이미 분류된 방문은 채널을 유지하고, 새 방문은 다음으로 일치하는 규칙이나 내장 분류로 넘어갑니다. 남은 규칙은 순서를 유지합니다. 삭제된 규칙을 반환합니다. sites.manage가 필요합니다.

권한: sites.manage

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/channel_rules/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/channel_rules.json 채널 규칙을 순서대로 목록 보기 channel_rules_list

사이트의 사용자 지정 채널 규칙을 평가 순서(position 1이 먼저)대로 나열합니다. 규칙은 새 방문마다 위에서 아래로 실행되며, 모든 조건이 일치하는 첫 번째 규칙이 채널을 결정합니다. 어떤 규칙에도 일치하지 않는 방문은 내장 채널(direct, organic_search, paid_search, email 등)을 받습니다. 각 규칙에는 id(UUID), channel(배정하는 이름), position(1부터 시작), conditions(field, operator, value 객체의 목록이며 모두 일치해야 함), created_at이 있습니다. 규칙은 만들어진 이후에 기록된 방문에만 영향을 주며 과거 데이터를 다시 쓰지 않습니다. 샘플 방문을 테스트하려면 channel_rules_preview를 사용하세요. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/channel_rules.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/channel_rules/:id/move.json 채널 규칙을 위나 아래로 이동 channel_rules_move

일치하는 첫 번째 규칙이 우선하고 순서가 방문이 받는 채널을 결정하므로, 평가 순서 안에서 채널 규칙을 이동합니다. direction은 up 또는 down(한 칸), top 또는 bottom(양 끝으로)입니다. 이미 가장자리에 있는 규칙은 오류 없이 그대로 있습니다. 위치는 1부터 n까지 다시 매겨지고 새 위치가 포함된 업데이트된 규칙을 반환합니다. 먼저 channel_rules_list로 현재 순서를 확인하세요. sites.manage가 필요합니다.

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/channel_rules/:id/move.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/channel_rules/preview.json 샘플 리퍼러와 UTM 태그에 대한 채널 미리 보기 channel_rules_preview

사이트의 현재 규칙으로 샘플 방문이 어떤 채널을 받을지 알려 주는 시험 실행입니다. 아무것도 저장되지 않습니다. referrer(URL 또는 호스트 이름만, www와 m 접두사는 무시됨), utm_source, utm_medium, utm_campaign, ref, path(/pricing 같은 랜딩 경로), paid_click(URL에 gclid 같은 클릭 ID가 있었으면 true) 중 원하는 것을 보내세요. 결과에는 channel(우승한 채널 이름), custom_rule(사용자 지정 규칙이 결정했으면 true, 내장 분류가 했으면 false), referrer_host(일치에 사용된 정리된 호스트 이름)가 있습니다. 사이트 자체 도메인의 리퍼러는 내부로 간주됩니다. channel_rules_create 또는 channel_rules_move 후 효과를 확인할 때 사용하세요. analytics.read가 필요합니다.

권한: analytics.read

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/channel_rules/preview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
PATCH /sites/:site_id/channel_rules/:id.json 채널 규칙 변경 channel_rules_update

channel_rules_list의 ID로 찾은 사용자 지정 채널 규칙을 변경합니다. 배정하는 채널의 이름을 바꾸려면 channel을, 조건 목록 전체를 교체하려면 conditions를 보내세요(목록은 병합되지 않고 교체되므로 유지하려는 조건을 모두 보내야 함). 생략한 입력은 그대로 둡니다. 조건 필드, 연산자, 정규식 유효성은 channel_rules_create와 같은 방식으로 검사됩니다. 변경은 새 방문에만 적용됩니다. 순서를 바꾸려면 channel_rules_move를 사용하세요. sites.manage가 필요합니다.

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/channel_rules/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추적

POST /sites/:site_id/tracking/ingest_key.json 크롤러 로그 키 만들기 또는 교체 (한 번만 표시됨) tracking_ingest_key_rotate

사이트의 새로운 비밀 크롤러 로그 키(pik_로 시작)를 만들고 기존 키를 교체합니다. 이 키는 AI 크롤러 리포트용 서버 액세스 로그 업로드(POST /api/logs)를 인증합니다. 첫 키를 만들 때와 교체할 때 모두 사용하세요. 새 키는 즉시 작동하고 이전 키는 즉시 작동을 멈추므로, 로그 업로드에서 401이 나지 않도록 새 키를 바로 배포하세요. 전체 키는 이 응답의 key 필드에서만 반환되므로 시크릿 저장소에 보관하세요. 이후에는 짧은 접두사만 보관되어 표시됩니다(여기서는 prefix, 사이트에서는 ingest_key_prefix). site_id, key, prefix를 반환합니다. sites.manage가 필요합니다. 교체하지 않고 키를 제거하려면 tracking_ingest_key_revoke를 사용하세요.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/tracking/ingest_key.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/tracking/ingest_key.json 크롤러 로그 키 폐기 tracking_ingest_key_revoke

사이트의 크롤러 로그 키를 제거합니다. 이후 그 키로 보낸 모든 로그 업로드는 tracking_ingest_key_rotate로 새 키를 만들 때까지 401로 거부됩니다. 공개 사이트 ID를 사용하는 브라우저 추적에는 영향이 없습니다. 키는 복원할 수 없습니다. sites.manage가 필요합니다. ingest_key_prefix가 이제 null인 사이트 객체를 반환합니다(sites_get 참고).

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/tracking/ingest_key.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/tracking/verify.json 사이트에 트래커가 설치되었는지 확인 (스크립트 태그, 사이트 ID, CSP, 리퍼러 정책) tracking_verify

사이트의 페이지를 가져와서 Privatus Analytics 추적 스크립트가 올바르게 설치되었는지 확인하고, 이 사이트의 ID가 있는 스크립트가 발견되면 사이트를 확인됨으로 표시합니다. 기본적으로 홈페이지(https://domain/)를 요청하며, url로 다른 페이지를 지정할 수 있지만 사이트 자체 도메인, 추가 도메인 또는 그 서브도메인에 있는 것이어야 합니다. 결과(data 아래)에는 url, status(HTTP 상태), script_found, site_ids(페이지에서 발견된 모든 data-site ID), installed(이 사이트의 ID가 그 안에 있으면 true), csp와 csp_ok(페이지의 Content-Security-Policy가 트래커의 로드와 전송을 허용하는지 여부), referrer_policy와 referrer_ok(no-referrer 정책이면 모든 방문이 직접 방문으로 표시됨), checked_at이 있습니다. 공개 인터넷을 통해 가져오고, 최대 2MB를 읽으며, 워크스페이스별, 호스트별로 요청 횟수가 제한되므로 너무 자주 호출하면 429로 응답합니다. 페이지에 접근할 수 없으면 검증 오류를 반환합니다. 이벤트가 도착했는지는 sites_setup_get으로 확인하세요. sites.manage가 필요합니다.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/tracking/verify.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/tracking/snippet.json 선택한 옵션으로 추적 스니펫 만들기 tracking_snippet

사이트에 추적을 설치하기 위한 HTML 스크립트 태그를 만들어 data.site_id와 data.snippet으로 사이트 ID와 함께 반환합니다. 맞춤 설정이 필요하면 sites_setup_get 대신 이것을 선택하고, 이후 실제 페이지를 확인하려면 tracking_verify를 사용하세요. 기본적으로 모든 트래커 모듈이 로드되며 페이지뷰는 자동입니다. modules는 engage(시간과 스크롤), auto(외부 링크, 다운로드, 양식, 404), vitals(웹 바이탈), clicks(클릭 맵), ask(사이트 내 설문)의 부분집합으로 좁힙니다. manual true는 자동 페이지뷰를 꺼서 직접 보내게 합니다. spa는 싱글 페이지 앱 이동 추적을 auto, history, hash 또는 off로 설정합니다. domains는 추적을 해당 호스트 이름으로 제한하고, exclude는 건너뛸 경로 glob을 나열하고, query_params는 추가로 유지할 쿼리 파라미터를 나열하고, mask는 /u/*->/u/:id로 쓰는 클라이언트 측 경로 마스크를 나열합니다. 아무것도 저장되지 않으며 스니펫은 매번 입력으로부터 생성됩니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/tracking/snippet.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

추천사

GET /sites/:site_id/testimonials/overview.json 사이트의 수치, 주의가 필요한 항목, 최근에 일어난 일을 읽습니다 testimonials_overview

stats에는 개요 페이지의 다섯 가지 수치가 있습니다. 승인된 추천사, 보류, 이번 달 신규, 평균 별점, 사용 중입니다. attention은 결정이 필요한 항목을 개수와 함께 나열합니다. activity는 최근 이벤트 10개이고, latest_approved는 가장 최근에 승인된 추천사 3개입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/overview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/setup.json 사이트의 설정 체크리스트를 가져옵니다 testimonials_setup_get

import, testimonials, approve, ask, widget, teammate 항목을 각각 done과 dismissed와 함께 반환합니다. 항목은 사이트에 있는 내용으로 완료되며 클릭으로는 완료되지 않습니다. 모든 항목이 완료되었거나 닫히면 hidden이 true이며, 이때 받은 편지함이 카드를 더 이상 표시하지 않습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/setup.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/setup.json 설정 체크리스트의 항목 하나 또는 카드 전체를 닫습니다 testimonials_setup_update

dismiss는 항목 키 하나(import, testimonials, approve, ask, widget 또는 teammate) 또는 카드 전체를 뜻하는 all입니다. 닫으면 항목이 숨겨질 뿐 완료로 표시되지 않으며, API로는 되살릴 수 없습니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/setup.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/:id/approve.json 추천사를 승인해 표시될 수 있게 합니다 testimonials_approve

사용량 대기 중인 추천사는 승인할 수 없습니다. 서버가 422와 waiting_for_allowance 코드로 응답합니다. 응답에는 meta.undo_id가 포함됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/approve.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/bulk.json 선택한 추천사 또는 필터와 일치하는 모든 추천사에 하나의 작업을 실행합니다 testimonials_bulk

ids(최대 100개, 한 번에 실행되며 전부 또는 전무)나 confirm_count가 있는 filters(전체 결과)를 보내세요. 100개를 넘으면 백그라운드에서 실행되고 응답의 state는 running입니다. 작업: approve, reject, mark_pending, pin, unpin, add_tags, remove_tags, add_to_collection, remove_from_collection, set_property, trash, restore. 각 작업은 testimonials_bulk_undo가 7일 동안 받는 실행 취소 ID와 함께 응답합니다. delete_permanently는 되돌릴 수 없는 유일한 작업이며 sites.manage가 필요하고 응답에 undoable false가 표시됩니다. MCP에서는 삭제하는 두 작업인 trash와 delete_permanently가 실행되지 않습니다. 도구는 human_only와 사람이 직접 처리할 앱 페이지로 응답하며, 다른 작업은 모두 실행됩니다. API에서 export 작업(ids 또는 filters, 선택적으로 csv, json, ndjson, xlsx 형식)은 아무것도 변경하지 않습니다. analytics.export가 필요하며 202와 다운로드할 내보내기로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/bulk.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/bulk/:id/undo.json 7일 이내의 일괄 작업을 실행 취소합니다 testimonials_bulk_undo

실행이 바꾼 모든 추천사에 이전 값을 되돌립니다. 그 뒤에 다시 바뀐 항목은 그대로 두고 left로 집계합니다. MCP에서는 삭제하거나 휴지통으로 옮기게 되는 실행 취소(복원, 번역 실행, 이미지 만들기 실행의 실행 취소)는 실행되지 않습니다. 도구는 human_only와 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/bulk/:id/undo.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials.json 추천사를 직접 또는 API로 추가합니다 testimonials_create

모든 경로가 쓰는 하나의 입력 창구로 저장됩니다. 요금제의 월간 신규 추천사 사용량에 포함되며, 사용량에 도달하면 서버가 422와 allowance_reached 코드로 응답합니다(고객의 양식 제출만 대신 대기 상태로 보관됩니다). 같은 사람이 같은 말을 다시 보내면 allow_duplicate가 true가 아닌 한 duplicate 코드로 거부됩니다. 같은 external_id를 다시 보내면 이미 저장된 항목을 반환합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/:id/permanent.json 추천사를 기록, 동의 기록, 파일과 함께 영구 삭제합니다 testimonials_delete

되돌릴 수 없습니다. 휴지통 안팎의 추천사에 모두 적용되며, confirm과 sites.manage 권한이 필요합니다. MCP에서는 이 도구가 아무것도 삭제하지 않고 사람이 직접 처리할 페이지로 응답합니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/:id/permanent.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/:id.json 추천사를 30일 동안 휴지통으로 옮깁니다 testimonials_trash

추천사는 상태, 태그, 컬렉션, 파일을 유지하고 어디에도 표시되지 않으며 30일 뒤 영구 삭제됩니다. testimonials_restore가 원래대로 되돌립니다. 응답에는 meta.undo_id가 포함됩니다. 이미 휴지통에 있는 추천사를 다시 휴지통으로 옮겨도 아무것도 바뀌지 않습니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/facets.json 목록과 같은 입력으로 모든 필터 값 뒤의 추천사 수를 셉니다 testimonials_facets

추천사를 하나도 읽지 않고 라이브러리의 구성을 보여 줍니다. 각 패싯은 자기 자신의 선택을 제외하고 다른 모든 필터를 적용해 값을 셉니다. meta에는 전체 개수와 필터를 말로 풀어 쓴 설명이 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/facets.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/:id/highlight.json 추천사에서 가장 좋은 문장을 표시하거나 지웁니다 testimonials_highlight

highlight는 추천사 내용의 정확한 일부여야 하며, 그렇지 않으면 서버가 422로 응답합니다. 빈 하이라이트는 표시를 지웁니다. 변경할 때마다 기록에 버전이 하나 생깁니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/:id/highlight.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/:id/history.json 추천사의 내용, 제목, 별점, 하이라이트의 모든 버전을 나열합니다 testimonials_history

최신순입니다. 버전 1은 받은 그대로의 추천사이며 작성자가 없습니다. 이후 각 버전에는 수정한 멤버, 시각, 남긴 메모, 복원인 경우 되돌린 버전이 있습니다. page와 per_page로 페이지를 나눕니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/:id/history.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials.json 사이트의 추천사를 필터와 정렬을 적용해 나열합니다 testimonials_list

무엇을 나열할지 지정하는 방법이 세 가지 있으며 함께 적용됩니다. 패싯 입력(status, tag_id, has_video 등), q(연산자를 쓸 수 있는 검색창, 예: rating:5 has:video tag:onboarding "saved us"), match가 있는 conditions(구조화된 행)입니다. meta.facets에서 모든 패싯 값의 실시간 개수를 받으려면 facets를 true로 보내세요. 휴지통의 항목은 trashed가 true일 때만 나열되며, 그 경우 휴지통만 나열됩니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/:id/pend.json 추천사를 다시 보류 상태로 되돌립니다 testimonials_pend

승인되었거나 거부된 추천사를 보류로 되돌리므로, 다시 결정할 때까지 어디에도 표시되지 않습니다. 응답에는 meta.undo_id가 포함됩니다. 휴지통에 있는 추천사는 in_trash 코드로 거부됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/pend.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/:id/pin.json 추천사를 고정해 맨 앞에 표시하거나 고정을 해제합니다 testimonials_pin

고정된 추천사는 표시되는 모든 곳에서 맨 앞에 나옵니다. 고정을 해제하려면 pinned에 false를 보내세요. 변경된 것이 있으면 응답에 meta.undo_id가 포함됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/pin.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/:id/reject.json 추천사를 거부합니다. 보관되지만 어디에도 표시되지 않습니다 testimonials_reject

추천사는 가진 모든 것을 유지하지만 어디에도 표시되지 않습니다. 이미 거부된 추천사를 거부해도 아무것도 바뀌지 않습니다. 응답에는 testimonials_bulk_undo가 7일 동안 받는 meta.undo_id가 포함됩니다. 휴지통에 있는 추천사는 in_trash 코드로 거부됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/reject.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/:id/restore.json 추천사를 휴지통에서 원래대로 복원합니다 testimonials_restore

휴지통의 추천사를 상태, 태그, 컬렉션, 표시되던 위치와 함께 되돌립니다. 새 추천사로 집계되지 않습니다. 휴지통에 없는 추천사는 not_in_trash 코드로 거부됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/restore.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/:id/restore_version.json 이전 버전의 내용, 제목, 별점, 하이라이트를 되돌립니다 testimonials_restore_version

기록에서는 아무것도 삭제되지 않습니다. 복원은 어느 버전에서 왔는지 알려 주는 새 버전입니다. version 1은 추천사를 받은 그대로의 내용으로 되돌립니다. 알 수 없는 버전 번호는 422입니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/restore_version.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/:id.json 추천사 하나를 작성자, 파일, 동의 기록, 태그, 사용처와 함께 가져옵니다 testimonials_get

ID(tm_...)로 사이트의 추천사 하나를 반환하며, 휴지통에 있어도 반환합니다. 호출자가 content.write 권한이 없으면 person.email은 null이며, has_email은 이메일이 기록되어 있는지 알려 줍니다. media는 파일과 처리 상태를 나열합니다. used_in은 이 추천사를 보여 주는 모든 위젯, 월, 이미지를 나열합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/showable.json 공개적으로 볼 수 있는 추천사를 공개 시점의 모습대로 나열합니다 testimonials_showable

위젯과 월 밖에서 직접 만든 표시용으로, 공개해도 되는 사이트의 최신 승인 추천사입니다. 각 추천사에는 동의 기록이 허용하는 것만 담깁니다. 이름을 공개하면 안 되는 사람은 A customer로 표시되고, 사진이나 녹음은 허용되지 않았다면 제외됩니다. 보류, 거부, 휴지통 상태이거나 사용량 대기 중인 추천사는 나열되지 않습니다. 응답에 이메일은 없습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/showable.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/triage.json 분류 대기열의 다음 추천사를 가져옵니다 testimonials_triage

필터가 없으면 대기열은 사용량 대기 중이 아닌 보류 항목을 받은 순서대로 보여 줍니다. 받은 편지함 필터를 쓰면 그 결과를 해당 정렬로 보여 줍니다. 방금 처리한 항목의 ID를 after로 보내면 그다음 항목을 받습니다. 대기열이 끝나면 data는 null입니다. meta에는 remaining과 total이 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/triage.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/:id.json 추천사를 수정합니다. 내용, 제목, 별점, 하이라이트의 변경은 기록에 남습니다 testimonials_update

보낸 입력만 변경됩니다. body, title, rating, highlight를 변경하면 edit_note와 함께 기록에 버전이 추가되며, 확인됨 표시는 바뀌지 않습니다. rating을 null로 보내면 지워집니다. highlight는 내용의 정확한 일부여야 하며, 빈 값은 하이라이트를 지웁니다. properties는 보낸 키만 변경합니다. add_tags와 remove_tags는 이름이나 ID를 받습니다. 상태, 고정, 휴지통에는 각각 별도의 도구가 있습니다. 휴지통에 있는 추천사는 수정할 수 없습니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 가져오기 소스

POST /sites/:site_id/testimonials/imports/sources.json 링크로 가져오기 소스를 추가하고 첫 실행을 시작합니다 testimonial_import_sources_create

플랫폼은 링크에서 감지됩니다. 실행 결과는 검토 단계(testimonial_import_sources_review)에서 대기하며, testimonial_import_sources_keep을 호출하기 전에는 아무것도 저장되지 않습니다. 가져온 항목은 월간 추천사 사용량에 포함되지 않습니다. Free 요금제는 리뷰 사이트나 페이지에서 월 1회 가져올 수 있습니다. 그 이후에는 응답이 402 plan_limit입니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/imports/sources/:id.json 소스를 삭제합니다. 소스가 가져온 추천사는 남습니다 testimonial_import_sources_delete

소스를 실행 기록, 검토 단계에서 대기 중인 항목, 업로드한 파일과 함께 삭제합니다. 이미 보관한 추천사는 사이트에 남습니다. 이 작업은 사람이 소스 페이지에서 하므로 도구는 아무것도 실행하지 않고 그 페이지를 반환합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/imports/sources/:id/discard.json 찾은 항목을 폐기합니다 testimonial_import_sources_discard

item_ids(testimonial_import_sources_review의 ID) 또는 아직 대기 중인 모든 항목을 뜻하는 all true를 보내세요. 둘을 함께 보내면 안 됩니다. 폐기한 항목은 검토 단계에서 사라지고 그 사람에 대해 읽은 내용은 삭제됩니다. 삭제되는 추천사는 없습니다. 그렇지 않으면 서버가 422와 selection 또는 unknown_ids 코드로 응답합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/discard.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/imports/find.json 사이트 자체 웹사이트에서 추천사를 찾습니다 testimonial_import_sources_find

사이트의 도메인과, 추천사가 있어 보이는 링크된 페이지를 사이트당 한 번 읽습니다. 무료이며 Free 요금제의 가져오기 횟수에 포함되지 않습니다. 찾은 항목은 반환된 소스의 검토 단계에서 대기합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/find.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/imports.json 사이트의 가져오기 소스를 나열합니다 testimonial_import_sources_list

meta에는 fetched_imports(해당 월의 used, limit, resets_on이며 limit가 null이면 무제한)와 sync(요금제가 허용하는 주기)가 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/imports/sources/:id/keep.json 찾은 항목을 추천사로 보관합니다 testimonial_import_sources_keep

item_ids(최대 100개) 또는 all을 보내세요. 보관한 모든 항목은 다른 추천사와 같은 경로로 저장되므로 중복이 두 번 저장되지 않습니다. 보관한 항목은 월간 추천사 사용량에 포함되지 않습니다. meta에 보관한 수가 표시됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/keep.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/imports/platforms.json 가져오기가 읽을 수 있는 플랫폼을 나열합니다 testimonial_import_platforms_list

검증된 소스 레지스트리입니다. 플랫폼은 실제 페이지로 가져오기가 입증된 뒤에만 목록에 오릅니다. 각 항목은 어떤 링크를 붙여 넣어야 하는지 알려 줍니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/platforms.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/imports/sources/:id/review.json 소스가 찾았고 아직 결정하지 않은 항목을 나열합니다 testimonial_import_sources_review

meta에는 배지별 개수(new, already_here, likely_duplicate)가 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/review.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/imports/sources/:id/run.json 소스를 지금 다시 읽습니다 testimonial_import_sources_run

수동 실행은 가져오기 한 번으로 취급되며 Free 요금제에서는 그 달의 가져오기 횟수에 포함됩니다(초과하면 402 plan_limit). 실행 중에는 거부되고(422 in_progress), 어떤 요금제에서든 24시간 안에 소스를 3번 실행한 뒤에도 거부됩니다(422 too_many_runs). 오류가 난 소스에서는 실패 횟수가 초기화됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/run.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/imports/sources/:id.json 가져오기 소스 하나를 상태와 개수와 함께 가져옵니다 testimonial_import_sources_get

플랫폼, 이름, 읽는 주소, 다시 읽는 주기, 상태, 검토 단계에서 대기 중인 항목 수, 보관한 수, 연속 실패 횟수, 마지막 실행 시각과 다음 실행 시각을 반환합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/imports/sources/:id.json 소스의 링크, 이름, 동기화, 자동 승인을 변경하거나 일시 중지합니다 testimonial_import_sources_update

요금제를 넘는 동기화(Free는 모두, Pro는 weekly)는 402 plan_limit으로 거부됩니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 가져오기 실행

GET /sites/:site_id/testimonials/imports/sources/:import_source_id/runs.json 소스의 실행 기록을 최신순으로 나열합니다 testimonial_import_runs_list

각 실행에는 번호, 시작 원인, 상태, 읽은 페이지, 찾은 추천사 수, 신규, 중복, 실패, 보관한 수, 시작과 종료 시각이 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:import_source_id/runs.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

추천사 구매 연결

DELETE /sites/:site_id/testimonials/settings/purchase_connections/:id.json 결제 계정 연결을 해제합니다 testimonial_purchase_connections_delete

연결과 키를 삭제합니다. 첫 이메일을 기다리던 구매자에게는 요청하지 않습니다. 상시 요청은 발송된 내역의 기록으로 남습니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/purchase_connections/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/settings/purchase_connections.json 사이트의 구매 연결을 나열합니다 testimonial_purchase_connections_list

각각 규칙, 상태, 상시 요청과 함께 표시됩니다. 키는 절대 반환되지 않습니다. 구매 후 요청을 지원하지 않는 요금제에서는 paused가 true입니다. 연결은 유지되지만 결제를 읽지 않고 아무에게도 요청하지 않습니다.

권한: sites.manage

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/purchase_connections.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

추천사 미디어

POST /sites/:site_id/testimonials/media/uploads.json 업로드를 시작하거나 웹 주소에서 파일을 추가합니다 testimonial_media_uploads_create

방법이 두 가지 있습니다. 업로드하려면 filename, content_type, byte_size를 보내세요. 응답에는 upload가 있으며, 파일을 PUT할 url, 함께 보낼 헤더, 큰 파일이면 하나씩 보낼 수 있는 parts가 들어 있습니다. 그다음 testimonial_media_uploads_finish를 호출하세요. 또는 source_url을 보내면 파일이 다운로드되어 처리됩니다. state가 ready가 될 때까지 testimonial_media_get으로 폴링하세요. 한도: 동영상과 오디오는 최대 500MB이며 요금제가 허용하는 길이까지입니다(Pro 2분, Business 10분, Free는 없음이며 서버가 402 plan_limit으로 응답), 이미지는 최대 10MB, 로고는 최대 2MB입니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/media/uploads.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/media/:id.json 어떤 추천사도 보관하지 않는 파일을 삭제합니다 testimonial_media_delete

추천사에 속한 파일은 휴지통을 거쳐 추천사와 함께 삭제됩니다. 저장된 파일이 삭제되고 그 주소는 캐시에서 지워집니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/media/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/media/uploads/:id/finish.json 업로드가 완료되었음을 알려 파일을 검사하고 처리하게 합니다 testimonial_media_uploads_finish

파일을 전송한 뒤 호출하세요. 파일은 업로드 저장소에 있어야 하며 약속한 크기와 정확히 같아야 합니다. 두 번 호출해도 안전합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/media/uploads/:id/finish.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/media/:id/retry.json 실패한 파일을 다시 시도합니다 testimonial_media_retry

보관된 업로드로 파일을 다시 처리합니다. 업로드는 실패 후 24시간 동안 보관됩니다. 그 뒤에는 서버가 not_retryable로 응답하며 파일을 다시 업로드해야 합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/media/:id/retry.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/media/:id.json 파일 하나를 상태와 불러올 위치와 함께 가져옵니다 testimonial_media_get

url은 미디어 호스트에 있는 완성된 파일의 영구 주소이며, 상태가 ready가 되기 전에는 null입니다. 주소는 모든 사람에게 같고 서명되지 않으므로, shareable 필드가 true인 파일의 주소만 전달하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/media/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

추천사 번역

POST /sites/:site_id/testimonials/translations.json 추천사를 사이트가 제공하는 언어로 번역합니다 testimonial_translations_create

먼저 testimonial_translations_estimate를 호출하세요. 선택한 추천사의 본문, 제목, 하이라이트를 Google Cloud Translation으로 보내며(이름, 이메일, 회사는 절대 보내지 않음), 어시스턴트가 시작했다는 사실이 멤버에게 이메일로 전달됩니다. 번역은 백그라운드에서 이루어지며, 이미 저장된 행은 다시 가져오지 않습니다. 월 글자 수 한도에 도달하면 나머지는 대기 상태로 저장되어 1일에 이어집니다. Business 미만에서는 402 plan_limit으로, 번역이 설정되지 않은 동안에는 422 not_configured로 응답합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/translations.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/translations/:testimonial_id/:language.json 저장된 번역 하나를 제거합니다 testimonial_translations_delete

그 언어가 쓰이던 모든 곳에서 추천사가 다시 원래 말로 표시됩니다. 이미 사용한 글자 수는 돌려받지 못합니다. 모든 요금제에서 작동합니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/translations/:testimonial_id/:language.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/translations/estimate.json 번역 실행이 보낼 글자 수를 실행 전에 셉니다 testimonial_translations_estimate

추천사를 한 가지 방법으로 지정하세요. testimonial_ids, collection_id 또는 all_approved입니다. 응답에는 추천사, 보낼 글자 수, 이미 저장된 글자 수, 이번 달의 남은 글자 수가 있습니다. 가격이 아니라 글자 수를 알려 주며 아무것도 가져오지 않습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/translations/estimate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/translations.json 사이트의 저장된 번역을 나열합니다 testimonial_translations_list

추천사와 언어당 한 행이며 최근에 변경된 순으로 페이지당 25개입니다. language, state, origin 또는 testimonial_id로 필터링하세요. 모든 요금제에서 작동하므로 다운그레이드 전에 만든 번역도 계속 읽을 수 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/translations.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/translations/:testimonial_id/:language.json 번역 하나를 직접 쓰거나 고칩니다 testimonial_translations_update

행은 수정됨으로 표시되며, overwrite_edited를 보내지 않으면 이후 실행이 덮어쓰지 않습니다. 아무것도 가져오지 않으며 한도에도 포함되지 않습니다. 원문은 절대 변경되지 않습니다. Business 이상입니다(그 외에는 402 plan_limit).

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/translations/:testimonial_id/:language.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 분석

GET /sites/:site_id/testimonials/analytics/breakdown.json 추천사 지표 하나를 양식, 요청, 위젯, 월, 추천사, 채널, 페이지, 국가 또는 출처별로 나눕니다 testimonial_stats_breakdown

큰 값부터 행을 반환하며, 각 행에는 key, label, value, share(전체에 대한 퍼센트)가 있고, 비율이면 numerator와 denominator가 있습니다. 레코드(양식, 요청, 위젯, 월, 추천사)의 행에는 ID가 포함됩니다. 각 차원은 일부 지표만 받습니다. form과 channel은 양식 지표, request는 요청 지표, widget과 wall은 각자의 조회, 클릭, 클릭률, video_plays, testimonial은 testimonial_views와 video_plays, page와 country는 조회 및 클릭 지표, source는 new_testimonials를 받습니다. 맞지 않는 조합은 422로 응답하며 맞는 지표를 알려 줍니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics/breakdown.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/analytics/export.json 추천사 분석의 한 섹션을 파일로 만들도록 대기열에 넣습니다 testimonial_stats_export

지정한 기간에 대한 testimonial_stats 종류의 내보내기를 만들고 대기열에 넣어 반환합니다. status가 complete가 될 때까지 exports_get으로 폴링한 뒤 exports_download를 호출하세요. section은 행을 고릅니다. days(모든 지표가 있는 일, 주 또는 월당 한 행), forms, channels, requests, widgets, walls, pages, testimonials, sources, countries입니다. 파일은 7일 동안 보관됩니다. 대기 중인 내보내기가 너무 많으면 422 in_progress로 응답합니다.

권한: analytics.export

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/analytics/export.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/analytics.json 사이트의 추천사 분석을 한 번의 호출로 읽습니다 testimonial_stats_overview

추천사 아래 분석 탭이 기간에 대해 보여 주는 모든 것을 반환합니다. cards(form_views, submissions, completion_rate, answer_rate, widget_views, wall_views이며 compare를 설정하면 각각 previous와 change 포함), chart(시간에 따른 지표 하나), 양식, 요청, 위젯, 월별 행, channels(양식이 열린 경로), pages(위젯과 월이 보인 곳), top_testimonials, new_testimonials(출처별 및 현재 상태별), countries입니다. 비율은 0에서 100까지의 퍼센트이며, 나눌 값이 없으면 null입니다. blank는 사이트가 아직 아무것도 집계한 적이 없으면 true이고, recorded는 지금까지 집계한 지표를 나열합니다. 이는 웹 분석이 아니라 추천사 기능의 일별 합계입니다. 방문자와 페이지뷰는 stats_overview를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/analytics/timeseries.json 추천사 지표 하나를 일, 주 또는 월 단위로 읽습니다 testimonial_stats_timeseries

date, to, value를 가진 포인트를 반환하며, compare를 설정하면 previous와 previous_date도 포함하고, total, previous_total, change도 함께 반환합니다. 비율(completion_rate, answer_rate, widget_click_rate, wall_click_rate)은 각 구간의 합계로 계산되며, 나눌 값이 없는 구간은 null입니다. new_testimonials는 추천사가 추가된 날을 기준으로 추천사 자체에서 집계합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics/timeseries.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

추천사 브랜드 키트

DELETE /sites/:site_id/testimonials/settings/brand_kit.json 사이트 추천사의 브랜드 키트를 Privatus Analytics 기본값으로 되돌립니다 testimonial_brand_kit_reset

모든 색상, 글꼴, 반경, 별점 스타일, 로고, 사용자 지정 CSS를 한 번에 지우며 모든 양식, 위젯, 월이 함께 바뀝니다. 되돌릴 수 없으므로 어시스턴트는 이를 실행하지 않고 브랜드 키트 페이지로 안내됩니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/brand_kit.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/settings/brand_kit.json 사이트 추천사의 브랜드 키트를 라이트와 다크에 맞게 확정된 모든 색상과 함께 가져옵니다 testimonial_brand_kit_get

사이트의 모든 양식, 위젯, 월을 그리는 데 쓰는 색상, 글꼴, 모서리 반경, 별점 스타일, 로고, 배지 스위치, 사용자 지정 CSS를 반환합니다. 한 번도 바꾸지 않은 설정은 Privatus Analytics 기본값으로 돌아옵니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/brand_kit.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/settings/brand_kit.json 사이트 추천사의 브랜드 키트를 변경합니다 testimonial_brand_kit_update

보낸 입력만 변경됩니다. 설정 하나를 Privatus Analytics 기본값으로 되돌리려면 빈 문자열을 보내세요. 사용자 지정 CSS는 저장할 때 검사되며, 허용되지 않는 내용은 해당 줄과 함께 거부됩니다. 사용자 지정 CSS와 배지 숨기기에는 Business 요금제가 필요합니다. 그렇지 않으면 서버가 402 plan_limit으로 응답합니다.

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/brand_kit.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 사람

POST /sites/:site_id/testimonials/people/:id/ask_again.json 이 사람만 수신자로 하는 요청을 시작합니다 testimonial_people_ask_again

그 사람이 마지막으로 쓴 양식이나 시작 양식을 사용합니다. 요청을 보내기 전에는 아무것도 전송되지 않습니다. 사람에게 요청할 수 없으면 서버가 422와 no_email, bounced 또는 unsubscribed 코드로 응답하고, 요청을 사용할 수 없으면 requests_unavailable로 응답합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/people/:id/ask_again.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/people.json 사이트에 사람을 추가합니다 testimonial_people_create

name은 필수입니다(최대 120자). email은 공개적으로 표시되지 않습니다. 이후 추천사를 이 사람 아래로 묶고 사이트가 다시 요청할 수 있게 하며, 사이트의 다른 사람이 이미 가진 주소는 거부됩니다. avatar_media_id는 사이트에 이미 업로드된 이미지의 ID(med_...)입니다. 사람을 추가해도 추천사는 추가되지 않습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/people.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/people/:id/permanent.json 사람을 그가 말한 모든 내용, 파일, 요청 기록과 함께 영구 삭제합니다 testimonial_people_delete_permanently

삭제 요청용입니다. 되돌릴 수 없습니다. confirm으로 그 사람의 이름이나 ID가 필요하며, 이름도 내용도 담지 않은 감사 항목 하나를 남깁니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/people/:id/permanent.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/people.json 사이트의 사람들을 필터와 정렬을 적용해 나열합니다 testimonial_people_list

각 사람에게는 추천사 수, 승인된 수, 평균 별점, 마지막 요청과 그 결과가 함께 표시됩니다. 호출자가 content.write 권한이 없으면 이메일은 null이며, has_email은 여전히 이메일이 기록되어 있는지 알려 줍니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/people.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/people/:id/merge.json 같은 사람의 다른 기록을 이 기록으로 병합합니다 testimonial_people_merge

경로의 사람이 남습니다. 다른 기록이 말한 모든 내용과 보낸 모든 요청이 옮겨지고, 다른 기록은 제거됩니다. 이 사람의 비어 있는 필드는 오래된 순으로 다른 기록에서 채워지며, use는 필드마다 어느 값이 우선할지 이름으로 지정합니다. 응답에는 testimonial_undo_records_undo가 7일 동안 받는 meta.undo_id가 포함됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/people/:id/merge.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/people/:id.json 한 사람을 받은 요청과 같은 사람으로 보이는 사람들과 함께 가져옵니다 testimonial_people_get

그 사람의 추천사는 person_id를 쓴 testimonials_list입니다. can_ask와 cannot_ask_reason은 testimonial_people_ask_again이 통과할지 알려 줍니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/people/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/people/:id.json 사람을 수정합니다. 보낸 필드만 변경됩니다 testimonial_people_update

이름을 제외하고 빈 값은 필드를 지웁니다. 사이트의 다른 사람이 이미 가진 이메일은 거부됩니다. 사람이 속한 회사 페이지는 회사 이름과 웹사이트를 따릅니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/people/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 사용자 지정 도메인 요청

POST /sites/:site_id/testimonials/settings/custom_domain.json 월 또는 양식에 사용자 지정 도메인을 요청합니다 testimonial_custom_domain_requests_create

추천사용 사용자 지정 도메인은 Privatus Analytics 팀이 직접 설정합니다. 이 호출은 요청을 저장하고 팀에 알리며, 팀이 추가할 DNS 레코드를 이메일로 보냅니다. 요청의 상태가 active가 되기 전에는 호스트 이름이 작동하지 않습니다. Business 이상이며, 다른 요금제는 402 plan_limit을 받습니다.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/custom_domain.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/settings/custom_domain.json 호스트 이름으로 사용자 지정 도메인 요청을 철회합니다 testimonial_custom_domain_requests_delete

팀이 아직 착수하지 않은 요청(status requested)만 철회할 수 있습니다. 진행 중인 요청은 wrong_state로 응답합니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/custom_domain.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/settings/custom_domain.json 사이트의 사용자 지정 도메인 요청을 나열합니다 testimonial_custom_domain_requests_list

월 또는 양식의 호스트 이름에 대한 모든 요청을 최신순으로 상태와 함께 나열합니다. 호스트 이름은 status가 active가 되어야 작동합니다. 모든 요금제에서 작동하므로 이전 요청도 계속 읽을 수 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/custom_domain.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

추천사 사용자 지정 속성

POST /sites/:site_id/testimonials/settings/properties.json 사이트에 사용자 지정 속성을 추가합니다 testimonial_properties_create

사이트에는 활성 속성을 최대 20개까지 둘 수 있습니다. 양식 링크, 규칙, API가 키를 사용하므로 한 번 만들면 키는 고정됩니다. 생략하면 라벨에서 제안됩니다.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/settings/properties/:id.json 사용자 지정 속성과 그 값을 영구 삭제합니다 testimonial_properties_destroy

되돌릴 수 없습니다. 모든 추천사에서 속성과 값을 제거합니다. confirm은 키입니다. 스마트 컬렉션이나 자동 태그 규칙이 사용하는 속성은 사용되는 동안 삭제할 수 없습니다. 속성을 정리하는 일상적인 방법은 보관입니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/settings/properties.json 사이트의 사용자 지정 속성을 표시 순서대로 나열합니다 testimonial_properties_list

각 속성에는 키, 유형, 선택지, 값이 있는 추천사 수(filled), 유형을 아직 바꿀 수 있는지, 이를 사용하는 스마트 컬렉션과 자동 태그 규칙이 표시됩니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/settings/properties/:id.json 사용자 지정 속성을 변경하거나 순서를 바꾸거나 보관하거나 되살립니다 testimonial_properties_update

보낸 입력만 무언가를 변경합니다. 선택지의 이름을 바꾸면 그 선택지가 있는 모든 추천사에서 이름이 바뀝니다. 스마트 컬렉션이나 자동 태그 규칙이 사용하는 속성은 사용되는 동안 보관할 수 없습니다.

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 스프레드시트 가져오기

POST /sites/:site_id/testimonials/imports/spreadsheet.json 스프레드시트를 업로드하거나 CSV 텍스트를 보내 열을 읽습니다 testimonial_spreadsheet_imports_create

스프레드시트 가져오기의 1단계입니다. file(CSV, TSV 또는 XLSX, 최대 10MB와 5,000행, 첫 행이 헤더) 또는 content(최대 1MB의 CSV 텍스트)를 보내세요. 응답에는 열, 각 열의 샘플 값 세 개, 각 열이 들어갈 곳에 대한 첫 추측이 있습니다. 아직 아무것도 가져오지 않았습니다. testimonial_spreadsheet_imports_update와 testimonial_spreadsheet_imports_run으로 이어서 진행하세요. 스프레드시트는 월간 추천사나 가져오기 횟수에 포함되지 않습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/imports/spreadsheet/:id/run.json 매칭한 파일을 검토 단계로 읽어 들입니다 testimonial_spreadsheet_imports_run

사용할 수 있는 행은 체크박스와 함께 대기합니다. 사용할 수 없는 행은 행 번호와 이유와 함께 나열됩니다. 스프레드시트의 ID를 소스 ID로 써서 testimonial_import_sources_keep으로 보관하세요.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet/:id/run.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/imports/spreadsheet/:id.json 스프레드시트의 열, 샘플, 매칭, 옵션, 개수를 가져옵니다 testimonial_spreadsheet_imports_get

샘플 값이 있는 파일의 열, 각 열이 들어가는 필드, 옵션(기본 상태, 태그, 컬렉션, 날짜 형식, 중복 처리 방식), 그리고 실행 후에는 검토 단계에서 대기 중인 행 수와 보관한 행 수를 반환합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/imports/spreadsheet/:id.json 어느 열이 어디로 가는지와 파일의 옵션을 저장합니다 testimonial_spreadsheet_imports_update

스프레드시트 가져오기의 2단계와 3단계입니다. mapping은 열 이름에서 필드로의 객체이며, 제외할 열은 빈 값으로 두고, 두 열을 한 필드에 보낼 수 없습니다. 옵션은 default_status(pending 또는 approved), tags, collection_id(수동 컬렉션), default_source_name, date_format(auto, ymd, dmy 또는 mdy), duplicates(skip 또는 queue)입니다. 보낸 것만 변경되며, testimonial_spreadsheet_imports_run 전에는 아무것도 가져오지 않습니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 실행 취소 목록

GET /sites/:site_id/testimonials/settings/undo.json 최근 7일 동안 변경되어 실행 취소할 수 있는 항목을 나열합니다 testimonial_undo_records_list

최신순입니다. 각 기록에는 무엇이 실행되었는지, 누가 실행했는지, 몇 개를 변경하고 건너뛰었으며 그 이유, 언제까지 실행 취소할 수 있는지가 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/undo.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/settings/undo/:id.json 실행 취소 기록 하나를 읽습니다 testimonial_undo_records_get

백그라운드 실행은 state가 running이며 processed가 진행 정도를 알려 줍니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/undo/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/settings/undo/:id/undo.json 7일 이내의 일괄 작업이나 개별 변경을 실행 취소합니다 testimonial_undo_records_undo

실행이 바꾼 모든 항목에 이전 값을 되돌립니다. 그 뒤에 다시 바뀐 항목은 그대로 두고 left로 집계합니다. 사람이나 중복의 병합도 같은 방식으로 되돌려집니다. MCP에서는 삭제하거나 휴지통으로 옮기게 되는 실행 취소(복원, 번역 실행, 이미지 만들기 실행의 실행 취소)는 실행되지 않습니다. 도구는 human_only와 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/undo/:id/undo.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 언급

GET /sites/:site_id/testimonials/mentions.json 사이트 추천사 전반에서 반복되는 단어와 구문을 나열합니다 testimonial_mentions_list

각 항목에는 그것을 포함한 추천사 수, 비율, 그 추천사들의 평균 별점, 최근 90일과 그 이전 90일의 비교가 함께 표시됩니다. 사람들이 불평하는 내용을 읽으려면 rating_asc로, 새로 생긴 내용을 보려면 rising으로 정렬하세요. meta.refreshed_at은 항목이 마지막으로 다시 만들어진 시각을 알려 줍니다. 항목을 mention으로 testimonials_list에 전달하면 해당 추천사를 읽을 수 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/mentions.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/mentions/tag.json 단어나 구문을 언급한 모든 추천사에 태그를 붙입니다 testimonial_mentions_tag

전체 결과에 대한 하나의 일괄 작업이며 실행 취소가 가능합니다. 항목은 어떤 단어나 두 단어 구문이든 되며, 언급을 집계하는 방식 그대로 어간 처리로 일치시킵니다. 처음 지정하는 태그 이름은 새로 만들어집니다. testimonials_bulk_undo가 7일 동안 받는 실행 취소 ID로 응답합니다. 100개를 넘으면 백그라운드에서 실행됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/mentions/tag.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
PATCH /sites/:site_id/testimonials/mentions.json 잡음일 뿐인 항목을 숨기거나 다시 표시합니다 testimonial_mentions_update

숨긴 항목은 언급 목록과 받은 편지함의 언급 패싯에서 사라지며, 항목이 다시 만들어져도 숨겨진 상태로 유지됩니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/mentions.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 언어

GET /sites/:site_id/testimonials/settings/languages.json 사이트 추천사의 언어 설정을 가져옵니다 testimonial_languages_get

기본 언어, 제공하는 언어, 새로 승인된 추천사를 자동 번역하는지, 요금제에 번역이 포함되는지, 번역이 설정되어 있는지, 이번 달에 사용한 글자 수와 남은 글자 수입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/languages.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/settings/languages.json 기본 언어, 제공하는 언어, 자동 번역을 설정합니다 testimonial_languages_update

바뀌는 것만 보내세요. 기본 언어는 항상 제공하는 언어에 포함되며, 양식이 작성된 언어는 제거할 수 없습니다(in_use). auto_translate를 켜려면 Business 이상이 필요합니다(그 외에는 402 plan_limit). 그때부터 새로 승인된 각 추천사의 내용이 Google Cloud Translation으로 전송되며, 어시스턴트가 이를 변경했다는 사실이 멤버에게 이메일로 전달됩니다.

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/languages.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 요청

POST /requests/resubscribe/:token.json 추천사 요청을 다시 받겠다고 확인합니다 testimonial_request_resubscribes_confirm

확인 페이지 버튼 뒤의 POST입니다. 수신 거부를 해제하므로 주소에 다시 요청할 수 있습니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/requests/resubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /requests/resubscribe.json 주소가 요청을 다시 받을 수 있게 하는 이메일을 요청합니다 testimonial_request_resubscribes_create

주소가 수신 거부한 상태였다면 그 주소로 확인 이메일을 보냅니다. 수신 거부 여부와 관계없이 응답은 같습니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/requests/resubscribe.json \
  -H "Content-Type: application/json" -d '{…}'
POST /requests/unsubscribe/:token.json 주소를 추천사 요청에서 수신 거부합니다 testimonial_request_unsubscribes_create

수신 거부 페이지 버튼 뒤의 POST이며, 메일 앱의 자체 수신 거부 버튼이 호출하는 것입니다. 토큰은 이메일의 링크에서 가져옵니다.

권한: public · HTTP 전용 (MCP 도구 아님)

예시
curl -X POST https://privatusanalytics.com/requests/unsubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/requests.json 요청을 초안으로 시작합니다 testimonial_requests_create

이메일과 수신자가 있는 초안을 만듭니다. testimonial_requests_send를 호출하기 전에는 아무것도 전송되지 않습니다. 생략한 항목은 기본값으로 시작합니다. 이메일, 5일 뒤 후속 메일 한 번, 보낸 사람은 사이트 이름, 회신 주소는 본인입니다. 각 수신자는 queued로 저장되거나, 사유와 함께 skipped로 저장됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/requests/:id.json 초안을 삭제합니다 testimonial_requests_delete

한 번도 보내지 않은 요청만 삭제할 수 있습니다. 보낸 요청은 발송된 메일의 기록으로 유지됩니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/requests/:id/duplicate.json 요청을 새 초안으로 복사합니다 testimonial_requests_duplicate

복사본은 같은 양식과 이메일을 가지며 아직 수신자는 없습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/duplicate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/requests.json 사이트의 요청을 나열합니다 testimonial_requests_list

최신순이며 각각 이메일과 퍼널 수치가 함께 표시됩니다. 상태, 양식, 기간으로 필터링할 수 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/requests/:id/preview.json 요청의 이메일 하나를 첫 번째 수신자가 받는 모습으로 봅니다 testimonial_requests_preview

병합 필드가 채워진 보낸 사람, 제목, 본문입니다. 아무것도 전송되지 않습니다. step 0은 첫 이메일이고 1~3은 후속 메일입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/preview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/requests/:id/resume.json 중지된 요청을 재개합니다 testimonial_requests_resume

멈춘 곳에서 이어갑니다. 중지된 동안 도래한 후속 메일은 지금부터 다시 계산되므로 한꺼번에 발송되지 않습니다. 이 작업은 워크스페이스 밖의 사람에게 이메일을 보내므로, 어시스턴트가 재개했다는 사실이 멤버에게 이메일로 전달됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/resume.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/requests/:id/send.json 요청을 지금 또는 지정한 시각에 보냅니다 testimonial_requests_send

confirm_relationship: true가 필요합니다. 대기 중인 수신자를 한 번 더 확인한 뒤 첫 이메일이 발송됩니다(또는 send_at까지 대기합니다). 후속 메일은 아직 답하지 않은 사람에게 갑니다. 요청 이메일은 사이트 자체 이메일 제공업체(Settings > Email sending, Business 이상)를 통해 발송되므로, 작동하는 연결이 없는 사이트는 422 no_email_connection 또는 email_connection_paused를 받고, 다른 요금제는 402 plan_limit을 받습니다. 모든 이메일은 사이트의 월간 요청 이메일 한도(별도로 설정하지 않으면 10,000)에 포함됩니다. 한도에 도달해도 아무것도 버려지지 않습니다. 사람들은 대기 상태로 남고 1일에 발송이 이어집니다. 이 작업은 워크스페이스 밖의 사람에게 이메일을 보내므로, 어시스턴트가 보냈다는 사실이 멤버에게 이메일로 전달됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/send.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/requests/:id/send_test.json 요청의 이메일 하나를 내 주소로 보냅니다 testimonial_requests_send_test

실제 이메일처럼 사이트 자체 이메일 제공업체를 통해 호출자 본인의 주소로만 발송됩니다(없으면 422 no_email_connection). 개인 링크와 열람 카운터가 없으며 사이트의 월간 한도에 포함되지 않습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/send_test.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/requests/:id.json 요청 하나를 이메일, 후속 메일, 퍼널 수치와 함께 가져옵니다 testimonial_requests_get

요청 하나의 이메일, 후속 메일, 상태, 퍼널 수치(sent, opened, clicked, submitted, bounced, unsubscribed)를 반환합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/requests/:id/stop.json 요청을 중지합니다 testimonial_requests_stop

아직 보내지 않은 모든 이메일을 즉시 취소합니다. 이미 보낸 것에는 영향이 없으며, testimonial_requests_resume이 멈춘 곳에서 이어갑니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/stop.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
PATCH /sites/:site_id/testimonials/requests/:id.json 요청의 이름, 양식, 이메일을 변경합니다 testimonial_requests_update

언제든 허용됩니다. 변경은 아직 보내지 않은 모든 이메일에 적용됩니다. 후속 메일의 지연 시간을 바꾸면 대기 중인 후속 메일의 시각이 다시 계산됩니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 요청 수신자

POST /sites/:site_id/testimonials/requests/:request_id/recipients.json 요청에 사람을 추가합니다 testimonial_request_recipients_create

한 번에 최대 500명입니다. 초안에 추가하면 testimonial_requests_send를 기다립니다. 진행 중인 요청에 추가하면 즉시 첫 이메일을 받습니다. 응답에는 대기열에 넣은 수와 건너뛴 수가 사유별로 있습니다. 진행 중인 요청에 추가하면 워크스페이스 밖의 사람에게 이메일이 가므로 멤버에게 이메일로 알립니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/requests/:request_id/recipients.json 요청에서 선택한 사람들을 제거합니다 testimonial_request_recipients_delete

아무것도 보내지 않은 사람(queued 또는 skipped)만 해당합니다. 본문에 최대 100개의 주소를 받습니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/requests/:request_id/recipients/import.json CSV 파일로 요청에 사람을 추가합니다 testimonial_request_recipients_import

호출이 두 번 필요합니다. 파일(또는 csv로 텍스트)을 보내 열, 첫 몇 행, upload_token을 받습니다. 그다음 열 번호에서 필드로의 매핑을 보내세요. 최대 5MB와 10,000행입니다. 진행 중인 요청에 추가하면 워크스페이스 밖의 사람에게 이메일이 가므로 멤버에게 이메일로 알립니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients/import.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/requests/:request_id/recipients.json 요청의 사람들을 나열합니다 testimonial_request_recipients_list

사람의 현재 상태로 필터링합니다. status opened는 "열었지만 클릭하거나 답하지 않음"입니다. 호출자가 콘텐츠를 편집할 수 있는 경우가 아니면 이메일 주소는 null입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/requests/:request_id/recipients/resume.json 요청에서 선택한 사람들을 재개합니다 testimonial_request_recipients_resume

멈춘 곳에서 이어집니다. 본문에 최대 100개의 주소를 받습니다. 워크스페이스 밖의 사람에게 이메일이 가므로 멤버에게 이메일로 알립니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients/resume.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/requests/:request_id/recipients/stop.json 요청에서 선택한 사람들을 중지합니다 testimonial_request_recipients_stop

더 이상 이메일을 받지 않습니다. 각자 기존 상태를 유지하며 "stopped"가 추가됩니다. 본문에 최대 100개의 주소를 받습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients/stop.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 이미지

POST /sites/:site_id/testimonials/images/bulk.json 컬렉션의 승인된 모든 추천사에 대한 이미지를 만듭니다 testimonial_images_bulk_create

한 번에 최대 200개의 추천사이며 각각 크기별로 이미지 하나입니다. 그림에 비해 너무 긴 글은 하이라이트로 그리고, 없으면 첫 문장들로 그립니다(excerpted가 몇 개인지 알려 줍니다). 응답에는 시작된 이미지, 이유와 함께 제외된 추천사, export_id가 있습니다. 이미지가 그려지면 PNG를 묶은 zip 하나가 내보내기 페이지에 나타납니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/images/bulk.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/images.json 승인된 추천사 하나의 이미지를 크기별로 하나씩 만듭니다 testimonial_images_create

승인된 추천사만 그릴 수 있습니다. PNG에 공개 주소가 생기기 때문이며, 그 외에는 not_approved로 거부됩니다. 각 이미지는 rendering으로 시작해 백그라운드에서 그려집니다. 응답은 시작된 이미지 목록입니다. file_url은 testimonial_images_get으로 폴링하세요. text_too_long이 있는 422는 글이 맞지 않는다는 뜻입니다. text_mode를 highlight나 excerpt로 하거나 더 높은 크기를 쓰세요.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/images.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/images/:id.json 이미지와 그 파일을 삭제합니다 testimonial_images_delete

PNG가 미디어 호스트에서 삭제되고 주소가 더 이상 작동하지 않습니다. 이미지에는 휴지통이 없습니다. testimonial_images_create로 추천사에서 다시 만들 수 있습니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/images/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/images.json 사이트의 이미지를 나열합니다 testimonial_images_list

승인된 추천사로 만든 이미지이며 최신순으로 페이지당 25개입니다. status, template, size 또는 testimonial_id로 필터링하세요. 각 이미지는 준비되면 file_url을 포함합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/images.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/images/:id.json 이미지 하나를 상태와 PNG 주소와 함께 가져옵니다 testimonial_images_get

status는 rendering, ready 또는 failed입니다. 준비되면 file_url이 설정됩니다. testimonial_images_create 이후 status가 더 이상 rendering이 아닐 때까지 이것을 폴링하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/images/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/images/:id.json 이미지가 그려지는 방식을 변경하고 다시 렌더링합니다 testimonial_images_update

바뀌는 것만 보내세요. 아무것도 보내지 않으면 지금의 추천사로 같은 이미지를 다시 렌더링하며, 실패한 이미지를 재시도하는 방법이기도 합니다. 새 렌더링은 새 file_url을 갖고 이전 파일은 삭제됩니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/images/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 이전

POST /sites/:site_id/testimonials/imports/migrations/:id/discard.json 이전 작업이 읽은 항목을 폐기합니다 testimonial_migrations_discard

item_ids(testimonial_migrations_review의 ID) 또는 아직 대기 중인 모든 항목을 뜻하는 all true를 보내세요. 둘을 함께 보내면 안 됩니다. 폐기한 항목은 검토 단계에서 사라지고 그 사람에 대해 읽은 내용은 삭제됩니다. 삭제되는 추천사는 없습니다. 그렇지 않으면 서버가 422와 selection 또는 unknown_ids 코드로 응답합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id/discard.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/imports/migrations.json 사이트의 이전 작업을 나열합니다 testimonial_migrations_list

최신순입니다. 이전 작업은 다른 추천사 도구의 내보내기 파일 하나입니다. 각각 출처 도구, 상태, 찾은 추천사 수, 보관한 수, 중복 수, 실패 수가 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/imports/migrations/:id/keep.json 이전 작업이 읽은 항목을 추천사로 보관합니다 testimonial_migrations_keep

item_ids(testimonial_migrations_review에서 가져온 것으로 한 번에 최대 100개) 또는 all true를 보내세요. 둘을 함께 보내면 안 됩니다. 보관한 항목은 각각 pending 또는 approved 상태의 추천사가 되며, keep_approval true는 다른 도구에서 받은 승인을 유지합니다. all을 쓸 때 include_likely_duplicates가 true가 아니면 중복 가능성이 높은 항목은 제외됩니다. 보관한 항목은 월간 추천사 사용량에 포함되지 않습니다. 보관하지 않은 항목은 30일 동안 검토 단계에 남습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id/keep.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/imports/migrations/:id/review.json 이전 작업이 읽었고 아직 결정하지 않은 항목을 나열합니다 testimonial_migrations_review

결정을 기다리는 항목을 최근 실행 순으로 나열합니다. show는 new, duplicates 또는 all(기본값)이며, rating은 나열한 별점만 남깁니다. 항목 ID를 testimonial_migrations_keep이나 testimonial_migrations_discard에 전달하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id/review.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/imports/migrations/:id.json 이전 작업의 진행 상황과 개수를 가져옵니다 testimonial_migrations_get

파일의 출처 도구, 상태, 찾은 추천사 수, 보관한 수, 중복 수, 실패 수, 함께 가져오는 미디어 파일 수, 시작과 종료 시각을 반환합니다. 상태가 파일을 아직 읽는 중이라고 하는 동안 폴링하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

추천사 저장된 보기

POST /sites/:site_id/testimonials/views.json 받은 편지함의 필터, 검색어, 정렬, 레이아웃을 이름을 붙여 저장합니다 testimonial_saved_views_create

개인 보기는 analytics.read만 있으면 됩니다. 공유 보기는 content.write가 필요하며, 없으면 not_allowed 코드로 거부됩니다. 고정된 보기는 개수와 함께 사이드바에 표시됩니다. testimonials_list와 view_id로 엽니다.

권한: analytics.read

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/views.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/views/:id.json 저장된 보기를 삭제합니다. 추천사는 건드리지 않습니다 testimonial_saved_views_destroy

저장된 보기는 저장된 필터일 뿐이므로 보기만 사라집니다. 이 보기가 공급하던 위젯이나 월은 설정을 유지하지만 다른 피드를 지정하기 전까지 표시할 것이 없습니다. 개인 보기는 소유자가 삭제하고, 공유 보기는 content.write가 필요합니다. 그렇지 않으면 not_allowed 코드로 거부됩니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: analytics.read · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/views/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/views.json 호출자가 열 수 있는 사이트의 저장된 보기를 나열합니다 testimonial_saved_views_list

호출자 본인의 보기와 모든 공유 보기를 반환하며, 고정된 보기가 순서대로 먼저 나오고 그다음 이름순입니다. scope는 all(기본값), mine 또는 shared입니다. 보기의 ID를 view_id로 testimonials_list에 전달하면 그 보기에 담긴 추천사를 읽을 수 있습니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/views.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/views/:id.json 저장된 보기의 이름을 바꾸거나 저장 내용을 바꾸거나 고정하거나 공유합니다 testimonial_saved_views_update

보낸 입력만 변경됩니다. name, 저장된 검색어(q), filters, sort, layout, columns, position, pinned, shared입니다. 개인 보기는 소유자가 변경합니다. 공유 보기를 바꾸거나 어떤 보기든 공유하거나 공유를 해제하려면 content.write가 필요합니다.

권한: analytics.read

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/views/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 중복

POST /sites/:site_id/testimonials/duplicates/dismiss.json 그룹이 중복이 아니라고 표시합니다. 대기열로 다시 돌아오지 않습니다 testimonial_duplicates_dismiss

testimonial_ids는 testimonial_duplicates_list가 반환하는, 휴지통 밖에 있는 중복 대기열의 열린 그룹 하나의 모든 사본이어야 합니다. 추천사에서는 아무것도 병합되거나 변경되지 않으며, 다시는 함께 묶이지 않습니다. 세 개짜리 그룹을 나누려면 같은 두 개를 먼저 병합하세요. ID가 정확히 열린 그룹 하나가 아니면 서버가 422로 응답합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/duplicates/dismiss.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/duplicates.json 같은 추천사가 두 번 들어온 것으로 보이는 그룹을 나열합니다 testimonial_duplicates_list

정확히 일치하는 그룹이 먼저 나옵니다. 각 그룹에는 사본 전체와 유지될 사본인 keeper_id가 있습니다. meta.exact_groups는 testimonial_duplicates_merge_exact가 병합할 그룹 수입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/duplicates.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/:id/merge.json 추천사의 사본을 경로의 추천사 하나로 병합합니다 testimonials_merge

유지되는 추천사는 상태와 확인됨 상태를 그대로 두며, body_from이 다른 사본을 지정하지 않는 한 내용도 유지합니다. 없는 태그, 수동 컬렉션, 배치, 사용자 지정 속성을 가져옵니다. 사본은 병합됨으로 표시되어 휴지통으로 가며, 하나를 복원하면 그 사본의 병합이 취소됩니다. 이번 달에 도착한 사본은 더 이상 신규 추천사로 집계되지 않습니다. 응답에는 meta.undo_id가 포함됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/merge.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/duplicates/merge_exact.json 대기열에서 정확히 일치하는 모든 항목을 한 번에 병합합니다 testimonial_duplicates_merge_exact

먼저 dry_run으로 개수를 확인한 다음, 받은 총계를 confirm_count로 보내세요. 호출당 최대 100개 그룹이 병합됩니다. 응답에는 meta.undo_id가 포함되며, 한 번의 실행 취소로 전체 실행이 되돌려집니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/duplicates/merge_exact.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 컬렉션

POST /sites/:site_id/testimonials/collections/:id/items.json 수동 컬렉션에 추천사를 추가합니다 testimonial_collections_add_items

한 번에 최대 100개입니다. 지정한 순서대로 맨 아래에 추가되며, position top이면 맨 위에 추가됩니다. 응답에는 testimonials_bulk_undo가 7일 동안 받는 meta.undo_id가 있습니다. 스마트 컬렉션은 직접 추가할 수 없습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id/items.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/collections.json 수동 또는 스마트 컬렉션을 만듭니다 testimonial_collections_create

kind manual은 직접 구성하며 testimonial_ids로 채워서 시작할 수 있습니다. kind smart는 조건으로 최신 상태를 유지하며, 조건은 match로 연결된 field, operator, value 행입니다. 응답에는 개수와 규칙을 쉬운 영어로 풀어 쓴 설명이 있으므로, 한 번의 호출로 문장 하나가 살아 있는 컬렉션이 됩니다. 먼저 testimonial_collections_preview로 규칙을 시험해 보세요. kind는 나중에 바뀌지 않습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/collections.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/collections/:id.json 컬렉션을 30일 동안 휴지통으로 옮깁니다 testimonial_collections_destroy

컬렉션 안의 추천사는 건드리지 않습니다. 컬렉션이 공급하던 위젯이나 월은 복원될 때까지 그 컬렉션에서 아무것도 표시하지 않습니다. testimonial_trash_restore로 복원하세요. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/collections.json 사이트의 컬렉션을 나열합니다 testimonial_collections_list

각 컬렉션에는 현재 담긴 추천사 수, 그중 승인된 수, 스마트 컬렉션이면 규칙을 쉬운 영어로 풀어 쓴 설명, 공급하는 위젯과 월이 함께 표시됩니다. 휴지통의 컬렉션은 제외됩니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/collections/preview.json 아무것도 저장하지 않고 규칙 집합을 시험합니다 testimonial_collections_preview

지금 일치하는 추천사 수, 규칙을 쉬운 영어로 풀어 쓴 설명, 예시 다섯 개로 응답합니다. testimonial_collections_create나 testimonial_tags_update 전에 사용하세요. 잘못된 행은 그 행을 알려 주는 422입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections/preview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE /sites/:site_id/testimonials/collections/:id/items.json 수동 컬렉션에서 추천사를 뺍니다 testimonial_collections_remove_items

한 번에 최대 100개입니다. 추천사 자체는 변경되지 않습니다. 응답에는 meta.undo_id가 있으며, 실행 취소하면 각 추천사가 원래 자리로 돌아갑니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id/items.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/collections/:id/reorder.json 수동 컬렉션에서 추천사 하나를 다른 위치로 옮깁니다 testimonial_collections_reorder

position(1부터 셈), before_id, after_id 중 정확히 하나로 위치를 지정하세요. 이 순서가 컬렉션이 공급하는 모든 위젯과 월에 제공되는 순서입니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id/reorder.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/collections/:id.json 컬렉션 하나를 개수, 규칙, 공급 대상과 함께 가져옵니다 testimonial_collections_get

컬렉션의 추천사는 collection_id를 쓴 testimonials_list입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/collections/:id.json 컬렉션의 이름, 설명, 규칙, 제공 순서를 변경합니다 testimonial_collections_update

보낸 것만 변경됩니다. conditions를 보내면 스마트 컬렉션의 모든 규칙이 교체됩니다. kind는 고정입니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 태그

POST /sites/:site_id/testimonials/tags/:id/apply_rules.json 태그의 규칙을 이미 저장된 추천사에 실행합니다 testimonial_tags_apply_rules

dry_run true(기본값)는 아무것도 바꾸지 않고 개수로 응답합니다. 태그가 붙을 추천사 수, 전체 수, 이미 태그가 있는 수입니다. dry_run false는 하나의 일괄 작업으로 태그를 붙이고 testimonials_bulk_undo가 7일 동안 받는 undo_id로 응답합니다. 100개를 넘으면 백그라운드에서 실행되고 응답의 state는 running입니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id/apply_rules.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/tags.json 태그를 만듭니다. 규칙을 보내면 자동 태그 규칙도 함께 만듭니다 testimonial_tags_create

규칙은 { match, conditions }입니다. 규칙 하나라도 충족하는 추천사는 도착하는 순간 태그를 받습니다. 규칙은 태그를 추가하기만 합니다. 이미 저장된 추천사에 태그를 붙이려면 다음에 testimonial_tags_apply_rules를 호출하세요.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/tags.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/tags/:id.json 태그를 30일 동안 휴지통으로 옮깁니다 testimonial_tags_destroy

태그는 모든 추천사, 필터, 선택기에서 사라집니다. testimonial_trash_restore로 복원하면 그 태그가 있던 모든 추천사에 다시 붙습니다. 규칙에서 이 태그를 지정한 스마트 컬렉션은 그때까지 아무것도 일치시키지 않습니다. MCP에서는 이 도구가 아무것도 변경하지 않고 사람이 직접 처리할 앱 페이지로 응답합니다.

권한: content.write · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/tags.json 사이트의 태그를 규칙과 함께 나열합니다 testimonial_tags_list

각 태그에는 해당 태그를 가진 추천사 수, 구조화된 조건과 쉬운 영어로 된 자동 태그 규칙, 규칙이 마지막으로 적용된 시각이 함께 표시됩니다. 휴지통의 태그는 제외됩니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/tags.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/tags/:id/merge.json 태그를 다른 태그로 병합합니다 testimonial_tags_merge

이 태그를 가진 모든 추천사가 다른 태그를 받고, 모든 규칙이 다른 태그로 옮겨지며, 이 태그를 지정한 모든 스마트 컬렉션, 저장된 보기, 위젯, 월이 다른 태그를 지정하게 되고, 이 태그는 빈 채로 휴지통으로 갑니다. 유지되는 태그로 응답합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id/merge.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
PATCH /sites/:site_id/testimonials/tags/:id.json 태그의 이름, 색상, 규칙을 변경합니다 testimonial_tags_update

보낸 것만 변경됩니다. rules를 보내면 태그의 모든 규칙이 교체되고, 빈 목록은 규칙을 모두 제거합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 회사

GET /sites/:site_id/testimonials/companies.json 사이트의 회사를 소속 사람, 추천사, 평균 별점과 함께 나열합니다 testimonial_companies_list

사이트 사람들의 회사 이름과 웹사이트로 묶은 회사당 한 행입니다. 회사가 없는 사람은 어디에도 속하지 않습니다. query는 회사 이름이나 웹사이트 호스트의 일부와 일치합니다. sort는 name(기본값), people_desc, testimonials_desc 또는 received_desc입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/companies.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/companies/:id/merge.json 한 회사의 두 가지 표기를 다른 회사로 병합합니다 testimonial_companies_merge

경로에 있는 회사의 모든 사람이 into로 지정한 회사의 이름과 URL을 갖게 됩니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/companies/:id/merge.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/companies/:id.json 회사 하나를 소속 사람과 함께 가져옵니다 testimonial_companies_get

ID는 testimonial_companies_list가 반환하는 회사의 키이며, 웹사이트 호스트 또는 정규화된 이름입니다. 그 회사의 추천사는 company를 쓴 testimonials_list입니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/companies/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/companies/:id.json 회사의 이름과 URL을 모든 소속 사람에게 한 번에 고칩니다 testimonial_companies_update

회사의 ID는 URL이나 이름에서 나오므로 응답에 새 ID가 있을 수 있습니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/companies/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

추천사 휴지통

DELETE /sites/:site_id/testimonials/trash/permanent.json 휴지통의 항목을 최대 100개까지 영구 삭제합니다 testimonial_trash_delete_permanently

되돌릴 수 없습니다. confirm은 항목 하나일 때 항목의 이름(추천사는 작성자 이름)이나 ID이고, 여러 개일 때는 사이트 이름입니다. 휴지통에 있는 항목만 허용됩니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/trash/permanent.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/testimonials/trash/empty.json 휴지통의 모든 항목을 영구 삭제합니다 testimonial_trash_empty

되돌릴 수 없습니다. confirm은 사이트 이름입니다. 한 번에 최대 100개 항목이 삭제됩니다. 더 큰 휴지통은 백그라운드에서 비워지며 응답의 state는 running입니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/trash/empty.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/trash.json 휴지통의 항목을 한 종류씩 나열합니다 testimonial_trash_list

한 종류(기본값은 testimonial)의 항목으로 응답하며, meta.counts에는 모든 종류별로 휴지통에 있는 수가 있습니다. 각 항목에는 복원되는 위치, 표시하던 곳, 휴지통으로 옮긴 사람, 사라지는 시점이 표시됩니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/testimonials/trash.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/trash/restore.json 휴지통에서 최대 100개 항목을 원래대로 복원합니다 testimonial_trash_restore

ID는 한 종류여야 합니다. 추천사를 복원하면 testimonial_undo_records_undo가 7일 동안 받는 실행 취소 ID(data.id와 meta.undo_id)로 응답합니다. 복원은 신규 추천사로 집계되지 않습니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/trash/restore.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

캠페인

POST /sites/:site_id/campaigns/costs.json 월별 캠페인 지출 설정 campaign_costs_create

한 캠페인의 한 달 광고비를 기록해서 campaigns_list가 획득당 비용과 광고 수익률을 보여 줄 수 있게 합니다. 같은 캠페인과 월의 항목이 이미 있으면 중복되지 않고 교체되므로 두 번 호출해도 안전합니다. campaign은 추적 링크에 나타나는 utm_campaign 값이고, month는 YYYY-MM입니다(2026-09-15 같은 전체 날짜도 허용되며 그 달의 1일로 맞춰짐). amount는 소액 단위가 아닌 주요 단위의 숫자입니다(1250.50). currency는 선택 사항인 3자리 ISO 코드이며 기본값은 사이트 통화입니다. 응답은 소액 단위의 amount_minor가 포함된 저장된 항목을 반환합니다. 여러 행을 한 번에 넣으려면 campaign_costs_import를 사용하세요. content.write가 필요합니다. Business 또는 Enterprise 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/campaigns/costs.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/campaigns/costs/:id.json 캠페인 비용 항목 삭제 campaign_costs_delete

campaign_costs_list의 ID로 찾은 지출 항목 하나를 영구 삭제합니다. 되돌릴 수 없으며, 해당 캠페인과 월의 CPA와 ROAS는 즉시 그 지출을 포함하지 않게 됩니다. 다른 달과 다른 캠페인은 영향을 받지 않습니다. 삭제된 항목을 반환합니다. content.write가 필요합니다. Business 또는 Enterprise 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/campaigns/costs/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/campaigns/costs/import.json CSV에서 캠페인 비용 가져오기 (campaign,month,amount[,currency]) campaign_costs_import

CSV로 광고비를 일괄 가져옵니다. 많은 캠페인과 월을 빠르게 불러오는 방법입니다. CSV 텍스트를 csv로 보내거나(도구와 API 호출에 가장 적합) file로 파일을 업로드하세요(multipart만 가능). 첫 행은 campaign, month, amount가 들어 있는 헤더여야 하며 currency 열은 선택입니다. 예를 들어 campaign,month,amount,currency 다음에 spring_sale,2026-09,1250.50,USD가 옵니다. month는 YYYY-MM, amount는 주요 단위이며 currency의 기본값은 사이트 통화입니다. 행은 campaign과 month 기준으로 upsert되므로 같은 파일을 다시 가져와도 중복되지 않습니다. 한도는 1MB와 5,000행입니다. 잘못된 행이 있어도 가져오기는 멈추지 않습니다. 응답에는 imported(저장된 수), failed(거부된 수), errors(처음 50개의 메시지이며 각각 해당 행을 명시하고, 행 2가 첫 데이터 행)가 있습니다. 헤더 열 누락, 파일 크기 초과, 잘못된 CSV는 전체 요청이 실패합니다. content.write가 필요합니다. Business 또는 Enterprise 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/campaigns/costs/import.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/campaigns/costs.json 캠페인 비용 항목 목록 보기 campaign_costs_list

사이트에 기록된 광고비 항목을 최근 월순, 이어서 캠페인 이름순으로 나열합니다. 각 행은 한 캠페인의 한 달이며, amount_minor(통화 소액 단위의 정수이므로 125050은 1,250.50을 뜻함), currency(ISO 4217, 대문자), YYYY-MM 형식의 month, 항목 id(UUID, campaign_costs_update와 campaign_costs_delete에 사용)가 있습니다. campaign을 전달하면 한 캠페인만 볼 수 있습니다(utm_campaign 값과 대소문자 구분 없이 일치). page와 per_page(최대 100)로 페이지를 나눕니다. 비용은 campaigns_list의 CPA와 ROAS에 반영되므로, 캠페인에 어떤 지출이 있는지 여기서 확인하세요. analytics.read가 필요합니다. Business 또는 Enterprise 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/campaigns/costs.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/campaigns/costs/:id.json 캠페인 비용 항목 변경 campaign_costs_update

campaign_costs_list의 ID로 찾은 기존 지출 항목을 변경합니다. 보낸 입력만 변경되므로 숫자를 고치려면 amount만 보내세요. amount는 주요 단위(1250.50)이며 소액 단위로 저장되고, month는 YYYY-MM, currency는 3자리 ISO 코드입니다. campaign 또는 month를 다른 항목이 이미 가진 조합으로 바꾸면 병합되지 않고 검증 오류로 실패합니다. ID를 모르는 상태에서 캠페인과 월의 지출을 바로잡으려면 기존 항목을 교체하는 campaign_costs_create를 호출하세요. content.write가 필요합니다. Business 또는 Enterprise 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/campaigns/costs/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/campaigns/builder.json UTM 태그가 붙은 URL 만들기 및 검증 campaigns_builder

랜딩 페이지용 UTM 태그가 붙은 URL을 만들고 값을 검사합니다. 아무것도 저장하지 않고 데이터도 읽지 않으므로 반복해서 호출해도 안전합니다. destination(전체 https:// URL)과 필요에 따라 utm_source, utm_medium, utm_campaign, utm_content, utm_term을 전달하거나, preset(newsletter, social, paid_search 등)을 골라 utm_source와 utm_medium을 비워 둔 경우 채우세요. url(오류가 있으면 null), valid, destination, preset, 정리된 utm_* 값, issues({field, level, message}의 목록이며 level이 error면 URL이 차단되고 warning은 소문자 변환 같은 수정을 제안만 함), presets(사용 가능한 preset 값)를 반환합니다. 값은 공백 없는 소문자로 정리됩니다. 트래픽에 이미 존재하는 지저분한 UTM 값을 찾으려면 campaigns_hygiene를, 진행된 캠페인을 리포트하려면 campaigns_list를 사용하세요. 짧은 URL과 클릭 수가 있는 태그 링크를 보관하려면 links_create를 대신 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/campaigns/builder.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/campaigns/hygiene.json UTM 정리 상태: 거의 중복된 값, 스타일 문제, 알 수 없는 소스 campaigns_hygiene

태깅을 고칠 수 있도록 한 기간의 트래픽에서 지저분한 UTM 값을 찾습니다. period, duplicates, style_issues, unknown_sources를 반환합니다. duplicates는 대소문자, 공백, 구두점만 다른 utm_source, utm_medium, utm_campaign 값을 묶은 것으로(Facebook, facebook, face-book), 각각 {field, suggestion, variants: [{value, visits}]} 형태이며 방문이 가장 많은 표기를 제안합니다. style_issues는 소문자, 공백 없음 규칙을 어기는 값을 {field, value, visits, suggestion}으로 나열합니다(최대 50개). unknown_sources는 인식된 채널이 아닌 utm_source 값을 {value, visits}로 나열합니다(최대 50개). 필드별 상위 500개 값만 검사합니다. 수치는 방문 기준입니다. 제안은 조언일 뿐이며 변경되는 것은 없습니다. 변형을 하나의 채널로 병합하려면 channel_rules_create를 사용하세요. 공통 period와 filters 입력을 받습니다. 성과는 campaigns_list, 깔끔한 태그 URL 생성은 campaigns_builder를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/campaigns/hygiene.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/campaigns.json 전환, 매출, 비용, CPA, ROAS가 포함된 캠페인 요약 campaigns_list

utm_campaign으로 만든 캠페인 성과 리포트이며 비용과 광고 수익률을 포함합니다. period, currency(사이트 통화), goal_id와 goal_name(전환을 집계하는 목표), campaigns, totals, unconverted_costs를 반환합니다. 각 캠페인에는 visitors, visits, conversions, conversion_rate(0에서 100 사이의 퍼센트, conversions를 visits로 나눈 값), revenue, sources(소스와 매체별 행이며 같은 지표)가 있습니다. 비용이 있으면(campaign_costs_list에서) 캠페인에 cost, cpa(전환당 비용, 전환이 없으면 null), roas(revenue를 cost로 나눈 값으로 2.5 같은 비율, 비용이 없으면 null)도 있습니다. 금액(revenue, cost, cpa)은 사이트 통화의 소액 단위(센트) 정수입니다. 비용은 캠페인 이름과 대소문자 구분 없이 일치시키고 기간에 포함된 각 달의 일수에 따라 일할 계산합니다. 비용은 있지만 트래픽이 없는 캠페인도 목록에 나옵니다. 캠페인은 최대 100개이며 방문이 많은 순입니다. utm_campaign이 있는 방문만 포함됩니다. goal_id의 기본값은 첫 번째 활성 목표이므로, 특정 목표를 측정하려면 명시적으로 전달하세요(ID는 goals_list에서 가져옴). 이름 정리는 campaigns_hygiene를, 단순한 트래픽 분할은 dimension이 utm_campaign인 stats_breakdown을 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/campaigns.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

크롤러

DELETE /sites/:site_id/crawlers/connection.json Cloudflare 연결을 해제하고 가져온 크롤러 요청 삭제 crawlers_cloudflare_disconnect

사이트에서 Cloudflare 연결을 해제합니다. 저장된 API 토큰과 Cloudflare에서 가져온 모든 크롤러 히트가 삭제되며 되돌릴 수 없습니다. 전달된 서버 로그에서 온 히트는 남습니다. 토큰은 Cloudflare 계정에서 직접 삭제하기 전까지 그곳에 남아 있습니다. 사이트에 연결이 없으면 실패합니다. 제거된 연결을 반환합니다. sites.manage가 필요합니다.

권한: sites.manage · HTTP 전용 (MCP 도구 아님)

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/crawlers/connection.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/crawlers/sync.json 지금 Cloudflare에서 크롤러 요청 가져오기 crawlers_cloudflare_sync

이미 연결된 사이트에 대해 정기 일정을 기다리지 않고 즉시 Cloudflare 가져오기를 대기열에 넣습니다. 연결 정보와 함께 바로 반환되며(HTTP 202), 가져오기는 백그라운드에서 실행됩니다. 언제 끝났는지 알려면 crawlers_report를 폴링하면서 cloudflare.last_synced_at을 확인하세요. 사이트에 Cloudflare 연결이 없으면 실패합니다. sites.manage가 필요합니다.

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/crawlers/sync.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/crawlers.json AI 크롤러 리포트: 시간별 크롤러 히트, 크롤러별 상위 경로, 카테고리별 crawlers_report

전달된 서버 로그와 Cloudflare 가져오기를 바탕으로, 어떤 AI, 검색, SEO 크롤러가 사이트를 가져가는지, 얼마나 자주, 어떤 경로를 가져가는지 리포트합니다. 이것은 방문자 트래픽이 아니라 크롤러 트래픽이므로 stats_breakdown에는 나타나지 않습니다. category는 ai(기본값), search, seo, other 또는 all이고, crawler는 GPTBot이나 ClaudeBot 같은 이름 있는 봇 하나로 좁힙니다. 범위는 period(기본값 30d) 또는 사용자 지정 from과 to로 고릅니다. 결과에는 period(날짜로 된 from과 to), category, crawler, totals(hits, 고유 경로 수, 고유 크롤러 수), categories(카테고리 필터를 무시한 카테고리별 hits), crawlers(crawler, category, hits, paths가 있는 최대 50행), series(상위 8개 크롤러의 일별 라벨과 일별 hits), top_paths(상위 8개 크롤러 각각에 대해 가장 많이 가져간 경로 10개), has_data(hits가 생기기 전에는 false), cloudflare(zone, status, last_synced_at이 있는 연결, 또는 null)가 있습니다. 결과는 Cloudflare 변경 직후를 제외하고 최대 30분간 캐시됩니다. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/crawlers.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

트래픽 규칙

POST /sites/:site_id/traffic_rules.json 트래픽 규칙 추가 traffic_rules_create

사이트의 차단 또는 허용 목록 중 하나에 패턴을 추가합니다. list는 hostnames, paths, referrers, countries, ip_ranges, user_agents 또는 events 중 하나입니다. pattern은 *를 와일드카드로 사용하며 대소문자를 구분하지 않습니다. 예를 들어 /admin/*, 호스트 이름, spam.example 같은 리퍼러 호스트, 2자리 국가 코드(대문자로 저장됨), User-Agent가 줄어들기 때문에 주 버전이 있는 브라우저 이름(예를 들어 Chrome 120), 또는 사용자 지정 이벤트 이름입니다. ip_ranges는 유효해야 하는 IPv4 또는 IPv6 주소나 CIDR(203.0.113.0/24)을 받습니다. 패턴은 목록마다 한 번만 존재할 수 있고, 사이트는 최대 500개의 규칙을 가질 수 있습니다. 목록이 일치를 차단하는지 허용하는지는 모드에 따라 달라지며, 기본값은 block이고 sites_update로 변경합니다. 일치하는 히트는 수집 시점에 버려지고 저장되지 않으며, 규칙은 몇 분 안에 새 히트에만 적용됩니다. sites.manage가 필요합니다. Pro 이상 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: sites.manage

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/traffic_rules.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/traffic_rules/:id.json 트래픽 규칙 삭제 traffic_rules_delete

traffic_rules_list의 ID로 찾은 트래픽 규칙을 삭제합니다. 규칙이 버리던 히트는 그때부터 다시 집계되며, 이미 버려진 히트는 영영 사라집니다. 허용 모드 목록의 마지막 패턴을 삭제하면 그 목록이 필터링을 멈춘다는 점에 유의하세요. 삭제된 규칙을 반환합니다. sites.manage가 필요합니다.

권한: sites.manage

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/traffic_rules/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/traffic_rules.json 트래픽 규칙 목록 보기 traffic_rules_list

사이트의 트래픽 규칙을 나열합니다. 수집 시점에 적용되어 어떤 히트를 집계할지 결정하는 차단 또는 허용 목록입니다. 각 규칙에는 id(수정과 삭제에 쓰는 UUID), list(hostnames, paths, referrers, countries, ip_ranges, user_agents 또는 events), pattern, label(선택 메모), mode(block 또는 allow, 해당 목록 전체의 모드), created_at이 있습니다. block 모드에서는 목록의 어떤 패턴과 일치하는 히트가 버려지고, allow 모드에서는 어떤 패턴에도 일치하지 않는 히트가 버려지며, 빈 목록은 아무것도 필터링하지 않습니다. list로 필터링합니다. 목록의 모드는 여기서 설정하지 않으며 traffic_rule_modes를 사용하는 sites_update로 설정합니다. 샘플 히트를 확인하려면 traffic_rules_test를 사용하세요. analytics.read가 필요합니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/traffic_rules.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/traffic_rules/test.json 사이트의 현재 규칙에서 히트가 집계될지 테스트 traffic_rules_test

샘플 히트가 사이트의 현재 트래픽 규칙에서 집계될지 알려 주는 시험 실행입니다. 아무것도 저장되지 않습니다. url(전체 페이지 URL이며 호스트와 경로를 확인), referrer(URL 또는 호스트 이름), country(2자리 코드), ip(ip_ranges와 대조하며 저장되지 않음), user_agent(전체 User-Agent 문자열이며 브라우저와 주 버전으로 줄어듦), event(사용자 지정 이벤트 이름) 중 원하는 것을 보내세요. 생략한 값은 확인하지 않습니다. 결과에는 counted(히트가 기록될 것이면 true), blocked_by(히트를 버린 목록, 또는 null), mode(해당 목록의 block 또는 allow, 또는 null), values(확인된 정규화된 값)가 있습니다. 규칙은 실시간으로 읽으므로 새 규칙은 즉시 반영됩니다. analytics.read가 필요합니다. Pro 이상 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: analytics.read

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/traffic_rules/test.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
PATCH /sites/:site_id/traffic_rules/:id.json 트래픽 규칙 변경 traffic_rules_update

traffic_rules_list의 ID로 찾은 트래픽 규칙의 패턴이나 라벨을 변경합니다. 보낸 입력만 변경됩니다. list는 변경할 수 없으며, 다른 목록으로 옮기려면 규칙을 삭제하고 다시 만드세요. 패턴은 해당 목록에 유효해야 하고(ip_ranges는 CIDR) 목록 내에서 고유해야 합니다. 라벨을 지우려면 빈 label을 보내세요. 새 히트에만 적용됩니다. sites.manage가 필요합니다. Pro 이상 요금제가 필요합니다(그렇지 않으면 402 plan_limit).

권한: sites.manage

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/traffic_rules/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

퍼널

POST /sites/:site_id/funnels.json 퍼널 만들기 funnels_create

퍼널을 만듭니다. 방문이 거쳐 가는 단계의 순서이며 방문 단위로 측정됩니다. name과 steps를 전달하세요. steps는 {type, value, match, name}의 순서 있는 목록입니다. type은 page, event 또는 goal입니다. value는 page 단계에서는 경로(예를 들어 /pricing), event 단계에서는 사용자 지정 이벤트 이름, goal 단계에서는 목표 ID(goal_..., goals_list에서 가져옴)입니다. match는 page 단계에서만 쓰이며 exact, prefix, glob(* 와일드카드) 또는 regex입니다. 기본값은 value에 *가 있으면 glob, 없으면 exact입니다. name은 선택 사항인 라벨입니다. value가 빈 단계는 버려집니다. order_mode는 strict(각 단계가 이전 단계 뒤에 와야 함, 기본값) 또는 any(단계 순서 무관)입니다. window는 visit(기본값) 또는 day이며, 방문자 ID를 저장하지 않으므로 둘 다 하나의 방문 안에서 측정합니다. 요금제 한도가 적용됩니다. Free는 사이트당 퍼널 3개와 5단계를 허용하고, Pro는 10단계, Business는 20단계를 허용하며, 퍼널에는 최소 2단계가 필요합니다. id(fun_...)가 있는 퍼널을 반환합니다. 결과는 funnels_get으로 읽으세요. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X POST https://privatusanalytics.com/sites/:site_id/funnels.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /sites/:site_id/funnels/:id.json 퍼널 삭제 funnels_delete

퍼널 정의를 영구 삭제합니다. 분석 데이터는 건드리지 않지만 퍼널과 그 설정은 복구할 수 없으며 되돌릴 수 없습니다. 삭제된 퍼널을 반환합니다. ID(fun_...)는 funnels_list에서 가져옵니다. 대신 퍼널을 수정하려면 funnels_update를 사용하세요. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X DELETE https://privatusanalytics.com/sites/:site_id/funnels/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/funnels.json 진입 수, 완료 수, 비율이 포함된 퍼널 목록 보기 funnels_list

사이트의 퍼널을 기간의 핵심 결과와 함께 이름순으로 나열합니다. 각 퍼널에는 id(fun_...), name, steps, order_mode, window, stats {entered, completed, conversion_rate}가 있으며, entered는 1단계에 도달한 방문, completed는 마지막 단계에 도달한 방문, conversion_rate는 퍼센트(0에서 100)입니다. page와 per_page(최대 100, 기본값 25)로 페이지를 나눕니다. 공통 period와 filters 입력을 받습니다. 단계별 상세는 funnels_get을, 추가는 funnels_create를 사용하세요.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/funnels.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/funnels/:id.json 퍼널 리포트: 단계별 수, 전환, 이탈, 단계 사이 시간, 대신 방문이 이동한 곳 funnels_get

한 기간 동안의 퍼널 하나의 전환 리포트입니다. period, funnel_id, name, order_mode, window, steps, overall_conversion_rate, breakdown을 반환하며, compare를 쓰면 comparison도 반환합니다. 각 단계에는 index(1부터), name, type, value, match, count(도달한 방문), step_conversion_rate(이전 단계 대비 퍼센트), overall_conversion_rate(1단계 대비 퍼센트), dropoff와 dropoff_rate(이 단계 이후 이탈한 방문), median_seconds_from_previous(1단계는 null), next_pages(이탈한 방문이 다음에 본 상위 5개 페이지이며, 떠난 방문은 (exit))가 있습니다. 비율은 0에서 100 사이의 퍼센트입니다. breakdown을 channel, device, country, utm_campaign, utm_source, browser 또는 os로 설정하면 값별 전체 전환율을 받습니다(상위 20개). comparison에는 다른 기간의 카운트, overall_conversion_rate, change(퍼센트, 이전 비율이 0이면 null)가 있습니다. 페이지 필터는 방문을 끊어 버리므로 여기서는 무시되며, 대신 page 단계를 사용하세요. 공통 period, compare, filters, segment 입력을 받습니다. ID는 funnels_list에서 가져옵니다.

권한: analytics.read

예시
curl https://privatusanalytics.com/sites/:site_id/funnels/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/funnels/:id.json 퍼널 수정 funnels_update

퍼널을 변경합니다. 보낸 입력만 변경됩니다. steps를 보내면 단계 목록 전체가 교체되므로 모든 단계를 순서대로 보내세요(형식과 단계 한도는 funnels_create와 같으며, Free는 5단계, Pro는 10단계, Business는 20단계를 허용하고, goal 단계는 이 사이트의 목표를 지정해야 함). name, order_mode(strict 또는 any), window(visit 또는 day)도 변경할 수 있습니다. 결과는 읽을 때 정의로부터 계산되므로 퍼널을 바꾸면 모든 과거 기록에 즉시 적용되며, 이전에 표시된 과거 수치는 달라집니다. 퍼널을 반환합니다. ID는 funnels_list에서 가져옵니다. content.write 권한이 필요합니다.

권한: content.write

예시
curl -X PATCH https://privatusanalytics.com/sites/:site_id/funnels/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'