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

> Reveja o destinatário, o remetente, a mensagem localizada e a ligação de verificação antes de pedir a reenvio ao Didit. Os dados são os mesmos do inglês.

A pré-visualização não altera a sessão nem envia um e-mail.
Depois de analisar a resposta, confirme com [Atualizar estado da sessão](https://docs.didit.me/pt/sessions-api/update-status.md) e passe o `preview_token` devolvido como `email_preview_token`.
O comprovativo expira após 15 minutos.
Um comprovativo alterado ou expirado devolve `409` antes de a sessão ser alterada ou de um e-mail ser enviado.
Gere uma nova pré-visualização após um conflito.
As integrações de API existentes podem omitir o comprovativo; a consola fornece-o ao confirmar uma pré-visualização.

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

## Quem recebe o e-mail

`email_address` é opcional.
Sem este campo, o e-mail é enviado para o endereço da própria pessoa: o que verificou num passo de verificação de e-mail do fluxo, ou então o indicado em `contact_details` quando a sessão foi criada.
Um endereço indicado em `email_address` tem prioridade.

`recipient_source` indica qual o endereço que se aplica:

| `recipient_source` | De onde vem `recipient` |
| - | - |
| `email_verification` | O endereço que a pessoa verificou no fluxo |
| `contact_details` | O endereço indicado em `contact_details` quando a sessão foi criada |
| `request` | O `email_address` que indicou |
| `""` (vazio) | Não há nenhum endereço conhecido: `recipient` e `preview_token` ficam vazios e não é possível enviar e-mail |

## Se o e-mail é enviado ou não

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

| `not_sent_reason` | O que significa |
| - | - |
| `no_user_action` | Todos os passos selecionados são executados sem a pessoa (por exemplo, AML ou Validação de base de dados), pelo que o reenvio termina por si só e nenhum e-mail é enviado. `requires_user_action` também é `false`. |
| `no_recipient` | Não há nenhum endereço conhecido para a pessoa e não indicou nenhum endereço de e-mail. |
| `sandbox` | A sessão é uma sessão de sandbox e o destinatário não aderiu ao envio de e-mails em sandbox, pelo que o e-mail é apenas simulado. Veja [adesão ao envio de e-mails em sandbox](https://docs.didit.me/pt/integration/sandbox-testing.md#códigos-otp-e-adesão-ao-envio-de-e-mails). |

## Confirmar o reenvio

Chame [Atualizar estado da sessão](https://docs.didit.me/pt/sessions-api/update-status.md) com estes campos:

| Campo de Atualizar estado da sessão | Valor |
| - | - |
| `new_status` | `Resubmitted` |
| `nodes_to_resubmit` | A mesma seleção que pré-visualizou (deixe de fora se a deixou de fora aqui) |
| `send_email` | `true` |
| `email_address` | `recipient` da pré-visualização |
| `email_language` | O mesmo `email_language` que enviou para a pré-visualização |
| `email_preview_token` | `preview_token` da pré-visualização |

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

## Reenvios repetidos apenas pelo backend

Quando todos os passos que vão ser reenviados são executados sem a pessoa (AML, Validação de base de dados ou Análise de IP), uma sessão só pode ser reenviada em nome dela uma vez a cada 30 segundos.
Dentro dessa janela, a pré-visualização devolve `429`, tal como aconteceria em Atualizar estado da sessão, com o tempo de espera no cabeçalho `Retry-After`.

## Relacionados

* [Atualizar estado da sessão](https://docs.didit.me/pt/sessions-api/update-status.md): confirmar o reenvio.
* [Pré-visualizar e-mail de decisão](https://docs.didit.me/pt/sessions-api/preview-decision-email.md): pré-visualizar, em vez disso, o e-mail de aprovação ou recusa.
* [Marca branca](https://docs.didit.me/pt/console/white-label.md): o remetente e a identidade visual que o e-mail usa.


## OpenAPI

````yaml pt/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 ressubmissão
      description: >-
        Gere o e-mail que acompanharia um reenvio de KYC ou KYB sem alterar a
        sessão, redefinir verificações, prolongar a respetiva validade, executar
        verificações ou enviar e-mails. Requer o privilégio `write:sessions`
        (uma chave de API com âmbito restrito necessita de acesso de escrita a
        decisões) e uma sessão no estado `Approved`, `Declined`, `In Review`,
        `Kyc Expired` ou `Abandoned`. O servidor valida os passos do fluxo
        selecionados e gera o respetivo modelo traduzido fixo com o remetente de
        marca branca verificado e a imagem de marca aplicáveis. O pedido não
        pode definir um assunto, corpo da mensagem ou URL de ação.


        `email_address` é opcional. Sem este, o e-mail segue para o próprio
        endereço da pessoa: aquele que foi verificado num passo de verificação
        de e-mail do fluxo ou, caso contrário, o indicado em `contact_details`
        quando a sessão foi criada. Um endereço que forneça prevalece
        (`recipient_source: request`). Quando nenhum endereço é conhecido e não
        fornecer nenhum, `recipient` e `preview_token` são strings vazias e
        nenhum e-mail pode ser enviado.


        A resposta inclui o destinatário e a respetiva origem, o remetente, o
        assunto, o HTML, o idioma, os passos resolvidos, se a confirmação
        enviará o e-mail (`will_be_sent`, `not_sent_reason`) e um
        `preview_token` assinado. `requires_user_action` é `false` quando todos
        os passos selecionados são executados sem a pessoa: o reenvio termina
        então por si próprio 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. Após a sua revisão, chame [Update Session
        Status](/pt/sessions-api/update-status) com `new_status: Resubmitted`,
        os mesmos `nodes_to_resubmit` e `email_language` que pré-visualizou,
        `send_email: true`, `email_address` definido como `recipient` e
        `email_preview_token` definido como `preview_token`. O recibo expira
        após 15 minutos. Quando um recibo é fornecido, alterações nos dados de
        entrada, no conteúdo da mensagem, no remetente ou no estado da sessão
        devolvem `409` antes de qualquer mutação ou envio. As integrações
        existentes podem omitir o recibo. Gere novamente a pré-visualização após
        um conflito. Trate a resposta como conteúdo de verificação sensível; as
        respostas utilizam `Cache-Control: no-store`. Renderize o HTML numa
        frame em 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 atualizar. Aceita IDs de sessão de
            utilizador (KYC) e de empresa (KYB) — o serviço resolve o ID em
            ambos os 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: >-
                    Passos a pré-visualizar, utilizando a mesma validação,
                    seleção e ordenação do fluxo de um reenvio. Omita para
                    selecionar automaticamente tentativas registadas que
                    necessitem de reenvio.
                  items:
                    type: object
                    required:
                      - node_id
                      - feature
                    properties:
                      node_id:
                        type: string
                        description: >-
                          Identificador do nó tal como aparece na definição do
                          fluxo da sessão (por exemplo `feature_ocr`,
                          `feature_liveness`).
                        example: feature_ocr
                      feature:
                        type: string
                        description: >-
                          Tipo de funcionalidade do nó. Os aliases
                          `ID_VERIFICATION`, `POA`, `PHONE` e `EMAIL` são
                          normalizados do lado do servidor para `OCR`,
                          `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION` e
                          `EMAIL_VERIFICATION`. `KYB_REGISTRY`, `KYB_KEY_PEOPLE`
                          e `KYB` passam na validação do esquema, mas são sempre
                          rejeitados com a regra de negócio `400` mostrada 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. Envie o e-mail para este endereço em vez do da
                    própria pessoa. Sem este campo, o destinatário é o endereço
                    que a pessoa verificou no fluxo ou, na sua ausência, o
                    fornecido 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 cadeia de
                    caracteres ao nível do esquema; códigos não suportados
                    revertem silenciosamente para inglês (`en`).
                  default: en
                  example: en
            examples:
              Person's Own Address:
                summary: >-
                  Pré-visualizar uma ressubmissão de comprovativo de morada para
                  a própria morada 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 indicado
                value:
                  nodes_to_resubmit:
                    - node_id: feature_ocr
                      feature: OCR
                  email_address: person@example.com
                  email_language: en
      responses:
        '200':
          description: >-
            Apenas pré-visualização. A sessão permanece inalterada 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 é enviado. Uma string
                      vazia quando não se conhece qualquer endereço para a
                      pessoa: nesse caso, nenhum e-mail pode ser enviado e
                      `preview_token` fica também vazio. Passe-o como
                      `email_address` quando confirmar.
                    example: person@example.com
                  recipient_source:
                    type: string
                    enum:
                      - email_verification
                      - contact_details
                      - request
                      - ''
                    description: >-
                      De onde provém `recipient`. `request`: o `email_address`
                      que passou. `email_verification`: o endereço que a pessoa
                      verificou num passo de verificação de e-mail do fluxo.
                      `contact_details`: o endereço fornecido em
                      `contact_details` aquando da criação da sessão. Uma string
                      vazia quando não existir 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 apresentação de `sender`.
                    example: Example App
                  sender_email:
                    type: string
                    format: email
                    description: A parte da morada de `sender`.
                    example: no-reply@mail.example.com
                  sender_kind:
                    type: string
                    enum:
                      - customer
                      - didit
                    description: >-
                      `customer`: o e-mail sai a partir do domínio de remetente
                      verificado da sua aplicação (marca branca). `didit`: sai a
                      partir do remetente próprio da 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
                      respetivo logótipo incorporado como data URL. Renderize-o
                      numa frame isolada (sandbox), nunca diretamente no DOM da
                      sua aplicação.
                    example: <!DOCTYPE html><html><body>...</body></html>
                  text:
                    type: string
                    description: >-
                      O texto simples do e-mail, tal como o histórico de
                      Mensagens da pessoa o guarda, para uma pré-visualização
                      compacta (o HTML continua a ser 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 estiver
                      disponível.
                    example: en
                  will_be_sent:
                    type: boolean
                    description: >-
                      Se confirmar a alteração com `send_email: true` envia este
                      e-mail. `false` quando `not_sent_reason` estiver definido.
                    example: true
                  not_sent_reason:
                    type: string
                    nullable: true
                    enum:
                      - no_user_action
                      - no_recipient
                      - sandbox
                      - null
                    description: >-
                      O motivo pelo qual a confirmação não enviaria nenhum
                      e-mail, ou `null` quando será enviado. `no_user_action`:
                      todos os passos selecionados são executados sem a pessoa,
                      pelo que o novo envio é concluído de forma autónoma e
                      nenhum e-mail é enviado. `no_recipient`: nenhum endereço é
                      conhecido para a pessoa e você não transmitiu nenhum.
                      `sandbox`: uma sessão de sandbox cujo destinatário não
                      aceitou a entrega de e-mails em sandbox, pelo que 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ó tal como aparece na definição do
                            fluxo da sessão (por exemplo `feature_ocr`,
                            `feature_liveness`).
                          example: feature_ocr
                        feature:
                          type: string
                          description: >-
                            Tipo de funcionalidade do nó. Os aliases
                            `ID_VERIFICATION`, `POA`, `PHONE` e `EMAIL` são
                            normalizados do lado do servidor para `OCR`,
                            `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION` e
                            `EMAIL_VERIFICATION`. `KYB_REGISTRY`,
                            `KYB_KEY_PEOPLE` e `KYB` passam na validação do
                            esquema, mas são sempre rejeitados com a regra de
                            negócio `400` mostrada 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: >-
                      Se pelo menos uma das verificações selecionadas requer a
                      interação do utilizador. Isto 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 estado da
                      sessão](/pt/sessions-api/update-status). Uma string vazia
                      quando não há destinatário.
                    example: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
              examples:
                Will Be Sent:
                  summary: 'Destinatário predefinido: 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: >-
                    Apenas foram selecionados passos do back-end, pelo que
                    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 de
                verificação e não deve ser guardada em cache.
              schema:
                type: string
                example: no-store
        '400':
          description: >-
            A sessão não está num estado aceite por este endpoint, já se
            encontra no estado `Resubmitted`, os passos selecionados não podem
            ser submetidos novamente ou um campo é inválido.
          content:
            application/json:
              examples:
                Wrong Current Status:
                  summary: A sessão não está num estado aceite 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á se encontra no estado Resubmitted
                  value:
                    - The new status is the same as the current status.
                Nothing To Resubmit:
                  summary: >-
                    A seleção automática não encontrou nenhum passo que
                    necessite de novo envio
                  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 âmbito expirou.
          content:
            application/json:
              examples:
                Expired API Key:
                  summary: Chave de API com âmbito cuja data de validade já passou
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Credenciais em falta, um chamador sem o privilégio `write:sessions`,
            uma chave de API com âmbito sem o acesso de que este endpoint
            necessita, ou um `session_id` que pertence a outra aplicação.
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: x-api-key em falta ou inválido
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: O autor da chamada 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 âmbito 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: >-
            Os passos a submeter novamente são todos exclusivamente de backend
            (AML, DATABASE_VALIDATION, IP_ANALYSIS), e a sessão já foi submetida
            novamente para passos exclusivamente de backend nos últimos 30
            segundos, pelo que o Update Session Status recusaria a nova
            submissão. 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: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, 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á
        incorreta, 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 o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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