Conventions

View as Markdown

Base URL, formats, dates and times, and how time is filed under a project.

Base URL and format

https://paysuitett.com/api/v1

Request 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:00 all year.
  • Dates in query parameters are YYYY-MM-DD business days in Trinidad. A week runs Monday to Sunday.
  • Durations come back as seconds (active time; paused time isn't counted) and hours to 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).