API de Campos
Endpoints para gerenciamento de campos dinâmicos.
globalFieldConfiguration.getAll
Lista todas as configurações globais de campos.
Tipo: Query (GET)
Autenticação: Não requerida
Response
typescript
Array<{
id: string;
fieldKey: string;
fieldName: string;
fieldType: "TEXT" | "TEXTAREA" | "NUMBER" | "DATE" | "SELECT" | "BOOLEAN";
section: string;
required: boolean;
visible: boolean;
sortOrder: number;
isSystem: boolean;
minLength?: number;
maxLength?: number;
min?: number;
max?: number;
pattern?: string;
selectOptions?: string[];
}>globalFieldConfiguration.create
Cria novo campo global.
Tipo: Mutation (POST)
Autenticação: Admin/Super apenas
Input
typescript
{
fieldKey: string;
fieldName: string;
fieldType: "TEXT" | "TEXTAREA" | "NUMBER" | "DATE" | "SELECT" | "BOOLEAN";
section: string;
required?: boolean;
visible?: boolean;
sortOrder?: number;
minLength?: number;
maxLength?: number;
selectOptions?: string[]; // Obrigatório para SELECT
}Validações
- fieldKey único
- selectOptions obrigatório para tipo SELECT
- Admin/Super permissão
globalFieldConfiguration.update
Atualiza campo existente.
Tipo: Mutation (POST)
Autenticação: Admin/Super apenas
Input
typescript
{
id: string;
fieldName?: string;
section?: string;
required?: boolean;
visible?: boolean;
sortOrder?: number;
// ... outras propriedades
}Restrições
- Campos do sistema (isSystem: true) não podem ser editados
- Tipo de campo não pode ser alterado se em uso
- fieldKey não pode ser alterado
globalFieldConfiguration.delete
Deleta campo personalizado.
Tipo: Mutation (POST)
Autenticação: Admin/Super apenas
Input
typescript
{
id: string;
}Validações
- Campo não pode ser de sistema
- Campo não pode estar em uso em documentos
- Retorna erro com contagem se em uso
Erro
json
{
"error": {
"code": "CONFLICT",
"message": "Não é possível remover este campo pois está vinculado a 45 documento(s)"
}
}fieldSettings.getAll
Retorna configurações de campo para usuário específico.
Tipo: Query (GET)
Autenticação: Obrigatória
Input
typescript
{
userId?: string; // Opcional, usa usuário autenticado se não fornecido
}Response
typescript
Array<{
id: string;
userId: string;
fieldConfigId: string;
visible: boolean;
required: boolean;
customLabel?: string;
fieldConfig: {
id: string;
fieldKey: string;
fieldName: string;
fieldType: string;
section: string;
sortOrder: number;
}
}>fieldSettings.updateFieldConfiguration
Atualiza configuração de campo para usuário.
Tipo: Mutation (POST)
Autenticação: Obrigatória
Input
typescript
{
fieldConfigId: string;
visible?: boolean;
required?: boolean;
customLabel?: string;
}fieldSettings.bulkUpdate
Atualização em lote de configurações.
Tipo: Mutation (POST)
Autenticação: Obrigatória
Input
typescript
{
updates: Array<{
fieldConfigId: string;
visible?: boolean;
required?: boolean;
}>
}Tipos de Campo
TEXT
- minLength, maxLength
- pattern (regex)
TEXTAREA
- minLength, maxLength
NUMBER
- min, max
DATE
- Formato ISO 8601 (YYYY-MM-DD)
SELECT
- selectOptions (array de strings, obrigatório)
BOOLEAN
- true/false
Exemplos
Criar Campo de Texto
typescript
await trpc.globalFieldConfiguration.create.mutate({
fieldKey: "numeroProcesso",
fieldName: "Número do Processo",
fieldType: "TEXT",
section: "IDENTIFICATION",
required: false,
visible: true,
sortOrder: 5,
pattern: "^\\d{4}/\\d{4}$"
});Criar Campo Select
typescript
await trpc.globalFieldConfiguration.create.mutate({
fieldKey: "prioridade",
fieldName: "Prioridade",
fieldType: "SELECT",
section: "OTHER",
selectOptions: ["Baixa", "Média", "Alta", "Urgente"]
});Atualizar Visibilidade
typescript
await trpc.fieldSettings.updateFieldConfiguration.mutate({
fieldConfigId: "field-uuid",
visible: false
});