> ## 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.

# Anteprima email per richiedere un nuovo invio

> Controlla destinatario, mittente, messaggio localizzato e link di verifica prima di richiedere un nuovo invio con Didit.

L'anteprima non modifica la sessione né invia un'email.
Dopo aver esaminato la risposta, conferma con [Aggiorna stato della sessione](https://docs.didit.me/it/sessions-api/update-status.md) e passa il `preview_token` restituito come `email_preview_token`.
La ricevuta scade dopo 15 minuti.
Una ricevuta modificata o scaduta restituisce `409` prima che la sessione venga modificata o che venga inviata un'email.
Dopo un conflitto, genera una nuova anteprima.
Le integrazioni API esistenti possono omettere la ricevuta; la console la fornisce quando confermi un'anteprima.

Il mittente e il branding seguono la tua [configurazione White label](https://docs.didit.me/it/console/white-label.md).
Il contenuto del messaggio proviene dal modello di verifica tradotto; oggetti, corpi del messaggio e URL di azione arbitrari non sono accettati come input del modello.

## Chi riceve l'email

`email_address` è facoltativo.
Se non lo passi, l'email va all'indirizzo della persona: quello verificato in un passaggio di verifica email del flusso, altrimenti quello indicato in `contact_details` alla creazione della sessione.
Un indirizzo passato in `email_address` ha la precedenza.

`recipient_source` indica quale indirizzo si applica:

| `recipient_source` | Da dove proviene `recipient` |
| - | - |
| `email_verification` | L'indirizzo che la persona ha verificato nel flusso |
| `contact_details` | L'indirizzo indicato in `contact_details` alla creazione della sessione |
| `request` | L'`email_address` che hai passato |
| `""` (vuoto) | Nessun indirizzo è noto: `recipient` e `preview_token` sono vuoti e non può essere inviata alcuna email |

## Se l'email viene inviata

`will_be_sent` è `true` quando confermare il reinvio con `send_email: true` invia l'email.
Se è `false`, `not_sent_reason` spiega il motivo:

| `not_sent_reason` | Significato |
| - | - |
| `no_user_action` | Ogni passaggio selezionato viene eseguito senza la persona (ad esempio AML o Validazione su database), quindi il reinvio si completa da solo e non viene inviata alcuna email. Anche `requires_user_action` è `false`. |
| `no_recipient` | Non è noto alcun indirizzo per la persona e non ne hai passato nessuno. |
| `sandbox` | La sessione è una sessione sandbox e il destinatario non ha aderito all'invio di email in sandbox, quindi l'email viene solo simulata. Vedi [adesione all'invio di email](https://docs.didit.me/it/integration/sandbox-testing.md#codici-otp-e-opt-in-per-le-email). |

## Conferma il reinvio

Chiama [Aggiorna stato della sessione](https://docs.didit.me/it/sessions-api/update-status.md) con questi campi:

| Campo di Aggiorna stato della sessione | Valore |
| - | - |
| `new_status` | `Resubmitted` |
| `nodes_to_resubmit` | La stessa selezione che hai visualizzato in anteprima (omettilo se lo hai omesso qui) |
| `send_email` | `true` |
| `email_address` | `recipient` dell'anteprima |
| `email_language` | Lo stesso `email_language` che hai inviato all'anteprima |
| `email_preview_token` | `preview_token` dell'anteprima |

Il `language` della risposta è la lingua in cui è scritta l'email: l'inglese, quando quella richiesta non è disponibile.

## Reinvii ripetuti solo lato backend

Quando ogni passaggio da reinviare viene eseguito senza la persona (AML, Validazione su database o Analisi IP), una sessione può essere reinviata per lei solo una volta ogni 30 secondi.
Entro questo intervallo, l'anteprima restituisce `429`, come farebbe Aggiorna stato della sessione, con il tempo di attesa nell'intestazione `Retry-After`.

## Correlati

* [Aggiorna stato della sessione](https://docs.didit.me/it/sessions-api/update-status.md): conferma il reinvio.
* [Anteprima email di decisione](https://docs.didit.me/it/sessions-api/preview-decision-email.md): visualizza in anteprima l'email di approvazione o rifiuto.
* [White label](https://docs.didit.me/it/console/white-label.md): il mittente e il branding utilizzati per l'email.


## OpenAPI

````yaml it/openapi-25.json POST /v3/session/{sessionId}/resubmission-preview/
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/session/{sessionId}/resubmission-preview/:
    post:
      tags:
        - Sessions
      summary: Visualizza l'anteprima di un'email di nuovo invio
      description: >-
        Esegue il rendering dell'email che accompagnerebbe un nuovo invio KYC o
        KYB senza modificare la sessione, azzerare i controlli, estenderne la
        scadenza, eseguire verifiche o inviare email. Richiede il privilegio
        `write:sessions` (una chiave API con ambito limitato necessita
        dell'accesso in scrittura alle decisioni) e una sessione nello stato
        `Approved`, `Declined`, `In Review`, `Kyc Expired` o `Abandoned`. Il
        server convalida i passaggi del workflow selezionati ed esegue il
        rendering del relativo modello tradotto fisso con il mittente e il
        branding white label verificati applicabili. La richiesta non può
        impostare un oggetto, il corpo del messaggio o l'URL dell'azione.


        `email_address` è opzionale. Senza di esso, l'email viene inviata
        all'indirizzo della persona stessa: quello verificato in un passaggio di
        verifica email del flusso, altrimenti quello fornito in
        `contact_details` al momento della creazione della sessione. Un
        indirizzo trasmesso ha la precedenza (`recipient_source: request`).
        Quando non è noto alcun indirizzo e non ne viene trasmesso alcuno,
        `recipient` e `preview_token` sono stringhe vuote e non è possibile
        inviare alcuna email.


        La risposta include il destinatario e la relativa origine, il mittente,
        l'oggetto, l'HTML, la lingua, i passaggi risolti, se la conferma
        comporta l'invio dell'email (`will_be_sent`, `not_sent_reason`) e un
        `preview_token` firmato. `requires_user_action` è `false` quando ogni
        passaggio selezionato viene eseguito senza la persona: il nuovo invio si
        conclude quindi autonomamente e non viene inviata alcuna email
        (`not_sent_reason: no_user_action`).


        Questa anteprima non riserva lo stato della sessione né autorizza la
        consegna. Dopo averla esaminata, chiama [Update Session
        Status](/it/sessions-api/update-status) con `new_status: Resubmitted`,
        gli stessi `nodes_to_resubmit` ed `email_language` visualizzati in
        anteprima, `send_email: true`, `email_address` impostato su `recipient`
        ed `email_preview_token` impostato su `preview_token`. La ricevuta scade
        dopo 15 minuti. Quando viene fornita una ricevuta, eventuali modifiche a
        input, contenuto del messaggio, mittente o stato della sessione
        restituiscono `409` prima di qualsiasi modifica o invio. Le integrazioni
        esistenti possono omettere la ricevuta. Rigenera l'anteprima dopo un
        conflitto. Considera la risposta come contenuto di verifica sensibile;
        le risposte utilizzano `Cache-Control: no-store`. Esegui il rendering
        dell'HTML in un frame sandbox, mai direttamente nel DOM della tua
        applicazione.
      operationId: post_v3_session_resubmission_preview
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            UUID della sessione di verifica da aggiornare. Accetta sia ID di
            sessione utente (KYC) sia ID di sessione aziendale (KYB): il
            servizio risolve l'ID per entrambi i tipi di sessione.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                nodes_to_resubmit:
                  type: array
                  description: >-
                    Passaggi da visualizzare in anteprima, utilizzando le stesse
                    regole di validazione, selezione e ordinamento del workflow
                    di un nuovo invio. Ometti per selezionare automaticamente i
                    tentativi registrati che richiedono un nuovo invio.
                  items:
                    type: object
                    required:
                      - node_id
                      - feature
                    properties:
                      node_id:
                        type: string
                        description: >-
                          Identificativo del nodo così come appare nella
                          definizione del workflow della sessione (ad esempio
                          `feature_ocr`, `feature_liveness`).
                        example: feature_ocr
                      feature:
                        type: string
                        description: >-
                          Tipo di funzionalità del nodo. Gli alias
                          `ID_VERIFICATION`, `POA`, `PHONE` ed `EMAIL` vengono
                          normalizzati lato server in `OCR`, `PROOF_OF_ADDRESS`,
                          `PHONE_VERIFICATION` ed `EMAIL_VERIFICATION`.
                          `KYB_REGISTRY`, `KYB_KEY_PEOPLE` e `KYB` superano la
                          convalida dello schema ma vengono sempre rifiutati con
                          l'errore di regola di business `400` mostrato negli
                          esempi.
                        enum:
                          - OCR
                          - OCR_BACK
                          - NFC
                          - AML
                          - FACE
                          - LIVENESS
                          - FACE_MATCH
                          - IP_ANALYSIS
                          - AGE_ESTIMATION
                          - PROOF_OF_ADDRESS
                          - PHONE_VERIFICATION
                          - EMAIL_VERIFICATION
                          - FACE_SEARCH
                          - DATABASE_VALIDATION
                          - QUESTIONNAIRE
                          - DOCUMENT_AI
                          - KYB_DOCUMENTS
                          - ID_VERIFICATION
                          - POA
                          - PHONE
                          - EMAIL
                          - KYB_REGISTRY
                          - KYB_KEY_PEOPLE
                          - KYB
                          - GEOLOCATION
                        example: OCR
                email_address:
                  type: string
                  format: email
                  description: >-
                    Opzionale. Invia l'email a questo indirizzo invece che a
                    quello della persona stessa. In sua assenza, il destinatario
                    è l'indirizzo verificato dalla persona nel workflow,
                    altrimenti quello indicato in `contact_details`. Nessuna
                    email viene inviata da questa chiamata.
                  example: user@example.com
                email_language:
                  type: string
                  description: >-
                    Lingua per l'email di notifica. Accetta qualsiasi stringa a
                    livello di schema; i codici non supportati ripiegano
                    silenziosamente sull'inglese (`en`).
                  default: en
                  example: en
            examples:
              Person's Own Address:
                summary: >-
                  Visualizza l'anteprima di un nuovo invio della prova di
                  residenza per l'indirizzo della persona
                value:
                  nodes_to_resubmit:
                    - node_id: feature_poa_1
                      feature: POA
                  email_language: en
              Named Recipient:
                summary: >-
                  Visualizza l'anteprima dell'email per un indirizzo specificato
                  da te
                value:
                  nodes_to_resubmit:
                    - node_id: feature_ocr
                      feature: OCR
                  email_address: person@example.com
                  email_language: en
      responses:
        '200':
          description: >-
            Solo anteprima. La sessione non viene modificata e non viene inviata
            alcuna email.
          content:
            application/json:
              schema:
                type: object
                required:
                  - recipient
                  - recipient_source
                  - sender
                  - sender_name
                  - sender_email
                  - sender_kind
                  - subject
                  - html
                  - text
                  - language
                  - will_be_sent
                  - not_sent_reason
                  - preview_token
                  - nodes_to_resubmit
                  - requires_user_action
                properties:
                  recipient:
                    type: string
                    description: >-
                      L'indirizzo a cui viene inviata l'email. Stringa vuota se
                      non si conosce alcun indirizzo per la persona: in tal caso
                      non è possibile inviare alcuna email e anche
                      `preview_token` è vuoto. Passalo come `email_address`
                      quando confermi.
                    example: person@example.com
                  recipient_source:
                    type: string
                    enum:
                      - email_verification
                      - contact_details
                      - request
                      - ''
                    description: >-
                      Da dove proviene `recipient`. `request`: l'`email_address`
                      trasmesso. `email_verification`: l'indirizzo verificato
                      dalla persona in un passaggio di verifica email del
                      flusso. `contact_details`: l'indirizzo fornito in
                      `contact_details` alla creazione della sessione. Una
                      stringa vuota quando non è presente alcun indirizzo.
                    example: email_verification
                  sender:
                    type: string
                    description: L'intestazione `From` con cui viene inviata l'email.
                    example: Example App <no-reply@mail.example.com>
                  sender_name:
                    type: string
                    description: La parte del nome visualizzato di `sender`.
                    example: Example App
                  sender_email:
                    type: string
                    format: email
                    description: La parte relativa all'indirizzo di `sender`.
                    example: no-reply@mail.example.com
                  sender_kind:
                    type: string
                    enum:
                      - customer
                      - didit
                    description: >-
                      `customer`: l'email viene inviata dal dominio mittente
                      verificato della tua applicazione (white label). `didit`:
                      viene inviata dal mittente di Didit.
                    example: customer
                  subject:
                    type: string
                    description: La riga dell'oggetto esattamente come viene inviata.
                    example: 'Action Required: Complete your verification in Example App'
                  html:
                    type: string
                    description: >-
                      L'HTML dell'email esattamente come inviato, con il logo
                      incorporato come data URL. Effettuane il rendering in un
                      frame in sandbox, mai direttamente nel DOM della tua
                      applicazione.
                    example: <!DOCTYPE html><html><body>...</body></html>
                  text:
                    type: string
                    description: >-
                      Il testo dell'email in testo normale, così come viene
                      mantenuto nel thread Messaggi della persona, per
                      un'anteprima compatta (l'HTML rimane l'email ricevuta
                      dalla persona).
                    example: |-
                      Almost there

                      Some steps need to be completed again.
                      Here’s what to fix:

                      https://verify.didit.me/session/abc123
                  language:
                    type: string
                    description: >-
                      La lingua in cui è scritta l'email. Inglese (`en`) se
                      l'`email_language` richiesta non è disponibile.
                    example: en
                  will_be_sent:
                    type: boolean
                    description: >-
                      Indica se la conferma della modifica con `send_email:
                      true` comporta l'invio di questa email. `false` quando
                      `not_sent_reason` è impostato.
                    example: true
                  not_sent_reason:
                    type: string
                    nullable: true
                    enum:
                      - no_user_action
                      - no_recipient
                      - sandbox
                      - null
                    description: >-
                      Il motivo per cui la conferma non invierebbe alcuna email,
                      oppure `null` se verrà inviata. `no_user_action`: ogni
                      passaggio selezionato viene eseguito senza la persona,
                      quindi il nuovo invio si completa autonomamente e non
                      viene spedita alcuna email. `no_recipient`: non è noto
                      alcun indirizzo per la persona e non ne hai passato
                      nessuno. `sandbox`: una sessione sandbox il cui
                      destinatario non ha acconsentito alla consegna delle email
                      in sandbox, quindi l'invio viene solo simulato.
                    example: null
                  nodes_to_resubmit:
                    type: array
                    items:
                      type: object
                      required:
                        - node_id
                        - feature
                      properties:
                        node_id:
                          type: string
                          description: >-
                            Identificativo del nodo così come appare nella
                            definizione del workflow della sessione (ad esempio
                            `feature_ocr`, `feature_liveness`).
                          example: feature_ocr
                        feature:
                          type: string
                          description: >-
                            Tipo di funzionalità del nodo. Gli alias
                            `ID_VERIFICATION`, `POA`, `PHONE` ed `EMAIL` vengono
                            normalizzati lato server in `OCR`,
                            `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION` ed
                            `EMAIL_VERIFICATION`. `KYB_REGISTRY`,
                            `KYB_KEY_PEOPLE` e `KYB` superano la convalida dello
                            schema ma vengono sempre rifiutati con l'errore di
                            regola di business `400` mostrato negli esempi.
                          enum:
                            - OCR
                            - OCR_BACK
                            - NFC
                            - AML
                            - FACE
                            - LIVENESS
                            - FACE_MATCH
                            - IP_ANALYSIS
                            - AGE_ESTIMATION
                            - PROOF_OF_ADDRESS
                            - PHONE_VERIFICATION
                            - EMAIL_VERIFICATION
                            - FACE_SEARCH
                            - DATABASE_VALIDATION
                            - QUESTIONNAIRE
                            - DOCUMENT_AI
                            - KYB_DOCUMENTS
                            - ID_VERIFICATION
                            - POA
                            - PHONE
                            - EMAIL
                            - KYB_REGISTRY
                            - KYB_KEY_PEOPLE
                            - KYB
                            - GEOLOCATION
                          example: OCR
                  requires_user_action:
                    type: boolean
                    description: >-
                      Indica se almeno un controllo selezionato richiede
                      l'interazione dell'utente. Ciò non prevede l'esito finale
                      del workflow.
                  preview_token:
                    type: string
                    description: >-
                      Ricevuta firmata per questa specifica email, valida per 15
                      minuti. Inviala come `email_preview_token` a [Update
                      Session Status](/it/sessions-api/update-status). Una
                      stringa vuota quando non è presente alcun destinatario.
                    example: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
              examples:
                Will Be Sent:
                  summary: 'Destinatario predefinito: l''indirizzo verificato nel flusso'
                  value:
                    recipient: person@example.com
                    recipient_source: email_verification
                    sender: Example App <no-reply@mail.example.com>
                    sender_name: Example App
                    sender_email: no-reply@mail.example.com
                    sender_kind: customer
                    subject: 'Action Required: Complete your verification in Example App'
                    html: <!DOCTYPE html><html><body>...</body></html>
                    language: en
                    will_be_sent: true
                    not_sent_reason: null
                    nodes_to_resubmit:
                      - node_id: feature_poa_1
                        feature: PROOF_OF_ADDRESS
                    requires_user_action: true
                    preview_token: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
                No User Action:
                  summary: >-
                    Sono selezionati solo passaggi di back-end, quindi non viene
                    inviata alcuna email
                  value:
                    recipient: person@example.com
                    recipient_source: contact_details
                    sender: Example App <no-reply@mail.example.com>
                    sender_name: Example App
                    sender_email: no-reply@mail.example.com
                    sender_kind: customer
                    subject: 'Action Required: Complete your verification in Example App'
                    html: <!DOCTYPE html><html><body>...</body></html>
                    language: en
                    will_be_sent: false
                    not_sent_reason: no_user_action
                    nodes_to_resubmit:
                      - node_id: feature_aml
                        feature: AML
                    requires_user_action: false
                    preview_token: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
          headers:
            Cache-Control:
              description: >-
                Sempre `no-store`: l'anteprima contiene contenuti di verifica e
                non deve essere memorizzata nella cache.
              schema:
                type: string
                example: no-store
        '400':
          description: >-
            La sessione non è in uno stato accettato da questo endpoint, è già
            `Resubmitted`, i passaggi selezionati non possono essere
            ripresentati oppure un campo non è valido.
          content:
            application/json:
              examples:
                Wrong Current Status:
                  summary: >-
                    La sessione non si trova in uno stato accettato da questo
                    endpoint
                  value:
                    detail: >-
                      Only sessions with status Approved, Declined, In Review,
                      Kyc Expired, Abandoned, Resubmitted can be updated.
                      Current status: In Progress
                Already Resubmitted:
                  summary: La sessione è già Resubmitted
                  value:
                    - The new status is the same as the current status.
                Nothing To Resubmit:
                  summary: >-
                    La selezione automatica non ha trovato alcun passaggio da
                    inviare nuovamente
                  value:
                    nodes_to_resubmit: >-
                      No features found that need resubmission. All features are
                      already approved.
                Invalid Email:
                  summary: email_address non è un indirizzo email
                  value:
                    email_address:
                      - Enter a valid email address.
        '401':
          description: La chiave API con ambito è scaduta.
          content:
            application/json:
              examples:
                Expired API Key:
                  summary: Chiave API con ambito oltre la sua data di scadenza
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Credenziali mancanti, chiamante senza il privilegio
            `write:sessions`, chiave API con ambito limitato priva dell'accesso
            richiesto da questo endpoint, oppure un `session_id` che appartiene
            a un'altra applicazione.
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: x-api-key mancante o non valida
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: Il chiamante non dispone dell'autorizzazione write:sessions
                  value:
                    detail: You do not have permission to perform this action.
                Scoped Key Without Access:
                  summary: Chiave API con ambito priva di questo accesso
                  value:
                    detail: This API key has no write access to decisions.
        '404':
          description: Non esiste alcuna sessione KYC o KYB con questo `session_id`.
          content:
            application/json:
              examples:
                Not Found:
                  summary: session_id sconosciuto
                  value:
                    detail: Not found.
        '429':
          description: >-
            I passaggi da reinviare sono tutti solo backend (AML,
            DATABASE_VALIDATION, IP_ANALYSIS) e la sessione è già stata
            reinviata per passaggi solo backend negli ultimi 30 secondi,
            pertanto Update Session Status rifiuterebbe il reinvio. Riprova dopo
            l'intervallo indicato in `Retry-After`.
          content:
            application/json:
              examples:
                Backend-only resubmit throttled:
                  value:
                    detail: >-
                      This session was already resubmitted for backend-only
                      features within the last 30 seconds; repeating it cannot
                      change the outcome. Wait before resubmitting again.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.preview_resubmission(
                "11111111-2222-3333-4444-555555555555",
                nodes_to_resubmit=[{
                    "node_id": "feature_poa_1",
                    "feature": "POA",
                }],
                email_language="en",
            )
            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.sessions.previewResubmission("11111111-2222-3333-4444-555555555555",
            {
              nodes_to_resubmit: [{
                node_id: "feature_poa_1",
                feature: "POA",
              }],
              email_language: "en",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.PreviewResubmission(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsPreviewResubmissionParams{\n\tNodesToResubmit: didit.Some([]didit.SessionsPreviewResubmissionParamsNodesToResubmit{{\n\t\tNodeID:  \"feature_poa_1\",\n\t\tFeature: \"POA\",\n\t}}),\n\tEmailLanguage: didit.String(\"en\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.SessionsPreviewResubmissionParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().previewResubmission("11111111-2222-3333-4444-555555555555",
            SessionsPreviewResubmissionParams.builder()
                    .nodesToResubmit(List.of(SessionsPreviewResubmissionParams.NodesToResubmit.builder()
                            .nodeId("feature_poa_1")
                            .feature(SessionsPreviewResubmissionParams.NodesToResubmit.Feature.of("POA"))
                            .build()))
                    .emailLanguage("en")
                    .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->sessions->previewResubmission('11111111-2222-3333-4444-555555555555',
            [
                'nodes_to_resubmit' => [[
                    'node_id' => 'feature_poa_1',
                    'feature' => 'POA',
                ]],
                'email_language' => 'en',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.sessions.preview_resubmission(
              "11111111-2222-3333-4444-555555555555",
              nodes_to_resubmit: [{
                node_id: "feature_poa_1",
                feature: "POA",
              }],
              email_language: "en"
            )
            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.Sessions.PreviewResubmissionAsync("11111111-2222-3333-4444-555555555555",
            new SessionsPreviewResubmissionParams

            {
                NodesToResubmit = new SessionsPreviewResubmissionParamsNodesToResubmit[]
                {
                    new()
                    {
                        NodeId = "feature_poa_1",
                        Feature = "POA",
                    },
                },
                EmailLanguage = "en",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  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.