Laurel Entries API

The Entries API from Laurel — 56 operation(s) for entries.

OpenAPI Specification

laurel-entries-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Identity Service Ably Entries API
  description: ''
  version: '1'
  contact: {}
servers: []
security:
- ApiBearerAuth: []
tags:
- name: Entries
paths:
  /api/v1/customers/{customerId}/entries/release-pending:
    get:
      operationId: EntriesController_getAllReleasePendingEntries_v1
      parameters:
      - name: customerId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReleasePendingTimekeeperIdDto'
      tags:
      - Entries
  /api/v1/customers/{customerId}/users/{userId}/entries/lock-status:
    patch:
      operationId: EntriesController_updateEntriesLockStatus_v1
      parameters:
      - name: customerId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      - name: userId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEntriesLockStatusRequestDto'
      responses:
        '202':
          description: ''
      tags:
      - Entries
    post:
      operationId: CustomerEntryController_updateEntriesLockStatus_v1
      parameters:
      - name: customerId
        required: true
        in: path
        description: customer's id
        schema:
          format: objectid
          type: string
      - name: userId
        required: true
        in: path
        description: user's id
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEntriesLockStatusRequestDto_2'
      responses:
        '202':
          description: ''
      tags:
      - Entries
  /api/v1/customers/{customerId}/users/{userId}/entries/{entryExternalId}:
    patch:
      operationId: EntriesController_updateReleasedEntry_v1
      parameters:
      - name: customerId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      - name: userId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      - name: entryExternalId
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OverrideOneEntryRequestV2Dto'
      responses:
        '200':
          description: ''
      tags:
      - Entries
    delete:
      operationId: EntriesController_deleteReleasedEntry_v1
      parameters:
      - name: customerId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      - name: userId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      - name: entryExternalId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
      tags:
      - Entries
  /api/v1/customers/{customerId}/users/{userId}/entries/import-released:
    post:
      operationId: EntriesController_createReleasedEntry_v1
      parameters:
      - name: customerId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      - name: userId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportPmsEntryRequestDto'
      responses:
        '201':
          description: ''
      tags:
      - Entries
  /api/v1/customers/{customerId}/entries/import-unreleased:
    post:
      operationId: EntriesController_importUnreleasedEntry_v1
      parameters:
      - name: customerId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportUnreleasedEntriesRequestDto'
      responses:
        '202':
          description: ''
      tags:
      - Entries
  /api/v1/customers/{customerId}/entries/external/{sourceSystem}:
    patch:
      operationId: EntriesController_updateUnreleasedEntriesBulk_v1
      parameters:
      - name: customerId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      - name: sourceSystem
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkUpdateUnreleasedEntriesRequestDto'
      responses:
        '202':
          description: ''
      tags:
      - Entries
    delete:
      operationId: EntriesController_deleteUnreleasedEntriesBulk_v1
      parameters:
      - name: customerId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      - name: sourceSystem
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkDeleteUnreleasedEntriesRequestDto'
      responses:
        '202':
          description: ''
      tags:
      - Entries
  /api/v3/public/customers/{customerId}/entries:
    get:
      operationId: CustomerEntryPublicController_findManyWithPaginationV3_v3
      parameters:
      - name: customerId
        required: true
        in: path
        description: customer id
        schema:
          format: objectid
          type: string
      - name: page
        required: false
        in: query
        schema:
          minimum: 1
          format: int64
          type: number
      - name: pageSize
        required: false
        in: query
        schema:
          minimum: 1
          maximum: 150
          format: int64
          type: number
      - name: search
        required: false
        in: query
        schema:
          minLength: 3
          maxLength: 100
          type: string
      - name: userId
        required: false
        in: query
        schema:
          format: objectid
          type: string
      - name: userIds
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            format: objectid
      - name: status
        required: false
        in: query
        schema:
          type: string
          enum:
          - release-failed
          - release-pending
          - release-success
          - release-success-locked
          - release-validation-pending
          - validation-failed
          - validation-pending
          - validation-success
      - name: statuses
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - release-failed
            - release-pending
            - release-success
            - release-success-locked
            - release-validation-pending
            - validation-failed
            - validation-pending
            - validation-success
      - name: workDateStart
        required: false
        in: query
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      - name: workDateEnd
        required: false
        in: query
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      - name: workDates
        required: false
        in: query
        schema:
          example: '2022-08-12T20:44:48Z'
          type: array
          items:
            type: string
            format: iso-date-time
      - name: updatedAfter
        required: false
        in: query
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      - name: updatedOnOrBefore
        required: false
        in: query
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      - name: initiativeId
        required: false
        in: query
        schema:
          format: objectid
          type: string
      - name: isDeleted
        required: false
        in: query
        schema:
          type: boolean
      - name: initiativeType
        required: false
        in: query
        schema:
          type: string
          enum:
          - pms
          - user
      - name: billingType
        required: false
        in: query
        description: the billing type to filter entries by
        schema:
          type: string
          enum:
          - billable
          - non-billable
      - name: clientId
        required: false
        in: query
        description: the client to filter initiatives by
        schema:
          format: objectid
          type: string
      - name: allowEmptyTimers
        required: false
        in: query
        schema:
          type: boolean
      - name: isShared
        required: false
        in: query
        description: When true, filter to entries shared with at least one recipient.
        schema:
          nullable: true
          type: boolean
      - name: isFromShare
        required: false
        in: query
        description: When true, filter to recipient-copy entries. ORs with `isShared`.
        schema:
          nullable: true
          type: boolean
      - name: timezoneNotSet
        required: false
        in: query
        description: 'Union with `timezones[]`: when true, also include entries with `timezoneAtCreation === null`.'
        schema:
          type: boolean
      - name: sortBy
        required: false
        in: query
        description: the field to sort entries by
        schema:
          type: string
          enum:
          - workDate
          - createdAt
          - status
      - name: sortOrder
        required: false
        in: query
        description: the sort order
        schema:
          type: string
          enum:
          - asc
          - desc
      - name: timezones
        required: false
        in: query
        description: Optional IANA timezone filter (e.g. "America/New_York").
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: ''
      tags:
      - Entries
  /api/v1/public/customers/{customerId}/entries/bulk-release:
    post:
      operationId: CustomerEntryPublicController_bulkRelease_v1
      parameters:
      - name: customerId
        required: true
        in: path
        description: customer id
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkReleaseEntryDto'
      responses:
        '202':
          description: ''
      tags:
      - Entries
  /api/v1/public/customers/{customerId}/users/{userId}/entries/{entryId}/unrelease:
    post:
      operationId: CustomerEntryPublicController_unrelease_v1
      parameters:
      - name: customerId
        required: true
        in: path
        description: customer's id
        schema:
          format: objectid
          type: string
      - name: userId
        required: true
        in: path
        description: user's id
        schema:
          format: objectid
          type: string
      - name: entryId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      responses:
        '200':
          description: ''
      tags:
      - Entries
  /api/v1/public/customers/{customerId}/users/{userId}/entries/{entryId}/override:
    patch:
      operationId: CustomerEntryPublicController_overrideOneEntry_v1
      parameters:
      - name: customerId
        required: true
        in: path
        description: customer's id
        schema:
          format: objectid
          type: string
      - name: userId
        required: true
        in: path
        description: user's id
        schema:
          format: objectid
          type: string
      - name: entryId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OverrideOneEntryRequestDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerEntryResponseDto'
      tags:
      - Entries
  /api/v1/public/customers/{customerId}/users/{userId}/entries/{entryId}:
    delete:
      operationId: CustomerEntryPublicController_deleteOneEntry_v1
      parameters:
      - name: customerId
        required: true
        in: path
        description: customer's id
        schema:
          format: objectid
          type: string
      - name: userId
        required: true
        in: path
        description: user's id
        schema:
          format: objectid
          type: string
      - name: entryId
        required: true
        in: path
        schema:
          format: objectid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
      tags:
      - Entries
  /api/v1/entries:
    get:
      operationId: EntryController_findManyByDate_v1
      parameters:
      - name: date
        required: true
        in: query
        description: the date for which the entries should be returned
        schema:
          format: iso-date
          example: '2022-08-12'
          type: string
      - name: startedBefore
        required: true
        in: query
        description: the date to get activities that their started at time is less than this date
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      - name: stoppedAfter
        required: true
        in: query
        description: the date to get activities that their stopped at time is greater than this date
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EntryResponseDto'
      summary: returns all entries for the current user and a given date
      tags:
      - Entries
    post:
      deprecated: true
      operationId: EntryController_createOneOld_v1
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEntryOldDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
      summary: creates an entry for the current user
      tags:
      - Entries
  /api/v2/entries:
    get:
      operationId: EntryController_findManyWithPagination_v2
      parameters:
      - name: page
        required: false
        in: query
        schema:
          minimum: 1
          format: int64
          type: number
      - name: pageSize
        required: false
        in: query
        schema:
          minimum: 1
          maximum: 150
          format: int64
          type: number
      - name: search
        required: false
        in: query
        schema:
          minLength: 3
          maxLength: 100
          type: string
      - name: userId
        required: false
        in: query
        schema:
          type: string
      - name: status
        required: false
        in: query
        schema:
          type: string
          enum:
          - release-failed
          - release-pending
          - release-success
          - release-success-locked
          - release-validation-pending
          - validation-failed
          - validation-pending
          - validation-success
      - name: statuses
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - release-failed
            - release-pending
            - release-success
            - release-success-locked
            - release-validation-pending
            - validation-failed
            - validation-pending
            - validation-success
      - name: workDateStart
        required: false
        in: query
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      - name: workDateEnd
        required: false
        in: query
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      - name: workDates
        required: false
        in: query
        schema:
          example: '2022-08-12T20:44:48Z'
          type: array
          items:
            type: string
            format: iso-date-time
      - name: updatedAfter
        required: false
        in: query
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      - name: updatedOnOrBefore
        required: false
        in: query
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      - name: initiativeId
        required: false
        in: query
        schema:
          format: objectid
          type: string
      - name: isDeleted
        required: false
        in: query
        schema:
          type: boolean
      - name: initiativeType
        required: false
        in: query
        schema:
          type: string
          enum:
          - pms
          - user
      - name: billingType
        required: false
        in: query
        description: the billing type to filter entries by
        schema:
          nullable: true
          type: string
          enum:
          - billable
          - non-billable
      - name: clientId
        required: false
        in: query
        description: the client to filter initiatives by
        schema:
          format: objectid
          type: string
      - name: allowEmptyTimers
        required: false
        in: query
        schema:
          type: boolean
      - name: isShared
        required: false
        in: query
        description: When true, filter to entries shared with at least one recipient.
        schema:
          nullable: true
          type: boolean
      - name: isFromShare
        required: false
        in: query
        description: When true, filter to recipient-copy entries. ORs with `isShared`.
        schema:
          nullable: true
          type: boolean
      - name: timezoneNotSet
        required: false
        in: query
        description: 'Union with `timezones[]`: when true, also include entries with `timezoneAtCreation === null`.'
        schema:
          type: boolean
      - name: sortBy
        required: false
        in: query
        description: the field to sort entries by
        schema:
          type: string
          enum:
          - workDate
          - createdAt
          - status
      - name: sortOrder
        required: false
        in: query
        description: the sort order
        schema:
          type: string
          enum:
          - asc
          - desc
      - name: userIds
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
      - name: timezones
        required: false
        in: query
        description: Optional IANA timezone filter (e.g. "America/New_York"). Repeated query params for multi-select.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: ''
      summary: returns paginated entries for the current user based on provided filters
      tags:
      - Entries
    post:
      operationId: EntryController_createOne_v2
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEntryRequestDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
      summary: creates an entry for the current user
      tags:
      - Entries
  /api/v3/entries:
    get:
      operationId: EntryController_findManyEntryDtoByDate_v3
      parameters:
      - name: userId
        required: true
        in: query
        description: the user whose entries you are searching for
        schema:
          format: objectid
          type: string
      - name: customerId
        required: true
        in: query
        description: the user's customer
        schema:
          format: objectid
          type: string
      - name: date
        required: true
        in: query
        description: the date for which the entries should be returned
        schema:
          format: iso-date
          example: '2022-08-12'
          type: string
      - name: startedBefore
        required: true
        in: query
        description: the date to get activities that their started at time is less than this date
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      - name: stoppedAfter
        required: true
        in: query
        description: the date to get activities that their stopped at time is greater than this date
        schema:
          format: iso-date-time
          example: '2022-08-12T20:44:48Z'
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EntryDto'
      summary: returns paginated entries for the current user based on provided filters
      tags:
      - Entries
    post:
      operationId: EntryController_createOneEntryDto_v3
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEntryDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryDto'
      summary: creates an entry for the current user
      tags:
      - Entries
  /api/v1/entries/initiatives:
    get:
      operationId: EntryController_getInitiativeIdsByWorkDateRange_v1
      parameters:
      - name: startDate
        required: true
        in: query
        description: inclusive lower bound for entry work dates
        schema:
          format: iso-date
          example: '2022-08-12'
          type: string
      - name: endDate
        required: true
        in: query
        description: inclusive upper bound for entry work dates
        schema:
          format: iso-date
          example: '2022-08-12'
          type: string
      - name: customerId
        required: true
        in: query
        description: the customer whose initiative ids we are getting
        schema:
          format: objectid
          type: string
      - name: userId
        required: true
        in: query
        description: the user whose initiative ids we are getting
        schema:
          format: objectid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
      tags:
      - Entries
  /api/v1/entries/split:
    post:
      operationId: EntryController_splitActivity_v1
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SplitEntryRequestDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EntryResponseDto'
      summary: splits a single source activity or entry into multiple draft entries, one per allocation
      tags:
      - Entries
  /api/v1/entries/bulk:
    post:
      operationId: EntryController_createManyEntries_v1
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkCreateEntryRequestDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkCreateEntryResponseDto'
      summary: Create multiple entries in bulk
      tags:
      - Entries
  /api/v1/entries/merge:
    post:
      operationId: EntryController_mergeManyEntry_v1
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergeManyEntriesDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
      summary: merges a list of entries into one
      tags:
      - Entries
  /api/v2/entries/merge:
    post:
      operationId: EntryController_mergeManyEntryDto_v2
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergeManyEntriesDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryDto'
      tags:
      - Entries
  /api/v1/entries/{entryId}:
    patch:
      deprecated: true
      operationId: EntryController_updateOneById_v1
      parameters:
      - name: entryId
        required: true
        in: path
        description: individual entry id
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateOneEntryDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
      summary: updates an entry
      tags:
      - Entries
    delete:
      operationId: EntryController_deleteOneById_v1
      parameters:
      - name: entryId
        required: true
        in: path
        description: individual entry id
        schema:
          format: objectid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
      summary: deletes an entry by id
      tags:
      - Entries
    get:
      operationId: EntryController_findOneById_v1
      parameters:
      - name: entryId
        required: true
        in: path
        description: individual entry id
        schema:
          format: objectid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
      summary: Returns the entry that corresponds with the provided id
      tags:
      - Entries
  /api/v2/entries/{entryId}:
    patch:
      operationId: EntryController_updateOneByIdV2_v2
      parameters:
      - name: entryId
        required: true
        in: path
        description: individual entry id
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEntryRequestDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
      summary: updates an entry
      tags:
      - Entries
    delete:
      operationId: EntryController_deleteOneEntryDtoById_v2
      parameters:
      - name: entryId
        required: true
        in: path
        description: individual entry id
        schema:
          format: objectid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryDto'
      summary: deletes an entry by id
      tags:
      - Entries
  /api/v3/entries/{entryId}:
    patch:
      operationId: EntryController_updateOneByIdRespondWithEntryDto_v3
      parameters:
      - name: entryId
        required: true
        in: path
        description: individual entry id
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEntryRequestDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryDto'
      summary: updates an entry
      tags:
      - Entries
    get:
      operationId: EntryController_getEntry_v3
      parameters:
      - name: entryId
        required: true
        in: path
        description: individual entry id
        schema:
          format: objectid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryDto'
      summary: Returns the entry that corresponds with the provided id as EntryDto
      tags:
      - Entries
  /api/v1/entries/{entryId}/release:
    post:
      operationId: EntryController_releaseOneById_v1
      parameters:
      - name: entryId
        required: true
        in: path
        description: individual entry id
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReleaseOneEntryDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryResponseDto'
      summary: releases a single entry
      tags:
      - Entries
  /api/v2/entries/{entryId}/release:
    post:
      operationId: EntryController_releaseEntryDtoById_v2
      parameters:
      - name: entryId
        required: true
        in: path
        description: individual entry id
        schema:
          format: objectid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReleaseOneEntryDto'
      responses:
        '200':
          description: ''
          content:
            applicatio

# --- truncated at 32 KB (176 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/laurel/refs/heads/main/openapi/laurel-entries-api-openapi.yml