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

# API Rischio Email: Consegnabilità e segnali di violazione

> Valuta il rischio di un'email senza inviare OTP con Didit: consegnabilità, domini usa e getta, violazioni e frode in una chiamata.

Usa `POST /v3/email/risk/` quando ti serve l'intelligence sull'email senza chiedere all'utente di inserire un codice monouso.

Non invia un'email. Crea una sessione API, arricchisce l'indirizzo, applica le regole di rischio email e restituisce, in un'unica risposta sincrona, lo stesso blocco email normalizzato usato dalla Verifica email.

Quando la richiesta viene salvata, Didit può anche usare l'email valutata come evidenza aggregata in **Reti**. I grafi di rete possono mostrare intelligence sull'email ad alto rischio, contesto sulle violazioni e copertura dei profili social su segnali email condivisi, ma non rivelano l'indirizzo email grezzo ad altre organizzazioni.

## Interpreta la risposta

* `status` è la decisione finale per questa sessione API. Di norma è `Approved`; la valutazione del rischio può produrre `In Review` o `Declined`.
* `email.is_breached`, `email.is_disposable` e `email.is_undeliverable` sono segnali stabili di tipo sì/no da usare nella logica applicativa.
* `email.breaches` elenca le violazioni più recenti note che contengono l'indirizzo, quando la copertura è disponibile, con la data della violazione e le classi di dati esposte.
* `email.email_intelligence.score` usa una scala di rischio da 0 a 100, dove un numero più alto indica un rischio più elevato. `breach_risk_level` (`Low`, `Medium`, `High`) e `no_of_breaches` sono viste derivate.
* `email.email_intelligence.reason_codes` spiega quali segnali normalizzati hanno contribuito al risultato. L'insieme dei valori può ampliarsi nel tempo, quindi non rifiutare i codici sconosciuti.
* `email.email_intelligence` e `email.enrichment` sono alias di compatibilità con lo stesso oggetto normalizzato. Le nuove integrazioni possono leggere `email.enrichment`.
* `email.matches` elenca altre sessioni della tua applicazione in cui lo stesso indirizzo è stato usato da un utente diverso. Usalo per rilevare account duplicati.
* `request_id` è l'id della sessione API. Salvalo insieme a `vendor_data` se ti serve correlare il risultato con webhook successivi o con l'attività in console.

> [!WARNING]
>
> `email.email_intelligence` e `email.enrichment` sono campi soggetti a disponibilità. Una ricerca completata può ometterli entrambi quando per quell'indirizzo, dominio o piano non viene restituito alcun dato di intelligence utilizzabile. Costruisci prima le regole su `is_breached`, `is_disposable` e `is_undeliverable`, e tratta i dati di intelligence mancanti come "sconosciuto", non come "sicuro".

## Componente aggiuntivo per l'impronta social

Imposta `enable_social` su `true` per aggiungere un blocco `email_social` alla risposta, sotto `email`: le piattaforme online su cui questo indirizzo email è registrato, raggruppate per categoria, con i conteggi di sintesi e gli eventuali dettagli del profilo restituiti dai nostri partner di dati.

* `email.email_social.profiles_registered` e `email.email_social.profiles_checked` sono i numeri principali: le piattaforme in cui l'indirizzo email risulta registrato, rispetto alle piattaforme valutate.
* `email.email_social.registered_platforms` e `email.email_social.not_registered_platforms` elencano ogni piattaforma con la sua `category` e il suo `scope` (`global`, oppure `local` per le piattaforme specifiche di una regione).
* `email.email_social.categories` fornisce il numero di registrazioni e il rapporto per categoria, mentre `email.email_social.profiles` riporta i dettagli del profilo per ogni piattaforma, quando la piattaforma li espone (nome, URL della foto, testo descrittivo, stato della privacy, indicazione di account aziendale).
* Gli indici di sintesi (`digital_footprint_diversity`, `digital_sophistication_index`, `engagement_depth_index`, `subscription_affordability_index`) sono indicatori compositi su una scala da 0 a 10. Ogni conteggio può essere `null` quando il controllo non ha restituito dati per quel conteggio.

