@anpdgovbr/shared-types
Version:
Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)
79 lines • 2.57 kB
TypeScript
import type { UUID } from "../base";
import type { EmailContatoDto } from "./email-contato.dto";
import type { TelefoneContatoDto } from "./telefone-contato.dto";
import type { TipoPessoaEnum } from "../enums/tipo-pessoa.enum";
/**
* Representa um Encarregado pelo tratamento de dados pessoais (Data Protection Officer - DPO).
*
* @remarks
* - Atualizado na versão 0.2.0 para refletir o contrato da API Quarkus de Controladores.
* - Os vínculos com controladores são resolvidos por endpoints específicos da API Quarkus.
* - Um mesmo controlador pode ter múltiplos encarregados, e um encarregado pode servir mais de um controlador.
*
* ## Migração da API NestJS para Quarkus (v0.2.0)
* - IDs agora são UUID (`string`)
* - Campos obrigatórios: `nome`, `tipo`, `cpf`, `externo`, `emails`, `telefones`
* - Contatos passam a ser arrays (`EmailContatoDto[]`, `TelefoneContatoDto[]`)
* - Campos removidos: `controladorId`, `controladorEmpresaExternaId`, `email` e `telefone` singulares
*
* @example
* ```typescript
* const encarregado: EncarregadoDto = {
* nome: "Maria Silva",
* tipo: TipoPessoaEnum.PESSOA_NATURAL,
* cpf: "12345678900",
* externo: false,
* emails: [{ email: "maria@empresa.com.br" }],
* telefones: [{ codigoPais: "+55", telefone: "61999999999" }]
* }
* ```
*
* @since 0.2.0
*/
export interface EncarregadoDto {
/**
* Identificador único do encarregado (UUID v4).
*
* @remarks Campo opcional em criação, obrigatório nas respostas da API.
*/
id?: UUID;
/**
* Nome completo do encarregado de dados pessoais.
*/
nome: string;
/**
* Tipo do encarregado (pessoa natural ou jurídica).
*/
tipo: TipoPessoaEnum;
/**
* CPF do encarregado.
*
* @remarks Obrigatório mesmo quando o encarregado for pessoa jurídica.
*/
cpf: string;
/**
* CNPJ do encarregado quando atuar como pessoa jurídica.
*/
cnpj?: string;
/**
* Conjunto de e-mails de contato oficiais do encarregado.
*/
emails: EmailContatoDto[];
/**
* Conjunto de telefones de contato oficiais do encarregado.
*/
telefones: TelefoneContatoDto[];
/**
* Indica se o encarregado atua como empresa externa (prestador de serviço).
*/
externo: boolean;
/**
* Indicador de atividade (soft delete).
*/
active?: boolean;
/**
* Data de exclusão lógica quando `active` for `false`.
*/
exclusionDate?: Date | string | null;
}
//# sourceMappingURL=encarregado.dto.d.ts.map