{"info":{"_postman_id":"cf7a471f-9a94-4284-a457-6028ab73659d","name":"Tuurbo - Control Panel API","description":"<html><head></head><body><h2 id=\"introduzione\">Introduzione</h2>\n<p>Il 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.</p>\n<p>Tuurbo.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.</p>\n<h2 id=\"autenticazione\">Autenticazione</h2>\n<p>Tutte le chiamate API richiedono l'autenticazione mediante un API key. L'API key deve essere inclusa in ogni richiesta nell'header <code>x-api-key</code>.</p>\n<p>Esempio:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>x-api-key: 68e4e9aa814233669faf5684bd2e93fb\n\n</code></pre><h2 id=\"endpoint-base\">Endpoint Base</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>https://api.tuurbo.ai/api/v1\n\n</code></pre><h2 id=\"rate-limiting\">Rate Limiting</h2>\n<p>Le API sono soggette a rate limiting per garantire prestazioni ottimali. I limiti sono i seguenti:</p>\n<ul>\n<li><p><strong>Rate limit generale</strong>: 50 richieste per intervallo (indicato negli header di risposta)</p>\n</li>\n<li><p><strong>Critical CSS</strong>: massimo 3 aggiornamenti al giorno</p>\n</li>\n</ul>\n<p>Gli header di risposta includeranno informazioni sul rate limiting:</p>\n<ul>\n<li><p><code>X-RateLimit-Limit</code>: numero massimo di richieste consentite</p>\n</li>\n<li><p><code>X-RateLimit-Remaining</code>: numero di richieste rimanenti nell'intervallo corrente</p>\n</li>\n</ul>\n<h2 id=\"endpoint-disponibili\">Endpoint Disponibili</h2>\n<h3 id=\"1-validazione-sito-web\">1. Validazione Sito Web</h3>\n<p>Questo endpoint restituisce informazioni sullo stato attuale del tuo sito web in Tuurbo.ai, inclusi i dettagli sul Critical CSS.</p>\n<p><strong>Richiesta:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /websites/control-panel/validate\n\n</code></pre><p><strong>Parametri:</strong><br>Nessun parametro richiesto.</p>\n<p><strong>Risposta di Successo (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\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</code></pre>\n<p><strong>Descrizione dei campi:</strong></p>\n<ul>\n<li><p><code>websiteId</code>: ID univoco del sito web nel sistema Tuurbo.ai</p>\n</li>\n<li><p><code>rootDomain</code>: Dominio principale del sito web</p>\n</li>\n<li><p><code>criticalLastUpdate</code>: Data e ora dell'ultimo aggiornamento dei Critical CSS</p>\n</li>\n<li><p><code>criticalAttempts</code>: Numero di aggiornamenti dei Critical CSS eseguiti oggi</p>\n</li>\n<li><p><code>maxCriticalAttempts</code>: Numero massimo di aggiornamenti dei Critical CSS consentiti al giorno</p>\n</li>\n<li><p><code>remainingCriticalAttempts</code>: Numero di aggiornamenti dei Critical CSS rimanenti per oggi</p>\n</li>\n</ul>\n<h3 id=\"2-svuotamento-cache\">2. Svuotamento Cache</h3>\n<p>Questo 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.</p>\n<p><strong>Richiesta:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /websites/control-panel/purge-cache\n\n</code></pre><p><strong>Parametri:</strong><br>Nessun parametro richiesto.</p>\n<p><strong>Risposta di Successo (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"success\": true,\n    \"message\": \"Cache purged successfully\"\n}\n\n</code></pre>\n<p><strong>Note:</strong></p>\n<ul>\n<li><p>La pulizia della cache potrebbe temporaneamente diminuire le prestazioni del tuo sito web, poiché Tuurbo.ai dovrà ricaricare i file dal server di origine.</p>\n</li>\n<li><p>Potrebbe verificarsi un aumento temporaneo del carico sul server di origine durante questo processo.</p>\n</li>\n</ul>\n<h3 id=\"3-reset-critical-css\">3. Reset Critical CSS</h3>\n<p>Questo 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.</p>\n<p><strong>Richiesta:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /websites/control-panel/reset-critical-css\n\n</code></pre><p><strong>Parametri:</strong><br>Nessun parametro richiesto.</p>\n<p><strong>Risposta di Successo (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"success\": true,\n    \"message\": \"Critical CSS reset successfully\",\n    \"attempts\": 1,\n    \"maxAttempts\": 3,\n    \"lastReset\": \"2025-04-17\"\n}\n\n</code></pre>\n<p><strong>Descrizione dei campi:</strong></p>\n<ul>\n<li><p><code>success</code>: Indica se l'operazione è andata a buon fine</p>\n</li>\n<li><p><code>message</code>: Messaggio descrittivo dell'esito dell'operazione</p>\n</li>\n<li><p><code>attempts</code>: Numero di aggiornamenti dei Critical CSS eseguiti oggi (incluso questo)</p>\n</li>\n<li><p><code>maxAttempts</code>: Numero massimo di aggiornamenti dei Critical CSS consentiti al giorno</p>\n</li>\n<li><p><code>lastReset</code>: Data dell'ultimo reset</p>\n</li>\n</ul>\n<p><strong>Note:</strong></p>\n<ul>\n<li><p>L'aggiornamento dei Critical CSS è limitato a 3 tentativi al giorno per sito web.</p>\n</li>\n<li><p>Il reset dei Critical CSS potrebbe temporaneamente diminuire le prestazioni del tuo sito web mentre Tuurbo.ai analizza e genera nuovi CSS ottimizzati.</p>\n</li>\n</ul>\n<h2 id=\"codici-di-errore\">Codici di Errore</h2>\n<p>Le API restituiscono codici di stato HTTP standard:</p>\n<ul>\n<li><p><code>200 OK</code>: La richiesta è stata elaborata con successo</p>\n</li>\n<li><p><code>401 Unauthorized</code>: API key mancante o non valida</p>\n</li>\n<li><p><code>403 Forbidden</code>: L'API key non ha i permessi necessari</p>\n</li>\n<li><p><code>429 Too Many Requests</code>: Superato il limite di richieste (rate limit)</p>\n</li>\n<li><p><code>500 Internal Server Error</code>: Errore interno del server</p>\n</li>\n</ul>\n<h2 id=\"esempi-di-utilizzo\">Esempi di Utilizzo</h2>\n<h3 id=\"esempio-in-curl\">Esempio in cURL</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\"># 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</code></pre>\n<h3 id=\"esempio-in-javascript\">Esempio in JavaScript</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">// 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 =&gt; response.json())\n.then(data =&gt; console.log(data))\n.catch(error =&gt; console.error('Error:', error));\n\n</code></pre>\n<h2 id=\"best-practices\">Best Practices</h2>\n<ol>\n<li><p><strong>Uso Responsabile</strong>: Utilizza la funzione di reset dei Critical CSS solo quando necessario, ad esempio dopo modifiche significative al design del sito.</p>\n</li>\n<li><p><strong>Monitoraggio</strong>: 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.</p>\n</li>\n<li><p><strong>Svuotamento Cache</strong>: Utilizza questa funzione con moderazione, solo quando necessario, poiché può aumentare temporaneamente il carico sul server di origine.</p>\n</li>\n<li><p><strong>Automazione</strong>: È possibile automatizzare queste chiamate API per integrarle nei tuoi flussi di lavoro di deployment o manutenzione del sito web.</p>\n</li>\n</ol>\n<h2 id=\"supporto\">Supporto</h2>\n<p>Per assistenza o richieste di supporto, contatta il team di Tuurbo.ai all'indirizzo <a href=\"https://support@tuurbo.ai\">support@tuurbo.ai</a> o visita <a href=\"https://customerportal.tuurbo.ai/\">https://customerportal.tuurbo.ai/</a></p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"35336289","collectionId":"cf7a471f-9a94-4284-a457-6028ab73659d","publishedId":"2sB2iwGui5","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"020617","highlight":"3775de"},"publishDate":"2025-04-22T10:54:30.000Z"},"item":[{"name":"Control Panel - Validate","id":"ffe8e36f-8fb0-4a7a-999d-1baf81220d6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"68e4e9aa814233669faf5684bd2e93fb"}]},"isInherited":false},"method":"GET","header":[],"url":"https://api.tuurbo.ai/api/v1/websites/control-panel/validate","urlObject":{"path":["websites","control-panel","validate"],"host":["https://api.tuurbo.ai/api/v1"],"query":[],"variable":[]}},"response":[{"id":"41ddea91-c214-45ac-b640-9059bca88c64","name":"200","originalRequest":{"method":"GET","header":[],"url":"https://api.tuurbo.ai/api/v1/websites/control-panel/validate"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-RateLimit-Limit","value":"50"},{"key":"X-RateLimit-Remaining","value":"49"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"171"},{"key":"ETag","value":"W/\"ab-BX/QRpdpZIMIudy/quFwQ2uT2lo\""},{"key":"Vary","value":"Accept-Encoding"},{"key":"Date","value":"Thu, 17 Apr 2025 10:09:35 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\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}"}],"_postman_id":"ffe8e36f-8fb0-4a7a-999d-1baf81220d6d"},{"name":"Control Panel - Purge Cache","id":"a670f4fc-3514-46dd-b0e4-7b8e810f9cc8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"68e4e9aa814233669faf5684bd2e93fb"}]},"isInherited":false},"method":"GET","header":[],"url":"https://api.tuurbo.ai/api/v1/websites/control-panel/purge-cache","urlObject":{"path":["websites","control-panel","purge-cache"],"host":["https://api.tuurbo.ai/api/v1"],"query":[],"variable":[]}},"response":[{"id":"1486817b-685c-4d8c-882c-5325cfcd915b","name":"200","originalRequest":{"method":"GET","header":[],"url":"https://api.tuurbo.ai/api/v1/websites/control-panel/purge-cache"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-RateLimit-Limit","value":"50"},{"key":"X-RateLimit-Remaining","value":"47"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"54"},{"key":"ETag","value":"W/\"36-XvFRpTOtjX26iGyLHafajrrHzLE\""},{"key":"Vary","value":"Accept-Encoding"},{"key":"Date","value":"Thu, 17 Apr 2025 10:10:05 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Cache purged successfully\"\n}"}],"_postman_id":"a670f4fc-3514-46dd-b0e4-7b8e810f9cc8"},{"name":"Control Panel - Reset Critical CSS","id":"fdd17dbb-94b9-4c90-9e46-f833b6519d9f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"68e4e9aa814233669faf5684bd2e93fb"}]},"isInherited":false},"method":"GET","header":[],"url":"https://api.tuurbo.ai/api/v1/websites/control-panel/reset-critical-css","urlObject":{"path":["websites","control-panel","reset-critical-css"],"host":["https://api.tuurbo.ai/api/v1"],"query":[],"variable":[]}},"response":[{"id":"713f64af-cf26-4514-b51c-b9491d5c07d2","name":"200","originalRequest":{"method":"GET","header":[],"url":"https://api.tuurbo.ai/api/v1/websites/control-panel/reset-critical-css"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-RateLimit-Limit","value":"50"},{"key":"X-RateLimit-Remaining","value":"48"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"114"},{"key":"ETag","value":"W/\"72-st0HfyDeJDntNSj0xSxvFKDTgJg\""},{"key":"Vary","value":"Accept-Encoding"},{"key":"Date","value":"Thu, 17 Apr 2025 10:09:49 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Critical CSS reset successfully\",\n    \"attempts\": 1,\n    \"maxAttempts\": 3,\n    \"lastReset\": \"2025-04-17\"\n}"}],"_postman_id":"fdd17dbb-94b9-4c90-9e46-f833b6519d9f"}],"event":[{"listen":"prerequest","script":{"id":"91a2a81f-0e2e-4989-a425-7dd81807ba4b","type":"text/javascript","packages":{},"exec":[""]}},{"listen":"test","script":{"id":"21ab13f4-8a7f-4e7b-9444-2a233d55712a","type":"text/javascript","packages":{},"exec":[""]}}],"variable":[{"key":"APIURL","value":"https://api.tuurbo.ai/api/v1","type":"string"},{"key":"APIKEY","value":"68e4e9aa814233669faf5684bd2e93fb","type":"string"}]}