Rocketlane Time Tracking API
Endpoints for time entries and timesheets
Endpoints for time entries and timesheets
openapi: 3.0.1
info:
title: Rocketlane Comments Time Tracking API
description: Rocketlane API
version: '1.0'
servers:
- url: https://api.rocketlane.com/api
description: Production
- url: https://api.nitro.run/api
description: Staging
- url: https://project.api.orbits.run/api
description: Orbits
security:
- api-key:
- 'read : write'
tags:
- name: Time Tracking
description: Endpoints for time entries and timesheets
paths:
/1.0/time-entries/{timeEntryId}:
get:
tags:
- Time Tracking
summary: Get a time entry
description: This endpoint can be used to get a time entry using its ID. This API returns the time entry object that matches the ID. The `includeFields` param can be used to customise the response.
operationId: get-time-entry
parameters:
- name: timeEntryId
in: path
description: The unique, system-generated identifier, which can be used to identify the time entry globally.
required: true
schema:
minimum: 0
type: integer
format: int64
default: 1
example: 200
- name: includeFields
in: query
description: This query parameter allows you to specify which fields should be returned in the response body by selecting from the drop down. To get the relevant fields, use comma separated values. If the field is left blank, the default properties are returned.
required: false
style: form
explode: false
schema:
type: array
items:
type: string
enum:
- notes
- sourceType
- deleted
- status
- submittedBy
- submittedAt
- approvedBy
- approvedAt
- rejectedBy
- rejectedAt
- costRate
- billRate
- name: includeAllFields
in: query
description: This query parameter allows you to specify if all the fields should be returned in the response body. If the field is left blank, the default properties are returned.
required: false
schema:
type: boolean
example: true
responses:
'200':
description: The requested action was successfully executed.
content:
application/json:
schema:
$ref: '#/components/schemas/TimeEntryPublicAPIResponseEntity'
'400':
description: This error typically happens when the request payload contains an error. If you want to make sure that the request's parameters are named correctly and are the right data types, you can examine the request's syntax.
content:
application/json:
schema:
$ref: '#/components/schemas/badRequestErrorlist'
'401':
description: You see this error when trying to access this resource without being authenticated. Check the API request header to make sure it is not empty and has a valid api-key that you acquired from the Rocketlane API Settings tab.
content:
application/json:
schema:
$ref: '#/components/schemas/unauthorizedErrorlist'
'404':
description: If we were unable to locate the resource you were looking for or the proper API endpoint you were looking for, this error would show up.
content:
application/json:
schema:
$ref: '#/components/schemas/notFoundErrorlist'
put:
tags:
- Time Tracking
summary: Update a time entry
description: This endpoint can be used to update a time entry using its ID. To ensure that the total time for all the time entries added for that date does not exceed 24 hours, the fields `date` and `minutes` are mandatory. The properties `activityName`, `notes`, `billable` and `minutes` can be updated using this endPoint. This API returns the updated time entry object.
operationId: update-time-entry
parameters:
- name: timeEntryId
in: path
description: The unique, system-generated identifier, which can be used to identify the time entry globally.
required: true
schema:
minimum: 0
type: integer
format: int64
default: 1
example: 200
- name: includeFields
in: query
description: This query parameter allows you to specify which fields should be returned in the response body by selecting from the drop down. To get the relevant fields, use comma separated values. If the field is left blank, the default properties are returned.
required: false
style: form
explode: false
schema:
type: array
items:
type: string
enum:
- notes
- sourceType
- deleted
- status
- submittedBy
- submittedAt
- approvedBy
- approvedAt
- rejectedBy
- rejectedAt
- costRate
- billRate
- name: includeAllFields
in: query
description: This query parameter allows you to specify if all the fields should be returned in the response body. If the field is left blank, the default properties are returned.
required: false
schema:
type: boolean
example: true
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TimeEntryPublicAPIUpdateRequest'
responses:
'200':
description: The requested action was successfully executed.
content:
application/json:
schema:
$ref: '#/components/schemas/TimeEntryPublicAPIResponseEntity'
'400':
description: This error typically happens when the request payload contains an error. If you want to make sure that the request's parameters are named correctly and are the right data types, you can examine the request's syntax.
content:
application/json:
schema:
$ref: '#/components/schemas/badRequestErrorlist'
'401':
description: You see this error when trying to access this resource without being authenticated. Check the API request header to make sure it is not empty and has a valid api-key that you acquired from the Rocketlane API Settings tab.
content:
application/json:
schema:
$ref: '#/components/schemas/unauthorizedErrorlist'
'404':
description: If we were unable to locate the resource you were looking for or the proper API endpoint you were looking for, this error would show up.
content:
application/json:
schema:
$ref: '#/components/schemas/notFoundErrorlist'
'500':
description: This error denotes that there is an error that occured within our servers. The response body could help narrow down the cause for the error by our support team.
content:
application/json:
schema:
$ref: '#/components/schemas/serverErrorErrorlist'
delete:
tags:
- Time Tracking
summary: Delete a time entry
description: This endpoint can be used to delete a time entry using its ID. Upon successful deletion, _`HTTP status 204` - no content_ is returned as a response with no response body.
operationId: delete-time-entry
parameters:
- name: timeEntryId
in: path
description: The unique, system-generated identifier, which can be used to identify the time entry globally.
required: true
schema:
minimum: 0
type: integer
format: int64
default: 1
example: 200
responses:
'204':
description: The resource was successfully removed from the database.
content:
application/json:
schema:
type: string
'400':
description: This error typically happens when the request payload contains an error. If you want to make sure that the request's parameters are named correctly and are the right data types, you can examine the request's syntax.
content:
application/json:
schema:
$ref: '#/components/schemas/badRequestErrorlist'
'401':
description: You see this error when trying to access this resource without being authenticated. Check the API request header to make sure it is not empty and has a valid api-key that you acquired from the Rocketlane API Settings tab.
content:
application/json:
schema:
$ref: '#/components/schemas/unauthorizedErrorlist'
'404':
description: If we were unable to locate the resource you were looking for or the proper API endpoint you were looking for, this error would show up.
content:
application/json:
schema:
$ref: '#/components/schemas/notFoundErrorlist'
/1.0/time-entries:
get:
tags:
- Time Tracking
summary: Get all time entries
description: 'This endpoint can be used to get all time entries. You can refine your search by adding filters. Filters are given as query parameters and have a defined structure: key is `field.operator` and value is `value`. For instance: `date.gt=2023-02-11`, `minutes.eq=250`. Apart from filters, you can add `sortBy` combined with `sortOrder` to sort the time entries. The response body is paginated and you can control the pagination using the `limit` and `pageToken` parameters.'
operationId: get-all-time-entries
parameters:
- name: pageSize
in: query
description: This parameter sets the maximum number of responses to be displayed per page. If the page size is insufficient to accommodate the whole number of responses obtained, the pagination object will include a link to the next page as well as the next page token. If left blank, it defaults to 100.
schema:
minimum: 0
type: number
format: int32
example: 100
- name: pageToken
in: query
description: Use this parameter to specify the pageToken of a page to which you want to navigate. This pageToken can be obtained from a previous request which specified a limit and will only be active for 15 minutes after it is created.
schema:
type: string
example: 59c12a42-dd10-11ed-afa1-0242ac120002
- name: includeFields
in: query
description: This query parameter allows you to specify which fields should be returned in the response body by selecting from the drop down. To get the relevant fields, use comma separated values. If the field is left blank, the default properties are returned.
style: form
explode: false
schema:
type: array
items:
type: string
enum:
- notes
- sourceType
- deleted
- status
- submittedBy
- submittedAt
- approvedBy
- approvedAt
- rejectedBy
- rejectedAt
- costRate
- billRate
- name: sortBy
in: query
description: 'You can use the sortBy param to sort the responses by the given field. Valid fields to perform sortBy are: `MINUTES`, `DATE`, `ID` and `BILLABLE`.'
schema:
type: string
enum:
- minutes
- date
- id
- billable
- name: sortOrder
in: query
description: The sortOrder param can be used to specify the sorting order, which can be Ascending (ASC) or Descending (DESC). Descending is the default option.
schema:
type: string
enum:
- ASC
- DESC
- name: match
in: query
description: You can use the match param to specify if we need to filter the entries using either AND(all) / OR(any). Defaults to AND.
schema:
type: string
enum:
- all
- any
- name: date.gt
in: query
description: You can use this param to specify some date and the responses will contain time-entries whose date are greater than the given date.
schema:
type: string
example: '2023-03-28'
- name: date.eq
in: query
description: You can use this param to specify some date and the responses will contain exact matches of time-entries that match the given date.
schema:
type: string
example: '2023-03-28'
- name: date.lt
in: query
description: You can use this param to specify some date and the responses will contain time-entries whose date are less than the given date.
schema:
type: string
example: '2023-03-28'
- name: date.ge
in: query
description: You can use this param to specify some date and the responses will contain time-entries whose date are greater than or equal to the given date.
schema:
type: string
example: '2023-03-28'
- name: date.le
in: query
description: You can use this param to specify some date and the responses will contain time-entries whose date are less than or equal to the given date.
schema:
type: string
example: '2023-03-28'
- name: project.eq
in: query
description: You can use this param to specify some project Id and the responses will contain exact matches of time-entries that match the given project.
deprecated: true
schema:
type: number
example: 201
- name: projectId.eq
in: query
description: You can use this param to specify some project Id and the responses will contain exact matches of time-entries that match the given project.
schema:
type: number
example: 201
- name: task.eq
in: query
description: You can use this param to specify some task Id and the responses will contain exact matches of time-entries that match the given task.
deprecated: true
schema:
type: number
example: 202
- name: taskId.eq
in: query
description: You can use this param to specify some task Id and the responses will contain exact matches of time-entries that match the given task.
schema:
type: number
example: 202
- name: taskId.oneOf
in: query
description: You can use this param to provide ids of task and the responses will contain time entries whose time entries that contains the given task ids
schema:
type: number
example: 202
- name: taskId.noneOf
in: query
description: You can use this param to provide ids of task and the responses will contain time entries whose time entries that contains the given task ids
schema:
type: number
example: 202
- name: projectPhase.eq
in: query
description: You can use this param to specify some project phase Id and the responses will contain exact matches of time-entries that match the given phase.
schema:
type: number
example: 210
- name: category.eq
in: query
description: You can use this param to specify some category Id and the responses will contain exact matches of time-entries that match the given category.
schema:
type: number
example: 5
- name: user.eq
in: query
description: You can use this param to specify some user Id and the responses will contain exact matches of time-entries that belong to the user with the given user Id.
schema:
type: number
example: 5
- name: emailId.eq
in: query
description: You can use this param to specify some email Id and the responses will contain exact matches of time-entries that belong to the user with the given email Id.
schema:
type: string
example: john.doe@rocketlane.com
- name: emailId.cn
in: query
description: You can use this param to specify some text and the responses will contain time-entries that contain the given text in their email name.
schema:
type: string
example: john.doe
- name: emailId.nc
in: query
description: You can use this param to specify some text and the responses will contain time-entries that _DO NOT_ contain the given text in their email Id.
schema:
type: string
example: john.doe
- name: sourceType.eq
in: query
description: You can use this param to specify a source type for the time entries and the responses will contain exact matches of time-entries that have the given source type.
schema:
type: string
enum:
- GOOGLE_CALENDAR
- OUTLOOK_CALENDAR
- TASK
- PROJECT
- PHASE
- ADHOC
- MILESTONE
- name: activityName.eq
in: query
description: You can use this param to specify some activity name and the responses will contain exact matches of time-entries that match the given activity name.
schema:
type: string
example: Pre-Sales Campaign
- name: activityName.cn
in: query
description: You can use this param to specify some text and the responses will contain time-entries that contain the given text in their activity name.
schema:
type: string
example: Sales
- name: activityName.nc
in: query
description: You can use this param to specify some text and the responses will contain time-entries that _DO NOT_ contain the given text in their activity name.
schema:
type: string
example: Sales
- name: approvalStatus.eq
in: query
description: You can use this param to specify an approval status for the time entries and the responses will contain exact matches of time-entries that have the given approval type.
schema:
type: string
enum:
- NOT_SUBMITTED
- SUBMITTED
- APPROVED
- REJECTED
- name: submittedBy.eq
in: query
description: You can use this param to specify a submitter for the time entries and the response will contain time-entries submitted by the given user.
schema:
type: number
example: 5
- name: submittedAt.eq
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries submitted at the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: submittedAt.gt
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries submitted after the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: submittedAt.ge
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries submitted at or after the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: submittedAt.lt
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries submitted before the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: submittedAt.le
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries submitted at or before the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: approvedBy.eq
in: query
description: You can use this param to specify an approver for the time entries and the response will contain time-entries approved by the given user.
schema:
type: number
example: 5
- name: approvedAt.eq
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries approved at the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: approvedAt.gt
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries approved after the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: approvedAt.ge
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries approved at or after the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: approvedAt.lt
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries approved before the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: approvedAt.le
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries approved at or before the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: rejectedBy.eq
in: query
description: You can use this param to specify a rejecter for the time entries and the response will contain time-entries rejected by the given user.
schema:
type: number
example: 5
- name: rejectedAt.eq
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries rejected at the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: rejectedAt.gt
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries rejected after the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: rejectedAt.ge
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries rejected at or after the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: rejectedAt.lt
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries rejected before the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: rejectedAt.le
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries rejected at or before the given timestamp.
schema:
type: integer
format: int64
example: 1625164800000
- name: billable.eq
in: query
description: You can use this param to specify the billable flag for the time entries and the responses will contain exact matches of time-entries that have the given billable.
schema:
type: boolean
example: true
- name: includeDeleted.eq
in: query
description: You can use this parameter to specify whether responses will include the deleted time entries.
schema:
type: boolean
example: false
- name: createdAt.gt
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries whose date are greater than the given time entries created date.
schema:
type: integer
format: int64
example: 1625164800000
- name: createdAt.eq
in: query
description: You can use this param to provide an epoch milli value and the responses will contain exact matches of time entries that match the given time entries created date.
schema:
type: integer
format: int64
example: 1625164800000
- name: createdAt.lt
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries whose date are less than the given time entries created date.
schema:
type: integer
format: int64
example: 1625164800000
- name: createdAt.ge
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries whose date are greater than or equal to the given time entries created date.
schema:
type: integer
format: int64
example: 1625164800000
- name: createdAt.le
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries whose date are less than or equal to the given time entries created date.
schema:
type: integer
format: int64
example: 1625164800000
- name: updatedAt.gt
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries whose date are greater than the given time entries updated date.
schema:
type: integer
format: int64
example: 1625164800000
- name: updatedAt.eq
in: query
description: You can use this param to provide an epoch milli value and the responses will contain exact matches of time entries that match the given time entries updated date.
schema:
type: integer
format: int64
example: 1625164800000
- name: updatedAt.lt
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries whose date are less than the given time entries updated date.
schema:
type: integer
format: int64
example: 1625164800000
- name: updatedAt.ge
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries whose date are greater than or equal to the given time entries updated date.
schema:
type: integer
format: int64
example: 1625164800000
- name: updatedAt.le
in: query
description: You can use this param to provide an epoch milli value and the responses will contain time entries whose date are less than or equal to the given time entries updated date.
schema:
type: integer
format: int64
example: 1625164800000
responses:
'200':
description: The requested action was successfully executed.
content:
application/json:
schema:
$ref: '#/components/schemas/ExampleAPIResponseTimeEntries'
'400':
description: This error typically happens when the request payload contains an error. If you want to make sure that the request's parameters are named correctly and are the right data types, you can examine the request's syntax.
content:
application/json:
schema:
$ref: '#/components/schemas/badRequestErrorlist'
'401':
description: You see this error when trying to access this resource without being authenticated. Check the API request header to make sure it is not empty and has a valid api-key that you acquired from the Rocketlane API Settings tab.
content:
application/json:
schema:
$ref: '#/components/schemas/unauthorizedErrorlist'
post:
tags:
- Time Tracking
summary: Create a time entry
description: 'This endpoint can be used to create a time entry. It is mandatory to provide values for these three properties: `date`, `minutes` and the source of the time entry, which can be either one of `activityName`, `task`, `projectPhase` or `project`. The `activityName` param can be used to track time against adhoc activities. Providing multiple sources as input will result in an error. This API returns the created time entry object.'
operationId: create-time-entry
parameters:
- name: includeFields
in: query
description: This query parameter allows you to specify which fields should be returned in the response body by selecting from the drop down. To get the relevant fields, use comma separated values. If the field is left blank, the default properties are returned.
required: false
style: form
explode: false
schema:
type: array
items:
type: string
enum:
- notes
- sourceType
- deleted
- status
- submittedBy
- submittedAt
- approvedBy
- approvedAt
- rejectedBy
- rejectedAt
- costRate
- billRate
- name: includeAllFields
in: query
description: This query parameter allows you to specify if all the fields should be returned in the response body. If the field is left blank, the default properties are returned.
required: false
schema:
type: boolean
example: true
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TimeEntryPublicAPIRequest'
responses:
'201':
description: The resource was successfully created in the database.
content:
application/json:
schema:
$ref: '#/components/schemas/TimeEntryPublicAPIResponseEntity'
'400':
description: This error typically happens when the request payload contains an error. If you want to make sure that the request's parameters are named correctly and are the right data types, you can examine the request's syntax.
content:
application/json:
schema:
$ref: '#/components/schemas/badRequestErrorlist'
'401':
description: You see this error when trying to access this resource without being authenticated. Check the API request header to make sure it is not empty and has a valid api-key that you acquired from the Rocketlane API Settings tab.
content:
application/json:
schema:
$ref: '#/components/schemas/unauthorizedErrorlist'
'500':
description: This error denotes that there is an error that occured within our servers. The response body could help narrow down the cause for the error by our support team.
content:
application/json:
schema:
$ref: '#/components/schemas/serverErrorErrorlist'
/1.0/time-entries/search:
get:
tags:
- Time Tracking
summary: Search time entries
description: 'This endpoint can be used to search for time entries. You can refine your search by adding filters. Filters are given as query parameters and have a defined structure: key is `field.operator` and value is `value`. For instance: `date.gt=2023-02-11`, `minutes.eq=250`. Apart from filters, you can add `sortBy` combined with `sortOrder` to sort the time entries. The response body is paginated and you can control the pagination using the `limit` and `pageToken` parameters.'
operationId: search-time-entrie
# --- truncated at 32 KB (72 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rocketlane/refs/heads/main/openapi/rocketlane-time-tracking-api-openapi.yml