Rocketlane Time Tracking API

Endpoints for time entries and timesheets

OpenAPI Specification

rocketlane-time-tracking-api-openapi.yml Raw ↑
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