@anpdgovbr/shared-types
Version:
Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)
123 lines • 4.08 kB
TypeScript
import type { UUID } from "../base";
import type { EmailContatoDto } from "./email-contato.dto";
import type { TelefoneContatoDto } from "./telefone-contato.dto";
import type { TipoControlador } from "../enums/tipo-controlador.enum";
import type { SetorEmpresarial } from "../enums/setor-empresarial.enum";
import type { Esfera } from "../enums/esfera.enum";
import type { Poder } from "../enums/poder.enum";
/**
* Representa um Controlador de Dados Pessoais (Requerido) no contexto da ANPD.
*
* Esse tipo é utilizado para trafegar dados entre os microsserviços e APIs,
* correspondendo à entidade persistida no sistema `controladores-api-quarkus`.
*
* ## Migração da API NestJS para Quarkus (v0.2.0):
* - **ID**: Alterado de `number` para `UUID` (string)
* - **Campos obrigatórios**: `nomeEmpresarial`, `tipo`, `site`, `emails`, `telefones`,
* `politicaPrivacidadeUrl`, `setorEmpresarial`, `setorId`, `cnaeId`
* - **Novos campos**: `nomeFantasia`, `setorNome`, `cnaeNome`, arrays de `emails` e `telefones`
* - **Campos removidos**: `email` (singular), `telefone` (singular), `grupoEconomicoId`, `nome`
* - **Novos tipos**: `SetorEmpresarial`, `Esfera`, `Poder`
*
* ## Heranças:
* - Utiliza UUID v4 como identificador principal.
*
* ## Campos relevantes:
* - Pode representar tanto pessoa jurídica quanto natural, conforme o `tipo`.
* - Para `TipoControlador.PESSOA_NATURAL`: `cpf` é obrigatório, `cnpj` deve ser omitido.
* - Para `TipoControlador.PESSOA_JURIDICA`: `cnpj` é obrigatório, `cpf` deve ser omitido.
* - É vinculado a dados de referência como `Setor` e `CNAE` por UUID.
* ## Notas:
* - Externamente, esse tipo corresponde ao "Requerido" no sistema `backlog-dim`.
* - Contatos são armazenados como arrays de `EmailContatoDto` e `TelefoneContatoDto`.
*
* @interface
*/
export interface ControladorDto {
/**
* Identificador único do controlador (UUID v4).
*
* @pattern [a-f0-9-]{36}
* @remarks Campo opcional em criação, obrigatório nas respostas da API.
*/
id?: UUID;
/**
* Razão social ou nome empresarial do controlador.
*/
nomeEmpresarial: string;
/**
* Nome fantasia do controlador, quando aplicável.
*/
nomeFantasia?: string;
/**
* Indica se o controlador é pessoa jurídica ou natural.
*/
tipo: TipoControlador;
/**
* CPF do controlador.
*
* @remarks Obrigatório quando `tipo` for `TipoControlador.PESSOA_NATURAL`.
* Deve ser omitido quando `tipo` for `TipoControlador.PESSOA_JURIDICA`.
*/
cpf?: string;
/**
* CNPJ do controlador.
*
* @remarks Obrigatório quando `tipo` for `TipoControlador.PESSOA_JURIDICA`.
* Deve ser omitido quando `tipo` for `TipoControlador.PESSOA_NATURAL`.
*/
cnpj?: string;
/**
* URL principal do controlador.
*/
site: string;
/**
* Lista de e-mails de contato.
*/
emails: EmailContatoDto[];
/**
* Lista de telefones de contato.
*/
telefones: TelefoneContatoDto[];
/**
* URL da política de privacidade publicada pelo controlador.
*/
politicaPrivacidadeUrl: string;
/**
* Setor empresarial (público/privado).
*/
setorEmpresarial: SetorEmpresarial;
/**
* Esfera federativa (apenas para setor público).
*/
esfera?: Esfera;
/**
* Poder federativo (apenas para setor público).
*/
poder?: Poder;
/**
* Identificador do setor empresarial associado.
*/
setorId: UUID;
/**
* Nome do setor associado (campo auxiliar de leitura).
*/
setorNome?: string;
/**
* Identificador do CNAE associado.
*/
cnaeId: UUID;
/**
* Nome do CNAE associado (campo auxiliar de leitura).
*/
cnaeNome?: string;
/**
* Indicador de atividade do controlador.
*/
active?: boolean;
/**
* Data de exclusão lógica quando `active` for `false`.
*/
exclusionDate?: Date | string | null;
}
//# sourceMappingURL=controlador.dto.d.ts.map