Time Entries (Field Time)
The Field Time REST API exposes a clean, versioned surface for reading and writing time entries.
It supports fetching a single entry, searching with filter criteria, and upserting (combined add or
update). All endpoints live under /api/ft/public/v1/ and are protected by OAuth bearer
tokens.
/api/ft/public/v1/
Authentication
Every /api/ft/public/ endpoint requires a valid bearer token. The controller validates
the token's jpt (principal-type) claim and the caller's API license on every request.
See Authentication to obtain a token, then send it as:
Authorization: Bearer <access_token>Get a time entry
/api/ft/public/v1/time-entries/{entryId}
Retrieve a single time entry by its ID. Returns 200 OK with the
timeEntry object, or 404 Not Found when the entry does not exist or is not
visible to the caller.
GET /api/ft/public/v1/time-entries/4821Search time entries
/api/ft/public/v1/time-entries/search
Search accepts its filter criteria as a JSON body — for example a user and a date range. Pagination
is supplied with the page and pageSize query parameters.
POST /api/ft/public/v1/time-entries/search?page=1&pageSize=50{
"userId": "JSMITH",
"fromDate": "2026-06-01",
"toDate": "2026-06-07"
}| Field | Description |
|---|---|
userId | Filter entries belonging to a specific user. |
fromDate | Start of the date range (inclusive). |
toDate | End of the date range (inclusive). |
Upsert a time entry
/api/ft/public/v1/time-entries
A single upsert endpoint handles both creating and updating a time entry. Send the entry in the request body; the service adds a new entry or updates the matching existing one.
{
"userId": "JSMITH",
"date": "2026-06-05",
"jobNumber": "J-1001",
"hours": 8.0
}This endpoint covers the get and upsert capabilities only. There is no plain unfiltered listing — use search to retrieve sets of entries.
Errors
Errors are returned as RFC 7807 problem detail documents. See REST API Overview → Error responses for the common status codes and shape.