Skip to main content
O Employee representa o vínculo operacional de um usuário como funcionário de uma Company. Ele depende de uma Membership existente na Organization da Company e referencia essa Membership por membershipId. A Company é a dona do vínculo. O funcionário pode ter um perfil de Customer associado para comprar passagens ou receber créditos concedidos pela própria Company, mas o crédito pertence ao Customer e o vínculo de funcionário continua limitado à Company de origem.

Campos

CampoTipoDescrição
employeeIdUUIDIdentificador único
companyIdUUIDEmpresa dona do vínculo de funcionário
organizationIdUUIDOrganização da Company associada à Membership
membershipIdUUIDMembership que originou o vínculo
userIdUUIDUsuário vinculado à Membership
customerIdUUID?Perfil de cliente/passageiro associado ao funcionário, quando existir
employeeCodeString?Código interno do funcionário na Company
jobTitleString?Cargo informado pela Company
departmentString?Departamento informado pela Company
statusEmployeeStatusStatus do vínculo
activatedAtDateTimeData em que o vínculo ficou ativo
suspendedAtDateTime?Data de suspensão do vínculo
revokedAtDateTime?Data de revogação do vínculo
createdByUUID?Usuário que criou o registro, quando aplicável
createdAtDateTimeData de criação
updatedByUUID?Usuário que fez a última atualização, quando aplicável
updatedAtDateTimeData da última atualização
deletedByUUID?Usuário que removeu o registro, quando aplicável
deletedAtDateTime?Data de remoção lógica

Relacionamentos

  • Relaciona-se com Company por companyId.
  • Relaciona-se com Organization por organizationId.
  • Relaciona-se com Membership por membershipId.
  • Relaciona-se com User por userId.
  • Relaciona-se com Customer por customerId, quando o funcionário também possui perfil de cliente/passageiro.

Regras de negócio

  • Employee só pode ser criado para Membership ACTIVE com organizationId preenchido e pertencente a uma Company.
  • Membership interna de BackOffice e Membership de Cooperative não criam Employee.
  • organizationId deve ser igual ao organizationId da Company informada em companyId.
  • membershipId deve apontar para uma Membership ACTIVE do mesmo userId e da mesma organizationId.
  • membershipId deve ser único em Employee, mantendo relação 1:1 entre Membership e Employee.
  • O par companyId + userId deve ser único para evitar duplicidade do funcionário na mesma Company.
  • O vínculo pertence à Company. O mesmo usuário pode ser funcionário de múltiplas Companies, cada uma com seu próprio Employee.
  • customerId é opcional e deve apontar para um Customer do mesmo userId, quando existir.
  • Employee não deve referenciar Passenger, porque Passenger é snapshot de uma passagem.
  • Quando o vínculo deixa de valer, o registro deve mudar para SUSPENDED ou REVOKED; o histórico não deve ser apagado.
  • Créditos concedidos por regra de funcionário devem validar a mesma companyId do Employee, mas o crédito persistido aponta para o customerId.

Enums

EmployeeStatus

ValorDescrição
ACTIVEFuncionário ativo na Company
SUSPENDEDFuncionário temporariamente suspenso
REVOKEDVínculo encerrado ou revogado pela Company

Example

{
  "employeeId": "0197f760-8a12-7356-92c6-a7444de02d4a",
  "companyId": "0197a801-6a42-79aa-9e56-d3c85148c0fa",
  "organizationId": "0197a801-1690-7590-b3cf-19599b9be3e4",
  "membershipId": "0197a803-39a7-75e7-8cc2-62fb0542e642",
  "userId": "0197a7f5-2a88-7c1e-9b65-1f6d8f3b3a10",
  "customerId": "0197a7f6-4d36-7c0a-a7cb-54fcb33a3148",
  "employeeCode": "EMP-1024",
  "jobTitle": "Atendente",
  "department": "Operação",
  "status": "ACTIVE",
  "activatedAt": "2026-07-04T14:00:00.000Z",
  "suspendedAt": null,
  "revokedAt": null,
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-04T14:00:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-04T14:00:00.000Z",
  "deletedBy": null,
  "deletedAt": null
}