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.
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.
curl https://privatusanalytics.com/sites/pa_7Q2K9XH3AB/stats/aggregate.json?period=7d \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
{
"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
Tutte le operazioni
Invia Authorization: Bearer pat_…. Crea i token in Impostazioni del workspace, Token API. Guida all'autenticazione.
Aggiungi .json a qualsiasi percorso. Le risposte sono { "data": … } e gli errori sono { "error": { "code", "message" } }. Errori.
Invia una richiesta JSON-RPC in POST a https://privatusanalytics.com/mcp con lo stesso token. Ogni operazione qui sotto è uno strumento. Guida a MCP.
Scarica openapi.json · 527 operazioni
Abbonamenti
DELETE
/sites/:site_id/subscriptions/connections/:provider.json
Scollega un fornitore di pagamenti ed elimina la chiave e i dati degli abbonamenti
subscriptions_disconnect
Scollega un provider di pagamento (stripe, paddle, lemon_squeezy, chargebee o polar) da un sito ed elimina in modo permanente la chiave API memorizzata e ogni riga di abbonamento letta da esso. L'azione non può essere annullata e i numeri di MRR, churn e coorti perdono subito gli abbonamenti di quel provider. Fallisce se quel provider non è collegato. Restituisce la connessione rimossa. Richiede sites.manage.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/subscriptions/connections/:provider.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/subscriptions/sync.json
Leggi ora gli abbonamenti da un fornitore di pagamenti
subscriptions_sync
Mette in coda una sincronizzazione immediata degli abbonamenti da un provider collegato (stripe, paddle, lemon_squeezy, chargebee o polar) invece di aspettare la pianificazione regolare. Risponde subito (HTTP 202) con la connessione e la sincronizzazione prosegue in background. Interroga subscriptions_report oppure controlla last_synced_at e last_error sulla connessione. I report vengono messi in cache fino a 15 minuti. Fallisce se il provider non è collegato. Richiede sites.manage.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/subscriptions/sync.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/subscriptions/cohorts.json
Griglia di coorti: abbandono o fidelizzazione per mese del primo pagamento
subscriptions_cohorts
La griglia delle coorti di churn per gli abbonamenti del sito, una riga per mese del primo pagamento. months è 6, 12 (predefinito) o 24 coorti. plan tiene solo gli abbonamenti di un piano (vedi plans in subscriptions_report). metric è subscriptions (conteggio) o mrr (denaro). view è churn (la quota già terminata a quel punto, predefinito) o retention (la quota ancora attiva). Restituisce metric, view, months, plan (il filtro, o null), currency e cohorts, ciascuna con month (YYYY-MM), size (abbonamenti, oppure MRR in unità minori della valuta del sito) e cells, dove ogni cella ha offset (mesi dal mese della coorte, 0 è il primo), retained (stessa unità di size) e percent (da 0 a 100, null per una coorte vuota). Le prove che non hanno mai pagato non sono in nessuna coorte. Per MRR, ARR e churn principali usa subscriptions_report. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/subscriptions/cohorts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/subscriptions.json
Metriche degli abbonamenti: MRR, ARR, movimenti dell'MRR, abbandono, fidelizzazione dei ricavi, prove, piani e una previsione
subscriptions_report
Metriche degli abbonamenti per il sito, lette dall'account Stripe, Paddle, Lemon Squeezy, Chargebee o Polar collegato. months è 6, 12 (predefinito) o 24. plan tiene solo gli abbonamenti di un piano, con il nome come lo elenca plans. I campi di denaro sono interi in unità minori della valuta del sito (la currency della risposta), con le altre valute convertite al cambio di oggi. Il risultato ha currency, connected (false quando nessun provider è collegato), plan (il filtro del piano, o null), connections (una per provider collegato con provider, account_name, sandbox, status, last_error, last_synced_at e created_at, mai una chiave), skipped_currencies (valute senza tasso, il cui denaro non viene contato), totals, series, forecast e plans. totals ha mrr_minor, arr_minor, previous_mrr_minor (l'MRR di 30 giorni fa), active_subscriptions, arpa_minor (null senza abbonamenti), trialing, trial_conversion_rate (percentuale delle prove terminate negli ultimi 90 giorni e poi pagate, null quando nessuna è terminata) e, per gli ultimi 30 giorni, new_subscriptions, new_mrr_minor, expansion_mrr_minor, contraction_mrr_minor, churned_subscriptions, churned_mrr_minor, net_new_mrr_minor, quick_ratio (MRR nuovo più MRR di espansione per ogni unità di MRR perso più MRR di contrazione, null quando nulla è andato perso), subscription_churn_rate e mrr_churn_rate (percentuale, null senza base). Ha anche net_revenue_retention e gross_revenue_retention (percentuale di ciò che gli abbonamenti paganti 12 mesi fa pagavano allora e che pagano ora, con e senza upgrade, null senza base) e forecast_mrr_minor (l'MRR tra 12 mesi, null senza previsione). series ha una riga per mese (month come YYYY-MM) con mrr_minor, active_subscriptions, gli stessi campi di movimento e churn_rate. forecast ha una riga per ciascuno dei 12 mesi successivi (month, mrr_minor), proiettata dagli ultimi tre mesi completi, ed è vuota senza tre mesi completi che siano iniziati con un MRR. plans elenca fino a 50 piani per MRR con plan (null per gli abbonamenti a cui il provider non ha dato un nome di piano), mrr_minor, active_subscriptions, churned_subscriptions e subscription_churn_rate (ultimi 30 giorni), sempre per ogni piano. Un abbonamento conta dal suo primo pagamento. Upgrade e downgrade sono noti dalla prima sincronizzazione in poi, e prima di allora i mesi passati usano il prezzo che un abbonamento aveva quando è stato letto per la prima volta. Per la fidelizzazione per mese del primo pagamento usa subscriptions_cohorts. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/subscriptions.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Account
GET
/account.json
Ottieni il tuo profilo e le tue preferenze
account_get
Restituisce il profilo e le preferenze del membro connesso. Usalo per leggere le impostazioni prima di modificarle con account_update. Riguarda la persona, non un workspace. Il piano del workspace e le fatture si trovano in billing_get. I campi sono email, unconfirmed_email (impostato mentre un cambio di email attende conferma, altrimenti null), name (può essere null), theme (system, light o dark), default_landing (sites o last_site), locale (codice della lingua dell'app per gli utenti connessi), timezone (nome IANA, può essere null), shortcuts_enabled, reduce_motion, product_emails, site_audit_emails, marketing_emails, newsletter (tutti booleani, dove true significa iscritto), two_factor (booleano), passkeys (numero di passkey registrate) e created_at (ISO 8601). Una sessione aperta solo tramite un identity provider del workspace vede soltanto email e le impostazioni di visualizzazione.
Permesso: member
curl https://privatusanalytics.com/account.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/account.json
Aggiorna il tuo profilo e le tue preferenze
account_update
Modifica il profilo, le preferenze di visualizzazione e le iscrizioni email del membro connesso. Cambia solo ciò che invii, tutto il resto resta com'è. Cambiare email non ha effetto subito. Una email di conferma viene inviata al nuovo indirizzo (con limite di frequenza) e unconfirmed_email mostra l'indirizzo in sospeso finché non viene confermato. I token API non possono cambiare l'indirizzo email e non possono riattivare marketing_emails dopo una disiscrizione: entrambe le azioni richiedono un browser con accesso effettuato. Disattivare marketing_emails è consentito. Le sessioni aperte da un identity provider del workspace possono modificare solo le impostazioni di visualizzazione (theme, default_landing, locale, timezone, shortcuts_enabled, reduce_motion). Restituisce l'account aggiornato con la stessa struttura di account_get. Non elimina l'account e non può modificare le impostazioni del workspace.
Permesso: member
curl -X PATCH https://privatusanalytics.com/account.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Aiuto e feedback
POST
/help.json
Invia una domanda o un feedback al team di Privatus Analytics
support_message_send
Il messaggio viene inviato via email al team insieme ai dettagli del tuo account, del workspace e del piano. La risposta e una ricevuta arrivano all'email del tuo account. Massimo 10 messaggi al giorno.
Permesso: member
curl -X POST https://privatusanalytics.com/help.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Analisi delle testimonianze
GET
/sites/:site_id/testimonials/analytics/breakdown.json
Suddividi una metrica delle testimonianze per modulo, richiesta, widget, wall, testimonianza, canale, pagina, paese o fonte
testimonial_stats_breakdown
Restituisce righe, dalla più grande, ognuna con key, label, value e share (una percentuale del totale), oppure numerator e denominator per una percentuale. Una riga di un record (modulo, richiesta, widget, wall, testimonianza) contiene il suo id. Ogni dimensione accetta solo alcune metriche: form e channel accettano le metriche dei moduli, request quelle delle richieste, widget e wall le proprie visualizzazioni, clic, percentuale di clic e video_plays, testimonial accetta testimonial_views e video_plays, page e country accettano le metriche di visualizzazione e clic, e source accetta new_testimonials. Una coppia che non va bene risponde con 422 e indica le metriche che vanno bene.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics/breakdown.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/analytics/export.json
Metti in coda un file di una sezione delle analisi delle testimonianze
testimonial_stats_export
Crea un'esportazione di tipo testimonial_stats per il periodo indicato e la restituisce in coda. Interroga exports_get finché status è complete, poi exports_download. section sceglie le righe: days (una riga per giorno, settimana o mese con ogni metrica), forms, channels, requests, widgets, walls, pages, testimonials, sources o countries. Il file viene conservato per 7 giorni. Risponde con 422 in_progress quando ci sono già troppe esportazioni in coda.
Permesso: analytics.export
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/analytics/export.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/analytics.json
Leggi in una chiamata le analisi delle testimonianze di un sito
testimonial_stats_overview
Restituisce tutto ciò che la scheda Analisi sotto Testimonianze mostra per un periodo: cards (form_views, submissions, completion_rate, answer_rate, widget_views, wall_views, ognuna con previous e change quando compare è impostato), chart (una metrica nel tempo), una riga per modulo, richiesta, widget e wall, channels (come sono stati aperti i moduli), pages (dove sono stati visti widget e wall), top_testimonials, new_testimonials (per fonte e per stato attuale) e countries. Le percentuali vanno da 0 a 100 e sono null quando non c'è nulla da dividere. blank è true finché il sito non ha mai contato nulla, e recorded elenca le metriche che ha mai contato. Questi sono totali giornalieri della funzione Testimonianze, non analisi web: usa stats_overview per visitatori e visualizzazioni di pagina.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/analytics/timeseries.json
Leggi una metrica delle testimonianze per giorno, settimana o mese
testimonial_stats_timeseries
Restituisce punti con date, to, value e, quando compare è impostato, previous e previous_date, più total, previous_total e change. Una percentuale (completion_rate, answer_rate, widget_click_rate, wall_click_rate) viene calcolata dai totali di ogni intervallo ed è null per un intervallo senza nulla da dividere. new_testimonials viene contato dalle testimonianze stesse in base al giorno in cui ciascuna è stata aggiunta.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics/timeseries.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Analytics
GET
/sites/:site_id/clicks.json
Mappa dei clic: gli elementi più cliccati del sito, oppure di una pagina con la quota di visite che ha cliccato ogni elemento
clicks_list
I clic per elemento, dal modulo clicks del tracker. Un elemento è un breve selettore CSS (tag, id e fino a due classi, al massimo quattro livelli), oppure [data-privatus-click="name"] quando il sito gli ha dato un nome. Passa path (che inizia con una barra, come è memorizzato) per una sola pagina: allora gli elementi sono {selector, clicks, visits, visit_share} e page_visits è il numero di visite che hanno visto la pagina, mentre visit_share è la percentuale di esse (da 0 a 100) che ha cliccato l'elemento. Senza path, gli elementi sono {path, selector, clicks, visits} su tutto il sito. visits conta le visite che hanno cliccato almeno una volta. Restituisce period, path, page_visits ed elements, dal più cliccato. Non vengono mai raccolti il testo degli elementi, le coordinate o i movimenti del mouse. Usa pages_detail per il resto di una pagina.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/clicks.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/overview.json
Panoramica del sito: metriche, serie del grafico, pannelli principali, visitatori live e note
stats_overview
Una sola chiamata che restituisce tutto ciò che mostra la pagina di panoramica del sito: usala per rispondere a una domanda generica, ad esempio come sta andando un sito, invece di chiamare più strumenti. Restituisce period, metrics (visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue), interval, series (una voce per intervallo di tempo), panels, notes e live_visitors. Con compare aggiunge comparison_period, comparison, change e comparison_series, come in stats_aggregate e stats_timeseries. Le unità coincidono con quelle di quegli strumenti: bounce_rate è una percentuale da 0 a 100, visit_duration è la mediana dei millisecondi di coinvolgimento, revenue è un intero in unità minori (centesimi). panels è un oggetto con chiavi i nomi delle dimensioni, ciascuno con le prime 10 righe e la loro quota, nella stessa struttura di riga di stats_breakdown per quella dimensione. Per impostazione predefinita restituisce channel, referrer, page, entry_page, country, device, browser, os, utm_campaign, event e goal. Invia panels per scegliere altre dimensioni (qualsiasi nome di dimensione tranne le chiavi prop). notes elenca le annotazioni nell'intervallo come {id, date, end_date, title, url, color}. live_visitors conta i visitatori degli ultimi 5 minuti. Per più di 10 righe di una dimensione usa stats_breakdown e per un solo numero usa stats_aggregate. Accetta gli input condivisi period, compare, filters e segment.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/overview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/experiments/external.json
Report dell'esperimento: tasso di conversione per variante, miglioramento rispetto al controllo e significatività (z-test a due proporzioni)
experiments_report
Riporta un test A/B usando i dati degli eventi. Le visite vengono assegnate alla variante trovata in una proprietà dell'evento (il primo valore visto nella visita, ad esempio la proprietà variant con valori control e b) e una conversione è una visita che ha completato un obiettivo. Gli input obbligatori sono property (chiave in minuscolo, fino a 64 caratteri) e goal_id (un obiettivo attivo, da goals_list). Restituisce period, property, goal {id, name}, control, confidence (0.95) e variants. Ogni variante ha visits, conversions, conversion_rate (percentuale, da 0 a 100), control (true per la base di confronto), uplift (variazione percentuale del tasso di conversione rispetto al controllo, null per il controllo o quando il tasso del controllo è 0), z, p_value e significant (true quando p_value è inferiore a 0.05, con un test z su due proporzioni). Il controllo è la variante che passi in control, altrimenti quella chiamata control, altrimenti la variante con più visite. Al massimo 20 varianti, dalle più frequentate. Assicurati prima che il sito invii la variante come proprietà dell'evento. Accetta gli input condivisi period e filters. Per un semplice tasso di conversione di un obiettivo usa goals_get. Richiede il piano Business o Enterprise (altrimenti 402 plan_limit).
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/external.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/insights.json
Cambiamenti rilevanti rispetto al periodo precedente, in linguaggio naturale (maggiori variazioni, cambiamenti nella conversione degli obiettivi)
insights_get
Variazioni rilevanti di un sito in linguaggio semplice, confrontate con il periodo precedente della stessa durata. Restituisce period, comparison_period e insights. Il periodo copre giorni interi fino a ieri, scelto con period (7d, 14d, 28d o 30d, predefinito 7d). Ogni insight ha dimension (total, channel, page, country o goal), metric, value, previous, current, change e sentence. change è una percentuale per i conteggi e un numero di punti percentuali per il tasso di conversione degli obiettivi, e sentence è una frase in inglese pronta da leggere. Include il totale di visitatori e visualizzazioni di pagina, le due variazioni maggiori per dimensione (variazioni del 20 percento o più con almeno 10 visite o visualizzazioni) e gli obiettivi il cui tasso di conversione è cambiato di mezzo punto o più. I più importanti per primi, limitati da limit (predefinito 8, massimo 20). I risultati vengono conservati per la giornata. Per cifre esatte usa stats_aggregate e stats_breakdown, e usa questo per scoprire che cosa è cambiato.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/insights.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/journeys.json
Percorsi: i primi percorsi di 3 passaggi dopo una pagina (o qualsiasi ingresso), oppure prima di una pagina o di un obiettivo
journeys_explore
Esplora i percorsi di pagina in tre passaggi più comuni all'interno delle visite. In modalità forward (predefinita) mostra i percorsi successivi a una pagina di partenza indicata in path, o successivi a qualsiasi ingresso quando path è vuoto. In modalità reverse mostra i percorsi che portano a una pagina finale (path) o a un obiettivo (goal_id, che passa automaticamente a reverse). reverse richiede path o goal_id. path deve iniziare con una barra. Restituisce period, mode, path, goal, sampled, sample_rate (percentuale), total_visits e il grafo dei percorsi con nodi e collegamenti per passaggio, limitato a limit pagine per passaggio (da 2 a 12, predefinito 6). Oltre 100.000 visite i dati vengono campionati. I filtri sulle pagine vengono ignorati perché accorcerebbero i percorsi. I percorsi sono costruiti per visita, perché non viene conservato alcun id del visitatore. Accetta gli input condivisi period, filters e segment. Per le pagine adiacenti a una pagina usa pages_detail e per la conversione tra i passaggi usa funnels_get.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/journeys.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/pages/detail.json
Dettaglio pagina: metriche, pagine precedenti e successive, sorgenti, Web Vitals, eventi e mappa dei clic per un percorso
pages_detail
Una pagina nel dettaglio. Passa path (deve iniziare con una barra, ad esempio /pricing), esattamente come è memorizzato (senza query string né host). Restituisce period, path, url, metrics, previous_pages, next_pages, sources, vitals, events, clicks, goals e notes. metrics contiene visitors, visits, pageviews, entrances, exits, entry_rate, exit_rate e bounce_rate (percentuali, da 0 a 100), time_on_page (mediana in millisecondi) e scroll_depth (mediana in percentuale), questi ultimi due null se mancano dati di coinvolgimento. previous_pages e next_pages sono le pagine viste prima e dopo nella stessa visita, come {value, count, share}, con (entrance) ed (exit) come valori speciali. sources contiene i canali e i referrer principali delle visite entrate da questa pagina. vitals contiene i valori p75 per ogni Web Vital con le relative valutazioni. events sono gli eventi personalizzati generati nella pagina, clicks sono i selettori degli elementi più cliccati, goals sono gli obiettivi completati su di essa e notes sono le annotazioni che la menzionano. Usa stats_breakdown con dimension page per classificare le pagine e referrers_detail per un sito di provenienza.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/pages/detail.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/referrers.json
Referrer: i siti che rimandano a questo sito, con visitatori, coinvolgimento, tipo di traffico e numero di pagine con link
referrers_list
Classifica i siti esterni che hanno inviato visitatori, con ciò che ciascuno ha portato. Le visite dirette (senza referrer) sono escluse. Restituisce period, summary, channels, page, limit, has_more e rows. summary contiene visitors, visits, pageviews, bounce_rate (percentuale), visit_duration (mediana dei millisecondi di coinvolgimento), revenue (unità minori, centesimi), sites (numero di siti di provenienza) e share (percentuale di tutte le visite arrivate da referrer). channels mostra i tipi di traffico come {value, visitors, visits}. Ogni riga ha value (l'host del referrer), visitors, visits, pageviews, bounce_rate, visit_duration, revenue, channel (il suo canale abituale), linking_pages (quante pagine diverse di quel sito rimandano qui) e share (percentuale dei visitatori provenienti da referrer). Ordina con sort (visitors, visits, pageviews o revenue, predefinito visitors), restringi con search (testo contenuto nell'host) e scorri con page e limit (massimo 100) finché has_more è true. Usa referrers_detail per un singolo sito. Accetta gli input condivisi period, compare, filters e segment.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/referrers.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/referrers/detail.json
Dettaglio del referrer: metriche e andamento di un sito di provenienza, le sue pagine con link, le pagine di destinazione, i paesi, i dispositivi, le campagne e le conversioni
referrers_detail
Un sito di provenienza nel dettaglio. Passa referrer come host senza www e senza percorso (ad esempio news.ycombinator.com), lo stesso valore di referrers_list. Restituisce period, referrer, url, channel (il suo canale più comune), metrics, share (percentuale di tutte le visite), interval, series (il traffico nel tempo), linking_pages, landing_pages, channels, countries, devices, campaigns, goals e, con compare, comparison, change e comparison_series. metrics e series usano gli stessi campi e le stesse unità di stats_aggregate e stats_timeseries. linking_pages sono le pagine del referrer che hanno inviato visitatori, come righe con path, url, visitors e share (le query string non vengono mai memorizzate). landing_pages sono le pagine in cui quei visitatori sono entrati. channels, countries, devices e campaigns sono i valori principali con le relative metriche, e goals elenca gli obiettivi che hanno completato con conversions e conversion_rate. Usa referrers_list per classificare i siti di provenienza e stats_breakdown con dimension referrer per un semplice elenco.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/referrers/detail.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/stats/aggregate.json
Metriche principali per un periodo (con confronto)
stats_aggregate
I numeri principali di un periodo, come un unico oggetto. Restituisce period {from, to} e metrics {visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue}. Con compare restituisce anche comparison_period, comparison (le stesse metriche per l'altro intervallo) e change (variazione percentuale per metrica, null quando il valore precedente era 0). Unità: bounce_rate è una percentuale da 0 a 100 (10.9 significa 10,9%). visit_duration è il tempo di coinvolgimento mediano di una visita in millisecondi. revenue è un intero in unità minori (centesimi) della valuta del sito. views_per_visit è un decimale. I visitatori sono contati per giorno perché non viene conservato alcun id persistente del visitatore, quindi chi torna in un altro giorno viene contato di nuovo. Usalo per i totali e la variazione tra periodi. Usa stats_timeseries per un grafico nel tempo, stats_breakdown per i valori principali di una dimensione e stats_overview per tutto in una sola chiamata. Restringi ciascuno con filters (vedi filters per i nomi delle dimensioni e gli operatori).
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/stats/aggregate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/breakdown/:dimension.json
Valori principali di una dimensione (pagine, sorgenti, paesi…)
stats_breakdown
I valori principali di una dimensione con le loro metriche, i più importanti per primi, paginati. La dimensione è l'ultima parte del percorso e deve essere un nome esatto dalla sua descrizione (ad esempio country, page, channel, utm_campaign, prop:plan). Restituisce period, dimension, label, page, limit, has_more e rows. Richiedi la pagina successiva finché has_more è true. Ogni riga ha value e share (percentuale del totale del periodo). Gli altri campi di una riga dipendono dalla dimensione. Le dimensioni delle visite (channel, referrer, referrer_url, utm_*, ref, hostname, country, language, device, browser, browser_version, os, os_version, screen, entry_page, exit_page, interaction) restituiscono visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration e revenue. page restituisce pageviews, visits, time_on_page (millisecondi) e scroll_depth (percentuale), senza visitors. event e prop:<key> restituiscono completions, visits, revenue e conversion_rate. goal restituisce goal_id, completions, conversions, conversion_rate e revenue. Unità: bounce_rate e conversion_rate sono percentuali (da 0 a 100), le durate sono in millisecondi, revenue è in unità minori (centesimi). Una dimensione errata restituisce un 422 che elenca i nomi validi. Usa search per cercare un valore in tutte le righe e filters per restringere prima i dati (ad esempio le pagine visitate da un paese). Per una singola pagina o un singolo referrer nel dettaglio usa pages_detail o referrers_detail. Le dimensioni interaction e bot_score richiedono il piano Business o Enterprise: come ripartizione rispondono con 402 plan_limit sugli altri piani e un filtro su una di esse viene escluso.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/breakdown/:dimension.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/stats/timeseries.json
Metriche per intervallo di tempo per i grafici
stats_timeseries
Metriche per intervallo di tempo, per grafici e tendenze. Restituisce period, interval (l'intervallo effettivamente usato) e series, un elenco di {date, visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue}, una voce per intervallo con date come inizio dell'intervallo in formato ISO 8601. Con compare restituisce anche comparison_series per l'altro intervallo, intervallo per intervallo. Le unità sono le stesse di stats_aggregate: bounce_rate è una percentuale (da 0 a 100), visit_duration è la mediana dei millisecondi di coinvolgimento, revenue è in unità minori (centesimi). interval è auto per impostazione predefinita e sceglie minuto, ora, giorno, settimana o mese in base all'intervallo. Impostalo per forzare una dimensione. Usa stats_aggregate per un singolo totale e stats_breakdown per suddividere per una dimensione come country o page.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/stats/timeseries.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
App mobile
GET
/workspaces/:workspace_id/app.json
Ottieni ciò che serve all'app mobile per aprire un workspace
mobile_bootstraps_get
Restituisce, per un workspace (il percorso richiede workspace_id), il ruolo e i permessi di chi chiama, features (quali report con accesso limitato include il piano: traffic_quality, bot_detection, external_experiments, campaign_costs, status_pages, traffic_rules, experiment_advanced (le impostazioni avanzate di un esperimento) e survey_ai_themes (i temi per le risposte scritte di un sondaggio) come true o false, e retention_months come numero di mesi o null se non c'è limite), sites_count (i siti che chi chiama può aprire) e min_app_version (la versione più vecchia dell'app mobile che l'API serve ancora). L'app mobile la legge una sola volta quando apre un workspace, così può mostrare un report non incluso nel piano come non disponibile invece di richiederlo. Richiede analytics.read.
Permesso: analytics.read
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/workspaces/:workspace_id/app.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE
/account/device.json
Interrompi le notifiche push all'app mobile
mobile_devices_delete
Rimuove la registrazione push dell'accesso all'app mobile che sta chiamando, così il dispositivo non riceve più push. L'accesso rimane e l'app può registrarsi di nuovo. Anche il logout (POST /oauth/revoke con il refresh token) la rimuove. Solo un token dell'app mobile può chiamarla.
Permesso: member
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/account/device.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/account/device.json
Ottieni la registrazione push dell'app mobile
mobile_devices_get
Restituisce il dispositivo dell'accesso all'app mobile che sta chiamando: registered (false finché l'app non ha registrato un token push), platform, locale, timezone, app_version, kinds (ogni tipo di push esistente), muted_kinds e muted_site_ids (ciò che la persona ha disattivato). Solo un token dell'app mobile può chiamarla.
Permesso: member
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/account/device.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/account/device.json
Registra l'app mobile per le notifiche push
mobile_devices_update
Registra il dispositivo dell'accesso all'app mobile che sta chiamando per le notifiche push, oppure cambia ciò che riceve. Cambiano solo i dati che invii. La prima chiamata richiede platform e push_token. Un dispositivo riceve una push per uptime (un controllo è andato offline o è tornato online), alert (un alert è scattato o si è risolto), site_audit (un audit del sito è terminato), experiment (un esperimento ha un risultato o è terminato) e usage (la quota mensile è quasi o del tutto esaurita), per ogni sito che il suo membro può aprire, su ogni piano. muted_kinds e muted_site_ids disattivano tipi e siti, e ciascuno sostituisce l'intera lista. Registrare un token push che un altro accesso dell'app possiede lo sposta su questo. Solo un token dell'app mobile può chiamarla. È una delle due scritture che un token di questo tipo può eseguire.
Permesso: member
· Solo HTTP (non è uno strumento MCP)
curl -X PATCH https://privatusanalytics.com/account/device.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Assistente
POST
/sites/:site_id/ask.json
Fai una domanda in una nuova conversazione (conta ai fini del limite mensile di domande IA)
assistant_ask
Avvia una nuova conversazione Ask su un sito e risponde alla sua prima domanda usando le analytics di quel sito. Usalo per una domanda in linguaggio semplice su un sito. Usa assistant_ask_followup per continuare una conversazione esistente e gli strumenti stats quando conosci già la query esatta. La risposta è prodotta da un modello di IA che esegue da solo query analytics in sola lettura, quindi la chiamata può richiedere molti secondi. Conta come una domanda IA sulla quota mensile del workspace (5 su Free, 20 su Pro, 100 su Business) e fallisce con un errore di limite quando la quota è esaurita. La domanda può avere al massimo 2.000 caratteri. Le conversazioni sono private per il membro che le ha avviate e vengono eliminate 30 giorni dopo l'ultimo messaggio. Restituisce la conversazione (id, site_id, title ricavato dalla domanda, created_at, updated_at, expires_at) con un array messages. Ogni messaggio ha role (user o assistant), content (il testo della risposta), queries (le query analytics esatte eseguite dall'assistente), chart (definizione di grafico, può essere null), goal_draft (obiettivo suggerito, può essere null), i conteggi dei token e created_at. Se la risposta fallisce, la conversazione viene rimossa e nessuna domanda viene conteggiata. Richiede analytics.read.
Permesso: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/ask.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/ask/:id.json
Elimina una conversazione con l'assistente e i suoi messaggi
assistant_conversations_delete
Elimina in modo permanente una conversazione Ask e tutti i suoi messaggi, subito. L'azione non può essere annullata. Ottieni l'id della conversazione da assistant_conversations_list. Solo il membro che ha avviato una conversazione può vederla ed eliminarla. Richiede analytics.read e un site_id. Restituisce il riepilogo della conversazione eliminata (id, site_id, title, timestamp). Non rimborsa le domande IA già conteggiate per il mese.
Permesso: analytics.read
curl -X DELETE https://privatusanalytics.com/sites/:site_id/ask/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/ask.json
Elenca le tue conversazioni con l'assistente per un sito
assistant_conversations_list
Elenca le conversazioni Ask del membro connesso su un sito, dalla più recentemente aggiornata. Le conversazioni degli altri membri non vengono mai mostrate. Usalo per trovare l'id di una conversazione per assistant_conversations_get, assistant_ask_followup o assistant_conversations_delete. Ogni elemento ha id, site_id, title (la prima domanda, troncata a 80 caratteri), created_at, updated_at e expires_at ma nessun messaggio. Paginato con page e per_page (massimo 100). Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/ask.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/ask/:id.json
Una conversazione con l'assistente: domande, risposte, le query alla base e i grafici
assistant_conversations_get
Restituisce una conversazione Ask con la sua cronologia completa dei messaggi. Ottieni l'id della conversazione da assistant_conversations_list o dal risultato di assistant_ask. I campi sono id, site_id, title, created_at, updated_at, expires_at (30 giorni dopo l'ultimo messaggio, poi la conversazione viene eliminata) e messages. Ogni messaggio ha role (user o assistant), content, queries (le query analytics eseguite dall'assistente), chart (può essere null), goal_draft (può essere null) e input_tokens e output_tokens (interi, possono essere null). Solo il membro che ha avviato la conversazione può leggerla. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/ask/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/ask/:ask_conversation_id/messages.json
Fai una domanda di approfondimento in una conversazione (conta ai fini del limite mensile di domande IA). Restituisce la risposta.
assistant_ask_followup
Pone una domanda di approfondimento all'interno di una conversazione Ask esistente, così l'assistente mantiene come contesto le domande e le risposte precedenti. Usa invece assistant_ask per avviare una nuova conversazione. Ottieni conversation_id da assistant_conversations_list. La chiamata può richiedere molti secondi perché l'assistente esegue query analytics in sola lettura. Ogni domanda conta sulla quota mensile di domande IA del workspace (5 su Free, 20 su Pro, 100 su Business) e fallisce con un errore di limite quando è esaurita. La domanda può avere al massimo 2.000 caratteri. Restituisce solo il nuovo messaggio dell'assistente (non l'intera conversazione) con id, role, content (la risposta), queries (le query esatte eseguite), chart (può essere null), goal_draft (può essere null), input_tokens, output_tokens e created_at. Richiede analytics.read e funziona solo sulle tue conversazioni.
Permesso: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/ask/:ask_conversation_id/messages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Audit del sito
GET
/sites/:site_id/audit/issues.json
Elenca i problemi di un audit del sito, una riga per controllo
site_audit_issues_list
Elenca i problemi di un audit, una riga per ogni controllo che ha segnalato qualcosa, dal peggiore (errori, poi avvisi, poi note, ciascuno per URL interessati). Ogni riga ha check_key (da usare con site_audit_issues_get e gli strumenti di silenziamento), title, category, severity (error, warning o notice), affected (URL segnalati, esclusi quelli silenziati), added e fixed (variazioni rispetto all'audit precedente) e pageviews (visite alle pagine interessate nei 30 giorni prima dell'audit). Per impostazione predefinita usa l'ultimo audit terminato, oppure passa audit_id. Filtra con severity, category e new_only (solo i controlli con URL nuovi rispetto all'audit precedente). Paginato con page e per_page (massimo 100, predefinito 50). Per vedere quali URL ha segnalato un controllo usa site_audit_issues_get. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/issues.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/audit/issues/:check_key.json
Ottieni un controllo dell'audit del sito: perché conta, come correggerlo e gli URL interessati
site_audit_issues_get
Dettagli di un controllo in un audit, tramite check_key da site_audit_issues_list (ad esempio title_missing). Restituisce audit_id, issue (la stessa riga dell'elenco), why (che cosa significa il problema), fix (come risolverlo), muted (true se l'intero controllo è silenziato per il sito) e urls, gli URL segnalati con page_id (da usare con site_audit_pages_get), url, pageviews, detail (fatti aggiuntivi sul riscontro, può essere vuoto), is_new e muted. sort è pageviews (predefinito, i più frequentati per primi) o url. Paginato con page e per_page (massimo 100, predefinito 25). Per impostazione predefinita usa l'ultimo audit terminato, oppure passa audit_id. Gli URL silenziati vengono ordinati per ultimi. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/issues/:check_key.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/audit/mutes/bulk.json
Silenzia un controllo dell’audit del sito su più URL, o più controlli interi, in una sola chiamata
site_audit_mutes_bulk
Silenzia molti riscontri in una sola richiesta, tutto o niente. Usa una delle due forme. Invia check_key più urls (fino a 100 URL) per silenziare un controllo su più pagine, oppure invia check_keys (fino a 100) per silenziare interi controlli per il sito. Non mescolare urls con check_keys. Un controllo sconosciuto o un URL non valido fa fallire l'intera richiesta e non silenzia nulla. Gli elementi già silenziati vengono restituiti così come sono. I conteggi e il punteggio dell'ultimo audit vengono aggiornati una sola volta alla fine. Restituisce l'elenco dei silenziamenti. Annulla ciascuno con site_audit_mutes_delete. Richiede content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/audit/mutes/bulk.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/audit/mutes.json
Silenzia un controllo dell'audit del sito, per l'intero sito o per un solo URL
site_audit_mutes_create
Silenzia un controllo per il sito, oppure per un solo URL. check_key proviene da site_audit_issues_list. Ometti url per silenziare il controllo ovunque, oppure passa un URL completo (come https://example.com/old) per silenziarlo solo su quella pagina, dove l'URL viene normalizzato come fa il crawler. I conteggi e il punteggio dell'ultimo audit si aggiornano subito. Silenziare due volte la stessa cosa restituisce il silenziamento esistente invece di un errore. Per silenziarne molti insieme usa site_audit_mutes_bulk e per annullare usa site_audit_mutes_delete. Richiede content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/audit/mutes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/audit/mutes/:id.json
Riattiva un controllo dell'audit del sito
site_audit_mutes_delete
Rimuove un silenziamento, trovato tramite il suo id da site_audit_mutes_list, così il controllo o l'URL conta di nuovo nel punteggio dell'audit. L'ultimo audit viene ricalcolato subito. Rimuove solo il silenziamento e non elimina i dati dell'audit. Restituisce il silenziamento rimosso. Richiede content.write.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/audit/mutes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/audit/mutes.json
Elenca i controlli che un sito ha silenziato
site_audit_mutes_list
Elenca i controlli silenziati per il sito, dal più recente. Un silenziamento nasconde un controllo per l'intero sito (url è null) o per un solo URL, quindi quei riscontri restano fuori dai conteggi e dal punteggio anche se gli audit continuano a registrarli. Ogni riga ha id (un id di silenziamento, da usare con site_audit_mutes_delete), site_id, check_key, title, url (null per un silenziamento dell'intero sito), muted_by (il nome del membro, null se sconosciuto) e created_at. Filtra con check_key. Paginato con page e per_page (massimo 100). Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/mutes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/audit/notifications.json
Attiva o disattiva l'email di riepilogo dell'audit per un sito
site_audit_notifications_update
Attiva o disattiva l'email di riepilogo settimanale dell'audit per il membro che chiama su un sito. È una preferenza personale e non riguarda gli altri membri. enabled true invia al membro il riepilogo dopo gli audit di questo sito, false lo interrompe. Restituisce site_id, enabled e all_sites_enabled (false quando il membro ha disattivato le email di audit per ogni sito nelle impostazioni del suo account, cosa che prevale su questa). Qualsiasi membro con analytics.read può cambiare la propria impostazione.
Permesso: analytics.read
curl -X PATCH https://privatusanalytics.com/sites/:site_id/audit/notifications.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/audit/pages.json
Elenca e filtra le pagine di un audit del sito
site_audit_pages_list
L'esploratore delle pagine, che elenca gli URL di un audit (l'ultimo terminato per impostazione predefinita, oppure audit_id). kind è page (predefinito, documenti HTML), resource (immagini, script, fogli di stile) o external (link ad altri siti). Filtra per state (queued, fetched, skipped, blocked, failed), status_class (2xx, 3xx, 4xx o 5xx), indexable, in_sitemap, has_issues (contando solo i problemi non silenziati), depth (clic dalla pagina iniziale) e query (testo nell'URL o nel titolo). sort è pageviews (predefinito), inlinks, depth, response_ms (le più lente per prime) o word_count (le più brevi per prime). Ogni riga ha id (un UUID per 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 (conteggio). Paginato con page e per_page (massimo 100). Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/pages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/audit/pages/:id.json
Ottieni una pagina analizzata: metadati, problemi, link in entrata e in uscita
site_audit_pages_get
Tutto ciò che l'audit ha memorizzato su un URL, tramite id (un UUID da site_audit_pages_list o dagli urls di site_audit_issues_get). Restituisce 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, tag social, images_count, images_missing_alt, conteggi dei link, link_score, in_sitemap, has_tracker, pageviews e search_clicks, fetched_at e altro), redirect_target_id (la pagina verso cui reindirizza all'interno dell'audit, oppure null), issues (check_key, title, category, severity, detail, is_new, muted) e inlinks e outlinks (fino a 100 ciascuno con page_id, url, status, kind, anchor, nofollow, count). Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/pages/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/audit/settings.json
Ottieni le impostazioni di audit di un sito
site_audit_settings_get
Restituisce le impostazioni di audit del sito. I campi sono site_id, enabled (audit programmati attivi o no, attivi per impostazione predefinita), include_subdomains, check_external_links, exclude_paths, ignored_params, extra_start_urls, next_run_at (quando è previsto il prossimo audit programmato, null se nessuno), page_limit (pagine per audit nel piano attuale, null quando illimitate) e interval_days (giorni tra gli audit programmati nel piano). Un sito che non ha mai cambiato le impostazioni restituisce i valori predefiniti. Cambiale con site_audit_settings_update. Richiede sites.manage.
Permesso: sites.manage
curl https://privatusanalytics.com/sites/:site_id/audit/settings.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/audit/settings.json
Modifica le impostazioni di audit di un sito
site_audit_settings_update
Cambia il modo in cui il sito viene sottoposto ad audit. Cambia solo ciò che invii. enabled attiva o disattiva gli audit programmati e manuali (attivarlo programma il prossimo audit a un intervallo del piano di distanza). include_subdomains e check_external_links sono booleani. Le tre liste sostituiscono quella memorizzata, non vengono unite, quindi invia l'elenco completo. exclude_paths sono prefissi di percorso che il crawler salta e ciascuno deve iniziare con una barra (fino a 50). ignored_params sono nomi di parametri di query che non creano mai una pagina diversa, come utm_source o sessionid (fino a 50, lettere, cifre, punto, trattino, trattino basso). extra_start_urls sono URL http o https completi da scansionare oltre alla home page (fino a 20). Una lista può anche essere inviata come testo con una voce per riga. Restituisce le impostazioni aggiornate. Richiede sites.manage.
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/audit/settings.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/audit/unsubscribe/:token.json
Annulla l'iscrizione alle email di riepilogo dell'audit con il token di un'email
site_audit_unsubscribes_create
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/audit/unsubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/audit/cancel.json
Annulla l'audit del sito in corso
site_audit_cancel
Ferma l'audit in esecuzione o in coda per il sito. L'audit viene contrassegnato come canceled e nulla della scansione incompleta viene riportato. Un audit annullato non consuma la quota mensile del piano Free. Fallisce con un errore di validazione se nessun audit è attivo. Restituisce l'audit annullato. Richiede content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/audit/cancel.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/audit/compare.json
Confronta due audit del sito: URL aggiunti e corretti per controllo
site_audit_compare
Confronta due audit del sito, controllo per controllo. audit_id è l'audit più recente e base_id quello più vecchio. Entrambi hanno valori predefiniti sensati (l'ultimo audit terminato rispetto all'audit terminato prima di esso) e lo strumento li scambia se li passi nell'ordine sbagliato. Restituisce audit e base (ciascuno un riepilogo di audit, base null se non c'è nulla di precedente) e checks, un oggetto per ogni controllo i cui URL sono cambiati, con check_key, title, category, severity, base_affected, affected, added e fixed (conteggi di URL), con gli errori per primi. I controlli senza variazioni vengono omessi. Per due audit consecutivi added e fixed sono esatti, per audit più distanti sono la variazione netta. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/compare.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/audit.json
Avvia subito un audit del sito
site_audit_run
Avvia subito una nuova scansione e un audit SEO del sito. Scansiona le pagine pubbliche del sito in background, quindi restituisce subito il nuovo audit con status queued. Interroga site_audit_get (campo live) o site_audit_history finché lo stato è complete. Viene rifiutato con un errore di validazione quando l'audit è disattivato in site_audit_settings_update, quando un altro audit è già in coda o in esecuzione, quando un audit manuale è stato avviato nelle ultime 24 ore, e sul piano Free quando un qualsiasi audit è stato eseguito negli ultimi 30 giorni (quelli falliti e annullati non contano). Anche i siti non verificati e senza eventi sono limitati a un audit al giorno per dominio. Le pagine scansionate sono limitate dal piano (Free 100, Pro 1.000, Business 10.000). Controlla prima can_run in site_audit_get. Richiede content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/audit.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/audit/history.json
Elenca gli audit di un sito, dal più recente
site_audit_history
Elenca gli audit del sito, dal più recente, ciascuno con id (aud_...), status (queued, running, analyzing, complete, partial, failed o canceled), trigger (first, scheduled o manual), score (da 0 a 100, null finché non è terminato), score_band, page_limit, pages_crawled, urls_discovered, errors, warnings, notices, new_issues, fixed_issues, failure (il motivo quando è fallito, altrimenti null) e i timestamp. Filtra con status. Paginato con page e per_page (massimo 100). Usa gli id con site_audit_get, site_audit_compare e gli strumenti per problemi e pagine. Per lo stato attuale di un audit usa site_audit_get. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/history.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/audit.json
Ottieni il riepilogo dell'audit del sito: punteggio, conteggi, principali problemi per traffico e l'audit in corso
site_audit_get
La panoramica dell'audit SEO del sito, la migliore prima chiamata per le domande sull'audit. Per impostazione predefinita descrive l'ultimo audit terminato, oppure passa audit_id (aud_..., da site_audit_history) per uno più vecchio. Il risultato ha audit (l'audit terminato con score da 0 a 100, score_band, score_delta, conteggi di errors, warnings e notices, pages_crawled, page_limit, capped, summary e i dettagli di robots, oppure null se nessuno è terminato), live (l'audit in corso adesso, oppure null), enabled e next_run_at (la pianificazione), can_run con run_blocked (live, disabled o too_soon) e run_allowed_at (quando site_audit_run è di nuovo consentito), changes (conteggi di URL aggiunti e corretti per gravità), trend (fino a 30 punteggi recenti come id, finished_at, score), top_issues (fino a 10 controlli ordinati per gravità e poi per visualizzazioni delle pagine interessate) ed email_enabled (la tua preferenza personale per l'email di riepilogo). Prosegui con site_audit_issues_list per ogni problema e site_audit_pages_list per gli URL. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Avvisi
POST
/alerts/:id/acknowledge.json
Conferma la presa in carico dell'ultimo incidente
alerts_acknowledge
Segna l'ultimo incidente non confermato di un avviso come visto dall'utente che effettua la chiamata. Non risolve l'incidente né silenzia l'avviso: l'avviso si risolve da solo quando la condizione rientra. Se l'avviso non ha incidenti non confermati, la chiamata fallisce con un errore di validazione. Restituisce l'avviso. Usa alerts_history per vedere gli incidenti con acknowledged_at e acknowledged_by. Richiede solo l'accesso in lettura alle analytics, quindi anche i visualizzatori possono confermare.
Permesso: analytics.read
curl -X POST https://privatusanalytics.com/alerts/:id/acknowledge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/alerts.json
Crea un avviso
alerts_create
Crea una regola di avviso che controlla un sito (o l'intero workspace per kind usage) e notifica i canali scelti quando scatta. Il percorso richiede workspace_id. name e kind sono obbligatori. kind decide che cos'altro serve. threshold richiede site_id, metric (visitors, visits, pageviews, bounce_rate o conversion), operator (gt, gte, lt o lte) e threshold, e conversion richiede anche goal_id. anomaly richiede site_id e metric (visitors, visits o pageviews), confronta l'ultima finestra con la stessa finestra di ciascuna delle 4 settimane precedenti e usa sensitivity (low, medium o high). operator lt avvisa solo sui cali, gt solo sui picchi e vuoto su entrambi. goal richiede site_id, goal_id e threshold (completamenti nella finestra). no_data richiede site_id e threshold in ore senza eventi (predefinito 24). usage non richiede un sito e threshold è la percentuale della quota mensile di eventi (predefinito 80). uptime richiede site_id e, facoltativamente, uptime_check_id (predefinito tutti i controlli del sito). ssl richiede site_id e threshold in giorni prima della scadenza di un certificato o di un dominio (predefinito 14). vitals richiede site_id, metric (lcp, inp, cls, fcp o ttfb) e threshold in millisecondi (un punteggio per cls). subscriptions richiede site_id, metric (mrr_drop: l'MRR è sceso di oltre threshold per cento negli ultimi 30 giorni, churn_rate o mrr_churn_rate: il churn degli ultimi 30 giorni supera threshold per cento) e threshold (predefinito 10), e viene saltato finché il sito non ha un provider di pagamento collegato o nulla da misurare. window_minutes (predefinito 60, da 5 a 10080) indica quanto indietro guarda ogni valutazione. channel_ids provengono da notification_channels_list e sensitivity è medium per impostazione predefinita. Gli avvisi vengono valutati automaticamente ogni 5 minuti. Le soglie di bounce_rate e conversion sono percentuali da 0 a 100. Restituisce l'avviso creato con state ok.
Permesso: content.write
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/alerts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/alerts/:id.json
Elimina un avviso
alerts_delete
Elimina in modo permanente una regola di avviso e tutta la sua cronologia degli incidenti. L'azione non può essere annullata e le notifiche si fermano subito. Per mettere in pausa un avviso senza perdere la cronologia usa alerts_update con enabled false oppure alerts_mute. L'id (alr_...) proviene da alerts_list. Restituisce l'avviso eliminato così com'era. Richiede il permesso di scrittura sui contenuti.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/alerts/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/alerts/:id/history.json
Cronologia degli incidenti di un avviso
alerts_history
Elenca gli incidenti di un avviso, dal più recente e paginati. Ogni incidente ha triggered_at, resolved_at (null finché è ancora aperto), value (il numero misurato quando è scattato, nella stessa unità della soglia dell'avviso), message (una descrizione leggibile), acknowledged_at e acknowledged_by (nome visualizzato del membro, oppure null). Imposta open su true per vedere solo gli incidenti non risolti. Usa alerts_acknowledge per segnare l'ultimo come visto e alerts_get per lo stato attuale della regola.
Permesso: analytics.read
curl https://privatusanalytics.com/alerts/:id/history.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/alerts.json
Elenca gli avvisi
alerts_list
Elenca le regole di avviso di un workspace (il percorso richiede workspace_id), ordinate per nome e paginate. Restituisce un array data di avvisi con la paginazione in meta. Ogni avviso ha id (alr_...), site_id (pa_..., null per gli avvisi usage che controllano l'intero workspace), name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids (id nch_...), state (ok o triggered), enabled, muted_until, last_triggered_at, last_evaluated_at e created_at. Restringi con site_id, state (ok o triggered) o kind. Usa site_alerts_list per elencare gli avvisi di un sito da un percorso di sito, alerts_get per un singolo avviso e alerts_history per i suoi incidenti. Chi è limitato ad alcuni siti non vede mai gli avvisi usage.
Permesso: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/alerts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/alerts/:id/mute.json
Silenzia (o riattiva) le notifiche di un avviso
alerts_mute
Silenzia le notifiche di un avviso per un certo numero di minuti, mentre continua a valutare e a registrare gli incidenti nella cronologia. minutes è 60 per impostazione predefinita, il massimo è 43200 (30 giorni) e 0 riattiva subito le notifiche. La risposta è l'avviso con muted_until impostato alla fine del silenziamento (null se riattivato). Usa alerts_update con enabled false per smettere del tutto di valutare e alerts_acknowledge per segnare un incidente come visto senza silenziare.
Permesso: content.write
curl -X POST https://privatusanalytics.com/alerts/:id/mute.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/alerts/:id.json
Ottieni un avviso
alerts_get
Restituisce una regola di avviso tramite id (alr_..., da alerts_list o site_alerts_list). La risposta è l'oggetto avviso con id, site_id (null per gli avvisi usage), name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids, state (ok o triggered), enabled, muted_until, last_triggered_at, last_evaluated_at e created_at. Non include gli incidenti: per quelli usa alerts_history. threshold è un numero la cui unità dipende da kind (vedi alerts_create). Richiede l'accesso in lettura alle analytics.
Permesso: analytics.read
curl https://privatusanalytics.com/alerts/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/alerts/:id.json
Aggiorna un avviso
alerts_update
Modifica una regola di avviso esistente (id da alerts_list). Cambia solo ciò che invii, tutto il resto mantiene il suo valore. Al risultato si applicano le stesse regole per kind di alerts_create, quindi cambiare kind o metric può richiedere site_id, goal_id, operator o threshold corrispondenti. Invia channel_ids per sostituire l'intero elenco dei canali di notifica ed enabled false per smettere di valutare senza eliminare. Per silenziare le notifiche per un po' continuando a registrare gli incidenti usa invece alerts_mute. Restituisce l'avviso aggiornato.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/alerts/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/alerts.json
Elenca gli avvisi di un sito
site_alerts_list
Elenca le regole di avviso di un sito (il percorso richiede site_id), ordinate per nome e paginate. Restituisce gli stessi oggetti avviso e accetta gli stessi filtri state e kind di alerts_list, ma solo per questo sito, quindi gli avvisi usage (che non hanno un sito) non sono inclusi. Scegli questa operazione quando hai già l'id di un sito e alerts_list quando vuoi tutti gli avvisi del workspace. Ogni avviso ha id (alr_...), site_id, name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids, state (ok o triggered), enabled, muted_until, last_triggered_at, last_evaluated_at e created_at.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/alerts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Aziende delle testimonianze
GET
/sites/:site_id/testimonials/companies.json
Elenca le aziende di un sito con le loro persone, testimonianze e valutazione media
testimonial_companies_list
Una riga per azienda, raggruppata dal nome e dal sito web dell'azienda delle persone del sito. Una persona senza azienda non è in nessuna. query corrisponde a una parte del nome di un'azienda o dell'host del suo sito web. sort è name (il valore predefinito), people_desc, testimonials_desc o received_desc.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/companies.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/companies/:id/merge.json
Unisci un'azienda in un'altra, per due grafie della stessa azienda
testimonial_companies_merge
Ogni persona dell'azienda nel percorso prende il nome e l'URL dell'azienda indicata da into.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/companies/:id/merge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/companies/:id.json
Ottieni un'azienda con le sue persone
testimonial_companies_get
L'id è la chiave dell'azienda, un host di sito web o un nome normalizzato, come lo restituisce testimonial_companies_list. Le sue testimonianze sono testimonials_list con company.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/companies/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/companies/:id.json
Correggi in una volta il nome e l'URL di un'azienda per tutte le sue persone
testimonial_companies_update
L'id di un'azienda deriva dal suo URL o dal suo nome, quindi la risposta può contenere un nuovo id.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/companies/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Brand kit delle testimonianze
DELETE
/sites/:site_id/testimonials/settings/brand_kit.json
Riporta il brand kit delle testimonianze di un sito ai valori predefiniti di Privatus Analytics
testimonial_brand_kit_reset
Cancella in un solo passaggio ogni colore, font, il raggio, lo stile delle valutazioni, i loghi e il CSS personalizzato, e ogni modulo, widget e wall cambia di conseguenza. Non si può annullare, quindi un assistente viene mandato alla pagina Brand kit invece di eseguirlo.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/brand_kit.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/settings/brand_kit.json
Ottieni il brand kit delle testimonianze di un sito, con ogni colore risolto per chiaro e scuro
testimonial_brand_kit_get
Restituisce i colori, i font, il raggio degli angoli, lo stile delle valutazioni, i loghi, l'interruttore del badge e il CSS personalizzato con cui è disegnato ogni modulo, widget e wall del sito. Un'impostazione mai cambiata torna con il valore predefinito di Privatus Analytics.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/brand_kit.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/settings/brand_kit.json
Cambia il brand kit delle testimonianze di un sito
testimonial_brand_kit_update
Cambiano solo gli input che invii. Invia una stringa vuota per riportare un'impostazione al valore predefinito di Privatus Analytics. Il CSS personalizzato viene controllato quando viene salvato, e tutto ciò che non è consentito viene rifiutato indicando la riga in cui si trova. Il CSS personalizzato richiede il piano Business e nascondere il badge richiede il piano Business. Senza di esso il server risponde con 402 plan_limit.
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/brand_kit.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Campagne
POST
/sites/:site_id/campaigns/costs.json
Imposta la spesa di una campagna in un mese
campaign_costs_create
Registra la spesa pubblicitaria di una campagna in un mese, così campaigns_list può mostrare il costo per acquisizione e il ritorno sulla spesa pubblicitaria. Se esiste già una voce per la stessa campagna e lo stesso mese, viene sostituita e non duplicata, quindi è sicuro chiamarlo due volte. campaign è il valore di utm_campaign così come appare nei tuoi link tracciati, month è YYYY-MM (una data completa come 2026-09-15 è accettata e viene riportata al primo del mese) e amount è in unità maggiori, come numero (1250.50, non in unità minori). currency è un codice ISO di 3 lettere facoltativo e per impostazione predefinita è la valuta del sito. La risposta restituisce la voce memorizzata con amount_minor in unità minori. Per molte righe in una volta usa campaign_costs_import. Richiede content.write. Richiede il piano Business o Enterprise (altrimenti 402 plan_limit).
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/campaigns/costs.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/campaigns/costs/:id.json
Elimina una voce di costo della campagna
campaign_costs_delete
Elimina in modo permanente una voce di spesa, trovata tramite il suo id da campaign_costs_list. L'azione non può essere annullata e CPA e ROAS di quella campagna e di quel mese smettono subito di includere la spesa. Gli altri mesi e le altre campagne non vengono toccati. Restituisce la voce eliminata. Richiede content.write. Richiede il piano Business o Enterprise (altrimenti 402 plan_limit).
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/campaigns/costs/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/campaigns/costs/import.json
Importa i costi delle campagne da CSV (campaign,month,amount[,currency])
campaign_costs_import
Importa in blocco la spesa pubblicitaria da CSV, il modo rapido per caricare molte campagne e mesi. Invia il testo CSV in csv (ideale per strumenti e chiamate API) oppure carica un file in file (solo multipart). La prima riga deve essere un'intestazione che contiene campaign, month e amount, con una colonna currency facoltativa, ad esempio campaign,month,amount,currency poi spring_sale,2026-09,1250.50,USD. Month è YYYY-MM, amount è in unità maggiori, currency per impostazione predefinita è la valuta del sito. Le righe vengono inserite o aggiornate per campagna e mese, quindi reimportare lo stesso file non crea duplicati. I limiti sono 1 MB e 5.000 righe. Una riga errata non interrompe l'importazione. La risposta ha imported (numero di righe salvate), failed (numero di righe rifiutate) ed errors (i primi 50 messaggi, ciascuno con il nome della riga, dove la riga 2 è la prima riga di dati). Una colonna d'intestazione mancante, un file troppo grande o un CSV malformato fanno fallire l'intera richiesta. Richiede content.write. Richiede il piano Business o Enterprise (altrimenti 402 plan_limit).
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/campaigns/costs/import.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/campaigns/costs.json
Elenca le voci di costo delle campagne
campaign_costs_list
Elenca le voci di spesa pubblicitaria registrate per un sito, dal mese più recente, poi per nome della campagna. Ogni riga è una campagna in un mese con amount_minor (un intero in unità minori della valuta, quindi 125050 significa 1.250,50), currency (ISO 4217, maiuscolo), month come YYYY-MM e l'id della voce (un UUID, da usare con campaign_costs_update e campaign_costs_delete). Passa campaign per vedere una sola campagna (corrispondenza senza distinzione tra maiuscole e minuscole sul valore di utm_campaign). Paginato con page e per_page (massimo 100). I costi alimentano CPA e ROAS in campaigns_list, quindi qui puoi controllare la spesa di una campagna. Richiede analytics.read. Richiede il piano Business o Enterprise (altrimenti 402 plan_limit).
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/costs.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/campaigns/costs/:id.json
Modifica una voce di costo della campagna
campaign_costs_update
Modifica una voce di spesa esistente, trovata tramite il suo id da campaign_costs_list. Cambia solo ciò che invii, quindi invia solo amount per correggere un numero. amount è in unità maggiori (1250.50) e viene memorizzato in unità minori, month è YYYY-MM, currency è un codice ISO di 3 lettere. Cambiare campaign o month in una combinazione che un'altra voce ha già fallisce con un errore di validazione invece di unire le voci. Per correggere la spesa di una campagna e di un mese senza conoscere l'id, chiama campaign_costs_create, che sostituisce la voce esistente. Richiede content.write. Richiede il piano Business o Enterprise (altrimenti 402 plan_limit).
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/campaigns/costs/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/campaigns/builder.json
Crea e convalida un URL con tag UTM
campaigns_builder
Costruisce un URL con tag UTM per una landing page e controlla i valori. Non viene salvato nulla e non viene letto alcun dato, quindi è sicuro chiamarlo ripetutamente. Passa destination (un URL completo https://) più utm_source, utm_medium, utm_campaign, utm_content e utm_term secondo necessità, oppure scegli un preset (newsletter, social, paid_search e così via) per compilare utm_source e utm_medium quando li lasci vuoti. Restituisce url (null in caso di errore), valid, destination, preset, i valori utm_* ripuliti, issues (un elenco di {field, level, message}, dove level error blocca l'URL e warning suggerisce solo una correzione come passare al minuscolo) e presets (i valori di preset disponibili). I valori vengono ripuliti in minuscolo e senza spazi. Usa campaigns_hygiene per trovare valori UTM disordinati già presenti nel tuo traffico e campaigns_list per riportare le campagne già svolte. Per conservare un link con tag con un URL breve e il conteggio dei clic, usa invece links_create.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/builder.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/campaigns/hygiene.json
Qualità UTM: valori quasi duplicati, problemi di stile e sorgenti sconosciute
campaigns_hygiene
Trova valori UTM disordinati nel traffico di un periodo, così puoi correggere la marcatura. Restituisce period, duplicates, style_issues e unknown_sources. duplicates raggruppa i valori di utm_source, utm_medium o utm_campaign che differiscono solo per maiuscole, spazi o punteggiatura (Facebook, facebook e face-book), ciascuno come {field, suggestion, variants: [{value, visits}]} con suggerita la grafia più visitata. style_issues elenca i valori che violano la convenzione di minuscolo e assenza di spazi come {field, value, visits, suggestion} (fino a 50). unknown_sources elenca i valori di utm_source che non sono un canale riconosciuto come {value, visits} (fino a 50). Vengono analizzati solo i primi 500 valori per campo. I conteggi sono visite. I suggerimenti sono solo consigli e non viene cambiato nulla. Per unire le varianti in un solo canale usa channel_rules_create. Accetta gli input condivisi period e filters. Usa campaigns_list per le prestazioni e campaigns_builder per creare URL con tag puliti.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/hygiene.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/campaigns.json
Riepilogo delle campagne con conversioni, ricavi, costo, CPA e ROAS
campaigns_list
Report sulle prestazioni delle campagne basato su utm_campaign, con costo e ritorno sulla spesa pubblicitaria. Restituisce period, currency (la valuta del sito), goal_id e goal_name (l'obiettivo di cui si contano le conversioni), campaigns, totals e unconverted_costs. Ogni campagna ha visitors, visits, conversions, conversion_rate (percentuale da 0 a 100, conversioni divise per visite), revenue e sources (righe per fonte e mezzo con le stesse metriche). Quando esistono costi (da campaign_costs_list) una campagna ha anche cost, cpa (costo per conversione, null quando non ci sono conversioni) e roas (ricavo diviso per costo, un rapporto come 2.5, null quando non c'è costo). Gli importi (revenue, cost, cpa) sono interi in unità minori (centesimi) della valuta del sito. I costi vengono associati ai nomi delle campagne senza distinzione tra maiuscole e minuscole e ripartiti in base ai giorni di ogni mese compresi nel periodo. Una campagna con costo ma senza traffico viene comunque elencata. Al massimo 100 campagne, dalle più frequentate. Sono incluse solo le visite con un utm_campaign. goal_id per impostazione predefinita è il primo obiettivo attivo, quindi passalo esplicitamente per misurare un obiettivo specifico (gli id provengono da goals_list). Usa campaigns_hygiene per ripulire i nomi e stats_breakdown con dimension utm_campaign per una semplice ripartizione del traffico.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/campaigns/links.json
Salva un link con tag UTM nella libreria
links_create
Salva un link con tag UTM nella libreria di link del sito (il percorso richiede site_id). name (fino a 120 caratteri) e destination (un URL http o https fino a 2048 caratteri) sono obbligatori. I valori utm vengono ripuliti automaticamente, in minuscolo, senza spazi iniziali e finali e con gli spazi trasformati in trattini bassi, e un valore che sembra un dato personale (ad esempio un indirizzo email) viene rifiutato. Vengono conservati fino a 20 tag, le voci separate da virgole vengono divise e i tag sono in minuscolo e tagliati a 40 caratteri. Memorizza solo il link, non traccia nulla da sola. L'url restituito è la destinazione con i parametri UTM aggiunti e un parametro UTM già presente nella destinazione viene sostituito. Usa links_qr per un codice QR.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/campaigns/links.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/campaigns/links/:id.json
Elimina un link salvato
links_delete
Rimuove un link salvato dalla libreria. Elimina solo la voce salvata: gli URL già condivisi continuano a funzionare e le loro visite vengono comunque contate per campagna. L'azione non può essere annullata. L'id (lnk_...) proviene da links_list. Restituisce il link eliminato.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/campaigns/links/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/campaigns/links.json
Elenca i link di campagna salvati
links_list
Elenca i link di campagna salvati (URL con tag UTM) di un sito (il percorso richiede site_id), dal più recente e paginati. Ogni link ha id (lnk_...), name, destination, utm_source, utm_medium, utm_campaign, utm_content, utm_term, url (la destinazione con i parametri UTM aggiunti, pronta da condividere), tags, notes, created_at e updated_at. query cerca in name, destination e utm_campaign, tag mantiene solo i link con quel tag. Questa è la libreria salvata: per vedere come sono andate le campagne usa campaigns_list o stats_breakdown con dimension utm_campaign.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/links.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/campaigns/links/:id/qr.json
Codice QR (SVG) per un link salvato
links_qr
Restituisce un codice QR per l'URL completo con tag di un link salvato, per la stampa. La risposta ha link_id, url (l'URL con tag codificato nel codice) e svg (un documento SVG autonomo completo come stringa, nero su bianco). size è la dimensione del modulo in pixel, da 2 a 20 (predefinito 6), che ridimensiona l'immagine. L'id (lnk_...) proviene da links_list. Usa links_get quando ti serve solo l'URL.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/links/:id/qr.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/campaigns/links/:id.json
Ottieni un link di campagna salvato
links_get
Restituisce un link di campagna salvato tramite id (lnk_..., da links_list). La risposta ha name, destination, utm_source, utm_medium, utm_campaign, utm_content, utm_term (ciascuno null se non impostato), url (l'URL completo con tag), tags, notes, created_at e updated_at. Usa links_qr per un codice QR pronto per la stampa dello stesso URL.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/links/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/campaigns/links/:id.json
Modifica un link salvato
links_update
Modifica un link di campagna salvato (id da links_list). Cambia solo ciò che invii. Si applicano gli stessi controlli di pulizia e sui dati personali di links_create. Inviare tags sostituisce l'intero elenco dei tag. Invia una stringa vuota per un campo utm per cancellarlo. Restituisce il link aggiornato con il suo url ricalcolato.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/campaigns/links/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Canali di notifica
DELETE
/channels/:id.json
Elimina un canale di notifica
notification_channels_delete
Elimina un canale di notifica e lo rimuove da ogni avviso che lo usava, quindi quegli avvisi smettono di notificare lì. L'azione non può essere annullata e gli avvisi stessi vengono conservati. L'id (nch_...) proviene da notification_channels_list. Restituisce il canale eliminato.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/channels/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/channels.json
Elenca i canali di notifica
notification_channels_list
Elenca i canali di notifica di un workspace (il percorso richiede workspace_id), ordinati per nome e paginati. Un canale è un luogo in cui vengono recapitati gli avvisi. Ognuno ha id (nch_...), kind (email, slack, teams, discord, webhook, pagerduty, opsgenie o push), name, target (un riepilogo mascherato come gli indirizzi email o la fine dell'URL di un webhook, i segreti non vengono mai restituiti), last_used_at e created_at. Filtra per kind. Usa gli id come channel_ids in alerts_create e alerts_update. Chi è limitato ad alcuni siti vede solo i canali usati da avvisi sui suoi siti.
Permesso: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/channels.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/channels/:id/send_test.json
Invia un messaggio di prova tramite un canale
notification_channels_send_test
Invia un vero messaggio di prova attraverso il canale (un'email, un post in chat, una chiamata webhook e così via), quindi usalo solo quando l'utente lo vuole. La chiamata fallisce con un errore che indica la causa se il recapito non funziona, altrimenti restituisce il canale. Gli invii di prova hanno un limite di frequenza per workspace e i canali email anche per indirizzo esterno. Usalo dopo notification_channels_create o notification_channels_update per confermare che un URL o una chiave sono corretti.
Permesso: content.write
curl -X POST https://privatusanalytics.com/channels/:id/send_test.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/channels/:id.json
Ottieni un canale di notifica
notification_channels_get
Restituisce un canale di notifica tramite id (nch_..., da notification_channels_list). La risposta ha kind, name, target (un riepilogo mascherato, i segreti come gli URL dei webhook e le chiavi non vengono mai restituiti), last_used_at e created_at. Usa notification_channels_send_test per verificare che recapiti.
Permesso: analytics.read
curl https://privatusanalytics.com/channels/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/notifications/unsubscribe/:token.json
Annulla l'iscrizione di un indirizzo a un canale di avviso o a un controllo di uptime con il token di un'email
notification_unsubscribes_create
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/notifications/unsubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/push_subscription.json
Registra un browser per le notifiche push
push_subscriptions_create
Registra il browser corrente per gli avvisi web push, usando i tre valori della PushSubscription del browser (endpoint, p256dh e auth). Una sottoscrizione riceve gli avvisi di ogni workspace a cui il membro appartiene, per ogni sito, ed è per questo che un token API può usarla solo quando può leggere tutto il suo workspace e il membro non ha altri workspace. Chiamarla di nuovo con lo stesso endpoint aggiorna le chiavi e sposta la sottoscrizione su chi chiama. L'endpoint deve essere l'URL di un servizio push https pubblico. Registra solo il browser, quindi gli avvisi hanno comunque bisogno di un canale di notifica di tipo push (notification_channels_create). Restituisce endpoint_host (il nome host del servizio push, non l'endpoint completo) e created_at. Le sessioni aperte tramite un identity provider del workspace non possono usarla.
Permesso: member
curl -X POST https://privatusanalytics.com/push_subscription.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/push_subscription.json
Rimuovi la registrazione push di un browser
push_subscriptions_delete
Rimuove una delle registrazioni push del browser del membro connesso, così quel browser smette di ricevere le notifiche degli avvisi. Passa lo stesso endpoint usato con push_subscriptions_create. Fallisce con not found quando non esiste una tale sottoscrizione per il membro. Restituisce la sottoscrizione rimossa come endpoint_host e created_at. Non elimina alcun canale di notifica. Soggetta alle stesse restrizioni sui token di push_subscriptions_create.
Permesso: member
curl -X DELETE https://privatusanalytics.com/push_subscription.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Cestino delle testimonianze
DELETE
/sites/:site_id/testimonials/trash/permanent.json
Elimina definitivamente fino a 100 elementi nel cestino
testimonial_trash_delete_permanently
Non si può annullare. confirm è il nome dell'elemento (il nome della persona per una testimonianza) o il suo id per un solo elemento, e il nome del sito per più elementi. Vengono accettati solo elementi nel cestino.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/trash/permanent.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/trash/empty.json
Elimina definitivamente tutto ciò che è nel cestino
testimonial_trash_empty
Non si può annullare. confirm è il nome del sito. Vengono eliminati fino a 100 elementi per volta. Un cestino più grande viene svuotato in background e la risposta ha state running.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/trash/empty.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/trash.json
Elenca ciò che è nel cestino, un tipo alla volta
testimonial_trash_list
Risponde con gli elementi di un tipo (testimonial per impostazione predefinita) e, in meta.counts, quanti di ogni tipo sono nel cestino. Ogni elemento indica a cosa ritorna, cosa lo mostrava, chi lo ha spostato nel cestino e quando se ne va.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/trash.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/trash/restore.json
Ripristina dal cestino fino a 100 elementi, esattamente com'erano
testimonial_trash_restore
Gli id devono essere di un solo tipo. Ripristinare testimonianze risponde con un id di annullamento (data.id e meta.undo_id) che testimonial_undo_records_undo accetta per 7 giorni. Un ripristino non conta mai come una nuova testimonianza.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/trash/restore.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Condivisione
GET
/badge/:site_id.json
Badge contatore dei visitatori (SVG) per un sito pubblico
badges_get
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/badge/:site_id.json
Connessioni di acquisto delle testimonianze
DELETE
/sites/:site_id/testimonials/settings/purchase_connections/:id.json
Scollega un account di pagamento
testimonial_purchase_connections_delete
Elimina la connessione e la sua chiave. Agli acquirenti ancora in attesa della prima email non viene chiesto nulla. La richiesta permanente resta come registrazione di ciò che è stato inviato.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/purchase_connections/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/settings/purchase_connections.json
Elenca le connessioni di acquisto di un sito
testimonial_purchase_connections_list
Ognuna con la sua regola, il suo stato e la sua richiesta permanente. La chiave non viene mai restituita. paused è true su un piano senza richieste dopo un acquisto: la connessione viene conservata, non legge pagamenti e non chiede a nessuno.
Permesso: sites.manage
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/purchase_connections.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Crawler
DELETE
/sites/:site_id/crawlers/connection.json
Scollega Cloudflare ed elimina gli accessi dei crawler che ha importato
crawlers_cloudflare_disconnect
Scollega Cloudflare da un sito. Elimina il token API memorizzato e ogni accesso di crawler importato da Cloudflare, e non può essere annullato. Gli accessi provenienti dai log del server inviati restano. Il token esiste ancora nel tuo account Cloudflare finché non lo elimini lì. Fallisce se il sito non ha una connessione. Restituisce la connessione rimossa. Richiede sites.manage.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/crawlers/connection.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/crawlers/sync.json
Importa ora gli accessi dei crawler da Cloudflare
crawlers_cloudflare_sync
Mette in coda un'importazione immediata da Cloudflare per un sito già collegato, invece di aspettare la pianificazione regolare. Risponde subito (HTTP 202) con la connessione e l'importazione prosegue in background. Interroga crawlers_report e controlla cloudflare.last_synced_at per vedere quando è terminata. Fallisce se il sito non ha una connessione Cloudflare. Richiede sites.manage.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/crawlers/sync.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/crawlers.json
Report sui crawler IA: visite per crawler nel tempo, percorsi principali per crawler, per categoria
crawlers_report
Riporta quali crawler IA, di ricerca e SEO accedono al sito, quanto spesso e a quali percorsi, dai log del server inviati e dall'importazione di Cloudflare. È traffico di crawler, non traffico di visitatori, quindi non compare in stats_breakdown. category è ai (predefinito), search, seo, other o all, e crawler restringe a un bot specifico come GPTBot o ClaudeBot. Scegli l'intervallo con period (predefinito 30d) oppure from e to personalizzati. Il risultato ha period (from e to come date), category, crawler, totals (hits, percorsi distinti, crawler distinti), categories (accessi per categoria, ignorando il filtro category), crawlers (fino a 50 righe con crawler, category, hits, paths), series (etichette per giorno e accessi giornalieri per gli 8 crawler principali), top_paths (i 10 percorsi più richiesti per ciascuno degli 8 crawler principali), has_data (false finché non esiste alcun accesso) e cloudflare (la connessione con zone, status e last_synced_at, oppure null). I risultati vengono messi in cache fino a 30 minuti, tranne subito dopo una modifica di Cloudflare. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/crawlers.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Creatività pubblicitarie
POST
/sites/:site_id/experiments/ads/:ad_placement_id/creatives.json
Aggiungi una creatività a uno spazio pubblicitario
ad_creatives_create
Aggiunge un'immagine con le proporzioni dello spazio (almeno della sua dimensione, il doppio è la scelta più nitida) e l'indirizzo a cui porta il clic. Invia l'immagine come file multipart oppure image_url per farla scaricare. Viene elaborata in background, quindi interroga ad_creatives_get finché state non è ready. Programmazione, dispositivi e pagine sono per Pro e superiori. Richiede content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json
Elimina una creatività e la sua immagine
ad_creatives_delete
Elimina in modo permanente una creatività e la sua immagine. Una creatività confrontata da un esperimento non può essere eliminata: disattivala. Lo strumento MCP non la elimina e risponde con human_only e la pagina in cui una persona può eliminarla. Richiede content.write.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json
Ottieni una creatività con il suo stato
ad_creatives_get
Una creatività è in elaborazione (processing) finché la sua immagine non è pronta, poi pronta (ready) oppure non riuscita (failed, con il motivo in error). Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json
Modifica una creatività
ad_creatives_update
Modifica il link, il peso, la programmazione o il targeting, la disattiva (active false) o sostituisce l'immagine. Cambiano solo i valori inviati. Una nuova immagine sostituisce la vecchia quando è pronta. Richiede content.write.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Dashboard
GET
/workspaces/:workspace_id/dashboards/:id/cards/:index.json
Dati di una scheda di una dashboard personalizzata
dashboards_card
Restituisce i dati in tempo reale di una scheda di una dashboard personalizzata. Le dashboard sono elenchi di schede (vedi dashboards_get per l'elenco delle schede) e ogni scheda si carica separatamente, quindi chiama questa operazione una volta per scheda con la sua posizione in index, contata da 0. Restituisce index, type, title, site_id, site_name, params, status e data. status è ok, not_available (la scheda non ha nulla da mostrare, ad esempio una scheda funnel su un sito senza funnel o una scheda uptime senza controlli) o no_access (la scheda appartiene a un sito che il tuo token o ruolo non può aprire, e allora title, params e data sono vuoti). La struttura di data dipende da type. metric restituisce {metric, value, previous, change, period} confrontato con il periodo precedente. chart restituisce {metric, interval, period, series: [{date, value}]}. breakdown restituisce {dimension, label, rows}. goal restituisce {rows} dei completamenti degli obiettivi. live restituisce {visitors}. funnel restituisce {funnel_id, name, overall_conversion_rate, steps}. uptime restituisce {checks: [{name, status, uptime}]}. vitals restituisce {scorecard}. subscriptions restituisce {currency, mrr_minor, previous_mrr_minor (30 giorni fa), change (percentuale, null senza MRR 30 giorni fa), active_subscriptions, subscription_churn_rate (ultimi 30 giorni)} ed è not_available finché il sito non ha un provider di pagamento collegato. I params della scheda hanno come predefiniti period 30d, metric visitors, dimension page e 5 righe (limit è limitato a 10). Un index fuori dall'elenco restituisce 404. Usa prima dashboards_get per vedere quante schede ci sono.
Permesso: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id/cards/:index.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/dashboards.json
Crea una dashboard personalizzata
dashboards_create
Crea una dashboard personalizzata in un workspace. Una dashboard personalizzata è un elenco ordinato e con nome di fino a 40 schede, e le schede possono provenire da siti diversi del workspace. Passa name (fino a 100 caratteri) e cards, un elenco di oggetti con type (metric, chart, breakdown, goal, live, funnel, uptime, vitals o subscriptions), site_id (pa_..., da sites_list) e, facoltativamente, title (fino a 80 caratteri) e params. I params usati per tipo sono 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 non ne hanno. Gli altri params vengono scartati. Il periodo deve essere un preset come 30d (non custom) e metric uno tra visitors, visits, pageviews, views_per_visit, bounce_rate o visit_duration. Ogni scheda deve puntare a un sito a cui il tuo token può accedere, e un token limitato ad alcuni siti deve includere almeno una scheda. Restituisce la dashboard con id (dash_...), name, cards e timestamp. Leggila con dashboards_get e carica i numeri di ogni scheda con dashboards_card. Richiede il permesso content.write. Il piano stabilisce quante dashboard ha un workspace: 1 su Free, 3 su Pro, illimitate su Business. Superare il numero viene rifiutato con un errore di validazione.
Permesso: content.write
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/dashboards.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/dashboards/:id.json
Elimina una dashboard personalizzata
dashboards_delete
Elimina in modo permanente una dashboard personalizzata. Viene rimosso solo il layout della dashboard, nessun dato analytics viene toccato e non c'è modo di annullare. Devi avere accesso a ogni sito che ha una scheda sulla dashboard, e la dashboard deve avere almeno una scheda di un sito a cui puoi accedere. Restituisce la dashboard eliminata. Usa invece dashboards_update per modificare una dashboard. Gli id (dash_...) provengono da dashboards_list. Richiede il permesso content.write.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/dashboards.json
Elenca le dashboard personalizzate
dashboards_list
Elenca le dashboard personalizzate di un workspace, ordinate per nome. Ogni elemento ha id (dash_...), name, cards e timestamp, con la stessa struttura di dashboards_get. Un token limitato ad alcuni siti vede solo le dashboard che includono una scheda di uno dei suoi siti, e le schede di altri siti vengono oscurate in {type, status: no_access}. Paginato con page e per_page (massimo 100). Usa dashboards_card per caricare i dati di una scheda e dashboards_create per aggiungere una dashboard. Per un singolo sito, stats_overview restituisce lo stesso tipo di numeri senza una dashboard.
Permesso: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/dashboards/:id.json
Ottieni una dashboard personalizzata e le sue schede
dashboards_get
Restituisce una dashboard personalizzata: id (dash_...), name, cards, created_at e updated_at. Ogni scheda è {type, site_id, title, params} (type è metric, chart, breakdown, goal, live, funnel, uptime, vitals o subscriptions). Una scheda su un sito a cui non puoi accedere viene restituita come {type, status: no_access} senza altri campi. Restituisce solo il layout, non i numeri. Carica i numeri di una scheda con dashboards_card, usando la posizione della scheda contata da 0. Gli id provengono da dashboards_list. Una dashboard oltre il numero consentito dal piano (1 su Free, 3 su Pro) viene conservata e bloccata: risponde 402 plan_limit finché il workspace non passa a un piano superiore o ne elimina un'altra.
Permesso: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/dashboards/:id.json
Rinomina una dashboard personalizzata o sostituisci le sue schede
dashboards_update
Rinomina una dashboard personalizzata e/o sostituisce l'intero elenco delle sue schede. Cambia solo i campi che invii e name viene lasciato com'è quando è vuoto. Inviare cards sostituisce ogni scheda, quindi invia l'elenco completo nell'ordine che vuoi, preso da dashboards_get e modificato. Il formato delle schede e i params per tipo sono gli stessi di dashboards_create (massimo 40 schede). Una scheda mostrata come {type, status: no_access} appartiene a un sito che non puoi aprire. Rinviala invariata per mantenerla: non può essere modificata e l'ultima scheda di un tale sito non può essere rimossa. Un token limitato ad alcuni siti non può lasciare la dashboard vuota. Restituisce la dashboard aggiornata. Richiede il permesso content.write.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Destinatari delle richieste di testimonianza
POST
/sites/:site_id/testimonials/requests/:request_id/recipients.json
Aggiungi persone a una richiesta
testimonial_request_recipients_create
Fino a 500 in una chiamata. Aggiunte a una bozza, attendono testimonial_requests_send. Aggiunte a una richiesta in corso, ricevono subito la prima email. La risposta indica quante sono state messe in coda e quante saltate, per motivo. Aggiungere a una richiesta in corso invia email a persone fuori dal workspace, quindi il membro viene avvisato via email.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/requests/:request_id/recipients.json
Rimuovi le persone scelte da una richiesta
testimonial_request_recipients_delete
Solo le persone a cui non è stato inviato nulla (in coda o saltate). Accetta fino a 100 indirizzi nel corpo. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests/:request_id/recipients/import.json
Aggiungi persone a una richiesta da un file CSV
testimonial_request_recipients_import
Due chiamate. Invia il file (o il suo testo come csv) per ottenere le colonne, le loro prime righe e un upload_token. Poi invia l'abbinamento dal numero della colonna al campo. Fino a 5 MB e 10.000 righe. Aggiungere a una richiesta in corso invia email a persone fuori dal workspace, quindi il membro viene avvisato via email.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients/import.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/requests/:request_id/recipients.json
Elenca le persone di una richiesta
testimonial_request_recipients_list
Filtra in base allo stato attuale di una persona: lo stato opened è "ha aperto e non ha cliccato né risposto". L'indirizzo email è null a meno che chi chiama possa modificare i contenuti.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/requests/:request_id/recipients/resume.json
Riprendi le persone scelte di una richiesta
testimonial_request_recipients_resume
Riprendono da dove si erano fermate. Accetta fino a 100 indirizzi nel corpo. Questo invia email a persone fuori dal workspace, quindi il membro viene avvisato via email.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients/resume.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests/:request_id/recipients/stop.json
Ferma le persone scelte di una richiesta
testimonial_request_recipients_stop
Non ricevono altre email. Ognuna conserva il proprio stato e acquisisce "stopped". Accetta fino a 100 indirizzi nel corpo.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients/stop.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Documentazione
GET
/docs/api.json
Elenca tutte le operazioni API e gli strumenti MCP
docs_api
Restituisce il catalogo completo di ogni operazione API, che è anche ogni strumento MCP. Usalo per scoprire quale strumento o endpoint esiste e che cosa richiede esattamente. Ogni elemento ha tool_name, summary, description (può essere null), group, verb (metodo HTTP), path (modello con segnaposto), permission (il permesso di cui un membro o un token ha bisogno, null per gli strumenti pubblici), input_schema (JSON Schema degli input) e response_schema (JSON Schema della risposta). La risposta è grande. Per uno strumento che conosci già, preferisci le pagine della documentazione (docs_search). docs_openapi restituisce le stesse informazioni come documento OpenAPI. Pubblico, nessuna autenticazione necessaria.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/docs/api.json
GET
/docs.json
Elenca le pagine della documentazione
docs_list
Elenca ogni pagina della documentazione con title, description, path (ad esempio /docs/api/authentication), section e senza il corpo. Usalo per sfogliare ciò che esiste. Per trovare una pagina per argomento usa docs_search e per leggerne una usa docs_get con la sua sezione e la sua pagina. Paginato con page e per_page (massimo 100). Pubblico, nessuna autenticazione necessaria.
Permesso: public
curl https://privatusanalytics.com/docs.json
GET
/openapi.json
Documento OpenAPI 3.1 dell'intera API
docs_openapi
Restituisce il documento OpenAPI 3 che descrive l'intera API pubblica come JSON grezzo (non racchiuso in un campo data). Usalo quando ti serve una specifica leggibile dalle macchine per la generazione di codice. Per un elenco navigabile di operazioni con i relativi schemi di input e risposta, docs_api è più facile da leggere. Descrive le stesse operazioni esposte come strumenti MCP. Pubblico, nessuna autenticazione necessaria.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/openapi.json
GET
/docs/search.json
Cerca nella documentazione
docs_search
Cerca nella documentazione sul server e restituisce le pagine ordinate per pertinenza. Usalo per capire come funziona una funzionalità prima di tirare a indovinare. q viene diviso in al massimo 10 termini, ogni termine deve comparire nella pagina e le corrispondenze in titolo e intestazioni hanno il punteggio più alto. Una q vuota restituisce ogni pagina nell'ordine del catalogo. limit è 20 per impostazione predefinita quando q è presente e al massimo 100. Ogni risultato ha title, path (usa le parti section e page con docs_get), section, headings (elenco di id e testo, utile come ancora dell'intestazione), excerpt e score (null quando q è vuoto). Cerca nella lingua della richiesta, inglese per impostazione predefinita. Pubblico, nessuna autenticazione necessaria.
Permesso: public
curl https://privatusanalytics.com/docs/search.json
GET
/docs/:section/:page.json
Leggi una pagina della documentazione (Markdown e HTML)
docs_get
section e page derivano dal percorso della pagina /docs/<section>/<page>. Usa la pagina "index" per la panoramica di una sezione.
Permesso: public
curl https://privatusanalytics.com/docs/:section/:page.json
Domain Rating
GET
/sites/:site_id/domain-rating.json
Report Domain Rating: l’ultimo punteggio, i link in entrata e in uscita, la variazione rispetto al rilascio precedente e lo storico per mese
domain_rating_report
Restituisce il Domain Rating del sito, una stima da 0 a 100 della forza dei link che puntano al suo dominio, più il numero di link in entrata e in uscita e la loro cronologia. È il punteggio proprio di Privatus Analytics, non una metrica di Google. I rating vengono aggiornati una volta al mese a ogni rilascio, quindi le variazioni compaiono mensilmente. months (da 1 a 120, predefinito 12) imposta quanti punti mensili di cronologia includere. Il risultato ha domain, checked_at (quando il sito è stato controllato l'ultima volta, null se mai), release (il mese degli ultimi dati come YYYY-MM), rating, inbound_links, outbound_links (ciascuno null se ancora sconosciuto), changes (le stesse tre metriche come differenza rispetto al rilascio precedente, null quando uno dei due valori è sconosciuto) e history (una riga per mese con month, rating, inbound_links, outbound_links, dalla più vecchia). Un nuovo sito può restare senza rating per qualche minuto. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/domain-rating.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Duplicati delle testimonianze
POST
/sites/:site_id/testimonials/duplicates/dismiss.json
Indica che un gruppo non è composto da duplicati. Non torna mai nella coda
testimonial_duplicates_dismiss
testimonial_ids deve essere ogni copia di un gruppo aperto della coda dei duplicati che non è nel cestino, come le restituisce testimonial_duplicates_list. Nulla viene unito o modificato sulle testimonianze, e non vengono mai più raggruppate insieme. Per dividere un gruppo di tre, unisci prima le due che sono uguali. Il server risponde con 422 quando gli id non sono esattamente un gruppo aperto.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/duplicates/dismiss.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/duplicates.json
Elenca i gruppi di testimonianze che probabilmente sono la stessa due volte
testimonial_duplicates_list
Le corrispondenze esatte vengono per prime. Ogni gruppo contiene le sue copie per intero e keeper_id, la copia che verrebbe mantenuta. meta.exact_groups è il numero di gruppi che testimonial_duplicates_merge_exact unirebbe.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/duplicates.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/:id/merge.json
Unisci le copie di una testimonianza in quella nel percorso
testimonials_merge
Quella mantenuta conserva il proprio stato e la verifica, e le proprie parole a meno che body_from indichi un'altra copia. Acquisisce i tag, le raccolte manuali, le collocazioni e le proprietà personalizzate che le mancano. Le copie vanno nel cestino contrassegnate come unite, e ripristinarne una annulla l'unione per quella copia. Una copia arrivata questo mese smette di contare come nuova testimonianza. La risposta contiene meta.undo_id.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/merge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/duplicates/merge_exact.json
Unisci in una volta tutte le corrispondenze esatte della coda
testimonial_duplicates_merge_exact
Invia prima dry_run per i conteggi, poi confirm_count con il totale fornito. Per chiamata vengono uniti fino a 100 gruppi. La risposta contiene meta.undo_id, e un solo annullamento riporta indietro l'intera esecuzione.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/duplicates/merge_exact.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Elenco degli annullamenti delle testimonianze
GET
/sites/:site_id/testimonials/settings/undo.json
Elenca ciò che è stato cambiato negli ultimi 7 giorni e può essere annullato
testimonial_undo_records_list
Dal più recente. Ogni record indica cosa è stato eseguito, chi lo ha eseguito, quante cose ha cambiato e saltato e perché, e fino a quando si può annullare.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/undo.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/settings/undo/:id.json
Leggi un record di annullamento
testimonial_undo_records_get
Per un'esecuzione in background, state è running e processed indica a che punto è.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/undo/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/settings/undo/:id/undo.json
Annulla un'azione in blocco o una singola modifica entro 7 giorni
testimonial_undo_records_undo
Rimette il valore precedente su tutto ciò che l'esecuzione ha cambiato. Ciò che è stato cambiato di nuovo da allora viene lasciato stare e contato in left. Un'unione di persone o di duplicati si annulla nello stesso modo. Tramite MCP un annullamento che eliminerebbe o sposterebbe nel cestino non viene eseguito (l'annullamento di un ripristino, di un'esecuzione di traduzione e di un'esecuzione di creazione immagini): lo strumento risponde con human_only e la pagina dell'app in cui una persona lo fa.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/undo/:id/undo.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Esecuzioni di importazione delle testimonianze
GET
/sites/:site_id/testimonials/imports/sources/:import_source_id/runs.json
Elenca le esecuzioni di una fonte, dalla più recente
testimonial_import_runs_list
Ogni esecuzione ha il suo numero, ciò che l'ha avviata, il suo stato, le pagine lette e quante testimonianze ha trovato, quante erano nuove, duplicate, fallite e mantenute, con gli orari di avvio e di fine.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:import_source_id/runs.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Esperimenti
POST
/sites/:site_id/experiments.json
Crea un esperimento come bozza
experiments_create
Crea un test A/B o di URL diversi per un sito. Viene salvato come bozza e non invia nessun visitatore altrove finché una persona non lo avvia nell'app. Sono obbligatori name, path (la pagina originale, come /pricing), goal_id (da goals_list) e variants: un elenco di { name, path, weight } in cui la prima riga è la pagina originale (il suo path viene ignorato) e ogni altra riga è una pagina dello stesso sito. Ometti tutte le quote per una ripartizione uniforme, oppure invia quote che sommino 100. Il piano Free consente un esperimento alla volta con l'originale e una variante. Pro e superiori aggiungono più varianti, allocazione automatica, targeting, un * nel percorso, obiettivi secondari, un avvio programmato e gruppi esclusivi. Richiede content.write. Restituisce l'esperimento.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/experiments/:id.json
Elimina un esperimento con i suoi risultati
experiments_delete
Elimina definitivamente un esperimento con le sue varianti e i suoi risultati. L'operazione non si può annullare. Usa experiments_pause per fermarlo e conservare i risultati. Lo strumento MCP non lo esegue e risponde con human_only e la pagina in cui una persona lo elimina. Richiede content.write.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/experiments/:id/duplicate.json
Copia un esperimento come nuova bozza
experiments_duplicate
Crea una bozza con le stesse pagine, quote, obiettivo e regole di un esperimento esistente e nessuno dei suoi risultati. Usala per modificare un test già avviato. Conta per il limite del piano come un nuovo esperimento. Richiede content.write. Restituisce il nuovo esperimento.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/experiments/:id/end.json
Termina un esperimento definitivamente
experiments_end
Termina un esperimento in corso o in pausa. Non può più essere riavviato, i suoi risultati vengono conservati e non conta più per il limite del piano. Lo strumento MCP non lo esegue e risponde con human_only e la pagina in cui una persona lo termina. L'API lo esegue. Richiede content.write.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/end.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/experiments.json
Elenca gli esperimenti di un sito
experiments_list
Elenca i test A/B e di URL diversi di un sito, dal più recente. Filtra con status (draft, scheduled, running, paused, ended o all, predefinito all). Paginato con page e per_page (predefinito 25, fino a 100). Ogni esperimento ha id (exp_...), name, status, path (la pagina originale), goal_id, variants (id, name, path, weight, control), le regole per terminarlo e locked (true quando il piano non lo copre più). Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/experiments/:id/pause.json
Metti in pausa un esperimento e conserva i risultati
experiments_pause
Mette in pausa un esperimento in corso o programmato. Ogni visitatore riceve subito di nuovo la pagina originale e i risultati finora raccolti vengono conservati. experiments_start lo riprende. Richiede content.write. Restituisce l'esperimento.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/pause.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/experiments/:id.json
Ottieni un esperimento con i suoi risultati
experiments_get
Restituisce un esperimento tramite id (exp_..., da experiments_list) con i suoi risultati: per ogni variante le visite, le conversioni e il tasso di conversione sull'obiettivo e, rispetto all'originale, l'incremento, l'intervallo probabile della differenza, il p-value, se è significativa alla confidenza scelta e la probabilità che batta l'originale. results.progress indica quanto manca per poter dichiarare una vincitrice, e results.mismatch.found true significa che le visite non sono ripartite come indicano le quote, quindi il risultato non è affidabile. split suddivide i risultati per dispositivo, canale o paese (Pro e superiori) e humans_only tiene le visite che il punteggio bot giudica probabili persone (Business). Una visita viene contata per una variante quando ha visto quella variante, e una conversione conta solo dopo. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/experiments/:id/start.json
Avvia un esperimento
experiments_start
Avvia un esperimento in bozza o in pausa, così i visitatori della pagina originale iniziano a essere indirizzati alle varianti. Con starts_at nel futuro attende quell'ora. Poiché reindirizza visitatori reali, lo strumento MCP non lo esegue e risponde con human_only e la pagina in cui una persona lo avvia. L'API lo esegue. Richiede content.write.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/start.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/experiments/:id.json
Aggiorna un esperimento
experiments_update
Modifica un esperimento. Cambiano solo gli input che invii e variants sostituisce l'intero elenco. Dopo l'avvio possono cambiare solo name e send_to_winner, perché nuove pagine, quote o obiettivi a metà test falserebbero il risultato: usa experiments_duplicate e modifica la copia. Richiede content.write. Restituisce l'esperimento.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/experiments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Esportazioni
POST
/workspaces/:workspace_id/exports.json
Metti in coda un'esportazione (creata in background)
exports_create
Mette in coda un'esportazione di dati che viene costruita in background e la restituisce subito con status queued. Sceglila quando ti serve un file (CSV, JSON, XLSX, NDJSON o uno ZIP di pannelli della dashboard) e usa prima exports_preview per controllare colonne e dimensione senza creare nulla. Per numeri leggeri usa invece gli strumenti stats. Gli input obbligatori sono workspace_id (percorso), site_id, from e to (YYYY-MM-DD, inclusivi, nel fuso orario dell'esportazione). kind decide che cosa viene esportato e quali opzioni si applicano. aggregated (predefinito) restituisce le metriche delle visite per intervallo di tempo e usa grouping, dimensions (fino a 6), metrics, filters e segment_id. pageviews, events e raw restituiscono una riga per accesso e usano fields, filters e segment_id, richiedono il piano Pro o superiore e sono limitati a 400 giorni (raw a 93 giorni). imported restituisce le statistiche giornaliere importate e usa solo dimensions. dashboard restituisce uno ZIP dei pannelli della panoramica (solo format zip). Il file_format consentito per kind è csv, json o xlsx per aggregated, pageviews, events e imported, csv o ndjson per raw e zip per dashboard. Le opzioni che non si applicano al kind scelto vengono ignorate. Un workspace può avere al massimo 5 esportazioni in coda o in esecuzione contemporaneamente. La risposta è l'esportazione con id (exp_...), status, row_count e expires_at (null finché non è costruita). Interroga exports_get finché status è complete, poi chiama exports_download. L'utente che l'ha richiesta riceve un'email quando è pronta, viene inviato un webhook export.ready e l'azione viene scritta nel registro di controllo. Le proprietà degli eventi nella colonna props includono solo le proprietà contrassegnate come sicure per l'esportazione (vedi event_properties_list).
Permesso: analytics.export
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/exports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/exports/:id.json
Elimina un'esportazione e il suo file
exports_delete
Elimina in modo permanente un'esportazione e il suo file generato. Il link di download smette subito di funzionare e l'azione non può essere annullata, ma puoi creare di nuovo l'esportazione. Usalo per rimuovere un'esportazione terminata o fallita che non ti serve più, dato che i file vengono comunque eliminati automaticamente 7 giorni dopo la loro creazione. L'id proviene da exports_list. Restituisce l'oggetto esportazione eliminato com'era prima dell'eliminazione.
Permesso: analytics.export
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/exports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/exports/:id/download.json
Ottieni un link firmato al file (valido 10 minuti)
exports_download
Restituisce un link di download di breve durata per un'esportazione terminata. Sceglilo dopo che exports_get mostra status complete. La risposta ha url (un link firmato valido per 10 minuti, scaricalo subito), expires_at (quando il link smette di funzionare, ISO 8601), filename e byte_size (byte). Fallisce con un codice di errore not found expired quando l'esportazione ha più di 7 giorni, e con un errore di validazione quando l'esportazione è ancora in coda o in esecuzione o quando è fallita (il messaggio di errore ne spiega il motivo). Chiamalo di nuovo per ottenere un link nuovo finché l'esportazione stessa non è scaduta. L'id proviene da exports_list.
Permesso: analytics.export
curl https://privatusanalytics.com/exports/:id/download.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/exports.json
Elenca le esportazioni (la coda dei job)
exports_list
Elenca le esportazioni di un workspace per i siti a cui puoi accedere, dalla più recente. Usalo per trovare l'id di un'esportazione, controllare quali sono ancora in esecuzione o vedere che cosa è scaduto. Filtra con site_id, status (queued, running, complete, failed o expired) e kind (aggregated, pageviews, events, imported, raw o dashboard). Paginato con page e per_page (fino a 100), e restituisce data (un elenco di esportazioni, vedi exports_get per i campi) più la paginazione in meta. Richiede il workspace_id da workspaces_list.
Permesso: analytics.export
curl https://privatusanalytics.com/workspaces/:workspace_id/exports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/exports/preview.json
Anteprima di un'esportazione: le prime 20 righe e il numero stimato di righe
exports_preview
Prova a vuoto di un'esportazione che non crea nulla. Accetta gli stessi input di exports_create e restituisce kind, file_format, columns (i nomi delle colonne in ordine), rows (fino a 20 righe di esempio come oggetti con chiave la colonna) ed estimated_rows (un conteggio approssimativo delle righe del file completo). Per il kind dashboard le righe di esempio elencano ogni nome di file con il suo numero di righe. Usalo per validare dimensioni, campi, filtri e intervallo di date, e per vedere quanto sarebbe grande l'esportazione prima di chiamare exports_create. Viene eseguito in modo sincrono, quindi mantieni ragionevole l'intervallo di date. Gli errori di validazione sono gli stessi di exports_create, compreso il requisito del piano Pro per i kind a livello di riga. Non viene memorizzato nulla e non viene inviata alcuna email.
Permesso: analytics.export
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/exports/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/exports/:id.json
Ottieni un'esportazione e il suo stato
exports_get
Restituisce un'esportazione, compreso il suo avanzamento. Usalo per interrogare un'esportazione avviata con exports_create finché status è complete o failed. Gli stati sono queued, running, complete, failed ed expired. I campi includono id (exp_...), site_id (pa_...), kind, format, status, params (la definizione memorizzata dell'esportazione), row_count (null finché non è completata), error (impostato quando fallisce), completed_at, expires_at (i file vengono conservati 7 giorni dopo il completamento), download_url (impostato solo finché il file può essere scaricato, usa exports_download per ottenere un link firmato) e created_at. L'id proviene da exports_create o exports_list.
Permesso: analytics.export
curl https://privatusanalytics.com/exports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Eventi
GET
/sites/:site_id/events/properties.json
Elenca le chiavi delle proprietà degli eventi viste negli ultimi 30 giorni
event_properties_list
Elenca le chiavi di proprietà trasportate dagli eventi personalizzati negli ultimi 30 giorni, con le impostazioni di visualizzazione. Restituisce un elenco di {key, events, display_name, hidden, export_safe}. events è quanti eventi personalizzati trasportavano la chiave (0 per una chiave che ha impostazioni ma non è stata vista di recente), display_name è il nome assegnato (null quando assente), hidden indica che la chiave è nascosta dai report ed export_safe indica che è contrassegnata come priva di dati personali. Vengono restituite al massimo 200 chiavi, le più usate per prime. Passa event per vedere solo le chiavi viste su un nome di evento grezzo. I valori delle proprietà non vengono mai restituiti qui: usa stats_breakdown con dimension prop:<key> o events_get per i valori. Modifica le impostazioni con event_properties_update.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/events/properties.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/events/properties.json
Rinomina o nascondi la chiave di una proprietà di un evento
event_properties_update
Rinomina, nasconde o contrassegna come sicura per l'esportazione una chiave di proprietà di un evento, per l'intero sito. Cambia solo ciò che invii. key deve essere la chiave come memorizzata (lettere minuscole, cifre e trattini bassi, fino a 64 caratteri, ad esempio plan). display_name è un'etichetta fino a 64 caratteri (inviala vuota per rimuovere il nome assegnato). hidden rimuove la chiave dai report e dalla tabella pivot di dettaglio dell'evento mantenendo i dati. export_safe dichiara che la chiave non contiene mai dati personali, il che include i suoi valori nelle esportazioni grezze e nelle sincronizzazioni verso il data warehouse, quindi impostalo solo quando è vero. Rinominare e nascondere si applicano quando i report vengono letti e non riscrivono alcun dato memorizzato. Restituisce {key, display_name, hidden, export_safe}. Richiede il permesso sites.manage. Elenca le chiavi con event_properties_list.
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/events/properties.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/events.json
Elimina un evento e la sua cronologia (viene eseguito in background, conferma digitando il nome)
events_delete
Elimina in modo permanente un evento personalizzato e tutta la sua cronologia. L'azione non può essere annullata. Il nome grezzo dell'evento deve essere inviato due volte, in name e di nuovo in confirm, come controllo di sicurezza. Restituisce {name, status: queued} con HTTP 202 perché le righe vengono rimosse in background a blocchi, quindi i numeri continuano a cambiare fino al termine. L'evento viene inoltre nascosto subito e l'eliminazione viene registrata nel registro di controllo. Le visualizzazioni di pagina non sono interessate. Se vuoi solo smettere di mostrare un evento, usa events_update con hidden true, che conserva i dati. Richiede il permesso sites.manage. I nomi provengono da events_list (usa il campo raw_names se l'evento è stato rinominato o unito).
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/events.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/events.json
Elenca gli eventi con completamenti, visite, tasso di conversione e prima/ultima occorrenza
events_list
L'esploratore degli eventi: ogni evento personalizzato nel periodo. Restituisce period, events e hidden. Ogni evento ha name (il nome visualizzato dopo rinominazioni e unioni), raw_names (i nomi inviati dal tracker), completions, visits, conversion_rate (percentuale delle visite, da 0 a 100), revenue (unità minori, centesimi), first_seen e last_seen (timestamp ISO 8601 nel periodo) e currency (la valuta dei ricavi, null quando non impostata). hidden elenca gli eventi che hai nascosto come {name, display_name}. Usa search per mantenere gli eventi il cui nome contiene del testo. Qui le visualizzazioni di pagina non sono eventi. Usa events_get per un evento nel dettaglio e stats_breakdown con dimension event per un elenco ordinato e paginato. Accetta gli input condivisi period, compare, filters e segment.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/events.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/events/merge.json
Unisci più eventi in un unico nome visualizzato
events_merge
Unisce più nomi di evento grezzi in un solo nome visualizzato, ad esempio signup_click e signup_button in Signup. I report mostrano poi un singolo evento con i conteggi combinati. Funziona quando i report vengono letti e gli eventi memorizzati non vengono modificati né eliminati. Passa names (i nomi grezzi, almeno uno) e into (il nome visualizzato). Restituisce un oggetto di impostazioni per ogni nome unito, ciascuno {name, display_name, hidden, currency, updated_at}. Per annullare, chiama events_update per un nome con un display_name vuoto. Richiede il permesso sites.manage. I nomi provengono da events_list (raw_names).
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/events/merge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/events/detail.json
Un evento: grafico, pivot delle proprietà, aggregati delle proprietà numeriche, pagine e sorgenti
events_get
Dettaglio di un evento personalizzato. Passa name esattamente come mostrato in events_list (il nome visualizzato dopo rinominazioni e unioni). Restituisce period, name, raw_names (i nomi memorizzati dietro di esso), interval, totals, setting, series, property_keys, pivot, numeric, pages, channels e referrers. totals ha completions, visits (le visite che l'hanno generato), revenue (unità minori, centesimi) e conversion_rate (percentuale di tutte le visite nel periodo). series sono i completamenti per intervallo di tempo. setting ha display_name, hidden e currency. property_keys elenca le chiavi di proprietà viste. Invia properties (fino a 3 chiavi) per ottenere pivot, righe di {values, completions, visits} per ogni combinazione di valori, le prime 100. numeric restituisce somma, media e altre cifre per le proprietà che contengono numeri. pages, channels e referrers sono i primi 10 luoghi in cui l'evento è stato generato, come {value, completions, visits}. Usa events_list per tutti gli eventi, stats_breakdown con dimension prop:<key> per una proprietà su tutto il sito e events_update per rinominarlo.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/events/detail.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/events/settings.json
Rinomina, nascondi o mostra un evento, oppure imposta la sua valuta
events_update
Cambia il modo in cui viene mostrato un evento personalizzato: rinominalo con display_name, nascondilo o mostralo con hidden, oppure imposta la valuta dei ricavi. name è il nome grezzo dell'evento come inviato dal tracker (vedi raw_names in events_list). Cambia solo ciò che invii. Un display_name vuoto rimuove il nome assegnato. hidden rimuove l'evento da elenchi e report mantenendo i suoi dati. currency è un codice ISO 4217 di tre lettere come USD, memorizzato in maiuscolo. Funziona quando i report vengono letti e nessun evento memorizzato viene riscritto. Restituisce {name, display_name, hidden, currency, updated_at}. Per combinare più eventi usa events_merge e per cancellare i dati usa events_delete. Richiede il permesso sites.manage.
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/events/settings.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Fatturazione
POST
/workspaces/:workspace_id/billing/badge.json
Attiva o disattiva il bonus del badge (piano gratuito)
billing_badge
Attiva o disattiva per un workspace Free il bonus del badge Privatus Analytics, che aumenta la quota mensile di eventi. Imposta enabled su true per attivarlo. Un controllo in background cerca poi il badge sui siti del workspace e lo verifica, cosa che può richiedere un momento, quindi leggi billing_get in seguito e guarda badge.verified_at. Imposta enabled su false per disattivarlo, cosa che azzera le date di controllo e verifica e rimuove il bonus. Attivarlo su un workspace Pro o Business viene rifiutato perché i piani a pagamento non hanno il bonus. Restituisce l'oggetto di fatturazione del workspace come billing_get. Richiede billing.manage.
Permesso: billing.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/badge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/cancel.json
Annulla al termine del periodo di fatturazione
billing_cancel
Annulla l'abbonamento a pagamento alla fine del periodo pagato in corso. Nulla viene rimborsato e il piano resta attivo fino a current_period_ends_at, dopodiché il workspace passa al piano Free. Usa billing_resume per annullare l'operazione prima di quel momento. Fallisce quando il workspace non ha un abbonamento o un annullamento è già programmato. reason (uno dei valori enum) e comment, entrambi facoltativi, sono un sondaggio di uscita. Un commento, se presente, viene inviato via email al team di Privatus Analytics come messaggio di feedback del membro e non viene memorizzato. Restituisce l'oggetto di fatturazione con cancel_at_period_end true. Richiede billing.manage.
Permesso: billing.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/cancel.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/change_plan.json
Cambia piano, livello o intervallo (con calcolo proporzionale)
billing_change_plan
Sposta l'abbonamento esistente su un altro piano, fascia di eventi o intervallo di fatturazione. Comporta un addebito. La modifica ha effetto subito e Paddle calcola il rateo, quindi un addebito o un credito viene applicato subito al metodo di pagamento registrato. Esegui prima billing_preview con gli stessi input per vedere gli importi esatti. Fallisce se il workspace non ha un abbonamento (per quello usa billing_checkout), se la destinazione coincide con il piano, la fascia e l'intervallo attuali, o se non esiste un prezzo per la combinazione di piano ed eventi. Il valore di events deve essere una delle fasce di plans_list. Restituisce l'oggetto di fatturazione aggiornato. Richiede billing.manage.
Permesso: billing.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/change_plan.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/checkout.json
Avvia un checkout Paddle per un piano a pagamento
billing_checkout
Avvia un checkout Paddle per un workspace che non ha ancora un abbonamento e restituisce l'URL di un checkout ospitato. Nulla viene addebitato finché una persona non completa il checkout in un browser, quindi consegna l'url alla persona. Usa invece billing_change_plan quando il workspace ha già un abbonamento. Gli input sono plan (pro o business), events (una fascia di eventi al mese da plans_list) e interval (month o year, predefinito month). I prezzi includono IVA o imposta sulle vendite. Un programma di sconto approvato viene applicato automaticamente e indicato in discount_id. Restituisce transaction_id, url (può essere null), price_id, plan, events, interval, amount (dollari USD interi per l'intervallo), client_token ed environment (sandbox o production, usato dall'overlay di Paddle), custom_data e discount_id (può essere null). Fallisce se il workspace ha già un abbonamento. Richiede billing.manage.
Permesso: billing.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/checkout.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/discount.json
Richiedi uno sconto per organizzazioni non profit, istruzione o open source
billing_discount
Presenta la richiesta di un programma di sconto per il workspace. Invia una richiesta alla revisione dello staff e avvisa via email il team di Privatus Analytics, ma non concede da sola uno sconto. I programmi sono nonprofit, education, open_source (50 percento di sconto), open_source_free (Pro gratuito fino a 1M di eventi al mese) e agency (20 percento di sconto su ogni workspace di tua proprietà). È ammessa una sola richiesta aperta (pending, approved o active) per workspace e puoi presentarne un'altra dopo un rifiuto o una revoca. license viene conservato solo per i due programmi open source. Restituisce la richiesta con program, status, percent, comp_events (può essere null), organization_name, website, proof_url, license, note, rejection_reason, created_at, reviewed_at, applied_at e revoked_at (timestamp che possono essere null). Controlla l'avanzamento più tardi nel campo discount di billing_get. Richiede billing.manage.
Permesso: billing.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/discount.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/payment_method.json
Ottieni un link per aggiornare il metodo di pagamento
billing_payment_method
Restituisce un link Paddle dove una persona può aggiornare il metodo di pagamento dell'abbonamento. La chiamata in sé non cambia nulla. Consegna l'url alla persona perché lo apra in un browser. Il risultato ha kind (payment_method) e url. Fallisce quando il workspace non ha un abbonamento attivo. Per fatture, indirizzi e ogni altro dettaglio di fatturazione usa billing_portal. Richiede billing.manage.
Permesso: billing.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/payment_method.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/portal.json
Ottieni un link al portale clienti Paddle
billing_portal
Restituisce un link al portale clienti di Paddle, dove una persona può vedere fatture, metodi di pagamento e indirizzi. La chiamata in sé non cambia nulla. Consegna l'url alla persona perché lo apra in un browser. Il risultato ha kind (portal) e url. Fallisce se il workspace non ha ancora un cliente Paddle (non ha mai completato un checkout) o quando il cliente è condiviso con altri workspace a cui chi chiama non può accedere, perché il portale espone tutti i dati del cliente. Usa billing_payment_method solo per la carta. Richiede billing.manage.
Permesso: billing.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/portal.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/billing/preview.json
Anteprima di un cambio di piano con calcolo proporzionale
billing_preview
Mostra quanto costerebbe in questo momento spostare l'abbonamento su un altro piano, fascia o intervallo, senza cambiare nulla. Eseguilo sempre prima di billing_change_plan con gli stessi input plan, events e interval. Fallisce se il workspace non ha un abbonamento o se la destinazione coincide con il prezzo attuale. Restituisce plan, events, interval, price_id, amount (prezzo di listino in dollari USD interi per l'intervallo), currency, charge_minor (quanto verrebbe addebitato ora), credit_minor (credito per il tempo non usato) e result_minor (importo netto), tutti in unità minori della valuta, result_action (charge o credit, può essere null), next_billed_at (può essere null) e warnings (stringhe, ad esempio quando l'uso dell'ultimo mese supera la nuova fascia o quando il nuovo piano violerebbe limiti come siti o membri). Richiede billing.manage.
Permesso: billing.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/billing/resume.json
Annulla una cancellazione programmata o riprendi una pausa
billing_resume
Annulla un annullamento programmato, oppure riprende un abbonamento in pausa, così il piano continua a rinnovarsi. Usalo dopo billing_cancel e prima di current_period_ends_at. Un abbonamento in pausa riprende subito. Fallisce quando non c'è un annullamento programmato e l'abbonamento non è in pausa. Restituisce l'oggetto di fatturazione aggiornato. Richiede billing.manage.
Permesso: billing.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/resume.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/billing.json
Ottieni il piano, l'abbonamento e l'utilizzo
billing_get
Restituisce il piano e lo stato di fatturazione del workspace. Usalo prima di cambiare qualsiasi cosa nella fatturazione e per sapere se l'abbonamento è attivo o in annullamento. I campi includono workspace_id, plan (free, pro, business o enterprise), plan_events (la fascia di eventi al mese venduta), allowance (gli eventi al mese effettivamente consentiti, compreso l'eventuale bonus del badge), billing_interval (month o year, può essere null), price (dollari USD interi per l'intervallo, può essere null), subscription_status, current_period_ends_at, cancel_at_period_end (true quando è programmato un annullamento), canceled_at, auto_upgrade, discount (l'ultima richiesta di sconto, può essere null), discount_percent, billing_emails (array), tax_id, badge (opted_in, verified_at, checked_at e l'entità del bonus) e usage (lo stesso oggetto restituito da billing_usage). Richiede billing.manage. Le fatture sono in billing_invoices_list e una vista dell'uso mese per mese è billing_usage.
Permesso: billing.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/billing.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/billing.json
Aggiorna le email di fatturazione, la partita IVA e l'upgrade automatico
billing_update
Modifica le impostazioni di fatturazione del workspace. Cambia solo ciò che invii. billing_emails è un array di al massimo 5 indirizzi aggiuntivi per fatture e comunicazioni di fatturazione e sostituisce l'intero elenco. tax_id viene memorizzato nel workspace e non viene aggiunto alle fatture, quindi va inserito anche nel checkout. auto_upgrade è false per impostazione predefinita. Se true, quando si raggiunge il limite mensile di eventi il workspace passa alla fascia successiva e viene addebitata la differenza, invece di sospendere la raccolta. Attivarlo mentre la raccolta è già in pausa al limite esegue subito l'upgrade, addebita l'importo e invia un'email di conferma, e se Paddle rifiuta l'upgrade non viene salvato nulla. Restituisce l'oggetto di fatturazione come billing_get. Richiede billing.manage.
Permesso: billing.manage
· Solo HTTP (non è uno strumento MCP)
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/billing.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/billing/usage.json
Ottieni l'utilizzo di questo mese, la previsione e la suddivisione per sito
billing_usage
Restituisce l'uso degli eventi del workspace per un mese. Usalo per controllare quanto il workspace è vicino al suo limite mensile rigido. L'input è month (un giorno qualsiasi del mese, predefinito il mese corrente). Contano solo le visualizzazioni di pagina e gli eventi personalizzati. I campi sono month, events, bots (conteggio aggregato dei bot, non fatturato), allowance, percent (da 0 a oltre 100, un decimale), forecast e forecast_percent (proiezione lineare a fine mese, null per i mesi passati), days_left, status (ok, warning all'80 percento, over al 100 percento, paused o locked), sites (per sito site_id, domain, name, events e share in percentuale, dal più grande), history (i mesi precedenti come month ed events), access_locked_at, collection_paused (true quando i nuovi eventi vengono scartati), pause_reason (limit o staff, può essere null), collection_paused_at e resumes_at (il 1° del mese successivo quando la pausa è dovuta al limite). Richiede billing.manage.
Permesso: billing.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/usage.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/billing/invoices.json
Elenca le fatture
billing_invoices_list
Elenca le transazioni di fatturazione del workspace, dalla più recente. Ogni elemento ha id (da usare con billing_invoices_get), invoice_number (può essere null), status, amount_minor (intero in unità minori della valuta, quindi 900 significa 9.00), currency (codice ISO come USD) e billed_at (ISO 8601, può essere null). Paginato con page e per_page (massimo 100). Elenca solo le transazioni. Per ottenere il PDF chiama billing_invoices_get e per aggiornare la carta usa billing_payment_method. Richiede billing.manage.
Permesso: billing.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/invoices.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/billing/invoices/:id.json
Ottieni il link al PDF di una fattura
billing_invoices_get
Restituisce un link al PDF della fattura di una transazione fatturata. Ottieni l'id della fattura da billing_invoices_list (il campo id, un id di transazione Paddle). Il risultato ha kind (invoice) e url, che è un link al PDF di Paddle, quindi scaricalo o condividilo subito dopo la chiamata. Fallisce se l'id non appartiene a questo workspace o se Paddle non ha una fattura per esso. Richiede billing.manage.
Permesso: billing.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/invoices/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Feedback privato
GET
/sites/:site_id/testimonials/forms/:form_id/feedback.json
Elenca il feedback privato di un modulo, dal più recente
testimonial_feedback_list
Il feedback privato è una risposta con una valutazione da 1 a 3 su un modulo con l'instradamento delle valutazioni basse attivo (dal piano Business in su). Non è mai una testimonianza, mai pubblico e mai contato.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:form_id/feedback.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/forms/:form_id/feedback/:id/mark_read.json
Segna una risposta di feedback privato come letta, o di nuovo come non letta
testimonial_feedback_mark_read
Imposta read_at su una risposta di feedback privato, oppure lo cancella con read false. Segnare come letta una risposta già letta conserva l'ora in cui è stata letta la prima volta. Nulla viene inviato alla persona che l'ha scritta.
Permesso: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms/:form_id/feedback/:id/mark_read.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/forms/:form_id/feedback/:id.json
Ottieni una risposta di feedback privato
testimonial_feedback_get
Restituisce la valutazione, il testo, il nome indicato dalla persona e quando è stata letta. Il feedback privato è una risposta con una valutazione bassa su un modulo con l'instradamento delle valutazioni basse attivo. Non è mai una testimonianza e mai pubblico.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:form_id/feedback/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Fonti di importazione delle testimonianze
POST
/sites/:site_id/testimonials/imports/sources.json
Aggiungi una fonte di importazione da un link e avvia la sua prima esecuzione
testimonial_import_sources_create
La piattaforma viene rilevata dal link. Ciò che l'esecuzione trova attende nel passaggio di revisione (testimonial_import_sources_review) e nulla viene archiviato finché non si usa testimonial_import_sources_keep. Nulla di importato conta nelle testimonianze mensili. Il piano Free recupera 1 importazione al mese da un sito di recensioni o da una pagina. Oltre, la risposta è 402 plan_limit.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/imports/sources/:id.json
Elimina una fonte. Le testimonianze che ha portato restano
testimonial_import_sources_delete
Elimina la fonte con la sua cronologia di esecuzioni, ciò che attende nel suo passaggio di revisione e il file caricato. Le testimonianze già mantenute da essa restano nel sito. Una persona lo fa dalla pagina della fonte, quindi lo strumento non esegue nulla e restituisce quella pagina.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/imports/sources/:id/discard.json
Scarta gli elementi trovati
testimonial_import_sources_discard
Fornisci item_ids (id da testimonial_import_sources_review) oppure all true per tutto ciò che è ancora in attesa, mai entrambi. Un elemento scartato lascia il passaggio di revisione e ciò che era stato letto sulla persona viene cancellato. Nessuna testimonianza viene eliminata. Altrimenti il server risponde con 422 e il codice selection o unknown_ids.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/discard.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/imports/find.json
Trova le testimonianze sul sito web del sito
testimonial_import_sources_find
Legge il dominio del sito e le pagine a cui rimanda che sembrano contenere testimonianze, una volta per sito. È gratuito: non è una delle importazioni recuperate del piano Free. Ciò che trova attende nel passaggio di revisione della fonte che restituisce.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/find.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports.json
Elenca le fonti di importazione di un sito
testimonial_import_sources_list
meta contiene fetched_imports (used, limit e resets_on per il mese, limit null significa illimitato) e sync (il ritmo che il piano consente).
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/imports/sources/:id/keep.json
Mantieni gli elementi trovati come testimonianze
testimonial_import_sources_keep
Fornisci item_ids (fino a 100) oppure all. Ogni elemento mantenuto viene archiviato attraverso lo stesso percorso di qualsiasi altra testimonianza, quindi i duplicati non vengono mai archiviati due volte. Nulla di ciò che viene mantenuto conta nelle testimonianze mensili. meta indica quanti sono stati mantenuti.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/keep.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports/platforms.json
Elenca le piattaforme che un'importazione può leggere
testimonial_import_platforms_list
Il registro delle fonti testate. Una piattaforma viene elencata solo quando la sua importazione è provata su una pagina reale. Ogni voce indica quale link incollare.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/platforms.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/imports/sources/:id/review.json
Elenca ciò che una fonte ha trovato e non è stato ancora deciso
testimonial_import_sources_review
meta contiene i conteggi per badge (new, already_here, likely_duplicate).
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/review.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/imports/sources/:id/run.json
Rileggi una fonte adesso
testimonial_import_sources_run
Un'esecuzione manuale è un'importazione recuperata e conta come una di quelle del mese sul piano Free (402 plan_limit oltre). Viene rifiutata mentre un'esecuzione è attiva (422 in_progress) e dopo 3 esecuzioni della fonte in 24 ore su qualsiasi piano (422 too_many_runs). Su una fonte in errore azzera il conteggio dei fallimenti.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/run.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports/sources/:id.json
Ottieni una fonte di importazione con il suo stato e i conteggi
testimonial_import_sources_get
Restituisce la piattaforma, il nome, l'indirizzo letto, la frequenza con cui viene riletto, lo stato, quanti elementi attendono nel passaggio di revisione, quanti sono stati mantenuti, i fallimenti di fila e quando è stato eseguito per l'ultima volta e quando verrà eseguito di nuovo.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/imports/sources/:id.json
Cambia il link, il nome, la sincronizzazione, l'approvazione automatica di una fonte, o mettila in pausa
testimonial_import_sources_update
Una sincronizzazione oltre il piano (qualsiasi su Free, settimanale su Pro) viene rifiutata con 402 plan_limit.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Funnel
POST
/sites/:site_id/funnels.json
Crea un funnel
funnels_create
Crea un funnel, una sequenza di passaggi che le visite attraversano, misurata per visita. Passa name e steps, un elenco ordinato di {type, value, match, name}. type è page, event o goal. value è un percorso per i passaggi page (ad esempio /pricing), il nome di un evento personalizzato per i passaggi event, o un id di obiettivo (goal_..., da goals_list) per i passaggi goal. match è solo per i passaggi page ed è exact, prefix, glob (carattere jolly *) o regex, con glob come predefinito quando il valore contiene un * ed exact altrimenti. name è un'etichetta facoltativa. I passaggi con value vuoto vengono scartati. order_mode è strict (ogni passaggio deve venire dopo il precedente, predefinito) o any (passaggi in qualsiasi ordine). window è visit (predefinito) o day, ed entrambi misurano all'interno di una singola visita perché non viene conservato alcun id del visitatore. Si applicano i limiti del piano. Free consente 3 funnel per sito e 5 passaggi, Pro consente 10 passaggi e Business 20, e un funnel richiede almeno 2 passaggi. Restituisce il funnel con id (fun_...). Leggi i risultati con funnels_get. Richiede il permesso content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/funnels.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/funnels/:id.json
Elimina un funnel
funnels_delete
Elimina in modo permanente la definizione di un funnel. Nessun dato analytics viene toccato, ma il funnel e le sue impostazioni non possono essere recuperati e non c'è modo di annullare. Restituisce il funnel eliminato. Gli id (fun_...) provengono da funnels_list. Usa invece funnels_update per modificare un funnel. Richiede il permesso content.write.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/funnels/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/funnels.json
Elenca i funnel con ingressi, completamenti e tasso
funnels_list
Elenca i funnel di un sito con i loro risultati principali per il periodo, ordinati per nome. Ogni funnel ha id (fun_...), name, steps, order_mode, window e stats {entered, completed, conversion_rate}, dove entered sono le visite che hanno raggiunto il passaggio 1, completed sono le visite che hanno raggiunto l'ultimo passaggio e conversion_rate è una percentuale (da 0 a 100). Paginato con page e per_page (massimo 100, predefinito 25). Accetta gli input condivisi period e filters. Per il dettaglio passaggio per passaggio usa funnels_get e usa funnels_create per aggiungerne uno.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/funnels.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/funnels/:id.json
Report del funnel: conteggi dei passaggi, conversione, abbandoni, tempo tra i passaggi e dove sono andate le visite invece
funnels_get
Il report di conversione di un funnel per un periodo. Restituisce period, funnel_id, name, order_mode, window, steps, overall_conversion_rate, breakdown e, con compare, comparison. Ogni passaggio ha index (da 1), name, type, value, match, count (le visite che l'hanno raggiunto), step_conversion_rate (percentuale del passaggio precedente), overall_conversion_rate (percentuale del passaggio 1), dropoff e dropoff_rate (le visite che sono uscite dopo questo passaggio), median_seconds_from_previous (null per il passaggio 1) e next_pages (le prime 5 pagine visitate subito dopo dalle visite perse, con (exit) per chi se n'è andato). I tassi sono percentuali da 0 a 100. Imposta breakdown su channel, device, country, utm_campaign, utm_source, browser o os per ottenere la conversione complessiva per valore (primi 20). comparison ha i conteggi dell'altro periodo, overall_conversion_rate e change (percentuale, null quando il tasso precedente era 0). I filtri sulle pagine vengono ignorati qui perché accorcerebbero le visite, usa invece un passaggio page. Accetta gli input condivisi period, compare, filters e segment. Gli id provengono da funnels_list.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/funnels/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/funnels/:id.json
Aggiorna un funnel
funnels_update
Modifica un funnel. Cambia solo ciò che invii. Inviare steps sostituisce l'intero elenco dei passaggi, quindi invia ogni passaggio in ordine (il formato e i limiti dei passaggi sono gli stessi di funnels_create, Free consente 5 passaggi, Pro 10 e Business 20, e i passaggi goal devono indicare obiettivi di questo sito). Puoi anche cambiare name, order_mode (strict o any) e window (visit o day). I risultati vengono calcolati dalla definizione al momento della lettura, quindi modificare un funnel si applica subito a tutto lo storico e i numeri passati mostrati prima saranno diversi. Restituisce il funnel. Gli id provengono da funnels_list. Richiede il permesso content.write.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/funnels/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Immagini delle testimonianze
POST
/sites/:site_id/testimonials/images/bulk.json
Crea le immagini per ogni testimonianza approvata di una raccolta
testimonial_images_bulk_create
Fino a 200 testimonianze per esecuzione, una immagine per dimensione ciascuna. Un testo troppo lungo per l'immagine viene disegnato dalla sua evidenza, oppure dalle sue frasi iniziali (excerpted indica quante). La risposta elenca le immagini avviate, le testimonianze escluse con il motivo, e export_id: uno zip dei PNG compare nella pagina Esportazioni quando sono disegnati.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/images/bulk.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/images.json
Crea le immagini di una testimonianza approvata, una per dimensione
testimonial_images_create
Si può disegnare solo una testimonianza approvata, perché il PNG ottiene un indirizzo pubblico: qualsiasi altra viene rifiutata con not_approved. Ogni immagine parte come rendering e viene disegnata in background. La risposta è l'elenco delle immagini avviate. Interroga testimonial_images_get per file_url. Un 422 con text_too_long significa che le parole non ci stanno: usa text_mode highlight o excerpt, oppure una dimensione più alta.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/images.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/images/:id.json
Elimina un'immagine e il suo file
testimonial_images_delete
Il PNG viene eliminato dall'host dei media e il suo indirizzo smette di funzionare. Un'immagine non ha cestino. Si può ricreare dalla sua testimonianza con testimonial_images_create. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/images/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/images.json
Elenca le immagini di un sito
testimonial_images_list
Immagini create da testimonianze approvate, dalla più recente, 25 per pagina. Filtra per stato, modello, dimensione o testimonial_id. Ognuna contiene file_url quando è pronta.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/images.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/images/:id.json
Ottieni un'immagine, con il suo stato e l'indirizzo del suo PNG
testimonial_images_get
status è rendering, ready o failed. file_url viene impostato quando è pronta. Interrogalo dopo testimonial_images_create finché status non è più rendering.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/images/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/images/:id.json
Cambia come viene disegnata un'immagine e renderizzala di nuovo
testimonial_images_update
Invia solo ciò che cambia. Senza inviare nulla renderizza di nuovo la stessa immagine dalla testimonianza com'è adesso, che è anche il modo per riprovare una fallita. Un nuovo rendering ha un nuovo file_url, e il vecchio file viene eliminato.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/images/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Importazioni
DELETE
/sites/:site_id/imports/google/connection.json
Scollega il tuo account Google Analytics ed elimina i token di accesso salvati
imports_google_disconnect
Rimuove la connessione Google Analytics memorizzata del membro che chiama per il workspace di questo sito, quindi le importazioni GA4 non possono più leggere da Google finché non viene ricollegata nell'app. I dati già importati restano e vengono rimossi solo eliminando la loro importazione con imports_delete. L'autorizzazione non viene revocata lato Google. Fallisce con un errore di validazione quando non c'è alcuna connessione, o mentre una delle importazioni GA4 del membro è in coda o in esecuzione. Restituisce un oggetto con disconnected true. Il collegamento si fa nell'app (la schermata di accesso con Google), non esiste uno strumento per farlo.
Permesso: sites.manage
curl -X DELETE https://privatusanalytics.com/sites/:site_id/imports/google/connection.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/imports/google/properties.json
Elenca le proprietà di Google Analytics 4 da importare
imports_google_properties
Elenca le proprietà Google Analytics 4 che l'account Google collegato del membro che chiama può leggere. Chiamalo prima di imports_create con source ga4 per ottenere il property_id da usare. Restituisce un elenco di oggetti con id (come properties/123456789, passalo come property_id), name e account. Fallisce con un errore di validazione quando il membro non ha collegato Google per questo workspace (si fa nell'app, non esiste uno strumento per farlo) o quando Google rifiuta la richiesta. Effettua una chiamata live a Google e non cambia nulla.
Permesso: sites.manage
curl https://privatusanalytics.com/sites/:site_id/imports/google/properties.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/imports.json
Avvia un'importazione (proprietà GA4 o caricamento CSV)
imports_create
Avvia l'importazione di dati storici da un altro strumento di analytics in un sito, elaborata in background, e restituisce l'importazione con status queued. Scegli source ga4 per leggere dall'API di Google Analytics 4, che richiede una connessione Google fatta nell'app, property_id (da imports_google_properties) e date_from. date_to per impostazione predefinita è il giorno prima del primo evento tracciato del sito, oppure ieri. Le altre sorgenti (universal_analytics, fathom, simple_analytics, plausible, matomo, umami, clicky) accettano un'esportazione CSV caricata come input file (caricamento di form multipart, fino a 50 MB), il che le rende poco pratiche da avviare via MCP e meglio gestite nell'app. dimension serve solo per forzare il rilevamento di ciò che le righe del CSV suddividono, ad esempio le esportazioni Label di Matomo. Le righe importate non contano mai nella quota di eventi e compaiono nelle statistiche solo quando passi include_imported true. Un workspace può avere al massimo 5 importazioni in coda o in esecuzione contemporaneamente. Interroga imports_get finché status è complete o failed. Richiede il permesso sites.manage.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/imports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/imports/:id.json
Elimina un'importazione e tutti i suoi dati importati
imports_delete
Elimina in modo permanente un'importazione insieme a ogni riga che ha portato e al file caricato. Le statistiche che includevano i dati importati cambiano subito quando include_imported è attivo, e l'azione non può essere annullata, anche se puoi importare di nuovo. L'id proviene da imports_list e richiede il site_id. Restituisce l'importazione eliminata. Richiede il permesso sites.manage. I dati raccolti dal tracker non vengono toccati.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/imports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/imports.json
Elenca le importazioni di un sito
imports_list
Elenca le importazioni di un sito, dalla più recente. Usalo per trovare l'id di un'importazione o controllare se una è ancora in esecuzione. Puoi filtrare per status (queued, running, complete o failed). Paginato con page e per_page (fino a 100). Ogni elemento ha id, site_id, source, status, date_from, date_to, rows_imported, error, completed_at e created_at. Vedi imports_get per i dettagli e imports_create per avviarne una.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/imports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/imports/:id.json
Ottieni un'importazione e il suo stato
imports_get
Restituisce un'importazione di un sito, usata per interrogare un'importazione avviata con imports_create. I campi sono id (imp_...), site_id, source, status (queued, running, complete o failed), date_from e date_to (YYYY-MM-DD, null quando sconosciuti), rows_imported (numero di righe giornaliere importate), error (impostato quando fallisce), completed_at e created_at. L'id proviene da imports_create o imports_list. Le righe importate compaiono nelle statistiche solo quando la chiamata stats imposta include_imported true.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/imports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Importazioni da foglio di calcolo delle testimonianze
POST
/sites/:site_id/testimonials/imports/spreadsheet.json
Carica un foglio di calcolo (o invia testo CSV) e leggi le sue colonne
testimonial_spreadsheet_imports_create
Passaggio 1 di un'importazione da foglio di calcolo. Invia file (CSV, TSV o XLSX, al massimo 10 MB e 5.000 righe, intestazioni nella prima riga) oppure content (testo CSV fino a 1 MB). La risposta contiene le colonne, tre valori di esempio per ciascuna e una prima ipotesi su dove va ogni colonna. Nulla è ancora importato: continua con testimonial_spreadsheet_imports_update e testimonial_spreadsheet_imports_run. Un foglio di calcolo non conta mai nelle testimonianze mensili né nelle importazioni recuperate.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/imports/spreadsheet/:id/run.json
Leggi il file abbinato nel passaggio di revisione
testimonial_spreadsheet_imports_run
Le righe utilizzabili attendono con una casella da spuntare. Quelle non utilizzabili vengono elencate con il numero di riga e il motivo. Mantienile con testimonial_import_sources_keep, usando l'id del foglio di calcolo come id della fonte.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet/:id/run.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports/spreadsheet/:id.json
Ottieni colonne, esempi, abbinamento, opzioni e conteggi di un foglio di calcolo
testimonial_spreadsheet_imports_get
Restituisce le colonne del file con valori di esempio, il campo a cui va ogni colonna, le opzioni (stato predefinito, tag, raccolta, formato della data, cosa succede ai duplicati) e, dopo l'esecuzione, quante righe attendono nel passaggio di revisione e quante sono state mantenute.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/imports/spreadsheet/:id.json
Salva quale colonna va dove, e le opzioni per il file
testimonial_spreadsheet_imports_update
Passaggi 2 e 3 di un'importazione da foglio di calcolo. mapping è un oggetto da nome della colonna a campo, con un valore vuoto per una colonna da escludere, e due colonne non possono andare nello stesso campo. Le opzioni sono default_status (pending o approved), tags, collection_id (una raccolta manuale), default_source_name, date_format (auto, ymd, dmy o mdy) e duplicates (skip o queue). Cambia solo ciò che viene inviato e nulla viene importato finché non si usa testimonial_spreadsheet_imports_run.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Impostazioni email
POST
/email/preferences/:token/unsubscribe.json
Fermare tutte le email a un indirizzo che si possono disattivare, con il token del suo link alle impostazioni email
email_preferences_unsubscribe_all
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/email/preferences/:token/unsubscribe.json \
-H "Content-Type: application/json" -d '{…}'
POST
/email/preferences/:token.json
Disattivare o riattivare le email a un indirizzo, con il token del suo link alle impostazioni email
email_preferences_update
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/email/preferences/:token.json \
-H "Content-Type: application/json" -d '{…}'
Lingue delle testimonianze
GET
/sites/:site_id/testimonials/settings/languages.json
Ottieni le impostazioni di lingua delle testimonianze di un sito
testimonial_languages_get
La lingua predefinita, le lingue offerte, se le testimonianze appena approvate vengono tradotte automaticamente, se il piano include la traduzione, se la traduzione è configurata e i caratteri usati e rimasti nel mese.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/languages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/settings/languages.json
Imposta la lingua predefinita, le lingue offerte e la traduzione automatica
testimonial_languages_update
Invia solo ciò che cambia. La lingua predefinita è sempre tra quelle offerte, e una lingua in cui è scritto un modulo non può essere rimossa (in_use). Attivare auto_translate richiede Business o superiore (402 plan_limit altrove): da quel momento le parole di ogni testimonianza appena approvata vengono inviate a Google Cloud Translation, e il membro riceve un'email che un assistente ha cambiato questa impostazione.
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/languages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Live
GET
/sites/:site_id/live.json
Visitatori live, flusso di attività e cosa è popolare in questo momento (ultimi 30 minuti)
live_get
Che cosa sta succedendo sul sito proprio ora. Restituisce live_visitors (i visitatori degli ultimi 5 minuti), window_minutes (30), sparkline (visite al minuto negli ultimi 30 minuti, dalla più vecchia, ciascuna {minute, visits}), feed (l'attività più recente), top_pages, top_referrers, top_countries (ciascuno fino a 8 righe di {value, visits}) e top_events (fino a 8 di {value, completions}) per gli ultimi 30 minuti. Le voci di feed hanno occurred_at, kind, name, path, channel, referrer_host, country, device e browser. Sono anonime, senza IP, città o traccia del visitatore. feed mostra per impostazione predefinita tutti gli accessi, oppure solo visualizzazioni di pagina o eventi, con limit voci (predefinito 50, fino alla dimensione del buffer di 100). I numeri non sono in cache e non accettano period. Passa filters (stesso formato di stats_aggregate) per limitare ogni numero e il feed agli accessi corrispondenti. Usa live_wallboard per una vista compatta di più siti e stats_overview per un periodo completo.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/live.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/live/wallboard.json
Schede della wallboard (live e oggi) per uno o più siti
live_wallboard
Schede compatte con numeri grandi per uno o più siti, pensate per uno schermo da ufficio. Restituisce rotate_seconds, generated_at e sites. Ogni scheda di sito ha id (pa_...), name, domain, live_visitors (ultimi 5 minuti), sparkline (al minuto, ultimi 30 minuti), visitors_today, pageviews_today, bounce_rate_today (percentuale, da 0 a 100), top_pages, top_countries e top_referrers (5 righe ciascuno). Oggi significa nel fuso orario del sito stesso e i numeri vengono letti dai dati in tempo reale. site_ids elenca i siti da includere (fino a 12, solo siti che il tuo token può aprire), altrimenti viene usato il sito nel percorso. rotate_seconds è limitato tra 5 e 300 e indica solo a uno schermo per quanto mostrare ogni scheda. Per uno schermo pubblico condivisibile usa wallboard_links_create. Usa live_get per la vista live completa di un sito.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/live/wallboard.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/wallboard/:token.json
Wallboard per un token di wallboard (nessun accesso richiesto)
live_public_wallboard
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/wallboard/:token.json
POST
/sites/:site_id/live/wallboard/links.json
Crea un link alla wallboard (sola lettura, revocabile)
wallboard_links_create
Crea un URL di wallboard in sola lettura che chiunque lo possieda può aprire senza accedere, quindi condividilo solo con chi deve vedere questi numeri. Il percorso richiede site_id e questo sito è sempre incluso. site_ids aggiunge altri siti da far ruotare (id pa_... a cui puoi accedere, fino a 12 siti in totale). rotate_seconds indica per quanto ogni sito resta sullo schermo, da 5 a 300 (predefinito 20, i valori fuori intervallo vengono limitati). expires_at è una data e ora ISO 8601, oppure una semplice data YYYY-MM-DD che indica la fine di quel giorno nel fuso orario del sito. Il wallboard mostra solo i numeri aggregati in tempo reale e di oggi. Restituisce il link con il suo url. Revocalo con wallboard_links_delete.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/live/wallboard/links.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/live/wallboard/links/:id.json
Revoca un link alla wallboard
wallboard_links_delete
Revoca un link di wallboard, così i televisori che lo mostrano smettono di aggiornarsi e l'URL smette di funzionare. L'azione non può essere annullata: crea invece un nuovo link. Revocare un link già revocato non fa nulla. L'id (shr_...) proviene da wallboard_links_list. Restituisce il link con revoked_at impostato.
Permesso: sites.manage
curl -X DELETE https://privatusanalytics.com/sites/:site_id/live/wallboard/links/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/live/wallboard/links.json
Elenca i link alla wallboard di un sito
wallboard_links_list
Elenca i link di wallboard di un sito (il percorso richiede site_id), dal più recente e compresi quelli revocati. Un link di wallboard è un URL segreto che mostra i visitatori in tempo reale e i numeri di oggi su un televisore senza accesso. Ognuno ha id (shr_...), name, url, site_ids (id pa_... dei siti che fa ruotare), rotate_seconds, expires_at, revoked_at (impostato dopo la revoca) e created_at. Chi è limitato ad alcuni siti vede solo i link i cui siti sono tutti suoi. Per i dati del wallboard stesso usa live_wallboard. Richiede il permesso sites.manage.
Permesso: sites.manage
curl https://privatusanalytics.com/sites/:site_id/live/wallboard/links.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Media delle testimonianze
POST
/sites/:site_id/testimonials/media/uploads.json
Avvia un caricamento, o aggiungi un file da un indirizzo web
testimonial_media_uploads_create
Due modi. Per caricare, invia filename, content_type e byte_size: la risposta contiene upload, con l'url a cui fare il PUT del file, le intestazioni da inviare con esso e, per un file grande, parts che si possono inviare una alla volta. Poi chiama testimonial_media_uploads_finish. Oppure invia source_url e il file viene scaricato ed elaborato per te: interroga testimonial_media_get finché il suo state è ready. Limiti: video e audio fino a 500 MB e lunghi quanto consente il piano (2 minuti su Pro, 10 minuti su Business, nessuno su Free, dove il server risponde con 402 plan_limit), immagini fino a 10 MB, un logo fino a 2 MB.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/media/uploads.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/media/:id.json
Elimina un file che nessuna testimonianza conserva
testimonial_media_delete
Un file che appartiene a una testimonianza viene eliminato con la testimonianza, tramite il cestino. I file archiviati vengono eliminati e i loro indirizzi vengono rimossi dalla cache.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/media/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/media/uploads/:id/finish.json
Indica che un caricamento è completo, così il file viene controllato ed elaborato
testimonial_media_uploads_finish
Chiamalo una volta inviato il file. Il file deve essere nell'archivio dei caricamenti ed essere esattamente della dimensione promessa. Chiamarlo due volte è sicuro.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/media/uploads/:id/finish.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/media/:id/retry.json
Riprova un file fallito
testimonial_media_retry
Elabora di nuovo il file dal caricamento che è stato conservato. Il caricamento viene conservato per 24 ore dopo un fallimento. Dopo di che il server risponde con not_retryable e il file deve essere caricato di nuovo.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/media/:id/retry.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/media/:id.json
Ottieni un file con il suo stato e dove caricarlo
testimonial_media_get
L'url è l'indirizzo duraturo del file finito sull'host dei media, ed è null finché lo stato non è ready. L'indirizzo è lo stesso per tutti e non è firmato, quindi inoltra solo l'indirizzo di un file il cui campo shareable è true.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/media/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Membri
POST
/workspaces/:workspace_id/invitations.json
Invita persone via email
invitations_create
Invita una o più persone in un workspace via email e invia a ciascuna un'email di invito con un link valido per 14 giorni. emails è un elenco di fino a 50 indirizzi (nel modulo dell'app funziona anche una stringa separata da virgole, spazi o punti e virgola) e gli indirizzi che sono già membri vengono saltati, ma è un errore quando lo sono tutti. Invitare un indirizzo che ha già un invito in sospeso sostituisce quell'invito e invia una nuova email. role è uno dei ruoli di members_list (predefinito viewer, owner non può essere invitato). Usa il ruolo custom insieme a custom_role_id (l'id da roles_list, piano Business). Per impostazione predefinita l'accesso copre tutti i siti, compresi quelli futuri. Per limitare l'accesso imposta all_sites su false ed elenca site_ids come id pubblici dei siti (pa_...). Gli inviti in sospeso contano nel limite di membri del piano (Free consente 3 membri) e la chiamata fallisce quando il limite verrebbe superato. Le email di invito hanno un limite di frequenza. Non puoi concedere un ruolo con più permessi o più siti dei tuoi. Richiede members.manage. Restituisce gli inviti creati (vedi invitations_list per i campi).
Permesso: members.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/invitations.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/invitations/:id.json
Revoca un invito in sospeso
invitations_delete
Revoca un invito in sospeso così il suo link non funziona più e libera il posto che occupava. L'eliminazione non può essere annullata: invita di nuovo la persona con invitations_create. Prendi l'id (un uuid) da invitations_list. Chi è limitato ad alcuni siti può revocare solo inviti che non concedono più dei suoi siti. Richiede members.manage. Restituisce l'invito revocato.
Permesso: members.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/invitations/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/invitations.json
Elenca gli inviti in sospeso
invitations_list
Elenca gli inviti al team in sospeso di un workspace, dal più recente e paginati. Gli inviti accettati e revocati non sono elencati (usa members_list per chi si è unito) e quelli scaduti restano finché non vengono sostituiti o revocati. Richiede members.manage. Chi è limitato ad alcuni siti vede solo gli inviti entro la sua portata. Ogni elemento ha id (uuid, usato da invitations_delete), email, role, custom_role (il nome del ruolo personalizzato quando role è custom, altrimenti null), all_sites, site_ids (id pubblici dei siti pa_..., vuoto quando all_sites è true), invited_by (l'email di chi ha invitato), expires_at e created_at.
Permesso: members.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/invitations.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE
/workspaces/:workspace_id/members/:id.json
Rimuovi un membro (o lascia il workspace)
members_delete
Rimuove un membro da un workspace, oppure permette a chi chiama di lasciarlo quando l'id è la sua stessa appartenenza. È immediato e non può essere annullato: la persona perde l'accesso, i suoi token API per questo workspace vengono revocati e ogni collegamento SCIM viene rimosso. Le sue note e le voci passate del registro di controllo restano. Il proprietario non può essere rimosso né andarsene, trasferisci prima la proprietà con ownership_transfers_create. Rimuovere un'altra persona richiede members.manage e non puoi rimuovere chi ha più permessi o più siti di quelli che hai tu. Lasciare non richiede alcun permesso, ma un token limitato nei permessi o nei siti non può essere usato per andarsene. La persona può essere invitata di nuovo in seguito con invitations_create. Prendi l'id (l'uuid dell'appartenenza) da members_list. Restituisce il membro rimosso.
Permesso: member
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/members/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/members.json
Elenca i membri del workspace
members_list
Elenca i membri di un workspace nell'ordine in cui si sono uniti, paginati. Usa query per cercare per nome o email (parziale, senza distinzione tra maiuscole e minuscole) e role per filtrare per ruolo. Gli inviti in sospeso non sono inclusi (usa invitations_list). Ogni membro ha id (l'uuid dell'appartenenza, usato da members_update, members_delete e ownership_transfers_create), email, name (può essere null), role, custom_role (nome, null a meno che role sia custom), custom_role_id, all_sites, include_future_sites, site_ids (id pubblici dei siti pa_..., vuoto quando all_sites è true), two_factor (se il membro ha un'app di autenticazione o una passkey), last_active_at (può essere null) e created_at. Chi è limitato ad alcuni siti vede solo i membri entro la sua portata.
Permesso: member
curl https://privatusanalytics.com/workspaces/:workspace_id/members.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/members/:id.json
Cambia il ruolo o l'accesso ai siti di un membro
members_update
Cambia il ruolo e/o l'accesso ai siti di un membro in un workspace. Cambia solo ciò che invii. Per cambiare il ruolo invia role (admin, editor, analyst, viewer o billing, e custom con custom_role_id da roles_list sul piano Business). Il ruolo del proprietario non può essere cambiato qui, usa invece ownership_transfers_create, e non puoi modificare la tua appartenenza né quella di chi ha un grado superiore al tuo. Per limitare i siti invia all_sites false insieme a site_ids (id pubblici dei siti pa_...) e aggiungi include_future_sites true per concedere anche i siti creati in seguito. Invia all_sites true per dare accesso a ogni sito. Un elenco site_ids inviato senza all_sites false è un errore per un membro che al momento ha tutti i siti. Non puoi concedere più permessi o più siti di quelli che hai. Richiede members.manage. Prendi l'id da members_list. Restituisce il membro aggiornato.
Permesso: members.manage
· Solo HTTP (non è uno strumento MCP)
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/members/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/ownership_transfer.json
Trasferisci la proprietà del workspace a un altro membro (solo il proprietario, tu diventi amministratore)
ownership_transfers_create
Trasferisce la proprietà di un workspace a un altro membro e declassa chi chiama ad admin, cosa difficile da annullare perché solo il nuovo proprietario può ritrasferirla. Solo l'attuale proprietario può chiamarlo e un token non deve essere limitato a certi siti o permessi. membership_id è l'uuid dell'appartenenza del nuovo proprietario da members_list (non un id utente né un'email) e la persona deve già essere un membro: invitala prima se non lo è. Il nuovo proprietario riceve il ruolo owner con accesso a tutti i siti e il ruolo owner non può essere assegnato tramite members_update. Un workspace Free non può essere dato a chi possiede già un altro workspace Free. La fatturazione resta con il workspace. Un token che chiama questa operazione deve avere members.manage. Restituisce il record membro del nuovo proprietario.
Permesso: member
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/ownership_transfer.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Menzioni delle testimonianze
GET
/sites/:site_id/testimonials/mentions.json
Elenca le parole e le frasi che ricorrono nelle testimonianze di un sito
testimonial_mentions_list
Ogni termine ha quante testimonianze lo contengono, la sua quota, la valutazione media di quelle, e gli ultimi 90 giorni a confronto con i 90 precedenti. Ordina per rating_asc per leggere di cosa si lamentano le persone, o per rising per ciò che è nuovo. meta.refreshed_at indica quando i termini sono stati ricostruiti l'ultima volta. Passa un termine a testimonials_list come mention per leggere le testimonianze.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/mentions.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/mentions/tag.json
Tagga ogni testimonianza che menziona una parola o una frase
testimonial_mentions_tag
Un'unica azione in blocco sull'intero risultato, con annullamento. Il termine è una qualsiasi parola o frase di due parole, abbinata con lo stemming nello stesso modo in cui vengono contate le Menzioni. Un tag nominato per la prima volta viene creato. Risponde con un id di annullamento che testimonials_bulk_undo accetta per 7 giorni. Più di 100 vengono eseguite in background.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/mentions/tag.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/testimonials/mentions.json
Nascondi un termine che è solo rumore, o mostralo di nuovo
testimonial_mentions_update
Un termine nascosto esce dall'elenco Menzioni e dalla faccetta Menzioni dell'inbox, e resta nascosto quando i termini vengono ricostruiti.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/mentions.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Migrazioni delle testimonianze
POST
/sites/:site_id/testimonials/imports/migrations/:id/discard.json
Scarta ciò che una migrazione ha letto
testimonial_migrations_discard
Fornisci item_ids (id da testimonial_migrations_review) oppure all true per tutto ciò che è ancora in attesa, mai entrambi. Un elemento scartato lascia il passaggio di revisione e ciò che era stato letto sulla persona viene cancellato. Nessuna testimonianza viene eliminata. Altrimenti il server risponde con 422 e il codice selection o unknown_ids.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id/discard.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports/migrations.json
Elenca le migrazioni di un sito
testimonial_migrations_list
Dalla più recente. Una migrazione è un file di esportazione di un altro strumento per testimonianze. Ognuna ha lo strumento da cui proviene, il suo stato e quante testimonianze sono state trovate, mantenute, duplicate e fallite.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/imports/migrations/:id/keep.json
Mantieni ciò che una migrazione ha letto come testimonianze
testimonial_migrations_keep
Fornisci item_ids (fino a 100 per chiamata, da testimonial_migrations_review) oppure all true, mai entrambi. Ogni elemento mantenuto diventa una testimonianza con stato pending o approved, e keep_approval true mantiene l'approvazione che aveva nell'altro strumento. Con all, i probabili duplicati vengono esclusi a meno che include_likely_duplicates sia true. Nulla di ciò che viene mantenuto conta nelle testimonianze mensili. Ciò che non viene mantenuto resta nel passaggio di revisione per 30 giorni.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id/keep.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports/migrations/:id/review.json
Elenca ciò che una migrazione ha letto e non è stato ancora deciso
testimonial_migrations_review
Elenca gli elementi ancora in attesa di una decisione, dall'esecuzione più recente. show è new, duplicates o all (il valore predefinito), e rating mantiene solo le valutazioni a stelle elencate. Passa gli id degli elementi a testimonial_migrations_keep o testimonial_migrations_discard.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id/review.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/imports/migrations/:id.json
Ottieni l'avanzamento e i conteggi di una migrazione
testimonial_migrations_get
Restituisce lo strumento da cui proviene il file, lo stato, quante testimonianze sono state trovate, mantenute, duplicate e fallite, quanti file multimediali porta con sé e quando è iniziata e finita. Interrogala finché lo stato dice che il file è ancora in lettura.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Moduli
POST
/sites/:site_id/testimonials/forms.json
Crea un modulo
testimonial_forms_create
Una chiamata contiene l'intero modulo: passaggi, domande, logica di salto, testo del consenso e lingua. Tutto ciò che viene omesso parte da un valore predefinito sensato nella lingua del modulo, e lo slug deriva dal nome. Il link è https://privatus.page/f/<slug>. L'instradamento delle valutazioni basse e il CSS personalizzato richiedono il piano Business (402 plan_limit senza). Le risposte video e audio vengono offerte a chi dà la testimonianza dal piano Pro in su.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/forms/:id/permanent.json
Elimina definitivamente un modulo
testimonial_forms_delete
Elimina il modulo, i suoi record di invio, il suo premio e il suo feedback privato. Le testimonianze che ha raccolto vengono mantenute. Non si può annullare, quindi lo fa una persona dalla pagina. L'API accetta confirm (il nome o l'id del modulo).
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/permanent.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/forms/:id.json
Sposta un modulo nel cestino
testimonial_forms_trash
Il suo link risponde che il modulo è chiuso finché non viene ripristinato. Il cestino viene svuotato dopo 30 giorni. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/forms/:id/duplicate.json
Copia un modulo, se vuoi in un'altra lingua
testimonial_forms_duplicate
Copia ogni impostazione tranne lo slug, le statistiche e il premio.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/forms.json
Elenca i moduli di un sito
testimonial_forms_list
I moduli nel cestino vengono elencati con trashed true e altrimenti esclusi. Ogni modulo contiene le sue impostazioni, il suo premio e quanti invii ha ricevuto.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/forms/:id/qr.json
Ottieni il codice QR di un modulo come SVG o PNG
testimonial_forms_qr
Il codice contiene il link del modulo con ?src=qr, così le scansioni vengono contate come canale a sé. Uno slug cambiato mantiene funzionante un codice stampato.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/qr.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/forms/:id/restore.json
Ripristina un modulo dal cestino. Il suo link funziona di nuovo
testimonial_forms_restore
Toglie un modulo dal cestino così com'era, con le sue domande, gli invii e il feedback privato. Il suo link (/f/<slug>) e i suoi incorporamenti accettano di nuovo risposte. Il server risponde con 422 e il codice not_in_trash per un modulo che non è nel cestino.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/restore.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/forms/:id.json
Ottieni un modulo con ogni passaggio, domanda, regola e impostazione
testimonial_forms_get
Restituisce l'intero modulo così come lo accettano testimonial_forms_create e testimonial_forms_update, con il suo slug, il suo link, il suo premio e quanti invii ha. Un modulo nel cestino qui non viene trovato: ripristinalo prima.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/forms/:id.json
Cambia un modulo. Cambiano solo gli input inviati
testimonial_forms_update
Una modifica a un passaggio, a una domanda o al testo del consenso aumenta la versione del modulo, che ogni record di consenso memorizza. Uno slug cambiato lascia il vecchio link con un reindirizzamento. Invia questions come elenco completo.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Note
POST
/sites/:site_id/notes.json
Aggiungi una nota a un sito (usa la sorgente "deploy" per i webhook di rilascio)
notes_create
Aggiunge un'annotazione ai grafici di un sito, ad esempio un lancio, una campagna o un rilascio. Usa invece workspace_notes_create per una nota che compare su ogni sito. date per impostazione predefinita è oggi nel fuso orario del sito e end_date indica un intervallo (YYYY-MM-DD). title viene mostrato sul grafico, body è testo semplice e url può puntare a una PR o a un changelog. color è uno tra neutral, brand, blue, amber, red o violet, predefinito neutral. source è manual per impostazione predefinita. Le integrazioni di deploy inviano source deploy e allora title per impostazione predefinita è un testo costruito da version (una versione di rilascio o un commit) e color per impostazione predefinita è blue. Richiede content.write. Restituisce la nota creata (vedi notes_list per i campi).
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/notes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/notes/:id.json
Elimina una nota
notes_delete
Elimina in modo permanente una nota del sito, che scompare dai grafici e non può essere ripristinata. La nota deve appartenere a questo sito, le note dell'intero workspace si eliminano con workspace_notes_delete. Prendi l'id (note_...) da notes_list. Richiede content.write. Restituisce la nota eliminata.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/notes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/notes.json
Elenca le note di un sito (comprese quelle valide per tutto il workspace)
notes_list
Elenca le annotazioni (note) mostrate sui grafici di un sito, dalla data più recente e paginate. Restituisce le note del sito stesso più le note dell'intero workspace che si applicano a ogni sito. Filtra con from e to (YYYY-MM-DD, una nota corrisponde quando la sua data cade nell'intervallo), source (manual, deploy, system, import o incident) e query (una ricerca senza distinzione tra maiuscole e minuscole in title, body e url). Usa workspace_notes_list per la vista del workspace su tutti i siti. Ogni nota ha id (note_...), site_id (l'id pubblico del sito pa_..., null per una nota dell'intero workspace), date, end_date (null per un solo giorno), title, body (testo semplice, può essere null), url (può essere null), color (neutral, brand, blue, amber, red o violet), source e created_at. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/notes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/notes/:id.json
Ottieni una nota
notes_get
Restituisce una nota tramite il suo id (note_..., da notes_list) per un sito, comprese le note dell'intero workspace che si applicano al sito. Una nota è un'annotazione datata mostrata sui grafici, ad esempio un lancio, una campagna o un deploy. I campi sono id, site_id (null quando riguarda l'intero workspace), date e end_date (YYYY-MM-DD, end_date null per un solo giorno), title, body (può essere null), url (può essere null), color (neutral, brand, blue, amber, red o violet), source (manual, deploy, system, import o incident) e created_at. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/notes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/notes/:id.json
Modifica una nota
notes_update
Modifica una nota del sito, cambiando solo i campi che invii (date, end_date, title, body, url, color). source non può essere cambiato. Inviare un url vuoto rimuove il link e una date null viene ignorata. La nota deve appartenere a questo sito, le note dell'intero workspace si modificano con workspace_notes_update. Prendi l'id (note_...) da notes_list. Richiede content.write. Restituisce la nota aggiornata.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/notes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/notes.json
Aggiungi una nota valida per tutto il workspace (mostrata su ogni sito)
workspace_notes_create
Aggiunge un'annotazione per l'intero workspace che compare sui grafici di ogni sito del workspace, ad esempio un lancio dell'azienda o un'interruzione. Viene creata senza un sito (site_id è null). Usa notes_create per una nota su un singolo sito. date per impostazione predefinita è oggi nel fuso orario del workspace, end_date indica un intervallo (YYYY-MM-DD), color è uno tra neutral, brand, blue, amber, red o violet. Richiede content.write e chi è limitato ad alcuni siti non può creare note per l'intero workspace. Restituisce la nota creata.
Permesso: content.write
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/notes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/notes/:id.json
Elimina una nota del workspace
workspace_notes_delete
Elimina in modo permanente una nota dell'intero workspace, che scompare dai grafici di ogni sito e non può essere ripristinata. Qui si possono eliminare solo le note senza sito, usa notes_delete per una nota di un sito. Prendi l'id (note_...) da workspace_notes_list. Richiede content.write e chi è limitato ad alcuni siti non può eliminare note dell'intero workspace. Restituisce la nota eliminata.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/notes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/notes.json
Elenca le note di un workspace
workspace_notes_list
Elenca le annotazioni di un workspace, dalla data più recente e paginate. Restituisce le note dell'intero workspace (che compaiono su ogni sito) più le note di ogni sito a cui chi chiama può accedere, quindi controlla site_id su ogni elemento (null significa intero workspace). Usa notes_list per un solo sito. Filtra con from e to (YYYY-MM-DD), source (manual, deploy, system, import o incident) e query (cerca in title, body e url). I campi sono id (note_...), site_id, date, end_date, title, body, url, color (neutral, brand, blue, amber, red o violet), source e created_at. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/notes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/notes/:id.json
Modifica una nota del workspace
workspace_notes_update
Modifica una nota dell'intero workspace, cambiando solo i campi che invii (date, end_date, title, body, url, color). Qui si possono modificare solo le note senza sito, usa notes_update per una nota di un sito. Prendi l'id (note_...) da workspace_notes_list. Richiede content.write e chi è limitato ad alcuni siti non può modificare note dell'intero workspace. Restituisce la nota aggiornata.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/notes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Obiettivi
POST
/sites/:site_id/goals/:id/archive.json
Archivia un obiettivo (nascosto dai report)
goals_archive
Archivia un obiettivo. Un obiettivo archiviato viene nascosto dai report, non conta nel limite di obiettivi del piano e mantiene la sua definizione, quindi può essere ripristinato in seguito con goals_unarchive. Nessun dato viene eliminato. Restituisce l'obiettivo con archived true e archived_at impostato. Archiviare un obiettivo già archiviato non fa nulla. Usa goals_delete per rimuoverlo definitivamente. Richiede il permesso content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/goals/:id/archive.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/goals.json
Crea un obiettivo
goals_create
Crea un obiettivo di conversione. Gli obiettivi sono definizioni applicate quando i report vengono letti, quindi un nuovo obiettivo conta subito gli eventi corrispondenti in tutto lo storico esistente. Sono obbligatori name e kind. kind decide quali altri input si applicano. page richiede pattern (un percorso, ad esempio /thank-you, con match_type exact, prefix, glob o regex) e può usare hostname. event richiede event_name e può usare conditions (test sulle proprietà come {key: plan, operator: is, value: pro}, devono corrispondere tutti, operatori is, is_not, contains, gt, lt). engagement richiede pattern più scroll_threshold (percentuale da 1 a 100) e/o time_threshold_seconds (raggiunto quando uno dei due è soddisfatto). outbound confronta il dominio del link con pattern (ad esempio stripe.com) e download confronta il file con pattern (ad esempio *.pdf). value_mode è none (predefinito), fixed (usa fixed_value, un importo decimale nella valuta del sito come 49.5, memorizzato come fixed_value_minor in centesimi) o revenue (il ricavo proprio dell'evento). count_mode è once_per_visit (predefinito) o every. I workspace Free consentono 10 obiettivi attivi per sito, i piani a pagamento sono illimitati. Restituisce l'obiettivo con id (goal_...). Richiede il permesso content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/goals.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/goals/:id.json
Elimina un obiettivo (i dati vengono conservati)
goals_delete
Elimina in modo permanente la definizione di un obiettivo. Nessun dato degli eventi viene eliminato, ma l'obiettivo scompare dai report e i passaggi di funnel, i percorsi e gli esperimenti che lo usano smettono di funzionare. Non c'è modo di annullare. Per nascondere un obiettivo e conservarlo usa goals_archive. Restituisce l'obiettivo eliminato. Gli id (goal_...) provengono da goals_list. Richiede il permesso content.write.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/goals/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/goals/:id/duplicate.json
Copia un obiettivo
goals_duplicate
Copia la definizione di un obiettivo in un nuovo obiettivo attivo. La copia si chiama name se lo invii, altrimenti il nome originale seguito da (copy). Conta nel limite di obiettivi del piano (10 obiettivi attivi per sito su Free). Restituisce il nuovo obiettivo con un nuovo id. Usalo per iniziare una variante di un obiettivo, poi modificala con goals_update. Richiede il permesso content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/goals/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/goals.json
Elenca gli obiettivi con completamenti, conversioni, tasso e valore per un periodo
goals_list
Elenca gli obiettivi di un sito con i loro risultati per il periodo. Ogni obiettivo è la definizione (id goal_..., name, kind, match_type, pattern, hostname, event_name, conditions, scroll_threshold, time_threshold_seconds, value_mode, fixed_value_minor in centesimi, count_mode, archived, archived_at) più stats {completions, conversions, conversion_rate, value, change}. conversion_rate è una percentuale (da 0 a 100), value è in unità minori (centesimi) e change è la variazione percentuale delle conversioni rispetto al periodo precedente (null quando il conteggio precedente era 0). status filtra su active (predefinito), archived o all. Paginato con page e per_page (massimo 100, predefinito 25). Usa goals_get per il report completo di un obiettivo. Accetta gli input condivisi period, compare e filters.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/goals.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/goals/:id.json
Report dell'obiettivo: metriche, grafico, suddivisioni e il percorso verso la conversione
goals_get
Un obiettivo nel dettaglio per un periodo. Restituisce period, goal_id, goal (la definizione), metrics, interval, series, breakdowns, journey e, con compare, comparison_period, comparison e change. metrics ha completions (ogni evento corrispondente), conversions (le visite con almeno un completamento), conversion_rate (percentuale da 0 a 100) e value (unità minori, centesimi). conversion_rate divide per le visite, oppure per i visitatori quando il sito è impostato così. series è un elenco di {date, completions, conversions, conversion_rate} per intervallo di tempo (imposta interval per cambiarlo). breakdowns contiene i primi 10 per conversioni per channel, utm_campaign, entry_page, country e device, ciascuno come {value, completions, conversions, conversion_rate}. journey mostra converting_visits, median_seconds_to_convert, median_pages_before e pages_before (le prime 10 pagine viste prima di convertire, con visite e quota). Usa goals_list per tutti gli obiettivi insieme e funnels_get per i flussi a più passaggi. Accetta gli input condivisi period, compare, filters e segment.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/goals/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/goals/:id/unarchive.json
Ripristina un obiettivo archiviato
goals_unarchive
Ripristina un obiettivo archiviato in modo che compaia di nuovo nei report. Conta di nuovo nel limite di obiettivi del piano (10 obiettivi attivi per sito su Free), quindi la chiamata fallisce con un errore di limite del piano quando il sito è già al completo. Ripristinare un obiettivo non archiviato non fa nulla. Restituisce l'obiettivo con archived false. Gli id provengono da goals_list con status archived. Richiede il permesso content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/goals/:id/unarchive.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/goals/:id.json
Aggiorna un obiettivo
goals_update
Modifica la definizione di un obiettivo. Cambia solo ciò che invii. La nuova definizione si applica subito a tutto lo storico, quindi i numeri di conversione passati cambieranno. Gli input sono gli stessi di goals_create e valgono le stesse combinazioni, ad esempio event_name e conditions contano solo per gli obiettivi event e scroll_threshold e time_threshold_seconds solo per gli obiettivi engagement. fixed_value è un importo decimale nella valuta del sito (memorizzato in centesimi). Inviare conditions sostituisce tutte le condizioni esistenti. Restituisce l'obiettivo. Gli id provengono da goals_list. Richiede il permesso content.write.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/goals/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Pagine di stato
GET
/status/:slug/confirm/:token.json
Conferma un'iscrizione dal link ricevuto via email
public_status_pages_confirm
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/status/:slug/confirm/:token.json
GET
/status/:slug.json
Pagina di stato pubblica: stato attuale, barre di uptime a 90 giorni, incidenti e post
public_status_pages_get
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/status/:slug.json
POST
/status/:slug/subscribers.json
Iscrivi un indirizzo email (doppio opt-in)
public_status_pages_subscribe
I client browser inviano un token Cloudflare Turnstile come `cf-turnstile-response`. Le richieste con un token API non ne hanno bisogno.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/status/:slug/subscribers.json \
-H "Content-Type: application/json" -d '{…}'
POST
/status/:slug/unsubscribe/:token.json
Annulla l'iscrizione con il token ricevuto via email
public_status_pages_unsubscribe
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/status/:slug/unsubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/status_pages/:status_page_id/posts.json
Pubblica un aggiornamento su un incidente (invia un'email agli iscritti)
status_page_posts_create
Pubblica un aggiornamento su un incidente in una pagina di stato e, per impostazione predefinita, invia un'email ai suoi iscritti confermati. Sceglilo per annunciare o aggiornare un incidente e usa status_page_posts_update per far avanzare un incidente esistente (ad esempio a resolved) invece di creare un nuovo post. È obbligatorio title (massimo 200 caratteri). status è uno tra investigating (predefinito), identified, monitoring o resolved. body è testo semplice (massimo 10.000 caratteri), posted_at è un orario ISO 8601 che per impostazione predefinita è adesso e notify (predefinito true) controlla l'email. Le email vengono inviate solo per una pagina pubblicata e hanno un limite di frequenza per pagina: oltre il limite il post viene comunque pubblicato ma nessuno riceve l'email. Lo status_page_id proviene da status_pages_list. Richiede il permesso uptime.manage. Restituisce il post con id (spp_...), title, body, status, posted_at e updated_at.
Permesso: uptime.manage
curl -X POST https://privatusanalytics.com/status_pages/:status_page_id/posts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/status_pages/:status_page_id/posts/:id.json
Elimina un post della pagina di stato
status_page_posts_delete
Elimina in modo permanente un post di incidente da una pagina di stato. Scompare subito dalla pagina pubblica e l'azione non può essere annullata. Non viene inviata alcuna email. L'id proviene da status_page_posts_list. Richiede il permesso uptime.manage. Restituisce il post eliminato.
Permesso: uptime.manage
curl -X DELETE https://privatusanalytics.com/status_pages/:status_page_id/posts/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/status_pages/:status_page_id/posts.json
Elenca i post di una pagina di stato
status_page_posts_list
Elenca i post di incidente di una pagina di stato, dal più recente per posted_at. Usalo per trovare l'id di un post o vedere la cronologia degli incidenti. Puoi filtrare per status (investigating, identified, monitoring o resolved). Paginato con page e per_page (fino a 100). Ogni post ha id (spp_...), title, body (null quando vuoto), status, posted_at e updated_at. Lo status_page_id proviene da status_pages_list.
Permesso: analytics.read
curl https://privatusanalytics.com/status_pages/:status_page_id/posts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/status_pages/:status_page_id/posts/:id.json
Modifica un post della pagina di stato
status_page_posts_update
Modifica un post di incidente. Cambia solo ciò che invii, quindi invia solo status per risolvere un incidente. Gli iscritti ricevono un'email solo quando lo stato cambia davvero e notify non è false (predefinito true). Modificare solo il titolo o il corpo non invia alcuna email. Le email vanno agli iscritti confermati di una pagina pubblicata e hanno un limite di frequenza per pagina. I valori validi di status sono investigating, identified, monitoring e resolved. L'id proviene da status_page_posts_list. Richiede il permesso uptime.manage. Restituisce il post aggiornato.
Permesso: uptime.manage
curl -X PATCH https://privatusanalytics.com/status_pages/:status_page_id/posts/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/status_pages/:status_page_id/subscribers/:id.json
Rimuovi un iscritto
status_page_subscribers_delete
Rimuove un iscritto via email da una pagina di stato, così smette di ricevere le email su incidenti e uptime. L'azione non può essere annullata, ma la persona può iscriversi di nuovo dalla pagina pubblica. L'id è l'id dell'iscritto da status_page_subscribers_list (un semplice UUID, non un id con prefisso). Richiede il permesso uptime.manage. Restituisce l'iscritto rimosso.
Permesso: uptime.manage
curl -X DELETE https://privatusanalytics.com/status_pages/:status_page_id/subscribers/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/status_pages/:status_page_id/subscribers.json
Elenca gli iscritti a una pagina di stato
status_page_subscribers_list
Elenca gli iscritti via email di una pagina di stato, ordinati per email. Usa confirmed true per vedere solo chi ha confermato il proprio indirizzo (solo loro ricevono le email) oppure confirmed false per quelli in sospeso. Paginato con page e per_page (fino a 100). Ogni elemento ha id (un UUID, usato da status_page_subscribers_delete), email, confirmed_at (null finché in sospeso) e created_at. Lo status_page_id proviene da status_pages_list. Richiede il permesso uptime.manage e restituisce dati personali (indirizzi email). Richiede il piano Business o Enterprise (altrimenti 402 plan_limit).
Permesso: uptime.manage
curl https://privatusanalytics.com/status_pages/:status_page_id/subscribers.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/status_pages.json
Crea una pagina di stato
status_pages_create
Crea una pagina di stato pubblica per un workspace che mostra i controlli di uptime scelti, i post sugli incidenti e un'iscrizione via email. È obbligatorio name (massimo 100 caratteri). slug (lettere minuscole, cifre e trattini, univoco tra tutti i workspace) deriva per impostazione predefinita dal nome e la pagina viene servita su /status/<slug>. check_ids elenca i controlli di uptime da mostrare (id upc_... da uptime_checks_list) e vengono accettati solo i controlli creati con public true. published è true per impostazione predefinita, quindi la pagina è subito visibile a tutti. Il branding facoltativo comprende description (massimo 2.000 caratteri), logo_url (deve essere https), brand_color (esadecimale come #06755b) e custom_domain (un hostname che punti con un CNAME all'app, univoco). Usa status_page_posts_create per pubblicare gli incidenti in seguito. Richiede il permesso uptime.manage. Restituisce la pagina con id (sp_...), slug, check_ids e subscribers (numero di iscritti confermati). Il piano stabilisce quante pagine ha un workspace: nessuna su Free (402 plan_limit), 1 su Pro e 10 su Business. Un custom_domain e gli iscritti via email richiedono il piano Business o Enterprise. Le pagine oltre il numero del piano vengono conservate e messe offline.
Permesso: uptime.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/status_pages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/status_pages/:id.json
Elimina una pagina di stato
status_pages_delete
Elimina in modo permanente una pagina di stato insieme a tutti i suoi post sugli incidenti e agli iscritti. La pagina pubblica e il suo dominio personalizzato smettono subito di funzionare e l'azione non può essere annullata. I controlli di uptime stessi non vengono eliminati. L'id proviene da status_pages_list. Richiede il permesso uptime.manage. Restituisce la pagina eliminata.
Permesso: uptime.manage
curl -X DELETE https://privatusanalytics.com/status_pages/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/status_pages.json
Elenca le pagine di stato
status_pages_list
Elenca le pagine di stato di un workspace ordinate per nome. Usa query per cercare una parte di un nome o di uno slug. Quando chi chiama è limitato ad alcuni siti, vengono restituite solo le pagine i cui controlli rientrano tutti in quei siti. Paginato con page e per_page (fino a 100). Ogni elemento ha i campi descritti in status_pages_get. Richiede il workspace_id da workspaces_list.
Permesso: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/status_pages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/status_pages/:id.json
Ottieni una pagina di stato
status_pages_get
Restituisce una pagina di stato con le sue impostazioni. I campi sono id (sp_...), workspace_id, name, slug, custom_domain (null quando assente), description, logo_url, brand_color, published, check_ids (gli id dei controlli di uptime mostrati nella pagina), subscribers (numero di iscritti via email confermati) e created_at. Usa status_page_posts_list per i suoi incidenti e status_page_subscribers_list per le persone. L'id proviene da status_pages_list.
Permesso: analytics.read
curl https://privatusanalytics.com/status_pages/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/status_pages/:id.json
Modifica una pagina di stato
status_pages_update
Modifica una pagina di stato. Cambia solo ciò che invii, quindi invia solo published false per mettere la pagina offline o check_ids per sostituire i controlli mostrati (l'intero elenco viene sostituito, non unito). Gli input e i loro limiti sono gli stessi di status_pages_create. Invia custom_domain come stringa vuota per rimuovere il dominio personalizzato. Possono essere mostrati solo i controlli con public true e chi è limitato ad alcuni siti può mettere in una pagina solo controlli di quei siti. L'id proviene da status_pages_list. Richiede il permesso uptime.manage. Restituisce la pagina aggiornata.
Permesso: uptime.manage
curl -X PATCH https://privatusanalytics.com/status_pages/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Persone delle testimonianze
POST
/sites/:site_id/testimonials/people/:id/ask_again.json
Avvia una richiesta con questa persona come unico destinatario
testimonial_people_ask_again
Usa il modulo che ha usato l'ultima volta, oppure il modulo di partenza. Nulla viene inviato finché la richiesta non viene inviata. Il server risponde con 422 e il codice no_email, bounced o unsubscribed quando alla persona non si può chiedere, e requests_unavailable quando le richieste non sono disponibili.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/people/:id/ask_again.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/people.json
Aggiungi una persona a un sito
testimonial_people_create
name è obbligatorio (fino a 120 caratteri). email non viene mai mostrata pubblicamente: raggruppa le testimonianze successive sotto questa persona e permette al sito di chiederle di nuovo, e un indirizzo che un'altra persona del sito ha già viene rifiutato. avatar_media_id è l'id (med_...) di un'immagine già caricata sul sito. Aggiungere una persona non aggiunge alcuna testimonianza.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/people.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/people/:id/permanent.json
Elimina definitivamente una persona, con tutto ciò che ha detto, i file e la cronologia delle richieste
testimonial_people_delete_permanently
Per una richiesta di cancellazione. Non si può annullare. Richiede confirm, il nome o l'id della persona, e lascia una voce di audit che non contiene né il nome né le parole.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/people/:id/permanent.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/people.json
Elenca le persone di un sito, filtrate e ordinate
testimonial_people_list
Ogni persona ha il conteggio delle sue testimonianze, quante sono approvate, la valutazione media e l'ultima richiesta con il suo esito. L'email è null a meno che chi chiama abbia content.write, e has_email indica comunque se ne esiste una registrata.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/people.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/people/:id/merge.json
Unisci altri record della stessa persona in questo
testimonial_people_merge
La persona nel percorso resta. Tutto ciò che hanno detto gli altri e ogni richiesta inviata loro passa a questa, e gli altri vengono rimossi. Un campo che questa persona ha vuoto viene riempito dagli altri, dal più vecchio, e use indica i nomi il cui valore vince per un campo. La risposta contiene meta.undo_id, che testimonial_undo_records_undo accetta per 7 giorni.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/people/:id/merge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/people/:id.json
Ottieni una persona con ciò che le è stato chiesto e le persone che sembrano la stessa persona
testimonial_people_get
Le sue testimonianze sono testimonials_list con person_id. can_ask e cannot_ask_reason indicano se testimonial_people_ask_again andrebbe a buon fine.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/people/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/people/:id.json
Modifica una persona. Cambiano solo i campi inviati
testimonial_people_update
Un valore vuoto cancella un campo, tranne il nome. Un'email che un'altra persona del sito ha già viene rifiutata. La pagina dell'azienda in cui è elencata una persona segue il nome e il sito web dell'azienda.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/people/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Piani
GET
/plans.json
Elenca piani, prezzi e limiti
plans_list
Elenca i piani pubblici (free, pro, business ed enterprise) con i loro limiti e le fasce di prezzo, così puoi scegliere valori validi per billing_checkout, billing_preview e billing_change_plan. Ogni piano ha name, events (eventi al mese inclusi, null per i piani a fasce o personalizzati), badge_bonus (eventi mensili extra dal badge, solo Free, altrimenti null), limits (un oggetto di limiti del piano come siti, posti membro, conservazione dello storico in mesi, obiettivi per sito, domande IA e richieste API all'ora), tiers (ciascuna con gli eventi al mese e il prezzo mensile e annuale in dollari USD interi, comprensivo di IVA o imposta sulle vendite) e contact_sales (true per i piani personalizzati). L'oggetto meta aggiunge currency, una nota sui prezzi annuali, counted (che cosa conta come evento fatturabile) e not_counted. Per il piano di un workspace specifico usa billing_get. Pubblico, nessuna autenticazione necessaria.
Permesso: public
curl https://privatusanalytics.com/plans.json
Premi
POST
/sites/:site_id/testimonials/settings/rewards/:id/copy.json
Copia il premio di un modulo in altri moduli dello stesso sito
testimonial_rewards_copy
Copia il titolo, il testo, il codice e lo stato attivo o disattivo del premio di questo modulo in ogni modulo di form_ids (da 1 a 100 moduli dello stesso sito, non nel cestino). Un premio che il modulo di destinazione ha già viene sostituito. Il server risponde con 422 e il codice unknown_ids quando un id non è un modulo del sito, e allora nulla viene copiato.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/rewards/:id/copy.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/settings/rewards.json
Elenca il premio di ogni modulo di un sito
testimonial_rewards_list
Una riga per modulo. Un modulo senza premio impostato ha enabled false.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/rewards.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/settings/rewards/:id.json
Imposta il premio che un modulo mostra nel passaggio di ringraziamento
testimonial_rewards_update
L'id è l'id del modulo. Il codice è testo che fornisci tu. Privatus Analytics non lo crea, non lo controlla e non lo fa scadere.
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/rewards/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Prestazioni
GET
/sites/:site_id/performance.json
Web Vitals: scheda p75, andamento giornaliero e suddivisioni per pagina, dispositivo, browser e paese
performance_report
Report sui Web Vitals dai visitatori reali. Restituisce period, metric, sample_rate, scorecard, trend e breakdowns. scorecard ha una riga per ciascuno tra LCP, INP, CLS, FCP e TTFB con p75 (il 75° percentile, in millisecondi tranne CLS, che è un punteggio senza unità), samples, rating (good, needs_improvement o poor, null senza dati), good, needs_improvement e poor (percentuale dei campioni), previous_p75, change (percentuale rispetto al periodo precedente, null quando sconosciuta) e thresholds [limite good, limite poor]. trend è il p75 giornaliero della metrica scelta come {date, p75, samples}. breakdowns contiene page, device, browser e country, ciascuno con fino a limit righe (predefinito 10, massimo 100) della metrica scelta come {value, p75, samples, rating, slow_share, poor}, prima le peggiori e più frequentate. Scegli metric con esattamente uno tra LCP, INP, CLS, FCP o TTFB in maiuscolo (predefinito LCP). sample_rate è la quota di visite che riportano i vitals, quindi i conteggi sono campioni e non tutte le visite. Accetta gli input condivisi period, compare, filters e segment. Per i vitals di una singola pagina usa pages_detail.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/performance.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Programma di affiliazione
GET
/account/affiliate/commissions.json
Elenca le tue commissioni di affiliazione
affiliate_commissions_list
Commissioni, storni per rimborsi e chargeback e relativi annullamenti, dalla più recente. Gli importi sono in centesimi.
Permesso: member
curl https://privatusanalytics.com/account/affiliate/commissions.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/account/affiliate/signup-box.json
Ottieni il codice del tuo box di registrazione da affiliato e i risultati
affiliate_signup_box_get
Il codice di incorporamento del tuo box di registrazione (uno script e un iframe semplice) per il tema scelto, gli attributi che precompilano il modulo, gli eventi che lo script genera nella tua pagina e i numeri del box: registrazioni in attesa di conferma, registrazioni confermate e clienti paganti. available è false finché la tua candidatura da affiliato non viene approvata.
Permesso: member
curl https://privatusanalytics.com/account/affiliate/signup-box.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/account/affiliate.json
Ottieni il tuo stato di affiliato, il link di segnalazione e le statistiche
affiliate_get
Lo stato della tua candidatura da affiliato, il link di segnalazione, le registrazioni e i clienti paganti che hai segnalato e i saldi per valuta (in sospeso, pagabile, pagato). status è none se non ti sei candidato.
Permesso: member
curl https://privatusanalytics.com/account/affiliate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Proprietà personalizzate delle testimonianze
POST
/sites/:site_id/testimonials/settings/properties.json
Aggiungi una proprietà personalizzata a un sito
testimonial_properties_create
Un sito può avere fino a 20 proprietà attive. La chiave è fissa una volta creata, perché i link dei moduli, le regole e l'API la usano. Se la ometti viene suggerita a partire dall'etichetta.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/settings/properties/:id.json
Elimina definitivamente una proprietà personalizzata e i suoi valori
testimonial_properties_destroy
Non si può annullare. Rimuove la proprietà e il suo valore da ogni testimonianza. confirm è la chiave. Una proprietà usata da una raccolta intelligente o da una regola di tag automatico non può essere eliminata finché le usano. Archiviare è il modo normale di ritirarne una.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/settings/properties.json
Elenca le proprietà personalizzate di un sito, in ordine di visualizzazione
testimonial_properties_list
Ognuna indica la sua chiave, il tipo e le scelte, quante testimonianze hanno un valore (filled), se il suo tipo può ancora cambiare e quali raccolte intelligenti e regole di tag automatico la usano.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/settings/properties/:id.json
Cambia, riordina, archivia o riporta in vita una proprietà personalizzata
testimonial_properties_update
Solo gli input che invii cambiano qualcosa. Rinominare una scelta la rinomina su ogni testimonianza che la ha. Una proprietà usata da una raccolta intelligente o da una regola di tag automatico non può essere archiviata finché le usano.
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Raccolta
POST
/embed/ads/e.json
Registra che una creatività è stata mostrata, vista o cliccata, richiamato dal loader degli annunci
ad_serving_event
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/embed/ads/e.json \
-H "Content-Type: application/json" -d '{…}'
GET
/embed/ads/:site.json
Gli slot pubblicitari di un sito e le creatività mostrate da ciascuno, richiamati dal loader degli annunci
ad_serving_slots
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/embed/ads/:site.json
POST
/api/overlay.json
I clic di una pagina per il livello dei clic, chiamato da pa.overlay.js con il suo pass
click_overlays_read
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/api/overlay.json \
-H "Content-Type: application/json" -d '{…}'
POST
/api/logs.json
Invia i log di accesso del server per i report sui crawler IA (JSON {lines: [...]} oppure testo di log combinato, con la chiave dei log dei crawler del sito come Bearer token)
crawler_logs_create
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/api/logs.json \
-H "Content-Type: application/json" -d '{…}'
POST
/api/event.json
Raccogli una visita dal browser (usato da /js/pa.js)
ingest_event
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/api/event.json \
-H "Content-Type: application/json" -d '{…}'
GET
/api/experiment.json
Indica se un esperimento invia questo visitatore a una pagina variante, chiamato dallo script head degli esperimenti
ingest_experiment
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/api/experiment.json
GET
/js/exp/:site.json
Lo script che il tag head facoltativo degli esperimenti carica per un sito
ingest_experiment_script
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/js/exp/:site.json
POST
/api/survey.json
Registra che una scheda del sondaggio è stata mostrata, chiusa o compilata
ingest_survey
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/api/survey.json \
-H "Content-Type: application/json" -d '{…}'
GET
/api/surveys.json
Quale sondaggio mostrare in una pagina, richiamato dal modulo ask del tracker
ingest_surveys
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/api/surveys.json
Raccolte di testimonianze
POST
/sites/:site_id/testimonials/collections/:id/items.json
Aggiungi testimonianze a una raccolta manuale
testimonial_collections_add_items
Fino a 100 per volta. Si aggiungono in fondo, o in cima con position top, nell'ordine dato. La risposta ha meta.undo_id, che testimonials_bulk_undo accetta per 7 giorni. Una raccolta intelligente non accetta nulla a mano.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id/items.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/collections.json
Crea una raccolta, manuale o intelligente
testimonial_collections_create
kind manual si compone a mano, e testimonial_ids la avvia già piena. kind smart si mantiene aggiornata con condizioni: righe di campo, operatore e valore unite da match. La risposta contiene il conteggio e le regole in italiano semplice, quindi una sola chiamata trasforma una frase in una raccolta viva. Prova prima le regole con testimonial_collections_preview. Il tipo non cambia mai in seguito.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/collections.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/collections/:id.json
Sposta una raccolta nel cestino per 30 giorni
testimonial_collections_destroy
Le sue testimonianze non vengono toccate. Un widget o un wall che alimenta non mostra nulla da essa finché non viene ripristinata. Ripristinala con testimonial_trash_restore. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/collections.json
Elenca le raccolte di un sito
testimonial_collections_list
Ogni raccolta ha quante testimonianze contiene in questo momento, quante sono approvate, le sue regole in italiano semplice se è intelligente e i widget e i wall che alimenta. Le raccolte nel cestino sono escluse.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/collections/preview.json
Prova un insieme di regole senza salvare nulla
testimonial_collections_preview
Risponde con quante testimonianze corrispondono in questo momento, le regole in italiano semplice e cinque esempi. Usalo prima di testimonial_collections_create o testimonial_tags_update. Una riga non valida è un 422 che nomina la riga.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE
/sites/:site_id/testimonials/collections/:id/items.json
Togli testimonianze da una raccolta manuale
testimonial_collections_remove_items
Fino a 100 per volta. Le testimonianze in sé non vengono modificate. La risposta ha meta.undo_id, e un annullamento rimette ognuna al suo posto.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id/items.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/collections/:id/reorder.json
Sposta una testimonianza in un altro punto di una raccolta manuale
testimonial_collections_reorder
Indica il punto con esattamente uno tra position (contato da 1), before_id o after_id. L'ordine è quello servito a ogni widget e wall che la raccolta alimenta.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id/reorder.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/collections/:id.json
Ottieni una raccolta con i suoi conteggi, le sue regole e ciò che alimenta
testimonial_collections_get
Le sue testimonianze sono testimonials_list con collection_id.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/collections/:id.json
Cambia nome, descrizione, regole o ordine di servizio di una raccolta
testimonial_collections_update
Cambia solo ciò che viene inviato. Inviare conditions sostituisce ogni regola di una raccolta intelligente. Il tipo è fisso.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Registro di controllo
GET
/workspaces/:workspace_id/audit_log.json
Elenca le voci del registro di controllo (aggiungi .csv per esportare)
audit_logs_get
Restituisce il registro di controllo del workspace, un elenco paginato dal più recente di chi ha cambiato che cosa (impostazioni, membri, siti, obiettivi, token e così via). Richiede il permesso workspace.manage e un piano con cronologia di controllo. Il piano Free non ne ha e la chiamata fallisce con un errore di limite del piano, Pro conserva 30 giorni, Business 365 giorni ed Enterprise non ha limiti. Le voci più vecchie della finestra di conservazione non vengono mai restituite. Filtra con actor (l'email di un membro, corrispondenza esatta), item_type (il tipo di record, ad esempio Site, Goal o Membership), event (create, update o destroy), e from e to (YYYY-MM-DD, inclusivi, in UTC). Ogni voce ha id, created_at, event, item_type, item_id, target (un'etichetta leggibile come Site: example.com), actor_email (null quando la modifica è stata fatta dal sistema o da un utente eliminato), actor_name, token_name (il token API usato, null per una sessione del browser), changes (un oggetto che associa ogni campo modificato a una coppia [prima, dopo], senza i segreti) e ip (l'indirizzo usato dal membro o dal client API, null se sconosciuto). Un'esportazione CSV dello stesso registro è disponibile solo nell'app.
Permesso: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/audit_log.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Regole dei canali
POST
/sites/:site_id/channel_rules.json
Aggiungi una regola del canale
channel_rules_create
Aggiunge una regola di canale personalizzata in fondo all'elenco, quindi viene eseguita dopo tutte le regole esistenti e la tassonomia integrata si applica solo quando nessuna regola corrisponde. channel è il nome da assegnare (fino a 32 caratteri, ad esempio Partners). conditions è un elenco non vuoto di oggetti con field (referrer_host, utm_source, utm_medium, utm_campaign, ref o path), operator (is, contains, starts_with o regex) e value. Tutte le condizioni devono corrispondere perché la regola si applichi e il confronto non distingue tra maiuscole e minuscole. Una condizione con valore vuoto viene scartata e una regola rimasta senza condizioni viene rifiutata. Un'espressione regolare che non compila viene rifiutata. La regola si applica alle nuove visite entro pochi minuti e non modifica lo storico. Usa channel_rules_move per riordinare e channel_rules_preview per provarla. Richiede sites.manage.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/channel_rules.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/channel_rules/:id.json
Elimina una regola del canale
channel_rules_delete
Elimina una regola di canale personalizzata, trovata tramite il suo id da channel_rules_list. Le visite che ha già classificato mantengono il loro canale e le nuove visite passano alla successiva regola corrispondente o alla tassonomia integrata. Le regole rimanenti mantengono il loro ordine. Restituisce la regola eliminata. Richiede sites.manage.
Permesso: sites.manage
curl -X DELETE https://privatusanalytics.com/sites/:site_id/channel_rules/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/channel_rules.json
Elenca le regole dei canali in ordine
channel_rules_list
Elenca le regole di canale personalizzate di un sito nell'ordine di valutazione (prima la posizione 1). Le regole vengono eseguite dall'alto verso il basso su ogni nuova visita e la prima regola le cui condizioni corrispondono tutte decide il canale. Una visita che non corrisponde ad alcuna regola riceve il canale integrato (direct, organic_search, paid_search, email e così via). Ogni regola ha id (un UUID), channel (il nome che assegna), position (a partire da 1), conditions (un elenco di oggetti con field, operator e value, che devono corrispondere tutti) e created_at. Le regole influenzano solo le visite registrate dopo la loro creazione e non riscrivono mai i vecchi dati. Usa channel_rules_preview per provare una visita di esempio. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/channel_rules.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/channel_rules/:id/move.json
Sposta una regola del canale in su o in giù
channel_rules_move
Sposta una regola di canale nell'ordine di valutazione, perché vince la prima regola corrispondente e l'ordine decide quale canale riceve una visita. direction è up o down (di una posizione), oppure top o bottom (agli estremi). Una regola già al bordo resta dov'è senza errori. Le posizioni vengono rinumerate da 1 a n e la regola aggiornata viene restituita con la sua nuova posizione. Usa prima channel_rules_list per vedere l'ordine attuale. Richiede sites.manage.
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/channel_rules/:id/move.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/channel_rules/preview.json
Anteprima del canale per un referrer e tag UTM di esempio
channel_rules_preview
Prova a vuoto che indica quale canale riceverebbe una visita di esempio con le regole attuali del sito. Non viene memorizzato nulla. Invia uno qualsiasi tra referrer (un URL o un hostname semplice, i prefissi www e m vengono ignorati), utm_source, utm_medium, utm_campaign, ref, path (percorso di atterraggio come /pricing) e paid_click (true se l'URL conteneva un id di clic come gclid). Il risultato ha channel (il nome del canale vincente), custom_rule (true quando ha deciso una regola personalizzata, false quando ha deciso la tassonomia integrata) e referrer_host (l'hostname ripulito usato per il confronto). Un referrer sui domini del sito stesso conta come interno. Usalo dopo channel_rules_create o channel_rules_move per confermare l'effetto. Richiede analytics.read.
Permesso: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/channel_rules/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/channel_rules/:id.json
Modifica una regola del canale
channel_rules_update
Modifica una regola di canale personalizzata, trovata tramite il suo id da channel_rules_list. Invia channel per rinominare il canale che assegna e conditions per sostituire l'intero elenco di condizioni (l'elenco viene sostituito, non unito, quindi invia ogni condizione che vuoi mantenere). Gli input omessi restano invariati. I campi delle condizioni, gli operatori e la validità delle espressioni regolari vengono controllati come in channel_rules_create. La modifica si applica solo alle nuove visite. Per cambiare l'ordine usa channel_rules_move. Richiede sites.manage.
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/channel_rules/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Regole del traffico
POST
/sites/:site_id/traffic_rules.json
Aggiungi una regola del traffico
traffic_rules_create
Aggiunge un modello a una delle liste di blocco o di consenso del sito. list è uno tra hostnames, paths, referrers, countries, ip_ranges, user_agents o events. pattern usa * come carattere jolly e il confronto non distingue tra maiuscole e minuscole, ad esempio /admin/*, un hostname, un host di referrer come spam.example, un codice paese di due lettere (memorizzato in maiuscolo), il nome di un browser con la versione principale dato che lo user agent viene ridotto (ad esempio Chrome 120), oppure il nome di un evento personalizzato. ip_ranges accetta un indirizzo IPv4 o IPv6 oppure un CIDR (203.0.113.0/24), che deve essere valido. Un modello può esistere una sola volta per lista e un sito può avere fino a 500 regole. Se la lista blocca o consente ciò che corrisponde dipende dalla sua modalità, che per impostazione predefinita è block e si cambia con sites_update. Gli accessi corrispondenti vengono scartati alla raccolta e non memorizzati, e la regola si applica entro pochi minuti solo ai nuovi accessi. Richiede sites.manage. Richiede il piano Pro o superiore (altrimenti 402 plan_limit).
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/traffic_rules.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/traffic_rules/:id.json
Elimina una regola del traffico
traffic_rules_delete
Elimina una regola del traffico, trovata tramite il suo id da traffic_rules_list. Gli accessi che scartava vengono contati di nuovo da quel momento e quelli già scartati sono persi per sempre. Nota che eliminare l'ultimo modello di una lista in modalità allow fa smettere di filtrare quella lista. Restituisce la regola eliminata. Richiede sites.manage.
Permesso: sites.manage
curl -X DELETE https://privatusanalytics.com/sites/:site_id/traffic_rules/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/traffic_rules.json
Elenca le regole del traffico
traffic_rules_list
Elenca le regole del traffico del sito, cioè liste di blocco o di consenso applicate al momento della raccolta per decidere quali accessi contano. Ogni regola ha id (un UUID per modifica ed eliminazione), list (hostnames, paths, referrers, countries, ip_ranges, user_agents o events), pattern, label (nota facoltativa), mode (block o allow, la modalità dell'intera lista) e created_at. In modalità block un accesso che corrisponde a un qualsiasi modello della lista viene scartato, in modalità allow viene scartato un accesso che non ne corrisponde a nessuno e una lista vuota non filtra nulla. Filtra con list. La modalità di una lista non si imposta qui, si imposta con sites_update usando traffic_rule_modes. Usa traffic_rules_test per controllare un accesso di esempio. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/traffic_rules.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/traffic_rules/test.json
Verifica se una visita verrebbe conteggiata con le regole attuali del sito
traffic_rules_test
Prova a vuoto che indica se un accesso di esempio verrebbe contato con le regole del traffico attuali del sito. Non viene memorizzato nulla. Invia uno qualsiasi tra url (un URL di pagina completo, ne vengono controllati host e percorso), referrer (URL o hostname), country (codice di due lettere), ip (controllato rispetto a ip_ranges, mai memorizzato), user_agent (una stringa User-Agent completa, ridotta a browser e versione principale) ed event (il nome di un evento personalizzato). I valori che ometti non vengono controllati. Il risultato ha counted (true se l'accesso verrebbe registrato), blocked_by (la lista che l'ha scartato, oppure null), mode (block o allow per quella lista, oppure null) e values (i valori normalizzati che sono stati controllati). Le regole vengono lette in tempo reale, quindi una nuova regola compare subito. Richiede analytics.read. Richiede il piano Pro o superiore (altrimenti 402 plan_limit).
Permesso: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/traffic_rules/test.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/traffic_rules/:id.json
Modifica una regola del traffico
traffic_rules_update
Cambia il modello o l'etichetta di una regola del traffico, trovata tramite il suo id da traffic_rules_list. Cambia solo ciò che invii. La lista non può essere cambiata: elimina e ricrea la regola per spostarla in un'altra lista. Il modello deve restare valido per la sua lista (un CIDR per ip_ranges) e univoco al suo interno. Invia un'etichetta vuota per cancellarla. Si applica solo ai nuovi accessi. Richiede sites.manage. Richiede il piano Pro o superiore (altrimenti 402 plan_limit).
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/traffic_rules/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Report per sponsor
POST
/sites/:site_id/experiments/ads/:ad_placement_id/reports.json
Crea il link di un report per sponsor per uno spazio pubblicitario
ad_report_links_create
Un link di sola lettura ai numeri dello spazio, per tutte le sue creatività o per quelle elencate in creative_ids, per chi non ha un account. Tramite MCP il membro riceve un'email che avvisa della creazione del link. Pro e superiori. Richiede content.write. Restituisce il link con il suo url.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/reports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/experiments/ads/:ad_placement_id/reports/:id.json
Elimina il link di un report per sponsor
ad_report_links_delete
L'indirizzo smette di funzionare subito. Lo strumento MCP non lo esegue e risponde con human_only e la pagina in cui una persona può eliminarlo. Richiede content.write.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/reports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/experiments/ads/:ad_placement_id/reports.json
Elenca i link dei report per sponsor di uno spazio pubblicitario
ad_report_links_list
I link, con il loro indirizzo e la data di scadenza. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/reports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sponsor/:token.json
Un report per sponsor, tramite il token del suo link
ad_reports_get
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/sponsor/:token.json
Report via email
DELETE
/recipients/:id.json
Rimuovi un destinatario da un report via email
email_report_recipients_delete
Rimuove un indirizzo da un report via email (id del destinatario, da email_report_recipients_list). L'indirizzo smette di ricevere i report e la sua riga viene eliminata. Se l'indirizzo si era disiscritto da solo, la disiscrizione resta registrata, quindi rimuoverlo non permette a nessuno di invitarlo di nuovo. Per modificare molti indirizzi in una volta, invia invece l'elenco completo tramite email_reports_update. Restituisce il destinatario rimosso.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/recipients/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/reports/:report_id/recipients.json
Elenca i destinatari di un report via email con il loro stato
email_report_recipients_list
Stati: active (riceve i report), pending (invitato, non ha ancora accettato), declined o unsubscribed. Aggiungi o rimuovi indirizzi tramite l'elenco dei destinatari del report.
Permesso: analytics.read
curl https://privatusanalytics.com/reports/:report_id/recipients.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/recipients/:id/resend.json
Invia di nuovo un invito al report in sospeso
email_report_recipients_resend
Invia di nuovo l'invito con nuovi link. Consentito una volta ogni 7 giorni per indirizzo e per report.
Permesso: content.write
curl -X POST https://privatusanalytics.com/recipients/:id/resend.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/reports.json
Crea un report via email
email_reports_create
Crea un report analytics programmato via email che copre uno o più siti (il percorso richiede workspace_id). Sono obbligatori name e site_ids (id pa_...). frequency è daily, weekly (predefinito, inviato in un giorno feriale) o monthly (il 1° del mese), hour è l'ora del giorno da 0 a 23 nel fuso orario del workspace (predefinito 8) e weekday va da 0 per domenica a 6 per sabato (predefinito 1, usato solo dai report settimanali). blocks sceglie il contenuto tra kpis, chart, pages, sources, goals, campaigns, vitals, uptime, testimonials e subscriptions (predefiniti kpis, chart, pages, sources, goals, testimonials, subscriptions). subscriptions mostra l'MRR e ciò che l'ha mosso nel periodo, per un sito con un provider di pagamento collegato. recipients è un elenco di indirizzi email (fino a 50). I membri del workspace sono attivi subito, ogni altro indirizzo è pending e riceve un'email di invito, e riceve i report solo dopo averlo accettato. Gli indirizzi che hanno rifiutato le email vengono respinti. Se recipients è omesso, viene aggiunto l'utente che chiama. Un report attivo richiede almeno un destinatario. Il piano Free consente 3 report, i piani a pagamento sono illimitati. Restituisce il report con next_run_at. Usa email_reports_send_test per vederne un'anteprima.
Permesso: content.write
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/reports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/reports/:id/deliveries.json
Registro degli invii di un report via email
email_reports_deliveries
Elenca il registro degli invii di un report via email, dal più recente e paginato. Ogni voce ha status (sent per un invio programmato, test, failed o skipped), recipients_count, error (il motivo di un fallimento, altrimenti null) e sent_at. Filtra con status. Usalo per confermare che un report programmato è partito o per vedere perché è fallito. Usa email_reports_send_test per avviare un'email di prova.
Permesso: analytics.read
curl https://privatusanalytics.com/reports/:id/deliveries.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE
/reports/:id.json
Elimina un report via email
email_reports_delete
Elimina in modo permanente un report via email insieme ai suoi destinatari e al registro degli invii. L'azione non può essere annullata e non vengono inviate altre email. Per smettere di inviare ma conservare il report usa email_reports_update con enabled false. L'id (rep_...) proviene da email_reports_list. Restituisce il report eliminato.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/reports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/reports.json
Elenca i report via email
email_reports_list
Elenca i report via email programmati di un workspace (il percorso richiede workspace_id), ordinati per nome e paginati. Ogni report ha id (rep_...), name, site_ids, frequency, hour, weekday, recipients (ogni indirizzo del report), recipient_details (id, email, status, invited_at, expires_at, confirmed_at per ciascuno), blocks, attach_pdf, intro, enabled, last_sent_at, next_run_at e created_at. Filtra per frequency (daily, weekly o monthly). Chi è limitato ad alcuni siti vede solo i report i cui siti sono tutti suoi. Solo i destinatari con status active ricevono davvero i report. Usa email_reports_deliveries per il registro degli invii.
Permesso: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/reports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/reports/:id/send_test.json
Invia subito un report via email come prova
email_reports_send_test
Invia subito il report a un indirizzo come prova, senza cambiare la sua pianificazione né last_sent_at. Invia un'email vera, quindi usalo solo quando l'utente lo vuole. recipient per impostazione predefinita è l'utente che chiama e può essere solo chi chiama, un altro membro del workspace o un destinatario attivo del report. Per qualsiasi altro indirizzo la prova viene invece inviata a chi chiama. Gli invii di prova hanno un limite di frequenza per workspace e per indirizzo esterno, e un invio rifiutato restituisce un errore di limite di frequenza. Restituisce l'invio con status (test, oppure failed con il motivo in error), recipients_count e sent_at. Usa email_reports_deliveries per il registro completo.
Permesso: content.write
curl -X POST https://privatusanalytics.com/reports/:id/send_test.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/reports/:id.json
Ottieni un report via email
email_reports_get
Restituisce un report via email tramite id (rep_..., da email_reports_list). La risposta ha name, site_ids, frequency, hour, weekday, recipients, recipient_details con ogni indirizzo e il suo stato di consenso, blocks, attach_pdf, intro, enabled, last_sent_at e next_run_at (timestamp UTC). recipients elenca ogni indirizzo compresi quelli in sospeso, solo gli indirizzi con status active in recipient_details ricevono i report. Usa email_reports_deliveries per ciò che è stato inviato.
Permesso: analytics.read
curl https://privatusanalytics.com/reports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/reports/:id.json
Aggiorna un report via email
email_reports_update
Modifica un report via email (id da email_reports_list). Cambia solo ciò che invii. Inviare recipients sostituisce l'intero elenco. Gli indirizzi che togli vengono rimossi, quelli nuovi seguono le stesse regole di consenso di email_reports_create (i membri sono attivi subito, gli altri ricevono un'email di invito) e gli indirizzi già presenti nel report mantengono il loro stato. Cambiare frequency, hour, weekday o enabled ricalcola next_run_at. Imposta enabled false per mettere in pausa. Usa email_report_recipients_list per vedere lo stato di consenso e email_report_recipients_resend o email_report_recipients_delete per gestire singoli indirizzi.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/reports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/reports/invites/:token/accept.json
Accetta un invito a un report
report_invites_accept
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/reports/invites/:token/accept.json \
-H "Content-Type: application/json" -d '{…}'
POST
/reports/invites/:token/decline.json
Rifiuta un invito a un report
report_invites_decline
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/reports/invites/:token/decline.json \
-H "Content-Type: application/json" -d '{…}'
POST
/reports/resubscribe/:token.json
Ricevi di nuovo i report dopo aver annullato l'iscrizione
report_resubscribes_confirm
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/reports/resubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/reports/unsubscribe/:token/resubscribe.json
Invia a un indirizzo un link per ricevere di nuovo i report
report_resubscribes_create
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/reports/unsubscribe/:token/resubscribe.json \
-H "Content-Type: application/json" -d '{…}'
POST
/reports/unsubscribe/:token.json
Annulla l'iscrizione di un indirizzo a un report via email
report_unsubscribes_create
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/reports/unsubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
Ricerca
GET
/sites/:site_id/search.json
Report di ricerca: clic, impressioni, CTR, posizione, query/pagine principali, pagine di destinazione e opportunità
search_report
Prestazioni di ricerca da Google Search Console e Bing Webmaster, unite alle metriche delle pagine di destinazione del sito. Scegli provider: all (predefinito) somma tutti i motori collegati, con la posizione ponderata per le impressioni e con paesi e dispositivi solo da Google, oppure google o bing da soli, e il solito period oppure from e to personalizzati. limit (da 1 a 100, predefinito 25) limita le righe di ogni tabella. Il risultato ha period, provider, connection (property, status, last_synced_at del motore scelto, oppure null quando non è collegato o provider è all), connections (ogni motore collegato con provider, property, status e last_synced_at), latest_date (il giorno più recente con dati), delayed (true quando l'intervallo supera latest_date), totals e series (per giorno) ciascuno con clicks, impressions, ctr (una percentuale, non una frazione, 2 decimali) e position (posizione media, 1 è la migliore, null se sconosciuta), breakdowns per query, page, country e device (righe di value più le stesse quattro metriche), landing_pages (le pagine principali con visits, bounce_rate e conversion_rate come percentuali, e conversions) e opportunities (low_ctr_queries con almeno 100 impressioni e un CTR sotto il 2 percento, e pagine striking_distance con posizione media da 8 a 20). I valori dei paesi sono come li riporta il provider. Usa stats_breakdown per i dati dei visitatori e questo strumento per ciò che accade prima del clic. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/search.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE
/sites/:site_id/search/connections/:provider.json
Scollega Search Console o Bing ed elimina i suoi dati
search_disconnect
Scollega un provider di ricerca (google o bing) da un sito ed elimina in modo permanente i suoi dati di ricerca importati per quel provider. L'azione non può essere annullata. Anche l'autorizzazione Google viene rimossa quando nessun sito la usa più. Fallisce se quel provider non è collegato. Restituisce la connessione rimossa. Richiede sites.manage.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/search/connections/:provider.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/search/sync.json
Importa subito i dati di ricerca
search_sync
Mette in coda un'importazione immediata dei dati di ricerca per un provider collegato (google, predefinito, o bing) invece di aspettare la pianificazione regolare. Risponde subito (HTTP 202) con la connessione e l'importazione prosegue in background. Interroga search_report e controlla connection.last_synced_at. I motori di ricerca riportano con un ritardo di un paio di giorni, quindi i giorni più recenti restano vuoti anche dopo una sincronizzazione. Fallisce se il provider non è collegato. Richiede sites.manage.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/search/sync.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Richieste di dominio personalizzato delle testimonianze
POST
/sites/:site_id/testimonials/settings/custom_domain.json
Richiedi un dominio personalizzato su un wall o sui moduli
testimonial_custom_domain_requests_create
I domini personalizzati per le testimonianze sono configurati a mano dal team di Privatus Analytics. Questo archivia la richiesta e avvisa il team, che invia via email il record DNS da aggiungere. L'hostname non funziona finché lo stato della richiesta non è active. Dal piano Business in su: gli altri piani ricevono 402 plan_limit.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/custom_domain.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/settings/custom_domain.json
Ritira una richiesta di dominio personalizzato, in base al suo hostname
testimonial_custom_domain_requests_delete
Si può ritirare solo una richiesta che il team non ha ancora avviato (stato requested). Una in corso risponde con wrong_state. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/custom_domain.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/settings/custom_domain.json
Elenca le richieste di dominio personalizzato di un sito
testimonial_custom_domain_requests_list
Ogni richiesta di un hostname su un wall o sui moduli, dalla più recente, con il suo stato. L'hostname funziona solo quando status è active. Funziona su ogni piano, quindi le richieste precedenti si possono ancora leggere.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/custom_domain.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Richieste di rimozione
POST
/sites/:site_id/testimonials/removal_requests/:id/dismiss.json
Respingi una richiesta di rimozione
testimonial_removal_requests_dismiss
Chiude la richiesta con una nota e lascia la testimonianza dove è mostrata. Nulla viene eliminato e non viene inviata alcuna email a chi ha fatto la richiesta. La nota è obbligatoria. Una richiesta già decisa risponde con 422.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests/:id/dismiss.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/removal_requests.json
Elenca le richieste di rimozione di un sito
testimonial_removal_requests_list
Le richieste aperte, a meno che venga chiesto un altro stato. L'email digitata da chi ha dato la testimonianza viene restituita solo a chi chiama e può cambiare i contenuti.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/removal_requests/:id/resolve.json
Decidi una richiesta di rimozione
testimonial_removal_requests_resolve
trash sposta la testimonianza nel cestino, il che la toglie subito da ogni widget, wall e pagina pubblica e si può annullare per 30 giorni. dismiss la lascia visibile e richiede una nota.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests/:id/resolve.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/removal_requests/:id.json
Ottieni una richiesta di rimozione
testimonial_removal_requests_get
Una richiesta con la testimonianza a cui si riferisce, la nota lasciata dalla persona, se l'email digitata corrisponde all'email sulla testimonianza, quante volte l'ha chiesto e la decisione, quando c'è. L'email stessa viene restituita solo a chi chiama con content.write.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Richieste di testimonianza
POST
/requests/resubscribe/:token.json
Conferma di voler ricevere di nuovo le richieste di testimonianza
testimonial_request_resubscribes_confirm
Il POST dietro il pulsante della pagina di conferma. Toglie l'esclusione, così all'indirizzo si può chiedere di nuovo.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/requests/resubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/requests/resubscribe.json
Richiedi l'email che permette a un indirizzo di ricevere di nuovo le richieste
testimonial_request_resubscribes_create
Invia un'email di conferma all'indirizzo stesso, se si era disiscritto. La risposta è la stessa sia che si fosse disiscritto sia che no.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/requests/resubscribe.json \
-H "Content-Type: application/json" -d '{…}'
POST
/requests/unsubscribe/:token.json
Annulla l'iscrizione di un indirizzo alle richieste di testimonianza
testimonial_request_unsubscribes_create
Il POST dietro il pulsante della pagina di annullamento dell'iscrizione, e ciò che chiama il pulsante di annullamento dell'iscrizione di un'app di posta. Il token proviene dal link nell'email.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/requests/unsubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests.json
Avvia una richiesta come bozza
testimonial_requests_create
Crea una bozza con la sua email e i suoi destinatari. Nulla viene inviato finché non si usa testimonial_requests_send. Tutto ciò che viene omesso parte da un valore predefinito: l'email, un sollecito dopo 5 giorni, il nome del sito come mittente e tu come indirizzo di risposta. Ogni destinatario viene archiviato come in coda, oppure come saltato con il motivo.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/requests/:id.json
Elimina una bozza
testimonial_requests_delete
Si può eliminare solo una richiesta mai inviata. Una richiesta inviata viene conservata come registrazione della posta inviata. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests/:id/duplicate.json
Copia una richiesta in una nuova bozza
testimonial_requests_duplicate
La copia ha lo stesso modulo e la stessa email, e ancora nessun destinatario.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/requests.json
Elenca le richieste di un sito
testimonial_requests_list
Dalla più recente, ognuna con la sua email e i conteggi del suo funnel. Filtra per stato, modulo o periodo.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/requests/:id/preview.json
Guarda un'email di una richiesta come la riceve il primo destinatario
testimonial_requests_preview
Il mittente, l'oggetto e il corpo con i campi di unione compilati. Nulla viene inviato. step 0 è la prima email, da 1 a 3 i solleciti.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/requests/:id/resume.json
Riprendi una richiesta fermata
testimonial_requests_resume
Riprende da dove si era fermata. Un sollecito scaduto mentre era ferma viene riprogrammato a partire da adesso, così nulla parte tutto insieme. Questo invia email a persone fuori dal workspace, quindi il membro viene avvisato via email che l'ha ripresa un assistente.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/resume.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests/:id/send.json
Invia una richiesta, subito o a un'ora stabilita
testimonial_requests_send
Richiede confirm_relationship: true. I destinatari in coda vengono controllati ancora una volta, poi partono le prime email (o attendono send_at). I solleciti vanno alle persone che non hanno risposto. Le email di richiesta vengono inviate attraverso il provider email del sito (Impostazioni > Invio email, dal piano Business in su), quindi un sito senza una connessione funzionante riceve 422 no_email_connection o email_connection_paused, e un altro piano riceve 402 plan_limit. Ogni email conta nel limite mensile del sito per le email di richiesta (10.000 a meno che ne impostiamo un altro). Al limite nulla viene perso: le persone restano in coda e l'invio riprende il giorno 1. Questo invia email a persone fuori dal workspace, quindi il membro viene avvisato via email che l'ha inviata un assistente.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/send.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests/:id/send_test.json
Invia un'email di una richiesta al tuo indirizzo
testimonial_requests_send_test
Va solo all'indirizzo di chi chiama, attraverso il provider email del sito come quelle vere (422 no_email_connection senza). Non ha un link personale né un contatore delle aperture, e non conta nel limite mensile del sito.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/send_test.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/requests/:id.json
Ottieni una richiesta con la sua email, i solleciti e i conteggi del funnel
testimonial_requests_get
Restituisce l'email, i solleciti, lo stato e i conteggi del funnel (sent, opened, clicked, submitted, bounced, unsubscribed) di una richiesta.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/requests/:id/stop.json
Ferma una richiesta
testimonial_requests_stop
Annulla subito ogni email non ancora inviata. Nulla di ciò che è già stato inviato viene toccato, e testimonial_requests_resume riprende da dove si era fermata.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/stop.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/testimonials/requests/:id.json
Cambia nome, modulo o email di una richiesta
testimonial_requests_update
Consentito in qualsiasi momento. Una modifica si applica a ogni email non ancora inviata. Cambiare il ritardo di un sollecito ricalcola i tempi dei solleciti in attesa.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Rilevamento dei bot
GET
/sites/:site_id/bot-detection.json
Report Advanced Bot Detection: gli accessi alle pagine honeypot del sito, per pagina e per ciò che ha tradito il bot
bot_detection_report
Riporta gli accessi alle pagine honeypot del sito. Una pagina honeypot è una pagina raggiungibile solo tramite un link nascosto e configurata come pagina di Advanced Bot Detection, come mostra l'app. Questi accessi sono bot, quindi non sono mai visualizzazioni di pagina né visite e non compaiono in stats_overview né in stats_breakdown. Scegli l'intervallo con period (7d, 30d (predefinito), 90d o 12mo). Gli accessi vengono conservati per 12 mesi. Il risultato ha period, from (l'inizio dell'intervallo), has_data (false fino al primo accesso), totals (hits, pagine distinte, automated (accessi in cui il tracker ha rilevato un browser automatizzato) e no_interaction (accessi senza input di puntatore, tastiera o touch)), pages (fino a 50 righe con path, hits e last_hit_at), reasons (accessi per esito del filtro bot standard: known_bot, automation, datacenter, empty_user_agent, referrer_spam, oppure undetected per un accesso che il filtro avrebbe contato come persona) e recent (gli ultimi 50 accessi con occurred_at, path, country, browser, device, bot_reason, automation e interacted). Con ogni accesso non viene conservato alcun indirizzo IP né User-Agent, ma solo hash con chiave di entrambi che non possono identificare nessuno, e questi non vengono mai restituiti. Richiede analytics.read e il piano Business o Enterprise (altrimenti 402 plan_limit).
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/bot-detection.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Ruoli
POST
/workspaces/:workspace_id/roles.json
Crea un ruolo personalizzato
roles_create
Crea un ruolo personalizzato, un insieme di permessi con un nome che puoi assegnare ai membri tramite invitations_create o members_update con role custom e l'id del ruolo come custom_role_id. Richiede il piano Business e members.manage. permissions deve elencare almeno un nome tra i valori consentiti (analytics.read, analytics.export, content.write, sites.manage, uptime.manage, members.manage, tokens.manage, billing.manage, workspace.manage) e non puoi includere un permesso che non hai tu stesso. Restituisce il ruolo (vedi roles_list per i campi).
Permesso: members.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/roles.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/roles/:id.json
Elimina un ruolo personalizzato (non deve essere in uso)
roles_delete
Elimina un ruolo personalizzato. L'azione non può essere annullata e fallisce finché un membro o un invito in sospeso usa ancora il ruolo, quindi sposta prima quelle persone su un altro ruolo con members_update (trovale con members_list). I ruoli integrati non possono essere eliminati. Prendi l'id (uuid) da roles_list. Richiede members.manage. Restituisce il ruolo eliminato.
Permesso: members.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/roles/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/roles.json
Elenca i ruoli personalizzati
roles_list
Elenca i ruoli personalizzati di un workspace, ordinati per nome. I ruoli personalizzati sono una funzionalità del piano Business che raggruppa permessi sotto un nome scelto da te, e i ruoli integrati (owner, admin, editor, analyst, viewer, billing) non sono elencati qui. Ogni ruolo ha id (uuid, usato come custom_role_id in invitations_create e members_update), name, permissions (nomi come analytics.read, content.write, members.manage), members (il numero di membri che lo hanno) e created_at. Chi è limitato ad alcuni siti vede solo i ruoli entro la sua portata.
Permesso: member
curl https://privatusanalytics.com/workspaces/:workspace_id/roles.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/roles/:id.json
Aggiorna un ruolo personalizzato
roles_update
Rinomina un ruolo personalizzato e/o sostituisce l'intero elenco dei suoi permessi. Cambia solo ciò che invii e permissions sostituisce l'elenco esistente invece di aggiungervi. La modifica si applica subito a ogni membro e a ogni invito in sospeso che ha il ruolo. Puoi modificare solo un ruolo di cui possiedi tutti i permessi e chi è limitato ad alcuni siti ha bisogno di portata su ogni sito dei suoi titolari. Richiede members.manage. Prendi l'id (uuid) da roles_list. Restituisce il ruolo aggiornato.
Permesso: members.manage
· Solo HTTP (non è uno strumento MCP)
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/roles/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
SCIM
POST
/scim/v2/Users.json
Effettua il provisioning di un utente
scim_users_create
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/scim/v2/Users.json \
-H "Content-Type: application/json" -d '{…}'
DELETE
/scim/v2/Users/:id.json
Effettua il deprovisioning di un utente
scim_users_delete
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/scim/v2/Users/:id.json \
-H "Content-Type: application/json" -d '{…}'
GET
/scim/v2/Users.json
Elenca gli utenti di cui è stato effettuato il provisioning
scim_users_list
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/scim/v2/Users.json
GET
/scim/v2/Users/:id.json
Ottieni un utente di cui è stato effettuato il provisioning
scim_users_get
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/scim/v2/Users/:id.json
PATCH
/scim/v2/Users/:id.json
Aggiorna un utente (PATCH active, name)
scim_users_update
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X PATCH https://privatusanalytics.com/scim/v2/Users/:id.json \
-H "Content-Type: application/json" -d '{…}'
SSO
POST
/workspaces/:workspace_id/sso/activate.json
Attiva una configurazione SSO testata
sso_activate
Attiva l'SSO per il workspace. La configurazione deve già avere status tested, cosa che avviene dopo un accesso di prova riuscito (avviato dalla pagina delle impostazioni SSO del workspace nell'app, richiede un accesso dal browser e non può essere eseguito da qui), oppure essere già active. Solo piano Business. Dopo l'attivazione i membri possono accedere con l'SSO e impostare enforced tramite sso_update richiede poi l'SSO per ogni accesso. Fallisce quando la configurazione non è stata provata o il piano non ha l'SSO. Richiede workspace.manage. Restituisce la configurazione con status active (vedi sso_get).
Permesso: workspace.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sso/activate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/sso/deactivate.json
Disattiva SSO (torna a bozza)
sso_deactivate
Disattiva l'SSO riportando la configurazione a draft e azzerando enforced, così i membri tornano agli altri metodi di accesso del workspace. I dettagli del provider vengono conservati. Riattivare richiede un nuovo accesso di prova e sso_activate. Assicurati prima che i membri abbiano un altro modo di accedere. Funziona su qualsiasi piano. Richiede workspace.manage. Restituisce la configurazione con status draft (vedi sso_get).
Permesso: workspace.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sso/deactivate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/sso/scim_token.json
Genera un nuovo token SCIM (mostrato una sola volta)
sso_scim_token
Permesso: workspace.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sso/scim_token.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/sso.json
Ottieni le impostazioni SSO
sso_get
Restituisce la configurazione di single sign-on (SSO) del workspace, oppure una bozza vuota quando non esiste. I campi sono protocol (saml o oidc), status (draft, testing, tested o active), enforced (i membri devono accedere tramite SSO), domains (i domini email che usano questo SSO), idp_sso_url e idp_entity_id per SAML, oidc_issuer e oidc_client_id per OIDC, default_role e jit_provisioning (crea i membri al primo accesso SSO) e scim_enabled. I segreti non vengono mai restituiti, solo i booleani idp_cert_present e oidc_client_secret_present. L'SSO è una funzionalità del piano Business. Richiede workspace.manage.
Permesso: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/sso.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/sso.json
Crea o aggiorna le impostazioni SSO
sso_update
Crea o modifica le impostazioni SSO del workspace. Solo piano Business. Cambia solo ciò che invii. Per SAML invia protocol saml con idp_sso_url, idp_entity_id e idp_cert (testo PEM). Per OIDC invia protocol oidc con oidc_issuer, oidc_client_id e oidc_client_secret, che è in sola scrittura e un valore vuoto mantiene il segreto esistente. domains elenca i domini email che usano questo SSO. default_role è il ruolo dato ai membri creati dal provisioning al primo accesso o da SCIM (non owner né custom) e puoi impostare solo un ruolo che potresti concedere tu stesso. Cambiare qualsiasi dettaglio dell'identity provider riporta una configurazione active o tested a draft e disattiva enforced, quindi va provata di nuovo prima che sso_activate funzioni. enforced true è accettato solo mentre status è active. Richiede workspace.manage. Restituisce la configurazione (vedi sso_get).
Permesso: workspace.manage
· Solo HTTP (non è uno strumento MCP)
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/sso.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Segmenti
POST
/sites/:site_id/segments.json
Salva i filtri come segmento
segments_create
Salva un insieme di filtri come segmento con nome, riutilizzabile su qualsiasi strumento stats tramite segment_id. Passa name e filters (tutte le condizioni devono corrispondere e un gruppo {any: [...]} corrisponde quando ne corrisponde una tra più, vedi l'input filters per i nomi delle dimensioni e gli operatori). I filtri vengono controllati, quindi una dimensione sconosciuta o un valore errato restituisce un 422 con un messaggio per riga. Usa prima segments_preview per controllare che cosa corrisponde a un insieme di filtri. shared è true per impostazione predefinita e rende il segmento visibile a tutti coloro che hanno accesso al sito, false lo mantiene privato per te. Restituisce il segmento con id (seg_...), site_id, name, description, filters, summary (una descrizione in linguaggio semplice), shared, mine e timestamp. Richiede il permesso content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/segments.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/segments/:id.json
Elimina un segmento
segments_delete
Elimina in modo permanente un segmento salvato. Le dashboard e i link che lo usano tornano a mostrare tutto il traffico. Nessun dato analytics viene toccato e non c'è modo di annullare. Restituisce il segmento eliminato. Gli id (seg_...) provengono da segments_list. Richiede il permesso content.write.
Permesso: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/segments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/segments.json
Elenca i segmenti che puoi usare su un sito
segments_list
Elenca i segmenti salvati di un sito, ordinati per nome: quelli condivisi più i tuoi privati. Ogni segmento ha id (seg_...), site_id, name, description, filters, summary, shared, mine e timestamp. Passa un id come segment_id a qualsiasi strumento stats (stats_aggregate, stats_breakdown, funnels_get e altri) per applicare i filtri del segmento. Paginato tramite i parametri di pagina standard. Usa segments_create per aggiungerne uno.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/segments.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/segments/preview.json
Descrive i filtri in linguaggio naturale e conta i visitatori corrispondenti negli ultimi 30 giorni
segments_preview
Controlla un insieme di filtri senza salvare nulla. Restituisce summary (i filtri in linguaggio semplice), visitors (quanti visitatori corrispondevano negli ultimi 30 giorni, null quando i filtri non sono validi), period (sempre 30d) e filters (la forma pulita e canonica che verrebbe memorizzata). I filtri usano lo stesso formato di segments_create, compresi i gruppi {any: [...]} e i nomi estesi facoltativi di paesi, canali e obiettivi, che vengono convertiti in codici e id. I filtri non validi restituiscono un 422 che indica la riga. Usalo per provare i filtri prima di segments_create e usa stats_aggregate con filters per i numeri su un altro periodo.
Permesso: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/segments/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/segments/:id.json
Ottieni un segmento
segments_get
Restituisce un segmento salvato: id (seg_...), site_id, name, description, filters (le condizioni memorizzate), summary (una descrizione in linguaggio semplice come Visitors from the United States on mobile), shared (visibile a tutti coloro che hanno accesso al sito), mine (true quando l'hai creato tu) e timestamp. Puoi leggere i segmenti condivisi e i tuoi privati. Gli id provengono da segments_list. Per contare quanti visitatori corrisponde a un insieme di filtri, usa segments_preview.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/segments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/segments/:id.json
Rinomina un segmento o cambia i suoi filtri o la condivisione
segments_update
Rinomina un segmento, sostituisce i suoi filtri o cambia chi può vederlo. Cambia solo ciò che invii. Inviare filters sostituisce tutti i filtri esistenti, con lo stesso formato e gli stessi controlli di segments_create. shared false lo rende privato per chi lo ha creato. description può essere cancellata inviandola vuota. Tutto ciò che usa il segmento, come le chiamate stats con il suo segment_id, cambia subito. Restituisce il segmento. Gli id provengono da segments_list. Richiede il permesso content.write.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/segments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Sincronizzazione del warehouse
POST
/workspaces/:workspace_id/warehouses.json
Aggiungi una destinazione warehouse
warehouse_destinations_create
Aggiunge una destinazione data warehouse che riceve gli eventi grezzi di ogni giorno (solo piano Business). Ogni giorno alle 02:00 UTC viene caricato il giorno UTC precedente, la prima esecuzione è alle successive 02:00 UTC e un'esecuzione fallita viene ritentata un'ora dopo. kind deve essere indicato e decide le impostazioni richieste. s3 (anche GCS, R2 e MinIO tramite endpoint) richiede bucket, access_key_id e secret_access_key, con region, prefix ed endpoint facoltativi (https, solo host pubblici). bigquery richiede service_account_json, dataset e table, con project_id facoltativo. snowflake richiede account, user, private_key (RSA PEM), database, schema e table, con warehouse e role facoltativi. azure richiede sas_url (un link SAS https di un contenitore blob con permesso di scrittura), con prefix facoltativo. I segreti (secret_access_key, service_account_json, private_key, sas_url) sono in sola scrittura e non vengono mai restituiti. site_ids limita i siti (id pa_...), vuoto significa ogni sito, e un membro o un token limitato ad alcuni siti deve indicarli. Le proprietà degli eventi vengono inviate solo quando sono contrassegnate come sicure per l'esportazione (vedi event_properties_list). Richiede il permesso workspace.manage. Restituisce la destinazione con id (whd_...), una destinazione mascherata e configured (i nomi delle impostazioni compilate).
Permesso: workspace.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/warehouses.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/warehouses/:id.json
Elimina una destinazione warehouse
warehouse_destinations_delete
Elimina una destinazione data warehouse così non viene più inviato nulla. I dati già caricati restano nel tuo bucket o warehouse e l'azione non può essere annullata, anche se puoi aggiungere di nuovo la destinazione (lo storico non viene rinviato automaticamente). Una sincronizzazione manuale ancora in coda non viene richiamata. L'id proviene da warehouse_destinations_list. Richiede il permesso workspace.manage. Restituisce la destinazione eliminata.
Permesso: workspace.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/warehouses/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/warehouses.json
Elenca le destinazioni warehouse
warehouse_destinations_list
Elenca le destinazioni data warehouse di un workspace ordinate per nome, facoltativamente solo di un tipo (s3, bigquery, snowflake o azure). Un membro o un token limitato ad alcuni siti vede solo le destinazioni i cui siti sono tutti tra i suoi, e le destinazioni che inviano ogni sito sono nascoste. Paginato con page e per_page (fino a 100). Ogni elemento ha i campi descritti in warehouse_destinations_get. Richiede il workspace_id da workspaces_list e il permesso workspace.manage.
Permesso: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/warehouses.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/warehouses/:id.json
Ottieni una destinazione warehouse (senza segreti)
warehouse_destinations_get
Restituisce una destinazione data warehouse senza credenziali. I campi sono id (whd_...), kind (s3, bigquery, snowflake o azure), name, target (un riepilogo mascherato come s3://bucket/prefix), configured (i nomi delle impostazioni compilate, i segreti compaiono solo per nome), site_ids (vuoto significa ogni sito), schedule (daily), schema_version (il formato delle righe inviate), last_run_at, next_run_at, last_error (null quando l'ultima esecuzione è andata a buon fine) e created_at. L'id proviene da warehouse_destinations_list. Controlla last_error dopo warehouse_destinations_sync per vedere com'è andata una sincronizzazione.
Permesso: workspace.manage
curl https://privatusanalytics.com/warehouses/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/warehouses/:id/sync.json
Metti in coda subito la sincronizzazione di un giorno
warehouse_destinations_sync
Mette in coda un caricamento immediato di un giorno UTC di eventi grezzi verso una destinazione, fuori dalla pianificazione giornaliera. Solo piano Business. date (YYYY-MM-DD) deve essere precedente a oggi in UTC e per impostazione predefinita è ieri. Carica quel giorno per ogni sito della destinazione, quindi evita di sincronizzare un giorno già inviato, e le sincronizzazioni manuali hanno un limite di 30 all'ora per workspace. La chiamata restituisce subito 202 con la destinazione e il caricamento prosegue in background. Interroga warehouse_destinations_get e leggi last_run_at e last_error per vedere il risultato. L'id proviene da warehouse_destinations_list. Richiede il permesso workspace.manage.
Permesso: workspace.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/warehouses/:id/sync.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/warehouses/:id.json
Aggiorna una destinazione warehouse (i segreti lasciati vuoti vengono conservati)
warehouse_destinations_update
Modifica una destinazione data warehouse (solo piano Business). Cambia solo ciò che invii e kind non può essere cambiato. Un segreto vuoto mantiene il valore memorizzato, quindi puoi modificare le altre impostazioni senza inviare di nuovo le credenziali. Le impostazioni vengono validate per il kind della destinazione come in warehouse_destinations_create. Inviare site_ids sostituisce l'elenco dei siti. Quando la destinazione cambia (un altro bucket, dataset, tabella, database o simili) l'avanzamento dei giorni non terminati riparte da zero, quindi quei giorni vengono inviati di nuovo al nuovo posto. L'id proviene da warehouse_destinations_list. Richiede il permesso workspace.manage. Restituisce la destinazione aggiornata.
Permesso: workspace.manage
· Solo HTTP (non è uno strumento MCP)
curl -X PATCH https://privatusanalytics.com/warehouses/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Siti
POST
/sites/:site_id/data_reset.json
Elimina tutti gli eventi e le visite in un intervallo di date (viene eseguito in background, non si può annullare)
sites_reset_data
Elimina in modo irreversibile le visualizzazioni di pagina, gli eventi personalizzati e le visite di un sito per un intervallo di date, e non può essere annullato. Usalo per cancellare il traffico di prova o rimuovere un periodo errato. Non elimina il sito, i suoi obiettivi né le sue impostazioni (usa sites_delete per il sito). from e to sono date YYYY-MM-DD, entrambe inclusive e lette nel fuso orario del sito, e to non deve essere precedente a from. confirm deve essere il dominio del sito esattamente come mostrato da sites_get (le maiuscole non contano). La richiesta viene accettata e restituisce subito status queued, site_id, from e to. L'eliminazione prosegue in background a blocchi, quindi i numeri negli strumenti stats possono impiegare un po' per stabilizzarsi, e non esiste un endpoint di stato da interrogare: controlla gli strumenti stats finché l'intervallo è vuoto. L'azione viene registrata nel registro di controllo. Richiede il permesso sites.manage.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/data_reset.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/filter_stats.json
Riepilogo del traffico filtrato: bot, regole del traffico o rimozioni di dati personali per motivo e paese (solo conteggi)
sites_filter_stats
Conteggi degli accessi scartati o ripuliti prima della memorizzazione, negli ultimi giorni. Usalo per vedere quanto traffico bot, traffico bloccato dalle regole o oscuramento ha un sito. Scegli kind con bot (accessi scartati come bot), rule (accessi scartati dalle regole del traffico) o redaction (valori oscurati dal filtro dei dati personali). Restituisce kind, days, total, by_reason, by_country e by_day. by_reason e by_country sono elenchi di {value, count} (fino a 50, dal più grande, value null quando sconosciuto) e by_day è un elenco di {date, count}. days è limitato tra 1 e 395 e il valore predefinito è 30. Sono solo conteggi aggregati. Non vengono memorizzati indirizzi IP, user agent né valori oscurati, quindi nulla può essere ricondotto a una persona. Questi accessi non vengono contati come eventi ai fini della fatturazione. Usa traffic_rules_list per vedere o modificare le regole.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/filter_stats.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/access.json
Elenca i membri e se possono vedere questo sito
sites_access_list
Mostra quali membri del workspace possono vedere un sito. Ogni membro del workspace è elencato in ordine di ingresso, senza paginazione. I campi sono membership_id (l'uuid usato da sites_access_update), email, name, role, access (true quando il membro può vedere questo sito) e locked (true per proprietari e admin, che hanno sempre accesso e non possono essere modificati). Gli altri membri hanno accesso quando hanno tutti i siti o un'autorizzazione esplicita per questo sito. Usa members_list per vedere l'elenco completo dei siti di un membro. Richiede members.manage.
Permesso: members.manage
curl https://privatusanalytics.com/sites/:site_id/access.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/access.json
Concedi o rimuovi l'accesso di un membro a questo sito
sites_access_update
Concede o rimuove l'accesso di un membro a un sito. membership_id proviene da sites_access_list (o members_list) e access è true per concedere o false per rimuovere. Proprietari e admin hanno sempre accesso e non possono essere modificati. Rimuovere l'accesso a un membro che aveva tutti i siti lo passa a un elenco esplicito di ogni altro sito del workspace e disattiva il suo include_future_sites, quindi non riceverà i siti creati in seguito. Concedere l'accesso a chi ha già tutti i siti non cambia nulla. Non puoi modificare un membro che ha permessi che non hai o siti oltre i tuoi. Richiede members.manage. Restituisce la riga di quel membro con la stessa struttura di sites_access_list.
Permesso: members.manage
· Solo HTTP (non è uno strumento MCP)
curl -X PATCH https://privatusanalytics.com/sites/:site_id/access.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/favorite.json
Aggiungi un sito ai preferiti (fissato in alto in Tutti i siti)
sites_favorite
Contrassegna un sito con una stella per l'utente che chiama, così viene elencato per primo da sites_list e nella pagina Tutti i siti. Riguarda solo chi chiama, mai gli altri membri, e contrassegnare un sito già contrassegnato non cambia nulla. La chiamata non richiede input oltre all'id del sito. Usa sites_unfavorite per rimuovere la stella. Richiede analytics.read. Restituisce il sito (vedi sites_get), con favorite true.
Permesso: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/favorite.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/favorite.json
Rimuovi un sito dai preferiti
sites_unfavorite
Rimuove la stella dell'utente che chiama da un sito, così non è più fissato in cima a sites_list. Riguarda solo chi chiama e non fa nulla se il sito non era contrassegnato. Usa sites_favorite per contrassegnarlo di nuovo. Richiede analytics.read. Restituisce il sito (vedi sites_get), con favorite false.
Permesso: analytics.read
curl -X DELETE https://privatusanalytics.com/sites/:site_id/favorite.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/setup.json
Stato dell'installazione e snippet per un sito
sites_setup_get
Restituisce ciò che serve per installare il tracciamento su un sito e se sono arrivati dati. I campi sono site_id, snippet (il tag script HTML pronto da incollare con ogni modulo del tracker abilitato), receiving_data (true una volta ricevuto il primo evento) e first_event_at (ISO 8601, null fino ad allora). Interrogalo dopo l'installazione per vedere se gli eventi stanno arrivando. Usa invece tracking_snippet quando vuoi uno snippet personalizzato (moduli scelti, visualizzazioni di pagina manuali, modalità SPA, maschere) e tracking_verify per scaricare la pagina live e controllare che lo script sia presente. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/setup.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/transfers/:token/accept.json
Accetta il trasferimento di un sito in uno dei tuoi workspace
site_transfers_accept
Accetta l'invito al trasferimento di un sito e sposta il sito in uno dei workspace di chi chiama. Il parametro di percorso token proviene dal link dell'invito e workspace_id è il workspace di destinazione (ws_...) in cui chi chiama ha sites.manage. L'email di chi chiama deve corrispondere all'indirizzo a cui è stato inviato l'invito e la destinazione non può essere il workspace da cui proviene il sito. Il sito mantiene il proprio id, le impostazioni, gli obiettivi e i dati, ma le autorizzazioni di accesso per singolo membro vengono azzerate e i suoi link condivisi passano al nuovo workspace. Fallisce quando l'invito non è più in sospeso o è scaduto, quando la destinazione ha raggiunto il limite di siti del suo piano o quando ha già un sito attivo con lo stesso dominio. Lo spostamento non può essere annullato se non trasferendo di nuovo il sito indietro. Un token che chiama questa operazione deve appartenere al workspace di destinazione e avere sites.manage. Restituisce il trasferimento con status accepted.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/transfers/:token/accept.json \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/transfer.json
Avvia il trasferimento di un sito a un altro workspace (invia un'email al destinatario)
sites_transfer_start
Avvia lo spostamento di un sito in un altro workspace inviando al destinatario via email un link di invito valido per 7 giorni. Nulla si sposta finché il destinatario non accede con quell'email e accetta (site_transfers_accept), quindi il sito resta qui fino ad allora. Avviare un nuovo trasferimento annulla qualsiasi trasferimento in sospeso precedente per lo stesso sito. email deve essere un indirizzo valido e il destinatario sceglie il workspace di destinazione. Le email di trasferimento hanno un limite di frequenza. Usa sites_transfer_cancel per ritirarlo. Richiede sites.manage. Restituisce il trasferimento con site_id, site_domain, from_workspace, to_email, status pending ed expires_at.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/transfer.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/transfer.json
Annulla un trasferimento di sito in sospeso
sites_transfer_cancel
Annulla l'invito al trasferimento in sospeso del sito, così il suo link smette di funzionare. Fallisce con un errore di validazione quando non c'è alcun trasferimento in sospeso. Un trasferimento già accettato non può essere annullato. Richiede sites.manage. Restituisce il trasferimento con status canceled.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/transfer.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/transfers/:token.json
Ottieni un trasferimento in sospeso dal suo token ricevuto via email
site_transfers_get
Mostra l'invito al trasferimento di un sito dal token nel suo link (il parametro di percorso token, dall'email di invito inviata da sites_transfer_start). Chi chiama deve aver effettuato l'accesso o usare un token API. Restituisce site_id, site_domain, from_workspace (il nome del workspace che invia), to_workspace_id (null finché non è accettato), to_email (l'indirizzo invitato), status (pending, accepted o canceled) ed expires_at. Gli inviti scadono 7 giorni dopo l'invio. Usa site_transfers_accept per accettarlo.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/transfers/:token.json
POST
/workspaces/:workspace_id/sites.json
Aggiungi un sito
sites_create
Aggiunge un sito web a un workspace e lo restituisce, compreso lo snippet di tracciamento da installare. Il piano del workspace limita il numero di siti (Free ne consente 3) e la chiamata fallisce con un errore di limite del piano quando viene raggiunto. domain è obbligatorio e viene normalizzato (ad esempio un URL completo o un prefisso www viene ridotto all'hostname). name per impostazione predefinita è il dominio, timezone è il fuso orario del workspace (un nome IANA come Europe/Berlin) e currency la valuta del workspace (un codice ISO 4217 di 3 lettere come USD). Gli effetti collaterali sono una notifica site.created ai canali di notifica del workspace, la messa in coda di un primo audit SEO del sito e di un controllo del domain rating, e un'email con il codice di tracciamento al membro che l'ha creato (con promemoria finché non arrivano dati). I membri limitati a siti selezionati che hanno scelto di ricevere i siti futuri ottengono l'accesso. Richiede sites.manage. Prosegui con tracking_snippet o sites_setup_get per installare e con tracking_verify per controllare.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sites.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:id.json
Elimina un sito (rimosso definitivamente dopo 7 giorni)
sites_delete
Elimina un sito. È un'eliminazione logica: il sito smette di raccogliere dati e scompare subito dagli elenchi, e i suoi dati vengono eliminati definitivamente dopo 7 giorni, quindi consideralo irreversibile e contatta presto il supporto se è stato un errore. confirm deve essere il dominio del sito (le maiuscole non contano). I trasferimenti in sospeso per il sito vengono annullati e una notifica site.deleted viene inviata ai canali di notifica del workspace. Per cancellare solo una parte del traffico e mantenere il sito usa sites_reset_data. Richiede sites.manage. Restituisce il sito.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/sites.json
Elenca i siti di un workspace
sites_list
Elenca i siti di un workspace a cui chi chiama può accedere, paginati, con i siti contrassegnati con la stella da chi chiama per primi. Usa query per cercare nel dominio o nel nome (parziale, senza distinzione tra maiuscole e minuscole), label per mantenere i siti che hanno una certa etichetta e sort come position (l'ordine salvato, predefinito), name o visitors (visitatori degli ultimi 30 giorni, i più numerosi per primi). Il meta della risposta contiene la paginazione per pagina più stats, un oggetto con chiave l'id del sito con visitors (visitatori unici recenti), change (variazione percentuale rispetto al periodo precedente), sparkline (un elenco di valori giornalieri) e live (visitatori attuali), e i totali sulla pagina. Ogni elemento ha gli stessi campi di sites_get. È il punto di partenza per trovare gli id dei siti (pa_...) usati da ogni altro strumento per i siti. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/sites.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:id.json
Ottieni un sito e tutte le sue impostazioni
sites_get
Restituisce le impostazioni e lo stato di un sito tramite il suo id pubblico (pa_..., da sites_list). I campi principali sono id, workspace_id (ws_...), domain, name, extra_domains e multi_domain_mode (combined o separate), timezone (nome IANA), currency (ISO 4217), labels, le opzioni di privacy (honor_dnt, honor_gpc, pii_scrubber, redaction_rules, allowed_params, path_masks), retention_months (null significa conservare tutti i dati), bot_filtering, traffic_rule_modes (un oggetto che associa un elenco di regole a block o allow), vitals_sample_rate (una percentuale), conversion_denominator (visits o visitors), public_dashboard e public_indexable, ingest_key_prefix (null quando il sito non ha una chiave dei log dei crawler), verified_at, first_event_at e last_event_at (null finché non arrivano dati), domain_rating (può essere null), snippet (il tag HTML di tracciamento), favorite (se chi chiama l'ha contrassegnato con la stella) e created_at. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:id.json
Aggiorna le impostazioni del sito
sites_update
Modifica le impostazioni di un sito, cambiando solo i campi che invii. I campi di nome e identità sono name, domain (cambiarlo ricontrolla il domain rating), extra_domains (un elenco di hostname) e multi_domain_mode (combined conta un visitatore su più domini, separate li tiene distinti). timezone è un nome IANA e currency un codice ISO 4217 di 3 lettere. I campi di privacy sono honor_dnt, honor_gpc, pii_scrubber, redaction_rules (un elenco di oggetti con name e pattern, dove pattern è un'espressione regolare), allowed_params (i parametri di query da mantenere), path_masks (un elenco di oggetti con pattern e replacement) e bot_filtering. Gli elenchi sostituiscono l'intero elenco esistente. retention_months non deve superare la conservazione del piano (Free 6 mesi). traffic_rule_modes associa un elenco di regole (hostnames, paths, referrers, countries, ip_ranges, user_agents o events) a block o allow. vitals_sample_rate è una percentuale e il piano la limita (10 su Free, 100 sui piani a pagamento). conversion_denominator è visits o visitors. public_dashboard rende le statistiche visibili a chiunque abbia il link e public_indexable permette ai motori di ricerca di indicizzare quella pagina. Le modifiche hanno effetto sui nuovi eventi in pochi istanti. Richiede sites.manage. Restituisce il sito aggiornato.
Permesso: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Sito web
GET
/blog.json
Elenca gli articoli del blog
blog_list
Elenca gli articoli del blog di Privatus Analytics, dal più recente, con slug, title, kicker, rubric (il riassunto in una frase), description, path e date, senza il corpo. Per leggerne uno usa blog_get con il suo slug. Paginato con page e per_page (massimo 100). Pubblico, non richiede autenticazione.
Permesso: public
curl https://privatusanalytics.com/blog.json
GET
/blog/:slug.json
Leggi un articolo del blog (Markdown e HTML)
blog_get
Restituisce un articolo del blog in base al suo slug (da blog_list, l'ultima parte di /blog/<slug>) con i suoi titoli, il corpo in Markdown e l'HTML renderizzato. Gli articoli sono scritti in inglese. Pubblico, non richiede autenticazione.
Permesso: public
curl https://privatusanalytics.com/blog/:slug.json
GET
/changelog.json
Elenca le voci del changelog
changelog_list
Aggiornamenti del prodotto pubblicati, dai più recenti. Disponibile anche come RSS su /changelog.rss.
Permesso: public
curl https://privatusanalytics.com/changelog.json
POST
/contact.json
Invia un messaggio al team di Privatus Analytics
contact_create
I client browser inviano un token Cloudflare Turnstile come `cf-turnstile-response`. Le richieste con un token API non ne hanno bisogno.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/contact.json \
-H "Content-Type: application/json" -d '{…}'
POST
/newsletter/confirm.json
Conferma l'iscrizione alla newsletter (token firmato)
newsletter_confirm
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/newsletter/confirm.json \
-H "Content-Type: application/json" -d '{…}'
POST
/newsletter.json
Iscrivi un indirizzo email alla newsletter
newsletter_subscribe
I client browser inviano un token Cloudflare Turnstile come `cf-turnstile-response`. Le richieste con un token API non ne hanno bisogno.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/newsletter.json \
-H "Content-Type: application/json" -d '{…}'
POST
/newsletter/unsubscribe.json
Annulla l'iscrizione con il token di un link firmato
newsletter_unsubscribe
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/newsletter/unsubscribe.json \
-H "Content-Type: application/json" -d '{…}'
GET
/pricing.json
Ottieni piani, prezzi e limiti dei piani
pricing_get
Gli stessi dati della pagina dei prezzi: la scala degli eventi, ogni limite dei piani e cosa conta come evento. Passa events per ottenere il livello corrispondente.
Permesso: public
curl https://privatusanalytics.com/pricing.json
GET
/status.json
Ottieni lo stato attuale del sistema
status_get
Stato di database, Redis e job in background, controllato al massimo ogni 15 secondi.
Permesso: public
curl https://privatusanalytics.com/status.json
GET
/tools/consent-gap.json
Stima il traffico perso dagli analytics basati sul consenso
tools_consent_gap
Calcolatore gratuito che stima quanto traffico perde uno strumento di analytics con consenso ai cookie rispetto al tracciamento senza cookie. È un modello semplice, non una misurazione. Gli input sono monthly_visitors (un numero intero maggiore di 0), consent_rate (percentuale di visitatori che accettano il banner, da 0 a 100) e adblock_share (percentuale di visitatori i cui blocchi fermano lo script, da 0 a 100, predefinito 25). Restituisce gli input più measured_with_consent (i visitatori che vede lo strumento con consenso), missed (i visitatori che non vede), missed_percent (un decimale), measured_cookieless (i visitatori raggiungibili senza banner) e recovered_by_cookieless (i visitatori guadagnati rispetto al tracciamento con consenso). Tutti i conteggi di visitatori sono numeri interi. Non effettua richieste e non usa dati di account. Pubblico, nessuna autenticazione necessaria.
Permesso: public
curl https://privatusanalytics.com/tools/consent-gap.json
GET
/tools/header-checker.json
Controlla Referrer-Policy e CSP di una pagina per gli analytics
tools_header_check
Scarica una pagina pubblica e controlla le intestazioni di risposta che influenzano le analytics. Usalo quando mancano i dati di tracciamento o i referrer sembrano sbagliati. Esamina Referrer-Policy, le direttive script-src e connect-src della Content-Security-Policy (se Privatus Analytics può caricarsi e inviare dati), Permissions-Policy e il numero di intestazioni Set-Cookie. Restituisce url (l'URL finale dopo fino a 3 reindirizzamenti), status (stato HTTP) e findings, ciascuno con check, value (può essere null), level (ok, warn o info) e una nota in linguaggio semplice. L'URL deve essere http o https e pubblico, gli indirizzi privati e interni vengono rifiutati, viene letto solo il primo 1 MB e il download scade dopo 5 secondi. Limite di 10 chiamate al minuto per client. Pubblico, nessuna autenticazione necessaria.
Permesso: public
curl https://privatusanalytics.com/tools/header-checker.json
GET
/tools/privacy-policy-generator.json
Scrivi la bozza di un paragrafo di informativa sulla privacy per Privatus Analytics
tools_privacy_policy
Redige un paragrafo di informativa sulla privacy che descrive come Privatus Analytics raccoglie i dati sul sito del cliente (senza cookie, nessun dato personale memorizzato, posizione solo per paese). È un punto di partenza, non una consulenza legale. Gli input sono site_name (fino a 120 caratteri), contact_email (facoltativo, aggiunge una frase di contatto) e honors_gpc (predefinito true, aggiunge una frase che dice che Do Not Track e Global Privacy Control vengono rispettati). Restituisce site_name, paragraphs (array di stringhe), text (i paragrafi uniti da righe vuote, con l'indirizzo di Privatus Analytics tra parentesi dopo il nome) e html (i paragrafi come elementi <p>, con il nome come link semplice). Il testo è scritto nella lingua della richiesta, inglese per impostazione predefinita. Non apporta alcuna modifica a nessun account. Pubblico, nessuna autenticazione necessaria.
Permesso: public
curl https://privatusanalytics.com/tools/privacy-policy-generator.json
GET
/tools/qr-code.json
Genera un codice QR in SVG
tools_qr_code
Genera un codice QR come immagine SVG per la stampa o i poster. Abbinalo a un link con parametri UTM da tools_utm_builder. Gli input sono text (l'URL o il testo, fino a 1.000 caratteri) e level (correzione degli errori l, m, q o h, predefinito m, un livello più alto sopravvive a più danni ma richiede un codice più denso). Restituisce text, level, size (moduli per lato) e svg (un documento SVG autonomo, nero su bianco). Un testo troppo lungo per il livello scelto viene rifiutato. Per i codici QR dei link brevi tracciati usa invece links_qr. Pubblico, nessuna autenticazione necessaria.
Permesso: public
curl https://privatusanalytics.com/tools/qr-code.json
GET
/tools/tracker-scanner.json
Elenca cookie e tracker noti su una pagina
tools_tracker_scan
Scarica una pagina pubblica ed elenca i cookie che imposta e i tracker di terze parti noti a cui fa riferimento. Usalo per un controllo rapido di ciò che una pagina carica prima di scegliere un approccio al consenso. È una scansione statica solo dell'HTML e delle intestazioni di risposta, non esegue JavaScript, quindi i cookie impostati dagli script e i tag caricati in seguito da un tag manager non vengono rilevati. Restituisce url (URL finale dopo fino a 3 reindirizzamenti), status, truncated (true quando è stato letto solo il primo 1 MB), cookies (name, domain, path, expires, secure, http_only e same_site, i valori non vengono mai restituiti), trackers (name, category, match ed evidence, dove category è advertising, analytics, session_recording, tag_manager, marketing o privacy_analytics) e third_party_hosts (nomi host ordinati di altri siti). L'URL deve essere http o https pubblico, con un timeout di download di 5 secondi, e le chiamate sono limitate a 10 al minuto per client. Pubblico, nessuna autenticazione necessaria.
Permesso: public
curl https://privatusanalytics.com/tools/tracker-scanner.json
GET
/tools/utm-builder.json
Crea un URL di campagna con parametri UTM
tools_utm_builder
Costruisce l'URL di una campagna con parametri UTM e segnala gli errori più comuni. Gli input sono url (deve essere http o https), source, medium e campaign (tutti obbligatori) e term e content facoltativi. I parametri utm_ già presenti nell'URL vengono sostituiti e gli altri parametri di query vengono mantenuti. Restituisce url (il link finito), params (i valori utm_ aggiunti, quelli vuoti esclusi) e warnings (stringhe per valori con lettere maiuscole, spazi, o testo che sembra un indirizzo email o un numero lungo, che non dovrebbero mai stare in un URL). Usa valori in minuscolo senza spazi così la stessa campagna non viene divisa in più righe nei report. Non salva nulla. Pubblico, nessuna autenticazione necessaria.
Permesso: public
curl https://privatusanalytics.com/tools/utm-builder.json
POST
/waitlist.json
Iscriviti a una lista d'attesa (hosting nell'UE)
waitlist_join
I client browser inviano un token Cloudflare Turnstile come `cf-turnstile-response`. Le richieste con un token API non ne hanno bisogno.
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/waitlist.json \
-H "Content-Type: application/json" -d '{…}'
Sondaggi
POST
/sites/:site_id/surveys.json
Crea un sondaggio
surveys_create
Crea un sondaggio sul sito senza cookie per un sito. Non raccoglie nulla finché il suo stato non è active, quindi crealo prima come draft oppure passa status active per avviarlo subito. Sono obbligatori name (interno, i visitatori non lo vedono mai, massimo 120 caratteri) e questions (da 1 a 5 righe in ordine). Ogni domanda è un oggetto con key (facoltativa, un id stabile di lettere minuscole, cifre e trattini bassi, generato quando omesso), kind (text, choice, multi, rating, nps o yes_no), prompt (obbligatorio, massimo 200 caratteri), required (booleano), choices (un elenco di fino a 10 opzioni, solo per choice e multi) e scale (3, 5, 7 o 10, solo per rating, predefinito 5). L'NPS usa sempre da 0 a 10. Il targeting è trigger_kind (immediate, delay, scroll, exit o manual) con delay_seconds (da 0 a 600, predefinito 10, solo per delay) e scroll_percent (da 1 a 100, predefinito 50, solo per scroll), paths (righe di match_type exact, prefix o glob e pattern, vuoto significa ogni pagina), devices (desktop, mobile, tablet, vuoto significa tutti), position (bottom_right, bottom_left o center), sample_rate (da 1 a 100 percento dei visitatori), thank_you (massimo 200 caratteri), starts_on ed ends_on (YYYY-MM-DD). I sondaggi non possono chiedere un indirizzo email e le risposte scritte vengono ripulite dai dati personali. Il piano Free consente 1 sondaggio per workspace e un numero limitato di risposte al mese, i piani a pagamento sono illimitati. Richiede il permesso content.write. Restituisce il sondaggio con id (svy_...). Leggi le risposte con surveys_get.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/surveys/:id.json
Elimina un sondaggio con le sue risposte
surveys_delete
Elimina in modo permanente un sondaggio insieme a tutte le sue risposte. L'azione non può essere annullata e i risultati vanno persi. Usa invece surveys_pause se vuoi solo smettere di raccogliere. L'id proviene da surveys_list e site_id è obbligatorio. Richiede il permesso content.write. Restituisce il sondaggio eliminato.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/surveys/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/surveys.json
Elenca i sondaggi di un sito con il numero di risposte
surveys_list
Elenca i sondaggi di un sito, dal più recente, con le loro impostazioni e il numero di risposte. Filtra con status (draft, active, paused o all, predefinito all). Paginato con page e per_page (predefinito 25, fino a 100). Ogni sondaggio ha id (svy_...), name, status, questions, le impostazioni di targeting, starts_on, ends_on, created_at, updated_at e stats (conteggi responses, completed e this_month). Usa surveys_get per le risposte e i risultati di un sondaggio.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/surveys.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/surveys/:id/pause.json
Smetti di raccogliere risposte e conserva quelle già date
surveys_pause
Mette in pausa un sondaggio così smette subito di essere proposto ai visitatori. Le risposte già raccolte vengono conservate e mostrate in surveys_get, e surveys_start lo riprende. Usalo al posto di surveys_delete quando vuoi solo smettere di raccogliere. L'id proviene da surveys_list e site_id è obbligatorio. Richiede il permesso content.write. Restituisce il sondaggio con status paused.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys/:id/pause.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/surveys/:id.json
Risultati di un sondaggio per un periodo, suddivisi per domanda
surveys_get
Restituisce il report dei risultati di un sondaggio in un periodo, non solo le sue impostazioni (usa surveys_list per impostazioni e conteggi). Scegli il preset period (predefinito 30d) oppure period custom con from e to. La risposta ha survey (le sue impostazioni), period (from e to come orari ISO 8601), responses (le persone che hanno risposto ad almeno una domanda), completed (le persone che hanno risposto all'ultima domanda), questions (una voce per domanda con key, kind, prompt e il numero di answers, più il dettaglio per tipo) e pages, devices e countries (fino a 10 righe ciascuno di value e count). Il dettaglio per tipo è texts (fino a 100 risposte scritte più recenti con text e at) per text, choices (value, count, share in percentuale con un decimale, offered) per choice, multi e yes_no, average (null senza risposte), scale e distribution per rating, e score (NPS da -100 a 100, null senza risposte), promoters (9 e 10), passives (7 e 8), detractors (da 0 a 6) e distribution per nps. Usa surveys_themes per riassumere le risposte scritte.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/surveys/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/surveys/:id/start.json
Inizia a raccogliere risposte
surveys_start
Imposta un sondaggio su active così può essere proposto ai visitatori. Compare solo quando la data attuale rientra tra starts_on ed ends_on (se impostati), la pagina corrisponde ai suoi paths e devices e la quota mensile di risposte del piano non è esaurita. Usalo per una bozza o un sondaggio in pausa. L'id proviene da surveys_list e site_id è obbligatorio. Richiede il permesso content.write. Restituisce il sondaggio con status active. Fermalo di nuovo con surveys_pause.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys/:id/start.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/surveys/:id/themes.json
Raggruppa in temi le risposte a testo libero a una domanda (piano Business)
surveys_themes
Usa l'IA per raggruppare in temi le risposte scritte a una domanda a testo libero. Solo piano Business. Sceglilo dopo che surveys_get mostra una domanda di testo con abbastanza risposte e passa question_key (la key di una domanda di tipo text da surveys_get). Servono almeno 5 risposte scritte e vengono usate le 300 più recenti. Il risultato elenca fino a 12 temi, ciascuno con label, count, sentiment (positive, neutral o negative) ed example (una risposta rappresentativa, può essere null), più answers (quante risposte sono state riassunte) e generated_at. Ogni nuova generazione usa una domanda dalla quota mensile di IA del workspace, che viene restituita se fallisce. Il risultato viene messo in cache in base alle risposte, quindi chiamarlo di nuovo senza nuove risposte non costa nulla. Fallisce con un errore di validazione quando il piano non lo include, la quota è esaurita, l'IA non è configurata o le risposte sono troppo poche.
Permesso: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys/:id/themes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/surveys/:id.json
Aggiorna un sondaggio
surveys_update
Modifica un sondaggio. Cambia solo ciò che invii. Input e limiti sono gli stessi di surveys_create, con status draft, active o paused. Quando invii questions l'intero elenco viene sostituito, quindi includi ogni domanda che vuoi mantenere e mantieni ogni key esistente per conservare le risposte raccolte (riformulare un prompt con la stessa key non divide i risultati). Le domande che ometti smettono di comparire nei risultati. Le modifiche al targeting hanno effetto subito sui visitatori. L'id proviene da surveys_list e site_id è obbligatorio. Richiede il permesso content.write. Restituisce il sondaggio aggiornato.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/surveys/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Spazi pubblicitari
POST
/sites/:site_id/experiments/ads.json
Crea uno spazio pubblicitario
ad_placements_create
Crea uno slot di una dimensione sul sito. Invia size (una dimensione comune come medium_rectangle o leaderboard) oppure width e height in pixel. key è il nome con cui lo identifica il tag sul sito e viene ricavata dal nome se omessa. Poi aggiungi le creatività con ad_creatives_create e inserisci nel sito il tag di ad_placements_embed. Richiede content.write.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/ads.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/experiments/ads/:id.json
Elimina uno spazio pubblicitario con le sue creatività
ad_placements_delete
Elimina in modo permanente uno spazio con le sue creatività e le relative immagini, i suoi esperimenti pubblicitari e i loro risultati e i suoi link per sponsor. Il tag sul sito non mostrerà più nulla. Lo strumento MCP non lo esegue e risponde con human_only e la pagina in cui una persona può eliminarlo. Richiede content.write.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/ads/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/experiments/ads/:id/embed.json
Ottieni il tag che mostra uno spazio pubblicitario sul sito
ad_placements_embed
Lo script loader (una volta a pagina) e lo slot per questo spazio, come html da incollare. Lo slot mantiene la sua dimensione prima dell'esecuzione del loader. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:id/embed.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/experiments/ads.json
Elenca gli spazi pubblicitari di un sito con gli ultimi 30 giorni
ad_placements_list
Ogni spazio con la sua chiave, la dimensione, il numero di creatività e le statistiche (impressioni, impressioni visibili, clic e ctr, il tasso di clic per impressione visibile) degli ultimi 30 giorni. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/ads.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/experiments/ads/:id.json
Ottieni uno spazio pubblicitario con i numeri di ogni creatività
ad_placements_get
Lo spazio, le sue creatività con le statistiche del periodo (7d, 30d o 90d) e i numeri dello spazio giorno per giorno. humans_only mantiene ciò che il punteggio bot considera probabilmente umano (Pro e superiori). Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/experiments/ads/:id.json
Modifica uno spazio pubblicitario
ad_placements_update
Modifica il nome, la chiave, la dimensione o l'etichetta. Cambiano solo i valori inviati. Una nuova chiave richiede il nuovo tag sul sito. Richiede content.write.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/experiments/ads/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Tag delle testimonianze
POST
/sites/:site_id/testimonials/tags/:id/apply_rules.json
Esegui le regole di un tag sulle testimonianze già archiviate
testimonial_tags_apply_rules
dry_run true (il valore predefinito) non cambia nulla e risponde con i conteggi: quante verrebbero taggate, su quante, e quante hanno già il tag. dry_run false le tagga come un'unica azione in blocco e risponde con undo_id, che testimonials_bulk_undo accetta per 7 giorni. Più di 100 vengono eseguite in background e la risposta ha state running.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id/apply_rules.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/tags.json
Crea un tag, con regole di tag automatico se le invii
testimonial_tags_create
Una regola è { match, conditions }. Una testimonianza che soddisfa una qualsiasi regola riceve il tag nel momento in cui arriva. Le regole aggiungono sempre e soltanto un tag. Per taggare ciò che è già archiviato, chiama poi testimonial_tags_apply_rules.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/tags.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/tags/:id.json
Sposta un tag nel cestino per 30 giorni
testimonial_tags_destroy
Esce da ogni testimonianza, filtro e selettore. Ripristinarlo con testimonial_trash_restore lo rimette su ogni testimonianza che lo aveva. Una raccolta intelligente le cui regole lo nominano non corrisponde a nulla fino ad allora. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/tags.json
Elenca i tag di un sito con le loro regole
testimonial_tags_list
Ogni tag ha quante testimonianze lo portano, le sue regole di tag automatico come condizioni strutturate e in italiano semplice, e quando una regola lo ha applicato per l'ultima volta. I tag nel cestino sono esclusi.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/tags.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/tags/:id/merge.json
Unisci un tag in un altro
testimonial_tags_merge
Ogni testimonianza che aveva questo tag riceve l'altro, ogni regola passa all'altro, ogni raccolta intelligente, vista salvata, widget e wall che nominava questo tag nomina l'altro, e questo tag va nel cestino, vuoto. Risponde con il tag che viene mantenuto.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id/merge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/testimonials/tags/:id.json
Cambia nome, colore o regole di un tag
testimonial_tags_update
Cambia solo ciò che viene inviato. Inviare rules sostituisce ogni regola del tag, e un elenco vuoto le rimuove tutte.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Testimonianze
GET
/sites/:site_id/testimonials/overview.json
Leggi i numeri di un sito, ciò che richiede attenzione e cosa è successo di recente
testimonials_overview
stats contiene i cinque numeri della pagina Panoramica: testimonianze approvate, in sospeso, nuove questo mese, valutazione media e in uso. attention elenca ciò che richiede una decisione con il suo conteggio. activity sono gli ultimi 10 eventi e latest_approved le tre testimonianze approvate più di recente.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/overview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/setup.json
Ottieni la checklist di configurazione di un sito
testimonials_setup_get
Restituisce le voci import, testimonials, approve, ask, widget e teammate, ognuna con done e dismissed. Una voce è completata in base a ciò che il sito contiene, mai con un clic. hidden è true quando ogni voce è completata o ignorata, ed è allora che l'Inbox smette di mostrare la scheda.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/setup.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/setup.json
Ignora una voce della checklist di configurazione, o l'intera scheda
testimonials_setup_update
dismiss è una chiave di voce (import, testimonials, approve, ask, widget o teammate) oppure all per l'intera scheda. Ignorare nasconde la voce e non la segna mai come completata, e non si può ripristinare tramite l'API.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/setup.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/:id/approve.json
Approva una testimonianza perché possa essere mostrata
testimonials_approve
Una testimonianza in attesa del limite non può essere approvata: il server risponde con 422 e il codice waiting_for_allowance. La risposta contiene meta.undo_id.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/approve.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/bulk.json
Esegui un'azione su una selezione di testimonianze, o su tutto ciò che corrisponde a un filtro
testimonials_bulk
Invia ids (fino a 100, eseguiti in una volta, tutti o nessuno) oppure filters con confirm_count (l'intero risultato). Più di 100 vengono eseguite in background e la risposta ha state running. Azioni: approve, reject, mark_pending, pin, unpin, add_tags, remove_tags, add_to_collection, remove_from_collection, set_property, trash, restore. Ognuna risponde con un id di annullamento che testimonials_bulk_undo accetta per 7 giorni. delete_permanently è l'unica azione che non si può annullare: richiede sites.manage e la sua risposta dice undoable false. Tramite MCP le due azioni che eliminano, trash e delete_permanently, non vengono eseguite: lo strumento risponde con human_only e la pagina dell'app in cui una persona lo fa, mentre ogni altra azione viene eseguita. Tramite l'API, l'azione export (con ids o filters e un format facoltativo tra csv, json, ndjson o xlsx) non cambia nulla: richiede analytics.export e risponde con 202 e l'esportazione da scaricare.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/bulk.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/bulk/:id/undo.json
Annulla un'azione in blocco entro 7 giorni
testimonials_bulk_undo
Rimette il valore precedente su ogni testimonianza che l'esecuzione ha cambiato. Una cambiata di nuovo da allora viene lasciata stare e contata in left. Tramite MCP un annullamento che eliminerebbe o sposterebbe nel cestino non viene eseguito (l'annullamento di un ripristino, di un'esecuzione di traduzione e di un'esecuzione di creazione immagini): lo strumento risponde con human_only e la pagina dell'app in cui una persona lo fa.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/bulk/:id/undo.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials.json
Aggiungi una testimonianza a mano o tramite l'API
testimonials_create
Archiviata attraverso l'unico canale di ingresso che ogni percorso usa. Conta nel limite mensile di nuove testimonianze del piano, e al limite il server risponde con 422 e il codice allowance_reached (solo l'invio di un modulo di un cliente viene invece messo in attesa). La stessa persona che dice di nuovo le stesse parole viene rifiutata con il codice duplicate a meno che allow_duplicate sia true. Lo stesso external_id di nuovo restituisce quello già archiviato.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/:id/permanent.json
Elimina definitivamente una testimonianza, con la sua cronologia, il record del consenso e i file
testimonials_delete
Non si può annullare. Funziona su una testimonianza nel cestino o fuori, richiede confirm e il permesso sites.manage. Tramite MCP lo strumento non elimina nulla e risponde con la pagina in cui una persona lo fa.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/:id/permanent.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/:id.json
Sposta una testimonianza nel cestino per 30 giorni
testimonials_trash
La testimonianza conserva stato, tag, raccolte e file, non viene mostrata da nessuna parte e viene eliminata definitivamente dopo 30 giorni. testimonials_restore la rimette esattamente com'era. La risposta contiene meta.undo_id. Spostare nel cestino una testimonianza già nel cestino non cambia nulla. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/facets.json
Conta le testimonianze dietro ogni valore di filtro, per gli stessi input dell'elenco
testimonials_facets
La forma della libreria senza leggere alcuna testimonianza. Ogni faccetta conta i suoi valori escludendo la propria scelta e applicando tutti gli altri filtri. meta contiene il totale e il filtro a parole.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/facets.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/:id/highlight.json
Segna la frase migliore di una testimonianza, o cancellala
testimonials_highlight
highlight deve essere una parte esatta delle parole della testimonianza, altrimenti il server risponde con 422. Un highlight vuoto lo cancella. Ogni modifica è una versione nella cronologia.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/:id/highlight.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/:id/history.json
Elenca ogni versione di parole, titolo, valutazione ed evidenza di una testimonianza
testimonials_history
Dalla più recente. La versione 1 è la testimonianza così come è stata ricevuta e non ha autore. Ogni versione successiva ha il membro che l'ha fatta, quando, la nota che ha lasciato e, per un ripristino, la versione che ha rimesso. Paginata con page e per_page.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/:id/history.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials.json
Elenca le testimonianze di un sito, filtrate e ordinate
testimonials_list
Tre modi per dire quali, e si sommano: gli input delle faccette (status, tag_id, has_video e il resto), q (la casella di ricerca con i suoi operatori, per esempio rating:5 has:video tag:onboarding "saved us") e conditions con match (righe strutturate). Invia facets come true per il conteggio in tempo reale dietro ogni valore di faccetta in meta.facets. Nulla di ciò che è nel cestino viene elencato a meno che trashed sia true, che elenca solo il cestino.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/:id/pend.json
Rimetti una testimonianza in sospeso
testimonials_pend
Riporta una testimonianza approvata o rifiutata in sospeso, così non viene mostrata da nessuna parte finché non si decide di nuovo. La risposta contiene meta.undo_id. Una testimonianza nel cestino viene rifiutata con il codice in_trash.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/pend.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/:id/pin.json
Fissa una testimonianza perché venga mostrata per prima, o toglila
testimonials_pin
Una testimonianza fissata viene mostrata per prima ovunque sia visualizzata. Invia pinned false per toglierla. La risposta contiene meta.undo_id quando qualcosa è cambiato.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/pin.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/:id/reject.json
Rifiuta una testimonianza. Viene conservata e non mostrata da nessuna parte
testimonials_reject
La testimonianza conserva tutto ciò che ha e non viene mostrata da nessuna parte. Rifiutarne una già rifiutata non cambia nulla. La risposta contiene meta.undo_id, che testimonials_bulk_undo accetta per 7 giorni. Una testimonianza nel cestino viene rifiutata con il codice in_trash.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/reject.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/:id/restore.json
Ripristina una testimonianza dal cestino, esattamente com'era
testimonials_restore
Riporta una testimonianza nel cestino al suo stato, ai tag, alle raccolte e ai luoghi che la mostravano. Non conta mai come una nuova testimonianza. Una che non è nel cestino viene rifiutata con il codice not_in_trash.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/restore.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/:id/restore_version.json
Rimetti parole, titolo, valutazione ed evidenza di una versione precedente
testimonials_restore_version
Nulla viene rimosso dalla cronologia. Il ripristino è una nuova versione che indica da quale proviene. version 1 riporta la testimonianza alle parole come ricevute. Un numero di versione sconosciuto è un 422.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/restore_version.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/:id.json
Ottieni una testimonianza con la sua persona, i file, il record del consenso, i tag e dove viene usata
testimonials_get
Restituisce una testimonianza del sito in base al suo id (tm_...), nel cestino o no. person.email è null a meno che chi chiama abbia content.write, e has_email indica se ne esiste una registrata. media elenca i file con il loro stato di elaborazione. used_in elenca ogni widget, wall e immagine che la mostra.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/showable.json
Elenca le testimonianze che il pubblico può vedere, così come il pubblico può vederle
testimonials_showable
Le testimonianze approvate più recenti di un sito che possono essere mostrate in pubblico, per una visualizzazione tua fuori dai widget e dai wall. Ognuna contiene solo ciò che il suo record del consenso consente: una persona il cui nome non può essere mostrato appare come A customer, e una foto o una registrazione viene omessa a meno che fosse consentita. Una testimonianza in sospeso, rifiutata o nel cestino, o una in attesa del limite, non viene mai elencata. Nella risposta non c'è alcuna email.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/showable.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/triage.json
Ottieni la prossima testimonianza di una coda di smistamento
testimonials_triage
Senza filtro la coda è In sospeso, non in attesa del limite, dalla più vecchia ricevuta. Con i filtri dell'inbox è quel risultato nel suo ordinamento. Invia after con l'id appena gestito per ottenere quella che segue. data è null quando la coda è finita. meta contiene remaining e total.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/triage.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/:id.json
Modifica una testimonianza. Le modifiche a parole, titolo, valutazione ed evidenza vengono conservate nella cronologia
testimonials_update
Vengono modificati solo gli input inviati. Una modifica a body, title, rating o highlight aggiunge una versione alla cronologia con edit_note e non cambia mai il segno di verifica. rating null lo cancella. highlight deve essere una parte esatta delle parole, e uno vuoto lo cancella. properties modifica solo le chiavi inviate. add_tags e remove_tags accettano nomi o id. Stato, fissaggio e cestino hanno i propri strumenti. Una testimonianza nel cestino non può essere modificata.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Token API
POST
/workspaces/:workspace_id/api_tokens.json
Crea un token API (il token viene mostrato una sola volta)
api_tokens_create
Crea un token API per il membro che effettua la chiamata in un workspace e restituisce il segreto una sola volta, nel campo token. Copialo subito: non può essere letto di nuovo e un token perso va revocato e ricreato. Un token può solo restringere ciò che il suo membro può fare. Se omesso, permissions include per impostazione predefinita tutti i permessi del membro (un elenco vuoto esplicito viene rifiutato e richiedere un permesso che non hai è un errore). site_ids accetta gli id pubblici dei siti (pa_...) e limita il token a quei siti. Se è vuoto, il token funziona per ogni sito a cui il suo membro può accedere (o mantiene l'elenco dei siti del token che effettua questa chiamata). expires_at è facoltativo, in formato ISO 8601, deve essere nel futuro e non oltre 3 anni da oggi: omettilo per un token che non scade mai. allowed_ips limita il token a quegli IP o intervalli CIDR. Il token che effettua questa chiamata deve avere tokens.manage. Un workspace che richiede l'autenticazione a due fattori rifiuta i token dei membri senza un secondo fattore personale. Restituisce gli stessi campi di api_tokens_list più token.
Permesso: member
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/api_tokens.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/api_tokens/:id.json
Revoca un token API
api_tokens_delete
Revoca un token API subito e in modo permanente. Le richieste che lo usano falliscono da quel momento e un token revocato non può essere ripristinato: creane uno nuovo. Il record del token resta nell'elenco con status revoked (usa api_tokens_list con include_revoked per vederlo) e revocare un token già revocato non cambia nulla. Prendi l'id (un uuid) da api_tokens_list. Puoi revocare i tuoi token, mentre per revocare quelli di un altro servono tokens.manage e accesso a ogni sito coperto dal token. Un token che effettua questa chiamata deve avere tokens.manage. Restituisce il token revocato senza il suo segreto.
Permesso: member
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/api_tokens/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/api_tokens.json
Elenca i token API
api_tokens_list
Elenca i token API di un workspace, dal più recente e paginati. Senza il permesso tokens.manage vedi solo i tuoi token, con il permesso vedi quelli di ogni membro. I token revocati e scaduti sono nascosti, a meno che include_revoked sia true. Ogni elemento ha id (uuid, usato da api_tokens_delete), name, token_prefix (i primi caratteri, per riconoscere un token), owner (l'email del membro), permissions (nomi come analytics.read), site_ids (id pubblici dei siti pa_..., un array vuoto significa ogni sito a cui il proprietario può accedere), allowed_ips, oauth_client (il nome dell'app connessa se il token è stato emesso tramite OAuth, altrimenti null), status (active, expired o revoked), expires_at, last_used_at, revoked_at e created_at. Il segreto non viene mai restituito qui, token è sempre null in un elenco. Viene mostrato una sola volta da api_tokens_create.
Permesso: member
curl https://privatusanalytics.com/workspaces/:workspace_id/api_tokens.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Tracciamento
POST
/sites/:site_id/tracking/ingest_key.json
Crea o ruota la chiave dei log dei crawler (mostrata una sola volta)
tracking_ingest_key_rotate
Crea una nuova chiave segreta dei log dei crawler (inizia con pik_) per un sito e sostituisce qualsiasi chiave esistente. La chiave autentica i caricamenti dei log di accesso del server per il report sui crawler IA (POST /api/logs). Usalo sia per creare la prima chiave sia per ruotarla. La nuova chiave funziona subito e la vecchia smette subito di funzionare, quindi distribuisci subito la nuova chiave per evitare errori 401 sui caricamenti dei log. La chiave completa viene restituita solo in questa risposta, nel campo key, quindi conservala in un archivio di segreti. In seguito viene conservato e mostrato solo un breve prefisso (prefix qui, ingest_key_prefix sul sito). Restituisce site_id, key e prefix. Richiede sites.manage. Usa tracking_ingest_key_revoke per rimuovere la chiave senza sostituirla.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/tracking/ingest_key.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/tracking/ingest_key.json
Revoca la chiave dei log dei crawler
tracking_ingest_key_revoke
Rimuove la chiave dei log dei crawler di un sito. Da quel momento ogni caricamento di log inviato con quella chiave viene rifiutato con 401 finché non ne crei una nuova con tracking_ingest_key_rotate. Il tracciamento dal browser con l'id pubblico del sito non è interessato. La chiave non può essere ripristinata. Richiede sites.manage. Restituisce l'oggetto sito (vedi sites_get), dove ingest_key_prefix ora è null.
Permesso: sites.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/tracking/ingest_key.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/tracking/verify.json
Controlla che il tracker sia installato sul sito (tag script, id del sito, CSP e referrer policy)
tracking_verify
Scarica la pagina del sito e controlla che lo script di tracciamento di Privatus Analytics sia installato correttamente, e contrassegna il sito come verificato quando trova lo script con l'id di questo sito. Per impostazione predefinita richiede la home page (https://domain/) e url può indicare un'altra pagina, ma solo sul dominio del sito, sui domini extra o sui loro sottodomini. Il risultato (sotto data) ha url, status (stato HTTP), script_found, site_ids (ogni id data-site trovato nella pagina), installed (true quando l'id di questo sito è tra quelli), csp e csp_ok (se la Content-Security-Policy della pagina permette al tracker di caricarsi e di inviare), referrer_policy e referrer_ok (una policy no-referrer significa che ogni visita risulta diretta) e checked_at. Scarica tramite la rete pubblica, legge al massimo 2 MB e ha un limite di frequenza per workspace e per host, quindi risponde 429 quando viene chiamato troppo spesso. Se la pagina non è raggiungibile restituisce un errore di validazione. Usa sites_setup_get per vedere se sono arrivati eventi. Richiede sites.manage.
Permesso: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/tracking/verify.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/tracking/snippet.json
Crea lo snippet di tracciamento per le opzioni scelte
tracking_snippet
Costruisce il tag script HTML per installare il tracciamento su un sito e lo restituisce con l'id del sito come data.site_id e data.snippet. Scegli questo invece di sites_setup_get quando ti serve personalizzarlo e usa tracking_verify in seguito per controllare la pagina live. Per impostazione predefinita ogni modulo del tracker viene caricato e le visualizzazioni di pagina sono automatiche. modules lo restringe a un sottoinsieme tra engage (tempo e scroll), auto (link in uscita, download, moduli, 404), vitals (Web Vitals), clicks (mappe dei clic) e ask (sondaggi sul sito). manual true disattiva la visualizzazione di pagina automatica così le invii tu. spa imposta il tracciamento della navigazione delle app a pagina singola su auto, history, hash oppure off. domains limita il tracciamento a quegli hostname, exclude elenca i glob di percorso da saltare, query_params elenca parametri di query aggiuntivi da mantenere e mask elenca le maschere di percorso lato client scritte come /u/*->/u/:id. Nulla viene salvato, lo snippet viene generato ogni volta dagli input. Richiede analytics.read.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/tracking/snippet.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Traduzioni delle testimonianze
POST
/sites/:site_id/testimonials/translations.json
Traduci le testimonianze nelle lingue che un sito offre
testimonial_translations_create
Chiama prima testimonial_translations_estimate. Questo invia il corpo, il titolo e l'evidenza delle testimonianze scelte a Google Cloud Translation (mai un nome, un'email o un'azienda), e il membro riceve un'email che l'ha avviato un assistente. La traduzione avviene in background, e una riga già archiviata non viene mai recuperata di nuovo. Alla quota mensile di caratteri il resto viene archiviato come in attesa e prosegue il giorno 1. Risponde con 402 plan_limit sotto Business, e con 422 not_configured finché la traduzione non è configurata.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/translations.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/translations/:testimonial_id/:language.json
Rimuovi una traduzione archiviata
testimonial_translations_delete
La testimonianza viene mostrata di nuovo con le sue parole ovunque fosse usata quella lingua. I caratteri già spesi per essa non vengono restituiti. Funziona su ogni piano. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/translations/:testimonial_id/:language.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/translations/estimate.json
Conta i caratteri che un'esecuzione di traduzione invierebbe, prima di eseguirla
testimonial_translations_estimate
Indica quali testimonianze in un solo modo: testimonial_ids, collection_id o all_approved. La risposta dà le testimonianze, i caratteri che verrebbero inviati, i caratteri già archiviati e ciò che resta del mese. Indica caratteri, mai un prezzo. Nulla viene recuperato.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/translations/estimate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/translations.json
Elenca le traduzioni archiviate di un sito
testimonial_translations_list
Una riga per testimonianza e lingua, dalla modificata più di recente, 25 per pagina. Filtra per lingua, stato, origine o testimonial_id. Funziona su ogni piano, quindi le traduzioni fatte prima di un downgrade si possono ancora leggere.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/translations.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/translations/:testimonial_id/:language.json
Scrivi o correggi a mano una traduzione
testimonial_translations_update
La riga viene contrassegnata come modificata, e un'esecuzione successiva non la sovrascrive a meno che venga inviato overwrite_edited. Nulla viene recuperato e nulla conta nella quota. L'originale non viene mai modificato. Dal piano Business in su (402 plan_limit altrove).
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/translations/:testimonial_id/:language.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Uptime
POST
/sites/:site_id/uptime.json
Aggiungi un controllo di uptime per un sito
uptime_checks_create
Aggiunge un controllo di uptime legato a un sito. Usa workspace_uptime_checks_create per un controllo che non appartiene a nessun sito. kind decide l'obiettivo. http controlla il codice di stato di url, keyword controlla che il corpo della risposta di url contenga keyword, tcp si connette a host e port e dns controlla che host si risolva. I campi per gli altri tipi vengono ignorati. url per impostazione predefinita è la home page del sito per i controlli http. expected_status (da 100 a 599, predefinito 200), http_method (GET o HEAD) e timeout_seconds (da 1 a 30, predefinito 20) si applicano ai controlli http e keyword. interval_seconds è il tempo tra un controllo e il successivo, deve essere almeno il minimo del piano (Free 300, Pro 60, Business 30) e per impostazione predefinita è 300 oppure il minimo se più alto. public true permette al controllo di comparire su una pagina di stato. Gli indirizzi privati e interni vengono rifiutati e il piano limita il numero di controlli per workspace (Free 3, Pro 20, Business 100). Il primo controllo viene eseguito in pochi istanti, status parte come pending. Richiede il permesso uptime.manage. Restituisce il controllo con id (upc_...).
Permesso: uptime.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/uptime.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/uptime/checks/:id.json
Elimina un controllo di uptime e la sua cronologia
uptime_checks_delete
Elimina in modo permanente un controllo di uptime con i suoi risultati e la cronologia degli incidenti, e lo rimuove da ogni pagina di stato che lo mostra. L'azione non può essere annullata. Usa uptime_checks_pause per smettere di controllare ma conservare la cronologia. L'id proviene da uptime_checks_list. Richiede il permesso uptime.manage. Restituisce il controllo eliminato.
Permesso: uptime.manage
curl -X DELETE https://privatusanalytics.com/uptime/checks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/uptime.json
Elenca i controlli di uptime di un sito
uptime_checks_list
Elenca i controlli di uptime di un sito, compresi i controlli dell'intero workspace che controllano il dominio del sito o un suo sottodominio. Ordinati per nome. Usa workspace_uptime_checks_list per ogni controllo del workspace. Filtra con status (up, down, pending o paused) o query (parte di name, url o host). Paginato con page e per_page (fino a 100). Ogni controllo ha id (upc_...), workspace_id, site_id (null per i controlli dell'intero workspace), name, kind, url, host, port, keyword, expected_status, http_method, interval_seconds, timeout_seconds, status (up, down, pending o paused), enabled, public, last_checked_at, next_check_at, last_response_ms (millisecondi), ssl_expires_at, ssl_issuer, domain_expires_at e created_at. Usa uptime_checks_get per le percentuali di uptime e gli incidenti.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/uptime.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/uptime/checks/:id/pause.json
Metti in pausa un controllo di uptime
uptime_checks_pause
Mette in pausa un controllo di uptime così non viene più eseguito. Qualsiasi incidente aperto viene chiuso subito e non vengono inviati avvisi di down o up mentre è in pausa. La cronologia viene conservata e il suo stato risulta paused. Riprendilo con uptime_checks_resume. L'id proviene da uptime_checks_list. Richiede il permesso uptime.manage. Restituisce il controllo.
Permesso: uptime.manage
curl -X POST https://privatusanalytics.com/uptime/checks/:id/pause.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/uptime/checks/:id/resume.json
Riprendi un controllo di uptime in pausa
uptime_checks_resume
Riprende un controllo di uptime in pausa. Viene eseguito al successivo ciclo dello scheduler e il suo stato è pending finché non arriva il primo risultato. L'id proviene da uptime_checks_list. Richiede il permesso uptime.manage. Restituisce il controllo.
Permesso: uptime.manage
curl -X POST https://privatusanalytics.com/uptime/checks/:id/resume.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/uptime/checks/:id.json
Ottieni un controllo di uptime: uptime a 24h/7g/30g, tempi di risposta e incidenti
uptime_checks_get
Restituisce un controllo di uptime con la sua cronologia, non solo le sue impostazioni. Scegli range (24h predefinito, 7d o 30d) per il grafico dei tempi di risposta. La risposta ha check (impostazioni e stato live, vedi uptime_checks_list), uptime (percentuale per 24h, 7d e 30d, null finché non è stato eseguito il primo controllo), range, response_times (unit hour o day, labels come orari ISO 8601 e series del tempo di risposta medio in millisecondi per località con null per i vuoti) e incidents (i 50 più recenti con started_at, resolved_at null finché ancora aperto, duration_seconds, cause e failed_locations). Solo i controlli riusciti contano per i tempi di risposta. L'id proviene da uptime_checks_list.
Permesso: analytics.read
curl https://privatusanalytics.com/uptime/checks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/uptime/checks/:id.json
Modifica un controllo di uptime
uptime_checks_update
Modifica un controllo di uptime. Cambia solo ciò che invii. Regole e limiti sono gli stessi di uptime_checks_create (l'intervallo deve essere almeno il minimo del piano, gli indirizzi privati vengono rifiutati). Cambiare kind azzera i campi dell'obiettivo che non si applicano più. Cambiare interval_seconds programma subito il controllo successivo. L'id proviene da uptime_checks_list. Richiede il permesso uptime.manage. Restituisce il controllo aggiornato.
Permesso: uptime.manage
curl -X PATCH https://privatusanalytics.com/uptime/checks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/uptime/probes.json
Datacenter delle sonde, User-Agent e intervalli IP di uscita (per inserire nella allowlist le nostre sonde di uptime)
uptime_probes_list
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl https://privatusanalytics.com/uptime/probes.json
POST
/uptime/probes/results.json
Invia i risultati di un agente sonda esterno (Bearer token della sonda di uptime)
uptime_probes_results
Permesso: public
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/uptime/probes/results.json \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/uptime.json
Aggiungi un controllo di uptime del workspace (non legato a un sito)
workspace_uptime_checks_create
Aggiunge un controllo di uptime che appartiene all'intero workspace invece che a un sito. Usa uptime_checks_create per legare un controllo a un sito. Input, limiti del piano e regole sono gli stessi, vedi uptime_checks_create. kind è http, keyword, tcp o dns e decide quali tra url, keyword, host e port si applicano. Poiché non c'è un sito, un controllo http richiede un url esplicito. Chi è limitato ad alcuni siti non può creare controlli dell'intero workspace. Richiede il workspace_id da workspaces_list e il permesso uptime.manage. Restituisce il controllo con id (upc_...) e site_id null.
Permesso: uptime.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/uptime.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/uptime.json
Elenca tutti i controlli di uptime di un workspace
workspace_uptime_checks_list
Elenca ogni controllo di uptime di un workspace, compresi quelli non legati a nessun sito, ordinati per nome. Chi è limitato ad alcuni siti vede solo i controlli di quei siti. Usa uptime_checks_list per i controlli di un solo sito. Filtra con status (up, down, pending o paused) o query (parte di name, url o host). Paginato con page e per_page (fino a 100). Ogni elemento ha i campi descritti in uptime_checks_list. Richiede il workspace_id da workspaces_list.
Permesso: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/uptime.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Viste salvate delle testimonianze
POST
/sites/:site_id/testimonials/views.json
Salva con un nome un filtro, un testo di ricerca, un ordinamento e un layout dell'inbox
testimonial_saved_views_create
Una vista personale richiede solo analytics.read. Una condivisa richiede content.write e altrimenti viene rifiutata con il codice not_allowed. Una vista fissata compare nella barra laterale con il relativo conteggio. Aprila con testimonials_list e view_id.
Permesso: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/views.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/views/:id.json
Elimina una vista salvata. Nessuna testimonianza viene toccata
testimonial_saved_views_destroy
Una vista salvata è un filtro memorizzato, quindi se ne va solo la vista. Un widget o un wall alimentato dalla vista conserva le sue impostazioni e non ha nulla da mostrare finché non gli viene dato un altro feed. Una vista personale la elimina il suo proprietario, e una condivisa richiede content.write. Altrimenti la chiamata viene rifiutata con il codice not_allowed. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: analytics.read
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/views/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/views.json
Elenca le viste salvate di un sito che chi chiama può aprire
testimonial_saved_views_list
Restituisce le viste di chi chiama e ogni vista condivisa, prima quelle fissate nel loro ordine, poi per nome. scope è all (il valore predefinito), mine o shared. Passa l'id di una vista come view_id a testimonials_list per leggere le testimonianze che contiene.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/views.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/views/:id.json
Rinomina una vista salvata, cambia ciò che conserva, fissala o condividila
testimonial_saved_views_update
Cambiano solo gli input inviati: name, la ricerca salvata (q), filters, sort, layout, columns, position, pinned e shared. Una vista personale la modifica il suo proprietario. Modificare una vista condivisa, e condividere o smettere di condividere una vista qualsiasi, richiede content.write.
Permesso: analytics.read
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/views/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Wall of Love
POST
/sites/:site_id/testimonials/walls.json
Crea un Wall of Love
testimonial_walls_create
Una pagina ospitata all'indirizzo https://privatus.page/w/<slug>. Tutto ciò che viene omesso parte da un valore predefinito: il titolo Wall of Love, il layout masonry, lo slug dal nome.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/walls.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/walls/:id.json
Sposta un wall nel cestino
testimonial_walls_trash
La sua pagina risponde che è stata rimossa finché non viene ripristinato, e una copia incorporata non mostra nulla. Il ripristino lo riporta allo stesso indirizzo. Viene eliminato definitivamente dopo 30 giorni. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/walls/:id/duplicate.json
Copia un wall con un nuovo nome e indirizzo
testimonial_walls_duplicate
Crea una copia con un nuovo id, il nome che termina con "copy" e uno slug proprio, così ha il suo indirizzo. L'originale e il suo indirizzo non vengono modificati.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/walls/:id/embed.json
Ottieni il link a un wall e il codice per inserirlo in un'altra pagina
testimonial_walls_embed
L'indirizzo pubblico del wall e gli snippet di script, frame e link semplice che lo inseriscono in un'altra pagina. Gli snippet non cambiano mai quando il wall viene modificato.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id/embed.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/walls.json
Elenca i Wall of Love di un sito
testimonial_walls_list
Ogni Wall of Love del sito che non è nel cestino, con il suo indirizzo, ciò che lo alimenta e quante testimonianze mostra. Usa q per cercare per nome o slug e sort per ordinare per nome o per più recente.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/walls/:id/restore.json
Ripristina un wall dal cestino
testimonial_walls_restore
Toglie un wall dal cestino. La sua pagina risponde di nuovo allo stesso indirizzo, e ogni copia incorporata lo mostra di nuovo senza alcuna modifica al codice incollato.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id/restore.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/walls/:id.json
Ottieni un wall con ogni impostazione
testimonial_walls_get
Tutto ciò che il builder archivia: l'indirizzo (/w/<slug>), l'intestazione e il pulsante, il layout, ciò che alimenta il wall, ciò che mostra ogni scheda, lo stile e le impostazioni per i motori di ricerca. Un wall nel cestino risponde con 404.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/walls/:id.json
Cambia un wall
testimonial_walls_update
Cambiano solo gli input inviati. Uno slug cambiato lascia il vecchio indirizzo con un reindirizzamento.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Webhook
GET
/workspaces/:workspace_id/webhooks/:webhook_id/deliveries.json
Elenca gli invii di un webhook
webhook_deliveries_list
Elenca i recapiti inviati a un webhook (il percorso richiede webhook_id), dal più recente e paginati. Ognuno ha id (whd_...), event, status (pending, succeeded per qualsiasi risposta 2xx, oppure failed), status_code (null quando non è arrivata alcuna risposta), error (un breve motivo come un timeout, altrimenti null), attempt (quanti tentativi finora), duration_ms, payload (i dati JSON inviati), response_body (i primi 2000 caratteri della risposta) e delivered_at e created_at. Filtra con status succeeded o failed. Usalo per fare il debug di un endpoint e webhook_deliveries_redeliver per inviarne uno di nuovo.
Permesso: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:webhook_id/deliveries.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/webhooks/:webhook_id/deliveries/:id/redeliver.json
Invia di nuovo una consegna
webhook_deliveries_redeliver
Invia di nuovo il payload di un recapito passato come nuovo recapito allo stesso endpoint (id whd_..., da webhook_deliveries_list). Effettua una richiesta HTTP all'URL del cliente, quindi il destinatario può elaborare lo stesso evento due volte. Ha un limite di frequenza per workspace (condiviso con webhooks_test). Viene messo in coda, quindi la risposta è un nuovo recapito con status pending: leggi webhook_deliveries_list per vedere l'esito.
Permesso: workspace.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:webhook_id/deliveries/:id/redeliver.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/webhooks.json
Aggiungi un endpoint webhook
webhooks_create
Aggiunge un endpoint che riceve JSON inviato con POST per gli eventi del workspace (il percorso richiede workspace_id). url deve essere un indirizzo https pubblico, gli indirizzi privati e interni vengono rifiutati. events è un elenco obbligatorio scelto tra 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 è true per impostazione predefinita. Un segreto di firma (whsec_...) viene generato e restituito nella risposta e ogni recapito porta un'intestazione Privatus-Signature con un timestamp e un HMAC-SHA256 del corpo creato con esso. I recapiti falliti vengono ritentati con backoff e l'endpoint viene disattivato dopo 20 fallimenti consecutivi. Usa webhooks_test per inviare un esempio.
Permesso: workspace.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/webhooks.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/webhooks/:id.json
Elimina un webhook
webhooks_delete
Elimina un endpoint webhook e tutto il suo registro dei recapiti. L'azione non può essere annullata e i tentativi in sospeso si fermano. Per metterlo invece in pausa usa webhooks_update con enabled false. L'id (wh_...) proviene da webhooks_list. Restituisce il webhook eliminato.
Permesso: workspace.manage
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/webhooks.json
Elenca i webhook
webhooks_list
Elenca gli endpoint webhook in uscita di un workspace (il percorso richiede workspace_id), dal più vecchio. Ognuno ha id (wh_...), url, events (i nomi degli eventi che riceve), enabled, status (active, failing dopo fallimenti recenti, oppure disabled), secret (il segreto di firma, trattalo come sensibile), consecutive_failures, last_success_at, last_failure_at e created_at. Richiede il permesso workspace.manage. Serve a inviare eventi grezzi al tuo server. Per avvisare le persone usa notification_channels_list. Usa webhook_deliveries_list per ciò che è stato inviato.
Permesso: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/webhooks/:id.json
Ottieni un webhook
webhooks_get
Restituisce un endpoint webhook tramite id (wh_..., da webhooks_list), compreso il suo segreto di firma (whsec_...), usato per verificare l'intestazione Privatus-Signature di ogni recapito. I campi sono url, events, enabled, status (active, failing o disabled), secret, consecutive_failures, last_success_at, last_failure_at e created_at. Richiede il permesso workspace.manage.
Permesso: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/webhooks/:id/test.json
Invia una consegna di prova
webhooks_test
Mette in coda un recapito webhook.test con un messaggio di esempio a un endpoint, anche quando è disattivato, cosa che effettua una richiesta HTTP all'URL del cliente. Ha un limite di frequenza per workspace (condiviso con webhook_deliveries_redeliver) e una prova non viene ritentata. Il recapito viene inviato in background, quindi la risposta restituisce il recapito in coda con status pending. Leggi webhook_deliveries_list un momento dopo per vedere status_code, error, duration_ms e response_body.
Permesso: workspace.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id/test.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/workspaces/:workspace_id/webhooks/:id.json
Aggiorna un webhook (eventi, URL, abilitato, ruota il segreto)
webhooks_update
Modifica un webhook (id da webhooks_list). Cambia solo ciò che invii. Inviare events sostituisce l'intero elenco. Impostare enabled true su un endpoint disattivato azzera il suo conteggio dei fallimenti, ed è così che riattivi un endpoint disattivato dopo ripetuti fallimenti. Imposta rotate_secret true per generare un nuovo segreto di firma, mostrato nella risposta: il vecchio smette subito di funzionare, quindi il destinatario deve essere aggiornato. Le regole sull'url sono le stesse di webhooks_create. Restituisce il webhook.
Permesso: workspace.manage
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Widget
POST
/sites/:site_id/testimonials/widgets/:id/copied.json
Annota che l'incorporamento HTML incollato di un widget è stato copiato
testimonial_widgets_mark_copied
L'HTML incollato non si aggiorna da solo. Dopo questa chiamata, testimonial_widgets_embed indica quante volte il widget è cambiato da allora.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/copied.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/widgets.json
Crea un widget
testimonial_widgets_create
Una chiamata contiene l'intero widget: il layout e le sue opzioni, ciò che lo alimenta, ciò che mostra ogni scheda e il suo aspetto. Tutto ciò che viene omesso parte da un valore predefinito, e un'impostazione di stile vuota eredita il brand kit. Fai seguire testimonial_widgets_embed per ottenere il codice da incollare.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/widgets/:id.json
Sposta un widget nel cestino
testimonial_widgets_trash
I suoi incorporamenti non mostrano nulla e non occupano spazio finché non viene ripristinato. Viene eliminato definitivamente dopo 30 giorni. Tramite MCP lo strumento non cambia nulla e risponde con la pagina dell'app in cui una persona lo fa.
Permesso: content.write
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/widgets/:id/duplicate.json
Copia un widget con ogni impostazione
testimonial_widgets_duplicate
Crea una copia con un nuovo id e il nome che termina con "copy". La copia ha il proprio codice di incorporamento e non è mai stata vista attiva da nessuna parte. L'originale non viene modificato.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/widgets/:id/embed.json
Ottieni il codice di incorporamento di un widget e quanto pesa
testimonial_widgets_embed
Restituisce lo snippet di script (consigliato), l'HTML incollato, il codice del frame e l'indirizzo dei dati pubblici, con la dimensione misurata dello script del loader e di questo widget. L'HTML incollato e il frame sono null per la finestra a comparsa d'angolo.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/embed.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/widgets.json
Elenca i widget di un sito
testimonial_widgets_list
I widget nel cestino non vengono elencati. Ogni widget contiene le sue impostazioni, quante testimonianze mostra adesso, le sue visualizzazioni e i clic degli ultimi 30 giorni e la prima pagina in cui è stato visto attivo.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/widgets/:id/installs.json
Elenca le pagine in cui un widget è stato visto attivo
testimonial_widgets_installs
Fino a 50 pagine, le più recenti per prime. Si possono rilevare solo lo script e il frame.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/installs.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/widgets/:id/restore.json
Ripristina un widget dal cestino
testimonial_widgets_restore
Torna ovunque fosse stato incollato.
Permesso: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/restore.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/widgets/:id.json
Ottieni un widget con ogni impostazione, ciò che mostra e dove è attivo
testimonial_widgets_get
Tutto ciò che il builder archivia: il layout e le sue opzioni, ciò che alimenta il widget (una raccolta, una vista salvata, tag o un elenco scelto a mano), ciò che mostra ogni scheda, lo stile, la lingua e il markup delle recensioni, con dove è stato visto attivo e quante testimonianze mostra adesso. Un widget nel cestino risponde con 404.
Permesso: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/widgets/:id.json
Cambia un widget
testimonial_widgets_update
Cambiano solo gli input inviati. Una modifica salvata raggiunge ogni sito su cui si trova il widget senza toccare il loro codice, perché le sue copie in cache vengono cancellate.
Permesso: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Workspace
GET
/workspaces/:workspace_id/white_label.json
Ottieni il brand white label
white_label_get
Restituisce il branding white label del workspace. I campi sono workspace_id (ws_...), brand_name, brand_logo_url e brand_color (un colore esadecimale come #06755b), ciascuno null quando non impostato, hide_branding, available (true quando il piano include il white label, cioè Business e superiori) e active (true quando il branding è impostato e in vigore). Il branding sostituisce Privatus Analytics su dashboard condivise, incorporamenti, pagine di stato e report via email. Richiede workspace.manage.
Permesso: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/white_label.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/white_label.json
Imposta il brand white label per le dashboard condivise e i report via email (Business)
white_label_update
Imposta il branding white label del workspace. Solo piano Business, altrimenti fallisce con un errore di piano. Cambia solo ciò che invii e una stringa vuota cancella brand_name, brand_logo_url o brand_color. brand_logo_url deve essere un URL https di un'immagine e brand_color un colore esadecimale come #06755b. hide_branding true rimuove il link di Privatus Analytics da dashboard condivise, incorporamenti e pagine di stato e il logo dai report via email. La modifica si applica subito ai link di condivisione esistenti. Richiede workspace.manage. Restituisce il branding (vedi white_label_get).
Permesso: workspace.manage
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/white_label.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/security.json
Ottieni le impostazioni di sicurezza del workspace
workspace_security_get
Restituisce la policy di sicurezza del workspace. I campi sono workspace_id (ws_...), enforce_2fa (i membri devono usare l'autenticazione a due fattori), login_methods (quelli consentiti tra password, magic_link, passkey, google, github e sso), session_ttl_hours (disconnessione dopo questo numero di ore, null per nessun limite), app_ip_allowlist (IP o intervalli CIDR autorizzati a usare l'app e l'API, vuoto significa ovunque) e support_access_until (orario ISO 8601 fino al quale il supporto di Privatus Analytics può vedere il workspace, null quando non è concesso alcun accesso). Richiede workspace.manage.
Permesso: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/security.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/security.json
Aggiorna le impostazioni di sicurezza del workspace (2FA, metodi di accesso, durata della sessione, allowlist IP, accesso del supporto)
workspace_security_update
Cambia la policy di sicurezza del workspace, solo gli input che invii. enforce_2fa true richiede a ogni membro l'autenticazione a due fattori e richiede il piano Business. login_methods sostituisce l'elenco consentito con valori tra password, magic_link, passkey, google, github e sso, e rimuovere un metodo disconnette gli accessi ricordati dei membri, che devono quindi accedere di nuovo. session_ttl_hours disconnette i membri dopo quel numero di ore (0 rimuove il limite). app_ip_allowlist sostituisce l'elenco di IP o intervalli CIDR autorizzati a raggiungere l'app e l'API (piano Business, un elenco vuoto significa ovunque) e viene rifiutato se escluderebbe l'IP di chi chiama, così non puoi chiuderti fuori da solo. support_access true permette al supporto di Privatus Analytics di vedere il workspace per 7 giorni e false ritira quell'accesso. Richiede workspace.manage. Restituisce la policy (vedi workspace_security_get).
Permesso: workspace.manage
· Solo HTTP (non è uno strumento MCP)
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/security.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces.json
Crea un workspace (ne diventi il proprietario)
workspaces_create
Permesso: member
· Solo HTTP (non è uno strumento MCP)
curl -X POST https://privatusanalytics.com/workspaces.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:id.json
Elimina un workspace e tutti i suoi siti (solo il proprietario, annulla qualsiasi abbonamento)
workspaces_delete
Elimina un workspace insieme a tutti i suoi siti. È un'eliminazione logica: tutto scompare subito e viene eliminato definitivamente dopo 7 giorni, quindi consideralo irreversibile. Solo il proprietario può farlo e confirm deve essere il nome esatto del workspace (distingue maiuscole e minuscole). Un abbonamento a pagamento attivo viene prima annullato subito e, se l'annullamento fallisce, non viene eliminato nulla. I trasferimenti di siti in sospeso dal workspace vengono annullati. I membri perdono l'accesso. Usa workspaces_get per leggere il nome. Richiede workspace.manage e il ruolo owner. Restituisce il workspace.
Permesso: workspace.manage
· Solo HTTP (non è uno strumento MCP)
curl -X DELETE https://privatusanalytics.com/workspaces/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces.json
Elenca i tuoi workspace
workspaces_list
Elenca i workspace a cui chi chiama appartiene, ordinati per nome. Un token API o una connessione MCP vede solo l'unico workspace per cui è stato emesso. Ogni elemento ha id (ws_..., usato come workspace_id dalla maggior parte degli strumenti), name, timezone, currency, plan, plan_events, subscription_status e role (il ruolo di chi chiama). Chiama poi sites_list con un id di workspace per trovare gli id dei siti. Creare un workspace è possibile solo nell'app.
Permesso: member
curl https://privatusanalytics.com/workspaces.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:id.json
Ottieni un workspace
workspaces_get
Restituisce un workspace tramite il suo id pubblico (ws_..., da workspaces_list). I campi sono id, name, timezone (nome IANA), currency (ISO 4217), plan (free, pro, business o enterprise), plan_events (la quota mensile di eventi del piano), subscription_status (none, trialing, active, past_due, paused o canceled), role (il ruolo di chi chiama al suo interno) e created_at. Usa billing_get per i dettagli completi di fatturazione e billing_usage per l'uso di questo mese. Qualsiasi membro può leggerlo.
Permesso: member
curl https://privatusanalytics.com/workspaces/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:id.json
Aggiorna le impostazioni del workspace
workspaces_update
Cambia il nome, il fuso orario predefinito o la valuta predefinita di un workspace, solo gli input che invii. timezone è un nome IANA come Europe/Berlin e currency è un codice ISO 4217 di 3 lettere. Sono valori predefiniti per i nuovi siti, non cambiano i siti esistenti (usa sites_update per quelli). Richiede workspace.manage. Restituisce il workspace (vedi workspaces_get).
Permesso: workspace.manage
curl -X PATCH https://privatusanalytics.com/workspaces/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'