> ## Documentation Index
> Fetch the complete documentation index at: https://developers.tarefy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cria dados de RH de um usuário

> Requer autenticação Bearer e pelo menos uma das permissões 18 ou 19, conforme as regras de autorização da conta. A conta é obtida da autenticação; não envie account_id.

Cria o cadastro; se já existir, atualiza-o. Opera sobre um usuário existente e ativo, com vínculo ativo na conta autenticada. Não cria um usuário. Campos omitidos preservam valores existentes. Nome, email, WhatsApp, LinkedIn e nascimento alteram o perfil global do usuário; os dados de RH pertencem à conta. Cargo altera o vínculo com a conta. empresa, salario e regime_trabalho são aceitos no DTO, mas não são gravados por estas operações. Após salvar, consulte GET para obter o perfil consolidado e os campos descriptografados; a resposta de escrita contém o registro de RH e pode conter valores criptografados. Não há garantia de atomicidade entre as atualizações de perfil, cargo e RH.

Veja o [guia de dados pessoais](/guides/dados-pessoais).



## OpenAPI

````yaml /api-reference/pessoas.yaml post /v2/employee-hr-data
openapi: 3.0.0
info:
  title: Tarefy API
  description: >-
    Tarefy REST API — task management, culture and performance platform.


    Endpoints are versioned at `/v2/...`. Authentication via Bearer JWT in the
    `Authorization` header.


    To get started, see the [authentication guide](/authentication) and the
    [quickstart](/quickstart).
  version: 2.0.0
  contact:
    name: Tarefy Support
    email: suporte@tarefy.com
    url: https://tarefy.com
  license:
    name: Proprietary
    url: https://tarefy.com
servers:
  - url: https://app.tarefy.com/nodeapi
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Employee HR Data
    description: >-
      Cadastro de dados pessoais e de RH dos colaboradores. Consulte o [guia de
      integração](/guides/dados-pessoais).
  - name: Performance Evaluations
    description: Performance evaluations (90°, 180°, 360°)
  - name: Feedback
    description: Structured feedbacks
  - name: PDI
    description: Individual Development Plan
  - name: Competences
    description: Competency catalog
  - name: Competence Groups
    description: Competency grouping
  - name: NPS
    description: Internal Net Promoter Score
paths:
  /v2/employee-hr-data:
    post:
      tags:
        - Employee HR Data
      summary: Cria dados de RH de um usuário
      description: >-
        Requer autenticação Bearer e pelo menos uma das permissões 18 ou 19,
        conforme as regras de autorização da conta. A conta é obtida da
        autenticação; não envie account_id.


        Cria o cadastro; se já existir, atualiza-o. Opera sobre um usuário
        existente e ativo, com vínculo ativo na conta autenticada. Não cria um
        usuário. Campos omitidos preservam valores existentes. Nome, email,
        WhatsApp, LinkedIn e nascimento alteram o perfil global do usuário; os
        dados de RH pertencem à conta. Cargo altera o vínculo com a conta.
        empresa, salario e regime_trabalho são aceitos no DTO, mas não são
        gravados por estas operações. Após salvar, consulte GET para obter o
        perfil consolidado e os campos descriptografados; a resposta de escrita
        contém o registro de RH e pode conter valores criptografados. Não há
        garantia de atomicidade entre as atualizações de perfil, cargo e RH.


        Veja o [guia de dados pessoais](/guides/dados-pessoais).
      operationId: createEmployeeHrData
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/EmployeeHrDataInput'
                - type: object
                  required:
                    - user_id
                  properties:
                    user_id:
                      type: integer
                      description: ID do usuário existente (não é o ID do registro de RH).
                      example: 2807
            example:
              user_id: 2807
              primeiro_nome: Ana
              ultimo_nome: Exemplo
              whatsapp: '+5511999999999'
              data_nascimento: '1995-05-15'
              endereco_completo: Rua Exemplo
              numero: '100'
              cidade: São Paulo
              estado: SP
              cep: '01001000'
              data_admissao: '2026-09-01'
              tipo_contrato: CLT
              carga_horaria_semanal: 40
              vale_transporte: true
      responses:
        '201':
          description: >-
            Registro de RH salvo. Faça GET para obter os valores legíveis e os
            dados consolidados.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmployeeHrDataWriteResult'
        '400':
          description: >-
            Parâmetro, payload ou arquivo inválido; conta ausente; ou usuário
            sem vínculo ativo em operações de escrita.
        '401':
          description: Autenticação ausente ou inválida.
        '403':
          description: Acesso não autorizado para a operação.
        '500':
          description: >-
            Falha interna. A resposta pública não expõe detalhes internos nem
            dados pessoais.
      security:
        - bearerAuth: []
