Docs
Navegar pela documentação

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.

Ver como 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

Todas as operações

Autenticação

Envie Authorization: Bearer pat_…. Crie tokens em Configurações do espaço de trabalho, Tokens de API. Guia de autenticação.

JSON em todo lugar

Adicione .json a qualquer caminho. As respostas são { "data": … } e os erros são { "error": { "code", "message" } }. Erros.

MCP

Envie um POST JSON-RPC para https://privatusanalytics.com/mcp com o mesmo token. Cada operação abaixo é uma ferramenta. Guia do MCP.

Baixar openapi.json · 527 operações

Ajuda e feedback

POST /help.json Enviar uma pergunta ou feedback para a equipe do Privatus Analytics support_message_send

A mensagem é enviada por e-mail à equipe com os dados da sua conta, do espaço de trabalho e do plano anexados. A resposta e um recibo vão para o e-mail da sua conta. Até 10 mensagens por dia.

Permissão: member

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

Alertas

POST /alerts/:id/acknowledge.json Reconhecer o incidente mais recente alerts_acknowledge

Marca o último incidente não reconhecido de um alerta como visto pelo usuário que faz a chamada. Isso não resolve o incidente nem silencia o alerta: o alerta se resolve sozinho quando a condição some. Se o alerta não tiver nenhum incidente não reconhecido, a chamada falha com um erro de validação. Retorna o alerta. Use alerts_history para ver os incidentes com acknowledged_at e acknowledged_by. Exige apenas acesso de leitura às análises, então leitores (viewers) podem reconhecer.

Permissão: analytics.read

Exemplo
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 Criar um alerta alerts_create

Cria uma regra de alerta que monitora um site (ou o espaço de trabalho inteiro para o kind usage) e notifica os canais escolhidos quando ela dispara. O caminho recebe workspace_id. name e kind são obrigatórios. kind define o que mais é necessário. threshold exige site_id, metric (visitors, visits, pageviews, bounce_rate ou conversion), operator (gt, gte, lt ou lte) e threshold, e conversion também exige goal_id. anomaly exige site_id e metric (visitors, visits ou pageviews), compara a última janela com a mesma janela em cada uma das 4 semanas anteriores e usa sensitivity (low, medium ou high). operator lt alerta apenas em quedas, gt apenas em picos e vazio em ambos. goal exige site_id, goal_id e threshold (conclusões na janela). no_data exige site_id e threshold em horas sem eventos (padrão 24). usage não exige site e usa threshold como porcentagem da cota mensal de eventos (padrão 80). uptime exige site_id e, opcionalmente, uptime_check_id (padrão todas as verificações do site). ssl exige site_id e threshold em dias antes de um certificado ou domínio expirar (padrão 14). vitals exige site_id, metric (lcp, inp, cls, fcp ou ttfb) e threshold em milissegundos (uma pontuação para cls). subscriptions exige site_id, metric (mrr_drop: o MRR caiu mais que threshold por cento nos últimos 30 dias, churn_rate ou mrr_churn_rate: o churn dos últimos 30 dias está acima de threshold por cento) e threshold (padrão 10), e é ignorado enquanto o site não tem provedor de pagamento conectado ou nada a medir. window_minutes (padrão 60, de 5 a 10080) é o quanto cada avaliação olha para trás. channel_ids vêm de notification_channels_list e sensitivity assume por padrão medium. Os alertas são avaliados automaticamente a cada 5 minutos. Os limites de bounce_rate e conversion são porcentagens de 0 a 100. testimonials exige site_id e metric, que diz o que ele monitora: new (chega um novo depoimento), low_rating (chega uma nota 3 ou menor), approved (um depoimento é aprovado), allowance (a cota mensal de novos depoimentos está 80% usada, esgotada, ou retendo um depoimento como em espera), sync_found (uma sincronização encontra novas avaliações), import_failed (uma importação falha, ou uma fonte falha em três sincronizações seguidas), removal_requested (alguém pede a remoção do seu depoimento) ou request_bounced (um e-mail de solicitação é devolvido). Um alerta de testimonials não é avaliado a cada 5 minutos: ele dispara na hora, cada vez que o fato acontece, registra um incidente que já está resolvido, e seu estado continua ok. Com metric allowance ele monitora o espaço de trabalho inteiro e não guarda site. Retorna o alerta criado com state ok.

Permissão: content.write

Exemplo
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 Excluir um alerta alerts_delete

Exclui permanentemente uma regra de alerta e todo o seu histórico de incidentes. Isso não pode ser desfeito e as notificações param imediatamente. Para pausar um alerta sem perder o histórico, use alerts_update com enabled false ou alerts_mute. O id (alr_...) vem de alerts_list. Retorna o alerta excluído como ele era. Exige permissão de escrita de conteúdo.

Permissão: content.write

Exemplo
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 Histórico de incidentes de um alerta alerts_history

Lista os incidentes de um alerta, do mais recente ao mais antigo e paginados. Cada incidente tem triggered_at, resolved_at (null enquanto ainda estiver aberto), value (o número medido quando disparou, na mesma unidade do limite do alerta), message (uma descrição legível), acknowledged_at e acknowledged_by (nome de exibição do membro, ou null). Defina open como true para ver apenas os incidentes não resolvidos. Use alerts_acknowledge para marcar o mais recente como visto e alerts_get para o estado atual da regra.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/alerts/:id/history.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/alerts.json Listar alertas alerts_list

Lista as regras de alerta de um espaço de trabalho (o caminho recebe workspace_id), ordenadas por nome e paginadas. Retorna um array data de alertas com a paginação em meta. Cada alerta tem id (alr_...), site_id (pa_..., null para alertas usage, que monitoram o espaço de trabalho inteiro), name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids (ids nch_...), state (ok ou triggered), enabled, muted_until, last_triggered_at, last_evaluated_at e created_at. Restrinja com site_id, state (ok ou triggered) ou kind. Use site_alerts_list para listar os alertas de um site a partir do caminho do site, alerts_get para um único alerta e alerts_history para seus incidentes. Quem tem acesso limitado a alguns sites nunca vê alertas usage.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/alerts.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /alerts/:id/mute.json Silenciar (ou reativar) as notificações de um alerta alerts_mute

Silencia as notificações de um alerta por um número de minutos, enquanto ele continua avaliando e registrando incidentes no histórico. minutes assume por padrão 60, o máximo é 43200 (30 dias) e 0 remove o silêncio na hora. A resposta é o alerta com muted_until definido para o fim do silêncio (null quando não está silenciado). Use alerts_update com enabled false para parar de avaliar por completo e alerts_acknowledge para marcar um incidente como visto sem silenciar.

Permissão: content.write

Exemplo
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 Obter um alerta alerts_get

Retorna uma regra de alerta pelo id (alr_..., de alerts_list ou site_alerts_list). A resposta é o objeto do alerta com id, site_id (null para alertas usage), name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids, state (ok ou triggered), enabled, muted_until, last_triggered_at, last_evaluated_at e created_at. Ela não inclui incidentes: use alerts_history para eles. threshold é um número cuja unidade depende do kind (veja alerts_create). Exige acesso de leitura às análises.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/alerts/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /alerts/:id.json Atualizar um alerta alerts_update

Altera uma regra de alerta existente (id de alerts_list). Apenas as entradas enviadas mudam, todo o resto mantém o valor. As mesmas regras por kind de alerts_create se aplicam ao resultado, então alterar kind ou metric pode exigir o site_id, goal_id, operator ou threshold correspondente. Envie channel_ids para substituir a lista inteira de canais de notificação e enabled false para parar de avaliar sem excluir. Para silenciar as notificações por um tempo mas continuar registrando incidentes, use alerts_mute. Retorna o alerta atualizado.

Permissão: content.write

Exemplo
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 Listar alertas de um site site_alerts_list

Lista as regras de alerta de um site (o caminho recebe site_id), ordenadas por nome e paginadas. Retorna os mesmos objetos de alerta e aceita os mesmos filtros state e kind de alerts_list, mas apenas para este site, então os alertas usage (que não têm site) não são incluídos. Escolha esta quando você já tiver um id de site e alerts_list quando quiser todos os alertas do espaço de trabalho. Cada alerta tem id (alr_...), site_id, name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids, state (ok ou triggered), enabled, muted_until, last_triggered_at, last_evaluated_at e created_at.

Permissão: analytics.read

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

Análises

GET /sites/:site_id/clicks.json Mapa de cliques: os elementos mais clicados do site, ou de uma página, com a parte das visitas dela que clicou em cada um clicks_list

Cliques por elemento, vindos do módulo de cliques do rastreador. Um elemento é um seletor CSS curto (tag, id e até duas classes, no máximo quatro níveis), ou [data-privatus-click="name"] quando o site deu um nome a ele. Envie path (começando com uma barra, como foi armazenado) para uma página: então os elementos são {selector, clicks, visits, visit_share}, page_visits é o número de visitas que viram a página e visit_share é a porcentagem delas (de 0 a 100) que clicou no elemento. Sem path, os elementos são {path, selector, clicks, visits} em todo o site. visits conta as visitas que clicaram pelo menos uma vez. Retorna period, path, page_visits e elements, do mais clicado para o menos clicado. Nunca coletamos o texto dos elementos, as coordenadas nem o movimento do mouse. Use pages_detail para ver o resto de uma página.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/clicks.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/overview.json Visão geral do site: métricas, séries do gráfico, painéis principais, visitantes ao vivo e notas stats_overview

Uma chamada que retorna tudo o que a página de visão geral do site mostra: use-a para responder a uma pergunta ampla, como "como está o site", em vez de chamar várias ferramentas. Retorna period, metrics (visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue), interval, series (uma entrada por intervalo de tempo), panels, notes e live_visitors. Com compare, acrescenta comparison_period, comparison, change e comparison_series, como em stats_aggregate e stats_timeseries. As unidades são as mesmas dessas ferramentas: bounce_rate é uma porcentagem de 0 a 100, visit_duration é a mediana de milissegundos engajados, revenue é um inteiro em unidades menores (centavos). panels é um objeto indexado pelo nome da dimensão, cada um com as 10 principais linhas e sua participação, no mesmo formato de linha de stats_breakdown para aquela dimensão. Por padrão retorna channel, referrer, page, entry_page, country, device, browser, os, utm_campaign, event e goal. Envie panels para escolher outras dimensões (qualquer nome de dimensão, exceto chaves prop). notes lista as anotações no intervalo como {id, date, end_date, title, url, color}. live_visitors conta os visitantes dos últimos 5 minutos. Para mais de 10 linhas de uma dimensão use stats_breakdown, e para um único número use stats_aggregate. Aceita as entradas compartilhadas period, compare, filters e segment.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/overview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/experiments/external.json Relatório de experimento: taxa de conversão por variante, ganho em relação ao controle e significância (teste z de duas proporções) experiments_report

Relata um teste A/B usando dados de eventos. As visitas são atribuídas à variante encontrada em uma propriedade de evento (o primeiro valor visto na visita, por exemplo a propriedade variant com os valores control e b), e uma conversão é uma visita que concluiu uma meta. As entradas obrigatórias são property (chave em minúsculas, até 64 caracteres) e goal_id (uma meta ativa, de goals_list). Retorna period, property, goal {id, name}, control, confidence (0.95) e variants. Cada variante tem visits, conversions, conversion_rate (porcentagem, de 0 a 100), control (true para a linha de base), uplift (variação percentual da taxa de conversão em relação ao controle, null para o controle ou quando a taxa do controle é 0), z, p_value e significant (true quando p_value é menor que 0.05, usando um teste z de duas proporções). O controle é a variante que você passar em control, senão uma chamada control, senão a variante com mais visitas. No máximo 20 variantes, das mais movimentadas para as menos. Certifique-se antes de que o site envia a variante como propriedade de evento. Aceita as entradas compartilhadas period e filters. Para uma taxa de conversão simples de uma meta, use goals_get. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/experiments/external.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/insights.json Mudanças notáveis em relação ao período anterior, em linguagem natural (maiores variações, mudanças de conversão de metas) insights_get

Mudanças notáveis em linguagem simples para um site, comparadas com o período anterior de mesma duração. Retorna period, comparison_period e insights. O período cobre dias completos até ontem, escolhido com period (7d, 14d, 28d ou 30d, padrão 7d). Cada insight tem dimension (total, channel, page, country ou goal), metric, value, previous, current, change e sentence. change é uma porcentagem para contagens e pontos percentuais para a taxa de conversão de metas, e sentence é uma frase em inglês pronta para ler. Inclui o total de visitantes e de visualizações de página, as duas maiores variações por dimensão (mudanças de 20 por cento ou mais com pelo menos 10 visitas ou visualizações) e as metas cuja taxa de conversão variou meio ponto ou mais. Os mais importantes primeiro, limitados por limit (padrão 8, máximo 20). Os resultados ficam guardados durante o dia. Para números exatos use stats_aggregate e stats_breakdown, e use esta para descobrir o que mudou.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/insights.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/journeys.json Jornadas: os 3 principais caminhos de 3 etapas depois de uma página (ou qualquer entrada), ou antes de uma página ou meta journeys_explore

Explora os caminhos de páginas de três etapas mais comuns dentro das visitas. No modo forward (padrão), mostra os caminhos depois de uma página inicial informada em path, ou depois de qualquer entrada quando path está em branco. No modo reverse, mostra os caminhos que levam a uma página final (path) ou a uma meta (goal_id, que muda para reverse automaticamente). reverse exige path ou goal_id. path deve começar com uma barra. Retorna period, mode, path, goal, sampled, sample_rate (porcentagem), total_visits e o grafo de caminhos com nodes e links por etapa, limitado a limit páginas por etapa (de 2 a 12, padrão 6). Acima de 100.000 visitas, os dados são amostrados. Filtros de página são ignorados porque encurtariam os caminhos. Os caminhos são montados por visita, já que nenhum id de visitante é armazenado. Aceita as entradas compartilhadas period, filters e segment. Para as páginas vizinhas de uma página use pages_detail, e para a conversão por etapa use funnels_get.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/journeys.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/pages/detail.json Detalhes da página: métricas, páginas anteriores e seguintes, origens, Web Vitals, eventos e mapa de cliques de um caminho pages_detail

Uma página em profundidade. Informe path (deve começar com uma barra, por exemplo /pricing), exatamente como foi armazenado (sem query string nem host). Retorna period, path, url, metrics, previous_pages, next_pages, sources, vitals, events, clicks, goals e notes. metrics tem visitors, visits, pageviews, entrances, exits, entry_rate, exit_rate e bounce_rate (porcentagens, de 0 a 100), time_on_page (mediana em milissegundos) e scroll_depth (mediana em porcentagem), sendo as duas últimas null quando não há dados de engajamento. previous_pages e next_pages são as páginas vistas antes e depois na mesma visita, como {value, count, share}, com (entrance) e (exit) como valores especiais. sources tem os principais canais e origens de referência das visitas que entraram por esta página. vitals tem os valores p75 por Web Vital com classificações. events são eventos personalizados disparados na página, clicks são os seletores de elementos mais clicados, goals são as metas concluídas nela e notes são as anotações que a mencionam. Use stats_breakdown com dimension page para classificar páginas e referrers_detail para um site de referência.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/pages/detail.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/referrers.json Referenciadores: os sites que apontam para este site, com visitantes, engajamento, tipo de tráfego e número de páginas com links referrers_list

Classifica os sites externos que enviaram visitantes, com o que cada um enviou. Visitas diretas (sem referenciador) ficam de fora. Retorna period, summary, channels, page, limit, has_more e rows. summary tem visitors, visits, pageviews, bounce_rate (porcentagem), visit_duration (mediana de milissegundos engajados), revenue (unidades menores, centavos), sites (número de sites de referência) e share (porcentagem de todas as visitas que vieram de referenciadores). channels mostra os tipos de tráfego como {value, visitors, visits}. Cada linha tem value (o host do referenciador), visitors, visits, pageviews, bounce_rate, visit_duration, revenue, channel (seu canal habitual), linking_pages (quantas páginas diferentes desse site apontam para cá) e share (porcentagem dos visitantes referenciados). Ordene com sort (visitors, visits, pageviews ou revenue, padrão visitors), restrinja com search (texto contido no host) e percorra as páginas com page e limit (máximo 100) enquanto has_more for true. Use referrers_detail para um site. Aceita as entradas compartilhadas period, compare, filters e segment.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/referrers.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/referrers/detail.json Detalhe do referenciador: métricas e tendência de um site de origem, suas páginas com links, páginas de entrada, países, dispositivos, campanhas e conversões referrers_detail

Um site de referência em profundidade. Informe referrer como o host sem www e sem caminho (por exemplo news.ycombinator.com), o mesmo valor de referrers_list. Retorna period, referrer, url, channel (seu canal mais comum), metrics, share (porcentagem de todas as visitas), interval, series (o tráfego ao longo do tempo), linking_pages, landing_pages, channels, countries, devices, campaigns, goals e, com compare, comparison, change e comparison_series. metrics e series usam os mesmos campos e unidades de stats_aggregate e stats_timeseries. linking_pages são as páginas do referenciador que enviaram visitantes, como linhas com path, url, visitors e share (query strings nunca são armazenadas). landing_pages são os lugares onde esses visitantes entraram. channels, countries, devices e campaigns são os principais valores com métricas, e goals lista as metas que eles concluíram com conversions e conversion_rate. Use referrers_list para classificar os sites de referência e stats_breakdown com dimension referrer para uma lista simples.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/referrers/detail.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/stats/aggregate.json Métricas principais de um período (com comparação) stats_aggregate

Números principais de um período, como um único objeto. Retorna period {from, to} e metrics {visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue}. Com compare, retorna também comparison_period, comparison (as mesmas métricas para o outro intervalo) e change (variação percentual por métrica, null quando o valor anterior era 0). Unidades: bounce_rate é uma porcentagem de 0 a 100 (10.9 significa 10,9%). visit_duration é a mediana do tempo engajado de uma visita em milissegundos. revenue é um inteiro em unidades menores (centavos) da moeda do site. views_per_visit é um decimal. Os visitantes são contados por dia porque nenhum id de visitante persistente é armazenado, então quem volta em outro dia conta de novo. Use-a para totais e variação entre períodos. Use stats_timeseries para um gráfico ao longo do tempo, stats_breakdown para os principais valores de uma dimensão e stats_overview para tudo isso em uma chamada. Restrinja qualquer uma delas com filters (veja filters para os nomes de dimensões e os operadores).

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/stats/aggregate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/breakdown/:dimension.json Principais valores de uma dimensão (páginas, origens, países…) stats_breakdown

Principais valores de uma dimensão com suas métricas, os mais importantes primeiro, paginados. A dimensão é a última parte do caminho e deve ser um nome exato da sua descrição (por exemplo country, page, channel, utm_campaign, prop:plan). Retorna period, dimension, label, page, limit, has_more e rows. Peça a próxima página enquanto has_more for true. Toda linha tem value e share (porcentagem do total do período). Os demais campos de uma linha dependem da dimensão. As dimensões de visita (channel, referrer, referrer_url, utm_*, ref, hostname, country, language, device, browser, browser_version, os, os_version, screen, entry_page, exit_page, interaction, bot_score) dão visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration e revenue. page dá pageviews, visits, time_on_page (milissegundos) e scroll_depth (porcentagem), sem visitors. event e prop:<key> dão completions, visits, revenue e conversion_rate. goal dá goal_id, completions, conversions, conversion_rate e revenue. Unidades: bounce_rate e conversion_rate são porcentagens (de 0 a 100), as durações são em milissegundos, revenue é em unidades menores (centavos). Uma dimensão errada retorna um 422 que lista os nomes válidos. Use search para procurar um valor em todas as linhas e filters para restringir os dados antes (por exemplo, as páginas visitadas por um país). Para uma página ou um referenciador em profundidade use pages_detail ou referrers_detail. As dimensões interaction e bot_score exigem o plano Business ou Enterprise: como breakdown elas respondem com 402 plan_limit nos outros planos, e um filtro sobre uma delas é deixado de fora.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/breakdown/:dimension.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/stats/timeseries.json Métricas por intervalo de tempo para gráficos stats_timeseries

Métricas por intervalo de tempo, para gráficos e tendências. Retorna period, interval (o intervalo realmente usado) e series, uma lista de {date, visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue}, uma entrada por intervalo, com date como o início do intervalo em ISO 8601. Com compare, retorna também comparison_series para o outro intervalo, intervalo a intervalo. As unidades são as mesmas de stats_aggregate: bounce_rate é uma porcentagem (de 0 a 100), visit_duration é a mediana de milissegundos engajados, revenue é em unidades menores (centavos). interval assume por padrão auto, que escolhe minuto, hora, dia, semana ou mês conforme o intervalo. Defina-o para forçar um tamanho de intervalo. Use stats_aggregate para um único total e stats_breakdown para dividir por uma dimensão, como country ou page.

Permissão: analytics.read

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

Análises dos depoimentos

GET /sites/:site_id/testimonials/analytics/breakdown.json Divida uma métrica de depoimentos por formulário, pedido, widget, mural, depoimento, canal, página, país ou origem testimonial_stats_breakdown

Retorna linhas, a maior primeiro, cada uma com key, label, value e share (um percentual do total), ou numerator e denominator para uma taxa. Uma linha de um registro (formulário, pedido, widget, mural, depoimento) traz o seu id. Cada dimensão aceita apenas algumas métricas: formulário e canal aceitam as métricas de formulário, pedido as métricas de pedido, widget e mural as suas próprias visualizações, cliques, taxa de cliques e video_plays, depoimento aceita testimonial_views e video_plays, página e país aceitam as métricas de visualização e clique, e origem aceita new_testimonials. Um par que não combina responde com 422 e nomeia as métricas que combinam.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics/breakdown.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/analytics/export.json Enfileire um arquivo de uma seção das análises de depoimentos testimonial_stats_export

Cria uma exportação do tipo testimonial_stats para o período informado e a devolve na fila. Consulte exports_get até que status seja complete, depois exports_download. section escolhe as linhas: days (uma linha por dia, semana ou mês com todas as métricas), forms, channels, requests, widgets, walls, pages, testimonials, sources ou countries. O arquivo é mantido por 7 dias. Responde com 422 in_progress quando já há exportações demais na fila.

Permissão: analytics.export

Exemplo
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 Leia as análises de depoimentos de um site em uma só chamada testimonial_stats_overview

Retorna tudo o que a aba Análises em Depoimentos mostra para um período: cards (form_views, submissions, completion_rate, answer_rate, widget_views, wall_views, cada um com previous e change quando compare está definido), chart (uma métrica ao longo do tempo), uma linha por formulário, pedido, widget e mural, channels (como os formulários foram abertos), pages (onde widgets e murais foram vistos), top_testimonials, new_testimonials (por origem e por status atual) e countries. As taxas são percentuais de 0 a 100 e são null quando não há com o que dividir. blank é true enquanto o site nunca contou nada, e recorded lista as métricas que já contou. São totais diários do recurso de depoimentos, não análises da web: use stats_overview para visitantes e visualizações de página.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/analytics/timeseries.json Leia uma métrica de depoimentos por dia, semana ou mês testimonial_stats_timeseries

Retorna pontos com date, to, value e, quando compare está definido, previous e previous_date, além de total, previous_total e change. Uma taxa (completion_rate, answer_rate, widget_click_rate, wall_click_rate) é calculada a partir dos totais de cada intervalo e é null para um intervalo sem com o que dividir. new_testimonials é contado a partir dos próprios depoimentos pelo dia em que cada um foi adicionado.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics/timeseries.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

Ao vivo

GET /sites/:site_id/live.json Visitantes ao vivo, fluxo de atividade e o que está popular agora (últimos 30 minutos) live_get

O que está acontecendo no site agora. Retorna live_visitors (visitantes nos últimos 5 minutos), window_minutes (30), sparkline (visitas por minuto nos últimos 30 minutos, do mais antigo ao mais recente, cada uma {minute, visits}), feed (a atividade mais recente), top_pages, top_referrers, top_countries (cada um com até 8 linhas de {value, visits}) e top_events (até 8 de {value, completions}) dos últimos 30 minutos. As entradas de feed têm occurred_at, kind, name, path, channel, referrer_host, country, device e browser. São anônimas, sem IP, cidade nem rastro do visitante. feed mostra todos os acessos por padrão, ou apenas visualizações de página ou eventos, com limit entradas (padrão 50, até o tamanho do buffer de 100). Os números não ficam em cache e não aceitam period. Passe filters (mesmo formato de stats_aggregate) para restringir todos os números e o feed aos acessos correspondentes. Use live_wallboard para uma visão compacta de vários sites e stats_overview para um período completo.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/live.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/live/wallboard.json Cartões do wallboard (ao vivo e hoje) de um ou mais sites live_wallboard

Cards compactos com números grandes para um ou mais sites, feitos para uma tela de escritório. Retorna rotate_seconds, generated_at e sites. Cada card de site tem id (pa_...), name, domain, live_visitors (últimos 5 minutos), sparkline (por minuto, últimos 30 minutos), visitors_today, pageviews_today, bounce_rate_today (porcentagem, de 0 a 100), top_pages, top_countries e top_referrers (5 linhas cada). Hoje significa o fuso horário do próprio site, e os números são lidos de dados ao vivo. site_ids lista os sites a incluir (até 12, apenas sites que seu token pode abrir), caso contrário é usado o site do caminho. rotate_seconds é limitado entre 5 e 300 e apenas informa a uma tela por quanto tempo mostrar cada card. Para uma tela pública compartilhável, use wallboard_links_create. Use live_get para a visão ao vivo completa de um site.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/live/wallboard.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /wallboard/:token.json Wallboard para um token de wallboard (sem necessidade de login) live_public_wallboard

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/wallboard/:token.json

App móvel

GET /workspaces/:workspace_id/app.json Obter o que o app móvel precisa para abrir um workspace mobile_bootstraps_get

Retorna, para um workspace (o caminho recebe workspace_id), o papel e as permissões de quem chama, features (quais relatórios restritos o plano inclui: traffic_quality, bot_detection, external_experiments, campaign_costs, status_pages, traffic_rules, experiment_advanced (as configurações avançadas de um experimento) e survey_ai_themes (temas para as respostas escritas de uma pesquisa) como true ou false, e retention_months como um número de meses ou null para sem limite), sites_count (os sites que quem chama pode abrir) e min_app_version (a versão mais antiga do app móvel que a API ainda atende). O app móvel lê isso uma vez ao abrir um workspace, para poder mostrar um relatório que o plano não tem como não incluído, em vez de pedi-lo. Requer analytics.read.

Permissão: analytics.read · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/app.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE /account/device.json Parar as notificações push para o app móvel mobile_devices_delete

Remove o registro de push do login do app móvel que está chamando, e o dispositivo deixa de receber pushes. O login em si permanece, e o app pode se registrar de novo. Sair (POST /oauth/revoke com o refresh token) também o remove. Somente um token do app móvel pode chamá-lo.

Permissão: member · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X DELETE https://privatusanalytics.com/account/device.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /account/device.json Obter o registro de push do app móvel mobile_devices_get

Retorna o dispositivo do login do app móvel que está chamando: registered (false até o app registrar um token de push), platform, locale, timezone, app_version, kinds (todos os tipos de push existentes), muted_kinds e muted_site_ids (o que a pessoa desativou). Somente um token do app móvel pode chamá-lo.

Permissão: member · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/account/device.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /account/device.json Registrar o app móvel para notificações push mobile_devices_update

Registra o dispositivo do login do app móvel que está chamando para notificações push, ou altera o que ele recebe. Somente as entradas enviadas mudam. A primeira chamada precisa de platform e push_token. Um dispositivo recebe push de uptime (uma verificação caiu ou voltou), alert (um alerta disparou ou foi resolvido), site_audit (uma auditoria de site terminou), experiment (um experimento tem resultado ou terminou) e usage (a franquia mensal está quase ou totalmente usada), para todos os sites que seu membro pode abrir, em todos os planos. muted_kinds e muted_site_ids desativam tipos e sites, e cada um substitui a lista inteira. Registrar um token de push que outro login do app possui o move para este. Somente um token do app móvel pode chamá-lo. É uma das duas escritas que esse token pode fazer.

Permissão: member · Somente HTTP (não é uma ferramenta MCP)

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

Assinaturas

DELETE /sites/:site_id/subscriptions/connections/:provider.json Desconectar um provedor de pagamento e excluir a chave e os dados de assinaturas subscriptions_disconnect

Desconecta um provedor de pagamento (stripe, paddle, lemon_squeezy, chargebee ou polar) de um site e exclui permanentemente a chave de API armazenada e todas as linhas de assinatura lidas dele. Isso não pode ser desfeito, e os números de MRR, churn e coortes deixam de incluir na hora as assinaturas desse provedor. Falha se esse provedor não estiver conectado. Retorna a conexão removida. Exige sites.manage.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Ler agora as assinaturas de um provedor de pagamento subscriptions_sync

Enfileira uma sincronização imediata das assinaturas de um provedor conectado (stripe, paddle, lemon_squeezy, chargebee ou polar) em vez de esperar pelo agendamento regular. Retorna na hora (HTTP 202) com a conexão, e a sincronização roda em segundo plano. Consulte subscriptions_report ou verifique last_synced_at e last_error na conexão. Os relatórios ficam em cache por até 15 minutos. Falha se o provedor não estiver conectado. Exige sites.manage.

Permissão: sites.manage

Exemplo
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 Grade de coortes: churn ou retenção por mês do primeiro pagamento subscriptions_cohorts

A grade de coortes de churn das assinaturas do site, uma linha por mês do primeiro pagamento. months é 6, 12 (padrão) ou 24 coortes. plan mantém apenas as assinaturas de um plano (veja plans em subscriptions_report). metric é subscriptions (contagem) ou mrr (dinheiro). view é churn (a fração que já tinha terminado até aquele ponto, padrão) ou retention (a fração ainda ativa). Retorna metric, view, months, plan (o filtro, ou null), currency e cohorts, cada um com month (YYYY-MM), size (assinaturas, ou MRR em unidades menores da moeda do site) e cells, em que cada célula tem offset (meses desde o mês da coorte, 0 é o primeiro), retained (mesma unidade de size) e percent (de 0 a 100, null para uma coorte vazia). Os períodos de teste que nunca pagaram não estão em nenhuma coorte. Para MRR, ARR e churn gerais, use subscriptions_report. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/subscriptions/cohorts.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/subscriptions.json Métricas de assinaturas: MRR, ARR, movimentos de MRR, churn, retenção de receita, testes, planos e uma previsão subscriptions_report

Métricas de assinatura do site, lidas da conta conectada do Stripe, Paddle, Lemon Squeezy, Chargebee ou Polar. months é 6, 12 (padrão) ou 24. plan mantém apenas as assinaturas de um plano, com o nome como plans o lista. Os campos monetários são inteiros em unidades menores da moeda do site (a currency da resposta), com as outras moedas convertidas à taxa de hoje. O resultado tem currency, connected (false quando nenhum provedor está conectado), plan (o filtro de plano, ou null), connections (uma por provedor conectado com provider, account_name, sandbox, status, last_error, last_synced_at e created_at, nunca uma chave), skipped_currencies (moedas sem taxa, cujo valor não é contado), totals, series, forecast e plans. totals tem mrr_minor, arr_minor, previous_mrr_minor (o MRR de 30 dias atrás), active_subscriptions, arpa_minor (null sem assinaturas), trialing, trial_conversion_rate (porcentagem dos períodos de teste que terminaram nos últimos 90 dias e pagaram, null quando nenhum terminou) e, para os últimos 30 dias, new_subscriptions, new_mrr_minor, expansion_mrr_minor, contraction_mrr_minor, churned_subscriptions, churned_mrr_minor, net_new_mrr_minor, quick_ratio (MRR novo mais de expansão para cada unidade de MRR cancelado mais de contração, null quando nada foi perdido), subscription_churn_rate e mrr_churn_rate (porcentagem, null sem base). Tem também net_revenue_retention e gross_revenue_retention (porcentagem do que as assinaturas que pagavam há 12 meses pagavam então e que pagam agora, com e sem upgrades, null sem base) e forecast_mrr_minor (o MRR em 12 meses, null sem previsão). series tem uma linha por mês (month como YYYY-MM) com mrr_minor, active_subscriptions, os mesmos campos de movimento e churn_rate. forecast tem uma linha por mês para os próximos 12 meses (month, mrr_minor), projetada a partir dos últimos três meses completos, e fica vazia sem três meses completos que começaram com MRR. plans lista até 50 planos por MRR com plan (null para assinaturas às quais o provedor não deu nome de plano), mrr_minor, active_subscriptions, churned_subscriptions e subscription_churn_rate (últimos 30 dias), sempre para todos os planos. Uma assinatura conta a partir do primeiro pagamento. Upgrades e downgrades são conhecidos a partir da primeira sincronização e, antes dela, os meses passados usam o preço que a assinatura tinha quando foi lida pela primeira vez. Para a retenção por mês do primeiro pagamento, use subscriptions_cohorts. Exige analytics.read.

Permissão: analytics.read

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

Assistente

POST /sites/:site_id/ask.json Fazer uma pergunta em uma nova conversa (conta para o limite mensal de perguntas de IA) assistant_ask

Inicia uma nova conversa do Ask em um site e responde à primeira pergunta usando as análises desse site. Use-a para uma pergunta em linguagem simples sobre um site. Use assistant_ask_followup para continuar uma conversa existente e as ferramentas de estatísticas quando você já souber a consulta exata. A resposta é produzida por um modelo de IA que executa por conta própria consultas de análise somente leitura, então a chamada pode levar muitos segundos. Ela conta como uma pergunta de IA na cota mensal do espaço de trabalho (5 no Free, 20 no Pro, 100 no Business) e falha com um erro de limite quando a cota se esgota. A pergunta pode ter no máximo 2.000 caracteres. As conversas são privadas do membro que as iniciou e são excluídas 30 dias após a última mensagem. Retorna a conversa (id, site_id, title tirado da pergunta, created_at, updated_at, expires_at) com um array messages. Cada mensagem tem role (user ou assistant), content (o texto da resposta), queries (as consultas de análise exatas que o assistente executou), chart (definição de gráfico, pode ser nula), goal_draft (meta sugerida, pode ser nula), contagens de tokens e created_at. Se a resposta falhar, a conversa é removida e nenhuma pergunta é contada. Exige analytics.read.

Permissão: analytics.read

Exemplo
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 Excluir uma conversa do Ask e suas mensagens assistant_conversations_delete

Exclui permanentemente uma conversa do Ask e todas as suas mensagens na hora. Isso não pode ser desfeito. Pegue o id da conversa em assistant_conversations_list. Apenas o membro que iniciou uma conversa pode vê-la e excluí-la. Exige analytics.read e um site_id. Retorna o resumo da conversa excluída (id, site_id, title, carimbos de data e hora). Não devolve as perguntas de IA já contadas no mês.

Permissão: analytics.read

Exemplo
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 Listar suas conversas do Ask de um site assistant_conversations_list

Lista as conversas do Ask do membro conectado em um site, das atualizadas mais recentemente para as mais antigas. As conversas de outros membros nunca aparecem. Use-a para encontrar o id de uma conversa para assistant_conversations_get, assistant_ask_followup ou assistant_conversations_delete. Cada item tem id, site_id, title (a primeira pergunta, truncada em 80 caracteres), created_at, updated_at e expires_at, mas nenhuma mensagem. Paginada com page e per_page (máximo 100). Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/ask.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/ask/:id.json Uma conversa do Ask: perguntas, respostas, as consultas por trás delas e gráficos assistant_conversations_get

Retorna uma conversa do Ask com o histórico completo de mensagens. Pegue o id da conversa em assistant_conversations_list ou no resultado de assistant_ask. Os campos são id, site_id, title, created_at, updated_at, expires_at (30 dias após a última mensagem, quando a conversa é excluída) e messages. Cada mensagem tem role (user ou assistant), content, queries (as consultas de análise que o assistente executou), chart (pode ser nulo), goal_draft (pode ser nulo) e input_tokens e output_tokens (inteiros que podem ser nulos). Apenas o membro que iniciou a conversa pode lê-la. Exige analytics.read.

Permissão: analytics.read

Exemplo
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 Fazer uma pergunta de acompanhamento em uma conversa (conta para o limite mensal de perguntas de IA). Retorna a resposta. assistant_ask_followup

