Pular para o conteúdo principal

RH & Timesheet

Gerencie perfis de colaboradores, apontamentos de horas e periodos de timesheet.

Listar Perfis de Colaboradores

GET /external/v1/employee-profiles

Retorna uma lista paginada de perfis de colaboradores.

Query Parameters:

ParametroTipoObrigatorioDescricao
pagenumberNaoPagina atual (default: 1)
limitnumberNaoItens por pagina (default: 20, max: 100)
employmentTypestringNaoFiltro por tipo: CLT, PJ, INTERN, FREELANCER
departmentIdstringNaoFiltro por departamento

Exemplo de requisicao:

curl -X GET "https://api.tesselys.com.br/external/v1/employee-profiles?page=1&limit=10&employmentType=CLT" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"

Resposta (200):

{
"data": [
{
"id": "clx3f7k2m0001ep8xjwvy1q3s",
"companyUserId": "clx1a2b3c4d5e6f7g8h9i0j1",
"userName": "Maria Oliveira",
"employmentType": "CLT",
"role": "Desenvolvedora Senior",
"department": "Engenharia",
"salary": 12500.00,
"hourlyRate": 71.02,
"billingRate": 150.00,
"startDate": "2024-08-01T00:00:00.000Z",
"isActive": true,
"createdAt": "2024-08-01T10:00:00.000Z"
}
],
"meta": {
"total": 35,
"page": 1,
"limit": 10,
"totalPages": 4
}
}

Buscar Perfil de Colaborador por ID

GET /external/v1/employee-profiles/:id

Exemplo de requisicao:

curl -X GET "https://api.tesselys.com.br/external/v1/employee-profiles/clx3f7k2m0001ep8xjwvy1q3s" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"

Resposta (200):

{
"id": "clx3f7k2m0001ep8xjwvy1q3s",
"companyUserId": "clx1a2b3c4d5e6f7g8h9i0j1",
"userName": "Maria Oliveira",
"employmentType": "CLT",
"role": "Desenvolvedora Senior",
"department": "Engenharia",
"salary": 12500.00,
"hourlyRate": 71.02,
"billingRate": 150.00,
"startDate": "2024-08-01T00:00:00.000Z",
"isActive": true,
"createdAt": "2024-08-01T10:00:00.000Z"
}

Criar Perfil de Colaborador

POST /external/v1/employee-profiles

Body:

CampoTipoObrigatorioDescricao
companyUserIdstringSimID do usuario da empresa
employmentTypestringSimTipo de vinculo: CLT, PJ, INTERN, FREELANCER
rolestringNaoCargo ou funcao
departmentstringNaoDepartamento
salarynumberNaoSalario mensal
hourlyRatenumberNaoValor hora interna
startDatestringNaoData de inicio (ISO 8601)

Exemplo de requisicao:

curl -X POST "https://api.tesselys.com.br/external/v1/employee-profiles" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"companyUserId": "clx4g8l3n1002fq9ykxwz2r4t",
"employmentType": "PJ",
"role": "Designer UI/UX",
"department": "Produto",
"hourlyRate": 95.00,
"startDate": "2026-04-01"
}'

Resposta (201):

{
"id": "clx5h9m4o2003gr0zlywb3s5u",
"companyUserId": "clx4g8l3n1002fq9ykxwz2r4t",
"userName": "Rafael Costa",
"employmentType": "PJ",
"role": "Designer UI/UX",
"department": "Produto",
"salary": null,
"hourlyRate": 95.00,
"billingRate": null,
"startDate": "2026-04-01T00:00:00.000Z",
"isActive": true,
"createdAt": "2026-03-26T10:00:00.000Z"
}

Atualizar Perfil de Colaborador

PUT /external/v1/employee-profiles/:id

Atualiza os dados de um perfil de colaborador. Envie apenas os campos que deseja alterar.

Body (campos opcionais):

CampoTipoDescricao
employmentTypestringNovo tipo de vinculo
rolestringNovo cargo
departmentstringNovo departamento
salarynumberNovo salario
hourlyRatenumberNovo valor hora interna

