Toggl Integration

Based on idk/services/connector_toggl.py.

Quick start

from idk.services.connector_toggl import TogglConnector

connector = TogglConnector()  # uses settings.TOGGL_API_KEY and workspace
projects = connector.get_projects()

Required settings: - TOGGL_API_KEY - TOGGL_WORKSPACE_ID - TOGGL_API_REQUEST_PERIOD

Core methods

  • get_projects() -> list[Project]
  • get_members() -> list[TeamMember]
  • get_project_times(project, start_date, end_date) -> list[dict] (local DB)
  • get_project_times_from_toggl(project_toggl_id, start_date, end_date) -> list[TimeEntry]
  • get_tags() -> dict[tag_id -> name]
  • get_dashboard_data() -> Any (proxy to client)

Time entries

  • create_time_entry(api_time_entry: dict) -> TimeEntryInstance (normalize+store)
  • create_time_entry_on_toggl(data: dict) -> TimeEntryInstance | bool
  • delete_time_entry_on_toggl(entry_id: int) -> (json, status)
  • get_time_entry_by_id(entry_id: int) -> dict | None | False
  • get_time_entries_by_task(task) -> list[TimeEntryInstance] (search by #task_id in description)
  • get_toggl_time_entries(..., description=None, task_id=None, grouped=False, page_size=50, ...) -> list[TimeEntry]

Parameters notes: - Dates are datetimes; reports API uses YYYY-MM-DD - description filter accepts #<task_id> convention

See idk/services/connector_toggl.py for details and types.