{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"cf7a471f-9a94-4284-a457-6028ab73659d","name":"Tuurbo - Control Panel API","description":"## Introduzione\n\nIl Control Panel di Tuurbo.ai offre una serie di API RESTful che permettono agli utenti di gestire l'ottimizzazione dei propri siti web. Queste API consentono di validare lo stato del sito, svuotare la cache e aggiornare i Critical CSS.\n\nTuurbo.ai è una soluzione plug-and-play che ottimizza siti web in meno di 48 ore utilizzando automazioni e intelligenza artificiale. Attraverso queste API, è possibile integrare le funzionalità di ottimizzazione di Tuurbo.ai direttamente nei tuoi sistemi e flussi di lavoro.\n\n## Autenticazione\n\nTutte le chiamate API richiedono l'autenticazione mediante un API key. L'API key deve essere inclusa in ogni richiesta nell'header `x-api-key`.\n\nEsempio:\n\n```\nx-api-key: 68e4e9aa814233669faf5684bd2e93fb\n\n ```\n\n## Endpoint Base\n\n```\nhttps://api.tuurbo.ai/api/v1\n\n ```\n\n## Rate Limiting\n\nLe API sono soggette a rate limiting per garantire prestazioni ottimali. I limiti sono i seguenti:\n\n- **Rate limit generale**: 50 richieste per intervallo (indicato negli header di risposta)\n    \n- **Critical CSS**: massimo 3 aggiornamenti al giorno\n    \n\nGli header di risposta includeranno informazioni sul rate limiting:\n\n- `X-RateLimit-Limit`: numero massimo di richieste consentite\n    \n- `X-RateLimit-Remaining`: numero di richieste rimanenti nell'intervallo corrente\n    \n\n## Endpoint Disponibili\n\n### 1\\. Validazione Sito Web\n\nQuesto endpoint restituisce informazioni sullo stato attuale del tuo sito web in Tuurbo.ai, inclusi i dettagli sul Critical CSS.\n\n**Richiesta:**\n\n```\nGET /websites/control-panel/validate\n\n ```\n\n**Parametri:**  \nNessun parametro richiesto.\n\n**Risposta di Successo (200 OK):**\n\n``` json\n{\n    \"websiteId\": 139,\n    \"rootDomain\": \"tuurbo.org\",\n    \"criticalLastUpdate\": \"2024-12-03T15:48:14.058+01:00\",\n    \"criticalAttempts\": 0,\n    \"maxCriticalAttempts\": 3,\n    \"remainingCriticalAttempts\": 3\n}\n\n ```\n\n**Descrizione dei campi:**\n\n- `websiteId`: ID univoco del sito web nel sistema Tuurbo.ai\n    \n- `rootDomain`: Dominio principale del sito web\n    \n- `criticalLastUpdate`: Data e ora dell'ultimo aggiornamento dei Critical CSS\n    \n- `criticalAttempts`: Numero di aggiornamenti dei Critical CSS eseguiti oggi\n    \n- `maxCriticalAttempts`: Numero massimo di aggiornamenti dei Critical CSS consentiti al giorno\n    \n- `remainingCriticalAttempts`: Numero di aggiornamenti dei Critical CSS rimanenti per oggi\n    \n\n### 2\\. Svuotamento Cache\n\nQuesto endpoint consente di svuotare la cache di Tuurbo.ai per il tuo sito web. La pulizia della cache forza Tuurbo.ai a recuperare una nuova versione dei file dal tuo server web.\n\n**Richiesta:**\n\n```\nGET /websites/control-panel/purge-cache\n\n ```\n\n**Parametri:**  \nNessun parametro richiesto.\n\n**Risposta di Successo (200 OK):**\n\n``` json\n{\n    \"success\": true,\n    \"message\": \"Cache purged successfully\"\n}\n\n ```\n\n**Note:**\n\n- La pulizia della cache potrebbe temporaneamente diminuire le prestazioni del tuo sito web, poiché Tuurbo.ai dovrà ricaricare i file dal server di origine.\n    \n- Potrebbe verificarsi un aumento temporaneo del carico sul server di origine durante questo processo.\n    \n\n### 3\\. Reset Critical CSS\n\nQuesto endpoint consente di ripristinare e rigenerare i Critical CSS per il tuo sito web. I Critical CSS sono fogli di stile ottimizzati che migliorano il tempo di caricamento della pagina.\n\n**Richiesta:**\n\n```\nGET /websites/control-panel/reset-critical-css\n\n ```\n\n**Parametri:**  \nNessun parametro richiesto.\n\n**Risposta di Successo (200 OK):**\n\n``` json\n{\n    \"success\": true,\n    \"message\": \"Critical CSS reset successfully\",\n    \"attempts\": 1,\n    \"maxAttempts\": 3,\n    \"lastReset\": \"2025-04-17\"\n}\n\n ```\n\n**Descrizione dei campi:**\n\n- `success`: Indica se l'operazione è andata a buon fine\n    \n- `message`: Messaggio descrittivo dell'esito dell'operazione\n    \n- `attempts`: Numero di aggiornamenti dei Critical CSS eseguiti oggi (incluso questo)\n    \n- `maxAttempts`: Numero massimo di aggiornamenti dei Critical CSS consentiti al giorno\n    \n- `lastReset`: Data dell'ultimo reset\n    \n\n**Note:**\n\n- L'aggiornamento dei Critical CSS è limitato a 3 tentativi al giorno per sito web.\n    \n- Il reset dei Critical CSS potrebbe temporaneamente diminuire le prestazioni del tuo sito web mentre Tuurbo.ai analizza e genera nuovi CSS ottimizzati.\n    \n\n## Codici di Errore\n\nLe API restituiscono codici di stato HTTP standard:\n\n- `200 OK`: La richiesta è stata elaborata con successo\n    \n- `401 Unauthorized`: API key mancante o non valida\n    \n- `403 Forbidden`: L'API key non ha i permessi necessari\n    \n- `429 Too Many Requests`: Superato il limite di richieste (rate limit)\n    \n- `500 Internal Server Error`: Errore interno del server\n    \n\n## Esempi di Utilizzo\n\n### Esempio in cURL\n\n``` bash\n# Validazione sito\ncurl -X GET \"https://api.tuurbo.ai/api/v1/websites/control-panel/validate\" \\\n     -H \"x-api-key: YOUR_API_KEY\"\n# Svuotamento cache\ncurl -X GET \"https://api.tuurbo.ai/api/v1/websites/control-panel/purge-cache\" \\\n     -H \"x-api-key: YOUR_API_KEY\"\n# Reset Critical CSS\ncurl -X GET \"https://api.tuurbo.ai/api/v1/websites/control-panel/reset-critical-css\" \\\n     -H \"x-api-key: YOUR_API_KEY\"\n\n ```\n\n### Esempio in JavaScript\n\n``` javascript\n// Esempio di validazione sito\nfetch('https://api.tuurbo.ai/api/v1/websites/control-panel/validate', {\n  method: 'GET',\n  headers: {\n    'x-api-key': 'YOUR_API_KEY'\n  }\n})\n.then(response => response.json())\n.then(data => console.log(data))\n.catch(error => console.error('Error:', error));\n\n ```\n\n## Best Practices\n\n1. **Uso Responsabile**: Utilizza la funzione di reset dei Critical CSS solo quando necessario, ad esempio dopo modifiche significative al design del sito.\n    \n2. **Monitoraggio**: Controlla sempre il numero di tentativi rimanenti prima di effettuare un reset dei Critical CSS, per evitare di raggiungere il limite giornaliero in situazioni critiche.\n    \n3. **Svuotamento Cache**: Utilizza questa funzione con moderazione, solo quando necessario, poiché può aumentare temporaneamente il carico sul server di origine.\n    \n4. **Automazione**: È possibile automatizzare queste chiamate API per integrarle nei tuoi flussi di lavoro di deployment o manutenzione del sito web.\n    \n\n## Supporto\n\nPer assistenza o richieste di supporto, contatta il team di Tuurbo.ai all'indirizzo [support@tuurbo.ai](https://support@tuurbo.ai) o visita [https://customerportal.tuurbo.ai/](https://customerportal.tuurbo.ai/)","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"35336289","team":6255771,"collectionId":"cf7a471f-9a94-4284-a457-6028ab73659d","publishedId":"2sB2iwGui5","public":true,"publicUrl":"https://api-doc-cpanel.tuurbo.ai","privateUrl":"https://go.postman.co/documentation/35336289-cf7a471f-9a94-4284-a457-6028ab73659d","customColor":{"top-bar":"FFFFFF","right-sidebar":"020617","highlight":"3775de"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/90324bfb-1f33-45b3-916f-ad5218176c3e/bG9nby1kYXJrLmpwZw==","colors":{"top-bar":"020617","right-sidebar":"303030","highlight":"3775de"}},{"name":"light","logo":"https://content.pstmn.io/ff9b1e4d-cfcd-4dbd-a7fa-9e91c8e1e438/bG9nby1saWdodC5qcGc=","colors":{"top-bar":"FFFFFF","right-sidebar":"020617","highlight":"3775de"}}]}},"version":"8.10.1","publishDate":"2025-04-22T10:54:30.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/ff9b1e4d-cfcd-4dbd-a7fa-9e91c8e1e438/bG9nby1saWdodC5qcGc=","logoDark":"https://content.pstmn.io/90324bfb-1f33-45b3-916f-ad5218176c3e/bG9nby1kYXJrLmpwZw=="}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/912a45bb6aad2c2a7b9f6d0e195ca8d7fc8d67c3b604a3d8afd9c85cb493fc94","favicon":"https://tuurbo.ai/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://api-doc-cpanel.tuurbo.ai/view/metadata/2sB2iwGui5"}