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

# Eliminação em lote de sessões: API Didit

> Elimine sessões KYC por número ou todas de uma vez na Didit. Até 20 devolvem resultado por sessão; seleções maiores correm como tarefa consultável.



Prompt para eliminar sessões em lote
        Copiar o prompt para a área de transferência



      
      

\<pre>

\`Goal: Delete a list of User Verification (KYC) sessions, or every session, for the calling application, and control what happens to each session's face biometric data. KYC only — KYB sessions are not covered here; use DELETE /v3/session/{sessionId}/delete/ for a single KYB or KYC session.

Endpoint: POST https://verification.didit.me/v3/sessions/delete/
Auth header: x-api-key: YOUR_API_KEY
Content-Type: application/json

Request body — provide EXACTLY ONE selector:
\- session_numbers: string[] — UI-visible decimal session numbers ("#1234" style), NOT UUIDs. Each entry must be digits only (regex ^[0-9]+$). minItems: 1.
\- delete_all: true — delete every remaining KYC session for the application. When delete_all is true, session_numbers is ignored.

Narrowing delete_all (optional, only together with delete_all: true):
\- filter_<name> - any filter of GET /v3/sessions/ (see /sessions-api/list-sessions) prefixed with filter_, with the same values: filter_status, filter_workflow_id, filter_date_from, filter_date_to, filter_vendor_data, filter_country, filter_document_type, filter_warning, filter_search and the others. Filters that take several values in GET /v3/sessions/ (status, workflow_id, country, region, document_type, document_name, session_type, warning, organization_name) accept a comma-separated string or an array. The others take one value: an array is joined into one comma-separated value, so several dates, UUIDs or api_service values are refused with 400, and several texts are not matched as alternatives. An empty value is ignored and does not narrow the selection.
\- An unknown filter_* key returns 400 { "filter_<name>": "Unknown filter." } and a value that cannot be read returns 400 keyed by that filter_* key (for example { "filter_date_from": ["Enter a valid date."] }). Nothing is deleted in either case.
\- A deletion job applies the same filters.

Optional retention and instruction fields (same semantics as the single-session endpoint, applied to every matched session):
\- retain_face_embeddings (boolean | null) — true keeps an image-free biometric template anchored to each session's User; false deletes the embedding with the session; omit/null follows the application's face_retention_policy.
\- face_retention_days (integer 1-3650) — required when retaining unless the application sets face_retention_days.
\- face_retention_deadline (ISO 8601 datetime, future) — optional hard expiry.
\- deletion_instruction ("operational_session_delete" default | "privacy_erasure") — privacy_erasure purges every retained template for each session's User and never retains a new one. Cannot be combined with retain_face_embeddings: true (400).
\- instruction_id (string, max 255) — your durable reference for this instruction; recorded on the audit trail and on every retained template.

curl:
curl -X POST 'https://verification.didit.me/v3/sessions/delete/' \
-H "x-api-key: YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"session_numbers": ["1001", "1002", "1003"]}'

Response: the number of matching sessions decides, whether they are selected by session_numbers or with delete_all.

Up to 20 matching sessions: they are deleted in the request. Response 200 (this endpoint no longer returns 204):
\{
"results": [
\{"session_id": "<uuid>", "session_number": 1001, "face_retention_outcome": "deleted", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0},
\{"session_id": "<uuid>", "session_number": 1002, "face_retention_outcome": "retained_with_user", "biometric_template_uuid": "<uuid>", "biometric_template_expires_at": "<ISO 8601 datetime>", "deleted_child_verifications": 0},
\{"session_id": "<uuid>", "session_number": 1003, "face_retention_outcome": "failed_retryable", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0}
]
}
face_retention_outcome per session:
\- deleted: session and face embedding deleted (default).
\- retained_with_user: session deleted; an image-free biometric template stays anchored to the User until biometric_template_expires_at (manage it via /v3/biometric-templates/).
\- none: the session had no face embedding.
\- ineligible_no_vendor_user: retention requested but the session has no linked User; session and embedding deleted.
\- failed_retryable: the group this session was deleted with could not be deleted (a storage service, a biometric store or a monitoring provider was unavailable). That session is NOT deleted and is still in place; re-run the request for it. Other groups in the same request are unaffected.
deleted_child_verifications is always 0 here: this endpoint deletes KYC sessions only.

More than 20 matching sessions: they are deleted in the background. Response 202 with a deletion job:
\{"job_id": "<uuid>", "status": "PENDING", "total": 250, "processed": 0, "outcomes": {"deleted": 0, "none": 0, "retained_with_user": 0, "ineligible_no_vendor_user": 0, "failed_retryable": 0, "already_deleted": 0}, "deleted_child_verifications": 0, "error": null, "created_at": "<datetime>", "completed_at": null}
Poll GET /v3/sessions/delete/{job_id}/ every few seconds until status is COMPLETED or FAILED. The job reports counts per outcome, never which sessions it deleted. A delete_all job deletes only the sessions created before the request. A FAILED job explains why in error; the sessions it had not reached are still in place, so repeat the request to delete them.

Side effects:
\- Each matched session is deleted along with everything it produced, including every verification attempt: its decision, its extracted data, its KYC / Face / AML / Location / POA / Phone / Email records, its reviews and activity log, and all of its stored files.
\- The sessions stop appearing in GET /v3/sessions/ and GET /v3/session/{sessionId}/decision/, and media URLs issued before the call stop resolving.
\- Webhook deliveries still queued for the deleted sessions, and their retries, are dropped. Webhooks already delivered are not affected.
\- Share tokens issued for the sessions are NOT revoked, but there is nothing left for them to import: an import with one returns 400 {"share_token": ["Original session does not exist."]}.
\- Blocklist entries created from the sessions are NOT removed.
\- Credits already consumed by the verifications are NOT refunded.
\- The parent User entities are NOT deleted; use POST /v3/users/delete/ for those (that also purges their retained templates).
\- NO deletion webhook is emitted.
\- Sessions are deleted in groups; a failure in one group does not roll back the others. Numbers that no longer match a live session are skipped and do not appear in results.

Idempotency: re-running with the same session_numbers deletes nothing more (numbers that no longer match a session are skipped). Deletion is permanent and cannot be undone.

Failure modes:
\- 400: validation, nothing deleted:
\{ "session_numbers": ["This field is required unless delete_all is true."] }
\{ "session_numbers": ["All session_numbers must be numeric."] }
\{ "retain_face_embeddings": ["Privacy erasure cannot retain biometric templates."] }
\{ "detail": "A finite biometric-template retention duration is required." }
\{ "filter_reviewer": "Unknown filter." }
\{ "filter_date_from": ["Enter a valid date."] }
\- 409: at least one selected session is part of a finalized regulatory report. Nothing is deleted. The body has code: in_filed_report and reports[] with uuid, report_number, report_type and case_uuid. Delete the reports, then repeat the request.
\- 403: API key invalid or application not allowed. { "detail": "You do not have permission to perform this action." }

Migration note: until this release the endpoint returned 204 with an empty body; it now returns 200 with results[], or 202 with a deletion job when more than 20 sessions match. Existing applications stay on delete_with_session until you explicitly change the policy.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Colar em

## ComportamentoCada sessão correspondente é eliminada exatamente como em [Eliminar sessão](https://docs.didit.me/pt/sessions-api/delete-session.md): a sessão, todas as tentativas de verificação que contém, a respetiva decisão e dados extraídos, os seus registos de funcionalidades e todos os ficheiros armazenados são eliminados, deixa de aparecer em todos os endpoints de leitura, e os URLs de média emitidos anteriormente deixam de ser resolvidos. As entregas de webhook ainda em fila para uma sessão eliminada, bem como as respetivas novas tentativas, são descartadas; os webhooks já entregues não são afetados. A eliminação é permanente e irreversível.Se alguma sessão selecionada fizer parte de um relatório regulamentar finalizado, o pedido inteiro devolve `409` e nada é eliminado. A resposta usa `code: in_filed_report` e indica cada relatório. Elimine cada relatório com [Eliminar relatório](https://docs.didit.me/pt/management-api/regulatory-reports/delete.md) e, em seguida, repita o pedido. Eliminar o relatório não elimina a sessão; a sessão permanece até repetir este pedido.O número de sessões correspondentes determina a forma como o pedido é respondido, quer as selecione com `session_numbers`, quer com `delete_all`:| Sessões correspondentes | Resposta |
| - | - |
| Até 20 | `200 OK` depois de eliminadas, com um resultado por sessão correspondida em `results`. |
| Mais de 20 | `202 Accepted` com uma tarefa de eliminação. As sessões são eliminadas em segundo plano; consulte [Obter tarefa de eliminação de sessão](https://docs.didit.me/pt/management-api/sessions/get-deletion-job.md) até a tarefa terminar. |Um resultado confirma que a sessão foi eliminada, exceto quando o respetivo `face_retention_outcome` é `failed_retryable`: essa sessão **não** foi eliminada e permanece, pelo que deve tratar esse resultado como uma falha a repetir, nunca como confirmação de eliminação.
Os números que não correspondem a uma sessão KYC ativa na sua aplicação são ignorados e não aparecem em `results`.## Restringir `delete_all` com filtrosCom `delete_all: true` pode restringir a seleção com os filtros de [Listar sessões](https://docs.didit.me/pt/sessions-api/list-sessions.md), cada um precedido de `filter_`.
Aceitam os mesmos valores que os parâmetros de consulta.
Um filtro que aceita vários valores (`status`, `workflow_id`, `country`, `region`, `document_type`, `document_name`, `session_type`, `warning`, `organization_name`) aceita uma cadeia separada por vírgulas ou um array:```json theme={null}
{
  "delete_all": true,
  "filter_status": ["Declined"],
  "filter_workflow_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "filter_date_from": "2026-09-01",
  "filter_date_to": "2026-09-30"
}
```- Os filtros só se aplicam em conjunto com `delete_all`; com `session_numbers` são validados, mas não alteram a seleção.
- Todos os outros filtros aceitam um único valor.
  Um array é unido num único valor separado por vírgulas, pelo que várias datas, UUIDs ou valores de `api_service` devolvem `400`, e vários textos de `vendor_data`, `search` ou `screened_full_name` não são comparados como alternativas.
- Um filtro com valor vazio é ignorado e, por isso, não restringe a seleção.
- Uma chave `filter_*` desconhecida devolve `400` `{"filter_reviewer": "Unknown filter."}`, e um valor que não pode ser lido devolve `400` associado a essa chave `filter_*`, como `{"filter_date_from": ["Enter a valid date."]}`.
  Nada é eliminado em nenhum dos casos, pelo que um filtro com erro de escrita nunca alarga a eliminação a todas as sessões.
- Uma tarefa de eliminação aplica os mesmos filtros e, tal como qualquer `delete_all`, abrange apenas as sessões criadas antes do pedido.## Campos de retenção e de instruçãoO endpoint aceita os mesmos campos opcionais do endpoint de sessão individual e aplica-os a todas as sessões correspondentes:| Campo | Tipo | Descrição |
| - | - | - |
| `retain_face_embeddings` | boolean ou null | Substitui o `face_retention_policy` da aplicação para este pedido. |
| `face_retention_days` | inteiro (1-3650) | Duração de retenção finita para os modelos retidos. Obrigatório ao reter, a não ser que a aplicação defina `face_retention_days`. |
| `face_retention_deadline` | datetime (ISO 8601) | Data-limite de expiração rígida, opcional; tem de estar no futuro. |
| `deletion_instruction` | `operational_session_delete` (predefinido) ou `privacy_erasure` | `privacy_erasure` elimina todos os modelos retidos do utilizador de cada sessão antes de eliminar a sessão, e não pode ser combinado com `retain_face_embeddings: true`. |
| `instruction_id` | string (máx. 255) | A sua referência duradoura para esta instrução. Fica registada no registo de auditoria e em cada modelo retido. |Consulte [Eliminar sessão](https://docs.didit.me/pt/sessions-api/delete-session.md#dados-biométricos-faciais-eliminar-ou-conservar) para saber o que um modelo retido contém e o que não contém, como é calculado `expires_at` e o que faz uma instrução de eliminação por privacidade.## Resultados por sessãoPara até 20 sessões correspondentes, `200 OK` devolve um resultado por sessão:```json theme={null}
{
  "results": [
    { "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02", "session_number": 1001, "face_retention_outcome": "deleted", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0 },
    { "session_id": "b8e1d2c3-4f5a-4b6c-8d7e-9f0a1b2c3d4e", "session_number": 1002, "face_retention_outcome": "retained_with_user", "biometric_template_uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b", "biometric_template_expires_at": "2027-10-09T10:15:00Z", "deleted_child_verifications": 0 },
    { "session_id": "7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c", "session_number": 1003, "face_retention_outcome": "ineligible_no_vendor_user", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0 },
    { "session_id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f", "session_number": 1004, "face_retention_outcome": "failed_retryable", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0 }
  ]
}
```Cada resultado inclui os mesmos campos da resposta de [Eliminar sessão](https://docs.didit.me/pt/sessions-api/delete-session.md#resposta). `biometric_template_expires_at` indica quando um modelo retido é eliminado, e `deleted_child_verifications` é sempre `0` neste caso, porque este endpoint elimina apenas sessões KYC.| `face_retention_outcome` | Significado |
| - | - |
| `deleted` | A sessão e o respetivo embedding facial são eliminados. Comportamento predefinido. |
| `retained_with_user` | A sessão é eliminada. Um template biométrico sem imagem fica associado ao utilizador; o seu id é `biometric_template_uuid`. |
| `none` | A sessão não tinha nenhum embedding facial para eliminar ou reter. |
| `ineligible_no_vendor_user` | A retenção foi pedida, mas a sessão não está associada a um utilizador, pelo que não é possível associar um modelo. A sessão e o respetivo embedding são eliminados. |
| `failed_retryable` | O grupo com que esta sessão foi eliminada não pôde ser eliminado, porque um serviço de armazenamento, um armazenamento biométrico ou um prestador de monitorização não estava disponível. Esta sessão **não** foi eliminada e permanece. Repita o pedido para esta sessão; as novas tentativas convergem para um único modelo. |As sessões são eliminadas em grupos. Quando um grupo não pode ser eliminado, cada sessão desse grupo é indicada como `failed_retryable`; os outros grupos não são afetados e continuam eliminados.## Seleções grandes executadas como tarefaQuando mais de 20 sessões correspondem, a resposta é `202 Accepted` com uma tarefa de eliminação em vez de `results`:```json theme={null}
{
  "job_id": "5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b",
  "status": "PENDING",
  "total": 250,
  "processed": 0,
  "outcomes": { "deleted": 0, "none": 0, "retained_with_user": 0, "ineligible_no_vendor_user": 0, "failed_retryable": 0, "already_deleted": 0 },
  "deleted_child_verifications": 0,
  "error": null,
  "created_at": "2026-10-09T10:15:00Z",
  "completed_at": null
}
```Consulte [Obter tarefa de eliminação de sessão](https://docs.didit.me/pt/management-api/sessions/get-deletion-job.md) a cada poucos segundos até `status` ser `COMPLETED` ou `FAILED`.- A tarefa indica quantas sessões resultaram em cada desfecho, mas nunca indica quais sessões eliminou.
- Uma tarefa `delete_all` elimina apenas as sessões criadas antes do seu pedido. As sessões iniciadas enquanto a tarefa está em execução não são eliminadas.
- Os campos de retenção e de instrução do seu pedido aplicam-se a todas as sessões que a tarefa eliminar.
- Se um grupo ainda não puder ser eliminado, a tarefa volta a tentá-lo automaticamente.
- Uma tarefa `FAILED` explica o motivo em `error`. As sessões que ela não chegou a processar continuam intactas: repita o pedido para as eliminar.## Exemplos> [tab] Eliminar por número
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"session_numbers": ["1001", "1002", "1003"]}'
> ```> [tab] Eliminar e reter modelos
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "session_numbers": ["1001", "1002"],
>     "retain_face_embeddings": true,
>     "face_retention_days": 365,
>     "instruction_id": "post-approval-cleanup-2026-08"
>   }'
> ```> [tab] Apagamento por privacidade
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "session_numbers": ["1001"],
>     "deletion_instruction": "privacy_erasure",
>     "instruction_id": "dsar-2026-0142"
>   }'
> ```> [tab] Eliminar tudo e consultar a tarefa
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"delete_all": true}'
>
> # More than 20 sessions matched: the response is 202 with a job_id.
> curl https://verification.didit.me/v3/sessions/delete/JOB_ID/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```## Migração a partir de respostas 204Até esta versão, o endpoint devolvia `204 No Content`. Agora devolve `200 OK` com `results[]`, ou `202 Accepted` com uma tarefa de eliminação quando há mais de 20 sessões correspondentes. Atualize os clientes que validam `204`. O comportamento de eliminação por defeito não mudou: as aplicações existentes continuam com `delete_with_session` até que altere a política explicitamente.## Relacionados- [Eliminar sessão](https://docs.didit.me/pt/sessions-api/delete-session.md)
- [Obter tarefa de eliminação de sessão](https://docs.didit.me/pt/management-api/sessions/get-deletion-job.md)
- [Templates biométricos](https://docs.didit.me/pt/management-api/biometric-templates/overview.md)
- [Conservação de dados](https://docs.didit.me/pt/console/data-retention.md)


## OpenAPI

````yaml pt/openapi-25.json POST /v3/sessions/delete/
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/sessions/delete/:
    post:
      tags:
        - Sessions
      summary: Eliminar sessões de KYC em massa por session_number
      description: >-
        Elimine em massa sessões de Verificação de utilizadores (KYC) pelo seu
        `session_number` numérico, ou todas as sessões de KYC na sua aplicação
        com `delete_all: true`.


        O `session_number` é o contador incremental legível por humanos
        apresentado na lista de sessões da Consola e devolvido como
        `session_number` pelos endpoints de criação de sessão e de decisão;
        **não** é o UUID `session_id`. Para eliminar uma sessão por UUID, ou
        para eliminar uma sessão de Verificação de empresas (KYB), que este
        endpoint nunca afeta, utilize `DELETE /v3/session/{sessionId}/delete/`.


        **São eliminadas até 20 sessões no pedido; mais de 20 são processadas
        como uma tarefa.** O número de sessões correspondentes decide o
        comportamento, quer sejam selecionadas por `session_numbers` quer com
        `delete_all`:

        - Até 20 sessões correspondentes: são eliminadas antes da resposta, que
        é `200` com uma entrada por sessão em `results[]`.

        - Mais de 20: a resposta é `202` com uma tarefa de eliminação, e as
        sessões são eliminadas em segundo plano. Consulte periodicamente `GET
        /v3/sessions/delete/{job_id}/` até que o `status` seja `COMPLETED` ou
        `FAILED`. Uma tarefa comunica contagens por resultado, nunca que sessões
        eliminou. Uma tarefa com `delete_all` elimina apenas as sessões criadas
        antes do pedido; as sessões iniciadas enquanto está em execução não são
        eliminadas.


        Cada sessão eliminada recebe exatamente o mesmo tratamento que no
        endpoint de eliminação de sessão individual: a sessão, todas as
        tentativas de verificação que contenha, a sua decisão e dados extraídos,
        os seus registos de funcionalidades relacionados (verificação de
        identidade, rosto, prova de vida, correspondência facial, entre outros)
        e todos os seus ficheiros armazenados são eliminados, desaparece de
        todos os endpoints de leitura e os URLs de multimédia emitidos
        anteriormente deixam de resolver. As entregas de webhooks que ainda
        estejam em fila para uma sessão eliminada, bem como as respetivas novas
        tentativas, são descartadas; os webhooks já entregues não são afetados.
        As entradas na lista de bloqueio **não** são removidas, os créditos já
        consumidos **não** são reembolsados e as entidades de utilizador
        principais **não** são eliminadas (utilize `POST /v3/users/delete/` para
        essas); nenhum webhook é emitido para a eliminação. A eliminação é
        permanente e irreversível.


        **Semântica de seleção:**

        - Com `delete_all: true`, pode restringir a seleção com os filtros de
        `GET /v3/sessions/`, cada um com o prefixo `filter_` (por exemplo,
        `filter_status`, `filter_workflow_id`, `filter_date_from`). Os filtros
        que aceitam vários valores em List Sessions (`status`, `workflow_id`,
        `country`, `region`, `document_type`, `document_name`, `session_type`,
        `warning`, `organization_name`) aceitam uma cadeia de carateres separada
        por vírgulas ou um array; os outros aceitam um único valor. Um valor
        vazio é ignorado. Os filtros aplicam-se apenas juntamente com
        `delete_all`, e uma tarefa de eliminação aplica os mesmos filtros.

        - Uma chave `filter_*` desconhecida, ou um valor de filtro que não possa
        ser lido, rejeita todo o pedido com `400` antes de qualquer elemento ser
        eliminado, para que um filtro incorretamente introduzido nunca alargue a
        eliminação a todas as sessões.

        - As entradas em `session_numbers` que não correspondam a uma sessão de
        KYC existente na sua aplicação (números desconhecidos, sessões já
        eliminadas ou sessões pertencentes a outra aplicação) são **ignoradas
        silenciosamente**: não aparecem em `results` e não são contabilizadas no
        `total` de uma tarefa.

        - Falhas de validação (uma entrada não numérica, uma lista vazia, a
        ausência de `session_numbers` ou `delete_all`, ou uma conservação de
        modelos que a aplicação não consiga cumprir) rejeitam o **pedido
        inteiro** com `400` e não eliminam nada.

        - As sessões são eliminadas em grupos. Se um grupo não puder ser
        eliminado (por exemplo, devido à indisponibilidade de um serviço de
        armazenamento), todas as sessões desse grupo são reportadas como
        `face_retention_outcome: failed_retryable` e mantêm-se inalteradas; os
        restantes grupos não são afetados. Repita o pedido para essas sessões.
        Uma tarefa tenta novamente esse grupo de forma automática.

        - Não existe um limite máximo documentado para o comprimento da lista; o
        limite partilhado de pedidos de escrita (abaixo) constitui o limite
        prático.


        **Dados biométricos faciais:** os campos opcionais
        `retain_face_embeddings`, `face_retention_days`,
        `face_retention_deadline`, `deletion_instruction` e `instruction_id` têm
        o mesmo significado que em `DELETE /v3/session/{sessionId}/delete/` e
        aplicam-se a todas as sessões correspondentes. Cada resultado comunica o
        seu próprio `face_retention_outcome`.


        **Resposta:** `200 OK` com `results[]` para até 20 sessões
        correspondentes, ou `202 Accepted` com uma tarefa de eliminação para
        quantidades superiores. Todos os resultados confirmam a eliminação,
        exceto `face_retention_outcome: failed_retryable`, que comunica uma
        sessão que NÃO foi eliminada e deve ser tentada novamente. Versões
        anteriores deste endpoint devolviam `204 No Content`; atualize os
        clientes que validam `204`.


        **Idempotência:** repetir o mesmo pedido não elimina mais nada: os
        números que já não correspondam a uma sessão são ignorados.


        **`delete_all: true` (destrutivo):** elimina **todas** as sessões de KYC
        restantes na aplicação; `session_numbers` é ignorado quando este estiver
        definido. Não existe qualquer passo de confirmação nem possibilidade de
        anular.


        **Autenticação:** chave de API no cabeçalho `x-api-key`. Credenciais em
        falta ou inválidas devolvem `403` (`{"detail": "You do not have
        permission to perform this action."}`); esta API nunca devolve `401`.


        **Limite de pedidos:** orçamento de escrita partilhado de 300
        pedidos/min por chave de API em todos os endpoints POST/PATCH/DELETE;
        exceder este limite devolve `429`.


        Este endpoint aceita apenas chaves de API. Os tokens Bearer de
        utilizadores da Business Console são rejeitados com `403` (ao contrário
        da eliminação de sessão individual, que aceita ambos).


        **Relatórios regulamentares submetidos:** se os dados selecionados
        estiverem num relatório regulamentar finalizado, todo o pedido é
        recusado com `409` e nada é eliminado. O corpo utiliza `code:
        in_filed_report` e identifica cada relatório com `uuid`,
        `report_number`, `report_type` e `case_uuid`. Elimine os relatórios e,
        em seguida, repita o pedido.
      operationId: batch_delete_sessions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                session_numbers:
                  type: array
                  description: >-
                    Valores numéricos de `session_number` das sessões de KYC a
                    eliminar, como strings compostas apenas por dígitos (números
                    JSON também são aceites e convertidos). Obrigatório, salvo
                    se `delete_all` for `true`; uma lista vazia devolve `400`.
                    Qualquer entrada com carateres não numéricos rejeita todo o
                    pedido com `400` (exceto se `delete_all` for `true`, caso em
                    que a validação é ignorada e as entradas não são
                    consideradas). Números que não correspondam a uma sessão
                    ativa na sua aplicação são ignorados silenciosamente.
                  items:
                    type: string
                    pattern: ^[0-9]+$
                    example: '1001'
                  minItems: 1
                  example:
                    - '1001'
                    - '1002'
                    - '1003'
                delete_all:
                  type: boolean
                  description: >-
                    Quando `true`, todas as sessões de KYC restantes na
                    aplicação que efetua a chamada são eliminadas e
                    `session_numbers` é ignorado, a menos que restrinja a
                    seleção com chaves `filter_*`. Mais de 20 sessões
                    correspondentes são processadas como uma tarefa de
                    eliminação (`202`) que abrange apenas as sessões criadas
                    antes do pedido. O valor predefinido é `false`.
                    Irreversível; não existe um passo de confirmação.
                  default: false
                  example: false
                retain_face_embeddings:
                  type: boolean
                  nullable: true
                  description: >-
                    Substitui a `face_retention_policy` da aplicação para esta
                    eliminação. `true` mantém um template biométrico facial sem
                    imagem associado ao utilizador da sessão após a sessão ser
                    eliminada; `false` elimina o embedding facial com a sessão;
                    omita ou use `null` para seguir a política da aplicação.
                    Ignorado para sessões KYB e para sessões sem embedding
                    facial.
                  example: true
                face_retention_days:
                  type: integer
                  minimum: 1
                  maximum: 3650
                  description: >-
                    Duração finita de conservação, em dias, para um modelo
                    conservado. Obrigatória quando um modelo é conservado, a
                    menos que a aplicação já defina `face_retention_days`. O
                    `expires_at` do modelo é determinado pelo limite mais cedo
                    entre esta duração, a janela geral de conservação de dados
                    da aplicação e `face_retention_deadline`.
                  example: 365
                face_retention_deadline:
                  type: string
                  format: date-time
                  description: >-
                    Data de expiração definitiva opcional para um modelo retido.
                    Tem de ser no futuro.
                  example: '2027-08-28T00:00:00Z'
                deletion_instruction:
                  type: string
                  enum:
                    - operational_session_delete
                    - privacy_erasure
                  default: operational_session_delete
                  description: >-
                    A classe de instrução que está a fornecer.
                    `operational_session_delete` elimina a sessão e retém um
                    modelo apenas quando a política ou `retain_face_embeddings`
                    o determinar. `privacy_erasure` elimina permanentemente
                    todos os templates biométricos retidos associados ao
                    utilizador da sessão antes de eliminar a sessão, não pode
                    ser substituído pela política da aplicação e não pode ser
                    combinado com `retain_face_embeddings: true` (`400`).
                  example: operational_session_delete
                instruction_id:
                  type: string
                  maxLength: 255
                  description: >-
                    A sua referência duradoura para esta instrução de eliminação
                    (por exemplo, o id de um pedido de eliminação). Registada no
                    registo de auditoria e em qualquer modelo retido. Gerada
                    pela Didit quando omitida.
                  example: dsar-2026-0142
                filter_status:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `status` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_vendor_data:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `vendor_data` de [List
                    Sessions](/pt/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido num
                    único texto separado por vírgulas, pelo que múltiplos
                    valores não são correspondidos como alternativas. Ignorado
                    sem `delete_all`. Um valor vazio é ignorado e não restringe
                    a seleção.
                  type: string
                filter_search:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `search` de [List
                    Sessions](/pt/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido num
                    único texto separado por vírgulas, pelo que múltiplos
                    valores não são correspondidos como alternativas. Ignorado
                    sem `delete_all`. Um valor vazio é ignorado e não restringe
                    a seleção.
                  type: string
                filter_workflow_id:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `workflow_id` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_date_from:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `date_from` de [List
                    Sessions](/pt/sessions-api/list-sessions), com o mesmo
                    valor. Um valor, não uma lista: um array é unido num único
                    valor separado por vírgulas, pelo que vários valores são
                    recusados com `400`. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  type: string
                  format: date
                filter_date_to:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `date_to` de [List
                    Sessions](/pt/sessions-api/list-sessions), com o mesmo
                    valor. Um valor, não uma lista: um array é unido num único
                    valor separado por vírgulas, pelo que vários valores são
                    recusados com `400`. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  type: string
                  format: date
                filter_country:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `country` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Uma cadeia de carateres separada por vírgulas ou um
                    array. Ignorado sem `delete_all`. Um valor vazio é ignorado
                    e não restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_document_type:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `document_type` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Uma cadeia de carateres separada por vírgulas ou um
                    array. Ignorado sem `delete_all`. Um valor vazio é ignorado
                    e não restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_document_name:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `document_name` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Uma cadeia de carateres separada por vírgulas ou um
                    array. Ignorado sem `delete_all`. Um valor vazio é ignorado
                    e não restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_region:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `region` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_didit_internal_id:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `didit_internal_id` de [List
                    Sessions](/pt/sessions-api/list-sessions), com o mesmo
                    valor. Um valor, não uma lista: um array é unido num único
                    valor separado por vírgulas, pelo que vários valores são
                    recusados com `400`. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  type: string
                  format: uuid
                filter_session_type:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `session_type` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_api_service:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `api_service` de [List
                    Sessions](/pt/sessions-api/list-sessions), com o mesmo
                    valor. Um valor, não uma lista: um array é unido num único
                    valor separado por vírgulas, pelo que vários valores são
                    recusados com `400`. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  type: string
                filter_screened_full_name:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `screened_full_name` de [List
                    Sessions](/pt/sessions-api/list-sessions), com o mesmo
                    valor. Um único valor, não uma lista: um array é unido num
                    único texto separado por vírgulas, pelo que múltiplos
                    valores não são correspondidos como alternativas. Ignorado
                    sem `delete_all`. Um valor vazio é ignorado e não restringe
                    a seleção.
                  type: string
                filter_warning:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `warning` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array.
                    Ignorado sem `delete_all`. Um valor vazio é ignorado e não
                    restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_status_initialized_as_in_review:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `status_initialized_as_in_review` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Ignorado sem `delete_all`. Um valor vazio é
                    ignorado e não restringe a seleção.
                  type: boolean
                filter_is_kyc_to_be_reviewed:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `is_kyc_to_be_reviewed` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Ignorado sem `delete_all`. Um valor vazio é
                    ignorado e não restringe a seleção.
                  type: boolean
                filter_euuid:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `euuid` de [List
                    Sessions](/pt/sessions-api/list-sessions), com o mesmo
                    valor. Um valor, não uma lista: um array é unido num único
                    valor separado por vírgulas, pelo que vários valores são
                    recusados com `400`. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  type: string
                  format: uuid
                filter_organization_name:
                  description: >-
                    Restringe um `delete_all` às sessões que correspondam ao
                    filtro `organization_name` de [List
                    Sessions](/pt/sessions-api/list-sessions), com os mesmos
                    valores. Uma string separada por vírgulas ou um array. Com
                    uma chave de API, só pode corresponder ao nome da sua
                    própria organização, pelo que seleciona todas as suas
                    sessões ou nenhuma. Ignorado sem `delete_all`. Um valor
                    vazio é ignorado e não restringe a seleção.
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
            examples:
              Specific sessions:
                summary: Eliminar sessões específicas por número
                value:
                  session_numbers:
                    - '1001'
                    - '1002'
                    - '1003'
              All sessions:
                summary: Eliminar todas as sessões de KYC na aplicação
                value:
                  delete_all: true
              Delete and retain templates:
                summary: >-
                  Eliminar sessões, mas manter templates biométricos sem imagem
                  durante 365 dias
                value:
                  session_numbers:
                    - '1001'
                    - '1002'
                  retain_face_embeddings: true
                  face_retention_days: 365
                  instruction_id: post-approval-cleanup-2026-08
              Privacy erasure:
                summary: >-
                  Eliminar sessões e purgar todos os modelos retidos para os
                  respetivos Utilizadores
                value:
                  session_numbers:
                    - '1001'
                  deletion_instruction: privacy_erasure
                  instruction_id: dsar-2026-0142
              Filtered delete_all:
                summary: >-
                  Eliminar todas as sessões Recusadas de um fluxo criadas em
                  setembro de 2026
                value:
                  delete_all: true
                  filter_status:
                    - Declined
                  filter_workflow_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                  filter_date_from: '2026-09-01'
                  filter_date_to: '2026-09-30'
      responses:
        '200':
          description: >-
            Até 20 sessões corresponderam e foram processadas no pedido. Um
            resultado por sessão correspondente; números que não corresponderam
            a nada (desconhecidos ou já eliminados) são ignorados e não
            aparecem. Um resultado confirma a eliminação, exceto quando
            `face_retention_outcome` for `failed_retryable`: essa sessão NÃO foi
            eliminada e deve ser tentada novamente.
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        session_id:
                          type: string
                          format: uuid
                          description: A sessão eliminada.
                        session_number:
                          type: integer
                          nullable: true
                          description: O número da sessão eliminada.
                        face_retention_outcome:
                          type: string
                          enum:
                            - retained_with_user
                            - deleted
                            - none
                            - ineligible_no_vendor_user
                            - failed_retryable
                          description: >-
                            O que aconteceu aos dados biométricos faciais da
                            sessão. `deleted`: o embedding facial foi eliminado
                            com a sessão (predefinição). `retained_with_user`: a
                            sessão é eliminada e um template biométrico sem
                            imagem permanece associado ao Utilizador; consulte
                            `biometric_template_uuid`. `none`: a sessão não
                            tinha nenhum embedding facial (por exemplo, uma
                            sessão de KYC apenas de documentos sem selfie de
                            prova de vida; as sessões de KYB nunca são
                            selecionadas por este endpoint).
                            `ineligible_no_vendor_user`: a conservação foi
                            solicitada, mas a sessão não tem nenhum Utilizador
                            associado, pelo que o embedding foi eliminado com a
                            sessão. `failed_retryable` (apenas no endpoint de
                            lote): não foi possível eliminar o grupo com o qual
                            esta sessão foi eliminada (um serviço de
                            armazenamento, um armazenamento biométrico ou um
                            fornecedor de monitorização estavam indisponíveis);
                            esta sessão permanece, repita o pedido para a mesma.
                        biometric_template_uuid:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID do template biométrico retido quando
                            `face_retention_outcome` é `retained_with_user`;
                            `null` caso contrário. Faça a sua gestão através de
                            `/v3/biometric-templates/{template_uuid}/`.
                        biometric_template_expires_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Quando o template biométrico retido é eliminado,
                            quando `face_retention_outcome` é
                            `retained_with_user`; `null` quando nenhum template
                            é retido.
                        deleted_child_verifications:
                          type: integer
                          description: >-
                            Sempre `0` neste endpoint, que elimina apenas
                            sessões de KYC. Eliminar uma sessão de Verificação
                            de empresas (KYB) com `DELETE
                            /v3/session/{sessionId}/delete/` comunica as
                            verificações que criou e que foram eliminadas com a
                            mesma.
              examples:
                Mixed outcomes:
                  value:
                    results:
                      - session_id: 4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02
                        session_number: 1001
                        face_retention_outcome: deleted
                        biometric_template_uuid: null
                        biometric_template_expires_at: null
                        deleted_child_verifications: 0
                      - session_id: b8e1d2c3-4f5a-4b6c-8d7e-9f0a1b2c3d4e
                        session_number: 1002
                        face_retention_outcome: retained_with_user
                        biometric_template_uuid: 9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b
                        biometric_template_expires_at: '2027-10-09T10:15:00Z'
                        deleted_child_verifications: 0
                      - session_id: 7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c
                        session_number: 1003
                        face_retention_outcome: ineligible_no_vendor_user
                        biometric_template_uuid: null
                        biometric_template_expires_at: null
                        deleted_child_verifications: 0
                      - session_id: c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f
                        session_number: 1004
                        face_retention_outcome: failed_retryable
                        biometric_template_uuid: null
                        biometric_template_expires_at: null
                        deleted_child_verifications: 0
        '202':
          description: >-
            Mais de 20 sessões corresponderam. São eliminadas em segundo plano;
            consulte `GET /v3/sessions/delete/{job_id}/` até que o `status` seja
            `COMPLETED` ou `FAILED`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionDeletionJob'
              examples:
                Job accepted:
                  value:
                    job_id: 5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b
                    status: PENDING
                    total: 250
                    processed: 0
                    outcomes:
                      deleted: 0
                      none: 0
                      retained_with_user: 0
                      ineligible_no_vendor_user: 0
                      failed_retryable: 0
                      already_deleted: 0
                    deleted_child_verifications: 0
                    error: null
                    created_at: '2026-10-09T10:15:00Z'
                    completed_at: null
        '400':
          description: >-
            Erro de validação — nada foi eliminado. Os valores de erro são
            arrays de strings de mensagem indexados pelo nome do campo.
          content:
            application/json:
              schema:
                type: object
                properties:
                  session_numbers:
                    type: array
                    items:
                      type: string
                additionalProperties:
                  description: >-
                    Outras chaves: uma chave `filter_*` que não seja um filtro
                    de Listar Sessões (`"Unknown filter."`), ou uma chave
                    `filter_*` cujo valor não possa ser lido (com a chave
                    `filter_*` correspondente e uma matriz de mensagens).
              examples:
                Missing selector:
                  summary: Nem session_numbers nem delete_all fornecidos
                  value:
                    session_numbers:
                      - This field is required unless delete_all is true.
                Empty list:
                  summary: session_numbers é um array vazio
                  value:
                    session_numbers:
                      - This list may not be empty.
                Non-numeric entry:
                  summary: >-
                    session_numbers contém uma cadeia que não é composta por
                    dígitos
                  value:
                    session_numbers:
                      - All session_numbers must be numeric.
                Privacy erasure cannot retain:
                  summary: >-
                    deletion_instruction privacy_erasure combinado com
                    retain_face_embeddings true
                  value:
                    retain_face_embeddings:
                      - Privacy erasure cannot retain biometric templates.
                No finite retention duration:
                  summary: >-
                    Conservação solicitada sem face_retention_days no pedido ou
                    na aplicação
                  value:
                    detail: >-
                      A finite biometric-template retention duration is
                      required.
                Unknown filter:
                  summary: Uma chave filter_* que List Sessions não possui
                  value:
                    filter_reviewer: Unknown filter.
                Unreadable filter value:
                  summary: Um valor de filtro que não pode ser lido
                  value:
                    filter_date_from:
                      - Enter a valid date.
        '403':
          description: >-
            Chave de API em falta. Uma chave em falta devolve `403`; uma chave
            incorreta, revogada ou expirada devolve `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid API key:
                  summary: Sem cabeçalho x-api-key ou a chave é inválida
                  value:
                    detail: You do not have permission to perform this action.
        '409':
          description: >-
            Uma sessão selecionada faz parte de um relatório regulamentar
            finalizado. Nada foi eliminado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InFiledReportError'
        '429':
          description: >-
            Limite de pedidos de escrita partilhado excedido (300 pedidos
            POST/PATCH/DELETE por minuto por chave de API). Inspecione o
            cabeçalho `Retry-After` e os cabeçalhos de resposta `X-RateLimit-*`
            antes de tentar novamente.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Rate limited:
                  summary: Orçamento de escrita esgotado
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST \
              https://verification.didit.me/v3/sessions/delete/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "session_numbers": ["1001", "1002", "1003"]
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.batch_delete(
                session_numbers=["1001", "1002", "1003"],
            )
            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.batchDelete({
              session_numbers: ["1001", "1002", "1003"],
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.BatchDelete(ctx, didit.SessionsBatchDeleteParams{\n\tSessionNumbers: didit.Some([]string{\"1001\", \"1002\", \"1003\"}),\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.SessionsBatchDeleteParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().batchDelete(SessionsBatchDeleteParams.builder()
                    .sessionNumbers(List.of("1001", "1002", "1003"))
                    .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->batchDelete([
                'session_numbers' => ['1001', '1002', '1003'],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result = didit.sessions.batch_delete(session_numbers: ["1001",
            "1002", "1003"])

            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.BatchDeleteAsync(new
            SessionsBatchDeleteParams

            {
                SessionNumbers = new string[] { "1001", "1002", "1003" },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionDeletionJob:
      type: object
      description: >-
        Uma eliminação em lote de sessões em execução em segundo plano:
        progresso e contagens por resultado, nunca quais sessões foram
        eliminadas.
      properties:
        job_id:
          type: string
          format: uuid
          description: Faça polling de `GET /v3/sessions/delete/{job_id}/` com este id.
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
          description: >-
            `PENDING`: aceite, ainda não iniciado. `PROCESSING`: a eliminar;
            `processed` e `outcomes` estão a ser atualizados. `COMPLETED`: todas
            as sessões selecionadas foram contabilizadas. `FAILED`: a tarefa
            parou prematuramente; consulte `error`.
        total:
          type: integer
          description: Sessões selecionadas quando a eliminação foi pedida.
        processed:
          type: integer
          description: Sessões que a tarefa concluiu até ao momento.
        outcomes:
          type: object
          description: >-
            Quantas sessões terminaram em cada resultado. Todas as chaves estão
            sempre presentes.
          properties:
            deleted:
              type: integer
              description: Sessões eliminadas juntamente com o seu embedding facial.
            none:
              type: integer
              description: Sessões eliminadas que não tinham embedding facial.
            retained_with_user:
              type: integer
              description: >-
                Sessões eliminadas enquanto um template biométrico sem imagem
                foi retido para o respetivo utilizador, a pedido ou de acordo
                com a política da aplicação.
            ineligible_no_vendor_user:
              type: integer
              description: >-
                Sessões eliminadas, com o seu embedding facial, porque a
                conservação de dados foi solicitada mas não tinham um utilizador
                associado.
            failed_retryable:
              type: integer
              description: >-
                Sessões reportadas como não eliminadas. Uma tarefa tenta
                novamente um grupo que não conseguiu eliminar por si própria em
                vez de o contabilizar aqui.
            already_deleted:
              type: integer
              description: >-
                Sessões selecionadas que já tinham sido eliminadas, por exemplo
                por outro pedido, quando a tarefa as alcançou.
        deleted_child_verifications:
          type: integer
          description: >-
            Verificações criadas pelas verificações de empresas eliminadas,
            eliminadas em conjunto com as mesmas. É sempre `0` para uma tarefa
            iniciada por `POST /v3/sessions/delete/`, que elimina apenas sessões
            de KYC.
        error:
          type: string
          nullable: true
          description: >-
            `null` a menos que `status` seja `FAILED`; nesse caso, o motivo pelo
            qual a eliminação parou. As sessões que a tarefa ainda não tinha
            alcançado permanecem intactas: repita o pedido para as eliminar.
        created_at:
          type: string
          format: date-time
          description: Quando a eliminação foi pedida.
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: Quando o trabalho terminou; `null` enquanto estiver em execução.
    InFiledReportError:
      type: object
      description: >-
        A eliminação foi recusada porque os dados selecionados constam de um
        relatório regulamentar finalizado. Nada é eliminado. Elimine o relatório
        e, em seguida, repita o pedido.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - in_filed_report
          description: >-
            Código de erro estável para uma eliminação bloqueada por um
            relatório regulamentar finalizado.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: >-
            Relatórios que bloqueiam a eliminação de uma pessoa, empresa, caso
            ou sessão.
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/FiledReportTransaction'
          description: >-
            Transações que bloqueiam a eliminação de uma transação, cada uma com
            os relatórios que a listam.
    FiledRegulatoryReport:
      type: object
      description: Um relatório regulamentar finalizado que impede a eliminação pedida.
      required:
        - uuid
        - report_number
        - report_type
        - case_uuid
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID do relatório.
        report_number:
          type: string
          description: Número do relatório apresentado na Consola (por exemplo, SAR-0001).
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
          description: Tipo de relatório regulamentar.
        case_uuid:
          type: string
          format: uuid
          description: Caso ao qual o relatório pertence.
    FiledReportTransaction:
      type: object
      description: >-
        Uma transação que não pode ser eliminada porque um relatório
        regulamentar finalizado a inclui.
      required:
        - uuid
        - transaction_id
        - reports
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID da transação Didit.
        transaction_id:
          type: string
          description: >-
            O identificador de transação fornecido aquando da criação da
            transação.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: Relatórios finalizados que listam esta transação.
  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.