Documentazione
Sfoglia la documentazione

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.

Visualizza come Markdown

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

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

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

Conventions#

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

Common tasks#

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

See Stats endpoints and Examples.

In this section#

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

Tutte le operazioni

Autenticazione

Invia Authorization: Bearer pat_…. Crea i token in Impostazioni del workspace, Token API. Guida all'autenticazione.

JSON ovunque

Aggiungi .json a qualsiasi percorso. Le risposte sono { "data": … } e gli errori sono { "error": { "code", "message" } }. Errori.

MCP

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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

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

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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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)

Esempio
curl https://privatusanalytics.com/badge/:site_id.json
GET /share/:token/breakdown/:dimension.json Valori principali di una dimensione condivisa shares_breakdown

I valori principali di una dimensione dietro un link di condivisione, l'equivalente condiviso di stats_breakdown. Il percorso richiede token (l'ultima parte dell'URL di condivisione) e dimension, che deve appartenere a una sezione condivisa dal link, ad esempio sources condivide channel, referrer e referrer_url, pages condivide page, entry_page, exit_page e hostname, campaigns condivide le dimensioni utm_, locations condivide country e language, technology condivide device, browser, os e screen, conversions condivide goal ed events condivide event. Una dimensione fuori dalle sezioni del link viene rifiutata con un errore di validazione. limit va da 1 a 100 righe (predefinito 10). Le righe hanno gli stessi campi e le stesse unità di stats_breakdown per quella dimensione. Il periodo e i filtri bloccati del link prevalgono su period, from, to e filters, e i filtri di chi chiama vengono ignorati quando il link non li consente. Un link con password richiede l'intestazione X-Share-Password.

Permesso: public · Solo HTTP (non è uno strumento MCP)

Esempio
curl https://privatusanalytics.com/share/:token/breakdown/:dimension.json
GET /share/:token.json Panoramica della dashboard condivisa per un token di condivisione shares_overview

Legge la dashboard dietro un link di condivisione per persone che non hanno un account. Il token nel percorso è l'ultima parte di un URL di condivisione (/share/<token>) ed è l'unica credenziale, un link con password richiede anche l'intestazione X-Share-Password e un link sso richiede un membro connesso. Accetta anche un id di sito (pa_...) quando il sito ha attivato la dashboard pubblica. Restituisce gli stessi dati di stats_overview, limitati a ciò che il link condivide. Cioè period, metrics (visitors, visits, pageviews, views_per_visit, bounce_rate come percentuale, visit_duration in millisecondi, revenue in unità minori), la serie del grafico per interval, i dati di confronto quando compare è impostato e i panels dei soli valori principali delle sezioni condivise. Aggiunge site (id, name, domain, timezone), sections e locked_period. live_visitors compare solo quando il link condivide live. Un periodo bloccato e filtri bloccati sul link prevalgono su period, from, to e filters. Usa shares_breakdown per più righe di una dimensione. Per i tuoi siti usa stats_overview.

Permesso: public · Solo HTTP (non è uno strumento MCP)

Esempio
curl https://privatusanalytics.com/share/:token.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)

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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)

Esempio
curl https://privatusanalytics.com/openapi.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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

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

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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/restore.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" -d '{…}'
GET /sites/:site_id/testimonials/forms/:id/share.json Ottieni il link di un modulo, i link del codice QR e gli snippet di incorporamento testimonial_forms_share

Restituisce il link, lo snippet di incorporamento in linea e lo snippet di incorporamento a comparsa. Gli input della comparsa (trigger, label, position, accent) cambiano lo snippet a comparsa.

Permesso: analytics.read

Esempio
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/share.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"
GET /sites/:site_id/testimonials/forms/:id.json 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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
curl https://privatusanalytics.com/status.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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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

Esempio
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)

Esempio
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)

Esempio
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)

Esempio
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

Esempio
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

Esempio
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

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