Criar novo colaborador

Este endpoint permite criar um novo colaborador na empresa com base nos dados fornecidos.

Regras de negócio e validações

Campos obrigatórios

  • account.firstName: Primeiro nome do colaborador.
  • account.email ou account.taxpayerRegistry: Ao menos um identificador (e-mail ou CPF) deve ser informado. Se o taxpayerRegistry não for informado, o email passa a ser obrigatório.

Campos opcionais

Conta (account)

  • account.email: E-mail do colaborador. Obrigatório apenas se taxpayerRegistry não for informado.
  • account.taxpayerRegistry: CPF do colaborador. Formato aceito: 12345678909 ou 123.456.789-09.
  • account.password: Senha de acesso do colaborador.
  • account.lastName: Sobrenome do colaborador.
  • account.mobileNumber: Telefone celular do colaborador. Formato: +5511999999999.

Atributos (attributes)

  • attributes.birthDate: Data de nascimento do colaborador. Formato: YYYY-MM-DD.
  • attributes.admissionDate: Data de admissão do colaborador. Formato: YYYY-MM-DD.
  • attributes.language: Idioma do colaborador. Valores aceitos: pt, en, es.
  • attributes.linkedinUrl: URL do LinkedIn do colaborador. Deve iniciar com https://. Máximo de 255 caracteres.
  • attributes.education: Escolaridade do colaborador. Pode receber os seguintes valores:
    • Doutorado completo
    • Doutorado incompleto
    • Ensino fundamental completo
    • Ensino fundamental incompleto
    • Ensino médio completo
    • Ensino médio incompleto
    • Ensino técnico completo
    • Ensino técnico incompleto
    • Graduação completa
    • Graduação incompleta
    • Mestrado completo
    • Mestrado incompleto
    • Pós graduação/mba completa
    • Pós graduação/mba incompleta
    • Pós-doutorado completo
    • Pós-doutorado incompleto
    • Superior Completo
    • Tecnólogo completo
    • Tecnólogo incompleto
  • attributes.biologicalSex: Sexo biológico do colaborador. Valores aceitos: Feminino, Masculino.
  • attributes.streetAddress: Endereço de rua do colaborador. Máximo de 255 caracteres.
  • attributes.cityAddress: Cidade do colaborador. Máximo de 255 caracteres.
  • attributes.stateAddress: Estado (UF) do colaborador. Máximo de 255 caracteres.
  • attributes.zipCodeAddress: CEP do colaborador. Máximo de 9 caracteres.
  • attributes.neighborhoodAddress: Bairro do colaborador. Máximo de 255 caracteres.

Soluções (solutions)

  • solutions.recruitmentAndSelection: Colaborador tem acesso à solução de Recrutamento e Seleção (true/false).
  • solutions.admission: Colaborador tem acesso à solução de Admissão (true/false).
  • solutions.training: Colaborador tem acesso à solução de Treinamento (true/false).
  • solutions.engagement: Colaborador tem acesso à solução de Engajamento (true/false).
  • solutions.performance: Colaborador tem acesso à solução de Performance (true/false).
  • solutions.admin: Colaborador tem acesso ao ecossistema administrativo (true/false).

Vínculo com a empresa

O colaborador será vinculado à empresa associada ao token de autenticação utilizado na requisição.


Unicidade

  • E-mail único: O email deve ser único em toda a plataforma. Não é possível criar dois colaboradores com o mesmo e-mail.
  • CPF único: O taxpayerRegistry (CPF) deve ser único dentro da empresa.

Exemplo de requisição (cURL)

curl --request POST \
  --url 'https://api.gupy.io/user-management/v1/employees' \
  --header 'Authorization: Bearer bearer_token_value_here' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "account": {
    "email": "[email protected]",
    "taxpayerRegistry": "12345678909",
    "password": "Password123!",
    "firstName": "John",
    "lastName": "Doe",
    "mobileNumber": "+5511999999999"
  },
  "attributes": {
    "birthDate": "1990-01-01",
    "admissionDate": "2020-01-01",
    "language": "pt",
    "linkedinUrl": "https://www.linkedin.com/in/john-doe",
    "education": "Graduação completa",
    "biologicalSex": "Masculino",
    "streetAddress": "Rua das Flores",
    "cityAddress": "São Paulo",
    "stateAddress": "SP",
    "zipCodeAddress": "00000-000",
    "neighborhoodAddress": "Bairro das Flores"
  },
  "solutions": {
    "recruitmentAndSelection": true,
    "admission": false,
    "training": true,
    "engagement": false,
    "performance": false,
    "admin": false
  }
}'

Atenção: Forneça o token de autenticação no cabeçalho Authorization.


Possíveis erros

Identificador não informado

Erro lançado quando nem email nem taxpayerRegistry são informados na conta do colaborador.

{
  "statusCode": 400,
  "timestamp": "2025-05-29T21:00:00.000Z",
  "path": "/v1/employees",
  "method": "POST",
  "title": "BadRequestException",
  "message": "At least one of email or taxpayerRegistry is required"
}

Conta já existente

Erro lançado quando já existe uma conta com o email ou taxpayerRegistry informado vinculada à empresa.

{
  "statusCode": 409,
  "timestamp": "2025-05-29T21:00:00.000Z",
  "path": "/v1/employees",
  "method": "POST",
  "title": "ConflictException",
  "message": "A bond between the company and this account already exists",
  "errors": [
    {
      "code": "EMPLOYEE_BOND_ALREADY_EXISTS",
      "target": "ConflictException",
      "message": "A bond between the company and this account already exists"
    }
  ]
}

Atributo não encontrado

Erro lançado quando um atributo padrão da empresa não é encontrado na base.

{
  "statusCode": 404,
  "timestamp": "2025-05-29T21:00:00.000Z",
  "path": "/v1/employees",
  "method": "POST",
  "title": "NotFoundException",
  "message": "Attribute not found",
  "errors": [
    {
      "code": "ATTRIBUTE_NOT_FOUND",
      "target": "NotFoundException",
      "message": "Attribute not found"
    }
  ]
}

Opção de atributo não encontrada

Erro lançado quando o valor informado para um atributo do tipo dropdown (como education, biologicalSex ou language) não corresponde a nenhuma opção válida.

{
  "statusCode": 404,
  "timestamp": "2025-05-29T21:00:00.000Z",
  "path": "/v1/employees",
  "method": "POST",
  "title": "NotFoundException",
  "message": "Attribute option not found",
  "errors": [
    {
      "code": "ATTRIBUTE_OPTION_NOT_FOUND",
      "target": "NotFoundException",
      "message": "Attribute option not found"
    }
  ]
}