`profiles_registered: 0` è una risposta reale, non un errore: le piattaforme sono state controllate e l'indirizzo email non è stato trovato su nessuna di esse, un segnale comune di identità sintetica. Questo endpoint non agisce autonomamente su questo dato: usa `email_no_social_presence_action` in un workflow per trasformarlo in un verdetto di revisione o di rifiuto.

Il blocco è assente quando `enable_social` non è impostato, e anche quando il controllo social non è stato completato, nel qual caso non viene addebitato.

## Comportamento della sandbox

Le chiavi sandbox convalidano la richiesta e restituiscono dati di approvazione deterministici. Non inviano un'email, non consumano crediti, non creano una sessione e non contribuiscono a Reti. Con `enable_social` impostato, restituiscono anche un blocco `email_social` deterministico.

## Fatturazione

Le chiamate all'Email Risk API costano \$0.04 al prezzo di listino, meno di quanto costerebbe una Verifica email completa perché non viene inviata alcuna email. Una richiesta in produzione è fatturabile non appena la ricerca inizia, anche quando alcuni campi soggetti a disponibilità non sono disponibili.

Il componente aggiuntivo per l'impronta social viene fatturato separatamente: un'unità `email_social` per richiesta, oltre al prezzo dell'Email Risk API, ogni volta che il controllo viene completato. Il controllo dei crediti eseguito prima della ricerca copre entrambi.


## OpenAPI