components:
  schemas:
    EmployeeHrDataInput:
      type: object
      description: >-
        Todos os campos são opcionais. Omita campos que deseja preservar. Não há
        uma regra única de limpeza por null ou string vazia para todos os
        campos.
      properties:
        primeiro_nome:
          type: string
          description: Primeiro nome do colaborador.
        ultimo_nome:
          type: string
          description: Sobrenome(s) do colaborador.
        nome_registro:
          type: string
          description: Nome de registro/documentos.
        whatsapp:
          type: string
          description: >-
            Telefone internacional com código do país, preferencialmente E.164,
            como +5511999999999. Máscaras são removidas e o número é validado.
        email:
          type: string
          description: >-
            Email de acesso. É normalizado para minúsculas e não pode estar
            vazio nem pertencer a outro usuário.
        cargo:
          type: string
          description: >-
            Nome exato de um cargo já cadastrado na conta. Nome inexistente ou
            string vazia remove a associação; não cria um cargo.
        linkedin:
          type: string
          description: Endereço do perfil no LinkedIn.
        endereco_completo:
          type: string
          description: Logradouro/endereço completo.
        cidade:
          type: string
          description: Cidade.
        estado:
          type: string
          description: UF; convertida para maiúsculas e limitada a 2 caracteres.
        cep:
          type: string
          description: >-
            CEP como texto. Máscaras são removidas e apenas os primeiros 8
            dígitos são mantidos.
        data_nascimento:
          type: string
          format: date
          description: Data de nascimento. Envie YYYY-MM-DD (por exemplo, 2026-09-17).
        nome_pais:
          type: string
          description: Nome do pai. O nome histórico do campo é nome_pais.
        nome_mae:
          type: string
          description: Nome da mãe.
        email_pessoal:
          type: string
          description: Email pessoal, separado do email de acesso.
        titulo:
          type: string
          description: Número do título de eleitor.
        escolaridade:
          type: string
          description: Escolaridade, como Superior completo.
        estado_civil:
          type: string
          description: Estado civil.
        departamento:
          type: string
          description: Departamento, em texto livre.
        empresa:
          type: string
          description: >-
            Aceito por compatibilidade, mas não altera a empresa. Na consulta, a
            empresa vem da conta autenticada.
        salario:
          type: string
          description: >-
            Aceito por compatibilidade, mas não altera salário. Na consulta, vem
            do histórico salarial e depende da permissão 18.
        cpf:
          type: string
          description: CPF como texto; máscaras são removidas.
        rg:
          type: string
          description: >-
            RG como texto; pontos, traços e espaços são removidos e letras são
            convertidas para maiúsculas.
        rg_orgao_emissor:
          type: string
          description: Órgão emissor do RG.
        rg_data_emissao:
          type: string
          description: Data de emissão do RG. Envie YYYY-MM-DD (por exemplo, 2026-09-17).
          format: date
        ctps:
          type: string
          description: Número da carteira de trabalho; máscaras são removidas.
        ctps_serie:
          type: string
          description: Série da carteira de trabalho; máscaras são removidas.
        pis:
          type: string
          description: Número do PIS; máscaras são removidas.
        cnh:
          type: string
          description: Número da CNH.
        cnh_categoria:
          type: string
          description: Categoria da CNH; limitada a 10 caracteres.
        cnh_validade:
          type: string
          description: Data de validade da CNH. Envie YYYY-MM-DD (por exemplo, 2026-09-17).
          format: date
        banco:
          type: string
          description: >-
            Banco no registro de RH. Não sincroniza automaticamente o cadastro
            separado de dados bancários.
        agencia:
          type: string
          description: Agência bancária como texto, preservando zeros iniciais.
        conta:
          type: string
          description: Conta bancária como texto.
        conta_tipo:
          type: string
          description: Tipo de conta, em texto livre; limitado a 20 caracteres.
        pix:
          type: string
          description: Chave Pix do registro de RH.
        bairro:
          type: string
          description: Bairro.
        numero:
          type: string
          description: Número do endereço como texto; limitado a 20 caracteres.
        complemento:
          type: string
          description: Complemento do endereço.
        contato_emergencia_nome:
          type: string
          description: Nome do contato de emergência.
        contato_emergencia_telefone:
          type: string
          description: Telefone do contato de emergência.
        contato_emergencia_parentesco:
          type: string
          description: Parentesco do contato; limitado a 50 caracteres.
        data_admissao:
          type: string
          description: >-
            Data de admissão no cadastro de RH; tem prioridade sobre a data
            legada na consulta. Envie YYYY-MM-DD (por exemplo, 2026-09-17).
          format: date
        data_demissao:
          type: string
          description: >-
            Data de desligamento. Informar a data não desativa o usuário. Envie
            YYYY-MM-DD (por exemplo, 2026-09-17).
          format: date
        tipo_contrato:
          type: string
          description: Tipo de contrato em texto livre.
        carga_horaria_semanal:
          type: integer
          description: Carga horária semanal em horas inteiras.
        regime_trabalho:
          type: string
          description: >-
            Aceito por compatibilidade, mas não é gravado por estas operações.
            No GET, vem do tipo de contrato do histórico salarial e depende da
            permissão 18.
        data_validade_contrato:
          type: string
          description: >-
            Data de validade do contrato. Envie YYYY-MM-DD (por exemplo,
            2026-09-17).
          format: date
        previsao_formatura:
          type: string
          description: >-
            Data prevista de formatura. Envie YYYY-MM-DD (por exemplo,
            2026-09-17).
          format: date
        nome_faculdade:
          type: string
          description: Nome da instituição de ensino.
        curso:
          type: string
          description: Nome do curso.
        cnpj:
          type: string
          description: CNPJ da pessoa jurídica contratada.
        razao_social:
          type: string
          description: Razão social da pessoa jurídica contratada.
        vale_transporte:
          type: boolean
          description: Recebe vale-transporte.
        vale_alimentacao:
          type: boolean
          description: Recebe vale-alimentação.
        vale_refeicao:
          type: boolean
          description: Recebe vale-refeição.
        plano_saude:
          type: boolean
          description: Possui plano de saúde.
        plano_odontologico:
          type: boolean
          description: Possui plano odontológico.
        auxilio_creche:
          type: boolean
          description: Recebe auxílio-creche.
        outros_beneficios:
          type: string
          description: Descrição de outros benefícios.
        numero_dependentes:
          type: integer
          description: Quantidade de dependentes, como inteiro.
        dependentes_info:
          type: object
          description: >-
            Objeto JSON com informações de dependentes. Não enviar um array na
            raiz.
          additionalProperties: true
        documentos_anexos:
          type: object
          description: >-
            Objeto JSON com metadados de documentos. Este campo não recebe
            arquivos binários.
          additionalProperties: true
        observacoes:
          type: string
          description: Observações gerais em texto.
        observacoes_confidenciais:
          type: string
          description: Observações confidenciais do cadastro de RH.
    EmployeeHrDataWriteResult:
      type: object
      description: Registro de RH salvo. Não é o perfil consolidado retornado por GET.
      properties:
        id:
          type: integer
          description: >-
            Identificador do registro, usuário ou conta, conforme o campo.
            Presente quando há registro de RH.
          nullable: true
        user_id:
          type: integer
          description: >-
            Identificador do registro, usuário ou conta, conforme o campo.
            Presente quando há registro de RH.
          nullable: true
        account_id:
          type: integer
          description: >-
            Identificador do registro, usuário ou conta, conforme o campo.
            Presente quando há registro de RH.
          nullable: true
        cpf:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        rg:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        rg_orgao_emissor:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        rg_data_emissao:
          type: string
          description: Data de emissão do RG. Envie YYYY-MM-DD (por exemplo, 2026-09-17).
          format: date-time
          nullable: true
        ctps:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        ctps_serie:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        pis:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        cnh:
          type: string
          description: Número da CNH.
          nullable: true
        cnh_categoria:
          type: string
          description: Categoria da CNH; limitada a 10 caracteres.
          nullable: true
        cnh_validade:
          type: string
          description: Data de validade da CNH. Envie YYYY-MM-DD (por exemplo, 2026-09-17).
          format: date-time
          nullable: true
        banco:
          type: string
          description: >-
            Banco no registro de RH. Não sincroniza automaticamente o cadastro
            separado de dados bancários.
          nullable: true
        agencia:
          type: string
          description: Agência bancária como texto, preservando zeros iniciais.
          nullable: true
        conta:
          type: string
          description: Conta bancária como texto.
          nullable: true
        conta_tipo:
          type: string
          description: Tipo de conta, em texto livre; limitado a 20 caracteres.
          nullable: true
        pix:
          type: string
          description: Chave Pix do registro de RH.
          nullable: true
        endereco_completo:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        cep:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        cidade:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        estado:
          type: string
          description: UF; convertida para maiúsculas e limitada a 2 caracteres.
          nullable: true
        bairro:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        numero:
          type: string
          description: Número do endereço como texto; limitado a 20 caracteres.
          nullable: true
        complemento:
          type: string
          description: >-
            Valor armazenado, que pode estar criptografado. Use GET para leitura
            do campo.
          nullable: true
        contato_emergencia_nome:
          type: string
          description: Nome do contato de emergência.
          nullable: true
        contato_emergencia_telefone:
          type: string
          description: Telefone do contato de emergência.
          nullable: true
        contato_emergencia_parentesco:
          type: string
          description: Parentesco do contato; limitado a 50 caracteres.
          nullable: true
        data_admissao:
          type: string
          description: >-
            Data de admissão no cadastro de RH; tem prioridade sobre a data
            legada na consulta. Envie YYYY-MM-DD (por exemplo, 2026-09-17).
          format: date-time
          nullable: true
        data_demissao:
          type: string
          description: >-
            Data de desligamento. Informar a data não desativa o usuário. Envie
            YYYY-MM-DD (por exemplo, 2026-09-17).
          format: date-time
          nullable: true
        tipo_contrato:
          type: string
          description: Tipo de contrato em texto livre.
          nullable: true
        carga_horaria_semanal:
          type: integer
          description: Carga horária semanal em horas inteiras.
          nullable: true
        regime_trabalho:
          type: string
          description: >-
            Tipo de contrato do histórico salarial, ou null sem permissão
            18/valor disponível.
          nullable: true
        data_validade_contrato:
          type: string
          description: >-
            Data de validade do contrato. Envie YYYY-MM-DD (por exemplo,
            2026-09-17).
          format: date-time
          nullable: true
        previsao_formatura:
          type: string
          description: >-
            Data prevista de formatura. Envie YYYY-MM-DD (por exemplo,
            2026-09-17).
          format: date-time
          nullable: true
        nome_faculdade:
          type: string
          description: Nome da instituição de ensino.
          nullable: true
        curso:
          type: string
          description: Nome do curso.
          nullable: true
        cnpj:
          type: string
          description: CNPJ da pessoa jurídica contratada.
          nullable: true
        razao_social:
          type: string
          description: Razão social da pessoa jurídica contratada.
          nullable: true
        vale_transporte:
          type: boolean
          description: Recebe vale-transporte.
          nullable: true
        vale_alimentacao:
          type: boolean
          description: Recebe vale-alimentação.
          nullable: true
        vale_refeicao:
          type: boolean
          description: Recebe vale-refeição.
          nullable: true
        plano_saude:
          type: boolean
          description: Possui plano de saúde.
          nullable: true
        plano_odontologico:
          type: boolean
          description: Possui plano odontológico.
          nullable: true
        auxilio_creche:
          type: boolean
          description: Recebe auxílio-creche.
          nullable: true
        outros_beneficios:
          type: string
          description: Descrição de outros benefícios.
          nullable: true
        numero_dependentes:
          type: integer
          description: Quantidade de dependentes, como inteiro.
          nullable: true
        dependentes_info:
          type: object
          description: >-
            Objeto JSON com informações de dependentes. Não enviar um array na
            raiz.
          additionalProperties: true
          nullable: true
        documentos_anexos:
          type: object
          description: >-
            Objeto JSON com metadados de documentos. Este campo não recebe
            arquivos binários.
          additionalProperties: true
          nullable: true
        observacoes:
          type: string
          description: >-
            Valor armazenado; pode conter JSON interno e texto criptografado.
            Use GET para observações legíveis.
          nullable: true
        observacoes_confidenciais:
          type: string
          description: Observações confidenciais do cadastro de RH.
          nullable: true
        ativo:
          type: boolean
          nullable: true
        created_at:
          type: string
          format: date-time
          nullable: true
        updated_at:
          type: string
          format: date-time
          nullable: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````