Exemplo de requisicao:

curl -X PUT "https://api.tesselys.com.br/external/v1/employee-profiles/clx5h9m4o2003gr0zlywb3s5u" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"hourlyRate": 110.00,
"role": "Designer UI/UX Senior"
}'

Resposta (200):

{
"id": "clx5h9m4o2003gr0zlywb3s5u",
"companyUserId": "clx4g8l3n1002fq9ykxwz2r4t",
"userName": "Rafael Costa",
"employmentType": "PJ",
"role": "Designer UI/UX Senior",
"department": "Produto",
"salary": null,
"hourlyRate": 110.00,
"billingRate": null,
"startDate": "2026-04-01T00:00:00.000Z",
"isActive": true,
"createdAt": "2026-03-26T10:00:00.000Z"
}

Apontamento de Horas (Timesheet Entries)

Listar Apontamentos de Horas

GET /external/v1/timesheet-entries

Retorna uma lista paginada de apontamentos de horas.

Query Parameters:

ParametroTipoObrigatorioDescricao
pagenumberNaoPagina atual (default: 1)
limitnumberNaoItens por pagina (default: 20, max: 100)
timesheetPeriodIdstringNaoFiltro por periodo de timesheet
companyUserIdstringNaoFiltro por colaborador
projectIdstringNaoFiltro por projeto

Exemplo de requisicao:

curl -X GET "https://api.tesselys.com.br/external/v1/timesheet-entries?timesheetPeriodId=clx6i0n5p3004hs1amzxc4t6v&page=1&limit=10" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"

Resposta (200):

{
"data": [
{
"id": "clx7j1o6q4005it2bnayf5u7w",
"timesheetPeriodId": "clx6i0n5p3004hs1amzxc4t6v",
"companyUserId": "clx1a2b3c4d5e6f7g8h9i0j1",
"projectId": "clx5j1h9g7e3c1a0y8w6u4s2q",
"projectTaskId": "clx8k2p7r5006ju3cobzg6v8x",
"date": "2026-03-25T00:00:00.000Z",
"duration": 480,
"description": "Desenvolvimento do modulo de relatorios financeiros",
"createdAt": "2026-03-25T18:00:00.000Z"
}
],
"meta": {
"total": 124,
"page": 1,
"limit": 10,
"totalPages": 13
}
}

Buscar Apontamento por ID

GET /external/v1/timesheet-entries/:id

Exemplo de requisicao:

curl -X GET "https://api.tesselys.com.br/external/v1/timesheet-entries/clx7j1o6q4005it2bnayf5u7w" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"

Resposta (200):

{
"id": "clx7j1o6q4005it2bnayf5u7w",
"timesheetPeriodId": "clx6i0n5p3004hs1amzxc4t6v",
"companyUserId": "clx1a2b3c4d5e6f7g8h9i0j1",
"projectId": "clx5j1h9g7e3c1a0y8w6u4s2q",
"projectTaskId": "clx8k2p7r5006ju3cobzg6v8x",
"date": "2026-03-25T00:00:00.000Z",
"duration": 480,
"description": "Desenvolvimento do modulo de relatorios financeiros",
"createdAt": "2026-03-25T18:00:00.000Z"
}

Criar Apontamento de Horas

POST /external/v1/timesheet-entries

Body:

CampoTipoObrigatorioDescricao
timesheetPeriodIdstringSimID do periodo de timesheet
projectIdstringSimID do projeto
projectTaskIdstringNaoID da tarefa do projeto
datestringSimData do apontamento (ISO 8601)
durationnumberSimDuracao em minutos
descriptionstringNaoDescricao da atividade realizada

Exemplo de requisicao:

curl -X POST "https://api.tesselys.com.br/external/v1/timesheet-entries" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"timesheetPeriodId": "clx6i0n5p3004hs1amzxc4t6v",
"projectId": "clx5j1h9g7e3c1a0y8w6u4s2q",
"projectTaskId": "clx8k2p7r5006ju3cobzg6v8x",
"date": "2026-03-26",
"duration": 240,
"description": "Revisao de codigo e testes unitarios do modulo de relatorios."
}'