````yaml it/openapi-25.json POST /v3/email/risk/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API di verifica dell'identità. Autenticati con l'intestazione x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/email/risk/:
    post:
      tags:
        - Standalone APIs
      summary: Calcola il punteggio di rischio di un indirizzo email
      description: >-
        Restituisce segnali di recapitabilità, relativi agli indirizzi usa e
        getta, alle violazioni di dati, alle corrispondenze tra sessioni e
        informazioni normalizzate sul rischio senza inviare un OTP. L'endpoint
        crea una sessione API e restituisce il suo id come `request_id`.


        **Decisione.** Il campo di primo livello `status` riflette
        `email.status`. Di norma è `Approved`; la valutazione del rischio può
        produrre `In Review` o `Declined`.


        **Alias di compatibilità.** Le risposte in produzione espongono
        l'oggetto informativo normalizzato sia come `email.email_intelligence`
        sia come `email.enrichment`. I valori sono identici. Le nuove
        integrazioni possono leggere `email.enrichment`. Entrambe le chiavi sono
        assenti se non è stato restituito alcun dato utilizzabile.


        **Fatturazione.** Le chiamate in produzione utilizzano i prezzi dell'API
        Email Risk. La richiesta è fatturabile a partire dall'avvio della
        ricerca, anche qualora alcuni campi elaborati con approccio best effort
        non siano disponibili.


        **Sandbox.** Le chiavi sandbox convalidano la richiesta e restituiscono
        dati approvati deterministici senza inviare un'email, consumare crediti,
        creare una sessione o contribuire a Networks.


        **Autenticazione.** Invia la chiave API della tua applicazione
        nell'intestazione `x-api-key`. Credenziali mancanti o non valide
        restituiscono `403`: questa API non restituisce mai `401`.


        **Limite di frequenza.** Budget di scrittura condiviso di 300 richieste
        al minuto per chiave API su tutti gli endpoint POST/PATCH/DELETE (la
        creazione di transazioni e l'ingestione di eventi hanno un budget
        separato di 600).


        **Impronta social.** Imposta `enable_social` su `true` per aggiungere un
        blocco `email_social`: le piattaforme online su cui questo indirizzo è
        registrato, con conteggi per categoria e gli eventuali dettagli del
        profilo disponibili. `profiles_registered: 0` indica che le piattaforme
        sono state verificate e l'indirizzo non è stato trovato su nessuna di
        esse: una risposta valida e fatturabile. Il blocco è assente quando il
        componente aggiuntivo non è stato richiesto o non è stato possibile
        completare la verifica, e in tal caso non viene fatturato. La
        fatturazione aggiunge un'unità `email_social` per richiesta oltre al
        prezzo proprio di questo endpoint.
      operationId: post_v3email_risk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailRiskRequest'
            examples:
              Minimal:
                summary: Calcola il punteggio di un indirizzo con i valori predefiniti
                value:
                  email: alice@example.com
              Full context:
                summary: >-
                  Calcola il punteggio con segnali, indicazione del paese e ID
                  di correlazione
                value:
                  email: alice@example.com
                  country_code: US
                  signals:
                    ip: 192.0.2.1
                    device_id: 8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2
                    device_platform: web
                    os_version: '14.4'
                    app_version: 1.2.34
                    user_agent: >-
                      Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
                      AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4
                      Safari/605.1.15
                  vendor_data: lead-123
                  metadata:
                    source: signup_prescreen
      responses:
        '200':
          description: >-
            La valutazione del rischio è completata. Ispeziona `status` per la
            decisione; il codice HTTP è sempre `200` per le ricerche completate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailRiskResponse'
              examples:
                Clean address:
                  summary: Indirizzo recapitabile senza esposizione a violazioni
                  value:
                    request_id: 82397be9-5921-4970-a979-2d5b43e08b33
                    status: Approved
                    email:
                      status: Approved
                      email: alice@example.com
                      is_breached: false
                      breaches: []
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      email_intelligence:
                        score: 4
                        deliverable: high
                        breach_risk_level: Low
                        breach_risk_index: 4
                        is_recent_breach: false
                        is_frequent_breached: false
                        is_disposable: false
                        is_free_domain: false
                        is_breached: false
                        no_of_breaches: 0
                        reason_codes: []
                      enrichment:
                        score: 4
                        deliverable: high
                        breach_risk_level: Low
                        breach_risk_index: 4
                        is_recent_breach: false
                        is_frequent_breached: false
                        is_disposable: false
                        is_free_domain: false
                        is_breached: false
                        no_of_breaches: 0
                        reason_codes: []
                    vendor_data: lead-123
                    metadata:
                      source: signup_prescreen
                    created_at: '2026-09-01T10:30:00.123456+00:00'
                Breached address:
                  summary: Indirizzo trovato in violazioni note
                  value:
                    request_id: d1e5c2a8-6f30-4c1a-8b2d-3e4f5a6b7c8d
                    status: In Review
                    email:
                      status: In Review
                      email: bob@example.org
                      is_breached: true
                      breaches:
                        - name: ExampleBreach2023
                          domain: example.org
                          breach_date: '2023-06-01'
                          breach_emails_count: 1200000
                          description: A data breach affecting example.org accounts.
                          logo_path: https://logos.example.org/example.png
                          data_classes:
                            - email_addresses
                            - passwords
                          is_verified: true
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      email_intelligence:
                        score: 58
                        deliverable: high
                        breach_risk_level: High
                        breach_risk_index: 72
                        is_recent_breach: true
                        is_frequent_breached: true
                        is_disposable: false
                        is_free_domain: true
                        is_breached: true
                        no_of_breaches: 4
                        reason_codes:
                          - code: IR-F784B630
                            direction: risk
                            message: Email's digital footprint diversity is Very Low
                            impact_level: low
                      enrichment:
                        score: 58
                        deliverable: high
                        breach_risk_level: High
                        breach_risk_index: 72
                        is_recent_breach: true
                        is_frequent_breached: true
                        is_disposable: false
                        is_free_domain: true
                        is_breached: true
                        no_of_breaches: 4
                        reason_codes:
                          - code: IR-F784B630
                            direction: risk
                            message: Email's digital footprint diversity is Very Low
                            impact_level: low
                    vendor_data: lead-125
                    metadata: null
                    created_at: '2026-09-01T10:30:00.123456+00:00'
        '400':
          $ref: '#/components/responses/EmailRiskValidationError'
        '403':
          $ref: '#/components/responses/RiskPermissionDenied'
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/email/risk/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "email": "alice@example.com",
                "country_code": "US",
                "vendor_data": "lead-123",
                "metadata": {"source": "signup_prescreen"}
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.email.assess_risk(
                email="alice@example.com",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.email.assessRisk({
              email: "alice@example.com",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Email.AssessRisk(ctx, didit.EmailRiskRequest{\n\tEmail: \"alice@example.com\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;
            import me.didit.types.EmailRiskRequest;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.email().assessRisk(EmailRiskRequest.builder()
                    .email("alice@example.com")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->email->assessRisk([
                'email' => 'alice@example.com',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.email.assess_risk(email: "alice@example.com")
            puts result.to_h
        - lang: csharp
          label: .NET
          source: |-
            using System;
            using System.Text.Json;
            using Didit;

            // Reads DIDIT_API_KEY.
            using var client = new DiditClient();

            var result = await client.Email.AssessRiskAsync(new EmailRiskRequest
            {
                Email = "alice@example.com",
            });
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    EmailRiskRequest:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
          description: Indirizzo email da valutare.
          example: alice@example.com
        country_code:
          type: string
          maxLength: 3
          description: >-
            Suggerimento facoltativo sul paese ISO 3166-1 alpha-2 o alpha-3 per
            la copertura dell'intelligence.
          example: US
        signals:
          $ref: '#/components/schemas/RiskSignals'
        vendor_data:
          type: string
          description: >-
            Il tuo riferimento stabile per questa richiesta. Memorizzato nella
            sessione API e restituito nella risposta.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            I tuoi metadati JSON non sensibili. Memorizzati nella sessione API e
            restituiti nella risposta.
        enable_social:
          type: boolean
          default: false
          description: >-
            Se true, cerca anche l'impronta social dell'indirizzo: le
            piattaforme email, social, professionali, di e-commerce e di
            intrattenimento su cui è registrato. Fatturato come un'unità
            `email_social` per richiesta in aggiunta al prezzo di questo
            endpoint.
          example: true
    EmailRiskResponse:
      type: object
      required:
        - request_id
        - status
        - created_at
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            ID della sessione API creata per questa richiesta. Memorizzalo con
            `vendor_data` se hai bisogno di correlare il risultato con i webhook
            successivi o con l'attività nella console.
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Decisione finale per questa sessione API. Di norma `Approved`; la
            valutazione del rischio può produrre `In Review` o `Declined`.
        vendor_data:
          type: string
          nullable: true
          description: Eco del `vendor_data` inviato, `null` se non ne hai inviato alcuno.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: Eco del `metadata` inviato, `null` se non ne hai inviato alcuno.
        created_at:
          type: string
          format: date-time
          description: Timestamp di questa risposta.
        email:
          type: object
          description: >-
            Report normalizzato di verifica email, lo stesso blocco utilizzato
            dalle risposte di Verifica email.
          required:
            - status
            - email
            - is_breached
            - breaches
            - is_disposable
            - is_undeliverable
          properties:
            status:
              type: string
              enum:
                - Approved
                - In Review
                - Declined
              description: >-
                Decisione per questo indirizzo email. Rispecchia lo `status` di
                primo livello.
            email:
              type: string
              description: L'indirizzo valutato.
              example: alice@example.com
            is_breached:
              type: boolean
              description: >-
                Indica se l'indirizzo compare in una violazione nota delle
                credenziali.
            breaches:
              type: array
              description: >-
                Fino a 5 delle violazioni note più recenti contenenti questo
                indirizzo. Array vuoto quando `is_breached` è `false`.
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Identificatore della violazione.
                  domain:
                    type: string
                    description: Dominio del servizio violato.
                  breach_date:
                    type: string
                    format: date
                    description: Data in cui si è verificata la violazione.
                  breach_emails_count:
                    type: integer
                    description: >-
                      Numero totale di account esposti nella violazione dei
                      dati.
                  description:
                    type: string
                    description: >-
                      Descrizione di facile lettura della violazione (può
                      contenere markup HTML).
                  logo_path:
                    type: string
                    description: URL del logo del servizio violato.
                  data_classes:
                    type: array
                    items:
                      type: string
                    description: >-
                      Categorie di dati esposti, in snake_case (ad es.,
                      `email_addresses`, `passwords`).
                  is_verified:
                    type: boolean
                    description: Indica se la violazione è stata verificata come legittima.
            is_disposable:
              type: boolean
              description: Indica se il dominio appartiene a un provider usa e getta.
            is_undeliverable:
              type: boolean
              description: Indica se l'indirizzo è risultato non recapitabile.
            verification_attempts:
              type: integer
              description: >-
                Invii di OTP per questo indirizzo. `0` per le ricerche del
                rischio.
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Data e ora dell'ultima verifica dell'indirizzo tramite OTP.
                `null` per le ricerche di rischio.
            warnings:
              type: array
              description: >-
                Avvisi di rischio registrati per questa richiesta. Array vuoto
                se non ne è presente alcuno.
              items:
                $ref: '#/components/schemas/RiskWarning'
            lifecycle:
              type: array
              description: >-
                Traccia di audit cronologica della richiesta. Array vuoto per le
                consultazioni del rischio senza invii.
              items:
                $ref: '#/components/schemas/RiskLifecycleEvent'
            matches:
              type: array
              description: >-
                Altre sessioni della tua applicazione in cui lo stesso indirizzo
                email è stato utilizzato da un utente diverso (`vendor_data`
                differente). Fino a 5 voci. Array vuoto quando non ci sono
                corrispondenze.
              items:
                $ref: '#/components/schemas/EmailMatchItem'
            email_intelligence:
              $ref: '#/components/schemas/EmailIntelligence'
            enrichment:
              $ref: '#/components/schemas/EmailIntelligence'
            email_social:
              $ref: '#/components/schemas/EmailSocialFootprint'
    RiskSignals:
      type: object
      description: >-
        Contesto facoltativo di dispositivo e rete rilevato dalla tua
        applicazione. Tutti i campi sono facoltativi. Fornirli alimenta il
        rilevamento delle corrispondenze tra sessioni in Reti.
      properties:
        ip:
          type: string
          format: ip
          description: Indirizzo IPv4 o IPv6 rilevato per l'utente finale.
          example: 192.0.2.1
        device_id:
          type: string
          maxLength: 255
          description: >-
            Identificatore stabile del dispositivo raccolto dalla tua
            applicazione (`ANDROID_ID` per Android, `identifierForVendor` per
            iOS).
        device_platform:
          type: string
          enum:
            - android
            - ios
            - ipados
            - tvos
            - web
          description: Piattaforma del dispositivo dell'utente finale.
        device_model:
          type: string
          maxLength: 255
          description: Modello del dispositivo segnalato dalla tua applicazione.
        os_version:
          type: string
          maxLength: 64
          description: Versione del sistema operativo.
        app_version:
          type: string
          maxLength: 64
          description: Versione della tua applicazione.
        user_agent:
          type: string
          maxLength: 512
          description: User agent del browser o dell'app.
    RiskWarning:
      type: object
      required:
        - feature
        - risk
        - log_type
        - short_description
        - long_description
      properties:
        feature:
          type: string
          description: Funzionalità che ha generato l'avviso.
        risk:
          type: string
          description: >-
            Codice di rischio leggibile dalla macchina. Nuovi valori possono
            essere aggiunti nel tempo.
        additional_data:
          type: object
          nullable: true
          additionalProperties: true
          description: Contesto specifico del rischio, oppure `null`.
        log_type:
          type: string
          enum:
            - error
            - warning
            - information
          description: Gravità utilizzata dalle regole di decisione.
        short_description:
          type: string
          description: Riepilogo su una riga leggibile dall'utente.
        long_description:
          type: string
          description: Spiegazione di facile lettura.
    RiskLifecycleEvent:
      type: object
      required:
        - type
        - timestamp
        - details
        - fee
      properties:
        type:
          type: string
          description: >-
            Tipo di evento leggibile dalla macchina. Nuovi valori possono essere
            aggiunti nel tempo.
        timestamp:
          type: string
          format: date-time
          description: Data e ora in cui si è verificato l'evento.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: Payload specifico dell'evento, o `null`.
        fee:
          type: number
          description: Importo in USD fatturato per questo evento.
    EmailMatchItem:
      type: object
      description: >-
        Un'altra sessione della tua applicazione che ha utilizzato lo stesso
        indirizzo email con un `vendor_data` diverso.
      properties:
        session_id:
          type: string
          format: uuid
          description: >-
            ID sessione dell'altra verifica che ha utilizzato questo indirizzo
            email.
        session_number:
          type: integer
          description: Numero progressivo di facile lettura di tale sessione.
        vendor_data:
          type: string
          nullable: true
          description: '`vendor_data` di quella sessione.'
        verification_date:
          type: string
          description: Data e ora di creazione di quella sessione (`YYYY-MM-DDTHH:MM:SSZ`).
        email:
          type: string
          description: L'indirizzo email corrispondente.
        status:
          type: string
          description: >-
            Stato di quella sessione (ad es., `Approved`, `Declined`, `In
            Progress`).
        is_blocklisted:
          type: boolean
          description: >-
            Indica se l'indirizzo email è presente nella blocklist della tua
            applicazione.
        api_service:
          type: string
          nullable: true
          description: >-
            Per le sessioni di tipo API, l'API standalone che l'ha creata;
            `null` per le normali sessioni di verifica.
        source:
          type: string
          description: >-
            Dove è stata trovata la corrispondenza. Di solito `session`; un
            riscontro nella blocklist tramite una voce dell'elenco
            dell'organizzazione utilizza `list_entry`.
    EmailIntelligence:
      type: object
      description: >-
        Blocco normalizzato di email intelligence. Presente solo quando l'add-on
        di intelligence è stato eseguito per questa email; se presente, è
        esposto anche come alias `enrichment` con valori identici.
      properties:
        score:
          type: number
          nullable: true
          description: >-
            Punteggio di rischio normalizzato da 0 a 100. Più alto è il
            punteggio, maggiore è il rischio.
        deliverable:
          type: string
          nullable: true
          description: Fascia di recapitabilità (ad es. `high`).
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium` o `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: Indice numerico del rischio di violazione.
        is_recent_breach:
          type: boolean
          nullable: true
          description: '`true` quando l''indirizzo compare in una violazione recente.'
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true` quando l''indirizzo compare in numerose violazioni.'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` quando il dominio è un provider usa e getta.'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true` quando il dominio è un provider di email gratuito.'
        is_breached:
          type: boolean
          nullable: true
          description: '`true` quando l''indirizzo compare in violazioni note.'
        no_of_breaches:
          type: number
          nullable: true
          description: Numero di violazioni note che contengono l'indirizzo.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Identificatore Didit stabile del segnale, ad esempio
                  `IR-5AC67A32`. Opaco: usalo per raggruppare e filtrare, non
                  analizzarlo.
              value:
                nullable: true
                description: >-
                  Per un flag di rischio (ad esempio `voip`, `leaked`,
                  `disposable`, `spam_trap`), il suo valore: un booleano, un
                  livello o una data. Null per un codice motivo con punteggio.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: >-
                  Indica se il segnale ha aumentato il rischio o ha aggiunto
                  affidabilità.
              message:
                type: string
                description: Spiegazione di facile lettura del segnale, in inglese.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Con quale intensità il segnale ha modificato il punteggio, ad
                  esempio `low`, `medium` o `high`.
          description: >-
            Segnali che spiegano il punteggio, ciascuno con un codice Didit
            stabile, una direzione, un messaggio e un livello di impatto. Nel
            tempo possono comparire nuovi codici, pertanto non rifiutare i
            codici sconosciuti.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        Impronta social dell'indirizzo email: le piattaforme online su cui
        risulta registrato. Presente solo quando è stato impostato
        `enable_social` e il controllo è stato completato. Ciascun conteggio può
        essere null se non sono stati restituiti dati al riguardo.
        `profiles_registered: 0` indica che le piattaforme sono state
        controllate e l'indirizzo email non è stato trovato su nessuna di esse:
        una risposta valida e fatturabile, nonché un tipico segnale di identità
        sintetica.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: Piattaforme in cui l'indirizzo email risulta registrato.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Piattaforme valutate per la registrazione.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Piattaforme che hanno restituito un nome associato.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Piattaforme che hanno restituito una foto del profilo.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Piattaforme di comunicazione con presenza rilevata.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Categorie di piattaforma distinte con presenza rilevata.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indicatore composito di maturità digitale, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indicatore della ricchezza del profilo, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Mix di piattaforme gratuite rispetto a quelle a pagamento, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme gratuite.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme a pagamento completo.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: Completezza del profilo WhatsApp. Solo telefono; null per email.
          example: Partial
        registered_platforms:
          type: array
          description: Piattaforme in cui la registrazione è confermata.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Piattaforme verificate con esito negativo.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Numero di registrazioni e percentuale per categoria di piattaforma.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Dettagli del profilo per piattaforma, indicizzati per piattaforma,
            quando la piattaforma li rende disponibili.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Identificatore della piattaforma.
          example: whatsapp
        category:
          type: string
          description: >-
            Categoria della piattaforma, ad es. MESSAGING, SOCIAL_MEDIA,
            ECOMMERCE, PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` per piattaforme globali, `local` per quelle specifiche di
            una regione.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: >-
            Piattaforme in questa categoria in cui la registrazione è
            confermata.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Quota delle piattaforme verificate della categoria con una
            registrazione, 0.0-1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Nome del profilo, se esposto dalla piattaforma.
        photo:
          type: string
          nullable: true
          description: URL della foto del profilo, se esposto dalla piattaforma.
        about:
          type: string
          nullable: true
          description: >-
            Testo della bio/sezione informazioni del profilo, se esposto dalla
            piattaforma.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Visibilità del profilo, se esposta dalla piattaforma.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Indica se il profilo è un account aziendale, quando la piattaforma
            lo rende disponibile.
  responses:
    EmailRiskValidationError:
      description: Validazione della richiesta non riuscita.
      content:
        application/json:
          examples:
            Missing email:
              summary: Email mancante
              value:
                email:
                  - This field is required.
            Invalid email:
              summary: Email non valida
              value:
                email:
                  - Enter a valid email address.
            Invalid country hint:
              summary: Suggerimento per il paese non valido
              value:
                country_code:
                  - Ensure this field has no more than 3 characters.
    RiskPermissionDenied:
      description: >-
        La chiave API è mancante o non valida, oppure l'organizzazione non può
        coprire la ricerca in tempo reale. Questa API non restituisce mai `401`.
      content:
        application/json:
          examples:
            Missing or invalid API key:
              summary: >-
                Nessuna intestazione `x-api-key`, oppure la chiave non è valida
                o è stata revocata
              value:
                detail: You do not have permission to perform this action.
            Not enough credits:
              summary: >-
                Il saldo dell'organizzazione non è sufficiente per coprire il
                prezzo della ricerca
              value:
                error: You don't have enough credits to perform this request.
    RateLimitedWrite:
      description: >-
        Il limite di scrittura condiviso di 300 richieste al minuto per chiave
        API è stato superato. Rispetta `Retry-After` prima di riprovare.
      content:
        application/json:
          schema:
            type: object
            required:
              - detail
            properties:
              detail:
                type: string
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La chiave API della tua applicazione, da Developers -> API keys nella
        Business Console. La chiave primaria ha accesso completo. Una chiave con
        nome può avere un ambito definito: nessuno, lettura o scrittura per
        risorsa, limitata ad alcuni workflow o a sessioni approvate, a un elenco
        di indirizzi IP e a una data di scadenza. 401 indica che la chiave è
        errata, revocata o scaduta; 403 indica che non è stata inviata alcuna
        chiave, che la chiave non ha accesso a questa risorsa o azione, oppure
        che la richiesta proviene da un indirizzo non incluso nel suo elenco IP;
        404 su una route di sessione indica che la sessione non rientra nei
        workflow o negli stati previsti dalla chiave. Una chiave senza accesso
        ai media riceve gli URL di immagini, video e PDF come null, e una chiave
        senza permessi di scrittura sulle sessioni riceve link e token di
        sessione come null. Consulta https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.