Pular para o conteúdo

Campos personalizados que o tribunal definiu

GET
/custom-field-definitions
curl --request GET \
--url https://api.emmaos.com.br/custom-field-definitions \
--header 'Authorization: Bearer <token>'

Devolve a lista de campos personalizados que o tribunal do token definiu para o cadastro do ato, na ordem do cadastro: chave, rótulo, tipo, se é obrigatório, se está arquivado e, nos campos SELECT, as opções. O painel desenha o formulário com ela.

A lista vem do banco do tribunal (custom_field_definitions), escrita só pela plataforma, e a API a relê em até 5 minutos depois de uma mudança. Tribunal sem campo definido recebe items: []. Nunca aparece a lista de outro tribunal. A resposta não é guardada em cache (Cache-Control: no-store).

O campo arquivado (archived: true) continua na lista: o cadastro não o pede, e POST /notices recusa a chave dele, mas o detalhe de um ato antigo ainda mostra o valor que ele guardou.

O que POST /notices faz com ela

  • O campo definido e não arquivado é conferido (tipo igual ao da definição, valor válido para o tipo, obrigatório presente) e grava o rótulo da definição, e não o que o pedido mandou.
  • Em SELECT, value é o value de uma das opções, e o ato ganha optionLabel, o rótulo daquela opção, carimbado pelo servidor. O optionLabel que o pedido mandar é ignorado.
  • O campo arquivado não é exigido, e a chave dele no pedido é recusada com 400 em customFields.<chave>, antes de gastar protocolo. Uma chave arquivada não volta a ser usada.
  • A chave que nenhuma definição lista continua aceita, como sempre foi: integrações mandam chaves próprias (processoOrigem).
  • Mudar a definição vale só para atos novos: o valor e os rótulos ficam congelados no ato.

As definições do tribunal (lista vazia se não houver)

Media typeapplication/json
object
items
required
Array<object>

A definição de um campo personalizado do tribunal. Vive no banco do tribunal; o valor é que fica no ato (CustomField), congelado.

object
key
required

Chave do campo em customFields. Começa com letra minúscula.

string
/^[a-z][A-Za-z0-9]{0,39}$/
label
required

Rótulo em português, como aparece no cadastro e no detalhe.

string
>= 1 characters <= 80 characters
type
required

Tipo de um campo personalizado do tribunal.

string
Allowed values: TEXT DATE CPF SELECT
required
required

O cadastro recusa o ato sem este campo.

boolean
options

As opções, só em campo SELECT. O ato grava o value; o label é o que a tela mostra.

Array<object>
>= 1 items <= 20 items
object
value
required
string
>= 1 characters <= 80 characters
label
required
string
>= 1 characters <= 80 characters
archived
required

Fora de uso: o cadastro não o pede nem o exige, e POST /notices recusa a chave dele com 400. O detalhe de um ato antigo continua mostrando o valor guardado.

boolean
Example
{
"items": [
{
"key": "contrato",
"label": "Número do contrato",
"type": "TEXT",
"required": true,
"archived": false
},
{
"key": "grauDeUrgencia",
"label": "Grau de urgência",
"type": "SELECT",
"required": false,
"options": [
{
"value": "baixo",
"label": "Baixo"
},
{
"value": "alto",
"label": "Alto"
}
],
"archived": false
}
]
}
Cache-Control
string

Sempre no-store.

Sem header Authorization. Recusado pelo API Gateway antes de chegar à aplicação.

Token inválido, expirado, ou de um emissor que não é tribunal conhecido neste stage. Recusado pelo authorizer.

Erro interno

Media typeapplication/json
object
error
required

Código estável do erro. É por ele que se programa.

string
Allowed values: INVALID_REQUEST INVALID_JSON NOT_FOUND NOT_IMPLEMENTED TIMELINE_TOO_LONG DATABASE_RESUMING INTERNAL_ERROR SEALED_DOCUMENT_MISSING DISPATCH_IN_PROGRESS IDEMPOTENCY_KEY_CONFLICT SEALED_DOCUMENT_TOO_LARGE SOURCE_DOCUMENT_TOO_MANY_PAGES SOURCE_DOCUMENT_UNREADABLE STORAGE_LIMIT_REACHED TENANT_NOT_CONFIGURED
field

Campo que causou a recusa, quando aplicável.

string
message

Texto em português para diagnóstico. Não programe contra ele: pode mudar sem aviso.

string
missing

Só com TENANT_NOT_CONFIGURED: o que falta na configuração do tribunal.

Array<string>
Allowed values: displayName publicPhone whatsappSender
Example
{
"error": "INTERNAL_ERROR"
}