Laurel Timers API
The Timers API from Laurel — 11 operation(s) for timers.
The Timers API from Laurel — 11 operation(s) for timers.
openapi: 3.0.0
info:
title: Identity Service Ably Timers API
description: ''
version: '1'
contact: {}
servers: []
security:
- ApiBearerAuth: []
tags:
- name: Timers
paths:
/api/v1/timers:
get:
deprecated: true
operationId: TimerController_findMany_v1
parameters:
- name: date
required: true
in: query
description: the date for which timers will be returned
schema:
format: iso-date
example: '2022-08-12'
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Timer'
summary: ''
tags:
- Timers
post:
deprecated: true
operationId: TimerController_createOne_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTimerDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Timer'
summary: ''
tags:
- Timers
/api/v1/timers/{timerId}:
get:
deprecated: true
operationId: TimerController_findOne_v1
parameters:
- name: timerId
required: true
in: path
description: identifier of the timer
schema:
format: objectid
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Timer'
summary: ''
tags:
- Timers
patch:
deprecated: true
operationId: TimerController_updateOne_v1
parameters:
- name: timerId
required: true
in: path
description: identifier of the timer
schema:
format: objectid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTimerDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Timer'
summary: ''
tags:
- Timers
delete:
deprecated: true
operationId: TimerController_deleteTimerById_v1
parameters:
- name: timerId
required: true
in: path
description: identifier of the timer
schema:
format: objectid
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Timer'
summary: Deletes a user Timer by Id and returns the deleted Timer
tags:
- Timers
/api/v2/timers:
post:
operationId: V2TimerController_startTimer_v2
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/V2StartTimerDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/V2TimerResponseDto'
tags:
- Timers
get:
operationId: V2TimerController_getTimers_v2
parameters: []
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/V2TimerResponseDto'
tags:
- Timers
/api/v2/timers/{timerId}:
patch:
operationId: V2TimerController_updateOne_v2
parameters:
- name: timerId
required: true
in: path
description: the identifier of v2 timer
schema:
format: objectid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTimerRequestDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/V2TimerResponseDto'
tags:
- Timers
/api/v2/timers/{timerId}/stop:
post:
operationId: V2TimerController_stopTimer_v2
parameters:
- name: timerId
required: true
in: path
description: the identifier of v2 timer
schema:
format: objectid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/StopTimerRequestDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/TimerActivity'
tags:
- Timers
/api/v3/timers:
post:
operationId: V3TimerController_initializeTimer_v3
parameters: []
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/V3InitializeAnonymousTimerRequestDto'
- $ref: '#/components/schemas/V3InitializeEntryTimerRequestDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/V3TimerDraftResponseDto'
tags:
- Timers
get:
operationId: V3TimerController_getTimers_v3
parameters:
- name: date
required: true
in: query
schema:
format: iso-date
example: '2022-08-12'
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
items:
oneOf:
- $ref: '#/components/schemas/V3TimerDraftResponseDto'
- $ref: '#/components/schemas/V3RunningTimerResponseDto'
type: array
tags:
- Timers
/api/v3/timers/start:
post:
operationId: V3TimerController_startTimer_v3
parameters: []
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/V3StartTimerWithDateRequestDto'
- $ref: '#/components/schemas/V3StartTimerWithTimerDraftIdRequestDto'
- $ref: '#/components/schemas/V3StartTimerWithEntryIdRequestDto'
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/V3StartTimerSuccessResponseDto'
- $ref: '#/components/schemas/V3StartTimerNotFoundResponseDto'
tags:
- Timers
/api/v3/timers/stop:
post:
operationId: V3TimerController_stopTimer_v3
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/V3StopTimerRequestDto'
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/V3StopTimerSuccessResponseDto'
- $ref: '#/components/schemas/V3StopTimerNotFoundResponseDto'
tags:
- Timers
/api/v3/timers/adjust:
patch:
operationId: V3TimerController_adjustTimer_v3
parameters: []
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/V3AdjustTimerDraftRequestDto'
- $ref: '#/components/schemas/V3AdjustRunningTimerRequestDto'
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/V3TimerDraftResponseDto'
- $ref: '#/components/schemas/V3RunningTimerResponseDto'
tags:
- Timers
/api/v3/timers/running:
get:
operationId: V3TimerController_getRunningTimers_v3
parameters: []
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/V3RunningTimerResponseDto'
tags:
- Timers
/api/v3/timers/{timerId}:
delete:
operationId: V3TimerController_deleteTimer_v3
parameters:
- name: timerId
required: true
in: path
description: the identifier of v3 timer
schema:
format: objectid
type: string
responses:
'200':
description: ''
tags:
- Timers
components:
schemas:
ReleaseSuccessLockedInfo:
type: object
properties:
status:
enum:
- release-success-locked
type: string
releasedAt:
type: string
description: date and time entry was originally released to PMS
example: '2022-08-12T20:44:48Z'
format: iso-date-time
releasedBy:
type: string
description: the identifier of the user who released the entry
format: objectid
lockedAt:
type: string
description: date the entry became locked in the PMS billing system
example: '2022-08-12T20:44:48Z'
format: iso-date-time
nullable: true
lastLockCheckAt:
type: string
description: date lock status was last checked by the Boomi job
example: '2022-08-12T20:44:48Z'
format: iso-date-time
reReleaseFailedMessages:
type: array
description: entry's re-release failed messages (retained from previous release-success state)
minItems: 1
items:
$ref: '#/components/schemas/ReleaseFailedError'
nullable: true
required:
- status
- releasedAt
- releasedBy
- lastLockCheckAt
ReleaseSuccessInfo:
type: object
properties:
status:
enum:
- release-success
type: string
releasedAt:
type: string
description: date and time entry was released
example: '2022-08-12T20:44:48Z'
format: iso-date-time
releasedBy:
type: string
description: the identifier of the user who released the entry
format: objectid
reReleaseFailedMessages:
type: array
description: entry's re-release failed messages
minItems: 1
items:
$ref: '#/components/schemas/ReleaseFailedError'
nullable: true
required:
- status
- releasedAt
- releasedBy
UserInitiativeDto:
type: object
properties:
_id:
type: string
description: initiative's id
format: objectid
billingType:
description: initiative's billing type
enum:
- billable
- non-billable
type: string
callSign:
type: string
description: a short name or abbreviation that identifies this initiative
createdAt:
type: string
description: date and time this initiative was created
example: '2022-08-12T20:44:48Z'
format: iso-date-time
locale:
type: string
description: BCP-47 locale for this initiative (e.g. en-US, fr-CA)
enum:
- da-DK
- de-DE
- en-CA
- en-GB
- en-US
- es-ES
- es-MX
- fi-FI
- fr-CA
- fr-FR
- is-IS
- it-IT
- ko-KR
- nl-NL
- no-NO
- pt-PT
- sv-SE
nullable: true
status:
description: initiative's status
enum:
- active
- inactive
type: string
unitIncrements:
type: number
description: unit of billing increments for this initiative
format: double
updatedAt:
type: string
description: date and time this initiative was last updated
example: '2022-08-12T20:44:48Z'
format: iso-date-time
name:
type: string
description: a name that identifies this initiative for the user
type:
type: string
enum:
- user
props:
nullable: true
type: object
allOf:
- $ref: '#/components/schemas/UserInitiativePropsDto'
required:
- _id
- billingType
- callSign
- createdAt
- status
- unitIncrements
- updatedAt
- name
- type
CodeTypeDigest:
type: object
properties:
_id:
type: string
description: code type's id
format: objectid
externalId:
type: string
description: code type's external id
name:
type: string
description: code type's name
semanticType:
type: string
description: code type's semantic type
enum:
- action
- activity
- location
- phase
- task
nullable: true
orderingSequence:
type: string
description: ordering sequence for UI sorting (alphanumeric)
nullable: true
required:
- _id
- externalId
- name
ExternalSource:
type: object
properties:
sourceSystem:
enum:
- 3e
- workday
type: string
externalId:
type: string
linkedAt:
type: string
example: '2022-08-12T20:44:48Z'
format: iso-date-time
required:
- sourceSystem
- externalId
- linkedAt
V3StopTimerNotFoundResponseDto:
type: object
properties:
result:
type: string
enum:
- not found
stopped:
type: object
additionalProperties: true
nullable: true
othersStopped:
type: array
items:
$ref: '#/components/schemas/V3StoppedTimerInfo'
required:
- result
- stopped
- othersStopped
TimerActivity:
type: object
properties:
_id:
type: string
description: activity's id
format: objectid
customerId:
type: string
description: id of customer who owns this activity
format: objectid
userId:
type: string
description: id of user who owns this activity
format: objectid
creationMethod:
description: the creation method of the activity
enum:
- timer
type: string
initiativeProps:
description: if set, is activity's initiative, otherwise activity is unassigned
nullable: true
oneOf:
- $ref: '#/components/schemas/PmsInitiativePropsDigest'
- $ref: '#/components/schemas/UserInitiativePropsDigest'
isLocked:
type: boolean
description: if true, this activity is locked and cannot be updated
category:
type: string
description: category of this activity, if any
nullable: true
technology:
type: string
description: technology of this activity, if any
nullable: true
source:
type: string
description: source of this activity (e.g. 'macos', 'windows'), if any
nullable: true
mechanism:
type: string
description: mechanism of this activity (e.g. browser used to access web app), if any
nullable: true
title:
type: string
description: activity's title
detail:
type: string
description: activity's detail
startedAt:
type: string
description: date and time this activity started
example: '2022-08-12T20:44:48Z'
format: iso-date-time
stoppedAt:
type: string
description: date and time this activity stopped
example: '2022-08-12T20:44:48Z'
format: iso-date-time
externalId:
type: string
description: activity's external id
nullable: true
assignedBy:
description: how the activity's initiative was assigned
enum:
- none
- user
- ml
type: string
createdAt:
type: string
description: date and time activity was created
example: '2022-08-12T20:44:48Z'
format: iso-date-time
updatedAt:
type: string
description: date and time activity was last updated
example: '2022-08-12T20:44:48Z'
format: iso-date-time
schemaVersion:
type: string
description: activities's schemaVersion
threadId:
type: string
description: activity's thread id
nullable: true
enhancedByAi:
type: boolean
description: indicates if this activity was enhanced by AI
nullable: true
isCopiedByAdmin:
type: boolean
description: indicates if this activity was copied by admin
nullable: true
isSeeded:
type: boolean
description: indicates if this activity was created via seeding
nullable: true
deletedForRetentionAt:
type: string
description: date and time activity data was deleted for retention
example: '2022-08-12T20:44:48Z'
format: iso-date-time
nullable: true
isDeleted:
type: boolean
description: 'If true, this activity has been soft-deleted (e.g. it was the source of a
split). Soft-deleted activities are excluded from the unassigned tray but
remain restorable, which is what keeps a split reversible (undo/merge).'
nullable: true
disableThreading:
type: boolean
description: if true, disables threading for this activity
nullable: true
sessionIds:
description: The session ids that were used to create this Activity
nullable: true
type: array
items:
type: string
format: objectid
splitFromActivityId:
type: string
description: 'If set, the id of the activity this one was split from. Child activities
created by a split carry their source''s id here; it is the sibling key and
the seam for a future undo/merge.'
format: objectid
nullable: true
required:
- _id
- customerId
- userId
- creationMethod
- isLocked
- title
- detail
- startedAt
- stoppedAt
- assignedBy
- createdAt
- updatedAt
- schemaVersion
UpdateTimerDto:
type: object
properties:
codeIds:
description: if set, will update the codes assigned to this timer
type: array
items:
type: string
format: objectid
durationInSeconds:
type: number
description: if set, will update the duration in seconds that this timer has been active
format: double
initiativeId:
type: string
description: if set, will update the initiative assigned to this timer. passing null will unassign this timer
format: objectid
summary:
type: string
description: if set, will updated the summary for this timer, can be empty
NestedTimerSource:
type: object
properties:
_id:
type: string
description: source's id
format: objectid
type:
description: type of entry source
enum:
- timer
type: string
default: timer
durationInSeconds:
type: number
description: the duration in seconds that this timer has been active
format: double
summary:
type: string
description: the summary assigned to this timer, can be empty
required:
- _id
- type
- durationInSeconds
- summary
StopTimerRequestDto:
type: object
properties:
stoppedAt:
type: string
description: the date and time at which the timer is being stopped
example: '2022-08-12T20:44:48Z'
format: iso-date-time
nullable: true
UserInitiativePropsDigest:
type: object
properties:
type:
description: type of the initiative for these props
enum:
- user
type: string
colorHex:
type: string
description: the hex color code for this initiative's display to the user
example: fec828
format: color-hex
tags:
type: array
description: initiative prop's tags
items:
type: string
enum:
- pinned
initiative:
description: the user initiative that is represented by these initiative props
allOf:
- $ref: '#/components/schemas/UserInitiativeDigest'
required:
- type
- colorHex
- tags
- initiative
V3AdjustRunningTimerRequestDto:
type: object
properties:
timerId:
type: string
description: The ID of the running timer to adjust
format: objectid
now:
type: string
description: The "now" time from the client (as UTC), we use the client's now to prevent clock drift issues
example: '2022-08-12T20:44:48Z'
format: iso-date-time
summary:
type: string
description: Optionally provide a summary, set to null to void existing summary
nullable: true
manualAdjustmentMs:
type: number
description: Optionally include a manual adjustment (Will clip to value that makes now - startedAt at 0 if more negative)
format: double
nullable: true
required:
- timerId
- now
ReleaseValidationPendingInfo:
type: object
properties:
status:
enum:
- release-validation-pending
type: string
releasePendedAt:
type: string
description: date and time entry was changed to release pending
example: '2022-08-12T20:44:48Z'
format: iso-date-time
releasePendedBy:
type: string
description: the identifier of the user who change the entry to release pending
format: objectid
required:
- status
- releasePendedAt
- releasePendedBy
NestedActivitySource:
type: object
properties:
_id:
type: string
description: source's id
format: objectid
type:
description: type of entry source
enum:
- activity
type: string
default: activity
creationMethod:
description: the creation method of the activity
enum:
- timer
- tracked
- user
type: string
category:
type: string
description: category of this activity, if any
nullable: true
technology:
type: string
description: technology of this activity, if any
nullable: true
source:
type: string
description: source of this activity (e.g. 'macos', 'windows'), if any
nullable: true
mechanism:
type: string
description: mechanism of this activity (e.g. browser used to access web app), if any
nullable: true
title:
type: string
description: activity's title
detail:
type: string
description: activity's detail
startedAt:
type: string
description: date and time this activity started
example: '2022-08-12T20:44:48Z'
format: iso-date-time
stoppedAt:
type: string
description: date and time this activity stopped
example: '2022-08-12T20:44:48Z'
format: iso-date-time
clusterId:
type: string
description: activity's clusterId
nullable: true
fromSuggestions:
type: boolean
description: whether this activity source was added from suggestions
nullable: true
fromThemes:
type: boolean
description: whether this activity source was added from themes
nullable: true
hasOverlap:
type: boolean
description: activity's overlap state
nullable: true
overlapTimeInSeconds:
type: number
description: activity's overlap time in seconds
format: int64
nullable: true
threadId:
type: string
description: activity's thread id
nullable: true
disableThreading:
type: boolean
description: if true, disables threading for this activity
nullable: true
assignedAt:
type: string
description: 'Datetime this activity was assigned to the entry it currently belongs to.
Unset on entries that predate the field; never back-filled.'
example: '2022-08-12T20:44:48Z'
format: iso-date-time
nullable: true
required:
- _id
- type
- creationMethod
- title
- detail
- startedAt
- stoppedAt
V3StartTimerNotFoundResponseDto:
type: object
properties:
result:
type: string
enum:
- not found
started:
type: object
additionalProperties: true
nullable: true
stopped:
nullable: true
type: array
items:
$ref: '#/components/schemas/V3StoppedTimerInfo'
required:
- result
- started
- stopped
V2StartTimerDto:
type: object
properties:
date:
type: string
description: the date on which the timer is being started
example: '2022-08-12'
format: iso-date
timerDraftId:
type: string
description: the identifier of the timer draft for which a timer is being started. cannot be set if entryId or initiativeId is already set
format: objectid
nullable: true
initiativeId:
type: string
description: the identifier of the initiative for which a timer is being started. cannot be set if entryId or timerDraftId is already set
format: objectid
nullable: true
entryId:
type: string
description: the identifier of the entry for which a timer is being started. cannot be set if initiativeId or timerDraftId is already set
format: objectid
nullable: true
timezone:
type: string
description: the timezone in which the timer is being started
enum:
- Africa/Abidjan
- Africa/Accra
- America/Adak
- Africa/Addis_Ababa
- Australia/Adelaide
- Asia/Aden
- Africa/Algiers
- Asia/Almaty
- Asia/Amman
- Europe/Amsterdam
- America/Anchorage
- Europe/Andorra
- America/Anguilla
- Indian/Antananarivo
- America/Antigua
- Pacific/Apia
- America/Aruba
- Asia/Ashgabat
- Africa/Asmara
- America/Asuncion
- Europe/Athens
- America/Atikokan
- Pacific/Auckland
- Atlantic/Azores
- Asia/Baghdad
- Asia/Bahrain
- Asia/Baku
- Africa/Bamako
- Asia/Bangkok
- Africa/Bangui
- Africa/Banjul
- America/Barbados
- Asia/Beirut
- Europe/Belgrade
- America/Belize
- Europe/Berlin
- Atlantic/Bermuda
- Asia/Bishkek
- Africa/Bissau
- America/Blanc-Sablon
- Africa/Blantyre
- America/Bogota
- Pacific/Bougainville
- Europe/Bratislava
- Africa/Brazzaville
- Australia/Brisbane
- Asia/Brunei
- Europe/Brussels
- Europe/Bucharest
- Europe/Budapest
- America/Argentina/Buenos_Aires
- Africa/Bujumbura
- Africa/Cairo
- Atlantic/Canary
- America/Cancun
- Atlantic/Cape_Verde
- America/Caracas
- Africa/Casablanca
- Antarctica/Casey
- America/Cayenne
- America/Cayman
- Indian/Chagos
- Pacific/Chatham
- America/Chicago
- Europe/Chisinau
- Asia/Chita
- Indian/Christmas
- Pacific/Chuuk
- Indian/Cocos
- Asia/Colombo
- Indian/Comoro
- Africa/Conakry
- Europe/Copenhagen
- America/Costa_Rica
- America/Curacao
- Africa/Dakar
- Asia/Damascus
- America/Danmarkshavn
- Africa/Dar_es_Salaam
- Australia/Darwin
- Antarctica/Davis
- America/Denver
- Asia/Dhaka
- Asia/Dili
- Africa/Djibouti
- America/Dominica
- Africa/Douala
- Asia/Dubai
- Europe/Dublin
- Antarctica/DumontDUrville
- Asia/Dushanbe
- Pacific/Easter
- America/Edmonton
- Pacific/Efate
- Africa/El_Aaiun
- America/El_Salvador
- Australia/Eucla
- Pacific/Fakaofo
- Atlantic/Faroe
- Pacific/Fiji
- Africa/Freetown
- Pacific/Funafuti
- Africa/Gaborone
- Pacific/Galapagos
- Pacific/Gambier
- Europe/Gibraltar
- America/Grand_Turk
- America/Grenada
- Pacific/Guadalcanal
- America/Guadeloupe
- Pacific/Guam
- America/Guatemala
- America/Guayaquil
- Europe/Guernsey
- America/Guyana
- America/Halifax
- Africa/Harare
- America/Havana
- Asia/Hebron
- Europe/Helsinki
- America/Hermosillo
- Asia/Ho_Chi_Minh
- Asia/Hong_Kong
- Pacific/Honolulu
- Asia/Hovd
- Asia/Irkutsk
- Europe/Isle_of_Man
- Europe/Istanbul
- Asia/Jakarta
- America/Jamaica
- Asia/Jayapura
- Europe/Jersey
- Asia/Jerusalem
- Africa/Johannesburg
- Africa/Juba
- Asia/Kabul
- Europe/Kaliningrad
- Asia/Kamchatka
- Africa/Kampala
- Pacific/Kanton
- Asia/Karachi
- Asia/Kathmandu
- Indian/Kerguelen
- Africa/Khartoum
- Africa/Kigali
- Africa/Kinshasa
- Pacific/Kiritimati
- Asia/Kolkata
- Pacific/Kosrae
- America/Kralendijk
- Asia/Kuala_Lumpur
- Asia/Kuwait
- Europe/Kyiv
- America/La_Paz
- Africa/Lagos
- Africa/Libreville
- America/Lima
- Europe/Lisbon
- Europe/Ljubljana
- Africa/Lome
- Europe/London
- Arctic/Longyearbyen
- Australia/Lord_Howe
# --- truncated at 32 KB (108 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/laurel/refs/heads/main/openapi/laurel-timers-api-openapi.yml