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

# Pré-visualizar e-mail de reenvio da verificação

> Pré-visualize no Didit o destinatário, o remetente, a mensagem localizada e o link de verificação antes de solicitar o reenvio.

Visualizar a prévia não altera a sessão nem envia um e-mail.
Depois de analisar a resposta, confirme com [Update Session Status](https://docs.didit.me/pt-br/sessions-api/update-status.md) e passe o `preview_token` retornado como `email_preview_token`.
O comprovante expira após 15 minutos.
Um comprovante alterado ou expirado retorna `409` antes que a sessão seja alterada ou que um e-mail seja enviado.
Gere uma nova prévia após um conflito.
As integrações de API existentes podem omitir o comprovante. O console o fornece ao confirmar uma prévia.

O remetente e a identidade visual seguem a sua [configuração de marca branca](https://docs.didit.me/pt-br/console/white-label.md) existente.
O conteúdo da mensagem vem do modelo de verificação traduzido. Assuntos, corpos de mensagem e URLs de ação arbitrários não são aceitos como entradas do modelo.

## Quem recebe o e-mail

`email_address` é opcional.
Sem ele, o e-mail vai para o próprio endereço da pessoa: o que ela verificou em uma etapa de verificação de e-mail do fluxo ou, se não houver, o informado em `contact_details` quando a sessão foi criada.
Um endereço que você passa em `email_address` tem prioridade.

`recipient_source` indica qual endereço se aplica:

| `recipient_source` | De onde vem `recipient` |
| - | - |
| `email_verification` | O endereço que a pessoa verificou no fluxo |
| `contact_details` | O endereço informado em `contact_details` quando a sessão foi criada |
| `request` | O `email_address` que você passou |
| `""` (vazio) | Nenhum endereço é conhecido: `recipient` e `preview_token` ficam vazios e nenhum e-mail pode ser enviado |

## Se o e-mail é enviado

`will_be_sent` é `true` quando, ao confirmar o reenvio com `send_email: true`, o e-mail é enviado.
Quando é `false`, `not_sent_reason` informa o motivo:

| `not_sent_reason` | O que significa |
| - | - |
| `no_user_action` | Todas as etapas selecionadas são executadas sem a pessoa (por exemplo, AML ou Validação de banco de dados), então o reenvio é concluído sozinho e nenhum e-mail é enviado. `requires_user_action` também é `false`. |
| `no_recipient` | Nenhum endereço de e-mail é conhecido da pessoa e você não informou nenhum. |
| `sandbox` | A sessão é uma sessão de sandbox e o destinatário não aceitou receber e-mails de sandbox, então o e-mail é apenas simulado. Consulte [consentimento para receber e-mails](https://docs.didit.me/pt-br/integration/sandbox-testing.md#códigos-otp-e-opt-in-de-e-mail). |

## Confirmar o reenvio

Chame [Update Session Status](https://docs.didit.me/pt-br/sessions-api/update-status.md) com estes campos:

| Campo de Update Session Status | Valor |
| - | - |
| `new_status` | `Resubmitted` |
| `nodes_to_resubmit` | A mesma seleção da prévia (omita-a se você a omitiu na prévia) |
| `send_email` | `true` |
| `email_address` | `recipient` da prévia |
| `email_language` | O mesmo `email_language` que você enviou para a prévia |
| `email_preview_token` | `preview_token` da prévia |

O `language` da resposta é o idioma em que o e-mail está escrito: inglês, quando o idioma solicitado não é oferecido.

## Reenvios repetidos apenas no backend

Quando todas as etapas do reenvio são executadas sem a pessoa (AML, Validação de banco de dados ou Análise de IP), uma sessão só pode ser reenviada em nome da pessoa uma vez a cada 30 segundos.
Dentro desse intervalo, a prévia retorna `429`, assim como Update Session Status retornaria, com o tempo de espera no cabeçalho `Retry-After`.

## Relacionados

* [Update Session Status](https://docs.didit.me/pt-br/sessions-api/update-status.md): confirme o reenvio.
* [Preview Decision Email](https://docs.didit.me/pt-br/sessions-api/preview-decision-email.md): veja uma prévia do e-mail de Aprovação ou Recusa em vez disso.
* [Marca própria](https://docs.didit.me/pt-br/console/white-label.md): o remetente e a identidade visual que o e-mail usa.


## OpenAPI

````yaml pt-br/openapi-25.json POST /v3/session/{sessionId}/resubmission-preview/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/resubmission-preview/:
    post:
      tags:
        - Sessions
      summary: Pré-visualizar um e-mail de reenvio
      description: >-
        Gera o e-mail que acompanharia um reenvio de KYC ou KYB sem alterar a
        sessão, redefinir verificações, estender sua validade, executar
        verificações ou enviar e-mails. Exige o privilégio `write:sessions` (uma
        chave de API com escopo precisa de acesso de escrita a decisões) e uma
        sessão com status `Approved`, `Declined`, `In Review`, `Kyc Expired` ou
        `Abandoned`. O servidor valida as etapas do fluxo selecionadas e gera
        seu modelo fixo traduzido com o remetente verificado e a identidade
        visual de marca própria aplicáveis. A requisição não pode definir
        assunto, corpo da mensagem nem URL de ação.


        `email_address` é opcional. Sem ele, o e-mail vai para o endereço da
        própria pessoa: o que ela verificou em uma etapa de verificação de
        e-mail do fluxo ou, se não houver, o informado em `contact_details`
        quando a sessão foi criada. Um endereço que você informar tem prioridade
        (`recipient_source: request`). Quando nenhum endereço é conhecido e você
        não informa nenhum, `recipient` e `preview_token` são strings vazias e
        nenhum e-mail pode ser enviado.


        A resposta inclui o destinatário e a origem dele, o remetente, o
        assunto, o HTML, o idioma, as etapas resolvidas, se a confirmação envia
        o e-mail (`will_be_sent`, `not_sent_reason`) e um `preview_token`
        assinado. `requires_user_action` é `false` quando todas as etapas
        selecionadas são executadas sem a pessoa: nesse caso, o reenvio é
        concluído sozinho e nenhum e-mail é enviado (`not_sent_reason:
        no_user_action`).


        Esta pré-visualização não reserva o estado da sessão nem autoriza a
        entrega. Depois de revisá-la, chame [Update Session
        Status](/pt-br/sessions-api/update-status) com `new_status:
        Resubmitted`, os mesmos `nodes_to_resubmit` e `email_language` que você
        pré-visualizou, `send_email: true`, `email_address` definido como
        `recipient` e `email_preview_token` definido como `preview_token`. O
        comprovante expira após 15 minutos. Quando um comprovante é fornecido,
        alterações nas entradas, no conteúdo da mensagem, no remetente ou no
        estado da sessão retornam `409` antes de qualquer alteração ou envio.
        Integrações existentes podem omitir o comprovante. Gere a
        pré-visualização novamente após um conflito. Trate a resposta como
        conteúdo de verificação sensível; as respostas usam `Cache-Control:
        no-store`. Renderize o HTML em um frame isolado (sandbox), nunca
        diretamente no DOM da sua aplicação.
      operationId: post_v3_session_resubmission_preview
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            UUID da sessão de verificação a ser atualizada. Aceita IDs de sessão
            tanto de usuário (KYC) quanto de empresa (KYB): o serviço resolve o
            ID entre os dois tipos de sessão.
          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: >-
                    Etapas a pré-visualizar, usando a mesma validação, seleção e
                    ordem do fluxo de um reenvio. Omita para selecionar
                    automaticamente as tentativas registradas que precisam de
                    reenvio.
                  items:
                    type: object
                    required:
                      - node_id
                      - feature
                    properties:
                      node_id:
                        type: string
                        description: >-
                          Identificador do nó conforme aparece na definição do
                          fluxo de verificação (workflow) da sessão (por
                          exemplo, `feature_ocr`, `feature_liveness`).
                        example: feature_ocr
                      feature:
                        type: string
                        description: >-
                          Tipo de recurso do nó. Os aliases `ID_VERIFICATION`,
                          `POA`, `PHONE` e `EMAIL` são normalizados no servidor
                          para `OCR`, `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION` e
                          `EMAIL_VERIFICATION`. `KYB_REGISTRY`, `KYB_KEY_PEOPLE`
                          e `KYB` passam na validação do schema, mas são sempre
                          rejeitados com o `400` de regra de negócio mostrado
                          nos exemplos.
                        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: >-
                    Opcional. Envia o e-mail para este endereço em vez do
                    endereço da própria pessoa. Sem ele, o destinatário é o
                    endereço que a pessoa verificou no fluxo ou, na ausência
                    dele, o informado em `contact_details`. Nenhum e-mail é
                    enviado por esta chamada.
                  example: user@example.com
                email_language:
                  type: string
                  description: >-
                    Idioma do e-mail de notificação. Aceita qualquer string no
                    nível do schema; códigos não suportados passam a usar inglês
                    (`en`) sem aviso.
                  default: en
                  example: en
            examples:
              Person's Own Address:
                summary: >-
                  Pré-visualizar um reenvio de comprovante de endereço para o
                  próprio endereço da pessoa
                value:
                  nodes_to_resubmit:
                    - node_id: feature_poa_1
                      feature: POA
                  email_language: en
              Named Recipient:
                summary: Pré-visualizar o e-mail para um endereço que você informar
                value:
                  nodes_to_resubmit:
                    - node_id: feature_ocr
                      feature: OCR
                  email_address: person@example.com
                  email_language: en
      responses:
        '200':
          description: >-
            Somente pré-visualização. A sessão não é alterada e nenhum e-mail é
            enviado.
          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: >-
                      O endereço para o qual o e-mail vai. Uma string vazia
                      quando nenhum endereço da pessoa é conhecido. Nesse caso,
                      nenhum e-mail pode ser enviado e `preview_token` também
                      fica vazio. Envie-o como `email_address` ao confirmar.
                    example: person@example.com
                  recipient_source:
                    type: string
                    enum:
                      - email_verification
                      - contact_details
                      - request
                      - ''
                    description: >-
                      A origem de `recipient`. `request`: o `email_address` que
                      você enviou. `email_verification`: o endereço que a pessoa
                      verificou em uma etapa de verificação de e-mail do fluxo.
                      `contact_details`: o endereço informado em
                      `contact_details` quando a sessão foi criada. Uma string
                      vazia quando não há endereço.
                    example: email_verification
                  sender:
                    type: string
                    description: O cabeçalho `From` com o qual o e-mail é enviado.
                    example: Example App <no-reply@mail.example.com>
                  sender_name:
                    type: string
                    description: A parte do nome de exibição de `sender`.
                    example: Example App
                  sender_email:
                    type: string
                    format: email
                    description: A parte de endereço de `sender`.
                    example: no-reply@mail.example.com
                  sender_kind:
                    type: string
                    enum:
                      - customer
                      - didit
                    description: >-
                      `customer`: o e-mail é enviado a partir do domínio de
                      remetente verificado da sua aplicação (marca própria).
                      `didit`: ele é enviado a partir do remetente da própria
                      Didit.
                    example: customer
                  subject:
                    type: string
                    description: A linha de assunto exatamente como é enviada.
                    example: 'Action Required: Complete your verification in Example App'
                  html:
                    type: string
                    description: >-
                      O HTML do e-mail exatamente como é enviado, com o logotipo
                      incorporado como data URL. Renderize-o em um frame isolado
                      (sandbox), nunca diretamente no DOM da sua aplicação.
                    example: <!DOCTYPE html><html><body>...</body></html>
                  text:
                    type: string
                    description: >-
                      O texto do e-mail em texto simples, como a conversa de
                      Mensagens da pessoa o mantém, para uma pré-visualização
                      compacta (o HTML continua sendo o e-mail que a pessoa
                      recebe).
                    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: >-
                      O idioma em que o e-mail está escrito. Inglês (`en`)
                      quando o `email_language` solicitado não é oferecido.
                    example: en
                  will_be_sent:
                    type: boolean
                    description: >-
                      Indica se confirmar a alteração com `send_email: true`
                      envia este e-mail. `false` quando `not_sent_reason` está
                      definido.
                    example: true
                  not_sent_reason:
                    type: string
                    nullable: true
                    enum:
                      - no_user_action
                      - no_recipient
                      - sandbox
                      - null
                    description: >-
                      Por que a confirmação não enviaria nenhum e-mail, ou
                      `null` quando ele será enviado. `no_user_action`: todas as
                      etapas selecionadas são executadas sem a pessoa, então o
                      reenvio é concluído sozinho e nenhum e-mail é enviado.
                      `no_recipient`: nenhum endereço é conhecido para a pessoa
                      e você não informou nenhum. `sandbox`: uma sessão sandbox
                      cujo destinatário não ativou a entrega de e-mails no
                      sandbox, então o envio é apenas simulado.
                    example: null
                  nodes_to_resubmit:
                    type: array
                    items:
                      type: object
                      required:
                        - node_id
                        - feature
                      properties:
                        node_id:
                          type: string
                          description: >-
                            Identificador do nó conforme aparece na definição do
                            fluxo de verificação (workflow) da sessão (por
                            exemplo, `feature_ocr`, `feature_liveness`).
                          example: feature_ocr
                        feature:
                          type: string
                          description: >-
                            Tipo de recurso do nó. Os aliases `ID_VERIFICATION`,
                            `POA`, `PHONE` e `EMAIL` são normalizados no
                            servidor para `OCR`, `PROOF_OF_ADDRESS`,
                            `PHONE_VERIFICATION` e `EMAIL_VERIFICATION`.
                            `KYB_REGISTRY`, `KYB_KEY_PEOPLE` e `KYB` passam na
                            validação do schema, mas são sempre rejeitados com o
                            `400` de regra de negócio mostrado nos exemplos.
                          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 pelo menos uma verificação selecionada exige
                      interação do usuário. Isso não prevê o resultado final do
                      fluxo.
                  preview_token:
                    type: string
                    description: >-
                      Recibo assinado para este e-mail exato, válido por 15
                      minutos. Passe-o como `email_preview_token` para
                      [Atualizar status da
                      sessão](/pt-br/sessions-api/update-status). Uma string
                      vazia quando não há destinatário.
                    example: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
              examples:
                Will Be Sent:
                  summary: 'Destinatário padrão: o endereço verificado no fluxo'
                  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: >-
                    Somente etapas de backend são selecionadas, então nenhum
                    e-mail é enviado
                  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`: a pré-visualização contém conteúdo da
                verificação e não deve ser armazenada em cache.
              schema:
                type: string
                example: no-store
        '400':
          description: >-
            A sessão não está em um status aceito por este endpoint, já está
            como `Resubmitted`, as etapas selecionadas não podem ser reenviadas
            ou um campo é inválido.
          content:
            application/json:
              examples:
                Wrong Current Status:
                  summary: A sessão não está em um status aceito por este 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: A sessão já está como Resubmitted
                  value:
                    - The new status is the same as the current status.
                Nothing To Resubmit:
                  summary: >-
                    A seleção automática não encontrou nenhuma etapa que precise
                    de reenvio
                  value:
                    nodes_to_resubmit: >-
                      No features found that need resubmission. All features are
                      already approved.
                Invalid Email:
                  summary: email_address não é um endereço de e-mail
                  value:
                    email_address:
                      - Enter a valid email address.
        '401':
          description: A chave de API com escopo expirou.
          content:
            application/json:
              examples:
                Expired API Key:
                  summary: Chave de API com escopo após a data de validade
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Credenciais ausentes, um chamador sem o privilégio `write:sessions`,
            uma chave de API com escopo sem o acesso de que este endpoint
            precisa, ou um `session_id` que pertence a outra aplicação.
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: x-api-key ausente ou inválido
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: O chamador não tem write:sessions
                  value:
                    detail: You do not have permission to perform this action.
                Scoped Key Without Access:
                  summary: Chave de API com escopo sem este acesso
                  value:
                    detail: This API key has no write access to decisions.
        '404':
          description: Não existe nenhuma sessão de KYC ou KYB com este `session_id`.
          content:
            application/json:
              examples:
                Not Found:
                  summary: session_id desconhecido
                  value:
                    detail: Not found.
        '429':
          description: >-
            As etapas a reenviar são todas apenas de backend (AML,
            DATABASE_VALIDATION, IP_ANALYSIS), e a sessão já foi reenviada para
            etapas apenas de backend nos últimos 30 segundos, então Update
            Session Status recusaria o reenvio. Tente novamente após o intervalo
            indicado em `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: >-
        Chave de API da sua aplicação, em Developers -> API keys no Business
        Console. A chave principal tem acesso total. Uma chave nomeada pode ter
        escopo restrito: nenhum acesso, leitura ou escrita por recurso, limitada
        a alguns fluxos ou a sessões aprovadas, a uma lista de endereços IP e a
        uma data de validade. 401 significa que a chave está errada, revogada ou
        expirada; 403 significa que nenhuma chave foi enviada, que a chave não
        tem acesso a este recurso ou ação, ou que a requisição veio de um
        endereço fora da sua lista de IPs; 404 em uma rota de sessão significa
        que a sessão está fora dos fluxos ou status da chave. Uma chave sem
        acesso a mídia recebe URLs de imagem, vídeo e PDF como null, e uma chave
        sem permissão de escrita em sessões recebe links e tokens de sessão como
        null. Consulte https://docs.didit.me/console/api-keys.

````

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