> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Avvio di code scan tramite l'API Devin

> Guida per avviare programmaticamente i code scan di Devin, monitorarne lo stato e leggere i risultati con le API v3 per organizzazioni ed Enterprise

L'API Code Scans consente di avviare scansioni, monitorarne lo stato e leggere i risultati senza usare la web app. Ogni operazione è disponibile in due ambiti, secondo la stessa [distinzione tra organizzazione ed enterprise](/it/api-reference/v3/overview) adottata dal resto dell'API v3:

* **Organizzazione** (`/v3/organizations/{org_id}/code-scans/...`) opera su una singola organizzazione e richiede l'autorizzazione a livello di organizzazione `UseCodeScans` (scrittura) o `ViewCodeScans` (lettura).
* **Enterprise** (`/v3/enterprise/...`) copre tutte le organizzazioni dell'enterprise e richiede l'autorizzazione a livello enterprise `UseAccountCodeScans` (scrittura) o `ViewAccountCodeScans` (lettura). Gli endpoint per la creazione delle scansioni e la correzione richiedono comunque un `org_id` nel percorso, perché una scansione appartiene a una sola organizzazione.

Entrambi gli ambiti si autenticano con una API key di un [utente di servizio](/it/api-reference/v3/service-users/members-service-users) o un [token di accesso personale](/it/api-reference/personal-access-tokens) e condividono la stessa struttura di richieste e risposte.

<div id="endpoints">
  ## Endpoint
</div>

| Operazione                    | Organizzazione                                                                                                     | Enterprise                                                                                                             |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| Avvia Code Scan               | [`POST /v3/organizations/{org_id}/code-scans`](/it/api-reference/v3/code-scans/organizations-code-scans-start)     | [`POST /v3/enterprise/organizations/{org_id}/code-scans`](/it/api-reference/v3/code-scans/enterprise-code-scans-start) |
| Avvia scansione di ingestione | [`POST .../code-scans/ingestion`](/it/api-reference/v3/code-scans/organizations-code-scans-start-ingestion)        | [`POST .../code-scans/ingestion`](/it/api-reference/v3/code-scans/enterprise-code-scans-start-ingestion)               |
| Elenca Code Scan              | [`GET /v3/organizations/{org_id}/code-scans/scans`](/it/api-reference/v3/code-scans/organizations-code-scans-list) | [`GET /v3/enterprise/code-scans/scans`](/it/api-reference/v3/code-scans/enterprise-code-scans-list)                    |
| Elenca profili Code Scan      | [`GET .../code-scans/profiles`](/it/api-reference/v3/code-scans/organizations-code-scans-profiles)                 | [`GET /v3/enterprise/code-scans/profiles`](/it/api-reference/v3/code-scans/enterprise-code-scans-profiles)             |
| Ottieni profilo Code Scan     | [`GET .../code-scans/profiles/{profile_id}`](/it/api-reference/v3/code-scans/organizations-code-scans-profile)     | [`GET /v3/enterprise/code-scans/profiles/{profile_id}`](/it/api-reference/v3/code-scans/enterprise-code-scans-profile) |
| Elenca risultati Code Scan    | [`GET .../code-scans/findings`](/it/api-reference/v3/code-scans/organizations-code-scans-findings)                 | [`GET /v3/enterprise/code-scans/findings`](/it/api-reference/v3/code-scans/enterprise-code-scans-findings)             |
| Ottieni metriche Code Scan    | [`GET .../code-scans/metrics`](/it/api-reference/v3/code-scans/organizations-code-scans-metrics)                   | [`GET /v3/enterprise/code-scans/metrics`](/it/api-reference/v3/code-scans/enterprise-code-scans-metrics)               |
| Risolvi risultato Code Scan   | [`POST .../findings/{finding_id}/remediate`](/it/api-reference/v3/code-scans/organizations-code-scans-remediate)   | [`POST .../findings/{finding_id}/remediate`](/it/api-reference/v3/code-scans/enterprise-code-scans-remediate)          |

Le stesse operazioni sono disponibili anche nei percorsi `/v3beta1/...`, con strutture di richiesta e risposta identiche. La tabella copre il flusso di lavoro delle scansioni; la specifica OpenAPI v3 espone inoltre la pianificazione di Auto Scan (`POST .../code-scans/{scan_id}/auto-scan`) e la riassegnazione del profilo (`PUT .../code-scans/{scan_id}/profile`) per entrambi gli ambiti.

I passaggi seguenti utilizzano l'ambito dell'organizzazione; usa i percorsi e le autorizzazioni Enterprise se la tua credenziale è limitata all'ambito Enterprise.

<div id="typical-flow">
  ## Flusso tipico
</div>

<Steps>
  <Step title="Scegli un profilo (facoltativo)">
    Chiama [Elenca i profili di code scan](/it/api-reference/v3/code-scans/organizations-code-scans-profiles) e scegli un profilo in modalità `discover`. Ometti il profilo per eseguire una scansione di sicurezza predefinita.
  </Step>

  <Step title="Avvia la scansione">
    ```bash theme={null}
    curl -X POST "https://api.devin.ai/v3/organizations/$ORG_ID/code-scans" \
      -H "Authorization: Bearer $DEVIN_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"repo_name": "acme/payments"}'
    ```

    La risposta è `201` e contiene il record della scansione. Conserva `scan_id`. Un `409` indica che il backlog delle scansioni dell'organizzazione è pieno; riprova più tardi.
  </Step>

  <Step title="Verifica il completamento">
    Chiama [Elenca le code scan](/it/api-reference/v3/code-scans/organizations-code-scans-list) (filtrando per `repo_name`) finché lo `status` della scansione non diventa `completed` (oppure `failed` o `cancelled`). Considera questi tre stati come finali. `awaiting_user_input` si verifica solo per le scansioni interattive avviate dalla web app; le scansioni avviate tramite API non sono interattive e non entrano in questo stato.
  </Step>

  <Step title="Esamina i risultati">
    Chiama [Elenca i risultati della code scan](/it/api-reference/v3/code-scans/organizations-code-scans-findings) con `scan_id` per consultare i risultati pagina per pagina, filtrando facoltativamente per `severity` e `status`.
  </Step>

  <Step title="Correggi">
    Chiama [Correggi il risultato della code scan](/it/api-reference/v3/code-scans/organizations-code-scans-remediate) per far sì che Devin apra una pull request che risolva un risultato.
  </Step>
</Steps>

<div id="ingestion-scans">
  ## Scansioni di ingestione
</div>

Per fare in modo che Devin esegua il triage dei risultato prodotti da un altro scanner, crea nella web app un profilo in modalità `ingest`, carica il report dello scanner tramite l'[API degli allegati](/it/api-reference/v3/attachments/post-organizations-attachments) (un endpoint nell'ambito dell'organizzazione che richiede l'autorizzazione org `UseDevinSessions`, oltre alle autorizzazioni per la scansione del codice), quindi chiama [Avvia scansione di ingestione](/it/api-reference/v3/code-scans/organizations-code-scans-start-ingestion) (o l'[equivalente per Enterprise](/it/api-reference/v3/code-scans/enterprise-code-scans-start-ingestion)) con `profile_id` e `attachment_urls`.
