UNPKG

@anpdgovbr/shared-types

Version:

Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)

123 lines 4.08 kB
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