Timesheet¶
Timesheet API – gestione timesheet e time log in Zoho People.
- Endpoint coperti:
GET /api/timetracker/gettimesheet – lista timesheet GET /api/timetracker/gettimesheetdetails – dettaglio timesheet POST /api/timetracker/createtimesheet – crea timesheet POST /api/timetracker/modifytimesheet – modifica / invia per approvazione POST /api/timetracker/deletetimesheet – elimina timesheet POST /api/timetracker/approvetimesheet – approva / rifiuta timesheet GET /api/timetracker/gettimelogdetails – dettaglio time log POST /api/timetracker/addtimelog – aggiungi time log POST /api/timetracker/edittimelog – modifica time log POST /api/timetracker/deletetimelog – elimina time log GET /api/timetracker/getpayrollreport – report payroll GET /api/timetracker/gettimetrackersettings – impostazioni generali
Scope richiesto: ZOHOPEOPLE.timetracker.ALL Rate limit: 20–50 req/min a seconda dell’endpoint.
- class zoho_people.api.timesheet.TimesheetAPI(client)[source]¶
Bases:
objectGestione completa di timesheet e time log Zoho People.
Example
>>> # Lista timesheet approvati di aprile >>> sheets = client.timesheet.list( ... user="mario.rossi@azienda.it", ... from_date="01-Apr-2026", ... to_date="30-Apr-2026", ... approval_status="approved", ... )
>>> # Crea un timesheet settimanale >>> result = client.timesheet.create( ... user="mario.rossi@azienda.it", ... name="Settimana 17/2026", ... from_date="20-04-2026", ... to_date="26-04-2026", ... send_for_approval=True, ... )
>>> # Aggiungi ore a un timesheet >>> client.timesheet.add_timelog( ... user="mario.rossi@azienda.it", ... work_date="2026-04-25", ... hours="08:00", ... job_name="Sviluppo SDK", ... billing_status="Billable", ... )
- Parameters:
client (ZohoPeopleClient)
- list(user, from_date=None, to_date=None, approval_status='all', employee_status='users', date_format=None, s_index=0, limit=200)[source]¶
Recupera la lista dei timesheet.
- Parameters:
user (str) – Email, Employee ID, erecno o
"all"per tutti.from_date (str, optional) – Data inizio (nel formato aziendale o in
date_format).to_date (str, optional) – Data fine.
approval_status (str) –
all|draft|pending|approved|rejectedemployee_status (str) –
users|nonusers|usersandnonusers|logindisableds_index (int) – Indice di inizio per la paginazione (default 0).
limit (int) – Numero di record per pagina (max 200).
date_format (str | None)
- Returns:
Lista di timesheet con campi: recordId, timesheetName, status, totalHours, billableHours, fromDate, toDate, …
- Return type:
- create(user, name, from_date, to_date, description=None, billable_status='all', job_id='all', project_id='all', client_id='all', send_for_approval=False, date_format=None)[source]¶
Crea un nuovo timesheet.
- Parameters:
user (str) – Email o Employee ID del dipendente.
name (str) – Nome del timesheet (es.
"Settimana 17/2026").from_date (str) – Data inizio.
to_date (str) – Data fine.
description (str, optional) – Descrizione del timesheet.
billable_status (str) –
all|Billable|Non Billablesend_for_approval (bool) – Se True, invia subito per approvazione.
job_id (str)
project_id (str)
client_id (str)
date_format (str | None)
- Returns:
{"timesheetId": [...], "message": "..."}- Return type:
- modify(timesheet_id, name=None, description=None, send_for_approval=None)[source]¶
Modifica un timesheet esistente o lo invia per approvazione.
Per ri-sottomettere un timesheet rifiutato usare
send_for_approval=True.
- approve(timesheet_id, approval_status='approved', time_logs=None, comments=None, all_levels=False)[source]¶
Approva o rifiuta un timesheet (e opzionalmente i suoi time log).
- Parameters:
timesheet_id (str) – ID del timesheet.
approval_status (str) –
"approved"|"rejected"time_logs (dict, optional) – Dict
{timelog_id: "approved"|"rejected"}per approvazione parziale. Es:{"469505000000272225": "approved", "469505000000272083": "rejected"}comments (str, optional) – Commento per l’approvazione/rifiuto.
all_levels (bool) – Se True, approva a tutti i livelli gerarchici.
- Returns:
{"timesheetId": "...", "message": "..."}- Return type:
- add_timelog(user, work_date, hours, job_id=None, job_name=None, billing_status='Billable', work_item=None, description=None)[source]¶
Aggiunge un time log a un timesheet.
Almeno uno tra
job_idejob_nameè obbligatorio.- Parameters:
user (str) – Email o Employee ID del dipendente.
work_date (str) – Data di lavoro nel formato
YYYY-MM-DD.hours (str) – Ore lavorate nel formato
HH:MM(es."08:00").job_id (str, optional) – ID del job/attività.
job_name (str, optional) – Nome del job/attività (alternativa a job_id).
billing_status (str) –
"Billable"|"Non Billable"work_item (str, optional) – Sottoattività / work item.
description (str, optional) – Descrizione delle ore lavorate.
- Returns:
{"timeLogId": "...", "message": "..."}- Return type:
- edit_timelog(timelog_id, hours=None, work_date=None, billing_status=None, description=None)[source]¶
Modifica un time log esistente.
- get_payroll_report(user, from_date, to_date, date_format=None)[source]¶
Recupera il report payroll (ore ordinarie, straordinari, ferie retribuite).
- get_settings()[source]¶
Recupera le impostazioni generali del time tracker.
- Returns:
Impostazioni: tipo log (ore/inizio-fine/timer), max ore/giorno, …
- Return type: