Laurel Public API
The Public API from Laurel — 32 operation(s) for public.
The Public API from Laurel — 32 operation(s) for public.
openapi: 3.0.0
info:
title: Identity Service Ably Public API
description: ''
version: '1'
contact: {}
servers: []
security:
- ApiBearerAuth: []
tags:
- name: Public
paths:
/api/v1/customers/{customerId}/users:
get:
operationId: CustomerUserController_search_v1
parameters:
- name: customerId
required: true
in: path
description: customer's id
schema:
format: objectid
type: string
- name: search
required: false
in: query
description: searches first & last names, nickname, & email using a query
schema:
type: string
- name: integration
required: false
in: query
schema:
nullable: true
type: string
enum:
- cloud-assistant-cdr
- cloud-assistant-google
- cloud-assistant-microsoft-exchange
- cloud-assistant-microsoft-teams
- cloud-assistant-zoom
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/User'
- $ref: '#/components/schemas/UserIntegrationProjection'
summary: returns all users for a customer, filtered by optional search parameter
tags:
- Public
/api/v1/customers/{customerId}/users/lookup:
get:
operationId: CustomerUserController_lookupUser_v1
parameters:
- name: customerId
required: true
in: path
description: customer's id
schema:
format: objectid
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Identity'
tags:
- Public
/api/v1/customers/{customerId}/users/batch/lookup:
post:
description: Batch equivalent of GET users/lookup. Returns every distinct user under the customer who matches at least one of the given identities.
operationId: CustomerUserController_lookupUsersBatch_v1
parameters:
- name: customerId
required: true
in: path
description: customer's id
schema:
format: objectid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LookupUsersBatchRequestDto'
responses:
'200':
description: ''
content:
application/json:
schema:
properties:
users:
items:
$ref: '#/components/schemas/User'
type: array
required:
- users
type: object
summary: Look up multiple users by identities
tags:
- Public
/api/v1/customers/{customerId}/users/{userId}:
get:
operationId: CustomerUserController_get_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
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UserResponseDto'
summary: returns a user by its id
tags:
- Public
/api/v2/customers/{customerId}/users/{userId}:
patch:
operationId: CustomerUserController_updateV2_v2
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/UpdateUserV2Dto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/User'
tags:
- Public
/api/v1/oauth/token:
post:
operationId: OauthController_createServiceToken_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateServiceTokenRequestDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceTokenResponseDto'
tags:
- Public
/api/v1/customers/{customerId}/clients/import:
post:
operationId: ClientsController_importClientV1_v1
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImportCustomerClientDto'
responses:
'201':
description: ''
tags:
- Public
/api/v1/customers/{customerId}/clients/batch:
post:
operationId: ClientsController_importClientBatchV1_v1
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
- name: isInitial
required: false
in: query
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImportCustomerClientsBatchDto'
responses:
'201':
description: ''
tags:
- Public
/api/v1/customers/{customerId}/codes/import:
post:
operationId: CodesController_importCodeV1_v1
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImportCustomerCodeDto'
responses:
'201':
description: ''
tags:
- Public
/api/v1/customers/{customerId}/codes/batch:
post:
operationId: CodesController_importCodeBatchV1_v1
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
- name: isInitial
required: false
in: query
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImportCustomerCodesBatchDto'
responses:
'201':
description: ''
tags:
- Public
/api/v2/customers/{customerId}/initiatives/consolidated-batch:
post:
operationId: InitiativesController_importInitiativesConsolidatedBatchV2_v2
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
- name: isInitial
required: false
in: query
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImportCustomerInitiativesConsolidatedBatchDto'
responses:
'201':
description: ''
tags:
- Public
/api/v1/customers/{customerId}/initiatives/{initiativeExternalId}/access:
post:
operationId: InitiativesController_setInitiativeAccessV1_v1
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
- name: initiativeExternalId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SetCustomerInitiativeAccessDto'
responses:
'201':
description: ''
tags:
- Public
/api/v1/customers/{customerId}/initiatives/{initiativeExternalId}/codes:
post:
operationId: InitiativesController_setInitiativeCodesV1_v1
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
- name: initiativeExternalId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SetCustomerInitiativeCodesDto'
responses:
'201':
description: ''
tags:
- Public
delete:
operationId: InitiativesController_deleteInitiativeCodesV1_v1
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
- name: initiativeExternalId
required: true
in: path
schema:
type: string
responses:
'200':
description: ''
tags:
- Public
/api/v1/validations/customers/{customerId}/initiatives/{initiativeExternalId}/rules:
post:
operationId: EntryValidationRulesController_setOneForInitiative_v1
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
- name: initiativeExternalId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SetInitiativeLevelEntryValidationRulesDto'
responses:
'201':
description: ''
tags:
- Public
/api/v1/customers/{customerId}/users/delegates:
post:
description: Create an async job that will update user delegates
operationId: UsersController_updateUserDelegates_v1
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUserDelegatesDto'
responses:
'201':
description: ''
summary: ''
tags:
- Public
/api/v1/customers/{customerId}/users/delegates/batch:
post:
description: Create an async job that will update delegates for a batch of users.
operationId: UsersController_updateUserDelegatesBatch_v1
parameters:
- name: customerId
required: true
in: path
schema:
format: objectid
type: string
- name: isInitial
required: false
in: query
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUserDelegatesBatchDto'
responses:
'201':
description: ''
summary: ''
tags:
- Public
/api/v1/customers/{customerId}/code-types/import:
post:
operationId: CustomerCodeTypeController_import_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/ImportCustomerCodeTypeDto'
responses:
'201':
description: ''
tags:
- Public
/api/v1/customers/{customerId}/initiatives/import:
post:
operationId: CustomerInitiativeController_import_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/ImportCustomerInitiativeDto'
responses:
'201':
description: ''
tags:
- Public
/api/v2/customers/{customerId}/initiatives/{initiativeExternalId}/codes:
post:
deprecated: true
operationId: InitiativeCodesController_addInitiativeCodesV2_v2
parameters:
- name: customerId
required: true
in: path
description: customer id
schema:
format: objectid
type: string
- name: initiativeExternalId
required: true
in: path
description: initiative's external id
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddInitiativeCodesRequestDto'
responses:
'201':
description: ''
summary: ''
tags:
- Public
/api/v1/customers/{customerId}/initiatives/{initiativeExternalId}/code-types/{codeTypeExternalId}/codes:
post:
operationId: InitiativeCodesController_addInitiativeCodesByCodeType_v1
parameters:
- name: customerId
required: true
in: path
description: customer id
schema:
format: objectid
type: string
- name: initiativeExternalId
required: true
in: path
schema:
type: string
- name: codeTypeExternalId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddInitiativeCodesRequestDto'
responses:
'201':
description: ''
tags:
- Public
delete:
operationId: InitiativeCodesController_removeInitiativeCodesByCodeType_v1
parameters:
- name: customerId
required: true
in: path
description: customer id
schema:
format: objectid
type: string
- name: initiativeExternalId
required: true
in: path
schema:
type: string
- name: codeTypeExternalId
required: true
in: path
schema:
type: string
responses:
'200':
description: ''
tags:
- Public
/api/v1/customers/{customerId}/users/{userId}/code-types/{codeTypeId}/default-code:
get:
operationId: CustomerDefaultCodeController_findManyByCodeTypeIdForUser_v1
parameters:
- name: customerId
required: true
in: path
description: customer id
schema:
format: objectid
type: string
- name: userId
required: true
in: path
description: user's id
schema:
format: objectid
type: string
- name: codeTypeId
required: true
in: path
description: code type's id
schema:
format: objectid
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DefaultCode'
tags:
- Public
post:
operationId: CustomerDefaultCodeController_createOneForUser_v1
parameters:
- name: customerId
required: true
in: path
description: customer id
schema:
format: objectid
type: string
- name: userId
required: true
in: path
description: user's id
schema:
format: objectid
type: string
- name: codeTypeId
required: true
in: path
description: code type's id
schema:
format: objectid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDefaultCodeDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/DefaultCode'
tags:
- Public
/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:
- Public
/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:
- Public
/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:
- Public
/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:
- Public
/api/v1/customers/{customerId}/entries:
get:
deprecated: true
operationId: CustomerEntryController_findManyWithUpdatedAt_v1
parameters:
- name: customerId
required: true
in: path
description: customer id
schema:
format: objectid
type: string
- name: updatedAfter
required: true
in: query
description: the date after which the Entry was updated
schema:
format: iso-date-time
example: '2022-08-12T20:44:48Z'
type: string
- name: updatedOnOrBefore
required: true
in: query
description: the date on or before which the Entry was updated
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/CustomerEntryResponseDto'
summary: ''
tags:
- Public
/api/v2/customers/{customerId}/entries:
get:
operationId: CustomerEntryController_findManyWithPagination_v2
parameters:
- name: customerId
required: true
in: path
description: customer id
schema:
format: objectid
type: string
- name: updatedAfter
required: true
in: query
description: the date after which the Entry was updated
schema:
format: iso-date-time
example: '2022-08-12T20:44:48Z'
type: string
- name: updatedOnOrBefore
required: true
in: query
description: the date on or before which the Entry was updated
schema:
format: iso-date-time
example: '2022-08-12T20:44:48Z'
type: string
- name: pageSize
required: false
in: query
description: max number of item in each page
schema:
minimum: 1
maximum: 100
format: int64
type: number
- name: cursor
required: false
in: query
description: cursor to start from
schema:
format: objectid
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
properties:
items:
items:
$ref: '#/components/schemas/CustomerEntryResponseDto'
type: array
nextCursor:
type: string
type: object
tags:
- Public
/api/v1/customers/{customerId}/entries/export:
get:
operationId: CustomerEntryController_export_v1
parameters:
- name: customerId
required: true
in: path
description: customer id
schema:
format: objectid
type: string
- name: releasedAfter
required: true
in: query
description: the date after which the Entry was released
schema:
format: iso-date-time
example: '2022-08-12T20:44:48Z'
type: string
- name: releasedOnOrBefore
required: true
in: query
description: the date on or before which the Entry was released
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/ExportEntryResponseDto'
tags:
- Public
/api/v2/customers/{customerId}/entries/export:
get:
operationId: CustomerEntryController_exportV2_v2
parameters:
- name: customerId
required: true
in: path
description: customer id
schema:
format: objectid
type: string
- name: releasedAfter
required: true
in: query
description: the date after which the Entry was released
schema:
format: iso-date-time
example: '2022-08-12T20:44:48Z'
type: string
- name: releasedOnOrBefore
required: true
in: query
description: the date on or before which the Entry was released
schema:
format: iso-date-time
example: '2022-08-12T20:44:48Z'
type: string
responses:
'200':
description: ''
tags:
- Public
/api/v1/customers/{customerId}/entries/release-succeeded/batch:
post:
operationId: CustomerEntryController_batchReleaseSuccess_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/BatchReleaseSucceededRequestDto'
responses:
'207':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BatchReleaseSucceededResponseDto'
tags:
- Public
/api/v1/customers/{customerId}/users/{userId}/entries/{entryId}/release-succeeded:
post:
operationId: CustomerEntryController_releaseSuccess_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
description: individual entry id
schema:
format: objectid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReleaseSucceededRequestDto'
responses:
'200':
description: ''
tags:
- Public
/api/v1/customers/{customerId}/users/{userId}/entries/{entryId}/release-failed:
post:
operationId: CustomerEntryController_releaseFailed_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
description: individual entry id
schema:
format: objectid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReleaseFailedRequestDto'
responses:
'200':
description: ''
tags:
- Public
components:
schemas:
BatchReleaseSucceededResponseDto:
type: object
properties:
response:
type: array
items:
$ref: '#/components/schemas/SingleEntryResponse'
required:
- response
DelegatePermissionDto:
type: object
properties:
claim:
type: string
required:
- claim
UpdateUserDelegatesBatchDto:
type: object
properties:
users:
description: Array of user delegate updates
type: array
items:
$ref: '#/components/schemas/UpdateUserDelegatesDto'
required:
- users
ReleaseSuccessInfo:
type: object
properties:
status:
enum:
- release-success
type: string
releasedAt:
type: string
description: date and time entry was released
example: '2022-08-12T20:44:48Z'
format: iso-date-time
releasedBy:
type: string
description: the identifier of the user who released the entry
format: objectid
reReleaseFailedMessages:
type: array
description: entry's re-release failed messages
minItems: 1
items:
$ref: '#/components/schemas/ReleaseFailedError'
nullable: true
required:
- status
- releasedAt
- releasedBy
ReleaseSuccessLockedInfo:
type: object
properties:
status:
enum:
- release-success-locked
type: string
releasedAt:
type: string
description: date and time entry was originally released to PMS
example: '2022-08-12T20:44:48Z'
format: iso-date-time
releasedBy:
type: string
description: the identifier of the user who released the entry
format: objectid
lockedAt:
type: string
description: date the entry became locked in the PMS billing system
example: '2022-08-12T20:44:48Z'
format: iso-date-time
nullable: true
lastLockCheckAt:
type: string
description: date lock status was last checked by the Boomi job
example: '2022-08-12T20:44:48Z'
format: iso-date-time
reReleaseFailedMessages:
type: array
description: entry's re-release failed messages (retained from previous release-success state)
minItems: 1
items:
$ref: '#/components/schemas/ReleaseFailedError'
nullable: true
required:
- status
- releasedAt
- releasedBy
- lastLockCheckAt
Dto:
type: object
properties:
externalId:
type: string
description: code's external id
name:
type: string
description: code's name
description:
type: string
description: code's description, can be empty
codeTypeExternalId:
type: string
description: code's type's external id
orderingSequence:
type: string
description: ordering sequence for UI sorting (alphanumeric)
nullable: true
group:
type: string
description: group identifier for categorizing codes
nullable: true
isDisabled:
type: boolean
description: whether the code is disabled, added from ingestion process
nullable: true
required:
- externalId
- name
- description
- codeTypeExternalId
ImportCustomerCodeTypeDto:
type: object
properties:
externalId:
type: string
description: code type's external id
name:
type: string
description: code type's name
semanticType:
type: string
description: code type's semantic type
enum:
- action
- activity
- location
- phase
- task
customerDefaultable:
type: boolean
description: can the default CodeType value be set at the customer-level
userDefaultable:
type: boolean
description: can the default CodeType value be set at the user-level
orderingSequence:
type: string
description: ordering sequence for UI sorting (alphanumeric)
required:
- externalId
- name
TenantDigest:
type: object
properties:
_id:
type: string
description: tenant's id
format: objectid
description:
type: string
description: tenant's description, can be empty
name:
enum:
- iad
- lhr
- syd
- pdx
- yul
type: string
required:
- _id
- description
- name
UpdateUserDelegatesDto:
type: object
properties:
identity:
description: Identity to match the user
allOf:
- $ref
# --- truncated at 32 KB (99 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/laurel/refs/heads/main/openapi/laurel-public-api-openapi.yml