KlockworkKlockworkAPI
Solo

Timer

Solo timer request and response fields.

Base URL https://api.klockwork.org. Send the agency key and X-Klockwork-Talent (or talentId). The call acts as that active talent. /api/public/solo/public returns 404.

Get the open session

GET /api/public/solo/timer/session

Response 200: { session: Session | null }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullyes
status"working" or "break" or "pending" or "completed" or "discarded"yes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
deletedAtstring or nullyes
createdAtstringyes
updatedAtstringyes
breaksarray of objectyes

breaks items:

FieldTypeRequired
idstring (uuid)yes
sessionIdstring (uuid)yes
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestringyes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes

Update the open session

PATCH /api/public/solo/timer/session

Request body:

FieldTypeRequired
summarystringno
tasksstringno
notesstringno

Response 200: { session: Session }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullyes
status"working" or "break" or "pending" or "completed" or "discarded"yes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
deletedAtstring or nullyes
createdAtstringyes
updatedAtstringyes
breaksarray of objectyes

breaks items:

FieldTypeRequired
idstring (uuid)yes
sessionIdstring (uuid)yes
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestringyes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes

Start a session

POST /api/public/solo/timer/session/start

Request body:

FieldTypeRequired
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullno

Response 201: { session: Session }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullyes
status"working" or "break" or "pending" or "completed" or "discarded"yes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
deletedAtstring or nullyes
createdAtstringyes
updatedAtstringyes
breaksarray of objectyes

breaks items:

FieldTypeRequired
idstring (uuid)yes
sessionIdstring (uuid)yes
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestringyes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes

Save the open session

POST /api/public/solo/timer/session/save

Request body:

FieldTypeRequired
summarystring, min 1yes
tasksstring, default ""no
notesstring, default ""no

Response 200: { session: Session }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullyes
status"working" or "break" or "pending" or "completed" or "discarded"yes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
deletedAtstring or nullyes
createdAtstringyes
updatedAtstringyes
breaksarray of objectyes

breaks items:

FieldTypeRequired
idstring (uuid)yes
sessionIdstring (uuid)yes
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestringyes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes

Discard, resume, or time out

POST /api/public/solo/timer/session/discard

/resume and /timeout use the same empty body. The response session is the resulting open session, or null when the session is gone.

No request body.

Response 200: { session: Session | null }

Start a break

POST /api/public/solo/timer/session/break/start

Request body:

FieldTypeRequired
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestring, default ""no

Response 200: { session: Session }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullyes
status"working" or "break" or "pending" or "completed" or "discarded"yes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
deletedAtstring or nullyes
createdAtstringyes
updatedAtstringyes
breaksarray of objectyes

breaks items:

FieldTypeRequired
idstring (uuid)yes
sessionIdstring (uuid)yes
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestringyes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes

End a break

POST /api/public/solo/timer/session/break/end

No request body.

Response 200: { session: Session }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullyes
status"working" or "break" or "pending" or "completed" or "discarded"yes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
deletedAtstring or nullyes
createdAtstringyes
updatedAtstringyes
breaksarray of objectyes

breaks items:

FieldTypeRequired
idstring (uuid)yes
sessionIdstring (uuid)yes
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestringyes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes

List sessions

GET /api/public/solo/timer/sessions

Query:

FieldTypeRequired
fromstring, min 1yes
tostring, min 1yes
clientIdstring (uuid)no
status"working" or "break" or "pending" or "completed" or "discarded"no
includeDeletedboolean or "0" or "1" or "true" or "false"no

Response 200: { sessions: Session[] }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullyes
status"working" or "break" or "pending" or "completed" or "discarded"yes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
deletedAtstring or nullyes
createdAtstringyes
updatedAtstringyes
breaksarray of objectyes

breaks items:

FieldTypeRequired
idstring (uuid)yes
sessionIdstring (uuid)yes
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestringyes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes

Create a manual session

POST /api/public/solo/timer/sessions

Request body:

FieldTypeRequired
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullno
startedAtstring, min 1yes
endedAtstring, min 1yes
unpaidBreakMinutesnumber, min 0, default 0no
summarystring, min 1yes
tasksstring, default ""no
notesstring, default ""no
billableboolean, default trueno

Response 201: { session: Session }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullyes
status"working" or "break" or "pending" or "completed" or "discarded"yes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
deletedAtstring or nullyes
createdAtstringyes
updatedAtstringyes
breaksarray of objectyes

breaks items:

FieldTypeRequired
idstring (uuid)yes
sessionIdstring (uuid)yes
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestringyes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes

Get a session

GET /api/public/solo/timer/sessions/{id}

Response 200: { session: Session }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullyes
status"working" or "break" or "pending" or "completed" or "discarded"yes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
deletedAtstring or nullyes
createdAtstringyes
updatedAtstringyes
breaksarray of objectyes

breaks items:

FieldTypeRequired
idstring (uuid)yes
sessionIdstring (uuid)yes
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestringyes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes

Update a completed session

PATCH /api/public/solo/timer/sessions/{id}

Request body:

FieldTypeRequired
summarystring, min 1no
tasksstringno
notesstringno
startedAtstring, min 1no
endedAtstring, min 1no
unpaidBreakMinutesnumber, min 0no
reasonstringno

Response 200: { session: Session }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
clientIdstring (uuid)yes
orgClientIdstring (uuid) or nullyes
status"working" or "break" or "pending" or "completed" or "discarded"yes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
deletedAtstring or nullyes
createdAtstringyes
updatedAtstringyes
breaksarray of objectyes

breaks items:

FieldTypeRequired
idstring (uuid)yes
sessionIdstring (uuid)yes
labelstring, min 1yes
plannedMinutesinteger, min 0yes
notestringyes
startedAtstringyes
startedAtMsinteger, min 0yes
endedAtstring or nullyes
endedAtMsinteger, min 0 or nullyes

Delete a completed session

DELETE /api/public/solo/timer/sessions/{id}

Request body:

FieldTypeRequired
reasonstring, min 1yes

Response 200: { ok: true }

List session events

GET /api/public/solo/timer/sessions/{id}/events

Response 200: { events: Event[] }

FieldTypeRequired
idstring (uuid)yes
clerkUserIdstring, min 1yes
sessionIdstring (uuid)yes
clientIdstring (uuid)yes
action"created" or "updated" or "deleted"yes
actorLabelstring, min 1yes
reasonstring or nullyes
beforeobject or nullyes
afterobject or nullyes
createdAtstringyes

before object:

FieldTypeRequired
startedAtstringyes
endedAtstring or nullyes
unpaidBreakMinutesnumber, min 0yes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
billableMsinteger, min 0yes

after object:

FieldTypeRequired
startedAtstringyes
endedAtstring or nullyes
unpaidBreakMinutesnumber, min 0yes
summarystring or nullyes
tasksstring or nullyes
notesstring or nullyes
billableMsinteger, min 0yes

On this page