import { CardGrid, LinkCard, TabItem, Tabs } from '@astrojs/starlight/components';
import Faq from '@components/Faq.astro';

L'**API pubblica** (`/public/v1`) è una superficie REST curata di 5 risorse — lead, contatti, conversazioni,
appuntamenti e ticket — autenticata con una chiave API, disponibile nei piani **Pro** ed **Enterprise**.

<CardGrid>
  <LinkCard title="Iniziare con l'API" href="/it/api/getting-started/" description="Crea la tua chiave e fai la tua prima chiamata in meno di 10 minuti." />
  <LinkCard title="Autenticazione" href="/it/api/authentication/" description="Header X-API-Key, scope per risorsa e per azione." />
</CardGrid>

## La tua prima richiesta

`GET /me` non richiede alcun permesso proprio — solo una chiave valida di un tenant con piano idoneo — quindi
è il modo più veloce per verificare che la tua chiave funzioni:

<Tabs>
  <TabItem label="curl">
    ```bash
    curl https://api.aymaragents.com/public/v1/me \
      -H "X-API-Key: aa_TUA_CHIAVE_COMPLETA"
    ```
  </TabItem>
  <TabItem label="Python">
    ```python
    import requests

    res = requests.get(
        "https://api.aymaragents.com/public/v1/me",
        headers={"X-API-Key": "aa_TUA_CHIAVE_COMPLETA"},
    )
    res.raise_for_status()
    print(res.json())
    ```
  </TabItem>
  <TabItem label="JavaScript">
    ```javascript
    const res = await fetch("https://api.aymaragents.com/public/v1/me", {
      headers: { "X-API-Key": "aa_TUA_CHIAVE_COMPLETA" },
    });
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    console.log(await res.json());
    ```
  </TabItem>
</Tabs>

## Guide

<CardGrid>
  <LinkCard title="Piani e limiti" href="/it/api/plans-and-limits/" description="Quale piano ti serve e quante richieste puoi fare." />
  <LinkCard title="Errori" href="/it/api/errors/" description="Formato di errore e codici che l'API può restituire." />
  <LinkCard title="Versionamento" href="/it/api/versioning/" description="Come evolve /public/v1 senza rompere la tua integrazione." />
  <LinkCard title="Casi d'uso dell'API" href="/it/api/use-cases/" description="Scenari reali di integrazione." />
</CardGrid>

## Riferimento generato

<LinkCard title="Endpoint" href="/api/reference/" description="Ogni operazione di /public/v1, generata dalla stessa definizione OpenAPI usata dal server MCP." />

## Strumenti correlati

<CardGrid>
  <LinkCard title="Server MCP" href="/it/mcp/" description="Collega il tuo assistente IA alla stessa API." />
  <LinkCard title="llms.txt" href="/llms.txt" description="Indice di tutto il portale in testo semplice." />
</CardGrid>

## Domande frequenti

<Faq items={[
  { question: "Che piano serve per usare l'API pubblica?", answer: 'Pro o Enterprise. Con il piano Starter, qualsiasi chiamata a <code>/public/v1/*</code> risponde <code>403 PLAN_NOT_ELIGIBLE</code>, anche se la chiave esiste e ha lo scope corretto. Vedi <a href="/it/api/plans-and-limits/">Piani e limiti</a>.' },
  { question: 'Cosa succede se la mia chiave non ha esattamente lo scope richiesto da un endpoint?', answer: 'Ricevi <code>403 PERMISSION_DENIED</code>, anche con il resto dei suoi permessi intatti. Ogni risorsa ha due scope indipendenti — lettura e gestione. Vedi <a href="/it/api/authentication/">Autenticazione</a>.' },
  { question: 'Come ruoto una chiave senza interrompere la mia integrazione?', answer: "Oggi non esiste un endpoint di rotazione atomica: crea una nuova chiave con gli stessi scope, aggiorna il segreto nella tua integrazione, poi revoca quella vecchia — c'è una breve finestra con entrambe attive." },
  { question: "Cosa restituisce l'API se chiedo una risorsa di un altro tenant?", answer: '<code>404</code>, esattamente come se la risorsa non esistesse — mai <code>403</code>, che confermerebbe che il dato esiste su un altro account.' },
  { question: 'Quante richieste posso fare al minuto?', answer: '180/minuto e 50.000/giorno su Pro; 600/minuto e 200.000/giorno su Enterprise. La quota viene conteggiata per chiave, non per IP. Vedi <a href="/it/api/plans-and-limits/">Piani e limiti</a>.' },
  { question: "Posso cancellare un lead, un contatto o qualsiasi altra risorsa tramite l'API?", answer: 'No — <code>/public/v1</code> non ha nessun endpoint <code>DELETE</code>. Vedi <a href="/it/api/use-cases/">Casi d\'uso dell\'API</a>.' },
  { question: 'Cosa succede se invio un messaggio WhatsApp fuori dalla finestra di 24 ore?', answer: 'Ricevi <code>409 WHATSAPP_SESSION_WINDOW_CLOSED</code> — usa invece <code>POST /conversations/start</code> con un modello approvato. Vedi <a href="/it/api/errors/">Errori</a>.' },
]} />

## Prossimo passo

<LinkCard title="Server MCP" href="/it/mcp/" description="Collega Claude, Cursor o un altro assistente IA al tuo account." />