Resposta (201):

{
"id": "clx9l3q8s6007kv4dpczh7w9y",
"timesheetPeriodId": "clx6i0n5p3004hs1amzxc4t6v",
"companyUserId": "clx1a2b3c4d5e6f7g8h9i0j1",
"projectId": "clx5j1h9g7e3c1a0y8w6u4s2q",
"projectTaskId": "clx8k2p7r5006ju3cobzg6v8x",
"date": "2026-03-26T00:00:00.000Z",
"duration": 240,
"description": "Revisao de codigo e testes unitarios do modulo de relatorios.",
"createdAt": "2026-03-26T12:00:00.000Z"
}
Nota

O campo duration e informado em minutos. Exemplo: 480 minutos = 8 horas. O companyUserId e definido automaticamente a partir do usuario autenticado.


Periodos de Timesheet

Listar Periodos de Timesheet

GET /external/v1/timesheet-periods

Retorna uma lista paginada de periodos de timesheet.

Query Parameters:

ParametroTipoObrigatorioDescricao
pagenumberNaoPagina atual (default: 1)
limitnumberNaoItens por pagina (default: 20, max: 100)
statusstringNaoFiltro por status: OPEN, SUBMITTED, APPROVED, REJECTED, CLOSED

Exemplo de requisicao:

curl -X GET "https://api.tesselys.com.br/external/v1/timesheet-periods?page=1&limit=10&status=OPEN" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"

Resposta (200):

{
"data": [
{
"id": "clx6i0n5p3004hs1amzxc4t6v",
"title": "Marco 2026",
"startDate": "2026-03-01T00:00:00.000Z",
"endDate": "2026-03-31T23:59:59.000Z",
"status": "OPEN",
"totalHours": 342.5,
"createdAt": "2026-03-01T00:00:00.000Z"
}
],
"meta": {
"total": 6,
"page": 1,
"limit": 10,
"totalPages": 1
}
}

Buscar Periodo de Timesheet por ID

GET /external/v1/timesheet-periods/:id

Exemplo de requisicao:

curl -X GET "https://api.tesselys.com.br/external/v1/timesheet-periods/clx6i0n5p3004hs1amzxc4t6v" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"

Resposta (200):

{
"id": "clx6i0n5p3004hs1amzxc4t6v",
"title": "Marco 2026",
"startDate": "2026-03-01T00:00:00.000Z",
"endDate": "2026-03-31T23:59:59.000Z",
"status": "OPEN",
"totalHours": 342.5,
"createdAt": "2026-03-01T00:00:00.000Z"
}

Criar Periodo de Timesheet

POST /external/v1/timesheet-periods

Body:

CampoTipoObrigatorioDescricao
titlestringSimTitulo do periodo (max: 255)
startDatestringSimData de inicio do periodo (ISO 8601)
endDatestringSimData de fim do periodo (ISO 8601)

Exemplo de requisicao:

curl -X POST "https://api.tesselys.com.br/external/v1/timesheet-periods" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"title": "Abril 2026",
"startDate": "2026-04-01",
"endDate": "2026-04-30"
}'

Resposta (201):

{
"id": "clx0m4r9t7008lw5eqdai8x0z",
"title": "Abril 2026",
"startDate": "2026-04-01T00:00:00.000Z",
"endDate": "2026-04-30T23:59:59.000Z",
"status": "OPEN",
"totalHours": 0,
"createdAt": "2026-03-26T14:00:00.000Z"
}
Nota

O periodo e criado com status OPEN. O campo totalHours e calculado automaticamente com base nos apontamentos vinculados ao periodo.

Valores de Enum

employmentType (Tipo de Vinculo)

ValorDescricao
CLTRegime CLT
PJPessoa juridica
INTERNEstagiario
FREELANCERFreelancer / Autonomo

status (Periodo de Timesheet)

ValorDescricao
OPENAberto para lancamentos
SUBMITTEDSubmetido para aprovacao
APPROVEDAprovado
REJECTEDRejeitado
CLOSEDEncerrado