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:
| Parametro | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
page | number | Nao | Pagina atual (default: 1) |
limit | number | Nao | Itens por pagina (default: 20, max: 100) |
employmentType | string | Nao | Filtro por tipo: CLT, PJ, INTERN, FREELANCER |
departmentId | string | Nao | Filtro 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:
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
companyUserId | string | Sim | ID do usuario da empresa |
employmentType | string | Sim | Tipo de vinculo: CLT, PJ, INTERN, FREELANCER |
role | string | Nao | Cargo ou funcao |
department | string | Nao | Departamento |
salary | number | Nao | Salario mensal |
hourlyRate | number | Nao | Valor hora interna |
startDate | string | Nao | Data 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):
| Campo | Tipo | Descricao |
|---|---|---|
employmentType | string | Novo tipo de vinculo |
role | string | Novo cargo |
department | string | Novo departamento |
salary | number | Novo salario |
hourlyRate | number | Novo 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:
| Parametro | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
page | number | Nao | Pagina atual (default: 1) |
limit | number | Nao | Itens por pagina (default: 20, max: 100) |
timesheetPeriodId | string | Nao | Filtro por periodo de timesheet |
companyUserId | string | Nao | Filtro por colaborador |
projectId | string | Nao | Filtro 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:
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
timesheetPeriodId | string | Sim | ID do periodo de timesheet |
projectId | string | Sim | ID do projeto |
projectTaskId | string | Nao | ID da tarefa do projeto |
date | string | Sim | Data do apontamento (ISO 8601) |
duration | number | Sim | Duracao em minutos |
description | string | Nao | Descricao 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"
}
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:
| Parametro | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
page | number | Nao | Pagina atual (default: 1) |
limit | number | Nao | Itens por pagina (default: 20, max: 100) |
status | string | Nao | Filtro 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:
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
title | string | Sim | Titulo do periodo (max: 255) |
startDate | string | Sim | Data de inicio do periodo (ISO 8601) |
endDate | string | Sim | Data 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"
}
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)
| Valor | Descricao |
|---|---|
CLT | Regime CLT |
PJ | Pessoa juridica |
INTERN | Estagiario |
FREELANCER | Freelancer / Autonomo |
status (Periodo de Timesheet)
| Valor | Descricao |
|---|---|
OPEN | Aberto para lancamentos |
SUBMITTED | Submetido para aprovacao |
APPROVED | Aprovado |
REJECTED | Rejeitado |
CLOSED | Encerrado |