Faz uma pergunta de acompanhamento dentro de uma conversa do Ask existente, para que o assistente mantenha as perguntas e respostas anteriores como contexto. Use assistant_ask para iniciar uma nova conversa. Pegue conversation_id em assistant_conversations_list. A chamada pode levar muitos segundos porque o assistente executa consultas de análise somente leitura. Cada pergunta conta na cota mensal de perguntas de IA do espaço de trabalho (5 no Free, 20 no Pro, 100 no Business) e falha com um erro de limite quando ela se esgota. A pergunta pode ter no máximo 2.000 caracteres. Retorna apenas a nova mensagem do assistente (não a conversa inteira) com id, role, content (a resposta), queries (as consultas exatas executadas), chart (pode ser nulo), goal_draft (pode ser nulo), input_tokens, output_tokens e created_at. Exige analytics.read e só funciona nas suas próprias conversas.

Permissão: analytics.read

Exemplo
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 '{…}'

Auditoria do site

GET /sites/:site_id/audit/issues.json Listar os problemas de uma auditoria do site, uma linha por verificação site_audit_issues_list

Lista os problemas de uma auditoria, uma linha por verificação que sinalizou algo, os piores primeiro (erros, depois avisos, depois observações, cada um por URLs afetadas). Cada linha tem check_key (use-o com site_audit_issues_get e as ferramentas de silenciamento), title, category, severity (error, warning ou notice), affected (URLs sinalizadas, excluindo as silenciadas), added e fixed (mudanças desde a auditoria anterior) e pageviews (visitas às páginas afetadas nos 30 dias anteriores à auditoria). Assume por padrão a última auditoria concluída, ou passe audit_id. Filtre com severity, category e new_only (apenas verificações com URLs novas desde a auditoria anterior). Paginada com page e per_page (máximo 100, padrão 50). Para ver quais URLs uma verificação sinalizou, use site_audit_issues_get. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/audit/issues.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/audit/issues/:check_key.json Obter uma verificação da auditoria do site: por que importa, como corrigir e as URLs afetadas site_audit_issues_get

Detalhes de uma verificação em uma auditoria, por check_key de site_audit_issues_list (por exemplo title_missing). Retorna audit_id, issue (a mesma linha da lista), why (o que o problema significa), fix (como corrigi-lo), muted (true se a verificação inteira está silenciada para o site) e urls, as URLs sinalizadas com page_id (use-o com site_audit_pages_get), url, pageviews, detail (fatos extras sobre o achado, pode estar vazio), is_new e muted. sort é pageviews (padrão, as mais movimentadas primeiro) ou url. Paginada com page e per_page (máximo 100, padrão 25). Assume por padrão a última auditoria concluída, ou passe audit_id. As URLs silenciadas ficam por último. Exige analytics.read.

Permissão: analytics.read

Exemplo
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 Silenciar uma verificação da auditoria do site em várias URLs, ou várias verificações inteiras, em uma única chamada site_audit_mutes_bulk

Silencia muitos achados em uma única requisição, tudo ou nada. Use um de dois formatos. Envie check_key mais urls (até 100 URLs) para silenciar uma verificação em várias páginas, ou envie check_keys (até 100) para silenciar verificações inteiras para o site. Não misture urls com check_keys. Uma verificação desconhecida ou uma URL inválida faz a requisição inteira falhar e não silencia nada. Os itens já silenciados são retornados como estão. As contagens e a pontuação da última auditoria são atualizadas uma vez no fim. Retorna a lista de silenciamentos. Desfaça cada um com site_audit_mutes_delete. Exige content.write.

Permissão: content.write

Exemplo
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 Silenciar uma verificação da auditoria do site, para o site inteiro ou para uma URL site_audit_mutes_create

Silencia uma verificação para o site, ou apenas para uma URL. check_key vem de site_audit_issues_list. Deixe url de fora para silenciar a verificação em todo lugar, ou passe uma URL completa (como https://example.com/old) para silenciá-la apenas nessa página, em que a URL é normalizada do mesmo jeito que o rastreador faz. As contagens e a pontuação da última auditoria são atualizadas na hora. Silenciar a mesma coisa duas vezes retorna o silenciamento existente em vez de um erro. Para silenciar muitos de uma vez use site_audit_mutes_bulk, e para desfazer use site_audit_mutes_delete. Exige content.write.

Permissão: content.write

Exemplo
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 Reativar uma verificação da auditoria do site site_audit_mutes_delete

Remove um silenciamento, encontrado pelo id em site_audit_mutes_list, para que a verificação ou a URL volte a contar na pontuação da auditoria. A última auditoria é recontada imediatamente. Isso apenas remove o silenciamento e não exclui dados da auditoria. Retorna o silenciamento removido. Exige content.write.

Permissão: content.write

Exemplo
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 Listar as verificações que um site silenciou site_audit_mutes_list

Lista as verificações silenciadas para o site, das mais recentes para as mais antigas. Um silenciamento oculta uma verificação para o site inteiro (url é null) ou para uma única URL, de modo que esses achados ficam fora das contagens e da pontuação, embora as auditorias ainda os registrem. Cada linha tem id (um id de silenciamento, use-o com site_audit_mutes_delete), site_id, check_key, title, url (null para um silenciamento em todo o site), muted_by (o nome do membro, null se desconhecido) e created_at. Filtre com check_key. Paginada com page e per_page (máximo 100). Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/audit/mutes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/audit/notifications.json Ativar ou desativar o seu e-mail de resumo da auditoria de um site site_audit_notifications_update

Liga ou desliga o e-mail de resumo semanal da auditoria para o membro que chama em um site. É uma preferência pessoal e não afeta outros membros. enabled true envia ao membro o resumo depois das auditorias deste site, false o interrompe. Retorna site_id, enabled e all_sites_enabled (false quando o membro desativou os e-mails de auditoria para todos os sites nas configurações da sua conta, o que prevalece sobre isto). Qualquer membro com analytics.read pode alterar a sua própria configuração.

Permissão: analytics.read

Exemplo
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 Listar e filtrar as páginas de uma auditoria do site site_audit_pages_list

O explorador de páginas, que lista as URLs de uma auditoria (a última concluída por padrão, ou audit_id). kind é page (padrão, documentos HTML), resource (imagens, scripts, folhas de estilo) ou external (links para outros sites). Filtre por state (queued, fetched, skipped, blocked, failed), status_class (2xx, 3xx, 4xx ou 5xx), indexable, in_sitemap, has_issues (contando apenas problemas não silenciados), depth (cliques a partir da página inicial) e query (texto na URL ou no título). sort é pageviews (padrão), inlinks, depth, response_ms (as mais lentas primeiro) ou word_count (as com menos palavras primeiro). Cada linha tem id (um UUID para site_audit_pages_get), url, path, kind, state, status, depth, indexable, indexability_reason, title, word_count, response_ms, cache_status, inlinks, pageviews, in_sitemap e issues (contagem). Paginada com page e per_page (máximo 100). Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/audit/pages.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/audit/pages/:id.json Obter uma página auditada: seus metadados, problemas, links de entrada e links de saída site_audit_pages_get

Tudo o que a auditoria armazenou sobre uma URL, pelo id (um UUID de site_audit_pages_list ou das urls de site_audit_issues_get). Retorna id, audit_id, page (url, status, redirect_to, content_type, bytes, response_ms, title, meta_description, h1, canonical, robots_meta, indexable e indexability_reason, word_count, lang, hreflang, schema_types, tags sociais, images_count, images_missing_alt, contagens de links, link_score, in_sitemap, has_tracker, pageviews e search_clicks, fetched_at e mais), redirect_target_id (a página para a qual ela redireciona dentro da auditoria, ou null), issues (check_key, title, category, severity, detail, is_new, muted) e inlinks e outlinks (até 100 cada, com page_id, url, status, kind, anchor, nofollow, count). Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/audit/pages/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/audit/settings.json Obter as configurações de auditoria de um site site_audit_settings_get

Retorna as configurações de auditoria do site. Os campos são site_id, enabled (auditorias agendadas ligadas ou desligadas, ligadas por padrão), include_subdomains, check_external_links, exclude_paths, ignored_params, extra_start_urls, next_run_at (quando a próxima auditoria agendada vence, null se não houver), page_limit (páginas por auditoria no plano atual, null quando ilimitado) e interval_days (dias entre auditorias agendadas no plano). Um site que nunca alterou suas configurações retorna os padrões. Altere-as com site_audit_settings_update. Exige sites.manage.

Permissão: sites.manage

Exemplo
curl https://privatusanalytics.com/sites/:site_id/audit/settings.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/audit/settings.json Alterar as configurações de auditoria de um site site_audit_settings_update

Altera como o site é auditado. Apenas as entradas enviadas mudam. enabled liga ou desliga as auditorias agendadas e manuais (ligá-la agenda a próxima auditoria para um intervalo do plano à frente). include_subdomains e check_external_links são booleanos. As três listas substituem a lista armazenada, não são mescladas, então envie a lista completa. exclude_paths são prefixos de caminho que o rastreador ignora e cada um deve começar com uma barra (até 50). ignored_params são nomes de parâmetros de consulta que nunca formam uma página diferente, como utm_source ou sessionid (até 50, letras, dígitos, ponto, hífen, sublinhado). extra_start_urls são URLs http ou https completas a rastrear além da página inicial (até 20). Uma lista também pode ser enviada como texto com uma entrada por linha. Retorna as configurações atualizadas. Exige sites.manage.

Permissão: sites.manage

Exemplo
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 Cancelar a inscrição nos e-mails de resumo da auditoria do site com o token de um e-mail site_audit_unsubscribes_create

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/audit/unsubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/audit/cancel.json Cancelar a auditoria do site em andamento site_audit_cancel

Interrompe a auditoria em execução ou na fila para o site. A auditoria é marcada como canceled e nada do rastreamento não concluído é relatado. Uma auditoria cancelada não consome a cota mensal do plano Free. Falha com um erro de validação se nenhuma auditoria estiver em andamento. Retorna a auditoria cancelada. Exige content.write.

Permissão: content.write

Exemplo
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 Comparar duas auditorias do site: URLs adicionadas e corrigidas por verificação site_audit_compare

Compara duas auditorias do site, verificação por verificação. audit_id é a auditoria mais nova e base_id a mais antiga. Ambos têm padrões sensatos (a última auditoria concluída contra a auditoria concluída anterior a ela), e a ferramenta os troca se você os passar na ordem errada. Retorna audit e base (cada um um resumo de auditoria, base null se não houver nada anterior) e checks, um objeto por verificação cujas URLs mudaram, com check_key, title, category, severity, base_affected, affected, added e fixed (contagens de URLs), ordenados com os erros primeiro. As verificações sem mudança ficam de fora. Para duas auditorias consecutivas, added e fixed são exatos, e para auditorias mais distantes são a variação líquida. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/audit/compare.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/audit.json Iniciar uma auditoria do site agora site_audit_run

Inicia agora um novo rastreamento e auditoria SEO do site. Ela rastreia as páginas públicas do site em segundo plano, então retorna na hora com a nova auditoria em status queued. Consulte site_audit_get (campo live) ou site_audit_history até o status ser complete. É recusada com um erro de validação quando a auditoria está desativada em site_audit_settings_update, quando outra auditoria já está na fila ou em execução, quando uma auditoria manual foi iniciada nas últimas 24 horas e, no plano Free, quando qualquer auditoria rodou nos últimos 30 dias (as que falharam e as canceladas não contam). Sites não verificados e sem eventos também são limitados a uma auditoria por dia por domínio. As páginas rastreadas são limitadas pelo plano (Free 100, Pro 1.000, Business 10.000). Verifique antes can_run em site_audit_get. Exige content.write.

Permissão: content.write

Exemplo
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 Listar as auditorias de um site, da mais recente para a mais antiga site_audit_history

Lista as auditorias do site, das mais recentes para as mais antigas, cada uma com id (aud_...), status (queued, running, analyzing, complete, partial, failed ou canceled), trigger (first, scheduled ou manual), score (de 0 a 100, null até concluir), score_band, page_limit, pages_crawled, urls_discovered, errors, warnings, notices, new_issues, fixed_issues, failure (o motivo quando falhou, caso contrário null) e os carimbos de data e hora. Filtre com status. Paginada com page e per_page (máximo 100). Use os ids com site_audit_get, site_audit_compare e as ferramentas de problemas e páginas. Para o estado atual de uma auditoria, use site_audit_get. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/audit/history.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/audit.json Obter a visão geral da auditoria do site: nota, contagens, principais problemas por tráfego e a auditoria em andamento site_audit_get

A visão geral da auditoria SEO do site, a melhor primeira chamada para perguntas sobre auditoria. Por padrão descreve a última auditoria concluída, ou passe audit_id (aud_..., de site_audit_history) para uma mais antiga. O resultado tem audit (a auditoria concluída com score de 0 a 100, score_band, score_delta, contagens de errors, warnings e notices, pages_crawled, page_limit, capped, summary e detalhes de robots, ou null se nenhuma foi concluída), live (a auditoria em execução agora, ou null), enabled e next_run_at (o agendamento), can_run com run_blocked (live, disabled ou too_soon) e run_allowed_at (quando site_audit_run é permitida de novo), changes (contagens de URLs adicionadas e corrigidas por gravidade), trend (até 30 pontuações recentes como id, finished_at, score), top_issues (até 10 verificações classificadas por gravidade e depois por visualizações de página das páginas afetadas) e email_enabled (a sua própria preferência de e-mail de resumo). Continue com site_audit_issues_list para todos os problemas e site_audit_pages_list para as URLs. Exige analytics.read.

Permissão: analytics.read

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

Busca

GET /sites/:site_id/search.json Relatório de busca: cliques, impressões, CTR, posição, principais consultas/páginas, páginas de destino e oportunidades search_report

Desempenho de busca do Google Search Console e do Bing Webmaster, combinado com as métricas das páginas de entrada do próprio site. Escolha provider: all (o padrão) soma todos os mecanismos conectados, com a posição ponderada pelas impressões e com países e dispositivos apenas do Google, ou google ou bing isoladamente, e o period habitual ou from e to personalizados. limit (de 1 a 100, padrão 25) limita as linhas de cada tabela. O resultado tem period, provider, connection (property, status, last_synced_at do mecanismo escolhido, ou null quando ele não está conectado ou provider é all), connections (cada mecanismo conectado com provider, property, status e last_synced_at), latest_date (o dia mais recente com dados), delayed (true quando o intervalo vai além de latest_date), totals e series (por dia), cada um com clicks, impressions, ctr (uma porcentagem, não uma fração, 2 casas decimais) e position (posição média, 1 é a melhor, null se desconhecida), breakdowns para query, page, country e device (linhas de value mais as mesmas quatro métricas), landing_pages (principais páginas com visits, bounce_rate e conversion_rate como porcentagens, e conversions) e opportunities (low_ctr_queries com pelo menos 100 impressões e um CTR abaixo de 2 por cento, e páginas striking_distance com posição média de 8 a 20). Os valores de país são como o provedor os informa. Use stats_breakdown para dados de visitantes e esta ferramenta para o que acontece antes do clique. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/search.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE /sites/:site_id/search/connections/:provider.json Desconectar o Search Console ou o Bing e excluir seus dados search_disconnect

Desconecta um provedor de busca (google ou bing) de um site e exclui permanentemente os dados de busca importados desse provedor. Isso não pode ser desfeito. A autorização do Google também é removida quando nenhum site a usa mais. Falha se esse provedor não estiver conectado. Retorna a conexão removida. Exige sites.manage.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Importar dados de busca agora search_sync

Enfileira uma importação imediata de dados de busca para um provedor conectado (google, o padrão, ou bing) em vez de esperar pelo agendamento regular. Retorna na hora (HTTP 202) com a conexão, e a importação roda em segundo plano. Consulte search_report e acompanhe connection.last_synced_at. Os mecanismos de busca relatam com um atraso de alguns dias, então os dias mais recentes continuam vazios mesmo após uma sincronização. Falha se o provedor não estiver conectado. Exige sites.manage.

Permissão: sites.manage

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

Campanhas

POST /sites/:site_id/campaigns/costs.json Definir o gasto de uma campanha em um mês campaign_costs_create

Registra o gasto com anúncios de uma campanha em um mês, para que campaigns_list possa mostrar o custo por aquisição e o retorno sobre o gasto com anúncios. Se já existir uma entrada para a mesma campanha e mês, ela é substituída, não duplicada, então também é seguro chamá-la duas vezes. campaign é o valor de utm_campaign como aparece nos seus links rastreados, month é YYYY-MM (uma data completa como 2026-09-15 é aceita e ajustada para o primeiro dia do mês) e amount é em unidades maiores, como número (1250.50, não unidades menores). currency é um código ISO opcional de 3 letras e assume por padrão a moeda do site. A resposta retorna a entrada armazenada com amount_minor em unidades menores. Para muitas linhas de uma vez, use campaign_costs_import. Exige content.write. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).

Permissão: content.write

Exemplo
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 Excluir um lançamento de custo de campanha campaign_costs_delete

Exclui permanentemente uma entrada de gasto, encontrada pelo id em campaign_costs_list. Isso não pode ser desfeito, e o CPA e o ROAS dessa campanha e desse mês deixam de incluir o gasto na hora. Outros meses e campanhas não são afetados. Retorna a entrada excluída. Exige content.write. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).

Permissão: content.write

Exemplo
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 Importar custos de campanha de um CSV (campaign,month,amount[,currency]) campaign_costs_import

Importa em massa o gasto com anúncios a partir de um CSV, o jeito rápido de carregar muitas campanhas e meses. Envie o texto do CSV em csv (melhor para ferramentas e chamadas de API) ou faça upload de um arquivo em file (apenas multipart). A primeira linha deve ser um cabeçalho com campaign, month e amount, com uma coluna opcional currency, por exemplo campaign,month,amount,currency e depois spring_sale,2026-09,1250.50,USD. Month é YYYY-MM, amount é em unidades maiores e currency assume por padrão a moeda do site. As linhas fazem upsert por campanha e mês, então reimportar o mesmo arquivo não duplica. Os limites são 1 MB e 5.000 linhas. Uma linha inválida não interrompe a importação. A resposta tem imported (quantidade salva), failed (quantidade rejeitada) e errors (as 50 primeiras mensagens, cada uma indicando sua linha, em que a linha 2 é a primeira linha de dados). Uma coluna de cabeçalho ausente, um arquivo grande demais ou um CSV malformado faz a requisição inteira falhar. Exige content.write. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).

Permissão: content.write

Exemplo
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 Listar lançamentos de custo de campanha campaign_costs_list

Lista as entradas de gasto com anúncios registradas para um site, do mês mais recente para o mais antigo e depois pelo nome da campanha. Cada linha é uma campanha em um mês, com amount_minor (um inteiro em unidades menores da moeda, então 125050 significa 1.250,50), currency (ISO 4217, em maiúsculas), month como YYYY-MM e o id da entrada (um UUID, use-o em campaign_costs_update e campaign_costs_delete). Passe campaign para ver apenas uma campanha (correspondência sem diferenciar maiúsculas e minúsculas com o valor de utm_campaign). Paginada com page e per_page (máximo 100). Os custos alimentam o CPA e o ROAS em campaigns_list, então é aqui que se confere qual gasto uma campanha tem. Exige analytics.read. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/campaigns/costs.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/campaigns/costs/:id.json Alterar um lançamento de custo de campanha campaign_costs_update

Altera uma entrada de gasto existente, encontrada pelo id em campaign_costs_list. Apenas as entradas enviadas mudam, então envie só amount para corrigir um número. amount é em unidades maiores (1250.50) e armazenado como unidades menores, month é YYYY-MM e currency é um código ISO de 3 letras. Mudar campaign ou month para uma combinação que outra entrada já tem falha com um erro de validação em vez de mesclar. Para corrigir o gasto de uma campanha e mês sem saber o id, chame campaign_costs_create, que substitui a entrada existente. Exige content.write. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).

Permissão: content.write

Exemplo
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 Montar e validar uma URL com tags UTM campaigns_builder

