Conventions
View as MarkdownBase URL, formats, dates and times, and how time is filed under a project.
Base URL and format
https://paysuitett.com/api/v1Request bodies are JSON objects sent with Content-Type: application/json, and responses are JSON (reports can also be CSV or PDF). Responses are never cached. IDs are UUIDs.
Dates and times
- Times are ISO 8601 with an offset, such as
2026-10-05T09:00:00-04:00. Trinidad and Tobago is-04:00all year. - Dates in query parameters are
YYYY-MM-DDbusiness days in Trinidad. A week runs Monday to Sunday. - Durations come back as
seconds(active time; paused time isn't counted) andhoursto two decimals.
Where time goes
Starting a timer, changing it, adding time and correcting an entry all file the time under a task, given one of these ways. Most callers send a project name and let PaySuiteTT find the task:
task_idstring · uuid- File the time under this task. Takes precedence over the fields below.
project_idstring · uuid- The project, by ID. With `task` (a task name) or, for a project with one task, alone.
projectstring- The project, by its exact name (ignoring case). A name nobody has yet is added on the spot only when `client` is sent too, so a typo doesn't make a project.
clientstring- The client, by name. Only used with `project` to add a new project (and the client, if new).
taskstring- A task name in the project: found, or added if it doesn't exist. Not needed when the project has one task.
{ "project": "Recruiting Metrics Dashboard", "description": "LinkedIn search" }
{ "project": "Website refresh", "client": "Qosmos", "task": "Design" } // adds the project if it's new
{ "task_id": "c0a8012e-0d4b-4e3f-9b1a-7f6e5d4c3b2a" }Retries
Send client_ref, a UUID you choose, when you start a timer or add time. If the same request is sent again with the same client_ref, PaySuiteTT returns the entry it already made instead of adding another, so retries after a timeout are safe.
Limits
There's no rate limit yet. Lists return up to 500 entries by default and 5,000 at most (limit).