Monta uma URL com tags UTM para uma página de destino e verifica os valores. Nada é salvo e nenhum dado é lido, então é seguro chamá-la repetidamente. Passe destination (uma URL completa https://) mais utm_source, utm_medium, utm_campaign, utm_content e utm_term conforme necessário, ou escolha uma predefinição (newsletter, social, paid_search e assim por diante) para preencher utm_source e utm_medium quando você os deixar em branco. Retorna url (null quando há um erro), valid, destination, preset, os valores utm_* limpos, issues (uma lista de {field, level, message}, em que o level error bloqueia a URL e warning apenas sugere uma correção, como usar minúsculas) e presets (os valores de predefinição disponíveis). Os valores são limpos para minúsculas e sem espaços. Use campaigns_hygiene para encontrar valores UTM desorganizados que já existem no seu tráfego e campaigns_list para relatar campanhas que já rodaram. Para manter um link com tags, URL curta e contagem de cliques, use links_create.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/campaigns/builder.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/campaigns/hygiene.json Higiene de UTM: valores quase duplicados, problemas de estilo e origens desconhecidas campaigns_hygiene

Encontra valores UTM desorganizados no tráfego de um período para você corrigir as tags. Retorna period, duplicates, style_issues e unknown_sources. duplicates agrupa valores de utm_source, utm_medium ou utm_campaign que diferem apenas por maiúsculas, espaços ou pontuação (Facebook, facebook e face-book), cada um como {field, suggestion, variants: [{value, visits}]}, com a grafia mais visitada sugerida. style_issues lista valores que quebram a convenção de minúsculas e sem espaços como {field, value, visits, suggestion} (até 50). unknown_sources lista valores de utm_source que não são um canal reconhecido como {value, visits} (até 50). Apenas os 500 principais valores por campo são verificados. As contagens são de visitas. As sugestões são apenas conselhos e nada é alterado. Para unir variantes em um único canal, use channel_rules_create. Aceita as entradas compartilhadas period e filters. Use campaigns_list para o desempenho e campaigns_builder para criar URLs com tags limpas.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/campaigns/hygiene.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/campaigns.json Resumo de campanhas com conversões, receita, custo, CPA e ROAS campaigns_list

Relatório de desempenho de campanhas construído a partir de utm_campaign, com custo e retorno sobre o gasto com anúncios. Retorna period, currency (a moeda do site), goal_id e goal_name (a meta cujas conversões são contadas), campaigns, totals e unconverted_costs. Cada campanha tem visitors, visits, conversions, conversion_rate (porcentagem de 0 a 100, conversões divididas por visitas), revenue e sources (linhas por origem e mídia com as mesmas métricas). Quando existem custos (de campaign_costs_list), uma campanha também tem cost, cpa (custo por conversão, null quando não há conversões) e roas (receita dividida pelo custo, uma razão como 2.5, null quando não há custo). Os valores monetários (revenue, cost, cpa) são inteiros em unidades menores (centavos) da moeda do site. Os custos são associados aos nomes das campanhas sem diferenciar maiúsculas e minúsculas e rateados pelos dias de cada mês dentro do período. Uma campanha com custo mas sem tráfego continua listada. No máximo 100 campanhas, das mais movimentadas para as menos. Só são incluídas as visitas com utm_campaign. goal_id assume por padrão a primeira meta ativa, então informe-o explicitamente para medir uma meta específica (os ids vêm de goals_list). Use campaigns_hygiene para limpar os nomes e stats_breakdown com dimension utm_campaign para uma divisão simples do tráfego.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/campaigns.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

Canais de notificação

DELETE /channels/:id.json Excluir um canal de notificação notification_channels_delete

Exclui um canal de notificação e o remove de todos os alertas que o usavam, então esses alertas deixam de notificar ali. Isso não pode ser desfeito e os próprios alertas são mantidos. O id (nch_...) vem de notification_channels_list. Retorna o canal excluído.

Permissão: content.write

Exemplo
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 Listar canais de notificação notification_channels_list

Lista os canais de notificação de um espaço de trabalho (o caminho recebe workspace_id), ordenados por nome e paginados. Um canal é um lugar para onde os alertas são entregues. Cada um tem id (nch_...), kind (email, slack, teams, discord, webhook, pagerduty, opsgenie ou push), name, target (um resumo mascarado, como os endereços de e-mail ou o final de uma URL de webhook, os segredos nunca são retornados), last_used_at e created_at. Filtre por kind. Use os ids como channel_ids em alerts_create e alerts_update. Quem tem acesso limitado a alguns sites só vê os canais usados por alertas nos seus sites.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/channels.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /channels/:id/send_test.json Enviar uma mensagem de teste por um canal notification_channels_send_test

Envia uma mensagem de teste real pelo canal (um e-mail, uma publicação em chat, uma chamada de webhook e assim por diante), então use-a apenas quando o usuário quiser isso. A chamada falha com um erro que indica a causa se a entrega não funcionar, caso contrário retorna o canal. Os envios de teste têm limite de frequência por espaço de trabalho, e os canais de e-mail também por endereço externo. Use-a depois de notification_channels_create ou notification_channels_update para confirmar que uma URL ou chave está correta.

Permissão: content.write

Exemplo
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 Obter um canal de notificação notification_channels_get

Retorna um canal de notificação pelo id (nch_..., de notification_channels_list). A resposta tem kind, name, target (um resumo mascarado, segredos como URLs de webhook e chaves nunca são retornados), last_used_at e created_at. Use notification_channels_send_test para verificar se ele entrega.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/channels/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /notifications/unsubscribe/:token.json Cancelar a inscrição de um endereço em um canal de alerta ou verificação de disponibilidade com o token de um e-mail notification_unsubscribes_create

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/notifications/unsubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /push_subscription.json Registrar um navegador para notificações push push_subscriptions_create

Registra o navegador atual para alertas por web push, usando os três valores da PushSubscription do navegador (endpoint, p256dh e auth). Uma assinatura recebe alertas de todos os espaços de trabalho a que o membro pertence, para todos os sites, e por isso um token de API só pode usá-la quando consegue ler todo o seu espaço de trabalho e o membro não tem outro espaço de trabalho. Chamá-la de novo com o mesmo endpoint atualiza as chaves e move a assinatura para quem chama. O endpoint deve ser uma URL pública https de um serviço de push. Isso apenas registra o navegador, então os alertas ainda precisam de um canal de notificação do tipo push (notification_channels_create). Retorna endpoint_host (o nome do host do serviço de push, não o endpoint completo) e created_at. As sessões abertas por um provedor de identidade do espaço de trabalho não podem usá-la.

Permissão: member

Exemplo
curl -X POST https://privatusanalytics.com/push_subscription.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /push_subscription.json Remover o registro push de um navegador push_subscriptions_delete

Remove um dos registros de push do navegador do membro conectado para que esse navegador pare de receber notificações de alerta. Passe o mesmo endpoint usado com push_subscriptions_create. Falha com não encontrado quando essa assinatura não existe para o membro. Retorna a assinatura removida como endpoint_host e created_at. Não exclui nenhum canal de notificação. Sujeita às mesmas restrições de token de push_subscriptions_create.

Permissão: member

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

Cobrança

POST /workspaces/:workspace_id/billing/badge.json Aderir ou não ao bônus do selo (plano gratuito) billing_badge

Inclui ou retira um espaço de trabalho Free do bônus do selo do Privatus Analytics, que aumenta a cota mensal de eventos. Defina enabled como true para aderir. Uma verificação em segundo plano procura então o selo nos sites do espaço de trabalho e o valida, o que pode levar um momento, então leia billing_get depois e veja badge.verified_at. Defina enabled como false para sair, o que limpa as datas de verificação e remove o bônus. Aderir em um espaço de trabalho Pro ou Business é recusado porque os planos pagos não têm bônus. Retorna o objeto de cobrança do espaço de trabalho, como billing_get. Exige billing.manage.

Permissão: billing.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Cancelar no fim do período de cobrança billing_cancel

Cancela a assinatura paga ao fim do período pago atual. Nada é reembolsado e o plano continua ativo até current_period_ends_at, quando o espaço de trabalho passa para o plano Free. Use billing_resume para desfazer antes disso. Falha quando o espaço de trabalho não tem assinatura ou quando um cancelamento já está agendado. O reason opcional (um dos valores do enum) e o comment formam uma pesquisa de saída. Um comment, se informado, é enviado por e-mail à equipe do Privatus Analytics como uma mensagem de feedback do membro e não é armazenado. Retorna o objeto de cobrança com cancel_at_period_end true. Exige billing.manage.

Permissão: billing.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Alterar plano, faixa ou intervalo (proporcional) billing_change_plan

Move a assinatura existente para outro plano, faixa de eventos ou intervalo de cobrança. Isso gera cobrança. A mudança tem efeito imediato e o Paddle faz o cálculo proporcional, então uma cobrança ou um crédito é aplicado de imediato à forma de pagamento cadastrada. Execute billing_preview primeiro com as mesmas entradas para ver os valores exatos. Falha se o espaço de trabalho não tiver assinatura (use billing_checkout nesse caso), se o destino for o mesmo plano, faixa e intervalo atuais, ou se não existir preço para a combinação de plano e eventos. O valor de events deve ser uma das faixas de plans_list. Retorna o objeto de cobrança atualizado. Exige billing.manage.

Permissão: billing.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Iniciar um checkout Paddle para um plano pago billing_checkout

Inicia um checkout do Paddle para um espaço de trabalho que ainda não tem assinatura e retorna uma URL de checkout hospedado. Nada é cobrado até que uma pessoa conclua o checkout em um navegador, então entregue a url à pessoa. Use billing_change_plan quando o espaço de trabalho já tiver uma assinatura. As entradas são plan (pro ou business), events (uma faixa de eventos por mês de plans_list) e interval (month ou year, padrão month). Os preços incluem IVA ou imposto sobre vendas. Um programa de desconto aprovado é aplicado automaticamente e informado em discount_id. Retorna transaction_id, url (pode ser nula), price_id, plan, events, interval, amount (USD inteiros para o intervalo), client_token e environment (sandbox ou production, usado pelo overlay do Paddle), custom_data e discount_id (pode ser nulo). Falha se o espaço de trabalho já tiver uma assinatura. Exige billing.manage.

Permissão: billing.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Solicitar um desconto para organizações sem fins lucrativos, educação ou código aberto billing_discount

Solicita um programa de desconto para o espaço de trabalho. Isso envia uma solicitação para análise da equipe e avisa por e-mail a equipe do Privatus Analytics, não concede um desconto por si só. Os programas são nonprofit, education, open_source (50 por cento de desconto), open_source_free (Pro grátis até 1M de eventos por mês) e agency (20 por cento de desconto em cada espaço de trabalho que você possui). Só é permitida uma solicitação em aberto (pending, approved ou active) por espaço de trabalho, e você pode solicitar de novo após uma rejeição ou revogação. license só é mantida para os dois programas open source. Retorna a solicitação com program, status, percent, comp_events (pode ser nulo), organization_name, website, proof_url, license, note, rejection_reason, created_at, reviewed_at, applied_at e revoked_at (carimbos de data e hora que podem ser nulos). Acompanhe o andamento depois no campo discount de billing_get. Exige billing.manage.

Permissão: billing.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obter um link para atualizar a forma de pagamento billing_payment_method

Retorna um link do Paddle onde uma pessoa pode atualizar a forma de pagamento da assinatura. A chamada em si não altera nada. Entregue a url à pessoa para abrir em um navegador. O resultado tem kind (payment_method) e url. Falha quando o espaço de trabalho não tem assinatura ativa. Para faturas, endereços e todos os outros detalhes de cobrança, use billing_portal. Exige billing.manage.

Permissão: billing.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obter um link do portal do cliente Paddle billing_portal

Retorna um link para o portal do cliente do Paddle, onde uma pessoa pode ver faturas, formas de pagamento e endereços. A chamada em si não altera nada. Entregue a url à pessoa para abrir em um navegador. O resultado tem kind (portal) e url. Falha se o espaço de trabalho ainda não tiver um cliente no Paddle (nunca fez checkout) ou quando o cliente é compartilhado com outros espaços de trabalho aos quais quem chama não tem acesso, porque o portal expõe todos os dados do cliente. Use billing_payment_method apenas para o cartão. Exige billing.manage.

Permissão: billing.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Pré-visualizar uma mudança de plano com valor proporcional billing_preview

Mostra quanto custaria agora mover a assinatura para outro plano, faixa ou intervalo, sem alterar nada. Execute-a sempre antes de billing_change_plan com as mesmas entradas plan, events e interval. Falha se o espaço de trabalho não tiver assinatura ou se o destino for igual ao preço atual. Retorna plan, events, interval, price_id, amount (preço de tabela em USD inteiros para o intervalo), currency, charge_minor (o que seria cobrado agora), credit_minor (crédito pelo tempo não usado) e result_minor (valor líquido), todos em unidades menores da moeda, result_action (charge ou credit, pode ser nulo), next_billed_at (pode ser nulo) e warnings (strings, por exemplo o uso do mês passado excedendo a nova faixa ou limites do plano, como sites ou membros, que o novo plano violaria). Exige billing.manage.

Permissão: billing.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/preview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/billing/resume.json Desfazer um cancelamento agendado ou retomar uma pausa billing_resume

Desfaz um cancelamento agendado, ou retoma uma assinatura pausada, para que o plano continue sendo renovado. Use-a após billing_cancel e antes de current_period_ends_at. Uma assinatura pausada é retomada de imediato. Falha quando não há cancelamento agendado e a assinatura não está pausada. Retorna o objeto de cobrança atualizado. Exige billing.manage.

Permissão: billing.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obter o plano, a assinatura e o uso billing_get

Retorna o plano e o estado de cobrança do espaço de trabalho. Use-a antes de alterar qualquer coisa na cobrança e para saber se a assinatura está ativa ou sendo cancelada. Os campos incluem workspace_id, plan (free, pro, business ou enterprise), plan_events (a faixa de eventos por mês vendida), allowance (eventos por mês realmente permitidos, incluindo qualquer bônus do selo), billing_interval (month ou year, pode ser nulo), price (USD inteiros para o intervalo, pode ser nulo), subscription_status, current_period_ends_at, cancel_at_period_end (true quando há um cancelamento agendado), canceled_at, auto_upgrade, discount (a solicitação de desconto mais recente, pode ser nulo), discount_percent, billing_emails (array), tax_id, badge (opted_in, verified_at, checked_at e o tamanho do bônus) e usage (o mesmo objeto que billing_usage retorna). Exige billing.manage. As faturas estão em billing_invoices_list e uma visão de uso mês a mês é billing_usage.

Permissão: billing.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/billing.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/billing.json Atualizar e-mails de cobrança, id fiscal e upgrade automático billing_update

Atualiza as configurações de cobrança do espaço de trabalho. Apenas as entradas enviadas mudam. billing_emails é um array de até 5 endereços extras para faturas e avisos de cobrança e substitui a lista inteira. tax_id é armazenado no espaço de trabalho e não é adicionado às faturas, então também deve ser informado no checkout. auto_upgrade é false por padrão. Quando true, ao atingir o limite mensal de eventos o espaço de trabalho passa para a faixa seguinte e a diferença é cobrada, em vez de a coleta ser pausada. Ativá-lo enquanto a coleta já está pausada no limite faz o upgrade e a cobrança imediatamente e envia um e-mail de confirmação, e se o Paddle recusar o upgrade nada é salvo. Retorna o objeto de cobrança, como billing_get. Exige billing.manage.

Permissão: billing.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obter o uso deste mês, a previsão e a divisão por site billing_usage

Retorna o uso de eventos do espaço de trabalho em um mês. Use-a para ver quão perto o espaço de trabalho está do seu limite mensal rígido. As entradas são month (qualquer dia do mês, padrão o mês atual). Só contam visualizações de página e eventos personalizados. Os campos são month, events, bots (contagem agregada de bots, não cobrada), allowance, percent (de 0 a 100 e acima, uma casa decimal), forecast e forecast_percent (projeção linear até o fim do mês, null para meses passados), days_left, status (ok, warning aos 80 por cento, over aos 100 por cento, paused ou locked), sites (por site: site_id, domain, name, events e share em porcentagem, do maior para o menor), history (meses anteriores como month e events), access_locked_at, collection_paused (true quando novos eventos estão sendo descartados), pause_reason (limit ou staff, pode ser nulo), collection_paused_at e resumes_at (o dia 1 do próximo mês quando pausada pelo limite). Exige billing.manage.

Permissão: billing.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/usage.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/billing/invoices.json Listar faturas billing_invoices_list

Lista as transações de cobrança do espaço de trabalho, das mais recentes para as mais antigas. Cada item tem id (use-o com billing_invoices_get), invoice_number (pode ser nulo), status, amount_minor (inteiro em unidades menores da moeda, então 900 significa 9,00), currency (código ISO como USD) e billed_at (ISO 8601, pode ser nulo). Paginada com page e per_page (máximo 100). Lista apenas transações. Para obter o PDF, chame billing_invoices_get, e para atualizar o cartão use billing_payment_method. Exige billing.manage.

Permissão: billing.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/invoices.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/billing/invoices/:id.json Obter o link do PDF de uma fatura billing_invoices_get

Retorna um link para a fatura em PDF de uma transação cobrada. Pegue o id da fatura em billing_invoices_list (o campo id, um id de transação do Paddle). O resultado tem kind (invoice) e url, que é um link para o PDF do Paddle, então baixe ou compartilhe logo após a chamada. Falha se o id não pertencer a este espaço de trabalho ou se o Paddle não tiver fatura para ele. Exige billing.manage.

Permissão: billing.manage

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

Coleta

POST /embed/ads/e.json Registra que um criativo foi mostrado, visto ou clicado, chamado pelo carregador de anúncios ad_serving_event

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/embed/ads/e.json \
  -H "Content-Type: application/json" -d '{…}'
GET /embed/ads/:site.json Os espaços de anúncio de um site e os criativos que cada um mostra, chamado pelo carregador de anúncios ad_serving_slots

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/embed/ads/:site.json
POST /api/overlay.json Os cliques de uma página para a camada de cliques, chamada por pa.overlay.js com a sua chave de acesso click_overlays_read

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/api/overlay.json \
  -H "Content-Type: application/json" -d '{…}'
POST /api/logs.json Enviar logs de acesso do servidor para relatórios de crawlers de IA (JSON {lines: [...]} ou texto de log combinado, com a chave de logs de crawlers do site como Bearer token) crawler_logs_create

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/api/logs.json \
  -H "Content-Type: application/json" -d '{…}'
POST /api/event.json Coletar um hit do navegador (usado por /js/pa.js) ingest_event

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/api/event.json \
  -H "Content-Type: application/json" -d '{…}'
GET /api/experiment.json Se um experimento envia este visitante para uma página variante, chamado pelo script de cabeçalho dos experimentos ingest_experiment

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/api/experiment.json
GET /js/exp/:site.json O script que a tag de cabeçalho opcional dos experimentos carrega para um site ingest_experiment_script

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/js/exp/:site.json
POST /api/survey.json Registrar que um cartão de pesquisa foi exibido, dispensado ou respondido ingest_survey

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/api/survey.json \
  -H "Content-Type: application/json" -d '{…}'
GET /api/surveys.json Qual pesquisa mostrar em uma página, chamada pelo módulo de perguntas do rastreador ingest_surveys

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/api/surveys.json

Coleções de depoimentos

POST /sites/:site_id/testimonials/collections/:id/items.json Adicione depoimentos a uma coleção manual testimonial_collections_add_items

Até 100 de uma vez. Entram no fim, ou no início com position top, na ordem informada. A resposta traz meta.undo_id, que testimonials_bulk_undo aceita por 7 dias. Uma coleção inteligente não aceita nada à mão.

Permissão: content.write

Exemplo
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 Crie uma coleção, manual ou inteligente testimonial_collections_create

kind manual é montada à mão, e testimonial_ids a inicia já preenchida. kind smart é mantida atualizada por condições: linhas de campo, operador e valor unidas por match. A resposta traz a contagem e as regras em linguagem simples, então uma chamada transforma uma frase em uma coleção viva. Experimente as regras antes com testimonial_collections_preview. O tipo nunca muda depois.

Permissão: content.write

Exemplo
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 Mova uma coleção para a lixeira por 30 dias testimonial_collections_destroy

Os depoimentos dela não são tocados. Um widget ou mural que ela alimenta não mostra nada dela até que seja restaurada. Restaure com testimonial_trash_restore. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Liste as coleções de um site testimonial_collections_list

Cada coleção vem com quantos depoimentos tem agora, quantos deles estão aprovados, as suas regras em linguagem simples quando é inteligente e os widgets e murais que ela alimenta. As coleções na lixeira ficam de fora.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/collections/preview.json Experimente um conjunto de regras sem salvar nada testimonial_collections_preview

Responde com quantos depoimentos correspondem agora, as regras em linguagem simples e cinco exemplos. Use antes de testimonial_collections_create ou testimonial_tags_update. Uma linha inválida é um 422 que nomeia a linha.

Permissão: analytics.read

Exemplo
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 Retire depoimentos de uma coleção manual testimonial_collections_remove_items

Até 100 de uma vez. Os depoimentos em si não são alterados. A resposta traz meta.undo_id, e um desfazer coloca cada um de volta no seu lugar.

Permissão: content.write

Exemplo
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 Mova um depoimento para outro lugar em uma coleção manual testimonial_collections_reorder

Indique o lugar com exatamente um entre position (contada a partir de 1), before_id ou after_id. A ordem é a que é servida a todo widget e mural que a coleção alimenta.

Permissão: content.write

Exemplo
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 Obtenha uma coleção com as suas contagens, as suas regras e o que ela alimenta testimonial_collections_get

Os depoimentos dela são testimonials_list com collection_id.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/collections/:id.json Altere o nome, a descrição, as regras ou a ordem de exibição de uma coleção testimonial_collections_update

Só o que é enviado muda. Enviar conditions substitui todas as regras de uma coleção inteligente. O tipo é fixo.

Permissão: content.write

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

Compartilhamento

GET /badge/:site_id.json Selo contador de visitantes (SVG) de um site público badges_get

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/badge/:site_id.json
GET /share/:token/breakdown/:dimension.json Principais valores de uma dimensão compartilhada shares_breakdown

Principais valores de uma dimensão por trás de um link de compartilhamento, o equivalente compartilhado de stats_breakdown. O caminho recebe token (a última parte da URL de compartilhamento) e dimension, que deve pertencer a uma seção que o link compartilha. Por exemplo, sources compartilha channel, referrer e referrer_url, pages compartilha page, entry_page, exit_page e hostname, campaigns compartilha as dimensões utm_, locations compartilha country e language, technology compartilha device, browser, os e screen, conversions compartilha goal e events compartilha event. Uma dimensão fora das seções do link é recusada com um erro de validação. limit é de 1 a 100 linhas (padrão 10). As linhas têm os mesmos campos e unidades de stats_breakdown para essa dimensão. O período e os filtros travados do link prevalecem sobre period, from, to e filters, e os filtros de quem chama são ignorados quando o link não os permite. Um link com senha exige o cabeçalho X-Share-Password.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/share/:token/breakdown/:dimension.json
GET /share/:token.json Visão geral do painel compartilhado para um token de compartilhamento shares_overview

Lê o painel por trás de um link de compartilhamento para pessoas que não têm conta. O token do caminho é a última parte de uma URL de compartilhamento (/share/<token>) e é a única credencial, um link com senha também exige o cabeçalho X-Share-Password, e um link sso exige um membro conectado. Ela também aceita um id de site (pa_...) quando o site tem o painel público ativado. Retorna os mesmos dados de stats_overview, limitados ao que o link compartilha. Isso é period, metrics (visitors, visits, pageviews, views_per_visit, bounce_rate como porcentagem, visit_duration em milissegundos, revenue em unidades menores), a série do gráfico para interval, dados de comparação quando compare está definido e panels com os principais valores apenas das seções compartilhadas. Acrescenta site (id, name, domain, timezone), sections e locked_period. live_visitors aparece apenas quando o link compartilha live. Um período travado e filtros travados no link prevalecem sobre period, from, to e filters. Use shares_breakdown para mais linhas de uma dimensão. Para os seus próprios sites, use stats_overview.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/share/:token.json

Conexões de compra para depoimentos

DELETE /sites/:site_id/testimonials/settings/purchase_connections/:id.json Desconecte uma conta de pagamento testimonial_purchase_connections_delete

Exclui a conexão e a sua chave. Os compradores que ainda esperam pelo primeiro e-mail não recebem o pedido. O pedido permanente fica como registro do que foi enviado.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Liste as conexões de compra de um site testimonial_purchase_connections_list

Cada uma com a sua regra, o seu estado e o seu pedido permanente. A chave nunca é devolvida. paused é true em um plano sem pedidos após uma compra: a conexão é mantida, não lê pagamentos e não pede nada a ninguém.

Permissão: sites.manage

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/purchase_connections.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

Configurações de e-mail

POST /email/preferences/:token/unsubscribe.json Parar todos os e-mails de um endereço que podem ser desligados, com o token do link de configurações de e-mail dele email_preferences_unsubscribe_all

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/email/preferences/:token/unsubscribe.json \
  -H "Content-Type: application/json" -d '{…}'
POST /email/preferences/:token.json Desligar ou ligar e-mails de um endereço com o token do link de configurações de e-mail dele email_preferences_update

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

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

Conta

GET /account.json Obter seu perfil e preferências account_get

Retorna o perfil e as preferências do próprio membro conectado. Use-o para ler as configurações antes de alterá-las com account_update. Isso diz respeito à pessoa, não a um espaço de trabalho. O plano e as faturas do espaço de trabalho ficam em billing_get. Os campos são email, unconfirmed_email (definido enquanto uma troca de e-mail aguarda confirmação, caso contrário null), name (pode ser nulo), theme (system, light ou dark), default_landing (sites ou last_site), locale (código do idioma do app para quem está conectado), timezone (nome IANA, pode ser nulo), shortcuts_enabled, reduce_motion, product_emails, site_audit_emails, marketing_emails, newsletter (todos booleanos, em que true significa inscrito), two_factor (booleano), passkeys (quantidade de passkeys registradas) e created_at (ISO 8601). Uma sessão aberta apenas por um provedor de identidade do espaço de trabalho vê somente email e as configurações de exibição.

Permissão: member

Exemplo
curl https://privatusanalytics.com/account.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /account.json Atualizar seu perfil e preferências account_update

Atualiza o perfil, as preferências de exibição e as inscrições de e-mail do próprio membro conectado. Apenas as entradas enviadas são alteradas, todo o resto permanece como está. Alterar email não tem efeito imediato. Um e-mail de confirmação é enviado ao novo endereço (com limite de frequência) e unconfirmed_email mostra o endereço pendente até que ele seja confirmado. Tokens de API não podem alterar o endereço de e-mail nem reativar marketing_emails depois de um cancelamento de inscrição, e ambos exigem um navegador conectado. Desativar marketing_emails é permitido. Sessões abertas por um provedor de identidade do espaço de trabalho só podem alterar as configurações de exibição (theme, default_landing, locale, timezone, shortcuts_enabled, reduce_motion). Retorna a conta atualizada no mesmo formato de account_get. Isso não exclui a conta e não altera as configurações do espaço de trabalho.

Permissão: member

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

Crawlers

DELETE /sites/:site_id/crawlers/connection.json Desconectar o Cloudflare e excluir os acessos de crawlers que ele importou crawlers_cloudflare_disconnect

Desconecta a Cloudflare de um site. Isso exclui o token de API armazenado e todos os acessos de rastreadores importados da Cloudflare, e não pode ser desfeito. Os acessos que vieram de logs de servidor enviados permanecem. O token continua existindo na sua conta da Cloudflare até você excluí-lo lá. Falha se o site não tiver conexão. Retorna a conexão removida. Exige sites.manage.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Importar agora os acessos de crawlers do Cloudflare crawlers_cloudflare_sync

Enfileira uma importação imediata da Cloudflare para um site que já está conectado, em vez de esperar pelo agendamento regular. Retorna na hora (HTTP 202) com a conexão, e a importação roda em segundo plano. Consulte crawlers_report e acompanhe cloudflare.last_synced_at para ver quando terminou. Falha se o site não tiver conexão com a Cloudflare. Exige sites.manage.

Permissão: sites.manage

Exemplo
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 Relatório de crawlers de IA: hits por crawler ao longo do tempo, principais caminhos por crawler, por categoria crawlers_report

Relata quais rastreadores de IA, de busca e de SEO acessam o site, com que frequência e em quais caminhos, a partir de logs de servidor enviados e da importação da Cloudflare. Isso é tráfego de rastreadores, não de visitantes, então não aparece em stats_breakdown. category é ai (padrão), search, seo, other ou all, e crawler restringe a um bot específico, como GPTBot ou ClaudeBot. Escolha o intervalo com period (padrão 30d) ou from e to personalizados. O resultado tem period (from e to como datas), category, crawler, totals (hits, caminhos distintos, rastreadores distintos), categories (hits por categoria, ignorando o filtro de categoria), crawlers (até 50 linhas com crawler, category, hits, paths), series (rótulos por dia e hits diários dos 8 principais rastreadores), top_paths (os 10 caminhos mais acessados de cada um dos 8 principais rastreadores), has_data (false até existir algum hit) e cloudflare (a conexão com zone, status e last_synced_at, ou null). Os resultados ficam em cache por até 30 minutos, exceto logo após uma alteração na Cloudflare. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/crawlers.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

Criativos de anúncio

POST /sites/:site_id/experiments/ads/:ad_placement_id/creatives.json Adiciona um criativo a uma posição de anúncio ad_creatives_create

Adiciona uma imagem com a proporção da posição (pelo menos o tamanho dela, o dobro fica mais nítido) e o endereço para onde um clique vai. Envie a imagem como arquivo multipart, ou image_url para que ela seja baixada. Ela é processada em segundo plano, então consulte ad_creatives_get até state ser ready. Agendamento, dispositivos e paths são do Pro e superiores. Exige content.write.

Permissão: content.write

Exemplo
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 Exclui um criativo e sua imagem ad_creatives_delete

Exclui permanentemente um criativo e sua imagem. Um criativo comparado por um experimento não pode ser excluído: desligue-o. A ferramenta MCP não a executa e responde com human_only e a página onde uma pessoa o exclui. Exige content.write.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obtém um criativo com seu estado ad_creatives_get

Um criativo fica em processing até a imagem ser gerada, depois ready (ou failed, com o motivo em error). Exige analytics.read.

Permissão: analytics.read

Exemplo
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 Altera um criativo ad_creatives_update

Altera o link, o peso, o agendamento ou a segmentação, desliga o criativo (active false) ou substitui a imagem. Só as entradas enviadas mudam. Uma nova imagem substitui a antiga quando fica pronta. Exige content.write.

Permissão: content.write

Exemplo
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 '{…}'

Depoimentos

GET /sites/:site_id/testimonials/overview.json Leia os números de um site, o que precisa de atenção e o que aconteceu recentemente testimonials_overview

stats traz os cinco números da página Visão geral: depoimentos aprovados, pendentes, novos neste mês, nota média e em uso. attention lista o que precisa de uma decisão com a sua contagem. activity são os 10 eventos mais recentes e latest_approved os três depoimentos aprovados mais recentemente.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/overview.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/setup.json Obtenha a lista de configuração de um site testimonials_setup_get

Retorna os itens import, testimonials, approve, ask, widget e teammate, cada um com done e dismissed. Um item é concluído pelo que o site contém, nunca por um clique. hidden é true quando todos os itens estão concluídos ou dispensados, que é quando a Caixa de entrada deixa de mostrar o cartão.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/setup.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/setup.json Dispense um item da lista de configuração, ou o cartão inteiro testimonials_setup_update

dismiss é a chave de um item (import, testimonials, approve, ask, widget ou teammate) ou all para o cartão inteiro. Dispensar oculta o item e nunca o marca como concluído, e não pode ser desfeito pela API.

Permissão: content.write

Exemplo
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 Aprove um depoimento para que possa ser exibido testimonials_approve

Um depoimento aguardando a franquia não pode ser aprovado: o servidor responde com 422 e o código waiting_for_allowance. A resposta traz meta.undo_id.

Permissão: content.write

Exemplo
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 Execute uma ação sobre uma seleção de depoimentos, ou sobre tudo o que um filtro encontra testimonials_bulk

Envie ids (até 100, executados de uma vez, todos ou nenhum) ou filters com confirm_count (o resultado inteiro). Mais de 100 são executados em segundo plano e a resposta traz state running. Ações: approve, reject, mark_pending, pin, unpin, add_tags, remove_tags, add_to_collection, remove_from_collection, set_property, trash, restore. Cada uma responde com um id de desfazer que testimonials_bulk_undo aceita por 7 dias. delete_permanently é a única ação que não pode ser desfeita: exige sites.manage e a sua resposta diz undoable false. Via MCP, as duas ações que excluem, trash e delete_permanently, não são executadas: a ferramenta responde com human_only e a página do app em que uma pessoa faz isso, e toda outra ação é executada. Pela API, a ação export (com ids ou filters e um format opcional de csv, json, ndjson ou xlsx) não altera nada: exige analytics.export e responde com 202 e a exportação para baixar.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Desfaça uma ação em lote em até 7 dias testimonials_bulk_undo

Recoloca o valor anterior em cada depoimento que a execução alterou. Um que foi alterado de novo depois é deixado como está e contado em left. Via MCP, um desfazer que excluiria ou moveria para a lixeira não é executado (o desfazer de uma restauração, de uma execução de tradução e de uma execução de criação de imagens): a ferramenta responde com human_only e a página do app em que uma pessoa faz isso.

Permissão: content.write

Exemplo
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 Adicione um depoimento à mão ou pela API testimonials_create

Guardado pela única entrada que todas as rotas usam. Conta na franquia mensal de novos depoimentos do plano e, ao atingir a franquia, o servidor responde com 422 e o código allowance_reached (só o envio de um formulário de cliente é retido como em espera). A mesma pessoa dizendo as mesmas palavras de novo é recusada com o código duplicate, a menos que allow_duplicate seja true. O mesmo external_id de novo devolve o que já está guardado.

Permissão: content.write

Exemplo
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 Exclua um depoimento em definitivo, com o histórico, o registro de consentimento e os arquivos testimonials_delete

Isso não pode ser desfeito. Funciona em um depoimento na lixeira ou fora dela e exige confirm e a permissão sites.manage. Via MCP, a ferramenta não exclui nada e responde com a página em que uma pessoa faz isso.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Mova um depoimento para a lixeira por 30 dias testimonials_trash

O depoimento mantém o seu estado, tags, coleções e arquivos, não é exibido em lugar nenhum e é excluído em definitivo após 30 dias. testimonials_restore o devolve exatamente como estava. A resposta traz meta.undo_id. Colocar na lixeira um que já está nela não altera nada. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Conte os depoimentos por trás de cada valor de filtro, para as mesmas entradas da lista testimonials_facets

A forma da biblioteca sem ler nenhum depoimento. Cada faceta conta os seus valores com a sua própria escolha deixada de fora e todos os outros filtros aplicados. meta traz o total e o filtro em palavras.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/facets.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/:id/highlight.json Marque a melhor frase de um depoimento, ou limpe a marca testimonials_highlight

highlight deve ser um trecho exato das palavras do depoimento, ou o servidor responde com 422. Um highlight vazio o limpa. Cada mudança é uma versão no histórico.

Permissão: content.write

Exemplo
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 Liste todas as versões das palavras, do título, da nota e do destaque de um depoimento testimonials_history

Mais recentes primeiro. A versão 1 é o depoimento como foi recebido e não tem autor. Cada versão posterior traz o membro que a fez, quando, a nota que deixou e, no caso de uma restauração, a versão que foi recolocada. Paginado com page e per_page.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/:id/history.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials.json Liste os depoimentos de um site, filtrados e ordenados testimonials_list

Três formas de dizer quais, e elas se somam: as entradas de facetas (status, tag_id, has_video e as demais), q (a caixa de busca com os seus operadores, por exemplo rating:5 has:video tag:onboarding "saved us") e conditions com match (linhas estruturadas). Envie facets como true para a contagem ao vivo por trás de cada valor de faceta em meta.facets. Nada na lixeira é listado, a menos que trashed seja true, o que lista apenas a lixeira.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/:id/pend.json Volte um depoimento para pendente testimonials_pend

Leva um depoimento aprovado ou rejeitado de volta para pendente, de modo que não seja exibido em lugar nenhum até ser decidido de novo. A resposta traz meta.undo_id. Um depoimento na lixeira é recusado com o código in_trash.

Permissão: content.write

Exemplo
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 Fixe um depoimento para que seja exibido primeiro, ou desafixe testimonials_pin

Um depoimento fixado é exibido primeiro onde quer que apareça. Envie pinned false para desafixar. A resposta traz meta.undo_id quando algo mudou.

Permissão: content.write

Exemplo
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 Rejeite um depoimento. Ele é guardado e não é exibido em lugar nenhum testimonials_reject

O depoimento mantém tudo o que tem e não é exibido em lugar nenhum. Rejeitar um que já está rejeitado não altera nada. A resposta traz meta.undo_id, que testimonials_bulk_undo aceita por 7 dias. Um depoimento na lixeira é recusado com o código in_trash.

Permissão: content.write

Exemplo
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 Restaure um depoimento da lixeira, exatamente como estava testimonials_restore

Devolve um depoimento da lixeira ao seu estado, tags, coleções e aos lugares que o exibiam. Nunca conta como um novo depoimento. Um que não está na lixeira é recusado com o código not_in_trash.

Permissão: content.write

Exemplo
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 Recoloque as palavras, o título, a nota e o destaque de uma versão anterior testimonials_restore_version

Nada é removido do histórico. A restauração é uma nova versão que diz de qual veio. version 1 devolve o depoimento às palavras como recebidas. Um número de versão desconhecido é um 422.

Permissão: content.write

Exemplo
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 Obtenha um depoimento com a sua pessoa, arquivos, registro de consentimento, tags e onde é usado testimonials_get

Retorna um depoimento do site pelo seu id (tm_...), na lixeira ou não. person.email é null, a menos que quem chama tenha content.write, e has_email diz se há um registrado. media lista os arquivos com o estado de processamento. used_in lista todos os widgets, murais e imagens que o exibem.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/showable.json Liste os depoimentos que o público pode ver, como o público pode vê-los testimonials_showable

Os depoimentos aprovados mais recentes de um site que podem ser exibidos em público, para uma exibição sua fora dos widgets e murais. Cada um traz apenas o que o seu registro de consentimento permite: uma pessoa cujo nome não pode ser exibido aparece como A customer, e uma foto ou gravação fica de fora, a menos que tenha sido permitida. Um depoimento pendente, rejeitado ou na lixeira, ou um que aguarda a franquia, nunca é listado. Não há e-mail na resposta.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/showable.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/triage.json Obtenha o próximo depoimento de uma fila de triagem testimonials_triage

Sem filtro, a fila é Pendentes, sem aguardar a franquia, do mais antigo recebido para o mais novo. Com os filtros da caixa de entrada, é esse resultado na sua ordenação. Envie after com o id que acabou de ser tratado para obter o seguinte. data é null quando a fila termina. meta traz remaining e total.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/triage.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/:id.json Edite um depoimento. As mudanças nas palavras, no título, na nota e no destaque ficam no seu histórico testimonials_update

Só as entradas enviadas são alteradas. Uma mudança em body, title, rating ou highlight adiciona uma versão ao histórico com edit_note e nunca altera a marca de verificado. rating null a limpa. highlight deve ser um trecho exato das palavras, e um vazio o limpa. properties altera apenas as chaves enviadas. add_tags e remove_tags aceitam nomes ou ids. Estado, fixar e lixeira têm ferramentas próprias. Um depoimento na lixeira não pode ser editado.

Permissão: content.write

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

Desempenho

GET /sites/:site_id/performance.json Web Vitals: painel de p75, tendência diária e detalhamentos por página, dispositivo, navegador e país performance_report

Relatório de Web Vitals de visitantes reais. Retorna period, metric, sample_rate, scorecard, trend e breakdowns. scorecard tem uma linha para cada um de LCP, INP, CLS, FCP e TTFB com p75 (o 75º percentil, em milissegundos, exceto CLS, que é uma pontuação sem unidade), samples, rating (good, needs_improvement ou poor, null sem dados), good, needs_improvement e poor (porcentagem das amostras), previous_p75, change (porcentagem em relação ao período anterior, null quando desconhecida) e thresholds [limite de good, limite de poor]. trend é o p75 diário da métrica escolhida como {date, p75, samples}. breakdowns tem page, device, browser e country, cada um com até limit linhas (padrão 10, máximo 100) da métrica escolhida como {value, p75, samples, rating, slow_share, poor}, as piores e mais movimentadas primeiro. Escolha metric com exatamente um entre LCP, INP, CLS, FCP ou TTFB em maiúsculas (padrão LCP). sample_rate é a fração das visitas que relatam vitals, então as contagens são amostras e não todas as visitas. Aceita as entradas compartilhadas period, compare, filters e segment. Para os vitals de uma página, use pages_detail.

Permissão: analytics.read

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

Destinatários dos pedidos de depoimento

POST /sites/:site_id/testimonials/requests/:request_id/recipients.json Adicione pessoas a um pedido testimonial_request_recipients_create

Até 500 em uma chamada. Adicionadas a um rascunho, esperam por testimonial_requests_send. Adicionadas a um pedido em andamento, recebem o primeiro e-mail de imediato. A resposta diz quantas foram colocadas na fila e quantas foram ignoradas, por motivo. Adicionar a um pedido em andamento envia e-mails a pessoas de fora do workspace, então o membro é avisado por e-mail.

Permissão: content.write

Exemplo
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 Remova pessoas escolhidas de um pedido testimonial_request_recipients_delete

Só pessoas para quem nada foi enviado (queued ou skipped). Aceita até 100 endereços no corpo. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Adicione pessoas a um pedido a partir de um arquivo CSV testimonial_request_recipients_import

Duas chamadas. Envie o arquivo (ou o seu texto como csv) para obter as colunas, as suas primeiras linhas e um upload_token. Depois envie a associação do número da coluna para o campo. Até 5 MB e 10.000 linhas. Adicionar a um pedido em andamento envia e-mails a pessoas de fora do workspace, então o membro é avisado por e-mail.

Permissão: content.write

Exemplo
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 Liste as pessoas de um pedido testimonial_request_recipients_list

Filtre pela situação atual de uma pessoa: status opened é "abriu e não clicou nem respondeu". O endereço de e-mail é null, a menos que quem chama possa editar conteúdo.

Permissão: analytics.read

Exemplo
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 Retome pessoas escolhidas de um pedido testimonial_request_recipients_resume

Elas continuam de onde pararam. Aceita até 100 endereços no corpo. Isto envia e-mails a pessoas de fora do workspace, então o membro é avisado por e-mail.

Permissão: content.write

Exemplo
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 Pare pessoas escolhidas de um pedido testimonial_request_recipients_stop

Elas não recebem mais nenhum e-mail. Cada uma mantém o seu status e ganha "stopped". Aceita até 100 endereços no corpo.

Permissão: content.write

Exemplo
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 '{…}'

Detecção de bots

GET /sites/:site_id/bot-detection.json Relatório de Detecção Avançada de Bots: acessos às páginas honeypot do site, por página e pelo que denunciou o bot bot_detection_report

Relata os acessos às páginas honeypot do site. Uma página honeypot é uma página alcançada apenas por um link oculto e configurada como a página de Detecção Avançada de Bots, como mostra o app. Esses acessos são de bots, então nunca são visualizações de página nem visitas e não aparecem em stats_overview nem em stats_breakdown. Escolha o intervalo com period (7d, 30d (padrão), 90d ou 12mo). Os acessos são mantidos por 12 meses. O resultado tem period, from (o início do intervalo), has_data (false até o primeiro acesso), totals (hits, páginas distintas, automated (acessos em que o rastreador viu um navegador automatizado) e no_interaction (acessos sem entrada de ponteiro, teclado ou toque)), pages (até 50 linhas com path, hits e last_hit_at), reasons (acessos por resultado do filtro de bots padrão: known_bot, automation, datacenter, empty_user_agent, referrer_spam, ou undetected para um acesso que o filtro teria contado como uma pessoa) e recent (os últimos 50 acessos com occurred_at, path, country, browser, device, bot_reason, automation e interacted). Nenhum endereço IP nem User-Agent é guardado com um acesso, apenas hashes com chave deles que não identificam ninguém, e esses nunca são retornados. Exige analytics.read e o plano Business ou Enterprise (caso contrário, 402 plan_limit).

Permissão: analytics.read

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

Disponibilidade

POST /sites/:site_id/uptime.json Adicionar uma verificação de disponibilidade para um site uptime_checks_create

Adiciona uma verificação de disponibilidade ligada a um site. Use workspace_uptime_checks_create para uma verificação que não pertence a nenhum site. kind decide o alvo. http verifica o código de status de url, keyword verifica se o corpo da resposta de url contém keyword, tcp conecta a host e port, e dns verifica se host é resolvido. Os campos de outros tipos são ignorados. url assume por padrão a página inicial do site nas verificações http. expected_status (de 100 a 599, padrão 200), http_method (GET ou HEAD) e timeout_seconds (de 1 a 30, padrão 20) valem para as verificações http e keyword. interval_seconds é o tempo entre as sondagens, deve ser no mínimo o mínimo do plano (Free 300, Pro 60, Business 30) e assume por padrão 300 ou o mínimo se este for maior. public true permite que a verificação apareça em uma página de status. Endereços privados e internos são recusados, e o plano limita o número de verificações por espaço de trabalho (Free 3, Pro 20, Business 100). A primeira sondagem roda em instantes, e o status começa como pending. Exige a permissão uptime.manage. Retorna a verificação com id (upc_...).

Permissão: uptime.manage

Exemplo
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 Excluir uma verificação de disponibilidade e seu histórico uptime_checks_delete

Exclui permanentemente uma verificação de disponibilidade com seus resultados e histórico de incidentes, e a remove de qualquer página de status que a exiba. Isso não pode ser desfeito. Use uptime_checks_pause para parar de sondar mas manter o histórico. O id vem de uptime_checks_list. Exige a permissão uptime.manage. Retorna a verificação excluída.

Permissão: uptime.manage

Exemplo
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 Listar as verificações de disponibilidade de um site uptime_checks_list

Lista as verificações de disponibilidade de um site, incluindo as verificações de todo o espaço de trabalho que sondam o domínio do site ou um subdomínio dele. Ordenadas por nome. Use workspace_uptime_checks_list para todas as verificações do espaço de trabalho. Filtre com status (up, down, pending ou paused) ou query (parte do nome, da url ou do host). Paginada com page e per_page (até 100). Cada verificação tem id (upc_...), workspace_id, site_id (null para verificações de todo o espaço de trabalho), name, kind, url, host, port, keyword, expected_status, http_method, interval_seconds, timeout_seconds, status (up, down, pending ou paused), enabled, public, last_checked_at, next_check_at, last_response_ms (milissegundos), ssl_expires_at, ssl_issuer, domain_expires_at e created_at. Use uptime_checks_get para porcentagens de disponibilidade e incidentes.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/uptime.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /uptime/checks/:id/pause.json Pausar uma verificação de disponibilidade uptime_checks_pause

Pausa uma verificação de disponibilidade para que ela deixe de ser sondada. Qualquer incidente aberto é encerrado na hora e nenhum alerta de queda ou de retorno é enviado enquanto ela estiver pausada. O histórico é mantido e seu status aparece como paused. Retome-a com uptime_checks_resume. O id vem de uptime_checks_list. Exige a permissão uptime.manage. Retorna a verificação.

Permissão: uptime.manage

Exemplo
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 Retomar uma verificação de disponibilidade pausada uptime_checks_resume

Retoma uma verificação de disponibilidade pausada. Ela é sondada no próximo ciclo do agendador e seu status é pending até o primeiro resultado chegar. O id vem de uptime_checks_list. Exige a permissão uptime.manage. Retorna a verificação.

Permissão: uptime.manage

Exemplo
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 Obter uma verificação de disponibilidade: disponibilidade de 24h/7d/30d, tempos de resposta e incidentes uptime_checks_get

Retorna uma verificação de disponibilidade com seu histórico, não apenas suas configurações. Escolha range (24h padrão, 7d ou 30d) para o gráfico de tempo de resposta. A resposta tem check (configurações e estado ao vivo, veja uptime_checks_list), uptime (porcentagem para 24h, 7d e 30d, null até a primeira sondagem rodar), range, response_times (unit hour ou day, labels como horários ISO 8601 e series do tempo médio de resposta em milissegundos por local, com null para lacunas) e incidents (os 50 mais recentes com started_at, resolved_at null enquanto ainda aberto, duration_seconds, cause e failed_locations). Apenas as sondagens bem-sucedidas contam para os tempos de resposta. O id vem de uptime_checks_list.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/uptime/checks/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /uptime/checks/:id.json Alterar uma verificação de disponibilidade uptime_checks_update

Altera uma verificação de disponibilidade. Apenas as entradas enviadas mudam. As regras e os limites são os mesmos de uptime_checks_create (o intervalo deve ser no mínimo o mínimo do plano, endereços privados são recusados). Alterar kind limpa os campos de alvo que deixam de se aplicar. Alterar interval_seconds agenda a próxima sondagem imediatamente. O id vem de uptime_checks_list. Exige a permissão uptime.manage. Retorna a verificação atualizada.

Permissão: uptime.manage

Exemplo
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 Datacenter das sondas, User-Agent e intervalos de IP de saída (para liberar nossas sondas de disponibilidade) uptime_probes_list

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/uptime/probes.json
POST /uptime/probes/results.json Enviar resultados de um agente de sonda externo (Bearer token de sonda de disponibilidade) uptime_probes_results

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/uptime/probes/results.json \
  -H "Content-Type: application/json" -d '{…}'
POST /workspaces/:workspace_id/uptime.json Adicionar uma verificação de disponibilidade do espaço de trabalho (sem vínculo com um site) workspace_uptime_checks_create

Adiciona uma verificação de disponibilidade que pertence a todo o espaço de trabalho em vez de a um site. Use uptime_checks_create para ligar uma verificação a um site. As entradas, os limites do plano e as regras são os mesmos, veja uptime_checks_create. kind é http, keyword, tcp ou dns e decide quais entre url, keyword, host e port se aplicam. Como não há site, uma verificação http precisa de uma url explícita. Quem tem acesso limitado a alguns sites não pode criar verificações de todo o espaço de trabalho. Exige o workspace_id de workspaces_list e a permissão uptime.manage. Retorna a verificação com id (upc_...) e site_id null.

Permissão: uptime.manage

Exemplo
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 Listar todas as verificações de disponibilidade de um espaço de trabalho workspace_uptime_checks_list

Lista todas as verificações de disponibilidade de um espaço de trabalho, incluindo as ligadas a nenhum site, ordenadas por nome. Quem tem acesso limitado a alguns sites só vê as verificações desses sites. Use uptime_checks_list para as verificações de um site. Filtre com status (up, down, pending ou paused) ou query (parte do nome, da url ou do host). Paginada com page e per_page (até 100). Cada item tem os campos descritos em uptime_checks_list. Exige o workspace_id de workspaces_list.

Permissão: analytics.read

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

Documentação

GET /docs/api.json Listar todas as operações da API e ferramentas MCP docs_api

Retorna o catálogo completo de todas as operações da API, que também são todas as ferramentas MCP. Use-a para descobrir qual ferramenta ou endpoint existe e exatamente o que ele recebe. Cada item tem tool_name, summary, description (pode ser nulo), group, verb (método HTTP), path (modelo com marcadores), permission (a permissão de que um membro ou token precisa, nulo para ferramentas públicas), input_schema (JSON Schema das entradas) e response_schema (JSON Schema da resposta). A resposta é grande. Para uma ferramenta que você já conhece, prefira as páginas da documentação (docs_search). docs_openapi retorna as mesmas informações como um documento OpenAPI. Pública, sem necessidade de autenticação.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/docs/api.json
GET /docs.json Listar páginas da documentação docs_list

Lista todas as páginas da documentação com title, description, path (como /docs/api/authentication), section e sem corpo. Use-a para navegar pelo que existe. Para encontrar uma página por tema use docs_search, e para ler uma use docs_get com sua section e page. Paginada com page e per_page (máximo 100). Pública, sem necessidade de autenticação.

Permissão: public

Exemplo
curl https://privatusanalytics.com/docs.json
GET /openapi.json Documento OpenAPI 3.1 de toda a API docs_openapi

Retorna o documento OpenAPI 3 que descreve toda a API pública como JSON bruto (não envolvido em um campo data). Use-a quando precisar de uma especificação legível por máquina para geração de código. Para uma lista navegável de operações com seus esquemas de entrada e resposta, docs_api é mais fácil de ler. Ela descreve as mesmas operações expostas como ferramentas MCP. Pública, sem necessidade de autenticação.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/openapi.json
GET /docs/:section/:page.json Ler uma página da documentação (Markdown e HTML) docs_get

section e page vêm do caminho da página /docs/<section>/<page>. Use a página "index" para a visão geral de uma seção.

Permissão: public

Exemplo
curl https://privatusanalytics.com/docs/:section/:page.json

Domain Rating

GET /sites/:site_id/domain-rating.json Relatório de Domain Rating: a nota mais recente, os links de entrada e de saída, a variação desde a publicação anterior e o histórico por mês domain_rating_report

Retorna o Domain Rating do site, uma estimativa de 0 a 100 de quão fortes são os links que apontam para o seu domínio, além das contagens de links de entrada e de saída e seu histórico. Esta é a pontuação própria do Privatus Analytics, não uma métrica do Google. As classificações são atualizadas uma vez por mês a cada release, então as mudanças aparecem mensalmente. months (de 1 a 120, padrão 12) define quantos pontos mensais de histórico incluir. O resultado tem domain, checked_at (quando o site foi verificado pela última vez, null se nunca), release (o mês dos dados mais recentes como YYYY-MM), rating, inbound_links, outbound_links (cada um null se ainda não for conhecido), changes (as mesmas três métricas como a diferença em relação ao release anterior, null quando uma delas é desconhecida) e history (uma linha por mês com month, rating, inbound_links, outbound_links, do mais antigo para o mais recente). Um site novo pode ficar sem classificação por alguns minutos. Exige analytics.read.

Permissão: analytics.read

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

Duplicatas de depoimentos

POST /sites/:site_id/testimonials/duplicates/dismiss.json Diga que um grupo não é de duplicatas. Ele nunca volta à fila testimonial_duplicates_dismiss

testimonial_ids deve ser todas as cópias de um grupo aberto da fila de duplicatas que está fora da lixeira, como testimonial_duplicates_list as devolve. Nada é unido nem alterado nos depoimentos, e eles nunca mais são agrupados. Para dividir um grupo de três, una primeiro os dois que são iguais. O servidor responde com 422 quando os ids não são exatamente um grupo aberto.

Permissão: content.write

Exemplo
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 Liste os grupos de depoimentos que provavelmente são o mesmo duas vezes testimonial_duplicates_list

As correspondências exatas vêm primeiro. Cada grupo traz as suas cópias por inteiro e keeper_id, a cópia que seria mantida. meta.exact_groups é quantos grupos testimonial_duplicates_merge_exact uniria.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/duplicates.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/:id/merge.json Una cópias de um depoimento ao que está no caminho testimonials_merge

O mantido conserva o seu status e o estado de verificado, e as suas palavras, a menos que body_from indique outra cópia. Ele ganha as tags, coleções manuais, posicionamentos e propriedades personalizadas que lhe faltam. As cópias vão para a lixeira marcadas como unidas, e restaurar uma desfaz a união para aquela cópia. Uma cópia que chegou neste mês deixa de contar como um novo depoimento. A resposta traz meta.undo_id.

Permissão: content.write

Exemplo
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 Una de uma só vez todas as correspondências exatas da fila testimonial_duplicates_merge_exact

Envie dry_run primeiro para as contagens, depois confirm_count com o total que ele deu. Até 100 grupos são unidos por chamada. A resposta traz meta.undo_id, e um desfazer reverte a execução inteira.

Permissão: content.write

Exemplo
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 '{…}'

Empresas dos depoimentos

GET /sites/:site_id/testimonials/companies.json Liste as empresas de um site com as suas pessoas, depoimentos e nota média testimonial_companies_list

Uma linha por empresa, agrupada pelo nome e site da empresa das pessoas do site. Uma pessoa sem empresa não está em nenhuma. query corresponde a parte do nome de uma empresa ou do host do seu site. sort é name (o padrão), people_desc, testimonials_desc ou received_desc.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/companies.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/companies/:id/merge.json Una uma empresa a outra, para duas grafias de uma mesma empresa testimonial_companies_merge

Cada pessoa da empresa do caminho passa a ter o nome e a URL da empresa indicada por into.

Permissão: content.write

Exemplo
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 Obtenha uma empresa com as suas pessoas testimonial_companies_get

O id é a chave da empresa, um host de site ou um nome normalizado, como testimonial_companies_list o devolve. Os depoimentos dela são testimonials_list com company.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/companies/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/companies/:id.json Corrija o nome e a URL de uma empresa para todas as suas pessoas de uma só vez testimonial_companies_update

O id de uma empresa vem da sua URL ou nome, então a resposta pode trazer um novo id.

Permissão: content.write

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

Espaços de trabalho

GET /workspaces/:workspace_id/white_label.json Obter a marca white label white_label_get

Retorna a marca white label do espaço de trabalho. Os campos são workspace_id (ws_...), brand_name, brand_logo_url e brand_color (uma cor hexadecimal como #06755b), cada um null quando não definido, hide_branding, available (true quando o plano inclui white label, que é o Business e acima) e active (true quando a marca está definida e em vigor). A marca substitui o Privatus Analytics em painéis compartilhados, incorporações, páginas de status e relatórios por e-mail. Exige workspace.manage.

Permissão: workspace.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/white_label.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/white_label.json Definir a marca white label para painéis compartilhados e relatórios por e-mail (Business) white_label_update

Define a marca white label do espaço de trabalho. Somente no plano Business, caso contrário falha com um erro de plano. Apenas as entradas enviadas mudam, e uma string vazia limpa brand_name, brand_logo_url ou brand_color. brand_logo_url deve ser uma URL https de uma imagem e brand_color uma cor hexadecimal como #06755b. hide_branding true remove o link do Privatus Analytics dos painéis compartilhados, incorporações e páginas de status e o logotipo dos relatórios por e-mail. A mudança se aplica imediatamente aos links de compartilhamento existentes. Exige workspace.manage. Retorna a marca (veja white_label_get).

Permissão: workspace.manage

Exemplo
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 Obter as configurações de segurança do espaço de trabalho workspace_security_get

Retorna a política de segurança do espaço de trabalho. Os campos são workspace_id (ws_...), enforce_2fa (os membros devem usar autenticação em duas etapas), login_methods (os permitidos entre password, magic_link, passkey, google, github e sso), session_ttl_hours (desconexão após essa quantidade de horas, null para sem limite), app_ip_allowlist (IPs ou faixas CIDR autorizados a usar o app e a API, vazio significa de qualquer lugar) e support_access_until (horário ISO 8601 até o qual o suporte do Privatus Analytics pode ver o espaço de trabalho, null quando nenhum acesso foi concedido). Exige workspace.manage.

Permissão: workspace.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/security.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/security.json Atualizar as configurações de segurança do espaço de trabalho (2FA, métodos de login, duração da sessão, lista de IPs permitidos, acesso do suporte) workspace_security_update

Altera a política de segurança do espaço de trabalho, apenas as entradas enviadas. enforce_2fa true exige que todos os membros usem autenticação em duas etapas e requer o plano Business. login_methods substitui a lista de permitidos por valores de password, magic_link, passkey, google, github e sso, e remover um método desconecta os logins lembrados dos membros, que precisam entrar de novo. session_ttl_hours desconecta os membros após essa quantidade de horas (0 remove o limite). app_ip_allowlist substitui a lista de IPs ou faixas CIDR autorizados a acessar o app e a API (plano Business, uma lista vazia significa de qualquer lugar) e é recusada se excluísse o IP de quem chama, então você não consegue se trancar para fora. support_access true permite que o suporte do Privatus Analytics veja o espaço de trabalho por 7 dias e false retira esse acesso. Exige workspace.manage. Retorna a política (veja workspace_security_get).

Permissão: workspace.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Criar um espaço de trabalho (você se torna o proprietário) workspaces_create

Permissão: member · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/workspaces.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
DELETE /workspaces/:id.json Excluir um espaço de trabalho e todos os seus sites (somente o proprietário, cancela qualquer assinatura) workspaces_delete

Exclui um espaço de trabalho junto com todos os seus sites. É uma exclusão lógica: tudo desaparece na hora e é eliminado de forma permanente após 7 dias, então trate-a como irreversível. Apenas o proprietário pode fazê-la, e confirm deve ser o nome exato do espaço de trabalho (diferencia maiúsculas e minúsculas). Uma assinatura paga ativa é cancelada imediatamente antes, e se esse cancelamento falhar nada é excluído. As transferências de site pendentes do espaço de trabalho são canceladas. Os membros perdem o acesso. Use workspaces_get para ler o nome. Exige workspace.manage e a função owner. Retorna o espaço de trabalho.

Permissão: workspace.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X DELETE https://privatusanalytics.com/workspaces/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /workspaces.json Listar seus espaços de trabalho workspaces_list

Lista os espaços de trabalho a que quem chama pertence, ordenados por nome. Um token de API ou uma conexão MCP vê apenas o único espaço de trabalho para o qual foi emitido. Cada item tem id (ws_..., usado como workspace_id pela maioria das ferramentas), name, timezone, currency, plan, plan_events, subscription_status e role (a função de quem chama). Chame em seguida sites_list com um id de espaço de trabalho para encontrar os ids de site. Criar um espaço de trabalho só é possível no app.

Permissão: member

Exemplo
curl https://privatusanalytics.com/workspaces.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:id.json Obter um espaço de trabalho workspaces_get

Retorna um espaço de trabalho pelo seu id público (ws_..., de workspaces_list). Os campos são id, name, timezone (nome IANA), currency (ISO 4217), plan (free, pro, business ou enterprise), plan_events (a cota mensal de eventos do plano), subscription_status (none, trialing, active, past_due, paused ou canceled), role (a função de quem chama nele) e created_at. Use billing_get para os detalhes completos de cobrança e billing_usage para o uso deste mês. Qualquer membro pode lê-lo.

Permissão: member

Exemplo
curl https://privatusanalytics.com/workspaces/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:id.json Atualizar as configurações do espaço de trabalho workspaces_update

Altera o nome, o fuso horário padrão ou a moeda padrão de um espaço de trabalho, apenas as entradas enviadas. timezone é um nome IANA como Europe/Berlin e currency é um código ISO 4217 de 3 letras. Esses são padrões para novos sites e não alteram os sites existentes (use sites_update para eles). Exige workspace.manage. Retorna o espaço de trabalho (veja workspaces_get).

Permissão: workspace.manage

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

Eventos

GET /sites/:site_id/events/properties.json Listar chaves de propriedades de eventos vistas nos últimos 30 dias event_properties_list

Lista as chaves de propriedade que os eventos personalizados carregaram nos últimos 30 dias, com as configurações de exibição. Retorna uma lista de {key, events, display_name, hidden, export_safe}. events é quantos eventos personalizados carregaram a chave (0 para uma chave que tem configurações mas não foi vista recentemente), display_name é o novo nome (null quando não há), hidden indica que a chave está oculta nos relatórios e export_safe indica que ela está marcada como sem dados pessoais. No máximo 200 chaves são retornadas, das mais usadas para as menos. Passe event para ver apenas as chaves vistas em um nome de evento bruto. Os valores das propriedades nunca são retornados aqui: use stats_breakdown com dimension prop:<key> ou events_get para os valores. Altere as configurações com event_properties_update.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/events/properties.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/events/properties.json Renomear ou ocultar uma chave de propriedade de evento event_properties_update

Renomeia, oculta ou marca como segura para exportação uma chave de propriedade de evento, para o site inteiro. Apenas as entradas enviadas mudam. key deve ser a chave como armazenada (letras minúsculas, dígitos e sublinhados, até 64 caracteres, por exemplo plan). display_name é um rótulo de até 64 caracteres (envie-o vazio para remover o novo nome). hidden remove a chave dos relatórios e do pivô de detalhes do evento, enquanto os dados são mantidos. export_safe declara que a chave nunca guarda dados pessoais, o que inclui seus valores nas exportações brutas e nas sincronizações com o data warehouse, então defina-o apenas quando isso for verdade. Renomear e ocultar se aplicam quando os relatórios são lidos e não reescrevem nenhum dado armazenado. Retorna {key, display_name, hidden, export_safe}. Exige a permissão sites.manage. Liste as chaves com event_properties_list.

Permissão: sites.manage

Exemplo
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 Excluir um evento e seu histórico (roda em segundo plano, confirme digitando o nome) events_delete

Exclui permanentemente um evento personalizado e todo o seu histórico. Isso não pode ser desfeito. O nome bruto do evento deve ser enviado duas vezes, em name e novamente em confirm, como verificação de segurança. Retorna {name, status: queued} com HTTP 202 porque as linhas são removidas em segundo plano, em lotes, então os números continuam mudando até terminar. O evento também fica oculto na hora, e a exclusão é registrada no log de auditoria. As visualizações de página não são afetadas. Se você só quer parar de exibir um evento, use events_update com hidden true, que mantém os dados. Exige a permissão sites.manage. Os nomes vêm de events_list (use o campo raw_names se o evento foi renomeado ou mesclado).

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Listar eventos com conclusões, visitas, taxa de conversão e primeira/última ocorrência events_list

O explorador de eventos: todos os eventos personalizados do período. Retorna period, events e hidden. Cada evento tem name (o nome de exibição após renomeações e mesclagens), raw_names (os nomes que o rastreador enviou), completions, visits, conversion_rate (porcentagem das visitas, de 0 a 100), revenue (unidades menores, centavos), first_seen e last_seen (carimbos de data e hora ISO 8601 dentro do período) e currency (a moeda da receita, null quando não definida). hidden lista os eventos que você ocultou como {name, display_name}. Use search para manter os eventos cujo nome contém algum texto. As visualizações de página não são eventos aqui. Use events_get para um evento em profundidade e stats_breakdown com dimension event para uma lista classificada e paginada. Aceita as entradas compartilhadas period, compare, filters e segment.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/events.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/events/merge.json Mesclar vários eventos em um único nome de exibição events_merge

Mescla vários nomes de eventos brutos em um único nome de exibição, por exemplo signup_click e signup_button em Signup. Os relatórios passam a mostrar um único evento com as contagens combinadas. Funciona quando os relatórios são lidos, e os eventos armazenados não são alterados nem excluídos. Passe names (os nomes brutos, pelo menos um) e into (o nome de exibição). Retorna um objeto de configurações por nome mesclado, cada um {name, display_name, hidden, currency, updated_at}. Para desfazer, chame events_update para um nome com display_name vazio. Exige a permissão sites.manage. Os nomes vêm de events_list (raw_names).

Permissão: sites.manage

Exemplo
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 Um evento: gráfico, tabela dinâmica de propriedades, agregados de propriedades numéricas, páginas e origens events_get

Detalhe de um evento personalizado. Passe name exatamente como mostrado em events_list (o nome de exibição após renomeações e mesclagens). Retorna period, name, raw_names (os nomes armazenados por trás dele), interval, totals, setting, series, property_keys, pivot, numeric, pages, channels e referrers. totals tem completions, visits (visitas que o dispararam), revenue (unidades menores, centavos) e conversion_rate (porcentagem de todas as visitas no período). series são as conclusões por intervalo de tempo. setting tem display_name, hidden e currency. property_keys lista as chaves de propriedade vistas. Envie properties (até 3 chaves) para obter pivot, linhas de {values, completions, visits} para cada combinação de valores, as 100 principais. numeric dá a soma, a média e outros números para propriedades que guardam números. pages, channels e referrers são os 10 principais lugares em que o evento foi disparado, como {value, completions, visits}. Use events_list para todos os eventos, stats_breakdown com dimension prop:<key> para uma propriedade em todo o site e events_update para renomeá-lo.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/events/detail.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/events/settings.json Renomear, ocultar ou reexibir um evento, ou definir sua moeda events_update

Altera como um evento personalizado é exibido: renomeie-o com display_name, oculte-o ou reexiba-o com hidden, ou defina a moeda da receita. name é o nome bruto do evento como o rastreador o enviou (veja raw_names em events_list). Apenas as entradas enviadas mudam. Um display_name vazio remove o novo nome. hidden remove o evento das listas e dos relatórios, enquanto seus dados são mantidos. currency é um código ISO 4217 de três letras, como USD, armazenado em maiúsculas. Funciona quando os relatórios são lidos e nenhum evento armazenado é reescrito. Retorna {name, display_name, hidden, currency, updated_at}. Para combinar vários eventos, use events_merge, e para apagar dados, use events_delete. Exige a permissão sites.manage.

Permissão: sites.manage

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

Execuções de importação de depoimentos

GET /sites/:site_id/testimonials/imports/sources/:import_source_id/runs.json Liste as execuções de uma fonte, das mais recentes às mais antigas testimonial_import_runs_list

Cada execução tem o seu número, o que a iniciou, o seu status, as páginas lidas e quantos depoimentos encontrou, quantos eram novos, duplicados, com falha e mantidos, com os horários de início e fim.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:import_source_id/runs.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

Experimentos

POST /sites/:site_id/experiments.json Criar um experimento como rascunho experiments_create

Cria um teste A/B ou de URL dividida para um site. Ele é salvo como rascunho e não envia nenhum visitante a lugar algum até uma pessoa iniciá-lo no app. São obrigatórios name, path (a página original, como /pricing), goal_id (de goals_list) e variants: uma lista de { name, path, weight } em que a primeira linha é a página original (o path dela é ignorado) e cada outra linha é uma página do mesmo site. Omita todos os weight para uma divisão igual, ou envie pesos que somem 100. O plano Free permite um experimento por vez, com a original e uma variante. Pro e superiores acrescentam mais variantes, alocação automática, segmentação, um * no caminho, metas secundárias, início agendado e grupos exclusivos. Exige content.write. Retorna o experimento.

Permissão: content.write

Exemplo
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 Excluir um experimento com seus resultados experiments_delete

Exclui permanentemente um experimento com suas variantes e resultados. Isso não pode ser desfeito. Use experiments_pause para pará-lo e manter os resultados. A ferramenta MCP não o executa e responde com human_only e a página onde uma pessoa o exclui. Exige content.write.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Copiar um experimento como novo rascunho experiments_duplicate

Cria um rascunho com as mesmas páginas, participações, meta e regras de um experimento existente e sem nenhum dos resultados dele. Use para alterar um teste que já começou. Conta para o limite do plano como um experimento novo. Exige content.write. Retorna o novo experimento.

Permissão: content.write

Exemplo
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 Encerrar um experimento definitivamente experiments_end

Encerra um experimento em execução ou pausado. Ele não pode ser iniciado de novo, seus resultados são mantidos e ele deixa de contar para o limite do plano. A ferramenta MCP não o executa e responde com human_only e a página onde uma pessoa o encerra. A API o executa. Exige content.write.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Listar os experimentos de um site experiments_list

Lista os testes A/B e de URL dividida de um site, do mais recente ao mais antigo. Filtre com status (draft, scheduled, running, paused, ended ou all, padrão all). Paginado com page e per_page (padrão 25, até 100). Cada experimento tem id (exp_...), name, status, path (a página original), goal_id, variants (id, name, path, weight, control), as regras para encerrá-lo e locked (true quando o plano não o cobre mais). Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/experiments.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/experiments/:id/pause.json Pausar um experimento e manter seus resultados experiments_pause

Pausa um experimento em execução ou agendado. Todos os visitantes voltam a receber a página original na hora e os resultados até agora são mantidos. experiments_start o retoma. Exige content.write. Retorna o experimento.

Permissão: content.write

Exemplo
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 Obter um experimento com seus resultados experiments_get

Retorna um experimento por id (exp_..., de experiments_list) com seus resultados: por variante, as visitas, as conversões e a taxa de conversão na meta e, em relação à original, o ganho, a faixa provável da diferença, o p-value, se é significativo com a confiança escolhida e a chance de superar a original. results.progress diz quão perto está de poder declarar um vencedor, e results.mismatch.found true significa que as visitas não estão distribuídas como os pesos indicam, então o resultado não deve ser considerado confiável. split divide os resultados por dispositivo, canal ou país (Pro ou superior) e humans_only mantém as visitas que o bot score classifica como provavelmente humanas (Business). Uma visita conta para uma variante quando viu essa variante, e uma conversão só conta depois disso. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/experiments/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/experiments/:id/start.json Iniciar um experimento experiments_start

Inicia um experimento em rascunho ou pausado, de modo que os visitantes da página original passem a ser enviados para as variantes. Com starts_at no futuro, ele espera esse horário. Como redireciona visitantes reais, a ferramenta MCP não o executa e responde com human_only e a página onde uma pessoa o inicia. A API o executa. Exige content.write.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Atualizar um experimento experiments_update

Altera um experimento. Só mudam as entradas que você envia, e variants substitui a lista inteira. Depois que um experimento começa, só name e send_to_winner podem mudar, porque páginas, participações ou metas novas no meio do caminho estragariam o resultado: use experiments_duplicate e edite a cópia. Exige content.write. Retorna o experimento.

Permissão: content.write

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

Exportações

POST /workspaces/:workspace_id/exports.json Enfileirar uma exportação (gerada em segundo plano) exports_create

Enfileira uma exportação de dados que é montada em segundo plano e a retorna na hora com status queued. Escolha-a quando precisar de um arquivo (CSV, JSON, XLSX, NDJSON ou um ZIP de painéis do dashboard) e use exports_preview antes para conferir colunas e tamanho sem criar nada. Para números leves, use as ferramentas de estatísticas. As entradas obrigatórias são workspace_id (caminho), site_id, from e to (YYYY-MM-DD, inclusivos, no fuso horário da exportação). kind decide o que é exportado e quais opções se aplicam. aggregated (padrão) dá métricas de visitas por intervalo de tempo e usa grouping, dimensions (até 6), metrics, filters e segment_id. pageviews, events e raw dão uma linha por acesso e usam fields, filters e segment_id, exigem o plano Pro ou superior e são limitados a 400 dias (raw a 93 dias). imported dá estatísticas diárias importadas e usa apenas dimensions. dashboard dá um ZIP dos painéis da visão geral (somente o formato zip). O file_format permitido por kind é csv, json ou xlsx para aggregated, pageviews, events e imported, csv ou ndjson para raw e zip para dashboard. As opções que não se aplicam ao kind escolhido são ignoradas. Um espaço de trabalho pode ter no máximo 5 exportações na fila ou em execução ao mesmo tempo. A resposta é a exportação com id (exp_...), status, row_count e expires_at (null até ser montada). Consulte exports_get até o status ser complete e depois chame exports_download. O usuário que a solicitou recebe um e-mail quando ela fica pronta, um webhook export.ready é enviado e a ação é gravada no log de auditoria. As propriedades de evento na coluna props incluem apenas as propriedades marcadas como seguras para exportação (veja event_properties_list).

Permissão: analytics.export

Exemplo
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 Excluir uma exportação e seu arquivo exports_delete

Exclui permanentemente uma exportação e seu arquivo gerado. O link de download deixa de funcionar na hora e isso não pode ser desfeito, mas você pode criar a exportação de novo. Use-a para remover uma exportação concluída ou com falha que você não precisa mais, já que os arquivos também são excluídos automaticamente 7 dias depois de montados. O id vem de exports_list. Retorna o objeto da exportação excluída como era antes da exclusão.

Permissão: analytics.export · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obter um link assinado para o arquivo (válido por 10 minutos) exports_download

Retorna um link de download de curta duração para uma exportação concluída. Escolha-a depois que exports_get mostrar status complete. A resposta tem url (um link assinado válido por 10 minutos, baixe-o imediatamente), expires_at (quando o link deixa de funcionar, ISO 8601), filename e byte_size (bytes). Ela falha com um erro de não encontrado de código expired quando a exportação tem mais de 7 dias, e com um erro de validação quando a exportação ainda está na fila ou em execução ou quando falhou (a mensagem de erro diz o motivo). Chame-a de novo para obter um link novo enquanto a própria exportação não tiver expirado. O id vem de exports_list.

Permissão: analytics.export

Exemplo
curl https://privatusanalytics.com/exports/:id/download.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/exports.json Listar exportações (a fila de tarefas) exports_list

Lista as exportações de um espaço de trabalho para os sites aos quais você tem acesso, das mais recentes para as mais antigas. Use-a para encontrar o id de uma exportação, verificar quais ainda estão em execução ou ver o que expirou. Filtre com site_id, status (queued, running, complete, failed ou expired) e kind (aggregated, pageviews, events, imported, raw ou dashboard). Paginada com page e per_page (até 100), e retorna data (uma lista de exportações, veja exports_get para os campos) mais a paginação em meta. Exige o workspace_id de workspaces_list.

Permissão: analytics.export

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/exports.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/exports/preview.json Pré-visualizar uma exportação: as primeiras 20 linhas e a contagem estimada de linhas exports_preview

Simulação de uma exportação que não cria nada. Recebe as mesmas entradas de exports_create e retorna kind, file_format, columns (os nomes das colunas em ordem), rows (até 20 linhas de exemplo como objetos indexados por coluna) e estimated_rows (uma contagem aproximada de linhas do arquivo completo). Para o kind dashboard, as linhas de exemplo listam cada nome de arquivo com sua contagem de linhas. Use-a para validar dimensões, campos, filtros e o intervalo de datas, e para ver o tamanho que a exportação teria antes de chamar exports_create. Ela roda de forma síncrona, então mantenha o intervalo de datas razoável. Os erros de validação são os mesmos de exports_create, incluindo a exigência do plano Pro para os tipos em nível de linha. Nada é armazenado e nenhum e-mail é enviado.

Permissão: analytics.export

Exemplo
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 Obter uma exportação e seu status exports_get

Retorna uma exportação, incluindo seu progresso. Use-a para consultar uma exportação iniciada com exports_create até o status ser complete ou failed. Os status são queued, running, complete, failed e expired. Os campos incluem id (exp_...), site_id (pa_...), kind, format, status, params (a definição armazenada da exportação), row_count (null até concluir), error (definido quando falha), completed_at, expires_at (os arquivos são mantidos por 7 dias após a conclusão), download_url (definido apenas enquanto o arquivo pode ser baixado, use exports_download para obter um link assinado) e created_at. O id vem de exports_create ou exports_list.

Permissão: analytics.export

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

Feedback privado

GET /sites/:site_id/testimonials/forms/:form_id/feedback.json Liste o feedback privado de um formulário, do mais recente ao mais antigo testimonial_feedback_list

O feedback privado é uma resposta com nota de 1 a 3 em um formulário com direcionamento de notas baixas ativado (Business e acima). Nunca é um depoimento, nunca é público e nunca é contado.

Permissão: analytics.read

Exemplo
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 Marque uma resposta de feedback privado como lida, ou como não lida de novo testimonial_feedback_mark_read

Define read_at em uma resposta de feedback privado, ou o limpa com read false. Marcar como lida uma resposta que já foi lida mantém o horário da primeira leitura. Nada é enviado à pessoa que a escreveu.

Permissão: analytics.read

Exemplo
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 Obtenha uma resposta de feedback privado testimonial_feedback_get

Retorna a nota, o texto, o nome que a pessoa informou e quando foi lida. O feedback privado é uma resposta com nota baixa em um formulário com direcionamento de notas baixas ativado. Nunca é um depoimento e nunca é público.

Permissão: analytics.read

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

Fontes de importação de depoimentos

POST /sites/:site_id/testimonials/imports/sources.json Adicione uma fonte de importação a partir de um link e inicie a sua primeira execução testimonial_import_sources_create

A plataforma é detectada a partir do link. O que a execução encontra espera na etapa de revisão (testimonial_import_sources_review) e nada é guardado até testimonial_import_sources_keep. Nada que é importado conta nos depoimentos mensais. O plano Free busca 1 importação por mês de um site de avaliações ou de uma página. Além disso, a resposta é 402 plan_limit.

Permissão: content.write

Exemplo
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 Exclua uma fonte. Os depoimentos que ela trouxe permanecem testimonial_import_sources_delete

Exclui a fonte com o seu histórico de execuções, o que espera na sua etapa de revisão e o seu arquivo enviado. Os depoimentos já mantidos a partir dela permanecem no site. Uma pessoa faz isso na página da fonte, então a ferramenta não executa nada e devolve essa página.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Descarte os itens encontrados testimonial_import_sources_discard

Informe item_ids (ids de testimonial_import_sources_review) ou all true para tudo o que ainda espera, nunca os dois. Um item descartado sai da etapa de revisão e o que foi lido sobre a pessoa é apagado. Nenhum depoimento é excluído. Caso contrário, o servidor responde com 422 e o código selection ou unknown_ids.

Permissão: content.write

Exemplo
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 Encontre depoimentos no próprio site testimonial_import_sources_find

Lê o domínio do site e as páginas para as quais ele aponta que parecem conter depoimentos, uma vez por site. É gratuito: não é uma das importações buscadas do plano Free. O que encontra espera na etapa de revisão da fonte que devolve.

Permissão: content.write

Exemplo
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 Liste as fontes de importação de um site testimonial_import_sources_list

meta traz fetched_imports (used, limit e resets_on do mês, limit null significa ilimitado) e sync (o ritmo que o plano permite).

Permissão: analytics.read

Exemplo
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 Mantenha os itens encontrados como depoimentos testimonial_import_sources_keep

Informe item_ids (até 100) ou all. Cada item mantido é guardado pela mesma rota de qualquer outro depoimento, então as duplicatas nunca são guardadas duas vezes. Nada que é mantido conta nos depoimentos mensais. meta diz quantos foram mantidos.

Permissão: content.write

Exemplo
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 Liste as plataformas que uma importação consegue ler testimonial_import_platforms_list

O registro de fontes testadas. Uma plataforma só é listada depois que a sua importação é comprovada em uma página real. Cada entrada diz qual link colar.

Permissão: analytics.read

Exemplo
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 Liste o que uma fonte encontrou e ainda não foi decidido testimonial_import_sources_review

meta traz as contagens por selo (new, already_here, likely_duplicate).

Permissão: analytics.read

Exemplo
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 Leia uma fonte de novo agora testimonial_import_sources_run

Uma execução manual é uma importação buscada e conta como uma das do mês no plano Free (402 plan_limit além disso). Recusada enquanto uma execução está ativa (422 in_progress) e depois de 3 execuções da fonte em 24 horas em qualquer plano (422 too_many_runs). Em uma fonte com erro, zera a contagem de falhas.

Permissão: content.write

Exemplo
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 Obtenha uma fonte de importação com o seu estado e contagens testimonial_import_sources_get

Retorna a plataforma, o nome, o endereço lido, com que frequência é lida de novo, o estado, quantos itens esperam na etapa de revisão, quantos foram mantidos, as falhas seguidas e quando rodou pela última vez e quando roda em seguida.

Permissão: analytics.read

Exemplo
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 Altere o link, o nome, a sincronização e a aprovação automática de uma fonte, ou pause-a testimonial_import_sources_update

Uma sincronização acima do plano (qualquer uma no Free, semanal no Pro) é recusada com 402 plan_limit.

Permissão: content.write

Exemplo
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 '{…}'

Formulários

POST /sites/:site_id/testimonials/forms.json Crie um formulário testimonial_forms_create

Uma chamada traz o formulário inteiro: etapas, perguntas, lógica de salto, texto de consentimento e idioma. O que ficar de fora começa de um padrão sensato no idioma do formulário, e o slug vem do nome. O link é https://privatus.page/f/<slug>. O direcionamento de notas baixas e o CSS personalizado exigem o plano Business (402 plan_limit sem ele). Respostas em vídeo e áudio são oferecidas a quem dá o depoimento no Pro e acima.

Permissão: content.write

Exemplo
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 Exclua um formulário de vez testimonial_forms_delete

Exclui o formulário, os seus registros de envio, a sua recompensa e o seu feedback privado. Os depoimentos que ele coletou são mantidos. Não pode ser desfeito, então é feito por uma pessoa na página. A API aceita confirm (o nome ou o id do formulário).

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Mova um formulário para a lixeira testimonial_forms_trash

O seu link responde que o formulário está fechado até ser restaurado. A lixeira é esvaziada após 30 dias. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Copie um formulário, opcionalmente para outro idioma testimonial_forms_duplicate

Copia todas as configurações, exceto o slug, as estatísticas e a recompensa.

Permissão: content.write

Exemplo
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 Liste os formulários de um site testimonial_forms_list

Os formulários na lixeira são listados com trashed true e ficam de fora caso contrário. Cada formulário traz as suas configurações, a sua recompensa e quantos envios já teve.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/forms/:id/qr.json Obtenha o código QR de um formulário em SVG ou PNG testimonial_forms_qr

O código contém o link do formulário com ?src=qr, então as leituras são contadas como um canal próprio. Um slug alterado mantém um código impresso funcionando.

Permissão: analytics.read

Exemplo
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 Restaure um formulário da lixeira. O seu link volta a funcionar testimonial_forms_restore

Tira um formulário da lixeira como estava, com as suas perguntas, envios e feedback privado. O seu link (/f/<slug>) e as suas incorporações voltam a receber respostas. O servidor responde com 422 e o código not_in_trash para um formulário que não está na lixeira.

Permissão: content.write

Exemplo
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 Obtenha o link de um formulário, os links do código QR e os trechos de incorporação testimonial_forms_share

Retorna o link, o trecho de incorporação em linha e o trecho de incorporação em pop-up. As entradas do pop-up (trigger, label, position, accent) alteram o trecho do pop-up.

Permissão: analytics.read

Exemplo
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 Obtenha um formulário com cada etapa, pergunta, regra e configuração testimonial_forms_get

Retorna o formulário inteiro como testimonial_forms_create e testimonial_forms_update o aceitam, com o seu slug, o seu link, a sua recompensa e quantos envios tem. Um formulário na lixeira não é encontrado aqui: restaure-o primeiro.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/forms/:id.json Altere um formulário. Só as entradas enviadas mudam testimonial_forms_update

Uma mudança em uma etapa, em uma pergunta ou no texto de consentimento aumenta a versão do formulário, que todo registro de consentimento guarda. Um slug alterado deixa o link antigo redirecionando. Envie questions como a lista inteira.

Permissão: content.write

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

Funis

POST /sites/:site_id/funnels.json Criar um funil funnels_create

Cria um funil, uma sequência de etapas pelas quais as visitas passam, medida por visita. Passe name e steps, uma lista ordenada de {type, value, match, name}. type é page, event ou goal. value é um caminho para etapas de página (por exemplo /pricing), um nome de evento personalizado para etapas de evento ou um id de meta (goal_..., de goals_list) para etapas de meta. match é apenas para etapas de página e é exact, prefix, glob (curinga *) ou regex, assumindo por padrão glob quando o valor tem um * e exact caso contrário. name é um rótulo opcional. Etapas com valor vazio são descartadas. order_mode é strict (cada etapa deve vir depois da anterior, o padrão) ou any (etapas em qualquer ordem). window é visit (o padrão) ou day, e ambos medem dentro de uma única visita porque nenhum id de visitante é armazenado. Os limites do plano se aplicam. O Free permite 3 funis por site e 5 etapas, o Pro permite 10 etapas e o Business 20, e um funil precisa de pelo menos 2 etapas. Retorna o funil com id (fun_...). Leia os resultados com funnels_get. Exige a permissão content.write.

Permissão: content.write

Exemplo
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 Excluir um funil funnels_delete

Exclui permanentemente a definição de um funil. Nenhum dado de análise é tocado, mas o funil e suas configurações não podem ser recuperados e não há como desfazer. Retorna o funil excluído. Os ids (fun_...) vêm de funnels_list. Use funnels_update para alterar um funil em vez disso. Exige a permissão content.write.

Permissão: content.write

Exemplo
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 Listar funis com entradas, conclusões e taxa funnels_list

Lista os funis de um site com seus resultados principais no período, ordenados por nome. Cada funil tem id (fun_...), name, steps, order_mode, window e stats {entered, completed, conversion_rate}, em que entered são as visitas que chegaram à etapa 1, completed são as visitas que chegaram à última etapa e conversion_rate é uma porcentagem (de 0 a 100). Paginada com page e per_page (máximo 100, padrão 25). Aceita as entradas compartilhadas period e filters. Para o detalhe etapa por etapa use funnels_get, e use funnels_create para adicionar um.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/funnels.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/funnels/:id.json Relatório do funil: contagem por etapa, conversão, abandono, tempo entre etapas e para onde as visitas foram em vez disso funnels_get

O relatório de conversão de um funil em um período. Retorna period, funnel_id, name, order_mode, window, steps, overall_conversion_rate, breakdown e, com compare, comparison. Cada etapa tem index (a partir de 1), name, type, value, match, count (visitas que a alcançaram), step_conversion_rate (porcentagem da etapa anterior), overall_conversion_rate (porcentagem da etapa 1), dropoff e dropoff_rate (visitas que saíram depois desta etapa), median_seconds_from_previous (null para a etapa 1) e next_pages (as 5 principais páginas visitadas em seguida pelas visitas que saíram do funil, com (exit) para as que foram embora). As taxas são porcentagens de 0 a 100. Defina breakdown como channel, device, country, utm_campaign, utm_source, browser ou os para obter a conversão geral por valor (os 20 principais). comparison tem as contagens do outro período, overall_conversion_rate e change (porcentagem, null quando a taxa anterior era 0). Os filtros de página são ignorados aqui porque encurtariam as visitas, use uma etapa de página em vez disso. Aceita as entradas compartilhadas period, compare, filters e segment. Os ids vêm de funnels_list.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/funnels/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/funnels/:id.json Atualizar um funil funnels_update

Altera um funil. Apenas as entradas enviadas mudam. Enviar steps substitui a lista inteira de etapas, então envie todas as etapas em ordem (o formato e os limites de etapas são os mesmos de funnels_create, o Free permite 5 etapas, o Pro 10 e o Business 20, e as etapas de meta devem nomear metas deste site). Você também pode alterar name, order_mode (strict ou any) e window (visit ou day). Os resultados são calculados a partir da definição na hora da leitura, então alterar um funil se aplica a todo o histórico imediatamente e os números passados mostrados antes serão diferentes. Retorna o funil. Os ids vêm de funnels_list. Exige a permissão content.write.

Permissão: content.write

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

Funções

POST /workspaces/:workspace_id/roles.json Criar uma função personalizada roles_create

Cria uma função personalizada, um conjunto nomeado de permissões que você pode dar aos membros por invitations_create ou members_update com role custom e o id da função como custom_role_id. Exige o plano Business e members.manage. permissions deve listar pelo menos um nome entre os valores permitidos (analytics.read, analytics.export, content.write, sites.manage, uptime.manage, members.manage, tokens.manage, billing.manage, workspace.manage) e você não pode incluir uma permissão que você mesmo não tem. Retorna a função (veja roles_list para os campos).

Permissão: members.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Excluir uma função personalizada (não pode estar em uso) roles_delete

Exclui uma função personalizada. Isso não pode ser desfeito e falha enquanto algum membro ou convite pendente ainda usar a função, então mova essas pessoas para outra função antes com members_update (encontre-as com members_list). As funções integradas não podem ser excluídas. Pegue o id (uuid) em roles_list. Exige members.manage. Retorna a função excluída.

Permissão: members.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Listar funções personalizadas roles_list

Lista as funções personalizadas de um espaço de trabalho, ordenadas por nome. As funções personalizadas são um recurso do plano Business que agrupa permissões sob um nome seu, e as funções integradas (owner, admin, editor, analyst, viewer, billing) não são listadas aqui. Cada função tem id (uuid, usado como custom_role_id em invitations_create e members_update), name, permissions (nomes como analytics.read, content.write, members.manage), members (o número de membros que a têm) e created_at. Quem tem acesso limitado a alguns sites vê apenas funções dentro do seu alcance.

Permissão: member

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/roles.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/roles/:id.json Atualizar uma função personalizada roles_update

Renomeia uma função personalizada e/ou substitui toda a sua lista de permissões. Apenas as entradas enviadas mudam, e permissions substitui a lista existente em vez de acrescentar a ela. A mudança se aplica na hora a todos os membros e convites pendentes que têm a função. Você só pode editar uma função cujas permissões você tem por completo, e quem tem acesso limitado a alguns sites precisa de alcance sobre todos os sites de quem a tem. Exige members.manage. Pegue o id (uuid) em roles_list. Retorna a função atualizada.

Permissão: members.manage · Somente HTTP (não é uma ferramenta MCP)

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

Idiomas dos depoimentos

GET /sites/:site_id/testimonials/settings/languages.json Obtenha as configurações de idioma dos depoimentos de um site testimonial_languages_get

O idioma padrão, os idiomas oferecidos, se os depoimentos recém-aprovados são traduzidos automaticamente, se o plano inclui tradução, se a tradução está configurada e os caracteres do mês usados e restantes.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/languages.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/settings/languages.json Defina o idioma padrão, os idiomas oferecidos e a tradução automática testimonial_languages_update

Envie só o que muda. O padrão está sempre entre os idiomas oferecidos, e um idioma em que um formulário é escrito não pode ser removido (in_use). Ativar auto_translate exige Business ou acima (402 plan_limit nos demais): a partir daí as palavras de cada depoimento recém-aprovado são enviadas ao Google Cloud Translation, e o membro recebe um e-mail avisando que um assistente alterou isto.

Permissão: sites.manage

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

Imagens de depoimentos

POST /sites/:site_id/testimonials/images/bulk.json Faça imagens de todos os depoimentos aprovados de uma coleção testimonial_images_bulk_create

Até 200 depoimentos por execução, uma imagem por tamanho para cada um. Um texto longo demais para a imagem é desenhado a partir do seu destaque ou, se não houver, das suas primeiras frases (excerpted diz quantos). A resposta lista as imagens iniciadas, os depoimentos deixados de fora com o motivo e export_id: um zip com os PNGs aparece na página Exportações quando são desenhados.

Permissão: content.write

Exemplo
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 Faça imagens de um depoimento aprovado, uma por tamanho testimonial_images_create

Só um depoimento aprovado pode ser desenhado, porque o PNG ganha um endereço público: qualquer outro é recusado com not_approved. Cada imagem começa como rendering e é desenhada em segundo plano. A resposta é a lista de imagens iniciadas. Consulte testimonial_images_get para file_url. Um 422 com text_too_long significa que as palavras não cabem: use text_mode highlight ou excerpt, ou um tamanho mais alto.

Permissão: content.write

Exemplo
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 Exclua uma imagem e o seu arquivo testimonial_images_delete

O PNG é excluído do host de mídia e o seu endereço deixa de funcionar. Uma imagem não tem lixeira. Pode ser feita de novo a partir do seu depoimento com testimonial_images_create. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Liste as imagens de um site testimonial_images_list

Imagens feitas a partir de depoimentos aprovados, as mais novas primeiro, 25 por página. Filtre por status, template, size ou testimonial_id. Cada uma traz file_url quando está pronta.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/images.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/images/:id.json Obtenha uma imagem, com o seu estado e o endereço do seu PNG testimonial_images_get

status é rendering, ready ou failed. file_url é definido quando está pronta. Consulte isto depois de testimonial_images_create até que status deixe de ser rendering.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/images/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/images/:id.json Altere como uma imagem é desenhada e renderize-a de novo testimonial_images_update

Envie só o que muda. Sem nada enviado, renderiza a mesma imagem de novo a partir do depoimento como está agora, que também é a forma de tentar de novo uma que falhou. Uma nova renderização tem um novo file_url, e o arquivo antigo é excluído.

Permissão: content.write

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

Importações

DELETE /sites/:site_id/imports/google/connection.json Desconectar sua conta do Google Analytics e excluir os tokens de acesso armazenados imports_google_disconnect

Remove a conexão armazenada com o Google Analytics do membro que chama para o espaço de trabalho deste site, de modo que as importações do GA4 deixam de ler do Google até que ele seja conectado novamente no app. Os dados que já foram importados permanecem e só são removidos excluindo a importação com imports_delete. A concessão não é revogada no lado do Google. Falha com um erro de validação quando não há conexão, ou enquanto uma das importações do GA4 do membro estiver na fila ou em execução. Retorna um objeto com disconnected true. A conexão é feita no app (a tela de login do Google), não há ferramenta para isso.

Permissão: sites.manage

Exemplo
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 Listar propriedades do Google Analytics 4 para importar imports_google_properties

Lista as propriedades do Google Analytics 4 que a conta Google conectada do membro que chama consegue ler. Chame-a antes de imports_create com source ga4 para obter o property_id a usar. Retorna uma lista de objetos com id (como properties/123456789, passe-o como property_id), name e account. Falha com um erro de validação quando o membro não conectou o Google para este espaço de trabalho (feito no app, não há ferramenta para isso) ou quando o Google rejeita a requisição. Faz uma chamada ao vivo ao Google e não altera nada.

Permissão: sites.manage

Exemplo
curl https://privatusanalytics.com/sites/:site_id/imports/google/properties.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/imports.json Iniciar uma importação (propriedade GA4 ou upload de CSV) imports_create

Inicia uma importação de dados históricos de outra ferramenta de análise para um site, processada em segundo plano, e retorna a importação com status queued. Escolha source ga4 para extrair da API do Google Analytics 4, que exige uma conexão com o Google feita no app, property_id (de imports_google_properties) e date_from. date_to assume por padrão o dia anterior ao primeiro evento rastreado do site, ou ontem. As outras fontes (universal_analytics, fathom, simple_analytics, plausible, matomo, umami, clicky) recebem uma exportação CSV enviada como entrada file (upload de formulário multipart, até 50 MB), o que as torna pouco práticas de iniciar por MCP e melhor feitas no app. dimension só é necessária para sobrescrever a detecção do que as linhas do CSV detalham, por exemplo exportações Label do Matomo. As linhas importadas nunca contam para a cota de eventos e só aparecem nas estatísticas quando você passa include_imported true. Um espaço de trabalho pode ter no máximo 5 importações na fila ou em execução ao mesmo tempo. Consulte imports_get até o status ser complete ou failed. Exige a permissão sites.manage.

Permissão: sites.manage

Exemplo
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 Excluir uma importação e todos os seus dados importados imports_delete

Exclui permanentemente uma importação junto com todas as linhas que ela trouxe e seu arquivo enviado. As estatísticas que incluíam os dados importados mudam na hora quando include_imported está ativado, e isso não pode ser desfeito, embora você possa importar de novo. O id vem de imports_list e exige o site_id. Retorna a importação excluída. Exige a permissão sites.manage. Os dados coletados pelo rastreador não são tocados.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Listar importações de um site imports_list

Lista as importações de um site, das mais recentes para as mais antigas. Use-a para encontrar o id de uma importação ou verificar se alguma ainda está em execução. Filtre opcionalmente por status (queued, running, complete ou failed). Paginada com page e per_page (até 100). Cada item tem id, site_id, source, status, date_from, date_to, rows_imported, error, completed_at e created_at. Veja imports_get para detalhes e imports_create para iniciar uma.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/imports.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/imports/:id.json Obter uma importação e seu status imports_get

Retorna uma importação de um site, usada para consultar uma importação iniciada com imports_create. Os campos são id (imp_...), site_id, source, status (queued, running, complete ou failed), date_from e date_to (YYYY-MM-DD, null quando desconhecidos), rows_imported (contagem de linhas diárias importadas), error (definido quando falha), completed_at e created_at. O id vem de imports_create ou imports_list. As linhas importadas só aparecem nas estatísticas quando a chamada de estatísticas define include_imported como true.

Permissão: analytics.read

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

Importações de depoimentos por planilha

POST /sites/:site_id/testimonials/imports/spreadsheet.json Envie uma planilha (ou texto CSV) e leia as suas colunas testimonial_spreadsheet_imports_create

Etapa 1 de uma importação por planilha. Envie file (CSV, TSV ou XLSX, no máximo 10 MB e 5.000 linhas, com os cabeçalhos na primeira linha) ou content (texto CSV de até 1 MB). A resposta traz as colunas, três valores de exemplo de cada uma e um primeiro palpite de para onde cada coluna vai. Nada é importado ainda: continue com testimonial_spreadsheet_imports_update e testimonial_spreadsheet_imports_run. Uma planilha nunca conta nos depoimentos mensais nem nas importações buscadas.

Permissão: content.write

Exemplo
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 Leia o arquivo associado na etapa de revisão testimonial_spreadsheet_imports_run

As linhas que podem ser usadas esperam com uma caixa de seleção. As que não podem são listadas com o número da linha e o motivo. Mantenha-as com testimonial_import_sources_keep, usando o id da planilha como id da fonte.

Permissão: content.write

Exemplo
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 Obtenha as colunas, os exemplos, a associação, as opções e as contagens de uma planilha testimonial_spreadsheet_imports_get

Retorna as colunas do arquivo com valores de exemplo, para qual campo cada coluna vai, as opções (status padrão, tags, coleção, formato de data, o que acontece com as duplicatas) e, depois de executada, quantas linhas esperam na etapa de revisão e quantas foram mantidas.

Permissão: analytics.read

Exemplo
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 Salve qual coluna vai para onde e as opções do arquivo testimonial_spreadsheet_imports_update

Etapas 2 e 3 de uma importação por planilha. mapping é um objeto de nome da coluna para campo, com valor vazio para uma coluna a deixar de fora, e duas colunas não podem ir para um mesmo campo. As opções são default_status (pending ou approved), tags, collection_id (uma coleção manual), default_source_name, date_format (auto, ymd, dmy ou mdy) e duplicates (skip ou queue). Só o que é enviado muda, e nada é importado até testimonial_spreadsheet_imports_run.

Permissão: content.write

Exemplo
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 '{…}'

Kit de marca dos depoimentos

DELETE /sites/:site_id/testimonials/settings/brand_kit.json Devolva o kit de marca dos depoimentos de um site aos padrões do Privatus Analytics testimonial_brand_kit_reset

Limpa toda cor, fonte, o raio, o estilo de nota, os logotipos e o CSS personalizado em uma só etapa, e todo formulário, widget e mural muda junto. Não pode ser desfeito, então um assistente é enviado à página do Kit de marca em vez de executar.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obtenha o kit de marca dos depoimentos de um site, com cada cor resolvida para claro e escuro testimonial_brand_kit_get

Retorna as cores, fontes, raio dos cantos, estilo de nota, logotipos, chave do selo e CSS personalizado com que todo formulário, widget e mural do site é desenhado. Uma configuração que nunca foi alterada volta com o padrão do Privatus Analytics.

Permissão: analytics.read

Exemplo
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 Altere o kit de marca dos depoimentos de um site testimonial_brand_kit_update

Só as entradas que você envia são alteradas. Envie uma string vazia para devolver uma configuração ao padrão do Privatus Analytics. O CSS personalizado é verificado quando salvo, e o que não é permitido é recusado com a linha em que está. O CSS personalizado exige o plano Business e ocultar o selo exige o plano Business. Sem ele, o servidor responde com 402 plan_limit.

Permissão: sites.manage

Exemplo
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 '{…}'

Lista de desfazer dos depoimentos

GET /sites/:site_id/testimonials/settings/undo.json Liste o que foi alterado nos últimos 7 dias e pode ser desfeito testimonial_undo_records_list

Mais recentes primeiro. Cada registro diz o que foi executado, quem executou, quantos itens alterou e ignorou e por quê, e até quando pode ser desfeito.

Permissão: analytics.read

Exemplo
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 Leia um registro de desfazer testimonial_undo_records_get

Para uma execução em segundo plano, state é running e processed diz até onde foi.

Permissão: analytics.read

Exemplo
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 Desfaça uma ação em lote ou uma única alteração em até 7 dias testimonial_undo_records_undo

Recoloca o valor anterior em tudo o que a execução alterou. O que foi alterado de novo depois é deixado como está e contado em left. Uma união de pessoas ou de duplicatas é desfeita da mesma forma. Via MCP, um desfazer que excluiria ou moveria para a lixeira não é executado (o desfazer de uma restauração, de uma execução de tradução e de uma execução de criação de imagens): a ferramenta responde com human_only e a página do app em que uma pessoa faz isso.

Permissão: content.write

Exemplo
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 '{…}'

Lixeira de depoimentos

DELETE /sites/:site_id/testimonials/trash/permanent.json Exclua de vez até 100 itens da lixeira testimonial_trash_delete_permanently

Isso não pode ser desfeito. confirm é o nome do item (o nome da pessoa, no caso de um depoimento) ou o seu id, para um item, e o nome do site, para vários. Só itens na lixeira são aceitos.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Exclua de vez tudo o que está na lixeira testimonial_trash_empty

Isso não pode ser desfeito. confirm é o nome do site. Até 100 itens são excluídos de uma vez. Uma lixeira maior é esvaziada em segundo plano e a resposta traz state running.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Liste o que está na lixeira, um tipo por vez testimonial_trash_list

Responde com os itens de um tipo (testimonial por padrão) e, em meta.counts, quantos de cada tipo estão na lixeira. Cada item diz para onde volta, o que o exibia, quem o enviou para a lixeira e quando sai de lá.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/trash.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/trash/restore.json Restaure até 100 itens da lixeira, exatamente como estavam testimonial_trash_restore

Os ids devem ser de um só tipo. Restaurar depoimentos responde com um id de desfazer (data.id e meta.undo_id) que testimonial_undo_records_undo aceita por 7 dias. Uma restauração nunca conta como um novo depoimento.

Permissão: content.write

Exemplo
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/trash/restore.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'

Log de auditoria

GET /workspaces/:workspace_id/audit_log.json Listar entradas do log de auditoria (adicione .csv para exportar) audit_logs_get

Retorna o log de auditoria do espaço de trabalho, um registro paginado, do mais recente ao mais antigo, de quem alterou o quê (configurações, membros, sites, metas, tokens e assim por diante). Exige a permissão workspace.manage e um plano com histórico de auditoria. O plano Free não tem nenhum e a chamada falha com um erro de limite de plano, o Pro guarda 30 dias, o Business 365 dias e o Enterprise não tem limite. Entradas mais antigas que a janela de retenção nunca são retornadas. Filtre com actor (o e-mail de um membro, correspondência exata), item_type (o tipo de registro, como Site, Goal ou Membership), event (create, update ou destroy) e from e to (YYYY-MM-DD, inclusivos, em UTC). Cada entrada tem id, created_at, event, item_type, item_id, target (um rótulo legível, como Site: example.com), actor_email (null quando a alteração foi feita pelo sistema ou por um usuário excluído), actor_name, token_name (o token de API usado, null para uma sessão de navegador), changes (um objeto que associa cada campo alterado a um par [antes, depois], com os segredos removidos) e ip (o endereço usado pelo membro ou pelo cliente de API, null quando desconhecido). Uma exportação em CSV do mesmo log está disponível apenas no app.

Permissão: workspace.manage

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

Membros

POST /workspaces/:workspace_id/invitations.json Convidar pessoas por e-mail invitations_create

Convida uma ou mais pessoas para um espaço de trabalho por e-mail e envia a cada uma um e-mail de convite com um link válido por 14 dias. emails é uma lista de até 50 endereços (uma string separada por vírgula, espaço ou ponto e vírgula também funciona no formulário do app) e os endereços que já são membros são ignorados, mas é um erro quando todos eles são membros. Convidar um endereço que já tem um convite pendente substitui esse convite e envia um novo e-mail. role é uma das funções de members_list (padrão viewer, o owner não pode ser convidado). Use role custom junto com custom_role_id (o id de roles_list, plano Business). Por padrão o acesso cobre todos os sites, inclusive os futuros. Para limitar o acesso, defina all_sites como false e liste site_ids como ids públicos de site (pa_...). Os convites pendentes contam para o limite de membros do plano (o Free permite 3 membros) e a chamada falha quando o limite seria excedido. Os e-mails de convite têm limite de frequência. Você não pode conceder uma função com mais permissões ou sites do que os seus. Exige members.manage. Retorna os convites criados (veja invitations_list para os campos).

Permissão: members.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Revogar um convite pendente invitations_delete

Revoga um convite pendente para que seu link deixe de funcionar e libera a vaga que ele ocupava. A exclusão não pode ser desfeita, convide a pessoa de novo com invitations_create. Pegue o id (um uuid) em invitations_list. Quem tem acesso limitado a alguns sites só pode revogar convites que não concedam mais do que os seus próprios sites. Exige members.manage. Retorna o convite revogado.

Permissão: members.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Listar convites pendentes invitations_list

Lista os convites de equipe pendentes de um espaço de trabalho, dos mais recentes para os mais antigos e paginados. Os convites aceitos e revogados não são listados (use members_list para quem entrou), e os expirados permanecem até serem substituídos ou revogados. Exige members.manage. Quem tem acesso limitado a alguns sites só vê convites dentro do seu alcance. Cada item tem id (uuid, usado por invitations_delete), email, role, custom_role (o nome da função personalizada quando role é custom, caso contrário null), all_sites, site_ids (ids públicos de site pa_..., vazio quando all_sites é true), invited_by (o e-mail de quem convidou), expires_at e created_at.

Permissão: members.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/invitations.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE /workspaces/:workspace_id/members/:id.json Remover um membro (ou sair do espaço de trabalho) members_delete

Remove um membro de um espaço de trabalho, ou permite que quem chama saia dele quando o id é o da própria associação. É imediato e não pode ser desfeito: a pessoa perde o acesso, seus tokens de API para este espaço de trabalho são revogados e qualquer vínculo SCIM é removido. Suas notas e as entradas de auditoria passadas permanecem. O proprietário não pode ser removido nem sair, transfira antes a propriedade com ownership_transfers_create. Remover outra pessoa exige members.manage, e você não pode remover alguém com mais permissões ou sites do que você tem. Sair não exige permissão, mas um token limitado em permissões ou sites não pode ser usado para sair. A pessoa pode ser convidada de novo depois com invitations_create. Pegue o id (o uuid da associação) em members_list. Retorna o membro removido.

Permissão: member · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Listar membros do espaço de trabalho members_list

Lista os membros de um espaço de trabalho na ordem em que entraram, paginados. Use query para pesquisar por nome ou e-mail (parcial, sem diferenciar maiúsculas e minúsculas) e role para filtrar por função. Os convites pendentes não são incluídos (use invitations_list). Cada membro tem id (o uuid da associação, usado por members_update, members_delete e ownership_transfers_create), email, name (pode ser nulo), role, custom_role (nome, null a menos que role seja custom), custom_role_id, all_sites, include_future_sites, site_ids (ids públicos de site pa_..., vazio quando all_sites é true), two_factor (se o membro tem um app autenticador ou uma passkey), last_active_at (pode ser nulo) e created_at. Quem tem acesso limitado a alguns sites vê apenas membros dentro do seu alcance.

Permissão: member

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/members.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/members/:id.json Alterar a função ou o acesso a sites de um membro members_update

Altera a função e/ou o acesso a sites de um membro em um espaço de trabalho. Apenas as entradas enviadas mudam. Para mudar a função, envie role (admin, editor, analyst, viewer ou billing, e custom com custom_role_id de roles_list no plano Business). A função do proprietário não pode ser alterada aqui, use ownership_transfers_create, e você não pode editar a sua própria associação nem a de alguém acima de você. Para limitar os sites, envie all_sites false junto com site_ids (ids públicos de site pa_...) e acrescente include_future_sites true para também conceder os sites criados depois. Envie all_sites true para dar acesso a todos os sites. Uma lista site_ids enviada sem all_sites false é um erro para um membro que hoje tem todos os sites. Você não pode conceder mais permissões ou sites do que tem. Exige members.manage. Pegue o id em members_list. Retorna o membro atualizado.

Permissão: members.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Transferir a propriedade do espaço de trabalho para outro membro (somente o proprietário, você passa a ser administrador) ownership_transfers_create

Transfere a propriedade de um espaço de trabalho para outro membro e rebaixa quem chama para admin, o que é difícil de desfazer porque só o novo proprietário pode devolvê-la. Apenas o proprietário atual pode chamá-la, e um token não pode ser limitado a certos sites ou permissões. membership_id é o uuid da associação do novo proprietário, de members_list (não um id de usuário nem um e-mail), e a pessoa já deve ser membro, convide-a primeiro se não for. O novo proprietário recebe a função owner com acesso a todos os sites, e a função owner não pode ser concedida por members_update. Um espaço de trabalho Free não pode ser dado a alguém que já possui outro espaço de trabalho Free. A cobrança permanece com o espaço de trabalho. Um token que faz esta chamada precisa de members.manage. Retorna o registro de membro do novo proprietário.

Permissão: member · Somente HTTP (não é uma ferramenta MCP)

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

Menções em depoimentos

GET /sites/:site_id/testimonials/mentions.json Liste as palavras e expressões que se repetem nos depoimentos de um site testimonial_mentions_list

Cada termo vem com quantos depoimentos o contêm, a sua participação, a nota média deles e os últimos 90 dias contra os 90 anteriores. Ordene por rating_asc para ler do que as pessoas reclamam, ou por rising para ver o que é novo. meta.refreshed_at diz quando os termos foram reconstruídos pela última vez. Passe um termo para testimonials_list como mention para ler os depoimentos.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/mentions.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/mentions/tag.json Marque todo depoimento que menciona uma palavra ou expressão testimonial_mentions_tag

Uma ação em lote sobre o resultado inteiro, com desfazer. O termo é qualquer palavra ou expressão de duas palavras, comparada com radicalização da mesma forma que as Menções são contadas. Uma tag nomeada pela primeira vez é criada. Responde com um id de desfazer que testimonials_bulk_undo aceita por 7 dias. Mais de 100 são executados em segundo plano.

Permissão: content.write

Exemplo
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 Oculte um termo que é só ruído, ou mostre-o de novo testimonial_mentions_update

Um termo oculto sai da lista de Menções e da faceta Menções da caixa de entrada, e continua oculto quando os termos são reconstruídos.

Permissão: content.write

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

Metas

POST /sites/:site_id/goals/:id/archive.json Arquivar uma meta (oculta dos relatórios) goals_archive

Arquiva uma meta. Uma meta arquivada fica oculta dos relatórios, não conta para o limite de metas do plano e mantém sua definição, então pode ser restaurada depois com goals_unarchive. Nenhum dado é excluído. Retorna a meta com archived true e archived_at definido. Arquivar uma meta já arquivada não faz nada. Use goals_delete para removê-la de vez. Exige a permissão content.write.

Permissão: content.write

Exemplo
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 Criar uma meta goals_create

Cria uma meta de conversão. As metas são definições aplicadas quando os relatórios são lidos, então uma nova meta conta imediatamente os eventos correspondentes em todo o histórico existente. São obrigatórios name e kind. kind decide quais outras entradas se aplicam. page exige pattern (um caminho, por exemplo /thank-you, com match_type exact, prefix, glob ou regex) e pode usar hostname. event exige event_name e pode usar conditions (testes de propriedade como {key: plan, operator: is, value: pro}, todos devem corresponder, com os operadores is, is_not, contains, gt, lt). engagement exige pattern mais scroll_threshold (porcentagem de 1 a 100) e/ou time_threshold_seconds (atingida quando um dos dois é cumprido). outbound compara o domínio do link com pattern (por exemplo stripe.com) e download compara o arquivo com pattern (por exemplo *.pdf). value_mode é none (padrão), fixed (usa fixed_value, um valor decimal na moeda do site, como 49.5, armazenado como fixed_value_minor em centavos) ou revenue (a própria receita do evento). count_mode é once_per_visit (padrão) ou every. Os espaços de trabalho Free permitem 10 metas ativas por site, os planos pagos são ilimitados. Retorna a meta com id (goal_...). Exige a permissão content.write.

Permissão: content.write

Exemplo
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 Excluir uma meta (os dados são mantidos) goals_delete

Exclui permanentemente a definição de uma meta. Nenhum dado de evento é excluído, mas a meta desaparece dos relatórios, e as etapas de funil, jornadas e experimentos que apontam para ela deixam de funcionar. Não há como desfazer. Para ocultar uma meta e mantê-la, use goals_archive. Retorna a meta excluída. Os ids (goal_...) vêm de goals_list. Exige a permissão content.write.

Permissão: content.write

Exemplo
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 Copiar uma meta goals_duplicate

Copia a definição de uma meta para uma nova meta ativa. A cópia recebe o nome name se você o enviar, caso contrário o nome original seguido de (copy). Ela conta para o limite de metas do plano (10 metas ativas por site no Free). Retorna a nova meta com um novo id. Use-a para começar uma variação de uma meta e depois altere-a com goals_update. Exige a permissão content.write.

Permissão: content.write

Exemplo
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 Listar metas com conclusões, conversões, taxa e valor de um período goals_list

Lista as metas de um site com seus resultados no período. Cada meta é a definição (id goal_..., name, kind, match_type, pattern, hostname, event_name, conditions, scroll_threshold, time_threshold_seconds, value_mode, fixed_value_minor em centavos, count_mode, archived, archived_at) mais stats {completions, conversions, conversion_rate, value, change}. conversion_rate é uma porcentagem (de 0 a 100), value é em unidades menores (centavos) e change é a variação percentual das conversões em relação ao período anterior (null quando a contagem anterior era 0). status filtra por active (padrão), archived ou all. Paginada com page e per_page (máximo 100, padrão 25). Use goals_get para o relatório completo de uma meta. Aceita as entradas compartilhadas period, compare e filters.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/goals.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/goals/:id.json Relatório da meta: métricas, gráfico, detalhamentos e a jornada até a conversão goals_get

Uma meta em profundidade em um período. Retorna period, goal_id, goal (a definição), metrics, interval, series, breakdowns, journey e, com compare, comparison_period, comparison e change. metrics tem completions (cada evento correspondente), conversions (visitas com pelo menos uma conclusão), conversion_rate (porcentagem de 0 a 100) e value (unidades menores, centavos). conversion_rate divide por visitas, ou por visitantes quando o site está configurado assim. series é uma lista de {date, completions, conversions, conversion_rate} por intervalo de tempo (defina interval para alterá-lo). breakdowns guarda os 10 principais por conversões para channel, utm_campaign, entry_page, country e device, cada um como {value, completions, conversions, conversion_rate}. journey mostra converting_visits, median_seconds_to_convert, median_pages_before e pages_before (as 10 principais páginas vistas antes de converter, com visits e share). Use goals_list para todas as metas de uma vez e funnels_get para fluxos de várias etapas. Aceita as entradas compartilhadas period, compare, filters e segment.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/goals/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/goals/:id/unarchive.json Restaurar uma meta arquivada goals_unarchive

Restaura uma meta arquivada para que volte a aparecer nos relatórios. Ela volta a contar para o limite de metas do plano (10 metas ativas por site no Free), então a chamada falha com um erro de limite de plano quando o site já está cheio. Restaurar uma meta que não está arquivada não faz nada. Retorna a meta com archived false. Os ids vêm de goals_list com status archived. Exige a permissão content.write.

Permissão: content.write

Exemplo
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 Atualizar uma meta goals_update

Altera a definição de uma meta. Apenas as entradas enviadas mudam. A nova definição se aplica a todo o histórico imediatamente, então os números de conversão passados vão mudar. As entradas são as mesmas de goals_create, e valem as mesmas combinações: por exemplo, event_name e conditions só importam para metas de evento, e scroll_threshold e time_threshold_seconds só para metas de engajamento. fixed_value é um valor decimal na moeda do site (armazenado em centavos). Enviar conditions substitui todas as condições existentes. Retorna a meta. Os ids vêm de goals_list. Exige a permissão content.write.

Permissão: content.write

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

Migrações de depoimentos

POST /sites/:site_id/testimonials/imports/migrations/:id/discard.json Descarte o que uma migração leu testimonial_migrations_discard

Informe item_ids (ids de testimonial_migrations_review) ou all true para tudo o que ainda espera, nunca os dois. Um item descartado sai da etapa de revisão e o que foi lido sobre a pessoa é apagado. Nenhum depoimento é excluído. Caso contrário, o servidor responde com 422 e o código selection ou unknown_ids.

Permissão: content.write

Exemplo
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 Liste as migrações de um site testimonial_migrations_list

Mais recentes primeiro. Uma migração é um arquivo de exportação de outra ferramenta de depoimentos. Cada uma tem a ferramenta de origem, o seu status e quantos depoimentos foram encontrados, mantidos, duplicados e com falha.

Permissão: analytics.read

Exemplo
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 Mantenha o que uma migração leu como depoimentos testimonial_migrations_keep

Informe item_ids (até 100 por chamada, de testimonial_migrations_review) ou all true, nunca os dois. Cada item mantido vira um depoimento com status pending ou approved, e keep_approval true mantém a aprovação que ele tinha na outra ferramenta. Com all, as prováveis duplicatas ficam de fora, a menos que include_likely_duplicates seja true. Nada que é mantido conta nos depoimentos mensais. O que não é mantido fica na etapa de revisão por 30 dias.

Permissão: content.write

Exemplo
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 Liste o que uma migração leu e ainda não foi decidido testimonial_migrations_review

Lista os itens que ainda esperam uma decisão, da execução mais recente para a mais antiga. show é new, duplicates ou all (o padrão), e rating mantém apenas as notas em estrelas listadas. Passe os ids dos itens para testimonial_migrations_keep ou testimonial_migrations_discard.

Permissão: analytics.read

Exemplo
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 Obtenha o andamento e as contagens de uma migração testimonial_migrations_get

Retorna a ferramenta de origem do arquivo, o status, quantos depoimentos foram encontrados, mantidos, duplicados e com falha, quantos arquivos de mídia traz e quando começou e terminou. Consulte-o enquanto o status disser que o arquivo ainda está sendo lido.

Permissão: analytics.read

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

Murais de Elogios

POST /sites/:site_id/testimonials/walls.json Crie um Mural de Elogios testimonial_walls_create

Uma página hospedada em https://privatus.page/w/<slug>. O que ficar de fora começa de um padrão: o título Wall of Love, o layout em mosaico, o slug a partir do nome.

Permissão: content.write

Exemplo
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 Mova um mural para a lixeira testimonial_walls_trash

A sua página responde que foi retirada do ar até ser restaurada, e uma cópia incorporada não renderiza nada. Restaurar o traz de volta no mesmo endereço. É excluído de vez após 30 dias. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Copie um mural com um novo nome e endereço testimonial_walls_duplicate

Faz uma cópia com um novo id, o nome terminando em "copy" e um slug próprio, então ela tem o seu próprio endereço. O original e o seu endereço não são alterados.

Permissão: content.write

Exemplo
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 Obtenha o link de um mural e o código para colocá-lo dentro de outra página testimonial_walls_embed

O endereço público do mural, e os trechos de script, frame e link simples que o colocam dentro de outra página. Os trechos nunca mudam quando o mural é editado.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id/embed.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/walls.json Liste os Murais de Elogios de um site testimonial_walls_list

Todo Mural de Elogios do site que não está na lixeira, com o seu endereço, o que o alimenta e quantos depoimentos exibe. Use q para buscar por nome ou slug e sort para ordenar por nome ou pelos mais novos.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/walls/:id/restore.json Restaure um mural da lixeira testimonial_walls_restore

Tira um mural da lixeira. A sua página volta a responder no mesmo endereço, e toda cópia incorporada volta a exibi-lo sem mudança no código que foi colado.

Permissão: content.write

Exemplo
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 Obtenha um mural com cada configuração testimonial_walls_get

Tudo o que o construtor guarda: o endereço (/w/<slug>), o cabeçalho e o botão, o layout, o que alimenta o mural, o que cada cartão mostra, o estilo e as configurações para mecanismos de busca. Um mural na lixeira responde com 404.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/walls/:id.json Altere um mural testimonial_walls_update

Só as entradas enviadas mudam. Um slug alterado deixa o endereço antigo redirecionando.

Permissão: content.write

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

Mídia de depoimentos

POST /sites/:site_id/testimonials/media/uploads.json Inicie um envio, ou adicione um arquivo a partir de um endereço web testimonial_media_uploads_create

Duas formas. Para enviar, passe filename, content_type e byte_size: a resposta traz upload, com a url para onde fazer PUT do arquivo, os cabeçalhos a enviar com ele e, para um arquivo grande, partes que podem ser enviadas uma a uma. Depois chame testimonial_media_uploads_finish. Ou passe source_url e o arquivo é baixado e processado para você: consulte testimonial_media_get até que o seu estado seja ready. Limites: vídeo e áudio até 500 MB e pela duração que o plano permite (2 minutos no Pro, 10 minutos no Business, nenhuma no Free, em que o servidor responde com 402 plan_limit), imagens até 10 MB, um logotipo até 2 MB.

Permissão: content.write

Exemplo
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 Exclua um arquivo que nenhum depoimento mantém testimonial_media_delete

Um arquivo que pertence a um depoimento é excluído com o depoimento, pela lixeira. Os arquivos guardados são excluídos e os seus endereços são limpos do cache.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Diga que um envio está completo, para que o arquivo seja verificado e processado testimonial_media_uploads_finish

Chame depois que o arquivo foi enviado. O arquivo deve estar no armazenamento de envios e ter exatamente o tamanho prometido. Chamar duas vezes é seguro.

Permissão: content.write

Exemplo
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 Tente de novo um arquivo que falhou testimonial_media_retry

Processa o arquivo de novo a partir do envio que foi mantido. O envio é mantido por 24 horas depois de uma falha. Depois disso o servidor responde com not_retryable e o arquivo precisa ser enviado de novo.

Permissão: content.write

Exemplo
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 Obtenha um arquivo com o seu estado e onde carregá-lo testimonial_media_get

A url é o endereço duradouro do arquivo pronto no host de mídia, e é null até que o estado seja ready. O endereço é o mesmo para todos e não é assinado, então só repasse o endereço de um arquivo cujo campo shareable seja true.

Permissão: analytics.read

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

Notas

POST /sites/:site_id/notes.json Adicionar uma nota a um site (use a origem "deploy" para webhooks de lançamento) notes_create

Adiciona uma anotação aos gráficos de um site, por exemplo um lançamento, uma campanha ou uma versão. Use workspace_notes_create em vez disso para uma nota que aparece em todos os sites. date assume por padrão hoje no fuso horário do site, e end_date marca um intervalo (YYYY-MM-DD). title é exibido no gráfico, body é texto simples e url pode apontar para um PR ou um changelog. color é uma entre neutral, brand, blue, amber, red ou violet, padrão neutral. source é manual por padrão. As integrações de deploy enviam source deploy, e então title assume por padrão um texto montado a partir de version (uma versão de release ou commit) e color assume por padrão blue. Exige content.write. Retorna a nota criada (veja notes_list para os campos).

Permissão: content.write

Exemplo
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 Excluir uma nota notes_delete

Exclui permanentemente uma nota de site, que desaparece dos gráficos e não pode ser restaurada. A nota deve pertencer a este site, as notas de todo o espaço de trabalho são excluídas com workspace_notes_delete. Pegue o id (note_...) em notes_list. Exige content.write. Retorna a nota excluída.

Permissão: content.write

Exemplo
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 Listar notas de um site (incluindo notas de todo o espaço de trabalho) notes_list

Lista as anotações (notas) exibidas nos gráficos de um site, da data mais recente para a mais antiga e paginadas. Retorna as notas do próprio site mais as notas de todo o espaço de trabalho que valem para todos os sites. Filtre com from e to (YYYY-MM-DD, uma nota corresponde quando sua data cai no intervalo), source (manual, deploy, system, import ou incident) e query (uma pesquisa sem diferenciar maiúsculas e minúsculas em title, body e url). Use workspace_notes_list para a visão do espaço de trabalho em todos os sites. Cada nota tem id (note_...), site_id (o id público do site pa_..., null para uma nota de todo o espaço de trabalho), date, end_date (null para um único dia), title, body (texto simples, pode ser nulo), url (pode ser nulo), color (neutral, brand, blue, amber, red ou violet), source e created_at. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/notes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/notes/:id.json Obter uma nota notes_get

Retorna uma nota pelo id (note_..., de notes_list) para um site, incluindo as notas de todo o espaço de trabalho que valem para o site. Uma nota é uma anotação datada exibida nos gráficos, por exemplo um lançamento, uma campanha ou um deploy. Os campos são id, site_id (null quando vale para todo o espaço de trabalho), date e end_date (YYYY-MM-DD, end_date null para um único dia), title, body (pode ser nulo), url (pode ser nulo), color (neutral, brand, blue, amber, red ou violet), source (manual, deploy, system, import ou incident) e created_at. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/notes/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/notes/:id.json Editar uma nota notes_update

Edita uma nota de site, alterando apenas os campos enviados (date, end_date, title, body, url, color). A source não pode ser alterada. Enviar uma url vazia remove o link, e uma date igual a null é ignorada. A nota deve pertencer a este site, as notas de todo o espaço de trabalho são editadas com workspace_notes_update. Pegue o id (note_...) em notes_list. Exige content.write. Retorna a nota atualizada.

Permissão: content.write

Exemplo
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 Adicionar uma nota de todo o espaço de trabalho (exibida em todos os sites) workspace_notes_create

Adiciona uma anotação para todo o espaço de trabalho que aparece nos gráficos de todos os sites do espaço de trabalho, por exemplo um lançamento da empresa inteira ou uma queda. Ela é criada sem site (site_id é null). Use notes_create para uma nota em um único site. date assume por padrão hoje no fuso horário do espaço de trabalho, end_date marca um intervalo (YYYY-MM-DD), color é uma entre neutral, brand, blue, amber, red ou violet. Exige content.write, e quem tem acesso limitado a alguns sites não pode criar notas de todo o espaço de trabalho. Retorna a nota criada.

Permissão: content.write

Exemplo
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 Excluir uma nota do espaço de trabalho workspace_notes_delete

Exclui permanentemente uma nota de todo o espaço de trabalho para que ela desapareça dos gráficos de todos os sites, e ela não pode ser restaurada. Apenas notas sem site podem ser excluídas aqui, use notes_delete para uma nota de site. Pegue o id (note_...) em workspace_notes_list. Exige content.write, e quem tem acesso limitado a alguns sites não pode excluir notas de todo o espaço de trabalho. Retorna a nota excluída.

Permissão: content.write

Exemplo
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 Listar notas de um espaço de trabalho workspace_notes_list

Lista as anotações de um espaço de trabalho, da data mais recente para a mais antiga e paginadas. Retorna as notas de todo o espaço de trabalho (que aparecem em todos os sites) mais as notas de cada site que quem chama pode acessar, então confira site_id em cada item (null significa que vale para todo o espaço de trabalho). Use notes_list para um site. Filtre com from e to (YYYY-MM-DD), source (manual, deploy, system, import ou incident) e query (pesquisa em title, body e url). Os campos são id (note_...), site_id, date, end_date, title, body, url, color (neutral, brand, blue, amber, red ou violet), source e created_at. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/notes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/notes/:id.json Editar uma nota do espaço de trabalho workspace_notes_update

Edita uma nota de todo o espaço de trabalho, alterando apenas os campos enviados (date, end_date, title, body, url, color). Apenas notas sem site podem ser editadas aqui, use notes_update para uma nota de site. Pegue o id (note_...) em workspace_notes_list. Exige content.write, e quem tem acesso limitado a alguns sites não pode editar notas de todo o espaço de trabalho. Retorna a nota atualizada.

Permissão: content.write

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

Painéis

GET /workspaces/:workspace_id/dashboards/:id/cards/:index.json Dados de um cartão de um painel personalizado dashboards_card

Retorna os dados ao vivo de um card de um painel personalizado. Os painéis são listas de cards (veja dashboards_get para a lista de cards) e cada card carrega separadamente, então chame-a uma vez por card, com a posição dele em index, contada a partir de 0. Retorna index, type, title, site_id, site_name, params, status e data. status é ok, not_available (o card não tem nada para mostrar, por exemplo um card de funil em um site sem funis ou um card de uptime sem verificações) ou no_access (o card pertence a um site que seu token ou função não pode abrir, e então title, params e data vêm vazios). O formato de data depende de type. metric dá {metric, value, previous, change, period} comparado com o período anterior. chart dá {metric, interval, period, series: [{date, value}]}. breakdown dá {dimension, label, rows}. goal dá {rows} de conclusões de metas. live dá {visitors}. funnel dá {funnel_id, name, overall_conversion_rate, steps}. uptime dá {checks: [{name, status, uptime}]}. vitals dá {scorecard}. subscriptions dá {currency, mrr_minor, previous_mrr_minor (30 dias atrás), change (porcentagem, null sem MRR 30 dias atrás), active_subscriptions, subscription_churn_rate (últimos 30 dias)} e é not_available enquanto o site não tem provedor de pagamento conectado. Os params do card assumem por padrão period 30d, metric visitors, dimension page e 5 linhas (limit tem teto de 10). Um index fora da lista retorna 404. Use dashboards_get antes para ver quantos cards existem.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id/cards/:index.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/dashboards.json Criar um painel personalizado dashboards_create

Cria um painel personalizado em um espaço de trabalho. Um painel personalizado é uma lista nomeada e ordenada de até 40 cards, e os cards podem vir de sites diferentes do espaço de trabalho. Passe name (até 100 caracteres) e cards, uma lista de objetos com type (metric, chart, breakdown, goal, live, funnel, uptime, vitals ou subscriptions), site_id (pa_..., de sites_list) e, opcionalmente, title (até 80 caracteres) e params. Os params usados por tipo são metric (period, metric), chart (period, metric, interval), breakdown (period, dimension, limit), goal (period, limit), funnel (period, funnel_id), uptime (limit) e vitals (period). live e subscriptions não recebem nenhum. Outros params são descartados. O period deve ser uma predefinição como 30d (não custom) e metric um entre visitors, visits, pageviews, views_per_visit, bounce_rate ou visit_duration. Todo card deve apontar para um site que seu token pode acessar, e um token limitado a alguns sites deve incluir pelo menos um card. Retorna o painel com id (dash_...), name, cards e carimbos de data e hora. Leia-o com dashboards_get e carregue os números de cada card com dashboards_card. Exige a permissão content.write. O plano define quantos painéis um espaço de trabalho tem: 1 no Free, 3 no Pro, ilimitados no Business. Um painel acima da quantidade é recusado com um erro de validação.

Permissão: content.write

Exemplo
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 Excluir um painel personalizado dashboards_delete

Exclui permanentemente um painel personalizado. Apenas o layout do painel é removido, nenhum dado de análise é tocado, e não há como desfazer. Você precisa de acesso a todos os sites que têm um card no painel, e o painel precisa ter pelo menos um card de um site ao qual você tenha acesso. Retorna o painel excluído. Use dashboards_update para alterar um painel em vez disso. Os ids (dash_...) vêm de dashboards_list. Exige a permissão content.write.

Permissão: content.write

Exemplo
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 Listar painéis personalizados dashboards_list

Lista os painéis personalizados de um espaço de trabalho, ordenados por nome. Cada item tem id (dash_...), name, cards e carimbos de data e hora, no mesmo formato de dashboards_get. Um token limitado a alguns sites só vê os painéis que incluem um card de um dos seus sites, e os cards de outros sites são esvaziados para {type, status: no_access}. Paginada com page e per_page (máximo 100). Use dashboards_card para carregar os dados de um card e dashboards_create para adicionar um painel. Para um único site, stats_overview dá o mesmo tipo de números sem um painel.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/dashboards/:id.json Obter um painel personalizado e seus cartões dashboards_get

Retorna um painel personalizado: id (dash_...), name, cards e created_at e updated_at. Cada card é {type, site_id, title, params} (type é metric, chart, breakdown, goal, live, funnel, uptime, vitals ou subscriptions). Um card em um site que você não pode acessar é retornado como {type, status: no_access}, sem outros campos. Isso retorna apenas o layout, não os números. Carregue os números de um card com dashboards_card, usando a posição do card contada a partir de 0. Os ids vêm de dashboards_list. Um painel acima da quantidade do plano (1 no Free, 3 no Pro) é mantido e bloqueado: ele responde 402 plan_limit até o espaço de trabalho fazer upgrade ou excluir outro.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/dashboards/:id.json Renomear um painel personalizado ou substituir seus cartões dashboards_update

Renomeia um painel personalizado e/ou substitui toda a sua lista de cards. Apenas os campos enviados mudam, e name é ignorado quando vazio. Enviar cards substitui todos os cards, então envie a lista completa na ordem desejada, tirada de dashboards_get e editada. O formato do card e os params por tipo são os mesmos de dashboards_create (máximo de 40 cards). Um card exibido como {type, status: no_access} pertence a um site que você não pode abrir. Envie-o de volta sem alterações para mantê-lo, ele não pode ser editado e o último card desse site não pode ser removido. Um token limitado a alguns sites não pode deixar o painel vazio. Retorna o painel atualizado. Exige a permissão content.write.

Permissão: content.write

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

Pedidos de depoimento

POST /requests/resubscribe/:token.json Confirme que voltará a receber pedidos de depoimento testimonial_request_resubscribes_confirm

O POST por trás do botão da página de confirmação. Ele desfaz o cancelamento, então o endereço pode voltar a receber pedidos.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/requests/resubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /requests/resubscribe.json Peça o e-mail que permite a um endereço voltar a receber pedidos testimonial_request_resubscribes_create

Envia um e-mail de confirmação ao próprio endereço, quando ele tinha cancelado. A resposta é a mesma, tenha ele cancelado ou não.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/requests/resubscribe.json \
  -H "Content-Type: application/json" -d '{…}'
POST /requests/unsubscribe/:token.json Cancele a inscrição de um endereço nos pedidos de depoimento testimonial_request_unsubscribes_create

O POST por trás do botão da página de cancelamento e o que o botão de cancelamento do próprio app de e-mail chama. O token vem do link no e-mail.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/requests/unsubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/testimonials/requests.json Inicie um pedido como rascunho testimonial_requests_create

Cria um rascunho com o seu e-mail e os seus destinatários. Nada é enviado até testimonial_requests_send. O que ficar de fora começa de um padrão: o e-mail, um lembrete após 5 dias, o nome do site como remetente e você como endereço de resposta. Cada destinatário é guardado como queued, ou como skipped com o motivo.

Permissão: content.write

Exemplo
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 Exclua um rascunho testimonial_requests_delete

Só um pedido que nunca foi enviado pode ser excluído. Um pedido enviado é mantido como registro do e-mail que foi enviado. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Copie um pedido para um novo rascunho testimonial_requests_duplicate

A cópia tem o mesmo formulário e e-mail, e ainda nenhum destinatário.

Permissão: content.write

Exemplo
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 Liste os pedidos de um site testimonial_requests_list

Mais recentes primeiro, cada um com o seu e-mail e as suas contagens de funil. Filtre por status, formulário ou período.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/requests/:id/preview.json Veja um e-mail de um pedido como o seu primeiro destinatário o recebe testimonial_requests_preview

O remetente, o assunto e o corpo com os campos de mesclagem preenchidos. Nada é enviado. step 0 é o primeiro e-mail, de 1 a 3 são os lembretes.

Permissão: analytics.read

Exemplo
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 Retome um pedido parado testimonial_requests_resume

Continua de onde parou. Um lembrete que venceu enquanto estava parado é reprogramado a partir de agora, então nada sai em bloco. Isto envia e-mails a pessoas de fora do workspace, então o membro é avisado por e-mail de que um assistente o retomou.

Permissão: content.write

Exemplo
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 Envie um pedido, agora ou em um horário testimonial_requests_send

Exige confirm_relationship: true. Os destinatários na fila são verificados mais uma vez, depois os primeiros e-mails saem (ou esperam por send_at). Os lembretes vão para as pessoas que não responderam. Os e-mails de pedido são enviados pelo provedor de e-mail do próprio site (Configurações > Envio de e-mails, Business e acima), então um site sem uma conexão funcionando recebe 422 no_email_connection ou email_connection_paused, e outro plano recebe 402 plan_limit. Todo e-mail conta no limite mensal de e-mails de pedido do site (10.000, a menos que definamos outro). No limite nada é descartado: as pessoas continuam na fila e o envio continua no dia 1. Isto envia e-mails a pessoas de fora do workspace, então o membro é avisado por e-mail de que um assistente o enviou.

Permissão: content.write

Exemplo
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 Envie um e-mail de um pedido para o seu próprio endereço testimonial_requests_send_test

Vai apenas para o endereço de quem chama, pelo provedor de e-mail do próprio site como os reais (422 no_email_connection sem um). Não tem link pessoal nem contador de aberturas e não conta no limite mensal do site.

Permissão: content.write

Exemplo
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 Obtenha um pedido com o seu e-mail, lembretes e contagens de funil testimonial_requests_get

Retorna o e-mail, os lembretes, o status e as contagens de funil (sent, opened, clicked, submitted, bounced, unsubscribed) de um pedido.

Permissão: analytics.read

Exemplo
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 Pare um pedido testimonial_requests_stop

Cancela de imediato todo e-mail ainda não enviado. Nada do que já foi enviado é afetado, e testimonial_requests_resume continua de onde parou.

Permissão: content.write

Exemplo
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 Altere o nome, o formulário ou o e-mail de um pedido testimonial_requests_update

Permitido a qualquer momento. Uma mudança vale para todo e-mail ainda não enviado. Alterar o atraso de um lembrete reprograma os lembretes que estão esperando.

Permissão: content.write

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

Pedidos de domínio personalizado dos depoimentos

POST /sites/:site_id/testimonials/settings/custom_domain.json Peça um domínio personalizado para um mural ou para formulários testimonial_custom_domain_requests_create

Os domínios personalizados dos depoimentos são configurados à mão pela equipe do Privatus Analytics. Isto guarda o pedido e avisa a equipe, que envia por e-mail o registro DNS a adicionar. O hostname não funciona até que o status do pedido seja active. Business e acima: os outros planos recebem 402 plan_limit.

Permissão: sites.manage

Exemplo
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 Retire um pedido de domínio personalizado, pelo seu hostname testimonial_custom_domain_requests_delete

Só um pedido que a equipe ainda não começou (status requested) pode ser retirado. Um que está em andamento responde com wrong_state. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Liste os pedidos de domínio personalizado de um site testimonial_custom_domain_requests_list

Todo pedido de um hostname em um mural ou em formulários, os mais novos primeiro, com o seu status. O hostname só funciona quando status é active. Funciona em todos os planos, então pedidos anteriores ainda podem ser lidos.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/custom_domain.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

Pedidos de remoção

POST /sites/:site_id/testimonials/removal_requests/:id/dismiss.json Dispense um pedido de remoção testimonial_removal_requests_dismiss

Encerra o pedido com uma nota e deixa o depoimento onde é exibido. Nada é excluído e nenhum e-mail é enviado à pessoa que pediu. A nota é obrigatória. Um pedido que já foi decidido responde com 422.

Permissão: content.write

Exemplo
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 Liste os pedidos de remoção de um site testimonial_removal_requests_list

Pedidos abertos, a menos que se peça outro status. O e-mail que a pessoa digitou só é devolvido a quem pode alterar conteúdo.

Permissão: analytics.read

Exemplo
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 Decida um pedido de remoção testimonial_removal_requests_resolve

trash move o depoimento para a lixeira, o que o tira de todo widget, mural e página pública de uma vez e pode ser desfeito por 30 dias. dismiss o deixa sendo exibido e exige uma nota.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obtenha um pedido de remoção testimonial_removal_requests_get

Um pedido com o depoimento a que se refere, a nota que a pessoa deixou, se o e-mail que digitou corresponde ao e-mail do depoimento, quantas vezes pediu e a decisão, quando houver. O e-mail em si só é devolvido a quem tem content.write.

Permissão: analytics.read

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

Pesquisas

POST /sites/:site_id/surveys.json Criar uma pesquisa surveys_create

Cria uma pesquisa no site sem cookies para um site. Ela não coleta nada até seu status ser active, então crie-a primeiro como draft ou passe status active para começar na hora. São obrigatórios name (interno, os visitantes nunca o veem, máx. 120 caracteres) e questions (de 1 a 5 linhas em ordem). Cada pergunta é um objeto com key (opcional, um id estável de letras minúsculas, dígitos e sublinhados, gerado quando omitido), kind (text, choice, multi, rating, nps ou yes_no), prompt (obrigatório, máx. 200 caracteres), required (booleano), choices (uma lista de até 10 opções, apenas para choice e multi) e scale (3, 5, 7 ou 10, apenas para rating, padrão 5). O NPS sempre usa de 0 a 10. A segmentação é trigger_kind (immediate, delay, scroll, exit ou manual) com delay_seconds (de 0 a 600, padrão 10, apenas para delay) e scroll_percent (de 1 a 100, padrão 50, apenas para scroll), paths (linhas de match_type exact, prefix ou glob e pattern, vazio significa todas as páginas), devices (desktop, mobile, tablet, vazio significa todos), position (bottom_right, bottom_left ou center), sample_rate (de 1 a 100 por cento dos visitantes), thank_you (máx. 200 caracteres), starts_on e ends_on (YYYY-MM-DD). As pesquisas não podem pedir um endereço de e-mail e as respostas escritas têm os dados pessoais removidos. O plano Free permite 1 pesquisa por espaço de trabalho e um número limitado de respostas por mês, os planos pagos são ilimitados. Exige a permissão content.write. Retorna a pesquisa com id (svy_...). Leia as respostas com surveys_get.

Permissão: content.write

Exemplo
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 Excluir uma pesquisa com suas respostas surveys_delete

Exclui permanentemente uma pesquisa junto com todas as suas respostas. Isso não pode ser desfeito e os resultados se perdem. Use surveys_pause em vez disso se você só quer parar de coletar. O id vem de surveys_list e o site_id é obrigatório. Exige a permissão content.write. Retorna a pesquisa excluída.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Listar as pesquisas de um site com o número de respostas surveys_list

Lista as pesquisas de um site, das mais recentes para as mais antigas, com suas configurações e contagens de respostas. Filtre com status (draft, active, paused ou all, padrão all). Paginada com page e per_page (padrão 25, até 100). Cada pesquisa tem id (svy_...), name, status, questions, configurações de segmentação, starts_on, ends_on, created_at, updated_at e stats (contagens de responses, completed e this_month). Use surveys_get para as respostas e os resultados de uma pesquisa.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/surveys.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/surveys/:id/pause.json Parar de coletar respostas e manter as já dadas surveys_pause

Pausa uma pesquisa para que ela deixe de ser oferecida aos visitantes na hora. As respostas já coletadas são mantidas e exibidas em surveys_get, e surveys_start a retoma. Use-a em vez de surveys_delete quando você só quer parar de coletar. O id vem de surveys_list e o site_id é obrigatório. Exige a permissão content.write. Retorna a pesquisa com status paused.

Permissão: content.write

Exemplo
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 Resultados de uma pesquisa em um período, detalhados por pergunta surveys_get

Retorna o relatório de resultados de uma pesquisa em um período, não apenas suas configurações (use surveys_list para configurações e contagens). Escolha a predefinição period (padrão 30d) ou period custom com from e to. A resposta tem survey (suas configurações), period (from e to como horários ISO 8601), responses (pessoas que responderam pelo menos uma pergunta), completed (pessoas que responderam a última pergunta), questions (uma entrada por pergunta com key, kind, prompt e a contagem de answers, mais o detalhe por tipo) e pages, devices e countries (até 10 linhas cada de value e count). O detalhe por tipo é texts (até 100 respostas escritas mais recentes com text e at) para text, choices (value, count, share como porcentagem com uma casa decimal, offered) para choice, multi e yes_no, average (null sem respostas), scale e distribution para rating, e score (NPS de -100 a 100, null sem respostas), promoters (9 e 10), passives (7 e 8), detractors (0 a 6) e distribution para nps. Use surveys_themes para resumir as respostas escritas.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/surveys/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/surveys/:id/start.json Começar a coletar respostas surveys_start

Define uma pesquisa como active para que ela possa ser oferecida aos visitantes. Ela só aparece quando a data atual está entre starts_on e ends_on (quando definidos), a página corresponde aos seus paths e devices, e a cota mensal de respostas do plano não está esgotada. Use-a para uma pesquisa em rascunho ou pausada. O id vem de surveys_list e o site_id é obrigatório. Exige a permissão content.write. Retorna a pesquisa com status active. Pare-a de novo com surveys_pause.

Permissão: content.write

Exemplo
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 Agrupar as respostas de texto livre de uma pergunta em temas (plano Business) surveys_themes

Usa IA para agrupar em temas as respostas escritas a uma pergunta de texto livre. Somente no plano Business. Escolha-a depois que surveys_get mostrar uma pergunta de texto com respostas suficientes e passe question_key (a key de uma pergunta do tipo text de surveys_get). Ela exige pelo menos 5 respostas escritas e usa as 300 mais recentes. O resultado lista até 12 temas, cada um com label, count, sentiment (positive, neutral ou negative) e example (uma resposta representativa, pode ser nula), mais answers (quantas respostas foram resumidas) e generated_at. Cada nova geração usa uma pergunta da cota mensal de IA do espaço de trabalho, que é devolvida se ela falhar. O resultado fica em cache em relação às respostas, então chamar de novo sem respostas novas não custa nada. Falha com um erro de validação quando o plano não a inclui, a cota está esgotada, a IA não está configurada ou há respostas de menos.

Permissão: analytics.read

Exemplo
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 Atualizar uma pesquisa surveys_update

Altera uma pesquisa. Apenas as entradas enviadas mudam. As entradas e os limites são os mesmos de surveys_create, com status draft, active ou paused. Quando você envia questions a lista inteira é substituída, então inclua todas as perguntas que quiser manter e mantenha cada key existente para manter as respostas coletadas (reescrever um prompt com a mesma key não divide os resultados). As perguntas que você deixar de fora deixam de aparecer nos resultados. As mudanças na segmentação valem para os visitantes imediatamente. O id vem de surveys_list e o site_id é obrigatório. Exige a permissão content.write. Retorna a pesquisa atualizada.

Permissão: content.write

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

Pessoas dos depoimentos

POST /sites/:site_id/testimonials/people/:id/ask_again.json Inicie um pedido com esta pessoa como único destinatário testimonial_people_ask_again

Usa o formulário que ela usou por último, ou o formulário inicial. Nada é enviado até que o pedido seja enviado. O servidor responde com 422 e o código no_email, bounced ou unsubscribed quando a pessoa não pode receber o pedido, e requests_unavailable enquanto os pedidos não estiverem disponíveis.

Permissão: content.write

Exemplo
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 Adicione uma pessoa a um site testimonial_people_create

name é obrigatório (até 120 caracteres). email nunca é exibido publicamente: ele agrupa depoimentos posteriores sob esta pessoa e permite que o site a pergunte de novo, e um endereço que outra pessoa do site já tem é recusado. avatar_media_id é o id (med_...) de uma imagem já enviada ao site. Adicionar uma pessoa não adiciona nenhum depoimento.

Permissão: content.write

Exemplo
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 Exclua uma pessoa de vez, com tudo o que ela disse, os arquivos e o histórico de pedidos testimonial_people_delete_permanently

Para um pedido de apagamento. Isso não pode ser desfeito. Exige confirm, o nome ou o id da pessoa, e deixa uma entrada de auditoria que não contém nem o nome nem as palavras.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Liste as pessoas de um site, filtradas e ordenadas testimonial_people_list

Cada pessoa vem com a sua contagem de depoimentos, quantos estão aprovados, a nota média e o último pedido com o resultado. O e-mail é null, a menos que quem chama tenha content.write, e has_email continua dizendo se há um registrado.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/people.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/people/:id/merge.json Una outros registros da mesma pessoa a este testimonial_people_merge

A pessoa do caminho permanece. Tudo o que os outros disseram e todo pedido enviado a eles passa para ela, e os outros são removidos. Um campo que esta pessoa tem em branco é preenchido a partir dos outros, do mais antigo ao mais novo, e use nomeia aqueles cujo valor vence em um campo. A resposta traz meta.undo_id, que testimonial_undo_records_undo aceita por 7 dias.

Permissão: content.write

Exemplo
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 Obtenha uma pessoa com o que lhe foi pedido e as pessoas que parecem ser a mesma testimonial_people_get

Os depoimentos dela são testimonials_list com person_id. can_ask e cannot_ask_reason dizem se testimonial_people_ask_again seria aceito.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/people/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/people/:id.json Edite uma pessoa. Só os campos enviados mudam testimonial_people_update

Um valor vazio limpa um campo, exceto o nome. Um e-mail que outra pessoa do site já tem é recusado. A página da empresa em que uma pessoa é listada acompanha o nome e o site da empresa.

Permissão: content.write

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

Planos

GET /plans.json Listar planos, preços e limites plans_list

Lista os planos públicos (free, pro, business e enterprise) com seus limites e faixas de preço, para você escolher valores válidos para billing_checkout, billing_preview e billing_change_plan. Cada plano tem name, events (eventos por mês incluídos, null para planos em faixas ou personalizados), badge_bonus (eventos mensais extras do selo, apenas no Free, caso contrário null), limits (um objeto com os limites do plano, como sites, vagas de membros, retenção do histórico em meses, metas por site, perguntas de IA e requisições de API por hora), tiers (cada uma com eventos por mês e o preço mensal e anual em USD inteiros, incluindo IVA ou imposto sobre vendas) e contact_sales (true para planos personalizados). O objeto meta acrescenta currency, uma observação sobre o preço anual, counted (o que conta como evento cobrável) e not_counted. Para o plano do próprio espaço de trabalho, use billing_get. Pública, sem necessidade de autenticação.

Permissão: public

Exemplo
curl https://privatusanalytics.com/plans.json

Posições de anúncio

POST /sites/:site_id/experiments/ads.json Cria uma posição de anúncio ad_placements_create

Cria um espaço de um tamanho no site. Envie size (um tamanho comum como medium_rectangle ou leaderboard) ou width e height em pixels. key é o nome pelo qual a tag no site a identifica e é gerada a partir do nome quando omitida. Depois adicione criativos com ad_creatives_create e coloque no site a tag de ad_placements_embed. Exige content.write.

Permissão: content.write

Exemplo
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 Exclui uma posição de anúncio com seus criativos ad_placements_delete

Exclui permanentemente uma posição com seus criativos e as imagens deles, seus experimentos de anúncio e os resultados, e seus links de patrocinador. A tag no site então não desenha nada. A ferramenta MCP não a executa e responde com human_only e a página onde uma pessoa a exclui. Exige content.write.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obtém a tag que mostra uma posição no site ad_placements_embed

O script carregador (uma vez por página) e o espaço desta posição, como html para colar. O espaço mantém seu tamanho antes de o carregador executar. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:id/embed.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/experiments/ads.json Lista as posições de anúncio de um site com os últimos 30 dias ad_placements_list

Cada posição com sua chave, tamanho, quantos criativos tem e estatísticas (impressions, viewable impressions, clicks e ctr, a taxa de cliques por impressão visível) nos últimos 30 dias. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/experiments/ads.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/experiments/ads/:id.json Obtém uma posição com os números de cada criativo ad_placements_get

A posição, seus criativos com as estatísticas do período (7d, 30d ou 90d) e os números da posição dia a dia. humans_only mantém o que o bot score classifica como provavelmente humano (Pro e superiores). Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/experiments/ads/:id.json Altera uma posição de anúncio ad_placements_update

Altera o nome, a chave, o tamanho ou o rótulo. Só as entradas enviadas mudam. Uma nova chave precisa da nova tag no site. Exige content.write.

Permissão: content.write

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

Programa de afiliados

GET /account/affiliate/commissions.json Listar suas comissões de afiliado affiliate_commissions_list

Comissões, estornos por reembolso e chargeback e reversões, das mais recentes para as mais antigas. Os valores estão em centavos.

Permissão: member

Exemplo
curl https://privatusanalytics.com/account/affiliate/commissions.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /account/affiliate/signup-box.json Obter o código da sua caixa de cadastro de afiliado e os resultados affiliate_signup_box_get

O código de incorporação da sua caixa de cadastro (um script e um iframe simples) para o tema escolhido, os atributos que preenchem o formulário, os eventos que o script dispara na sua página e os números da caixa: cadastros aguardando confirmação, cadastros confirmados e clientes pagantes. available é false até a sua candidatura de afiliado ser aprovada.

Permissão: member

Exemplo
curl https://privatusanalytics.com/account/affiliate/signup-box.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /account/affiliate.json Obter seu status de afiliado, link de indicação e estatísticas affiliate_get

O status da sua candidatura de afiliado, o link de indicação, os cadastros e clientes pagantes que você indicou e os saldos por moeda (em retenção, a pagar, pago). status é none quando você ainda não se candidatou.

Permissão: member

Exemplo
curl https://privatusanalytics.com/account/affiliate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

Propriedades personalizadas dos depoimentos

POST /sites/:site_id/testimonials/settings/properties.json Adicione uma propriedade personalizada a um site testimonial_properties_create

Um site guarda até 20 propriedades ativas. A chave é fixa depois de criada, porque links de formulário, regras e a API a usam. Deixe-a de fora e ela é sugerida a partir do rótulo.

Permissão: sites.manage

Exemplo
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 Exclua de vez uma propriedade personalizada e os seus valores testimonial_properties_destroy

Isso não pode ser desfeito. Remove a propriedade e o seu valor de todo depoimento. confirm é a chave. Uma propriedade usada por uma coleção inteligente ou por uma regra de marcação automática não pode ser excluída enquanto estiver em uso. Arquivar é a forma comum de aposentar uma.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Liste as propriedades personalizadas de um site, na ordem de exibição testimonial_properties_list

Cada uma diz a sua chave, tipo e opções, quantos depoimentos têm um valor (filled), se o seu tipo ainda pode mudar e quais coleções inteligentes e regras de marcação automática a usam.

Permissão: analytics.read

Exemplo
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 Altere, reordene, arquive ou traga de volta uma propriedade personalizada testimonial_properties_update

Só as entradas que você envia alteram algo. Renomear uma opção a renomeia em todo depoimento que a tem. Uma propriedade usada por uma coleção inteligente ou por uma regra de marcação automática não pode ser arquivada enquanto estiver em uso.

Permissão: sites.manage

Exemplo
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 '{…}'

Páginas de status

GET /status/:slug/confirm/:token.json Confirmar uma inscrição pelo link enviado por e-mail public_status_pages_confirm

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/status/:slug/confirm/:token.json
GET /status/:slug.json Página de status pública: status atual, barras de disponibilidade de 90 dias, incidentes e publicações public_status_pages_get

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/status/:slug.json
POST /status/:slug/subscribers.json Inscrever um endereço de e-mail (confirmação dupla) public_status_pages_subscribe

Os clientes de navegador enviam um token do Cloudflare Turnstile como `cf-turnstile-response`. As requisições com um token de API não precisam dele.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/status/:slug/subscribers.json \
  -H "Content-Type: application/json" -d '{…}'
POST /status/:slug/unsubscribe/:token.json Cancelar a inscrição com o token enviado por e-mail public_status_pages_unsubscribe

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Publicar uma atualização de incidente (envia e-mail aos assinantes) status_page_posts_create

Publica uma atualização de incidente em uma página de status e, por padrão, envia e-mail aos seus assinantes confirmados. Escolha-a para anunciar ou atualizar um incidente, e use status_page_posts_update para fazer avançar um incidente existente (por exemplo, para resolved) em vez de criar uma nova publicação. É obrigatório title (máx. 200 caracteres). status é um entre investigating (padrão), identified, monitoring ou resolved. body é texto simples (máx. 10.000 caracteres), posted_at é um horário ISO 8601 que assume por padrão agora, e notify (padrão true) controla o e-mail. Os e-mails só são enviados para uma página publicada e têm limite de frequência por página, acima do limite a publicação continua publicada mas ninguém recebe e-mail. O status_page_id vem de status_pages_list. Exige a permissão uptime.manage. Retorna a publicação com id (spp_...), title, body, status, posted_at e updated_at.

Permissão: uptime.manage

Exemplo
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 Excluir uma publicação da página de status status_page_posts_delete

Exclui permanentemente uma publicação de incidente de uma página de status. Ela desaparece da página pública na hora e isso não pode ser desfeito. Nenhum e-mail é enviado. O id vem de status_page_posts_list. Exige a permissão uptime.manage. Retorna a publicação excluída.

Permissão: uptime.manage

Exemplo
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 Listar publicações de uma página de status status_page_posts_list

Lista as publicações de incidentes de uma página de status, das mais recentes para as mais antigas por posted_at. Use-a para encontrar o id de uma publicação ou ver o histórico de incidentes. Filtre opcionalmente por status (investigating, identified, monitoring ou resolved). Paginada com page e per_page (até 100). Cada publicação tem id (spp_...), title, body (null quando vazio), status, posted_at e updated_at. O status_page_id vem de status_pages_list.

Permissão: analytics.read

Exemplo
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 Editar uma publicação da página de status status_page_posts_update

Edita uma publicação de incidente. Apenas as entradas enviadas mudam, então envie só status para resolver um incidente. Os assinantes só recebem e-mail quando o status realmente muda e notify não é false (padrão true). Editar apenas o título ou o corpo não envia e-mail. Os e-mails vão para os assinantes confirmados de uma página publicada e têm limite de frequência por página. Os valores de status válidos são investigating, identified, monitoring e resolved. O id vem de status_page_posts_list. Exige a permissão uptime.manage. Retorna a publicação atualizada.

Permissão: uptime.manage

Exemplo
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 Remover um assinante status_page_subscribers_delete

Remove um assinante de e-mail de uma página de status para que ele pare de receber e-mails de incidentes e de disponibilidade. Isso não pode ser desfeito, mas a pessoa pode se inscrever de novo na página pública. O id é o id do assinante de status_page_subscribers_list (um UUID simples, não um id com prefixo). Exige a permissão uptime.manage. Retorna o assinante removido.

Permissão: uptime.manage

Exemplo
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 Listar assinantes de uma página de status status_page_subscribers_list

Lista os assinantes de e-mail de uma página de status, ordenados por e-mail. Use confirmed true para ver apenas as pessoas que confirmaram o endereço (só elas recebem e-mails) ou confirmed false para as pendentes. Paginada com page e per_page (até 100). Cada item tem id (um UUID, usado por status_page_subscribers_delete), email, confirmed_at (null enquanto pendente) e created_at. O status_page_id vem de status_pages_list. Exige a permissão uptime.manage e retorna dados pessoais (endereços de e-mail). Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).

Permissão: uptime.manage

Exemplo
curl https://privatusanalytics.com/status_pages/:status_page_id/subscribers.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/status_pages.json Criar uma página de status status_pages_create

Cria uma página de status pública para um espaço de trabalho que mostra verificações de disponibilidade escolhidas, publicações de incidentes e uma inscrição por e-mail. É obrigatório name (máx. 100 caracteres). slug (letras minúsculas, dígitos e hifens, único entre todos os espaços de trabalho) é derivado do nome por padrão e a página é servida em /status/<slug>. check_ids lista as verificações de disponibilidade a mostrar (ids upc_... de uptime_checks_list) e só são aceitas verificações criadas com public true. published assume por padrão true, então a página fica visível para todos imediatamente. A identidade visual opcional é description (máx. 2.000 caracteres), logo_url (deve ser https), brand_color (hex como #06755b) e custom_domain (um hostname para o qual você aponta um CNAME ao app, único). Use status_page_posts_create para publicar incidentes depois. Exige a permissão uptime.manage. Retorna a página com id (sp_...), slug, check_ids e subscribers (quantidade de assinantes confirmados). O plano define quantas páginas um espaço de trabalho tem: nenhuma no Free (402 plan_limit), 1 no Pro e 10 no Business. Um custom_domain e assinantes por e-mail exigem o plano Business ou Enterprise. As páginas acima da quantidade do plano são mantidas e ficam fora do ar.

Permissão: uptime.manage

Exemplo
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 Excluir uma página de status status_pages_delete

Exclui permanentemente uma página de status junto com todas as suas publicações de incidentes e assinantes. A página pública e seu domínio personalizado param de funcionar na hora e isso não pode ser desfeito. As próprias verificações de disponibilidade não são excluídas. O id vem de status_pages_list. Exige a permissão uptime.manage. Retorna a página excluída.

Permissão: uptime.manage

Exemplo
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 Listar páginas de status status_pages_list

Lista as páginas de status de um espaço de trabalho ordenadas por nome. Use query para corresponder a parte de um nome ou slug. Quando quem chama é limitado a alguns sites, apenas as páginas cujas verificações estão todas dentro desses sites são retornadas. Paginada com page e per_page (até 100). Cada item tem os campos descritos em status_pages_get. Exige o workspace_id de workspaces_list.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/status_pages.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /status_pages/:id.json Obter uma página de status status_pages_get

Retorna uma página de status com suas configurações. Os campos são id (sp_...), workspace_id, name, slug, custom_domain (null quando não há), description, logo_url, brand_color, published, check_ids (ids das verificações de disponibilidade exibidas na página), subscribers (quantidade de assinantes de e-mail confirmados) e created_at. Use status_page_posts_list para seus incidentes e status_page_subscribers_list para as pessoas. O id vem de status_pages_list.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/status_pages/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /status_pages/:id.json Alterar uma página de status status_pages_update

Altera uma página de status. Apenas as entradas enviadas mudam, então envie só published false para tirar a página do ar ou check_ids para substituir as verificações exibidas (a lista inteira é substituída, não mesclada). As entradas e seus limites são os mesmos de status_pages_create. Envie custom_domain como uma string vazia para remover o domínio personalizado. Só podem ser exibidas verificações com public true, e quem tem acesso limitado a alguns sites só pode colocar em uma página verificações desses sites. O id vem de status_pages_list. Exige a permissão uptime.manage. Retorna a página atualizada.

Permissão: uptime.manage

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

Rastreamento

POST /sites/:site_id/tracking/ingest_key.json Criar ou trocar a chave de logs de crawlers (exibida uma única vez) tracking_ingest_key_rotate

Cria uma nova chave secreta de logs de crawlers (que começa com pik_) para um site e substitui qualquer chave existente. A chave autentica o envio de logs de acesso do servidor para o relatório de crawlers de IA (POST /api/logs). Use-a tanto para criar a primeira chave quanto para rotacioná-la. A nova chave funciona na hora e a antiga para de funcionar na hora, então implante a nova chave logo para evitar 401 nos envios de logs. A chave completa é retornada apenas nesta resposta, no campo key, então guarde-a em um cofre de segredos. Depois disso apenas um prefixo curto é mantido e exibido (prefix aqui, ingest_key_prefix no site). Retorna site_id, key e prefix. Exige sites.manage. Use tracking_ingest_key_revoke para remover a chave sem substituí-la.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Revogar a chave de logs de crawlers tracking_ingest_key_revoke

Remove a chave de logs de crawlers de um site. A partir daí, todo envio de logs feito com essa chave é rejeitado com 401 até você criar uma nova com tracking_ingest_key_rotate. O rastreamento no navegador com o id público do site não é afetado. A chave não pode ser restaurada. Exige sites.manage. Retorna o objeto do site (veja sites_get), em que ingest_key_prefix agora é null.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Verificar se o rastreador está instalado no site (tag de script, id do site, CSP e política de referenciador) tracking_verify

Busca a página do site e verifica se o script de rastreamento do Privatus Analytics está instalado corretamente, e marca o site como verificado quando o script com o id deste site é encontrado. Por padrão ela requisita a página inicial (https://domain/) e url pode indicar outra página, mas apenas no próprio domínio do site, em domínios extras ou em seus subdomínios. O resultado (em data) tem url, status (status HTTP), script_found, site_ids (todos os ids data-site encontrados na página), installed (true quando o id deste site está entre eles), csp e csp_ok (se a Content-Security-Policy da página permite que o rastreador carregue e envie), referrer_policy e referrer_ok (uma política no-referrer faz toda visita aparecer como direta) e checked_at. Ela busca pela internet pública, lê no máximo 2 MB e tem limite de frequência por espaço de trabalho e por host, então responde 429 quando chamada com muita frequência. Se a página estiver inacessível, retorna um erro de validação. Use sites_setup_get para ver se já chegaram eventos. Exige sites.manage.

Permissão: sites.manage

Exemplo
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 Montar o snippet de rastreamento para as opções escolhidas tracking_snippet

Monta a tag de script HTML para instalar o rastreamento em um site e a retorna com o id do site como data.site_id e data.snippet. Escolha-a em vez de sites_setup_get quando precisar personalizá-la, e use tracking_verify depois para verificar a página ao vivo. Por padrão todos os módulos do rastreador são carregados e as visualizações de página são automáticas. modules restringe a um subconjunto entre engage (tempo e rolagem), auto (links externos, downloads, formulários, 404), vitals (Web Vitals), clicks (mapas de cliques) e ask (pesquisas no site). manual true desativa a visualização de página automática para você enviá-las por conta própria. spa define o rastreamento de navegação de aplicativos de página única como auto, history, hash ou off. domains limita o rastreamento a esses hostnames, exclude lista globs de caminhos a ignorar, query_params lista parâmetros de consulta extras a manter e mask lista máscaras de caminho do lado do cliente escritas como /u/*->/u/:id. Nada é salvo, o snippet é gerado a partir das entradas a cada vez. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/tracking/snippet.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

Recompensas

POST /sites/:site_id/testimonials/settings/rewards/:id/copy.json Copie a recompensa de um formulário para outros formulários do mesmo site testimonial_rewards_copy

Copia o título, o texto, o código e o estado ligado ou desligado da recompensa deste formulário para cada formulário em form_ids (1 a 100 formulários do mesmo site, fora da lixeira). Uma recompensa que o formulário de destino já tem é substituída. O servidor responde com 422 e o código unknown_ids quando um id não é de um formulário do site, e então nada é copiado.

Permissão: sites.manage

Exemplo
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 Liste a recompensa de cada formulário de um site testimonial_rewards_list

Uma linha por formulário. Um formulário sem recompensa definida tem enabled false.

Permissão: analytics.read

Exemplo
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 Defina a recompensa que um formulário mostra na etapa de agradecimento testimonial_rewards_update

O id é o id do formulário. O código é um texto que você fornece. O Privatus Analytics não o cria, não o verifica nem o expira.

Permissão: sites.manage

Exemplo
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 '{…}'

Regras de canal

POST /sites/:site_id/channel_rules.json Adicionar uma regra de canal channel_rules_create

Adiciona uma regra de canal personalizada no fim da lista, de modo que ela roda depois de todas as regras existentes e a taxonomia integrada só se aplica quando nenhuma regra corresponde. channel é o nome a atribuir (até 32 caracteres, por exemplo Partners). conditions é uma lista não vazia de objetos com field (referrer_host, utm_source, utm_medium, utm_campaign, ref ou path), operator (is, contains, starts_with ou regex) e value. Todas as condições devem corresponder para a regra se aplicar, e a correspondência não diferencia maiúsculas e minúsculas. Uma condição com valor em branco é descartada, e uma regra que fique sem condições é rejeitada. Uma regex que não compila é rejeitada. A regra se aplica às novas visitas em poucos minutos e não altera o histórico. Use channel_rules_move para reordenar e channel_rules_preview para testá-la. Exige sites.manage.

Permissão: sites.manage

Exemplo
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 Excluir uma regra de canal channel_rules_delete

Exclui uma regra de canal personalizada, encontrada pelo id em channel_rules_list. As visitas que ela já classificou mantêm seu canal, e as novas visitas passam para a próxima regra correspondente ou para a taxonomia integrada. As demais regras mantêm a ordem. Retorna a regra excluída. Exige sites.manage.

Permissão: sites.manage

Exemplo
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 Listar regras de canal em ordem channel_rules_list

Lista as regras de canal personalizadas de um site na ordem de avaliação (posição 1 primeiro). As regras rodam de cima para baixo para cada nova visita, e a primeira regra cujas condições correspondem todas decide o canal. Uma visita que não corresponde a nenhuma regra recebe o canal integrado (direct, organic_search, paid_search, email e assim por diante). Cada regra tem id (um UUID), channel (o nome que ela atribui), position (a partir de 1), conditions (uma lista de objetos field, operator e value, que devem corresponder todos) e created_at. As regras afetam apenas visitas registradas depois que a regra existe e nunca reescrevem dados antigos. Use channel_rules_preview para testar uma visita de exemplo. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/channel_rules.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/channel_rules/:id/move.json Mover uma regra de canal para cima ou para baixo channel_rules_move

Move uma regra de canal dentro da ordem de avaliação, porque a primeira regra correspondente vence e a ordem decide qual canal uma visita recebe. direction é up ou down (uma posição), ou top ou bottom (até as extremidades). Uma regra que já está na extremidade fica onde está, sem erro. As posições são renumeradas de 1 a n e a regra atualizada é retornada com sua nova posição. Use channel_rules_list antes para ver a ordem atual. Exige sites.manage.

Permissão: sites.manage

Exemplo
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 Pré-visualizar o canal para um referenciador e tags UTM de exemplo channel_rules_preview

Simulação que informa qual canal uma visita de exemplo receberia com as regras atuais do site. Nada é armazenado. Envie qualquer um entre referrer (uma URL ou um hostname simples, os prefixos www e m são ignorados), utm_source, utm_medium, utm_campaign, ref, path (caminho de entrada, como /pricing) e paid_click (true se a URL trazia um id de clique como gclid). O resultado tem channel (o nome do canal vencedor), custom_rule (true quando uma regra personalizada decidiu, false quando foi a taxonomia integrada) e referrer_host (o hostname limpo usado na correspondência). Um referenciador nos próprios domínios do site conta como interno. Use-a após channel_rules_create ou channel_rules_move para confirmar o efeito. Exige analytics.read.

Permissão: analytics.read

Exemplo
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 Alterar uma regra de canal channel_rules_update

Altera uma regra de canal personalizada, encontrada pelo id em channel_rules_list. Envie channel para renomear o canal que ela atribui e conditions para substituir a lista inteira de condições (a lista é substituída, não mesclada, então envie todas as condições que quiser manter). As entradas omitidas ficam como estão. Os campos das condições, os operadores e a validade da regex são verificados da mesma forma que em channel_rules_create. A alteração se aplica apenas às novas visitas. Para mudar a ordem, use channel_rules_move. Exige sites.manage.

Permissão: sites.manage

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

Regras de tráfego

POST /sites/:site_id/traffic_rules.json Adicionar uma regra de tráfego traffic_rules_create

Adiciona um padrão a uma das listas de bloqueio ou permissão do site. list é uma entre hostnames, paths, referrers, countries, ip_ranges, user_agents ou events. pattern usa * como curinga e a correspondência não diferencia maiúsculas e minúsculas, por exemplo /admin/*, um hostname, um host de referenciador como spam.example, um código de país de duas letras (armazenado em maiúsculas), o nome de um navegador com a versão principal, já que o user agent é reduzido (por exemplo Chrome 120), ou o nome de um evento personalizado. ip_ranges aceitam um endereço IPv4 ou IPv6 ou CIDR (203.0.113.0/24), que deve ser válido. Um padrão pode existir uma vez por lista, e um site pode ter até 500 regras. Se a lista bloqueia ou permite quem corresponde depende do seu modo, que assume por padrão block e é alterado com sites_update. Os acessos correspondentes são descartados na coleta e não são armazenados, e a regra se aplica em poucos minutos apenas aos novos acessos. Exige sites.manage. Exige o plano Pro ou acima (caso contrário, 402 plan_limit).

Permissão: sites.manage

Exemplo
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 Excluir uma regra de tráfego traffic_rules_delete

Exclui uma regra de tráfego, encontrada pelo id em traffic_rules_list. Os acessos que ela descartava voltam a ser contados a partir daí, e os acessos já descartados se perderam de vez. Observe que excluir o último padrão de uma lista em modo allow faz essa lista deixar de filtrar. Retorna a regra excluída. Exige sites.manage.

Permissão: sites.manage

Exemplo
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 Listar regras de tráfego traffic_rules_list

Lista as regras de tráfego do site, que são listas de bloqueio ou permissão aplicadas na hora da coleta para decidir quais acessos contam. Cada regra tem id (um UUID para atualizar e excluir), list (hostnames, paths, referrers, countries, ip_ranges, user_agents ou events), pattern, label (observação opcional), mode (block ou allow, o modo dessa lista inteira) e created_at. No modo block, um acesso que corresponde a qualquer padrão da lista é descartado, no modo allow um acesso que não corresponde a nenhum é descartado, e uma lista vazia não filtra nada. Filtre com list. O modo de uma lista não é definido aqui, mas com sites_update usando traffic_rule_modes. Use traffic_rules_test para conferir um acesso de exemplo. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/traffic_rules.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/traffic_rules/test.json Testar se um hit seria contado com as regras atuais do site traffic_rules_test

Simulação que informa se um acesso de exemplo seria contado com as regras de tráfego atuais do site. Nada é armazenado. Envie qualquer um entre url (uma URL de página completa, seu host e caminho são verificados), referrer (URL ou hostname), country (código de duas letras), ip (verificado contra ip_ranges, nunca armazenado), user_agent (uma string User-Agent completa, reduzida a navegador e versão principal) e event (o nome de um evento personalizado). Os valores que você omitir não são verificados. O resultado tem counted (true se o acesso seria registrado), blocked_by (a lista que o descartou, ou null), mode (block ou allow para essa lista, ou null) e values (os valores normalizados que foram verificados). As regras são lidas ao vivo, então uma nova regra aparece na hora. Exige analytics.read. Exige o plano Pro ou acima (caso contrário, 402 plan_limit).

Permissão: analytics.read

Exemplo
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 Alterar uma regra de tráfego traffic_rules_update

Altera o padrão ou o rótulo de uma regra de tráfego, encontrada pelo id em traffic_rules_list. Apenas as entradas enviadas mudam. A lista não pode ser alterada, exclua e recrie a regra para movê-la para outra lista. O padrão deve continuar válido para a sua lista (um CIDR para ip_ranges) e único dentro dela. Envie um label vazio para limpá-lo. Vale apenas para os novos acessos. Exige sites.manage. Exige o plano Pro ou acima (caso contrário, 402 plan_limit).

Permissão: sites.manage

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

Relatório de patrocinador

GET /sponsor/:token.json Um relatório de patrocinador, pelo token do link ad_reports_get

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/sponsor/:token.json

Relatórios de patrocinador

Relatórios por e-mail

DELETE /recipients/:id.json Remover um destinatário de um relatório por e-mail email_report_recipients_delete

Remove um endereço de um relatório por e-mail (id do destinatário, de email_report_recipients_list). O endereço deixa de receber relatórios e sua linha é excluída. Se o endereço tinha cancelado a inscrição por conta própria, a recusa continua registrada, então removê-lo não permite que alguém o convide de novo. Para alterar muitos endereços de uma vez, envie a lista completa por email_reports_update. Retorna o destinatário removido.

Permissão: content.write

Exemplo
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 Listar os destinatários de um relatório por e-mail com o status de cada um email_report_recipients_list

Status: active (recebe relatórios), pending (convidado, ainda não aceitou), declined ou unsubscribed. Adicione ou remova endereços pela lista de destinatários do relatório.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/reports/:report_id/recipients.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /recipients/:id/resend.json Reenviar um convite de relatório pendente email_report_recipients_resend

Envia o convite de novo com links novos. Permitido uma vez a cada 7 dias por endereço e por relatório.

Permissão: content.write

Exemplo
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 Criar um relatório por e-mail email_reports_create

Cria um relatório de análises agendado por e-mail que cobre um ou mais sites (o caminho recebe workspace_id). São obrigatórios name e site_ids (ids pa_...). frequency é daily, weekly (padrão, enviado em um dia útil) ou monthly (no dia 1 do mês), hour é a hora do dia de 0 a 23 no fuso horário do espaço de trabalho (padrão 8) e weekday vai de 0 para domingo a 6 para sábado (padrão 1, usado apenas por relatórios semanais). blocks escolhe o conteúdo entre kpis, chart, pages, sources, goals, campaigns, vitals, uptime, testimonials e subscriptions (padrão kpis, chart, pages, sources, goals, testimonials, subscriptions). subscriptions mostra o MRR e o que o moveu no período, para um site com provedor de pagamento conectado. recipients é uma lista de endereços de e-mail (até 50). Os membros do espaço de trabalho ficam ativos na hora, qualquer outro endereço fica pendente e recebe um e-mail de convite, e só recebe relatórios depois de aceitá-lo. Endereços que optaram por sair são recusados. Se recipients for omitido, o usuário que chama é adicionado. Um relatório ativado precisa de pelo menos um destinatário. O plano Free permite 3 relatórios, os planos pagos são ilimitados. Retorna o relatório com next_run_at. Use email_reports_send_test para visualizá-lo.

Permissão: content.write

Exemplo
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 Log de entregas de um relatório por e-mail email_reports_deliveries

Lista o log de envios de um relatório por e-mail, dos mais recentes para os mais antigos e paginados. Cada entrada tem status (sent para um envio agendado, test, failed ou skipped), recipients_count, error (o motivo de uma falha, caso contrário null) e sent_at. Filtre com status. Use-a para confirmar que um relatório agendado foi enviado ou para ver por que falhou. Use email_reports_send_test para disparar um e-mail de teste.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/reports/:id/deliveries.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE /reports/:id.json Excluir um relatório por e-mail email_reports_delete

Exclui permanentemente um relatório por e-mail junto com seus destinatários e o log de envios. Isso não pode ser desfeito e nenhum outro e-mail é enviado. Para parar de enviar mas manter o relatório, use email_reports_update com enabled false. O id (rep_...) vem de email_reports_list. Retorna o relatório excluído.

Permissão: content.write

Exemplo
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 Listar relatórios por e-mail email_reports_list

Lista os relatórios por e-mail agendados de um espaço de trabalho (o caminho recebe workspace_id), ordenados por nome e paginados. Cada relatório tem id (rep_...), name, site_ids, frequency, hour, weekday, recipients (todos os endereços do relatório), recipient_details (id, email, status, invited_at, expires_at, confirmed_at de cada um), blocks, attach_pdf, intro, enabled, last_sent_at, next_run_at e created_at. Filtre por frequency (daily, weekly ou monthly). Quem tem acesso limitado a alguns sites só vê relatórios cujos sites são todos seus. Apenas destinatários com status active realmente recebem relatórios. Use email_reports_deliveries para o log de envios.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/reports.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /reports/:id/send_test.json Enviar um relatório por e-mail agora como teste email_reports_send_test

Envia o relatório para um endereço agora mesmo como teste, sem alterar o agendamento nem last_sent_at. Envia um e-mail de verdade, então use-a apenas quando o usuário quiser isso. recipient assume por padrão o usuário que chama e só pode ser quem chama, outro membro do espaço de trabalho ou um destinatário ativo do relatório. Para qualquer outro endereço, o teste vai para quem chama. Os envios de teste têm limite de frequência por espaço de trabalho e por endereço externo, e um envio recusado retorna um erro de limite de frequência. Retorna a entrega com status (test, ou failed com o motivo em error), recipients_count e sent_at. Use email_reports_deliveries para o log completo.

Permissão: content.write

Exemplo
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 Obter um relatório por e-mail email_reports_get

Retorna um relatório por e-mail pelo id (rep_..., de email_reports_list). A resposta tem name, site_ids, frequency, hour, weekday, recipients, recipient_details com cada endereço e seu status de adesão, blocks, attach_pdf, intro, enabled, last_sent_at e next_run_at (carimbos de data e hora em UTC). recipients lista todos os endereços, incluindo os pendentes, e apenas os endereços com status active em recipient_details recebem relatórios. Use email_reports_deliveries para ver o que foi enviado.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/reports/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /reports/:id.json Atualizar um relatório por e-mail email_reports_update

Altera um relatório por e-mail (id de email_reports_list). Apenas as entradas enviadas mudam. Enviar recipients substitui a lista inteira. Os endereços que você tirar são removidos, os novos seguem as mesmas regras de adesão de email_reports_create (os membros ficam ativos na hora, os demais recebem um e-mail de convite) e os endereços que já estão no relatório mantêm o status. Alterar frequency, hour, weekday ou enabled recalcula next_run_at. Defina enabled como false para pausar. Use email_report_recipients_list para ver o status de adesão e email_report_recipients_resend ou email_report_recipients_delete para gerenciar endereços individuais.

Permissão: content.write

Exemplo
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 Aceitar um convite de relatório report_invites_accept

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/reports/invites/:token/accept.json \
  -H "Content-Type: application/json" -d '{…}'
POST /reports/invites/:token/decline.json Recusar um convite de relatório report_invites_decline

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/reports/invites/:token/decline.json \
  -H "Content-Type: application/json" -d '{…}'
POST /reports/resubscribe/:token.json Voltar a receber relatórios depois de cancelar a inscrição report_resubscribes_confirm

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/reports/resubscribe/:token.json \
  -H "Content-Type: application/json" -d '{…}'
POST /reports/unsubscribe/:token/resubscribe.json Enviar a um endereço um link para voltar a receber relatórios report_resubscribes_create

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/reports/unsubscribe/:token/resubscribe.json \
  -H "Content-Type: application/json" -d '{…}'
POST /reports/unsubscribe/:token.json Cancelar a inscrição de um endereço em um relatório por e-mail report_unsubscribes_create

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

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

SCIM

POST /scim/v2/Users.json Provisionar um usuário scim_users_create

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/scim/v2/Users.json \
  -H "Content-Type: application/json" -d '{…}'
DELETE /scim/v2/Users/:id.json Desprovisionar um usuário scim_users_delete

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X DELETE https://privatusanalytics.com/scim/v2/Users/:id.json \
  -H "Content-Type: application/json" -d '{…}'
GET /scim/v2/Users.json Listar usuários provisionados scim_users_list

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/scim/v2/Users.json
GET /scim/v2/Users/:id.json Obter um usuário provisionado scim_users_get

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/scim/v2/Users/:id.json
PATCH /scim/v2/Users/:id.json Atualizar um usuário (PATCH active, name) scim_users_update

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Ativar uma configuração de SSO testada sso_activate

Ativa o SSO para o espaço de trabalho. A configuração já deve ter status tested, o que acontece depois de um login de teste bem-sucedido (iniciado na página de configurações de SSO do espaço de trabalho no app, ele exige login no navegador e não pode ser executado daqui), ou já estar active. Apenas no plano Business. Depois da ativação, os membros podem entrar com SSO, e definir enforced por sso_update passa a exigir SSO em todo login. Falha quando a configuração não foi testada ou quando o plano não tem SSO. Exige workspace.manage. Retorna a configuração com status active (veja sso_get).

Permissão: workspace.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Desativar o SSO (volta para rascunho) sso_deactivate

Desativa o SSO devolvendo a configuração para draft e limpando enforced, de modo que os membros voltam aos outros métodos de login do espaço de trabalho. Os detalhes do provedor são mantidos. Reativar exige um novo login de teste e sso_activate. Antes, certifique-se de que os membros têm outra forma de entrar. Funciona em qualquer plano. Exige workspace.manage. Retorna a configuração com status draft (veja sso_get).

Permissão: workspace.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Gerar um novo token SCIM (exibido uma única vez) sso_scim_token

Permissão: workspace.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obter as configurações de SSO sso_get

Retorna a configuração de login único (SSO) do espaço de trabalho, ou um rascunho vazio quando não existe nenhuma. Os campos são protocol (saml ou oidc), status (draft, testing, tested ou active), enforced (os membros devem entrar por SSO), domains (domínios de e-mail que usam este SSO), idp_sso_url e idp_entity_id para SAML, oidc_issuer e oidc_client_id para OIDC, default_role e jit_provisioning (criar membros no primeiro login por SSO) e scim_enabled. Os segredos nunca são retornados, apenas os booleanos idp_cert_present e oidc_client_secret_present. O SSO é um recurso do plano Business. Exige workspace.manage.

Permissão: workspace.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/sso.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /workspaces/:workspace_id/sso.json Criar ou atualizar as configurações de SSO sso_update

Cria ou edita as configurações de SSO do espaço de trabalho. Apenas no plano Business. Apenas as entradas enviadas mudam. Para SAML, envie protocol saml com idp_sso_url, idp_entity_id e idp_cert (texto PEM). Para OIDC, envie protocol oidc com oidc_issuer, oidc_client_id e oidc_client_secret, que é somente de escrita e um valor vazio mantém o segredo existente. domains lista os domínios de e-mail que usam este SSO. default_role é a função dada aos membros criados pelo provisionamento no primeiro login ou pelo SCIM (não owner nem custom) e você só pode definir uma função que você mesmo poderia conceder. Alterar qualquer detalhe do provedor de identidade devolve uma configuração active ou tested para draft e desativa enforced, então ela precisa ser testada de novo antes de sso_activate funcionar. enforced true só é aceito enquanto status é active. Exige workspace.manage. Retorna a configuração (veja sso_get).

Permissão: workspace.manage · Somente HTTP (não é uma ferramenta MCP)

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

Segmentos

POST /sites/:site_id/segments.json Salvar filtros como um segmento segments_create

Salva um conjunto de filtros como um segmento nomeado que pode ser reutilizado em qualquer ferramenta de estatísticas por meio de segment_id. Passe name e filters (todas as condições devem corresponder, e um grupo {any: [...]} corresponde quando uma de várias corresponde, veja a entrada filters para os nomes de dimensões e os operadores). Os filtros são verificados, então uma dimensão desconhecida ou um valor inválido retorna um 422 com uma mensagem por linha. Use segments_preview antes para conferir o que um conjunto de filtros abrange. shared é true por padrão e torna o segmento visível para todos com acesso ao site, e false o mantém privado para você. Retorna o segmento com id (seg_...), site_id, name, description, filters, summary (uma descrição em linguagem simples), shared, mine e carimbos de data e hora. Exige a permissão content.write.

Permissão: content.write

Exemplo
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 Excluir um segmento segments_delete

Exclui permanentemente um segmento salvo. Os painéis e links que o usam voltam a mostrar todo o tráfego. Nenhum dado de análise é tocado e não há como desfazer. Retorna o segmento excluído. Os ids (seg_...) vêm de segments_list. Exige a permissão content.write.

Permissão: content.write

Exemplo
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 Listar segmentos que você pode usar em um site segments_list

Lista os segmentos salvos de um site, ordenados por nome: os compartilhados mais os seus próprios privados. Cada segmento tem id (seg_...), site_id, name, description, filters, summary, shared, mine e carimbos de data e hora. Passe um id como segment_id para qualquer ferramenta de estatísticas (stats_aggregate, stats_breakdown, funnels_get e outras) para aplicar os filtros do segmento. Paginada pelos parâmetros de página padrão. Use segments_create para adicionar um.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/segments.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/segments/preview.json Descrever filtros em linguagem natural e contar os visitantes correspondentes nos últimos 30 dias segments_preview

Verifica um conjunto de filtros sem salvar nada. Retorna summary (os filtros em linguagem simples), visitors (quantos visitantes corresponderam nos últimos 30 dias, null quando os filtros são inválidos), period (sempre 30d) e filters (a forma limpa e canônica que seria armazenada). Os filtros usam o mesmo formato de segments_create, incluindo grupos {any: [...]} e nomes por extenso opcionais para países, canais e metas, que são convertidos em códigos e ids. Filtros inválidos retornam um 422 que indica a linha. Use-a para experimentar filtros antes de segments_create, e stats_aggregate com filters para números em outro período.

Permissão: analytics.read

Exemplo
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 Obter um segmento segments_get

Retorna um segmento salvo: id (seg_...), site_id, name, description, filters (as condições armazenadas), summary (uma descrição em linguagem simples, como Visitors from the United States on mobile), shared (visível para todos com acesso ao site), mine (true quando você o criou) e carimbos de data e hora. Você pode ler os segmentos compartilhados e os seus próprios privados. Os ids vêm de segments_list. Para contar quantos visitantes um conjunto de filtros abrange, use segments_preview.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/segments/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/segments/:id.json Renomear um segmento ou alterar seus filtros ou compartilhamento segments_update

Renomeia um segmento, substitui seus filtros ou altera quem pode vê-lo. Apenas as entradas enviadas mudam. Enviar filters substitui todos os filtros existentes, no mesmo formato e com as mesmas verificações de segments_create. shared false o torna privado para quem o criou. description pode ser limpa enviando-a vazia. Tudo o que usa o segmento, como chamadas de estatísticas com seu segment_id, muda imediatamente. Retorna o segmento. Os ids vêm de segments_list. Exige a permissão content.write.

Permissão: content.write

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

Sincronização com data warehouse

POST /workspaces/:workspace_id/warehouses.json Adicionar um destino de data warehouse warehouse_destinations_create

Adiciona um destino de data warehouse que recebe os eventos brutos de cada dia (somente no plano Business). Diariamente às 02:00 UTC o dia UTC anterior é enviado, a primeira execução é na próxima 02:00 UTC, e uma execução que falhou é repetida uma hora depois. kind deve ser informado e decide as configurações obrigatórias. s3 (também GCS, R2 e MinIO por endpoint) exige bucket, access_key_id e secret_access_key, com region, prefix e endpoint opcionais (https, apenas hosts públicos). bigquery exige service_account_json, dataset e table, com project_id opcional. snowflake exige account, user, private_key (RSA em PEM), database, schema e table, com warehouse e role opcionais. azure exige sas_url (um link SAS https de contêiner de blob com permissão de escrita), com prefix opcional. Os segredos (secret_access_key, service_account_json, private_key, sas_url) são somente de escrita e nunca são retornados. site_ids limita os sites (ids pa_...), vazio significa todos os sites, e um membro ou token limitado a alguns sites deve nomeá-los. As propriedades de evento só são enviadas quando marcadas como seguras para exportação (veja event_properties_list). Exige a permissão workspace.manage. Retorna o destino com id (whd_...), um destino mascarado e configured (os nomes das configurações preenchidas).

Permissão: workspace.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Excluir um destino de data warehouse warehouse_destinations_delete

Exclui um destino de data warehouse para que nada mais seja enviado. Os dados que já foram enviados permanecem no seu bucket ou warehouse, e isso não pode ser desfeito, embora você possa adicionar o destino de novo (o histórico não é reenviado automaticamente). Qualquer sincronização manual ainda na fila não é recolhida. O id vem de warehouse_destinations_list. Exige a permissão workspace.manage. Retorna o destino excluído.

Permissão: workspace.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Listar destinos de data warehouse warehouse_destinations_list

Lista os destinos de data warehouse de um espaço de trabalho ordenados por nome, opcionalmente apenas um tipo (s3, bigquery, snowflake ou azure). Um membro ou token limitado a alguns sites só vê destinos cujos sites estão todos entre os seus, e os destinos que enviam todos os sites ficam ocultos para eles. Paginada com page e per_page (até 100). Cada item tem os campos descritos em warehouse_destinations_get. Exige o workspace_id de workspaces_list e a permissão workspace.manage.

Permissão: workspace.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/warehouses.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /warehouses/:id.json Obter um destino de data warehouse (sem segredos) warehouse_destinations_get

Retorna um destino de data warehouse sem credenciais. Os campos são id (whd_...), kind (s3, bigquery, snowflake ou azure), name, target (um resumo mascarado como s3://bucket/prefix), configured (nomes das configurações preenchidas, os segredos aparecem apenas pelo nome), site_ids (vazio significa todos os sites), schedule (daily), schema_version (o layout de linha enviado), last_run_at, next_run_at, last_error (null quando a última execução funcionou) e created_at. O id vem de warehouse_destinations_list. Confira last_error depois de warehouse_destinations_sync para ver como foi uma sincronização.

Permissão: workspace.manage

Exemplo
curl https://privatusanalytics.com/warehouses/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /warehouses/:id/sync.json Enfileirar agora a sincronização de um dia warehouse_destinations_sync

Enfileira um envio imediato de um dia UTC de eventos brutos para um destino, fora do agendamento diário. Somente no plano Business. date (YYYY-MM-DD) deve ser anterior a hoje em UTC e assume por padrão ontem. Ela envia esse dia para todos os sites do destino, então evite sincronizar um dia que já foi enviado, e as sincronizações manuais são limitadas a 30 por hora por espaço de trabalho. A chamada retorna 202 com o destino na hora e o envio roda em segundo plano. Consulte warehouse_destinations_get e leia last_run_at e last_error para ver o resultado. O id vem de warehouse_destinations_list. Exige a permissão workspace.manage.

Permissão: workspace.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Atualizar um destino de data warehouse (segredos em branco são mantidos) warehouse_destinations_update

Altera um destino de data warehouse (somente no plano Business). Apenas as entradas enviadas mudam e kind não pode ser alterado. Um segredo em branco mantém o valor armazenado, então você pode editar outras configurações sem enviar as credenciais de novo. As configurações são validadas para o tipo do destino como em warehouse_destinations_create. Enviar site_ids substitui a lista de sites. Quando o alvo muda (outro bucket, dataset, tabela, banco de dados ou similar), o progresso dos dias não concluídos recomeça, então esses dias são enviados de novo para o novo lugar. O id vem de warehouse_destinations_list. Exige a permissão workspace.manage. Retorna o destino atualizado.

Permissão: workspace.manage · Somente HTTP (não é uma ferramenta MCP)

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

Site institucional

GET /blog.json Liste os posts do blog blog_list

Lista os posts do blog do Privatus Analytics, do mais recente ao mais antigo, com slug, title, kicker, rubric (o resumo de uma frase), description, path e datas, e sem corpo. Para ler um, use blog_get com o seu slug. Paginado com page e per_page (máximo de 100). Público, sem necessidade de autenticação.

Permissão: public

Exemplo
curl https://privatusanalytics.com/blog.json
GET /blog/:slug.json Leia um post do blog (Markdown e HTML) blog_get

Retorna um post do blog pelo seu slug (de blog_list, a última parte de /blog/<slug>) com os seus títulos, o corpo em Markdown e o HTML renderizado. Os posts são escritos em inglês. Público, sem necessidade de autenticação.

Permissão: public

Exemplo
curl https://privatusanalytics.com/blog/:slug.json
GET /changelog.json Listar entradas do changelog changelog_list

Novidades publicadas do produto, das mais recentes para as mais antigas. Também disponível como RSS em /changelog.rss.

Permissão: public

Exemplo
curl https://privatusanalytics.com/changelog.json
POST /contact.json Enviar uma mensagem para a equipe do Privatus Analytics contact_create

Os clientes de navegador enviam um token do Cloudflare Turnstile como `cf-turnstile-response`. As requisições com um token de API não precisam dele.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/contact.json \
  -H "Content-Type: application/json" -d '{…}'
POST /newsletter/confirm.json Confirmar uma inscrição na newsletter (token assinado) newsletter_confirm

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/newsletter/confirm.json \
  -H "Content-Type: application/json" -d '{…}'
POST /newsletter.json Inscrever um e-mail na newsletter newsletter_subscribe

Os clientes de navegador enviam um token do Cloudflare Turnstile como `cf-turnstile-response`. As requisições com um token de API não precisam dele.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/newsletter.json \
  -H "Content-Type: application/json" -d '{…}'
POST /newsletter/unsubscribe.json Cancelar a inscrição com um token de link assinado newsletter_unsubscribe

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/newsletter/unsubscribe.json \
  -H "Content-Type: application/json" -d '{…}'
GET /pricing.json Obter planos, preços e limites dos planos pricing_get

Os mesmos dados da página de preços: a escada de eventos, cada limite dos planos e o que conta como evento. Passe events para obter a faixa correspondente.

Permissão: public

Exemplo
curl https://privatusanalytics.com/pricing.json
GET /status.json Obter o status atual do sistema status_get

Saúde do banco de dados, do Redis e dos jobs em segundo plano, verificada no máximo a cada 15 segundos.

Permissão: public

Exemplo
curl https://privatusanalytics.com/status.json
GET /tools/header-checker.json Verificar o Referrer-Policy e o CSP de uma página para análises tools_header_check

Busca uma página pública e verifica os cabeçalhos de resposta que afetam as análises. Use-a quando faltarem dados de rastreamento ou as origens de referência parecerem erradas. Ela examina Referrer-Policy, as diretivas script-src e connect-src da Content-Security-Policy (se o Privatus Analytics pode carregar e enviar dados), Permissions-Policy e o número de cabeçalhos Set-Cookie. Retorna url (a URL final após até 3 redirecionamentos), status (status HTTP) e findings, cada um com check, value (pode ser nulo), level (ok, warn ou info) e uma observação em linguagem simples. A URL deve ser http ou https e pública, endereços privados e internos são recusados, apenas o primeiro 1 MB é lido e a busca expira após 5 segundos. Limitada a 10 chamadas por minuto por cliente. Pública, sem necessidade de autenticação.

Permissão: public

Exemplo
curl https://privatusanalytics.com/tools/header-checker.json
GET /tools/privacy-policy-generator.json Redigir um parágrafo de política de privacidade para o Privatus Analytics tools_privacy_policy

Redige um parágrafo de política de privacidade que descreve como o Privatus Analytics coleta dados no site do cliente (sem cookies, sem dados pessoais armazenados, localização apenas por país). É um ponto de partida, não aconselhamento jurídico. As entradas são site_name (até 120 caracteres), contact_email (opcional, acrescenta uma frase de contato) e honors_gpc (padrão true, acrescenta uma frase dizendo que Do Not Track e Global Privacy Control são respeitados). Retorna site_name, paragraphs (array de strings), text (os parágrafos unidos por linhas em branco, com o endereço do Privatus Analytics entre parênteses depois do nome) e html (os parágrafos como elementos <p>, com o nome como link simples). O texto é escrito no idioma da requisição, inglês por padrão. Não faz nenhuma alteração em nenhuma conta. Pública, sem necessidade de autenticação.

Permissão: public

Exemplo
curl https://privatusanalytics.com/tools/privacy-policy-generator.json
GET /tools/qr-code.json Gerar um QR code em SVG tools_qr_code

Gera um código QR como imagem SVG para impressão ou pôsteres. Combine-o com um link que tenha parâmetros UTM de tools_utm_builder. As entradas são text (a URL ou o texto, até 1.000 caracteres) e level (correção de erros l, m, q ou h, padrão m, um nível mais alto sobrevive a mais danos mas exige um código mais denso). Retorna text, level, size (módulos por lado) e svg (um documento SVG independente, preto sobre branco). Um texto longo demais para o nível escolhido é rejeitado. Para códigos QR de links curtos rastreados, use links_qr. Pública, sem necessidade de autenticação.

Permissão: public

Exemplo
curl https://privatusanalytics.com/tools/qr-code.json
GET /tools/tracker-scanner.json Listar cookies e rastreadores conhecidos em uma página tools_tracker_scan

Busca uma página pública e lista os cookies que ela define e os rastreadores de terceiros conhecidos que ela referencia. Use-a para uma verificação rápida do que uma página carrega antes de escolher uma abordagem de consentimento. É uma varredura estática apenas do HTML e dos cabeçalhos de resposta, não executa JavaScript, então cookies definidos por scripts e tags carregadas depois por um gerenciador de tags passam despercebidos. Retorna url (URL final após até 3 redirecionamentos), status, truncated (true quando apenas o primeiro 1 MB foi lido), cookies (name, domain, path, expires, secure, http_only e same_site, os valores nunca são retornados), trackers (name, category, match e evidence, em que category é advertising, analytics, session_recording, tag_manager, marketing ou privacy_analytics) e third_party_hosts (nomes de host ordenados de outros sites). A URL deve ser http ou https pública, com tempo limite de busca de 5 segundos, e as chamadas são limitadas a 10 por minuto por cliente. Pública, sem necessidade de autenticação.

Permissão: public

Exemplo
curl https://privatusanalytics.com/tools/tracker-scanner.json
GET /tools/utm-builder.json Montar uma URL de campanha com parâmetros UTM tools_utm_builder

Monta uma URL de campanha com parâmetros UTM e sinaliza erros comuns. As entradas são url (deve ser http ou https), source, medium e campaign (todos obrigatórios) e term e content opcionais. Os parâmetros utm_ já existentes na URL são substituídos e os outros parâmetros de consulta são mantidos. Retorna url (o link pronto), params (os valores utm_ que foram adicionados, os em branco ficam de fora) e warnings (strings para valores com letras maiúsculas, espaços, ou texto que parece um endereço de e-mail ou um número longo, que nunca deveriam estar em uma URL). Use valores em minúsculas e sem espaços para que a mesma campanha não seja dividida em várias linhas nos relatórios. Não salva nada. Pública, sem necessidade de autenticação.

Permissão: public

Exemplo
curl https://privatusanalytics.com/tools/utm-builder.json
POST /waitlist.json Entrar em uma lista de espera (hospedagem na UE) waitlist_join

Os clientes de navegador enviam um token do Cloudflare Turnstile como `cf-turnstile-response`. As requisições com um token de API não precisam dele.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

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

Sites

POST /sites/:site_id/data_reset.json Excluir todos os eventos e visitas em um intervalo de datas (roda em segundo plano, não pode ser desfeito) sites_reset_data

Exclui de forma irreversível as visualizações de página, os eventos personalizados e as visitas de um site em um intervalo de datas, e não pode ser desfeito. Use-a para limpar tráfego de teste ou remover um período ruim. Ela não exclui o site, suas metas nem suas configurações (use sites_delete para o site). from e to são datas YYYY-MM-DD, ambas inclusivas e lidas no fuso horário do site, e to não pode ser anterior a from. confirm deve ser o domínio do site exatamente como mostrado por sites_get (maiúsculas e minúsculas não importam). A requisição é aceita e retorna na hora com status queued, site_id, from e to. A exclusão roda em segundo plano, em lotes, então os números nas ferramentas de estatísticas podem levar um pouco para se estabilizar, e não há endpoint de status para consultar, confira as ferramentas de estatísticas até o intervalo ficar vazio. A ação é registrada no log de auditoria. Exige a permissão sites.manage.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Resumo do tráfego filtrado: bots, regras de tráfego ou remoções de PII por motivo e país (somente contagens) sites_filter_stats

Contagens de acessos que foram descartados ou limpos antes do armazenamento, nos últimos dias. Use-a para ver quanto tráfego de bots, tráfego bloqueado por regras ou redação um site tem. Escolha kind com bot (acessos descartados como bots), rule (acessos descartados por regras de tráfego) ou redaction (valores ocultados pelo removedor de dados pessoais). Retorna kind, days, total, by_reason, by_country e by_day. by_reason e by_country são listas de {value, count} (até 50, do maior para o menor, value null quando desconhecido) e by_day é uma lista de {date, count}. days é limitado entre 1 e 395 e assume por padrão 30. São apenas contagens agregadas. Nenhum endereço IP, user agent ou valor ocultado é armazenado, então nada pode ser associado a uma pessoa. Esses acessos não contam como eventos para a cobrança. Use traffic_rules_list para ver ou alterar as regras.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/filter_stats.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/access.json Listar membros e se eles podem ver este site sites_access_list

Mostra quais membros do espaço de trabalho podem ver um site. Todos os membros do espaço de trabalho são listados na ordem de entrada, sem paginação. Os campos são membership_id (o uuid usado por sites_access_update), email, name, role, access (true quando o membro pode ver este site) e locked (true para proprietários e admins, que sempre têm acesso e não podem ser alterados). Os demais membros têm acesso quando têm todos os sites ou uma concessão explícita para este site. Use members_list para ver a lista completa de sites de um membro. Exige members.manage.

Permissão: members.manage

Exemplo
curl https://privatusanalytics.com/sites/:site_id/access.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/access.json Conceder ou remover o acesso de um membro a este site sites_access_update

Concede ou remove o acesso de um membro a um site. membership_id vem de sites_access_list (ou members_list) e access é true para conceder ou false para remover. Proprietários e admins sempre têm acesso e não podem ser alterados. Remover o acesso de um membro que tinha todos os sites o passa para uma lista explícita com todos os outros sites do espaço de trabalho e desativa seu include_future_sites, de modo que ele não receberá os sites criados depois. Conceder a alguém que já tem todos os sites não altera nada. Você não pode alterar um membro que tem permissões que você não tem ou sites além dos seus. Exige members.manage. Retorna a linha desse membro no mesmo formato de sites_access_list.

Permissão: members.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Marcar um site com estrela (fixado primeiro em Todos os sites) sites_favorite

Marca um site com estrela para o usuário que chama, para que ele seja listado primeiro por sites_list e na página Todos os sites. Afeta apenas quem chama, nunca outros membros, e marcar um site que já tem estrela não altera nada. A chamada não precisa de nenhuma entrada além do id do site. Use sites_unfavorite para remover a estrela. Exige analytics.read. Retorna o site (veja sites_get), com favorite true.

Permissão: analytics.read

Exemplo
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 Remover a estrela de um site sites_unfavorite

Remove a estrela do usuário que chama de um site, para que ele deixe de ser fixado primeiro em sites_list. Afeta apenas quem chama e não faz nada se o site não tinha estrela. Use sites_favorite para marcá-lo de novo. Exige analytics.read. Retorna o site (veja sites_get), com favorite false.

Permissão: analytics.read

Exemplo
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 Status da instalação e snippet de um site sites_setup_get

Retorna o que é necessário para instalar o rastreamento em um site e se já chegaram dados. Os campos são site_id, snippet (a tag de script HTML pronta para colar, com todos os módulos do rastreador ativados), receiving_data (true assim que o primeiro evento foi recebido) e first_event_at (ISO 8601, null até então). Consulte-a depois da instalação para ver se os eventos estão chegando. Use tracking_snippet quando quiser um snippet personalizado (módulos escolhidos, visualizações de página manuais, modo SPA, máscaras) e tracking_verify para buscar a página ao vivo e verificar se o script está presente. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/setup.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /transfers/:token/accept.json Aceitar a transferência de um site para um dos seus espaços de trabalho site_transfers_accept

Aceita um convite de transferência de site e move o site para um dos espaços de trabalho de quem chama. O parâmetro de caminho token vem do link do convite, e workspace_id é o espaço de trabalho de destino (ws_...) no qual quem chama tem sites.manage. O e-mail de quem chama deve corresponder ao endereço para o qual o convite foi enviado, e o destino não pode ser o espaço de trabalho de onde o site veio. O site mantém seu id, suas configurações, metas e dados, mas as concessões de acesso por membro são limpas e seus links compartilhados passam para o novo espaço de trabalho. Falha quando o convite não está mais pendente ou expirou, quando o destino está no limite de sites do seu plano, ou quando ele já tem um site ativo com o mesmo domínio. A mudança não pode ser desfeita, a não ser transferindo de volta. Um token que faz esta chamada deve pertencer ao espaço de trabalho de destino e ter sites.manage. Retorna a transferência com status accepted.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl -X POST https://privatusanalytics.com/transfers/:token/accept.json \
  -H "Content-Type: application/json" -d '{…}'
POST /sites/:site_id/transfer.json Iniciar a transferência de um site para outro espaço de trabalho (envia e-mail ao destinatário) sites_transfer_start

Inicia a mudança de um site para outro espaço de trabalho enviando ao destinatário, por e-mail, um link de convite válido por 7 dias. Nada se move até que o destinatário entre com esse e-mail e aceite (site_transfers_accept), então o site fica aqui até lá. Iniciar uma nova transferência cancela qualquer transferência pendente anterior do mesmo site. email deve ser um endereço válido e o destinatário escolhe o espaço de trabalho de destino. Os e-mails de transferência têm limite de frequência. Use sites_transfer_cancel para retirá-la. Exige sites.manage. Retorna a transferência com site_id, site_domain, from_workspace, to_email, status pending e expires_at.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Cancelar uma transferência de site pendente sites_transfer_cancel

Cancela o convite de transferência pendente do site para que seu link deixe de funcionar. Falha com um erro de validação quando não há transferência pendente. Uma transferência que já foi aceita não pode ser cancelada. Exige sites.manage. Retorna a transferência com status canceled.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Obter uma transferência pendente a partir do token enviado por e-mail site_transfers_get

Mostra um convite de transferência de site a partir do token no seu link (o parâmetro de caminho token, do e-mail de convite enviado por sites_transfer_start). Quem chama deve estar conectado ou usar um token de API. Retorna site_id, site_domain, from_workspace (o nome do espaço de trabalho que enviou), to_workspace_id (null até ser aceita), to_email (o endereço convidado), status (pending, accepted ou canceled) e expires_at. Os convites expiram 7 dias depois de enviados. Use site_transfers_accept para aceitá-lo.

Permissão: public · Somente HTTP (não é uma ferramenta MCP)

Exemplo
curl https://privatusanalytics.com/transfers/:token.json
POST /workspaces/:workspace_id/sites.json Adicionar um site sites_create

Adiciona um site a um espaço de trabalho e o retorna, incluindo o snippet de rastreamento a instalar. O plano do espaço de trabalho limita o número de sites (o Free permite 3) e a chamada falha com um erro de limite de plano quando ele é atingido. domain é obrigatório e é normalizado (por exemplo, uma URL completa ou um prefixo www é reduzido ao hostname). name assume por padrão o domínio, timezone assume por padrão o fuso horário do espaço de trabalho (um nome IANA como Europe/Berlin) e currency a moeda do espaço de trabalho (um código ISO 4217 de 3 letras como USD). Os efeitos colaterais são uma notificação site.created para os canais de notificação do espaço de trabalho, uma primeira auditoria SEO do site e uma verificação de domain rating enfileiradas, e um e-mail com o código de rastreamento para o membro que o criou (com lembretes enquanto nenhum dado chega). Os membros limitados a sites selecionados que optaram pelos sites futuros recebem acesso a ele. Exige sites.manage. Continue com tracking_snippet ou sites_setup_get para instalar e tracking_verify para verificar.

Permissão: sites.manage

Exemplo
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 Excluir um site (removido definitivamente após 7 dias) sites_delete

Exclui um site. É uma exclusão lógica: o site para de coletar e desaparece das listas imediatamente, e seus dados são eliminados de forma permanente após 7 dias, então trate-a como irreversível e fale com o suporte rápido se foi um engano. confirm deve ser o domínio do site (maiúsculas e minúsculas não importam). As transferências pendentes do site são canceladas e uma notificação site.deleted é enviada aos canais de notificação do espaço de trabalho. Para limpar apenas parte do tráfego e manter o site, use sites_reset_data. Exige sites.manage. Retorna o site.

Permissão: sites.manage · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Listar sites de um espaço de trabalho sites_list

Lista os sites de um espaço de trabalho aos quais quem chama tem acesso, paginados, com os sites marcados com estrela por quem chama primeiro. Use query para pesquisar domínio ou nome (parcial, sem diferenciar maiúsculas e minúsculas), label para manter os sites que têm um rótulo e sort como position (a ordem salva, o padrão), name ou visitors (visitantes dos últimos 30 dias, os maiores primeiro). O meta da resposta tem a paginação por página mais stats, um objeto indexado pelo id do site com visitors (visitantes únicos recentes), change (variação percentual em relação ao período anterior), sparkline (uma lista de valores diários) e live (visitantes atuais), e totals da página. Cada item tem os mesmos campos de sites_get. Este é o ponto de partida para encontrar os ids de site (pa_...) usados por todas as outras ferramentas de site. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/sites.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:id.json Obter um site e todas as suas configurações sites_get

Retorna as configurações e o status de um site pelo seu id público (pa_..., de sites_list). Os campos principais são id, workspace_id (ws_...), domain, name, extra_domains e multi_domain_mode (combined ou separate), timezone (nome IANA), currency (ISO 4217), labels, opções de privacidade (honor_dnt, honor_gpc, pii_scrubber, redaction_rules, allowed_params, path_masks), retention_months (null significa manter todos os dados), bot_filtering, traffic_rule_modes (um objeto que associa uma lista de regras a block ou allow), vitals_sample_rate (uma porcentagem), conversion_denominator (visits ou visitors), public_dashboard e public_indexable, ingest_key_prefix (null quando o site não tem chave de logs de crawlers), verified_at, first_event_at e last_event_at (null até os dados chegarem), domain_rating (pode ser nulo), snippet (a tag HTML de rastreamento), favorite (se quem chama marcou com estrela) e created_at. Exige analytics.read.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:id.json Atualizar as configurações do site sites_update

Atualiza as configurações de um site, alterando apenas os campos enviados. Os campos de nome e identidade são name, domain (alterá-lo refaz a verificação do domain rating), extra_domains (uma lista de hostnames) e multi_domain_mode (combined conta um visitante entre domínios, separate os mantém separados). timezone é um nome IANA e currency um código ISO 4217 de 3 letras. Os campos de privacidade são honor_dnt, honor_gpc, pii_scrubber, redaction_rules (uma lista de objetos com name e pattern, em que pattern é uma expressão regular), allowed_params (parâmetros de consulta a manter), path_masks (uma lista de objetos com pattern e replacement) e bot_filtering. As listas substituem toda a lista existente. retention_months não pode exceder a retenção do plano (Free 6 meses). traffic_rule_modes associa uma lista de regras (hostnames, paths, referrers, countries, ip_ranges, user_agents ou events) a block ou allow. vitals_sample_rate é uma porcentagem e o plano a limita (10 no Free, 100 nos planos pagos). conversion_denominator é visits ou visitors. public_dashboard torna as estatísticas visíveis para qualquer pessoa com o link e public_indexable permite que os mecanismos de busca indexem essa página. As alterações valem para os novos eventos em instantes. Exige sites.manage. Retorna o site atualizado.

Permissão: sites.manage

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

Tags de depoimentos

POST /sites/:site_id/testimonials/tags/:id/apply_rules.json Execute as regras de uma tag sobre os depoimentos já guardados testimonial_tags_apply_rules

dry_run true (o padrão) não altera nada e responde com as contagens: quantos seriam marcados, de quantos, e quantos já têm a tag. dry_run false os marca como uma única ação em lote e responde com undo_id, que testimonials_bulk_undo aceita por 7 dias. Mais de 100 são executados em segundo plano e a resposta traz state running.

Permissão: content.write

Exemplo
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 Crie uma tag, com regras de marcação automática se você as enviar testimonial_tags_create

Uma regra é { match, conditions }. Um depoimento que satisfaz qualquer uma das regras recebe a tag no momento em que chega. As regras só adicionam uma tag. Para marcar o que já está guardado, chame testimonial_tags_apply_rules em seguida.

Permissão: content.write

Exemplo
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 Mova uma tag para a lixeira por 30 dias testimonial_tags_destroy

Ela sai de todo depoimento, filtro e seletor. Restaurá-la com testimonial_trash_restore a recoloca em todo depoimento que a tinha. Uma coleção inteligente cujas regras a citam não corresponde a nada até lá. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Liste as tags de um site com as suas regras testimonial_tags_list

Cada tag vem com quantos depoimentos a carregam, as suas regras de marcação automática como condições estruturadas e em linguagem simples, e quando uma regra a aplicou pela última vez. As tags na lixeira ficam de fora.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/tags.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /sites/:site_id/testimonials/tags/:id/merge.json Una uma tag a outra testimonial_tags_merge

Todo depoimento que tinha esta tag recebe a outra, toda regra passa para a outra, toda coleção inteligente, visualização salva, widget e mural que citava esta tag passa a citar a outra, e esta tag vai para a lixeira, vazia. Responde com a tag que é mantida.

Permissão: content.write

Exemplo
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 Altere o nome, a cor ou as regras de uma tag testimonial_tags_update

Só o que é enviado muda. Enviar rules substitui todas as regras da tag, e uma lista vazia remove todas.

Permissão: content.write

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

Tokens de API

POST /workspaces/:workspace_id/api_tokens.json Criar um token de API (o token é exibido uma única vez) api_tokens_create

Cria um token de API para o membro que faz a chamada em um espaço de trabalho e retorna o segredo uma única vez no campo token. Copie-o imediatamente: ele não pode ser lido de novo, e um token perdido precisa ser revogado e recriado. Um token só pode restringir o que seu membro pode fazer. permissions assume por padrão todas as permissões do próprio membro quando omitido (uma lista vazia explícita é recusada, e pedir uma permissão que você não tem é um erro). site_ids aceita ids públicos de site (pa_...) e restringe o token a esses sites. Quando vazio, o token funciona para todos os sites que seu membro pode acessar (ou mantém a lista de sites do token que faz esta chamada). expires_at é opcional, em ISO 8601, e deve estar no futuro e a no máximo 3 anos de distância. Omita-o para um token que nunca expira. allowed_ips limita o token a esses IPs ou faixas CIDR. Um token que faz esta chamada precisa de tokens.manage. Um espaço de trabalho que exige autenticação em duas etapas recusa tokens de membros sem um segundo fator próprio. Retorna os mesmos campos de api_tokens_list mais token.

Permissão: member · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Revogar um token de API api_tokens_delete

Revoga um token de API imediatamente e de forma permanente. As requisições que o usam passam a falhar, e um token revogado não pode ser restaurado: crie um novo. O registro do token permanece na lista com status revoked (use api_tokens_list com include_revoked para vê-lo), e revogar um token já revogado não altera nada. Pegue o id (um uuid) em api_tokens_list. Você pode revogar seus próprios tokens, e revogar o de outra pessoa exige tokens.manage e alcance sobre todos os sites que o token cobre. Um token que faz esta chamada precisa de tokens.manage. Retorna o token revogado sem o segredo.

Permissão: member · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Listar tokens de API api_tokens_list

Lista os tokens de API de um espaço de trabalho, do mais recente ao mais antigo e paginados. Sem a permissão tokens.manage você vê apenas os seus próprios tokens, e com ela vê os de todos os membros. Tokens revogados e expirados ficam ocultos, a menos que include_revoked seja true. Cada item tem id (uuid, usado por api_tokens_delete), name, token_prefix (os primeiros caracteres, para reconhecer um token), owner (o e-mail do membro), permissions (nomes como analytics.read), site_ids (ids públicos de site pa_..., um array vazio significa todos os sites que o dono pode acessar), allowed_ips, oauth_client (o nome do app conectado quando o token foi emitido por OAuth, caso contrário null), status (active, expired ou revoked), expires_at, last_used_at, revoked_at e created_at. O segredo em si nunca é retornado aqui, e token é sempre null em uma lista. Ele só é mostrado uma vez por api_tokens_create.

Permissão: member

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

Traduções de depoimentos

POST /sites/:site_id/testimonials/translations.json Traduza depoimentos para os idiomas que um site oferece testimonial_translations_create

Chame testimonial_translations_estimate primeiro. Isto envia o corpo, o título e o destaque dos depoimentos escolhidos ao Google Cloud Translation (nunca um nome, um e-mail ou uma empresa), e o membro recebe um e-mail avisando que um assistente a iniciou. A tradução acontece em segundo plano, e uma linha que já está guardada nunca é buscada de novo. Ao atingir a cota mensal de caracteres, o restante é guardado como em espera e continua no dia 1. Responde com 402 plan_limit abaixo do Business e com 422 not_configured enquanto a tradução não estiver configurada.

Permissão: content.write

Exemplo
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 Remova uma tradução guardada testimonial_translations_delete

O depoimento volta a ser exibido nas suas próprias palavras onde quer que aquele idioma fosse usado. Os caracteres já gastos com ela não são devolvidos. Funciona em todos os planos. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Conte os caracteres que uma execução de tradução enviaria, antes de executar testimonial_translations_estimate

Indique os depoimentos de uma só forma: testimonial_ids, collection_id ou all_approved. A resposta traz os depoimentos, os caracteres que seriam enviados, os caracteres já guardados e o que resta do mês. Informa caracteres, nunca um preço. Nada é buscado.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/translations/estimate.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/translations.json Liste as traduções guardadas de um site testimonial_translations_list

Uma linha por depoimento e idioma, a alterada mais recentemente primeiro, 25 por página. Filtre por language, state, origin ou testimonial_id. Funciona em todos os planos, então as traduções feitas antes de um downgrade ainda podem ser lidas.

Permissão: analytics.read

Exemplo
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 Escreva ou corrija uma tradução à mão testimonial_translations_update

A linha é marcada como editada, e uma execução posterior não a sobrescreve, a menos que overwrite_edited seja enviado. Nada é buscado e nada conta na cota. O original nunca é alterado. Business e acima (402 plan_limit nos demais).

Permissão: content.write

Exemplo
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 '{…}'

Visualizações salvas de depoimentos

POST /sites/:site_id/testimonials/views.json Salve um filtro, texto de busca, ordenação e layout da caixa de entrada sob um nome testimonial_saved_views_create

Uma visualização pessoal precisa apenas de analytics.read. Uma compartilhada precisa de content.write e, caso contrário, é recusada com o código not_allowed. Uma visualização fixada fica na barra lateral com a sua contagem. Abra-a com testimonials_list e view_id.

Permissão: analytics.read

Exemplo
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 Exclua uma visualização salva. Nenhum depoimento é tocado testimonial_saved_views_destroy

Uma visualização salva é um filtro guardado, então apenas a visualização é removida. Um widget ou mural alimentado pela visualização mantém as suas configurações e não tem nada a exibir até receber outra fonte. Uma visualização pessoal é excluída pelo seu dono, e uma compartilhada exige content.write. Caso contrário, a chamada é recusada com o código not_allowed. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: analytics.read · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Liste as visualizações salvas de um site que quem chama pode abrir testimonial_saved_views_list

Retorna as visualizações do próprio usuário e todas as compartilhadas, as fixadas primeiro na sua ordem, depois por nome. scope é all (o padrão), mine ou shared. Passe o id de uma visualização como view_id para testimonials_list para ler os depoimentos que ela contém.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/views.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/views/:id.json Renomeie uma visualização salva, altere o que ela guarda, fixe-a ou compartilhe-a testimonial_saved_views_update

Só as entradas enviadas mudam: name, a busca guardada (q), filters, sort, layout, columns, position, pinned e shared. Uma visualização pessoal é alterada pelo seu dono. Alterar uma visualização compartilhada, e compartilhar ou deixar de compartilhar qualquer visualização, exige content.write.

Permissão: analytics.read

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

Webhooks

GET /workspaces/:workspace_id/webhooks/:webhook_id/deliveries.json Listar entregas de um webhook webhook_deliveries_list

Lista as entregas enviadas a um webhook (o caminho recebe webhook_id), das mais recentes para as mais antigas e paginadas. Cada uma tem id (whd_...), event, status (pending, succeeded para qualquer resposta 2xx, ou failed), status_code (null quando nenhuma resposta chegou), error (um motivo curto, como um timeout, caso contrário null), attempt (quantas tentativas até agora), duration_ms, payload (os dados JSON que foram enviados), response_body (os primeiros 2000 caracteres da resposta) e delivered_at e created_at. Filtre com status succeeded ou failed. Use-a para depurar um endpoint e webhook_deliveries_redeliver para enviar uma de novo.

Permissão: workspace.manage

Exemplo
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 Enviar uma entrega novamente webhook_deliveries_redeliver

Envia de novo o payload de uma entrega passada como uma nova entrega para o mesmo endpoint (id whd_..., de webhook_deliveries_list). Isso faz uma requisição HTTP à URL do cliente, então o receptor pode processar o mesmo evento duas vezes. Tem limite de frequência por espaço de trabalho (compartilhado com webhooks_test). Ela é enfileirada, então a resposta é uma nova entrega com status pending, leia webhook_deliveries_list para ver o resultado.

Permissão: workspace.manage

Exemplo
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 Adicionar um endpoint de webhook webhooks_create

Adiciona um endpoint que recebe JSON enviado por POST para os eventos do espaço de trabalho (o caminho recebe workspace_id). url deve ser um endereço https público, endereços privados e internos são recusados. events é uma lista obrigatória escolhida entre 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 e site_audit.completed. enabled assume por padrão true. Um segredo de assinatura (whsec_...) é gerado e retornado na resposta, e cada entrega traz um cabeçalho Privatus-Signature com um carimbo de data e hora e um HMAC-SHA256 do corpo feito com ele. As entregas que falham são repetidas com espera crescente e o endpoint é desativado após 20 falhas seguidas. Use webhooks_test para enviar um exemplo.

Permissão: workspace.manage

Exemplo
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 Excluir um webhook webhooks_delete

Exclui um endpoint de webhook e todo o seu log de entregas. Isso não pode ser desfeito e as novas tentativas pendentes param. Para pausá-lo em vez disso, use webhooks_update com enabled false. O id (wh_...) vem de webhooks_list. Retorna o webhook excluído.

Permissão: workspace.manage

Exemplo
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 Listar webhooks webhooks_list

Lista os endpoints de webhook de saída de um espaço de trabalho (o caminho recebe workspace_id), dos mais antigos para os mais recentes. Cada um tem id (wh_...), url, events (os nomes de eventos que recebe), enabled, status (active, failing após falhas recentes, ou disabled), secret (o segredo de assinatura, trate-o como sensível), consecutive_failures, last_success_at, last_failure_at e created_at. Exige a permissão workspace.manage. Serve para enviar eventos brutos ao seu próprio servidor. Para notificar pessoas, use notification_channels_list. Use webhook_deliveries_list para ver o que foi enviado.

Permissão: workspace.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /workspaces/:workspace_id/webhooks/:id.json Obter um webhook webhooks_get

Retorna um endpoint de webhook pelo id (wh_..., de webhooks_list), incluindo seu segredo de assinatura (whsec_...), que é usado para verificar o cabeçalho Privatus-Signature de cada entrega. Os campos são url, events, enabled, status (active, failing ou disabled), secret, consecutive_failures, last_success_at, last_failure_at e created_at. Exige a permissão workspace.manage.

Permissão: workspace.manage

Exemplo
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
POST /workspaces/:workspace_id/webhooks/:id/test.json Enviar uma entrega de teste webhooks_test

Enfileira uma entrega webhook.test com uma mensagem de exemplo para um endpoint, mesmo quando ele está desativado, o que faz uma requisição HTTP à URL do cliente. Tem limite de frequência por espaço de trabalho (compartilhado com webhook_deliveries_redeliver) e um teste não é repetido. A entrega é enviada em segundo plano, então a resposta retorna a entrega na fila com status pending. Leia webhook_deliveries_list um instante depois para ver status_code, error, duration_ms e response_body.

Permissão: workspace.manage

Exemplo
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 Atualizar um webhook (eventos, URL, ativado, trocar segredo) webhooks_update

Altera um webhook (id de webhooks_list). Apenas as entradas enviadas mudam. Enviar events substitui a lista inteira. Definir enabled true em um endpoint desativado zera sua contagem de falhas, que é como você reativa um que foi desativado após falhas repetidas. Defina rotate_secret true para gerar um novo segredo de assinatura, mostrado na resposta, e o antigo para de funcionar na hora, então o receptor deve ser atualizado. As regras de url são as mesmas de webhooks_create. Retorna o webhook.

Permissão: workspace.manage

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

Widgets

POST /sites/:site_id/testimonials/widgets/:id/copied.json Registre que a incorporação em HTML colado de um widget foi copiada testimonial_widgets_mark_copied

O HTML colado não se atualiza sozinho. Depois desta chamada, testimonial_widgets_embed informa quantas vezes o widget mudou desde então.

Permissão: content.write

Exemplo
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 Crie um widget testimonial_widgets_create

Uma chamada traz o widget inteiro: o layout e as suas opções, o que o alimenta, o que cada cartão mostra e a sua aparência. O que ficar de fora começa de um padrão, e uma configuração de estilo em branco herda o kit de marca. Siga com testimonial_widgets_embed para obter o código a colar.

Permissão: content.write

Exemplo
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 Mova um widget para a lixeira testimonial_widgets_trash

As suas incorporações não renderizam nada e não ocupam espaço até que seja restaurado. É excluído de vez após 30 dias. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.

Permissão: content.write · Somente HTTP (não é uma ferramenta MCP)

Exemplo
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 Copie um widget com todas as configurações testimonial_widgets_duplicate

Faz uma cópia com um novo id e o nome terminando em "copy". A cópia tem o seu próprio código de incorporação e não foi vista no ar em lugar nenhum. O original não é alterado.

Permissão: content.write

Exemplo
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 Obtenha o código de incorporação de um widget e o seu peso testimonial_widgets_embed

Retorna o trecho de script (recomendado), o HTML colado, o código do frame e o endereço dos dados públicos, com o tamanho medido do script carregador e deste widget. O HTML colado e o frame são null para o pop-up de canto.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/embed.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/widgets.json Liste os widgets de um site testimonial_widgets_list

Os widgets na lixeira não são listados. Cada widget traz as suas configurações, quantos depoimentos exibe agora, as suas visualizações e cliques dos últimos 30 dias e a primeira página em que foi visto no ar.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/widgets/:id/installs.json Liste as páginas em que um widget foi visto no ar testimonial_widgets_installs

Até 50 páginas, as mais recentes primeiro. Só o script e o frame podem ser detectados.

Permissão: analytics.read

Exemplo
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 Restaure um widget da lixeira testimonial_widgets_restore

Ele volta a todo lugar em que foi colado.

Permissão: content.write

Exemplo
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 Obtenha um widget com cada configuração, o que exibe e onde está no ar testimonial_widgets_get

Tudo o que o construtor guarda: o layout e as suas opções, o que alimenta o widget (uma coleção, uma visualização salva, tags ou uma lista escolhida a dedo), o que cada cartão mostra, o estilo, o idioma e a marcação de avaliações, com onde foi visto no ar e quantos depoimentos exibe agora. Um widget na lixeira responde com 404.

Permissão: analytics.read

Exemplo
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH /sites/:site_id/testimonials/widgets/:id.json Altere um widget testimonial_widgets_update

Só as entradas enviadas mudam. Uma mudança salva chega a todo site em que o widget está sem tocar no código deles, porque as suas cópias em cache são limpas.

Permissão: content.write

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