Clockify API (v1)

Introduction

By using this REST API, you can easily integrate Clockify with your own add-ons, push and pull data between Clockify and other tools, and create custom add-ons on CAKE.com Marketplace. Whether you’re looking to automate time tracking, generate custom reports, or build other custom integrations, our API provides the flexibility and power you need to get the job done. If you have any questions or run into any issues while using our API, don’t hesitate to reach out to us for help. You can also post questions on Stack Overflow with the Clockify tag to get help from the community.

Authentication

To authenticate your requests to your API, make sure to include either the ‘X-Api-Key’ or the ‘X-Addon-Token’ in the request header, containing your API or Addon key. If your workspace is on a subdomain (e.g. subdomain.clockify.me), you’ll need to generate a new API key in your Profile Settings that will work specifically for that workspace. This ensures that you’re accessing data from the correct workspace and helps maintain the security of your data.

Webhooks

Webhooks can enhance your workflow by keeping your add-on up-to-date with the latest changes in Clockify. With Clockify’s webhooks you can receive real-time notifications when certain events such as starting timer or deleting time entry occur in Clockify. Workspace admins can create up to 10 webhooks each, with a total of 100 webhooks allowed per workspace.

Rate limiting

Our REST API has a specific rate limit of 50 requests per second (by addon on one workspace) when accessed using X-Addon-Token. Exceeding this limit will result in an error message with the description "Too many requests".

Regional Server Prefixes

If your workspace is in a specific region, you need to change your URL prefix to access v1 API endpoints. For example, this is how backend api v1/file/image endpoint would look in EU region: https://euc1.clockify.me/api/v1/file/image

Below are the available regional server prefixes:

  • EU (Germany): euc1
  • USA: use2
  • UK: euw2
  • AU: apse2

Breaking changes

Breaking changes in APIs are modifications that disrupt existing integrations, requiring users to update their applications to maintain functionality. These changes can lead to failures or unexpected results if not addressed. See the list of breaking changes.

Experimental APIs

The experimental API has been thoroughly tested and is ready for use in production. However, please note that user feedback may lead to changes in the API’s structure or functionality. If you choose to use the experimental API, be prepared to modify your application code accordingly to accommodate any updates.

User

Add photo

Authorizations:
ApiKeyAuthAddonKeyAuth
Request Body schema: multipart/form-data
file
required
string <binary>

Image to be uploaded

Responses

Response samples

Content type
application/json
{}

Get currently logged-in user's info

Authorizations:
MarketplaceKeyAuthApiKeyAuthAddonKeyAuth
query Parameters
include-memberships
boolean
Example: include-memberships=true

If set to true, memberships will be included.

Responses

Response samples

Content type
application/json
{
  • "activeWorkspace": "64a687e29ae1f428e7ebe303",
  • "customFields": [
    ],
  • "defaultWorkspace": "64a687e29ae1f428e7ebe303",
  • "email": "johndoe@example.com",
  • "id": "5a0ab5acb07987125438b60f",
  • "memberships": [
    ],
  • "name": "John Doe",
  • "settings": {
    },
  • "status": "ACTIVE"
}

Get member's profile

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 5a0ab5acb07987125438b60f

Represents user identifier across the system.

Responses

Response samples

Content type
application/json
{
  • "email": "johndoe@example.com",
  • "hasPassword": true,
  • "hasPendingApprovalRequest": true,
  • "name": "John Doe",
  • "userCustomFieldValues": [
    ],
  • "weekStart": "MONDAY",
  • "workCapacity": "PT7H",
  • "workingDays": "[\"MONDAY\",\"TUESDAY\",\"WEDNESDAY\",\"THURSDAY\",\"FRIDAY\"]",
  • "workspaceNumber": 3
}

Update member's profile

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 5a0ab5acb07987125438b60f

Represents user identifier across the system.

Request Body schema: application/json
required
imageUrl
string

Represents an image url. A field that can only be updated for limited users.

name
string [ 1 .. 100 ] characters
Deprecated

This body field is deprecated and can only be updated for limited users. Represents name of the user and can be changed on the CAKE.com Account profile page.

removeProfileImage
boolean

Indicates whether to remove profile image or not. A field that can only be updated for limited users.

Array of objects (UpsertUserCustomFieldRequest)

Represents a list of upsert user custom field objects.

weekStart
string
Enum: "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY"

Represents a day of the week.

workCapacity
string

Represents work capacity as a time duration in the ISO-8601 format. For example, for a 7hr work day, input should be PT7H.

workingDays
string
Enum: "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY"

Represents a list of days of the week.

Responses

Request samples

Content type
application/json
{
  • "name": "John Doe",
  • "removeProfileImage": true,
  • "userCustomFields": [
    ],
  • "weekStart": "MONDAY",
  • "workCapacity": "PT7H",
  • "workingDays": "[\"MONDAY\",\"TUESDAY\",\"WEDNESDAY\",\"THURSDAY\",\"FRIDAY\"]"
}

Response samples

Content type
application/json
{
  • "email": "johndoe@example.com",
  • "hasPassword": true,
  • "hasPendingApprovalRequest": true,
  • "name": "John Doe",
  • "userCustomFieldValues": [
    ],
  • "weekStart": "MONDAY",
  • "workCapacity": "PT7H",
  • "workingDays": "[\"MONDAY\",\"TUESDAY\",\"WEDNESDAY\",\"THURSDAY\",\"FRIDAY\"]",
  • "workspaceNumber": 3
}

Find all users on workspace

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

query Parameters
email
string
Example: email=mail@example.com

If provided, you'll get a filtered list of users that contain the provided string in their email address.

project-id
string
Example: project-id=21a687e29ae1f428e7ebe606

If provided, you'll get a list of users that have access to the project.

status
string
Enum: "PENDING" "ACTIVE" "DECLINED" "INACTIVE" "ALL"
Example: status=ACTIVE

If provided, you'll get a filtered list of users with the corresponding status.

account-statuses
string
Example: account-statuses=LIMITED

If provided, you'll get a filtered list of users with the corresponding account status filter. If not, this will only filter ACTIVE, PENDING_EMAIL_VERIFICATION, and NOT_REGISTERED Users.

name
string
Example: name=John

If provided, you'll get a filtered list of users that contain the provided string in their name

sort-column
string
Enum: "ID" "EMAIL" "NAME" "NAME_LOWERCASE" "ACCESS" "HOURLYRATE" "COSTRATE"
Example: sort-column=ID

Sorting column criteria. Default value: EMAIL

sort-order
string
Enum: "ASCENDING" "DESCENDING"
Example: sort-order=ASCENDING

Sorting mode. Default value: ASCENDING

page
integer <int32>
Default: 1
Example: page=1

Page number.

page-size
integer <int32> >= 1
Default: 50
Example: page-size=50

Page size.

memberships
string
Enum: "ALL" "NONE" "WORKSPACE" "PROJECT" "USERGROUP"
Example: memberships=WORKSPACE

If provided, you'll get all users along with workspaces, groups, or projects they have access to. Default value is NONE.

include-roles
required
string
Default: "false"

If you pass along includeRoles=true, you'll get each user's detailed manager role (including projects and members which they manage)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Filter workspace users

Authorizations:
MarketplaceKeyAuthApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

Request Body schema: application/json
required
accountStatuses
Array of strings unique

If provided, you'll get a filtered list of users with the corresponding account status filter. If not, this will only filter ACTIVE, PENDING_EMAIL_VERIFICATION, and NOT_REGISTERED Users.

email
string

If provided, you'll get a filtered list of users that contain the provided string in their email address.

includeRoles
boolean

If you pass along includeRoles=true, you'll get each user's detailed manager role (including projects and members for whom they're managers)

memberships
string
Default: "NONE"
Enum: "ALL" "NONE" "WORKSPACE" "PROJECT" "USERGROUP"

If provided, you'll get all users along with workspaces, groups, or projects they have access to.

name
string

If provided, you'll get a filtered list of users that contain the provided string in their name.

page
integer <int32>

Page number.

pageSize
integer <int32>

Page size.

projectId
string

If provided, you'll get a list of users that have access to the project.

roles
Array of strings unique
Items Enum: "WORKSPACE_ADMIN" "OWNER" "TEAM_MANAGER" "PROJECT_MANAGER"

If provided, you'll get a filtered list of users that have any of the specified roles. Owners are counted as admins when filtering.

sortColumn
string
Enum: "ID" "EMAIL" "NAME" "NAME_LOWERCASE" "ACCESS" "HOURLYRATE" "COSTRATE"

Sorting criteria

sortOrder
string
Enum: "ASCENDING" "DESCENDING"

Sorting mode

status
string
Enum: "PENDING" "ACTIVE" "DECLINED" "INACTIVE" "ALL"

If provided, you'll get a filtered list of users with the corresponding status.

userGroups
Array of strings unique

If provided, you'll get a list of users that belong to the specified user group IDs.

Responses

Request samples

Content type
application/json
{
  • "accountStatuses": [
    ],
  • "email": "mail@example.com",
  • "includeRoles": true,
  • "memberships": "NONE",
  • "name": "John",
  • "page": 1,
  • "pageSize": 50,
  • "projectId": "21a687e29ae1f428e7ebe606",
  • "roles": [
    ],
  • "sortColumn": "ID",
  • "sortOrder": "ASCENDING",
  • "status": "ACTIVE",
  • "userGroups": [
    ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Update user's custom field

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 5a0ab5acb07987125438b60f

Represents user identifier across the system.

customFieldId
required
string
Example: 5e4117fe8c625f38930d57b7

Represents custom field identifier across the system.

Request Body schema: application/json
required
value
object

Represents custom field value.

Responses

Request samples

Content type
application/json
{
  • "value": "20231211-12345"
}

Response samples

Content type
application/json
{
  • "customFieldId": "5e4117fe8c625f38930d57b7",
  • "customFieldName": "TIN",
  • "customFieldType": "TXT",
  • "userId": "5a0ab5acb07987125438b60f",
  • "value": "20231211-12345"
}

Find user's team manager

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 5a0ab5acb07987125438b60f

Represents user identifier across the system.

query Parameters
sort-column
string
Enum: "ID" "EMAIL" "NAME" "NAME_LOWERCASE" "ACCESS" "HOURLYRATE" "COSTRATE"
Example: sort-column=ID

Sorting column criteria

sort-order
string
Enum: "ASCENDING" "DESCENDING"
Example: sort-order=ASCENDING

Sorting mode

page
integer <int32>
Default: 1
Example: page=1

Page number.

page-size
integer <int32> >= 1
Default: 50
Example: page-size=50

Page size.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Remove user's manager role

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 5a0ab5acb07987125438b60f

Represents user identifier across the system.

Request Body schema: application/json
required
entityId
required
string

Represents entity identifier across the system.

role
required
string
Enum: "WORKSPACE_ADMIN" "TEAM_MANAGER" "PROJECT_MANAGER"

Represents valid role.

sourceType
required
string
Value: "USER_GROUP"

Represents the source type of this request. This helps the API to determine on where to select this 'entity', and applies a corresponding action base on the endpoint. The entityId should be relative to this source, and can be used whenever the endpoint needs to access a certain resource. e.g. User group (USER_GROUP)

Responses

Request samples

Content type
application/json
{
  • "entityId": "60f924bafdaf031696ec6218",
  • "role": "WORKSPACE_ADMIN",
  • "sourceType": "USER_GROUP"
}

Give user manager role

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 5a0ab5acb07987125438b60f

Represents user identifier across the system.

Request Body schema: application/json
required
entityId
required
string

Represents entity identifier across the system.

role
required
string
Enum: "WORKSPACE_ADMIN" "TEAM_MANAGER" "PROJECT_MANAGER"

Represents valid role.

sourceType
required
string
Value: "USER_GROUP"

Represents the source type of this request. This helps the API to determine on where to select this 'entity', and applies a corresponding action base on the endpoint. The entityId should be relative to this source, and can be used whenever the endpoint needs to access a certain resource. e.g. User group (USER_GROUP)

Responses

Request samples

Content type
application/json
{
  • "entityId": "60f924bafdaf031696ec6218",
  • "role": "WORKSPACE_ADMIN",
  • "sourceType": "USER_GROUP"
}

Response samples

Content type
application/json
[
  • {
    }
]

Workspace

Get all my workspaces

Authorizations:
MarketplaceKeyAuthApiKeyAuth
query Parameters
roles
string
Enum: "WORKSPACE_ADMIN" "OWNER" "TEAM_MANAGER" "PROJECT_MANAGER"
Example: roles=WORKSPACE_ADMIN&roles=OWNER

If provided, you'll get a filtered list of workspaces where you have any of the specified roles. Owners are not counted as admins when filtering.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add workspace

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
name
string [ 1 .. 50 ] characters

Represents a workspace name.

organizationId
string

Represents the Cake organization identifier across the system.

Responses

Request samples

Content type
application/json
{
  • "name": "Cool Company",
  • "organizationId": "67d471fb56aa9668b7bfa295"
}

Response samples

Content type
application/json
{
  • "cakeOrganizationId": "67d471fb56aa9668b7bfa295",
  • "costRate": {
    },
  • "currencies": [
    ],
  • "featureSubscriptionType": "PREMIUM",
  • "features": [
    ],
  • "hourlyRate": {
    },
  • "id": "64a687e29ae1f428e7ebe303",
  • "memberships": [
    ],
  • "name": "Cool Company",
  • "subdomain": {
    },
  • "workspaceSettings": {
    }
}

Get workspace info

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

Responses

Response samples

Content type
application/json
{
  • "cakeOrganizationId": "67d471fb56aa9668b7bfa295",
  • "costRate": {
    },
  • "currencies": [
    ],
  • "featureSubscriptionType": "PREMIUM",
  • "features": [
    ],
  • "hourlyRate": {
    },
  • "id": "64a687e29ae1f428e7ebe303",
  • "memberships": [
    ],
  • "name": "Cool Company",
  • "subdomain": {
    },
  • "workspaceSettings": {
    }
}

Update workspace cost rate

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

Request Body schema: application/json
required
amount
required
integer <int32> >= 0

Represents an amount as integer.

since
string

Represents a date and time in yyyy-MM-ddThh:mm:ssZ format.

Responses

Request samples

Content type
application/json
{
  • "amount": 20000,
  • "since": "2020-01-01T00:00:00Z"
}

Response samples

Content type
application/json
{
  • "cakeOrganizationId": "67d471fb56aa9668b7bfa295",
  • "costRate": {
    },
  • "currencies": [
    ],
  • "featureSubscriptionType": "PREMIUM",
  • "features": [
    ],
  • "hourlyRate": {
    },
  • "id": "64a687e29ae1f428e7ebe303",
  • "memberships": [
    ],
  • "name": "Cool Company",
  • "subdomain": {
    },
  • "workspaceSettings": {
    }
}

Update workspace billable rate

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

Request Body schema: application/json
required
amount
required
integer <int32> >= 0

Represents an amount as integer.

currency
required
string [ 1 .. 100 ] characters
Default: "USD"

Represents a currency.

since
string

Represents a date and time in yyyy-MM-ddThh:mm:ssZ format.

Responses

Request samples

Content type
application/json
{
  • "amount": 2000,
  • "currency": "USD",
  • "since": "2020-01-01T00:00:00Z"
}

Response samples

Content type
application/json
{
  • "cakeOrganizationId": "67d471fb56aa9668b7bfa295",
  • "costRate": {
    },
  • "currencies": [
    ],
  • "featureSubscriptionType": "PREMIUM",
  • "features": [
    ],
  • "hourlyRate": {
    },
  • "id": "64a687e29ae1f428e7ebe303",
  • "memberships": [
    ],
  • "name": "Cool Company",
  • "subdomain": {
    },
  • "workspaceSettings": {
    }
}

Add user

You can add users to a workspace via API only if that workspace has a paid subscription. If the workspace has a paid subscription, you can add as many users as you want but you are limited by the number of paid user seats on that workspace.

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

query Parameters
send-email
required
string
Default: "true"

Indicates whether to send an email when user is added to the workspace.

Request Body schema: application/json
required
email
required
string

Represents email address of the user.

Responses

Request samples

Content type
application/json
{
  • "email": "johndoe@example.com"
}

Response samples

Content type
application/json
{
  • "cakeOrganizationId": "67d471fb56aa9668b7bfa295",
  • "costRate": {
    },
  • "currencies": [
    ],
  • "featureSubscriptionType": "PREMIUM",
  • "features": [
    ],
  • "hourlyRate": {
    },
  • "id": "64a687e29ae1f428e7ebe303",
  • "memberships": [
    ],
  • "name": "Cool Company",
  • "subdomain": {
    },
  • "workspaceSettings": {
    }
}

Update user's status

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 89b687e29ae1f428e7ebe912

Represents user identifier across the system.

Request Body schema: application/json
required
status
required
string
Enum: "ACTIVE" "INACTIVE"

Represents membership status.

Responses

Request samples

Content type
application/json
{
  • "status": "ACTIVE"
}

Response samples

Content type
application/json
{
  • "cakeOrganizationId": "67d471fb56aa9668b7bfa295",
  • "costRate": {
    },
  • "currencies": [
    ],
  • "featureSubscriptionType": "PREMIUM",
  • "features": [
    ],
  • "hourlyRate": {
    },
  • "id": "64a687e29ae1f428e7ebe303",
  • "memberships": [
    ],
  • "name": "Cool Company",
  • "subdomain": {
    },
  • "workspaceSettings": {
    }
}

Update user's cost rate

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 89b687e29ae1f428e7ebe912

Represents user identifier across the system.

Request Body schema: application/json
required
amount
required
integer <int32> >= 0

Represents an amount as integer.

since
string

Represents a date and time in yyyy-MM-ddThh:mm:ssZ format.

Responses

Request samples

Content type
application/json
{
  • "amount": 20000,
  • "since": "2020-01-01T00:00:00Z"
}

Response samples

Content type
application/json
{
  • "cakeOrganizationId": "67d471fb56aa9668b7bfa295",
  • "costRate": {
    },
  • "currencies": [
    ],
  • "featureSubscriptionType": "PREMIUM",
  • "features": [
    ],
  • "hourlyRate": {
    },
  • "id": "64a687e29ae1f428e7ebe303",
  • "memberships": [
    ],
  • "name": "Cool Company",
  • "subdomain": {
    },
  • "workspaceSettings": {
    }
}

Update user's hourly rate

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 89b687e29ae1f428e7ebe912

Represents user identifier across the system.

Request Body schema: application/json
required
amount
required
integer <int32> >= 0

Represents an hourly rate amount as integer.

since
string

Represents a date and time in yyyy-MM-ddThh:mm:ssZ format.

Responses

Request samples

Content type
application/json
{
  • "amount": 20000,
  • "since": "2020-01-01T00:00:00Z"
}

Response samples

Content type
application/json
{
  • "cakeOrganizationId": "67d471fb56aa9668b7bfa295",
  • "costRate": {
    },
  • "currencies": [
    ],
  • "featureSubscriptionType": "PREMIUM",
  • "features": [
    ],
  • "hourlyRate": {
    },
  • "id": "64a687e29ae1f428e7ebe303",
  • "memberships": [
    ],
  • "name": "Cool Company",
  • "subdomain": {
    },
  • "workspaceSettings": {
    }
}

Webhooks

Get all webhooks for addon on workspace

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents a workspace identifier across the system.

addonId
required
string
Example: 64c777ddd3fcab07cfbb210c

Represents an addon identifier across the system.

Responses

Response samples

Content type
application/json
{
  • "webhooks": [
    ],
  • "workspaceWebhookCount": 5
}

Get all webhooks on workspace

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents a workspace identifier across the system.

query Parameters
type
string
Enum: "USER_CREATED" "SYSTEM" "ADDON"
Example: type=USER_CREATED

Represents a webhook type.

Responses

Response samples

Content type
application/json
{
  • "webhooks": [
    ],
  • "workspaceWebhookCount": 5
}

Create webhooks

Creating a webhook generates a new token which can be used to verify that the webhook being sent was sent by Clockify, as it will always be present in the header.

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents a workspace identifier across the system.

Request Body schema: application/json
required
name
string [ 2 .. 30 ] characters

Represents a webhook name.

triggerSource
required
Array of strings

Represents a list of trigger sources.

triggerSourceType
required
string
Enum: "PROJECT_ID" "USER_ID" "TAG_ID" "TASK_ID" "WORKSPACE_ID" "ASSIGNMENT_ID" "EXPENSE_ID"

Represents a webhook event trigger source type.

url
required
string

Represents a webhook target url.

webhookEvent
required
string
Enum: "NEW_PROJECT" "NEW_TASK" "NEW_CLIENT" "NEW_TIMER_STARTED" "TIMER_STOPPED" "TIME_ENTRY_UPDATED" "TIME_ENTRY_DELETED" "TIME_ENTRY_BATCH_DELETED" "TIME_ENTRY_SPLIT" "NEW_TIME_ENTRY" "TIME_ENTRY_RESTORED" "NEW_TAG" "USER_DELETED_FROM_WORKSPACE" "USER_JOINED_WORKSPACE" "USER_DEACTIVATED_ON_WORKSPACE" "USER_ACTIVATED_ON_WORKSPACE" "USER_EMAIL_CHANGED" "USER_UPDATED" "NEW_INVOICE" "INVOICE_UPDATED" "NEW_APPROVAL_REQUEST" "APPROVAL_REQUEST_STATUS_UPDATED" "TIME_OFF_REQUESTED" "TIME_OFF_REQUEST_APPROVED" "TIME_OFF_REQUEST_REJECTED" "TIME_OFF_REQUEST_WITHDRAWN" "BALANCE_UPDATED" "TAG_UPDATED" "TAG_DELETED" "TASK_UPDATED" "CLIENT_UPDATED" "TASK_DELETED" "CLIENT_DELETED" "EXPENSE_RESTORED" "ASSIGNMENT_CREATED" "ASSIGNMENT_DELETED" "ASSIGNMENT_PUBLISHED" "ASSIGNMENT_UPDATED" "EXPENSE_CREATED" "EXPENSE_DELETED" "EXPENSE_UPDATED" "PROJECT_UPDATED" "PROJECT_DELETED" "USER_GROUP_CREATED" "USER_GROUP_UPDATED" "USER_GROUP_DELETED" "USERS_INVITED_TO_WORKSPACE" "LIMITED_USERS_ADDED_TO_WORKSPACE" "COST_RATE_UPDATED" "BILLABLE_RATE_UPDATED"

Represents a webhook event type.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "authToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI2NGI3YmU3YmUwODM1Yjc2ZDYzOTY5YTciLCJtdWx0aUZhY3RvciI6dHJ1ZSwiaXNzIjoiY2xvY2tpZnkiLCJuYW1lIjoiTWFydGluIExsb3lkIiwiZXhwIjoxNjkzMzY5MzEwLCJ0eXBlIjoiYWNjZXNzIiwiaWF0IjoxNjkzMzI2MTEwLCJqdGkiOiJZVGcxT0Raak9XTXRPRGRsWVMwME5qZ3hMVGxpTlRndE5UQmlOVEprTmpOaE",
  • "enabled": true,
  • "id": "76a687e29ae1f428e7ebe101",
  • "name": "stripe",
  • "triggerSource": [
    ],
  • "triggerSourceType": "PROJECT_ID",
  • "userId": "5a0ab5acb07987125438b60f",
  • "webhookEvent": "NEW_PROJECT",
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Delete webhook

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents a workspace identifier across the system.

webhookId
required
string
Example: 5b715448b0798751107918ab

Represents a webhook identifier across the system.

Responses

Get a specific webhook by id

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents a workspace identifier across the system.

webhookId
required
string
Example: 5b715448b0798751107918ab

Represents a webhook identifier across the system.

Responses

Response samples

Content type
application/json
{
  • "authToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI2NGI3YmU3YmUwODM1Yjc2ZDYzOTY5YTciLCJtdWx0aUZhY3RvciI6dHJ1ZSwiaXNzIjoiY2xvY2tpZnkiLCJuYW1lIjoiTWFydGluIExsb3lkIiwiZXhwIjoxNjkzMzY5MzEwLCJ0eXBlIjoiYWNjZXNzIiwiaWF0IjoxNjkzMzI2MTEwLCJqdGkiOiJZVGcxT0Raak9XTXRPRGRsWVMwME5qZ3hMVGxpTlRndE5UQmlOVEprTmpOaE",
  • "enabled": true,
  • "id": "76a687e29ae1f428e7ebe101",
  • "name": "stripe",
  • "triggerSource": [
    ],
  • "triggerSourceType": "PROJECT_ID",
  • "userId": "5a0ab5acb07987125438b60f",
  • "webhookEvent": "NEW_PROJECT",
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Update a webhook

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents a workspace identifier across the system.

webhookId
required
string
Example: 5b715448b0798751107918ab

Represents a webhook identifier across the system.

Request Body schema: application/json
required
name
string [ 2 .. 30 ] characters

Represents a webhook name.

triggerSource
required
Array of strings

Represents a list of trigger sources.

triggerSourceType
required
string
Enum: "PROJECT_ID" "USER_ID" "TAG_ID" "TASK_ID" "WORKSPACE_ID" "ASSIGNMENT_ID" "EXPENSE_ID"

Represents a webhook event trigger source type.

url
required
string

Represents a workspace identifier across the system.

webhookEvent
required
string
Enum: "NEW_PROJECT" "NEW_TASK" "NEW_CLIENT" "NEW_TIMER_STARTED" "TIMER_STOPPED" "TIME_ENTRY_UPDATED" "TIME_ENTRY_DELETED" "TIME_ENTRY_BATCH_DELETED" "TIME_ENTRY_SPLIT" "NEW_TIME_ENTRY" "TIME_ENTRY_RESTORED" "NEW_TAG" "USER_DELETED_FROM_WORKSPACE" "USER_JOINED_WORKSPACE" "USER_DEACTIVATED_ON_WORKSPACE" "USER_ACTIVATED_ON_WORKSPACE" "USER_EMAIL_CHANGED" "USER_UPDATED" "NEW_INVOICE" "INVOICE_UPDATED" "NEW_APPROVAL_REQUEST" "APPROVAL_REQUEST_STATUS_UPDATED" "TIME_OFF_REQUESTED" "TIME_OFF_REQUEST_APPROVED" "TIME_OFF_REQUEST_REJECTED" "TIME_OFF_REQUEST_WITHDRAWN" "BALANCE_UPDATED" "TAG_UPDATED" "TAG_DELETED" "TASK_UPDATED" "CLIENT_UPDATED" "TASK_DELETED" "CLIENT_DELETED" "EXPENSE_RESTORED" "ASSIGNMENT_CREATED" "ASSIGNMENT_DELETED" "ASSIGNMENT_PUBLISHED" "ASSIGNMENT_UPDATED" "EXPENSE_CREATED" "EXPENSE_DELETED" "EXPENSE_UPDATED" "PROJECT_UPDATED" "PROJECT_DELETED" "USER_GROUP_CREATED" "USER_GROUP_UPDATED" "USER_GROUP_DELETED" "USERS_INVITED_TO_WORKSPACE" "LIMITED_USERS_ADDED_TO_WORKSPACE" "COST_RATE_UPDATED" "BILLABLE_RATE_UPDATED"

Represents a webhook event type.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "authToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI2NGI3YmU3YmUwODM1Yjc2ZDYzOTY5YTciLCJtdWx0aUZhY3RvciI6dHJ1ZSwiaXNzIjoiY2xvY2tpZnkiLCJuYW1lIjoiTWFydGluIExsb3lkIiwiZXhwIjoxNjkzMzY5MzEwLCJ0eXBlIjoiYWNjZXNzIiwiaWF0IjoxNjkzMzI2MTEwLCJqdGkiOiJZVGcxT0Raak9XTXRPRGRsWVMwME5qZ3hMVGxpTlRndE5UQmlOVEprTmpOaE",
  • "enabled": true,
  • "id": "76a687e29ae1f428e7ebe101",
  • "name": "stripe",
  • "triggerSource": [
    ],
  • "triggerSourceType": "PROJECT_ID",
  • "userId": "5a0ab5acb07987125438b60f",
  • "webhookEvent": "NEW_PROJECT",
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Get logs for a webhook

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents a workspace identifier across the system.

webhookId
required
string

Represents a webhook identifier across the system.

query Parameters
page
integer <int32>
Default: 0
Example: page=1

Page number.

size
integer <int32> >= 1
Default: 50
Example: size=50

Page size.

Request Body schema: application/json
required
from
string <date-time>

Represents date and time in yyyy-MM-ddThh:mm:ssZ format. If provided, results will include logs which occurred after this value.

sortByNewest
boolean

If set to true, logs will be sorted with most recent first.

status
string
Enum: "ALL" "SUCCEEDED" "FAILED"

Filters logs by status.

to
string <date-time>

Represents date and time in yyyy-MM-ddThh:mm:ssZ format. If provided, results will include logs which occurred before this value.

Responses

Request samples

Content type
application/json
{
  • "from": "2023-02-01T13:00:46Z",
  • "sortByNewest": true,
  • "status": "ALL",
  • "to": "2023-02-05T13:00:46Z"
}

Response samples

Content type
application/json
[
  • {
    }
]

Generate new token

Generates a new webhook token and invalidates previous one

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents a workspace identifier across the system.

webhookId
required
string
Example: 5b715448b0798751107918ab

Represents a webhook identifier across the system.

Responses

Response samples

Content type
application/json
{
  • "authToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI2NGI3YmU3YmUwODM1Yjc2ZDYzOTY5YTciLCJtdWx0aUZhY3RvciI6dHJ1ZSwiaXNzIjoiY2xvY2tpZnkiLCJuYW1lIjoiTWFydGluIExsb3lkIiwiZXhwIjoxNjkzMzY5MzEwLCJ0eXBlIjoiYWNjZXNzIiwiaWF0IjoxNjkzMzI2MTEwLCJqdGkiOiJZVGcxT0Raak9XTXRPRGRsWVMwME5qZ3hMVGxpTlRndE5UQmlOVEprTmpOaE",
  • "enabled": true,
  • "id": "76a687e29ae1f428e7ebe101",
  • "name": "stripe",
  • "triggerSource": [
    ],
  • "triggerSourceType": "PROJECT_ID",
  • "userId": "5a0ab5acb07987125438b60f",
  • "webhookEvent": "NEW_PROJECT",
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Approval

Get approval requests

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

query Parameters
status
string
Enum: "PENDING" "APPROVED" "WITHDRAWN_APPROVAL"
Example: status=PENDING

Filters results based from the provided approval state.

sort-column
string
Enum: "ID" "USER_ID" "START" "UPDATED_AT"
Example: sort-column=START

Represents the column name to be used as sorting criteria.

sort-order
string
Enum: "ASCENDING" "DESCENDING"
Example: sort-order=ASCENDING

Represents the sorting order.

page
integer <int32>
Default: 1
Example: page=1

Page number.

page-size
integer <int32> >= 1
Default: 50
Example: page-size=50

Page size.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Submit approval request

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

Request Body schema: application/json
required
period
string
Enum: "WEEKLY" "SEMI_MONTHLY" "MONTHLY"

Specifies the approval period. It has to match the workspace approval period setting.

periodStart
required
string

Specifies an approval period start date in yyyy-MM-ddThh:mm:ssZ format.

Responses

Request samples

Content type
application/json
{
  • "period": "MONTHLY",
  • "periodStart": "2020-01-01T00:00:00.000Z"
}

Response samples

Content type
application/json
{
  • "creator": {
    },
  • "dateRange": {
    },
  • "id": "567687e29ae1f428e7ebf564",
  • "owner": {
    },
  • "status": {
    },
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Re-submit rejected/withdrawn entries/expenses for approval

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

Request Body schema: application/json
required
period
string
Enum: "WEEKLY" "SEMI_MONTHLY" "MONTHLY"

Specifies the approval period. It has to match the workspace approval period setting.

periodStart
required
string

Specifies an approval period start date in yyyy-MM-ddThh:mm:ssZ format.

Responses

Request samples

Content type
application/json
{
  • "period": "MONTHLY",
  • "periodStart": "2020-01-01T00:00:00.000Z"
}

Submit approval request for user

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 5a0ab5acb07987125438b60f

Represents user identifier across the system.

Request Body schema: application/json
required
period
string
Enum: "WEEKLY" "SEMI_MONTHLY" "MONTHLY"

Specifies the approval period. It has to match the workspace approval period setting.

periodStart
required
string

Specifies an approval period start date in yyyy-MM-ddThh:mm:ssZ format.

Responses

Request samples

Content type
application/json
{
  • "period": "MONTHLY",
  • "periodStart": "2020-01-01T00:00:00.000Z"
}

Response samples

Content type
application/json
{
  • "creator": {
    },
  • "dateRange": {
    },
  • "id": "567687e29ae1f428e7ebf564",
  • "owner": {
    },
  • "status": {
    },
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Re-submit rejected/withdrawn entries/expenses for approval for user

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

userId
required
string
Example: 5a0ab5acb07987125438b60f

Represents user identifier across the system.

Request Body schema: application/json
required
period
string
Enum: "WEEKLY" "SEMI_MONTHLY" "MONTHLY"

Specifies the approval period. It has to match the workspace approval period setting.

periodStart
required
string

Specifies an approval period start date in yyyy-MM-ddThh:mm:ssZ format.

Responses

Request samples

Content type
application/json
{
  • "period": "MONTHLY",
  • "periodStart": "2020-01-01T00:00:00.000Z"
}

Update approval request

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

approvalRequestId
required
string
Example: 940ab5acb07987125438b65y

Represents approval request identifier across the system.

Request Body schema: application/json
required
note
string

Additional notes for the approval request.

state
required
string
Enum: "PENDING" "APPROVED" "WITHDRAWN_SUBMISSION" "WITHDRAWN_APPROVAL" "REJECTED"

Specifies the approval state to set.

Responses

Request samples

Content type
application/json
{
  • "note": "This is a sample note.",
  • "state": "PENDING"
}

Response samples

Content type
application/json
{
  • "creator": {
    },
  • "dateRange": {
    },
  • "id": "567687e29ae1f428e7ebf564",
  • "owner": {
    },
  • "status": {
    },
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Client

Find clients on workspace

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

query Parameters
name
string
Example: name=Client X

Filters client results that matches with the string provided in their client name.

sort-column
string
Default: "NAME"
Example: sort-column=NAME

Column name that will be used as criteria for sorting results.

sort-order
string
Default: "ASCENDING"
Example: sort-order=ASCENDING

Sorting mode

page
integer <int32>
Default: 1
Example: page=1

Page number.

page-size
integer <int32> >= 1
Default: 50
Example: page-size=50

Page size.

archived
boolean

Filter whether to include archived clients or not.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add a new client

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

Request Body schema: application/json
required
address
string [ 0 .. 3000 ] characters

Represents client's address.

email
string

Represents client email.

name
string [ 0 .. 100 ] characters

Represents client name.

note
string [ 0 .. 3000 ] characters

Represents additional notes for the client.

Responses

Request samples

Content type
application/json
{
  • "address": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
  • "email": "clientx@example.com",
  • "name": "Client X",
  • "note": "This is a sample note for the client."
}

Response samples

Content type
application/json
{
  • "address": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
  • "archived": true,
  • "currencyCode": "USD",
  • "currencyId": "33t687e29ae1f428e7ebe505",
  • "email": "clientx@example.com",
  • "id": "44a687e29ae1f428e7ebe305",
  • "name": "Client X",
  • "note": "This is a sample note for the client.",
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Delete client

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
id
required
string
Example: 44a687e29ae1f428e7ebe305

Represents client identifier across the system.

workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

Responses

Response samples

Content type
application/json
{
  • "address": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
  • "archived": true,
  • "currencyId": "33t687e29ae1f428e7ebe505",
  • "email": "clientx@example.com",
  • "id": "44a687e29ae1f428e7ebe305",
  • "name": "Client X",
  • "note": "This is a sample note for the client.",
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Get client by ID

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
id
required
string
Example: 44a687e29ae1f428e7ebe305

Represents client identifier across the system.

workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

Responses

Response samples

Content type
application/json
{
  • "address": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
  • "archived": true,
  • "currencyCode": "USD",
  • "currencyId": "33t687e29ae1f428e7ebe505",
  • "email": "clientx@example.com",
  • "id": "44a687e29ae1f428e7ebe305",
  • "name": "Client X",
  • "note": "This is a sample note for the client.",
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Update client

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
id
required
string
Example: 44a687e29ae1f428e7ebe305

Represents client identifier across the system.

workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

query Parameters
archive-projects
boolean
mark-tasks-as-done
boolean
Request Body schema: application/json
required
address
string [ 0 .. 3000 ] characters

Represents client's address.

archived
boolean

Indicates if client will be archived or not.

currencyId
string

Represents currency identifier across the system.

email
string

Represents client email.

name
string [ 0 .. 100 ] characters

Represents client name.

note
string [ 0 .. 3000 ] characters

Represents additional notes for the client.

Responses

Request samples

Content type
application/json
{
  • "address": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
  • "archived": true,
  • "currencyId": "53a687e29ae1f428e7ebe888",
  • "email": "clientx@example.com",
  • "name": "Client X",
  • "note": "This is a sample note for the client."
}

Response samples

Content type
application/json
{
  • "address": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
  • "archived": true,
  • "currencyId": "33t687e29ae1f428e7ebe505",
  • "email": "clientx@example.com",
  • "id": "44a687e29ae1f428e7ebe305",
  • "name": "Client X",
  • "note": "This is a sample note for the client.",
  • "workspaceId": "64a687e29ae1f428e7ebe303"
}

Custom fields

Get custom fields on workspace

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

query Parameters
name
string
Example: name=location

If provided, you'll get a filtered list of custom fields that contain the provided string in their name.

status
string
Enum: "INACTIVE" "VISIBLE" "INVISIBLE"
Example: status=VISIBLE

If provided, you'll get a filtered list of custom fields that matches the provided string with the custom field status.

entity-type
string
Example: entity-type=TIMEENTRY&entity-type=USER

If provided, you'll get a filtered list of custom fields that matches the provided string with the custom field entity type.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create custom fields on workspace

Authorizations:
ApiKeyAuthAddonKeyAuth
path Parameters
workspaceId
required
string
Example: 64a687e29ae1f428e7ebe303

Represents workspace identifier across the system.

Request Body schema: application/json
required
allowedValues
Array of strings

Represents a list of custom field's allowed values.

description
string

Represents custom field description.

entityType
string
Enum: "TIMEENTRY" "USER"

Represents custom field entity type

name
required
string

Represents custom field name.

onlyAdminCanEdit
boolean

Flag to set whether custom field is modifiable only by admin users.

placeholder
string

Represents custom field placeholder value.

status
string
Enum: "INACTIVE" "VISIBLE" "INVISIBLE"

Represents custom field status

type
required
string
Enum: "TXT" "NUMBER" "DROPDOWN_SINGLE" "DROPDOWN_MULTIPLE" "CHECKBOX" "LINK"

Represents custom field type.

workspaceDefaultValue
object

Represents a custom field's default value in the workspace.

  • if type = NUMBER, then value must be a number
  • if type = DROPDOWN_MULTIPLE, value must be a list
  • if type = CHECKBOX, value must be true/false
  • otherwise any string
  • Responses

    Request samples

    Content type
    application/json
    {
    • "allowedValues": [
      ],
    • "description": "This field contains a location.",
    • "entityType": "TIMEENTRY",
    • "name": "location",
    • "onlyAdminCanEdit": true,
    • "placeholder": "Location",
    • "status": "VISIBLE",
    • "type": "DROPDOWN_MULTIPLE",
    • "workspaceDefaultValue": "Manila"
    }

    Delete custom field

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    customFieldId
    required
    string
    Example: 26a687e29ae1f428e7ebe101

    Represents custom field identifier across the system.

    Responses

    Update custom field on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    customFieldId
    required
    string
    Example: 26a687e29ae1f428e7ebe101

    Represents custom field identifier across the system.

    Request Body schema: application/json
    required
    allowedValues
    Array of strings

    Represents a list of custom field's allowed values.

    description
    string

    Represents custom field description.

    name
    required
    string [ 2 .. 250 ] characters

    Represents custom field name.

    onlyAdminCanEdit
    boolean

    Flag to set whether custom field is modifiable only by admin users.

    placeholder
    string

    Represents a custom field placeholder value.

    required
    boolean

    Flag to set whether custom field is mandatory or not.

    status
    string
    Enum: "INACTIVE" "VISIBLE" "INVISIBLE"

    Represents custom field status

    type
    required
    string
    Enum: "TXT" "NUMBER" "DROPDOWN_SINGLE" "DROPDOWN_MULTIPLE" "CHECKBOX" "LINK"

    Represents custom field type.

    workspaceDefaultValue
    object

    Represents a custom field's default value in the workspace.

    Responses

    Request samples

    Content type
    application/json
    {
    • "allowedValues": [
      ],
    • "description": "This field contains a location.",
    • "name": "location",
    • "onlyAdminCanEdit": true,
    • "placeholder": "This is a sample placeholder.",
    • "required": true,
    • "status": "VISIBLE",
    • "type": "DROPDOWN_MULTIPLE",
    • "workspaceDefaultValue": "Manila"
    }

    Response samples

    Content type
    application/json
    {
    • "allowedValues": [
      ],
    • "description": "This field contains a location.",
    • "entityType": "USER",
    • "id": "44a687e29ae1f428e7ebe305",
    • "name": "location",
    • "onlyAdminCanEdit": true,
    • "placeholder": "Location",
    • "projectDefaultValues": [
      ],
    • "required": true,
    • "status": "VISIBLE",
    • "type": "DROPDOWN_MULTIPLE",
    • "workspaceDefaultValue": "Manila",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Get custom fields on project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 5b641568b07987035750505e

    Represents project identifier across the system.

    query Parameters
    status
    string
    Enum: "INACTIVE" "VISIBLE" "INVISIBLE"
    Example: status=INACTIVE

    If provided, you'll get a filtered list of custom fields that matches the provided string with the custom field status.

    entity-type
    string
    Example: entity-type=TIMEENTRY

    If provided, you'll get a filtered list of custom fields that matches the provided string with the custom field entity type.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Remove custom field from project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents project identifier across the system.

    customFieldId
    required
    string
    Example: 26a687e29ae1f428e7ebe101

    Represents custom field identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "allowedValues": [
      ],
    • "description": "This field contains a location.",
    • "entityType": "USER",
    • "id": "44a687e29ae1f428e7ebe305",
    • "name": "location",
    • "onlyAdminCanEdit": true,
    • "placeholder": "Location",
    • "projectDefaultValues": [
      ],
    • "required": true,
    • "status": "VISIBLE",
    • "type": "DROPDOWN_MULTIPLE",
    • "workspaceDefaultValue": "Manila",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Update custom field on project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents project identifier across the system.

    customFieldId
    required
    string
    Example: 26a687e29ae1f428e7ebe101

    Represents custom field identifier across the system.

    Request Body schema: application/json
    required
    defaultValue
    object

    Represents a custom field's default value.

    status
    string
    Enum: "INACTIVE" "VISIBLE" "INVISIBLE"

    Represents custom field status.

    Responses

    Request samples

    Content type
    application/json
    {
    • "defaultValue": "Manila",
    • "status": "VISIBLE"
    }

    Response samples

    Content type
    application/json
    {
    • "allowedValues": [
      ],
    • "description": "This field contains a location.",
    • "entityType": "USER",
    • "id": "44a687e29ae1f428e7ebe305",
    • "name": "location",
    • "onlyAdminCanEdit": true,
    • "placeholder": "Location",
    • "projectDefaultValues": [
      ],
    • "required": true,
    • "status": "VISIBLE",
    • "type": "DROPDOWN_MULTIPLE",
    • "workspaceDefaultValue": "Manila",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Expense

    Get all expenses on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    user-id
    string
    Example: user-id=5a0ab5acb07987125438b60f

    If provided, you'll get a filtered list of expenses which match the provided string in the user ID linked to the expense.

    Responses

    Response samples

    Content type
    application/json
    {
    • "dailyTotals": [
      ],
    • "expenses": {
      },
    • "weeklyTotals": [
      ]
    }

    Create expense

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: multipart/form-data
    amount
    required
    number <double> <= 92233720368547760

    Represents expense amount as double data type.

    billable
    boolean

    Indicates whether expense is billable or not.

    categoryId
    required
    string

    Represents category identifier across the system.

    date
    required
    string <date-time>

    Provides a valid yyyy-MM-ddThh:mm:ssZ format date.

    file
    required
    string <binary>
    notes
    string [ 0 .. 3000 ] characters

    Represents notes for an expense.

    projectId
    required
    string

    Represents project identifier across the system.

    taskId
    string

    Represents task identifier across the system.

    userId
    required
    string

    Represents user identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "billable": true,
    • "categoryId": "45y687e29ae1f428e7ebe890",
    • "date": "2020-01-01",
    • "fileId": "745687e29ae1f428e7ebe890",
    • "id": "64c777ddd3fcab07cfbb210c",
    • "locked": true,
    • "notes": "This is a sample note for this expense.",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "quantity": 0.1,
    • "taskId": "25b687e29ae1f428e7ebe123",
    • "total": 10500.5,
    • "userId": "89b687e29ae1f428e7ebe912",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Get all expense categories

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    sort-column
    string
    Value: "NAME"
    Example: sort-column=NAME

    Represents the column name to be used as sorting criteria.

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Represents the sorting order.

    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    archived
    boolean
    Example: archived=true

    Flag to filter results based on whether category is archived or not.

    name
    string
    Example: name=procurement

    If provided, you'll get a filtered list of expense categories that matches the provided string in their name.

    Responses

    Response samples

    Content type
    application/json
    {
    • "categories": [
      ],
    • "count": 20
    }

    Add expense category

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    hasUnitPrice
    boolean

    Flag whether expense category has unit price or none.

    name
    required
    string [ 0 .. 250 ] characters

    Represents a valid expense category name.

    priceInCents
    integer <int32>

    Represents price in cents as integer.

    unit
    string

    Represents a valid expense category unit.

    Responses

    Request samples

    Content type
    application/json
    {
    • "hasUnitPrice": true,
    • "name": "Procurement",
    • "priceInCents": 1000,
    • "unit": "piece"
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "hasUnitPrice": true,
    • "id": "89a687e29ae1f428e7ebe303",
    • "name": "Procurement",
    • "priceInCents": 1000,
    • "unit": "piece",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Delete expense category

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    categoryId
    required
    string
    Example: 89a687e29ae1f428e7ebe567

    Represents category identifier across the system.

    Responses

    Update expense category

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    categoryId
    required
    string
    Example: 89a687e29ae1f428e7ebe567

    Represents category identifier across the system.

    Request Body schema: application/json
    required
    hasUnitPrice
    boolean

    Flag whether expense category has unit price or none.

    name
    required
    string [ 0 .. 250 ] characters

    Represents a valid expense category name.

    priceInCents
    integer <int32>

    Represents price in cents as integer.

    unit
    string

    Represents a valid expense category unit.

    Responses

    Request samples

    Content type
    application/json
    {
    • "hasUnitPrice": true,
    • "name": "Procurement",
    • "priceInCents": 1000,
    • "unit": "piece"
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "hasUnitPrice": true,
    • "id": "89a687e29ae1f428e7ebe303",
    • "name": "Procurement",
    • "priceInCents": 1000,
    • "unit": "piece",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Archive expense category

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    categoryId
    required
    string
    Example: 89a687e29ae1f428e7ebe567

    Represents category identifier across the system.

    Request Body schema: application/json
    required
    archived
    boolean

    Flag whether to archive the expense category or not.

    Responses

    Request samples

    Content type
    application/json
    {
    • "archived": true
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "hasUnitPrice": true,
    • "id": "89a687e29ae1f428e7ebe303",
    • "name": "Procurement",
    • "priceInCents": 1000,
    • "unit": "piece",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Delete expense

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    expenseId
    required
    string
    Example: 64c777ddd3fcab07cfbb210c

    Represents expense identifier across the system.

    Responses

    Get expense by ID

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    expenseId
    required
    string
    Example: 64c777ddd3fcab07cfbb210c

    Represents expense identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "billable": true,
    • "categoryId": "45y687e29ae1f428e7ebe890",
    • "date": "2020-01-01",
    • "fileId": "745687e29ae1f428e7ebe890",
    • "id": "64c777ddd3fcab07cfbb210c",
    • "locked": true,
    • "notes": "This is a sample note for this expense.",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "quantity": 0.1,
    • "taskId": "25b687e29ae1f428e7ebe123",
    • "total": 10500.5,
    • "userId": "89b687e29ae1f428e7ebe912",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Update expense

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    expenseId
    required
    string
    Example: 64c777ddd3fcab07cfbb210c

    Represents expense identifier across the system.

    Request Body schema: multipart/form-data
    amount
    required
    number <double> [ 0 .. 92233720368547760 ]

    Represents expense amount as double data type.

    billable
    boolean

    Indicates whether expense is billable or not.

    categoryId
    required
    string

    Represents category identifier across the system.

    changeFields
    required
    Array of strings
    Items Enum: "USER" "DATE" "PROJECT" "TASK" "CATEGORY" "NOTES" "AMOUNT" "BILLABLE" "FILE"

    Represents a list of expense change fields.

    date
    required
    string <date-time>

    Provides a valid yyyy-MM-ddThh:mm:ssZ format date.

    file
    required
    string <binary>
    notes
    string [ 0 .. 3000 ] characters

    Represents notes for an expense.

    projectId
    string

    Represents project identifier across the system.

    taskId
    string

    Represents task identifier across the system.

    userId
    required
    string

    Represents user identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "billable": true,
    • "categoryId": "45y687e29ae1f428e7ebe890",
    • "date": "2020-01-01",
    • "fileId": "745687e29ae1f428e7ebe890",
    • "id": "64c777ddd3fcab07cfbb210c",
    • "locked": true,
    • "notes": "This is a sample note for this expense.",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "quantity": 0.1,
    • "taskId": "25b687e29ae1f428e7ebe123",
    • "total": 10500.5,
    • "userId": "89b687e29ae1f428e7ebe912",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Download receipt

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    fileId
    required
    string
    Example: 745687e29ae1f428e7ebe890

    Represents file identifier across the system.

    expenseId
    required
    string
    Example: 64c777ddd3fcab07cfbb210c

    Represents expense identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Responses

    Holiday

    Get holidays on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    query Parameters
    assigned-to
    string
    Example: assigned-to=60f924bafdaf031696ec6218

    If provided, you'll get a filtered list of holidays assigned to user.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Create holiday

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    object (AutomaticTimeEntryCreationRequest)

    Provides automatic time entry creation settings.

    color
    string^#(?:[0-9a-fA-F]{6}){1}$

    Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format.

    required
    object (DatePeriodRequest)

    Provide startDate and endDate for the holiday.

    everyoneIncludingNew
    boolean

    Indicates whether the holiday is shown to new users.

    name
    required
    string [ 2 .. 100 ] characters

    Provide the name of the holiday.

    occursAnnually
    boolean

    Indicates whether the holiday occurs annually.

    object (UserGroupIdsSchema)

    Provide list with user group ids and corresponding status.

    object (UserIdsSchema)

    Provide list with user ids and corresponding status.

    Responses

    Request samples

    Content type
    application/json
    {
    • "automaticTimeEntryCreation": {
      },
    • "color": "#8BC34A",
    • "datePeriod": {
      },
    • "everyoneIncludingNew": true,
    • "name": "Labour Day",
    • "occursAnnually": true,
    • "userGroups": {
      },
    • "users": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "automaticTimeEntryCreation": false,
    • "datePeriod": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "New Year's Day",
    • "occursAnnually": true,
    • "projectId": "65b36d3c525e243c48f9150f",
    • "taskId": "65b36d46fa3df8607e42d21a",
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Get holiday in specific period

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    query Parameters
    assigned-to
    required
    string
    Example: assigned-to=60f924bafdaf031696ec6218

    If provided, you'll get a filtered list of holidays assigned to user.

    start
    required
    string
    Example: start=2022-12-03

    If provided, you'll get a filtered list of holidays starting from start date. Expected date format yyyy-mm-dd

    end
    required
    string
    Example: end=2022-12-05

    If provided, you'll get a filtered list of holidays ending by end date. Expected date format yyyy-mm-dd

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Delete holiday

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    holidayId
    required
    string
    Example: 60f927920658241e3cf35e02

    Represents holiday identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "automaticTimeEntryCreation": {
      },
    • "color": "#8BC34A",
    • "datePeriod": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "New Year's Day",
    • "occursAnnually": true,
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Update holiday

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    holidayId
    required
    string
    Example: 60f927920658241e3cf35e02

    Represents holiday identifier across the system.

    Request Body schema: application/json
    required
    object (AutomaticTimeEntryCreationRequest)

    Provides automatic time entry creation settings.

    color
    string^#(?:[0-9a-fA-F]{6}){1}$

    Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format.

    required
    object (DatePeriodRequest)

    Provide startDate and endDate for the holiday.

    everyoneIncludingNew
    boolean

    Indicates whether the holiday is shown to new users.

    name
    required
    string

    Provide the name you would like to use for updating the holiday.

    occursAnnually
    required
    boolean

    Indicates whether the holiday occurs annually.

    object (ContainsUserGroupFilterRequest)

    Provide list with user group ids and corresponding status.

    object (ContainsUsersFilterRequestForHoliday)

    Provide list with users ids and corresponding status.

    Responses

    Request samples

    Content type
    application/json
    {
    • "automaticTimeEntryCreation": {
      },
    • "color": "#8BC34A",
    • "datePeriod": {
      },
    • "everyoneIncludingNew": false,
    • "name": "New Year's Day",
    • "occursAnnually": true,
    • "userGroups": {
      },
    • "users": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "automaticTimeEntryCreation": false,
    • "datePeriod": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "New Year's Day",
    • "occursAnnually": true,
    • "projectId": "65b36d3c525e243c48f9150f",
    • "taskId": "65b36d46fa3df8607e42d21a",
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Invoice

    Get all invoices on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    statuses
    string
    Enum: "UNSENT" "SENT" "PAID" "PARTIALLY_PAID" "VOID" "OVERDUE"
    Example: statuses=UNSENT&statuses=PAID

    If provided, you'll get a filtered result of invoices that matches the provided string in the user ID linked to the expense.

    sort-column
    string
    Enum: "ID" "CLIENT" "DUE_ON" "ISSUE_DATE" "AMOUNT" "BALANCE"
    Example: sort-column=CLIENT

    Valid column name as sorting criteria. Default: ID

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Sort order. Default: ASCENDING

    Responses

    Response samples

    Content type
    application/json
    {
    • "invoices": [
      ],
    • "total": 100
    }

    Add invoice

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    clientId
    required
    string

    Represents client identifier across the system.

    currency
    required
    string

    Represents the currency used by the invoice.

    dueDate
    required
    string <date-time>

    Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.

    issuedDate
    required
    string <date-time>

    Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.

    number
    required
    string

    Represents an invoice number.

    Responses

    Request samples

    Content type
    application/json
    {
    • "clientId": "98h687e29ae1f428e7ebe707",
    • "currency": "USD",
    • "dueDate": "2020-06-01T08:00:00Z",
    • "issuedDate": "2020-01-01T08:00:00Z",
    • "number": "202306121129"
    }

    Response samples

    Content type
    application/json
    {
    • "billFrom": "Business X",
    • "clientId": "34p687e29ae1f428e7ebe562",
    • "currency": "USD",
    • "dueDate": "2020-06-01T08:00:00Z",
    • "id": "78a687e29ae1f428e7ebe303",
    • "issuedDate": "2020-01-01T08:00:00Z",
    • "number": "202306121129"
    }

    Filter out invoices

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    object (ContainsArchivedFilterRequest)

    Represents a client filter object. If provided, you'll get a filtered list of invoices that matches the specified client filter.

    object (BaseFilterRequest)

    Represents a company filter object. If provided, you'll get a filtered list of invoices that matches the specified company filter.

    exactAmount
    integer <int64>

    Represents an invoice amount. If provided, you'll get a filtered list of invoices that has the equal amount as specified.

    exactBalance
    integer <int64>

    Represents an invoice balance. If provided, you'll get a filtered list of invoices that has the equal balance as specified.

    greaterThanAmount
    integer <int64>

    Represents an invoice amount. If provided, you'll get a filtered list of invoices that has amount greater than specified.

    greaterThanBalance
    integer <int64>

    Represents an invoice balance. If provided, you'll get a filtered list of invoices that has balance greater than specified.

    invoiceNumber
    string

    If provided, you'll get a filtered list of invoices that contain the provided string in their invoice number.

    object (TimeRangeRequestDtoV1)

    Represents a time range object. If provided, you'll get a filtered list of invoices that has issue date within the time range specified.

    lessThanAmount
    integer <int64>

    Represents an invoice amount. If provided, you'll get a filtered list of invoices that has amount less than specified.

    lessThanBalance
    integer <int64>

    Represents an invoice balance. If provided, you'll get a filtered list of invoices that has balance less than specified.

    page
    required
    integer <int32>

    Page number.

    pageSize
    required
    integer <int32>

    Page size.

    sortColumn
    string
    Enum: "ID" "CLIENT" "DUE_ON" "ISSUE_DATE" "AMOUNT" "BALANCE"

    Represents the column name to be used as sorting criteria.

    sortOrder
    string
    Enum: "ASCENDING" "DESCENDING"

    Represents the sorting order.

    statuses
    Array of strings
    Items Enum: "UNSENT" "SENT" "PAID" "PARTIALLY_PAID" "VOID" "OVERDUE"

    Represents a list of invoice statuses. If provided, you'll get a filtered list of invoices that matches any of the invoice status provided.

    strictSearch
    boolean

    Flag to toggle on/off strict search mode. When set to true, search by invoice number only will return invoices whose number exactly matches the string value given for the 'invoiceNumber' parameter. When set to false, results will also include invoices whose number contain the string value, but could be longer than the string value itself. For example, if there is an invoice with the number '123456', and the search value is '123', setting strict-name-search to true will not return that invoice in the results, whereas setting it to false will.

    Responses

    Request samples

    Content type
    application/json
    {
    • "clients": {
      },
    • "companies": {
      },
    • "exactAmount": 1000,
    • "exactBalance": 1000,
    • "greaterThanAmount": 500,
    • "greaterThanBalance": 500,
    • "invoiceNumber": "Invoice-01",
    • "issueDate": {
      },
    • "lessThanAmount": 500,
    • "lessThanBalance": 500,
    • "page": 1,
    • "pageSize": 50,
    • "sortColumn": "ID",
    • "sortOrder": "ASCENDING",
    • "statuses": [
      ],
    • "strictSearch": true
    }

    Response samples

    Content type
    application/json
    {
    • "invoices": [
      ],
    • "total": 100
    }

    Get invoice in another language

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "defaults": {
      },
    • "exportFields": {
      },
    • "labels": {
      }
    }

    Change invoice language

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    object (InvoiceDefaultSettingsRequestV1)

    Represents an invoice default settings object.

    object (InvoiceExportFieldsRequest)

    Represents an invoice export fields object.

    required
    object (LabelsCustomizationRequest)

    Represents a label customization object.

    Responses

    Request samples

    Content type
    application/json
    {
    • "defaults": {
      },
    • "exportFields": {
      },
    • "labels": {
      }
    }

    Delete invoice

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    invoiceId
    required
    string
    Example: 78a687e29ae1f428e7ebe303

    Represents invoice identifier across the system.

    Responses

    Get invoice by ID

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    invoiceId
    required
    string
    Example: 83q687e29ae1f428e7ebe195

    Represents invoice identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "amount": 100,
    • "balance": 50,
    • "billFrom": "Business X",
    • "clientAddress": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
    • "clientId": "98h687e29ae1f428e7ebe707",
    • "clientName": "Client X",
    • "companyId": "04g687e29ae1f428e7ebe123",
    • "containsImportedExpenses": true,
    • "containsImportedTimes": true,
    • "currency": "USD",
    • "discount": 10.5,
    • "discountAmount": 11,
    • "dueDate": "2020-06-01T08:00:00Z",
    • "id": "78a687e29ae1f428e7ebe303",
    • "issuedDate": "2020-01-01T08:00:00Z",
    • "items": [
      ],
    • "note": "This is a sample note for this invoice.",
    • "number": "202306121129",
    • "paid": 50,
    • "status": "PAID",
    • "subject": "January salary",
    • "subtotal": 5000,
    • "tax": 1.5,
    • "tax2": 0,
    • "tax2Amount": 0,
    • "taxAmount": 1,
    • "taxType": "SIMPLE",
    • "userId": "12t687e29ae1f428e7ebe202",
    • "visibleZeroFields": [
      ]
    }

    Send invoice

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    invoiceId
    required
    string
    Example: 78a687e29ae1f428e7ebe303

    Represents invoice identifier across the system.

    Request Body schema: application/json
    required
    clientId
    string

    Represents client identifier across the system.

    companyId
    string

    Represents company identifier across the system.

    currency
    required
    string [ 1 .. 100 ] characters

    Represents the currency used by the invoice.

    discountPercent
    required
    number <double>

    Represents an invoice discount percent as double.

    dueDate
    required
    string <date-time>

    Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.

    issuedDate
    required
    string <date-time>

    Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.

    note
    string

    Represents an invoice note.

    number
    required
    string

    Represents an invoice number.

    subject
    string

    Represents an invoice subject.

    tax2Percent
    required
    number <double>

    Represents an invoice tax 2 percent as double.

    taxPercent
    required
    number <double>

    Represents an invoice tax percent as double.

    object (TaxType)

    Represents an invoice taxation type.

    visibleZeroFields
    string
    Enum: "TAX" "TAX_2" "DISCOUNT"

    Represents a list of zero value invoice fields that will be visible.

    Responses

    Request samples

    Content type
    application/json
    {
    • "clientId": "98h687e29ae1f428e7ebe707",
    • "companyId": "04g687e29ae1f428e7ebe123",
    • "currency": "USD",
    • "discountPercent": 1.5,
    • "dueDate": "2020-06-01T08:00:00Z",
    • "issuedDate": "2020-01-01T08:00:00Z",
    • "note": "This is a sample note for this invoice.",
    • "number": "202306121129",
    • "subject": "January salary",
    • "tax2Percent": 0,
    • "taxPercent": 0.5,
    • "taxType": "SIMPLE",
    • "visibleZeroFields": "[\"TAX\",\"TAX_2\",\"DISCOUNT\"]"
    }

    Response samples

    Content type
    application/json
    {
    • "amount": 100,
    • "balance": 50,
    • "billFrom": "Business X",
    • "clientAddress": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
    • "clientId": "98h687e29ae1f428e7ebe707",
    • "clientName": "Client X",
    • "companyId": "04g687e29ae1f428e7ebe123",
    • "containsImportedExpenses": true,
    • "containsImportedTimes": true,
    • "currency": "USD",
    • "discount": 10.5,
    • "discountAmount": 11,
    • "dueDate": "2020-06-01T08:00:00Z",
    • "id": "78a687e29ae1f428e7ebe303",
    • "issuedDate": "2020-01-01T08:00:00Z",
    • "items": [
      ],
    • "note": "This is a sample note for this invoice.",
    • "number": "202306121129",
    • "paid": 50,
    • "status": "PAID",
    • "subject": "January salary",
    • "subtotal": 5000,
    • "tax": 1.5,
    • "tax2": 0,
    • "tax2Amount": 0,
    • "taxAmount": 1,
    • "taxType": "SIMPLE",
    • "userId": "12t687e29ae1f428e7ebe202",
    • "visibleZeroFields": [
      ]
    }

    Duplicate invoice

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    invoiceId
    required
    string
    Example: 78a687e29ae1f428e7ebe303

    Represents invoice identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "amount": 100,
    • "balance": 50,
    • "billFrom": "Business X",
    • "clientAddress": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
    • "clientId": "98h687e29ae1f428e7ebe707",
    • "clientName": "Client X",
    • "companyId": "04g687e29ae1f428e7ebe123",
    • "containsImportedExpenses": true,
    • "containsImportedTimes": true,
    • "currency": "USD",
    • "discount": 10.5,
    • "discountAmount": 11,
    • "dueDate": "2020-06-01T08:00:00Z",
    • "id": "78a687e29ae1f428e7ebe303",
    • "issuedDate": "2020-01-01T08:00:00Z",
    • "items": [
      ],
    • "note": "This is a sample note for this invoice.",
    • "number": "202306121129",
    • "paid": 50,
    • "status": "PAID",
    • "subject": "January salary",
    • "subtotal": 5000,
    • "tax": 1.5,
    • "tax2": 0,
    • "tax2Amount": 0,
    • "taxAmount": 1,
    • "taxType": "SIMPLE",
    • "userId": "12t687e29ae1f428e7ebe202",
    • "visibleZeroFields": [
      ]
    }

    Export invoice

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    invoiceId
    required
    string
    Example: 78a687e29ae1f428e7ebe303

    Represents invoice identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    userLocale
    required
    string
    Example: userLocale=en

    Represents a locale.

    Responses

    Get payments for invoice

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    invoiceId
    required
    string
    Example: 78a687e29ae1f428e7ebe303

    Represents invoice identifier across the system.

    query Parameters
    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Add payment to invoice

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    invoiceId
    required
    string
    Example: 78a687e29ae1f428e7ebe303

    Represents invoice identifier across the system.

    Request Body schema: application/json
    required
    amount
    integer <int64> >= 1

    Represents an invoice payment amount as long.

    note
    string [ 0 .. 1000 ] characters

    Represents an invoice payment note.

    paymentDate
    string

    Represents an invoice payment date in yyyy-MM-ddThh:mm:ssZ format.

    Responses

    Request samples

    Content type
    application/json
    {
    • "amount": 100,
    • "note": "This is a sample note for this invoice payment.",
    • "paymentDate": "2021-01-01T12:00:00Z"
    }

    Response samples

    Content type
    application/json
    {
    • "amount": 100,
    • "balance": 50,
    • "billFrom": "Business X",
    • "clientAddress": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
    • "clientId": "98h687e29ae1f428e7ebe707",
    • "clientName": "Client X",
    • "companyId": "04g687e29ae1f428e7ebe123",
    • "containsImportedExpenses": true,
    • "containsImportedTimes": true,
    • "currency": "USD",
    • "discount": 10.5,
    • "discountAmount": 11,
    • "dueDate": "2020-06-01T08:00:00Z",
    • "id": "78a687e29ae1f428e7ebe303",
    • "issuedDate": "2020-01-01T08:00:00Z",
    • "items": [
      ],
    • "note": "This is a sample note for this invoice.",
    • "number": "202306121129",
    • "paid": 50,
    • "status": "PAID",
    • "subject": "January salary",
    • "subtotal": 5000,
    • "tax": 1.5,
    • "tax2": 0,
    • "tax2Amount": 0,
    • "taxAmount": 1,
    • "taxType": "SIMPLE",
    • "userId": "12t687e29ae1f428e7ebe202",
    • "visibleZeroFields": [
      ]
    }

    Delete payment from invoice

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    invoiceId
    required
    string
    Example: 78a687e29ae1f428e7ebe303

    Represents invoice identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    paymentId
    required
    string
    Example: 56p687e29ae1f428e7ebe456

    Represents payment identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "amount": 100,
    • "balance": 50,
    • "billFrom": "Business X",
    • "clientAddress": "Ground Floor, ABC Bldg., Palo Alto, California, USA 94020",
    • "clientId": "98h687e29ae1f428e7ebe707",
    • "clientName": "Client X",
    • "companyId": "04g687e29ae1f428e7ebe123",
    • "containsImportedExpenses": true,
    • "containsImportedTimes": true,
    • "currency": "USD",
    • "discount": 10.5,
    • "discountAmount": 11,
    • "dueDate": "2020-06-01T08:00:00Z",
    • "id": "78a687e29ae1f428e7ebe303",
    • "issuedDate": "2020-01-01T08:00:00Z",
    • "items": [
      ],
    • "note": "This is a sample note for this invoice.",
    • "number": "202306121129",
    • "paid": 50,
    • "status": "PAID",
    • "subject": "January salary",
    • "subtotal": 5000,
    • "tax": 1.5,
    • "tax2": 0,
    • "tax2Amount": 0,
    • "taxAmount": 1,
    • "taxType": "SIMPLE",
    • "userId": "12t687e29ae1f428e7ebe202",
    • "visibleZeroFields": [
      ]
    }

    Change invoice status

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    invoiceId
    required
    string
    Example: 78a687e29ae1f428e7ebe303

    Represents invoice identifier across the system.

    Request Body schema: application/json
    required
    invoiceStatus
    string
    Enum: "UNSENT" "SENT" "PAID" "PARTIALLY_PAID" "VOID" "OVERDUE"

    Represents the invoice status to be set.

    Responses

    Request samples

    Content type
    application/json
    {
    • "invoiceStatus": "PAID"
    }

    Project

    Get all projects on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    name
    string
    Example: name=Software Development

    If provided, you'll get a filtered list of projects that contains the provided string in the project name.

    strict-name-search
    boolean

    Flag to toggle on/off strict search mode. When set to true, search by name will only return projects whose name exactly matches the string value given for the 'name' parameter. When set to false, results will also include projects whose name contain the string value, but could be longer than the string value itself. For example, if there is a project with the name 'applications', and the search value is 'app', setting strict-name-search to true will not return that project in the results, whereas setting it to false will.

    archived
    boolean

    If provided and set to true, you'll only get archived projects. If omitted, you'll get both archived and non-archived projects.

    billable
    boolean

    If provided and set to true, you'll only get billable projects. If omitted, you'll get both billable and non-billable projects.

    clients
    Array of strings unique
    Example: clients=5a0ab5acb07987125438b60f&clients=64c777ddd3fcab07cfbb210c

    If provided, you'll get a filtered list of projects that contain clients which match any of the provided ids.

    contains-client
    boolean
    Default: true

    If set to true, you'll get a filtered list of projects that contain clients which match the provided id(s) in 'clients' field. If set to false, you'll get a filtered list of projects which do NOT contain clients that match the provided id(s) in 'clients' field.

    client-status
    string
    Enum: "ACTIVE" "ARCHIVED" "ALL"
    Example: client-status=ACTIVE

    Filters projects based on client status provided.

    users
    Array of strings unique
    Example: users=5a0ab5acb07987125438b60f&users=64c777ddd3fcab07cfbb210c

    If provided, you'll get a filtered list of projects that contain users which match any of the provided ids.

    contains-user
    boolean
    Default: true

    If set to true, you'll get a filtered list of projects that contain users which match the provided id(s) in 'users' field. If set to false, you'll get a filtered list of projects which do NOT contain users which match the provided id(s) in 'users' field.

    user-status
    string
    Enum: "PENDING" "ACTIVE" "DECLINED" "INACTIVE" "ALL"
    Example: user-status=ALL

    Filters projects based on user status provided.

    is-template
    boolean

    Filters projects based on whether they are used as a template or not.

    sort-column
    string
    Enum: "ID" "NAME" "CLIENT_NAME" "DURATION" "BUDGET" "PROGRESS"
    Example: sort-column=NAME

    Sorts the results by the given column/field.

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Sorting mode.

    hydrated
    boolean
    Default: false

    If set to true, results will contain additional information about the project.

    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    access
    string
    Enum: "PUBLIC" "PRIVATE"
    Example: access=PUBLIC

    Valid set of string(s). If provided, you'll get a filtered list of projects that matches the provided access.

    expense-limit
    integer <int32>
    Default: 20
    Example: expense-limit=10

    Represents maximum number of expenses to fetch.

    expense-date
    string
    Example: expense-date=2024-12-31

    If provided, you will get expenses dated before the provided value in yyyy-MM-dd format.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Add a new project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    billable
    boolean

    Indicates whether project is billable or not.

    clientId
    string

    Represents client identifier across the system.

    color
    string^#(?:[0-9a-fA-F]{6}){1}$

    Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format.

    object (CostRateRequestV1)
    object (EstimateRequest)

    Represents an estimate request object.

    object (HourlyRateRequestV1)
    isPublic
    boolean

    Indicates whether project is public or not.

    Array of objects (MembershipRequest)

    Represents a list of membership request objects.

    name
    string [ 2 .. 250 ] characters

    Represents a project name.

    note
    string <= 16384 characters

    Represents project note.

    Array of objects (TaskRequest)

    Represents a list of task request objects.

    Responses

    Request samples

    Content type
    application/json
    {
    • "billable": true,
    • "clientId": "9t641568b07987035750704",
    • "color": "#000000",
    • "costRate": {
      },
    • "estimate": {
      },
    • "hourlyRate": {
      },
    • "isPublic": true,
    • "memberships": [
      ],
    • "name": "Software Development",
    • "note": "This is a sample note for the project.",
    • "tasks": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "billable": true,
    • "budgetEstimate": {
      },
    • "clientId": "9t641568b07987035750704",
    • "clientName": "Client X",
    • "color": "#000000",
    • "costRate": {
      },
    • "duration": "60000",
    • "estimate": {
      },
    • "estimateReset": {
      },
    • "hourlyRate": {
      },
    • "id": "5b641568b07987035750505e",
    • "memberships": [
      ],
    • "name": "Software Development",
    • "note": "This is a sample note for the project.",
    • "public": true,
    • "template": true,
    • "timeEstimate": {
      },
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Delete project from workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 5b641568b07987035750505e

    Represents project identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "billable": true,
    • "budgetEstimate": {
      },
    • "clientId": "9t641568b07987035750704",
    • "clientName": "Client X",
    • "color": "#000000",
    • "costRate": {
      },
    • "duration": "60000",
    • "estimate": {
      },
    • "estimateReset": {
      },
    • "hourlyRate": {
      },
    • "id": "5b641568b07987035750505e",
    • "memberships": [
      ],
    • "name": "Software Development",
    • "note": "This is a sample note for the project.",
    • "public": true,
    • "template": true,
    • "timeEstimate": {
      },
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Find project by ID

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 5b641568b07987035750505e

    Represents project identifier across the system.

    query Parameters
    hydrated
    boolean
    Default: false

    If set to true, results will contain additional information about the project

    custom-field-entity-type
    string
    Default: "TIMEENTRY"
    Example: custom-field-entity-type=TIMEENTRY

    If provided, you'll get a filtered list of custom fields that matches the provided string with the custom field entity type.

    expense-limit
    integer <int32>
    Default: 20
    Example: expense-limit=10

    Represents maximum number of expenses to fetch.

    expense-date
    string
    Example: expense-date=2024-12-31

    If provided, you will get expenses dated before the provided value in yyyy-MM-dd format.

    Responses

    Response samples

    Content type
    application/json
    {
    • "color": "#000000",
    • "duration": "60000",
    • "id": "5b641568b07987035750505e",
    • "memberships": [
      ],
    • "name": "Software Development",
    • "note": "This is a sample note for the project.",
    • "public": true,
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Update project on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 5b641568b07987035750505e

    Represents project identifier across the system.

    Request Body schema: application/json
    required
    archived
    boolean

    Indicates whether project is archived or not.

    billable
    boolean

    Indicates whether project is billable or not.

    clientId
    string

    Represents client identifier across the system.

    color
    string^#(?:[0-9a-fA-F]{6}){1}$

    Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format.

    object (CostRateRequestV1)
    object (HourlyRateRequestV1)
    isPublic
    boolean

    Indicates whether project is public or not.

    name
    string [ 2 .. 250 ] characters

    Represents a project name.

    note
    string <= 16384 characters

    Represents project note.

    Responses

    Request samples

    Content type
    application/json
    {
    • "archived": true,
    • "billable": true,
    • "clientId": "9t641568b07987035750704",
    • "color": "#000000",
    • "costRate": {
      },
    • "hourlyRate": {
      },
    • "isPublic": true,
    • "name": "Software Development",
    • "note": "This is a sample note for the project."
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "billable": true,
    • "budgetEstimate": {
      },
    • "clientId": "9t641568b07987035750704",
    • "clientName": "Client X",
    • "color": "#000000",
    • "costRate": {
      },
    • "duration": "60000",
    • "estimate": {
      },
    • "estimateReset": {
      },
    • "hourlyRate": {
      },
    • "id": "5b641568b07987035750505e",
    • "memberships": [
      ],
    • "name": "Software Development",
    • "note": "This is a sample note for the project.",
    • "public": true,
    • "template": true,
    • "timeEstimate": {
      },
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Update project estimate

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 5b641568b07987035750505e

    Represents project identifier across the system.

    Request Body schema: application/json
    required
    object (EstimateWithOptionsRequest)

    Represents estimate with options request object.

    object (EstimateResetRequest)

    Represents estimate reset request object.

    object (TimeEstimateRequest)

    Represents project time estimate request object.

    Responses

    Request samples

    Content type
    application/json
    {
    • "budgetEstimate": {
      },
    • "estimateReset": {
      },
    • "timeEstimate": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "billable": true,
    • "budgetEstimate": {
      },
    • "clientId": "9t641568b07987035750704",
    • "clientName": "Client X",
    • "color": "#000000",
    • "costRate": {
      },
    • "duration": "60000",
    • "estimate": {
      },
    • "estimateReset": {
      },
    • "hourlyRate": {
      },
    • "id": "5b641568b07987035750505e",
    • "memberships": [
      ],
    • "name": "Software Development",
    • "note": "This is a sample note for the project.",
    • "public": true,
    • "template": true,
    • "timeEstimate": {
      },
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Update project memberships

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 5b641568b07987035750505e

    Represents project identifier across the system.

    Request Body schema: application/json
    required
    required
    Array of objects (UserIdWithRatesRequest)

    Represents a list of users with id and rates request objects.

    Responses

    Request samples

    Content type
    application/json
    {
    • "memberships": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "billable": true,
    • "budgetEstimate": {
      },
    • "clientId": "9t641568b07987035750704",
    • "clientName": "Client X",
    • "color": "#000000",
    • "costRate": {
      },
    • "duration": "60000",
    • "estimate": {
      },
    • "estimateReset": {
      },
    • "hourlyRate": {
      },
    • "id": "5b641568b07987035750505e",
    • "memberships": [
      ],
    • "name": "Software Development",
    • "note": "This is a sample note for the project.",
    • "public": true,
    • "template": true,
    • "timeEstimate": {
      },
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Assign/remove users to/from the project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 5b641568b07987035750505e

    Represents project identifier across the system.

    Request Body schema: application/json
    required
    remove
    boolean
    Default: false

    Setting this flag to 'true' will remove the given users from the project.

    userIds
    Array of strings

    Represents array of user ids which should be added/removed.

    Responses

    Request samples

    Content type
    application/json
    {
    • "remove": false,
    • "userIds": [
      ]
    }

    Update project template

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 5b641568b07987035750505e

    Represents project identifier across the system.

    Request Body schema: application/json
    required
    isTemplate
    boolean

    Indicates whether project is a template or not.

    Responses

    Request samples

    Content type
    application/json
    {
    • "isTemplate": true
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "billable": true,
    • "budgetEstimate": {
      },
    • "clientId": "9t641568b07987035750704",
    • "clientName": "Client X",
    • "color": "#000000",
    • "costRate": {
      },
    • "duration": "60000",
    • "estimate": {
      },
    • "estimateReset": {
      },
    • "hourlyRate": {
      },
    • "id": "5b641568b07987035750505e",
    • "memberships": [
      ],
    • "name": "Software Development",
    • "note": "This is a sample note for the project.",
    • "public": true,
    • "template": true,
    • "timeEstimate": {
      },
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Update project user cost rate

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 5b641568b07987035750505e

    Represents project identifier across the system.

    userId
    required
    string
    Example: 4a0ab5acb07987125438b60f

    Represents user identifier across the system.

    Request Body schema: application/json
    required
    amount
    required
    integer <int32> >= 0

    Represents an amount as integer.

    since
    string

    Represents a date and time in yyyy-MM-ddThh:mm:ssZ format.

    Responses

    Request samples

    Content type
    application/json
    {
    • "amount": 20000,
    • "since": "2020-01-01T00:00:00Z"
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "billable": true,
    • "budgetEstimate": {
      },
    • "clientId": "9t641568b07987035750704",
    • "clientName": "Client X",
    • "color": "#000000",
    • "costRate": {
      },
    • "duration": "60000",
    • "estimate": {
      },
    • "estimateReset": {
      },
    • "hourlyRate": {
      },
    • "id": "5b641568b07987035750505e",
    • "memberships": [
      ],
    • "name": "Software Development",
    • "note": "This is a sample note for the project.",
    • "public": true,
    • "template": true,
    • "timeEstimate": {
      },
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Update project user billable rate

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 5b641568b07987035750505e

    Represents project identifier across the system.

    userId
    required
    string
    Example: 4a0ab5acb07987125438b60f

    Represents user identifier across the system.

    Request Body schema: application/json
    required
    amount
    required
    integer <int32> >= 0

    Represents an amount as integer.

    since
    string

    Represents a date and time in yyyy-MM-ddThh:mm:ssZ format.

    Responses

    Request samples

    Content type
    application/json
    {
    • "amount": 20000,
    • "since": "2020-01-01T00:00:00Z"
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "billable": true,
    • "budgetEstimate": {
      },
    • "clientId": "9t641568b07987035750704",
    • "clientName": "Client X",
    • "color": "#000000",
    • "costRate": {
      },
    • "duration": "60000",
    • "estimate": {
      },
    • "estimateReset": {
      },
    • "hourlyRate": {
      },
    • "id": "5b641568b07987035750505e",
    • "memberships": [
      ],
    • "name": "Software Development",
    • "note": "This is a sample note for the project.",
    • "public": true,
    • "template": true,
    • "timeEstimate": {
      },
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Task

    Find tasks on project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    projectId
    required
    string
    Example: 25b687e29ae1f428e7ebe123

    Represents project identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    name
    string
    Example: name=Bugfixing

    If provided, you'll get a filtered list of tasks that matches the provided string in their name.

    strict-name-search
    boolean

    Flag to toggle on/off strict search mode. When set to true, search by name only will return tasks whose name exactly matches the string value given for the 'name' parameter. When set to false, results will also include tasks whose name contain the string value, but could be longer than the string value itself. For example, if there is a task with the name 'applications', and the search value is 'app', setting strict-name-search to true will not return that task in the results, whereas setting it to false will.

    is-active
    boolean

    Filters search results whether task is active or not.

    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    sort-column
    string
    Enum: "ID" "NAME"
    Example: sort-column=ID

    Represents the column as criteria for sorting tasks.

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Sorting mode.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Add a new task on project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    projectId
    required
    string
    Example: 25b687e29ae1f428e7ebe123

    Represents project identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    contains-assignee
    boolean
    Default: true

    Flag to set whether task will have assignee or none.

    Request Body schema: application/json
    required
    assigneeId
    string
    Deprecated
    assigneeIds
    Array of strings unique

    Represents list of assignee ids for the task.

    budgetEstimate
    integer <int64> >= 0

    Represents a task budget estimate as long.

    estimate
    string

    Represents a task duration estimate in ISO-8601 format.

    id
    string

    Represents task identifier across the system.

    name
    required
    string [ 1 .. 1000 ] characters

    Represents task name.

    status
    string
    Enum: "ACTIVE" "DONE" "ALL"

    Represents task status.

    userGroupIds
    Array of strings unique

    Represents list of user group ids for the task.

    Responses

    Request samples

    Content type
    application/json
    {
    • "assigneeId": "string",
    • "assigneeIds": [
      ],
    • "budgetEstimate": 10000,
    • "estimate": "PT1H30M",
    • "id": "57a687e29ae1f428e7ebe107",
    • "name": "Bugfixing",
    • "status": "DONE",
    • "userGroupIds": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "assigneeId": "string",
    • "assigneeIds": [
      ],
    • "billable": true,
    • "budgetEstimate": 10000,
    • "costRate": {
      },
    • "duration": "PT1H30M",
    • "estimate": "PT1H30M",
    • "hourlyRate": {
      },
    • "id": "57a687e29ae1f428e7ebe107",
    • "name": "Bugfixing",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "status": "DONE",
    • "userGroupIds": [
      ]
    }

    Update task cost rate

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    projectId
    required
    string
    Example: 25b687e29ae1f428e7ebe123

    Represents project identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 57a687e29ae1f428e7ebe107

    Represents task identifier across the system.

    Request Body schema: application/json
    required
    amount
    required
    integer <int32> >= 0

    Represents an amount as integer.

    since
    string

    Represents a date and time in yyyy-MM-ddThh:mm:ssZ format.

    Responses

    Request samples

    Content type
    application/json
    {
    • "amount": 20000,
    • "since": "2020-01-01T00:00:00Z"
    }

    Response samples

    Content type
    application/json
    {
    • "assigneeId": "string",
    • "assigneeIds": [
      ],
    • "billable": true,
    • "budgetEstimate": 10000,
    • "costRate": {
      },
    • "duration": "PT1H30M",
    • "estimate": "PT1H30M",
    • "hourlyRate": {
      },
    • "id": "57a687e29ae1f428e7ebe107",
    • "name": "Bugfixing",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "status": "DONE",
    • "userGroupIds": [
      ]
    }

    Update task billable rate

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    projectId
    required
    string
    Example: 25b687e29ae1f428e7ebe123

    Represents project identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 57a687e29ae1f428e7ebe107

    Represents task identifier across the system.

    Request Body schema: application/json
    required
    amount
    required
    integer <int32> >= 0

    Represents an hourly rate amount as integer.

    since
    string

    Represents a date and time in yyyy-MM-ddThh:mm:ssZ format.

    Responses

    Request samples

    Content type
    application/json
    {
    • "amount": 20000,
    • "since": "2020-01-01T00:00:00Z"
    }

    Response samples

    Content type
    application/json
    {
    • "assigneeId": "string",
    • "assigneeIds": [
      ],
    • "billable": true,
    • "budgetEstimate": 10000,
    • "costRate": {
      },
    • "duration": "PT1H30M",
    • "estimate": "PT1H30M",
    • "hourlyRate": {
      },
    • "id": "57a687e29ae1f428e7ebe107",
    • "name": "Bugfixing",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "status": "DONE",
    • "userGroupIds": [
      ]
    }

    Delete task from project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    taskId
    required
    string
    Example: 57a687e29ae1f428e7ebe107

    Represents task identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 25b687e29ae1f428e7ebe123

    Represents project identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "assigneeId": "string",
    • "assigneeIds": [
      ],
    • "billable": true,
    • "budgetEstimate": 10000,
    • "costRate": {
      },
    • "duration": "PT1H30M",
    • "estimate": "PT1H30M",
    • "hourlyRate": {
      },
    • "id": "57a687e29ae1f428e7ebe107",
    • "name": "Bugfixing",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "status": "DONE",
    • "userGroupIds": [
      ]
    }

    Get task by id

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    taskId
    required
    string
    Example: 57a687e29ae1f428e7ebe107

    Represents task identifier across the system.

    projectId
    required
    string
    Example: 25b687e29ae1f428e7ebe123

    Represents project identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "assigneeId": "string",
    • "assigneeIds": [
      ],
    • "billable": true,
    • "budgetEstimate": 10000,
    • "costRate": {
      },
    • "duration": "PT1H30M",
    • "estimate": "PT1H30M",
    • "hourlyRate": {
      },
    • "id": "57a687e29ae1f428e7ebe107",
    • "name": "Bugfixing",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "status": "DONE",
    • "userGroupIds": [
      ]
    }

    Update task on project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    taskId
    required
    string
    Example: 57a687e29ae1f428e7ebe107

    Represents task identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 25b687e29ae1f428e7ebe123

    Represents project identifier across the system.

    query Parameters
    contains-assignee
    boolean
    Default: true

    Flag to set whether task will have assignee or none.

    membership-status
    string
    Enum: "PENDING" "ACTIVE" "DECLINED" "INACTIVE" "ALL"
    Example: membership-status=ACTIVE

    Represents a membership status.

    Request Body schema: application/json
    required
    assigneeId
    string
    Deprecated
    assigneeIds
    Array of strings unique

    Represents list of assignee ids for the task.

    billable
    boolean

    Indicates whether a task is billable or not.

    budgetEstimate
    integer <int64> >= 0

    Represents a task budget estimate as integer.

    estimate
    string

    Represents a task duration estimate.

    name
    required
    string [ 1 .. 1000 ] characters

    Represents task name.

    status
    string
    Enum: "ACTIVE" "DONE" "ALL"

    Represents task status.

    userGroupIds
    Array of strings unique

    Represents list of user group ids for the task.

    Responses

    Request samples

    Content type
    application/json
    {
    • "assigneeId": "string",
    • "assigneeIds": [
      ],
    • "billable": true,
    • "budgetEstimate": 10000,
    • "estimate": "PT1H30M",
    • "name": "Bugfixing",
    • "status": "DONE",
    • "userGroupIds": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "assigneeId": "string",
    • "assigneeIds": [
      ],
    • "billable": true,
    • "budgetEstimate": 10000,
    • "costRate": {
      },
    • "duration": "PT1H30M",
    • "estimate": "PT1H30M",
    • "hourlyRate": {
      },
    • "id": "57a687e29ae1f428e7ebe107",
    • "name": "Bugfixing",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "status": "DONE",
    • "userGroupIds": [
      ]
    }

    Scheduling

    Get all assignments

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    name
    string
    Default: ""
    Example: name=Bugfixing

    If provided, assignments will be filtered by name

    start
    required
    string
    Example: start=2020-01-01T00:00:00Z

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    end
    required
    string
    Example: end=2021-01-01T00:00:00Z

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    sort-column
    string
    Enum: "PROJECT" "USER" "ID"
    Example: sort-column=USER

    Represents the column as the sorting criteria.

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Represents the sorting mode.

    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Get all scheduled assignments per project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    end
    required
    string <date-time>

    Represents end date in yyyy-MM-ddThh:mm:ssZ format.

    page
    integer <int32>

    Page number.

    pageSize
    integer <int32> <= 200

    Page size.

    search
    string

    Represents term for searching projects and clients by name.

    start
    required
    string <date-time>

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    statusFilter
    string
    Enum: "PUBLISHED" "UNPUBLISHED" "ALL"

    Filters assignments by status.

    Responses

    Request samples

    Content type
    application/json
    {
    • "end": "2021-01-01T00:00:00Z",
    • "page": 1,
    • "pageSize": 50,
    • "search": "Project name",
    • "start": "2020-01-01T00:00:00Z",
    • "statusFilter": "PUBLISHED"
    }

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Get all scheduled assignments on project

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    projectId
    required
    string
    Example: 56b687e29ae1f428e7ebe504

    Represents project identifier across the system.

    query Parameters
    start
    required
    string
    Example: start=2020-01-01T00:00:00Z

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    end
    required
    string
    Example: end=2021-01-01T00:00:00Z

    Represents end date in yyyy-MM-ddThh:mm:ssZ format.

    Responses

    Response samples

    Content type
    application/json
    {
    • "assignments": [
      ],
    • "clientName": "Software Development",
    • "milestones": [
      ],
    • "projectArchived": true,
    • "projectBillable": true,
    • "projectColor": "#000000",
    • "projectId": "56b687e29ae1f428e7ebe504",
    • "projectName": "Software Development",
    • "totalHours": 490.5,
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Publish assignments

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    end
    required
    string

    Represents end date in yyyy-MM-ddThh:mm:ssZ format.

    notifyUsers
    boolean

    Indicates whether to notify users when assignment is published.

    search
    string

    Represents a search string.

    start
    required
    string

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    object (ContainsUsersFilterRequestV1)

    Represents a user filter request object.

    object (ContainsUserGroupFilterRequestV1)

    Represents a user group filter request object.

    viewType
    string
    Enum: "PROJECTS" "TEAM" "ALL"

    Represents view type.

    Responses

    Request samples

    Content type
    application/json
    {
    • "end": "2021-01-01T00:00:00Z",
    • "notifyUsers": true,
    • "search": "search keyword",
    • "start": "2020-01-01T00:00:00Z",
    • "userFilter": {
      },
    • "userGroupFilter": {
      },
    • "viewType": "PROJECTS"
    }

    Create recurring assignment

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    billable
    boolean

    Indicates whether assignment is billable or not.

    end
    required
    string

    Represents end date in yyyy-MM-ddThh:mm:ssZ format.

    hoursPerDay
    required
    number <double>

    Represents assignment total hours per day.

    includeNonWorkingDays
    boolean

    Indicates whether to include non-working days or not.

    note
    string [ 0 .. 100 ] characters

    Represents assignment note.

    projectId
    required
    string

    Represents project identifier across the system.

    object (RecurringAssignmentRequestV1)
    start
    required
    string

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    startTime
    string

    Represents start time in hh:mm:ss format.

    taskId
    string

    Represents task identifier across the system.

    userId
    required
    string

    Represents user identifier across the system.

    Responses

    Request samples

    Content type
    application/json
    {
    • "billable": true,
    • "end": "2021-01-01T00:00:00Z",
    • "hoursPerDay": 7.5,
    • "includeNonWorkingDays": true,
    • "note": "This is a sample note for an assignment.",
    • "projectId": "56b687e29ae1f428e7ebe504",
    • "recurringAssignment": {
      },
    • "start": "2020-01-01T00:00:00Z",
    • "startTime": "10:00:00",
    • "taskId": "56b687e29ae1f428e7ebe505",
    • "userId": "72k687e29ae1f428e7ebe109"
    }

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Delete recurring assignment

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    assignmentId
    required
    string
    Example: 5b641568b07987035750505e

    Represents assignment identifier across the system.

    query Parameters
    seriesUpdateOption
    string
    Enum: "THIS_ONE" "THIS_AND_FOLLOWING" "ALL"
    Example: seriesUpdateOption=ALL

    Represents a series option.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update recurring assignment

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    assignmentId
    required
    string
    Example: 5b641568b07987035750505e

    Represents assignment identifier across the system.

    Request Body schema: application/json
    required
    billable
    boolean

    Indicates whether assignment is billable or not.

    end
    required
    string

    Represents end date in yyyy-MM-ddThh:mm:ssZ format.

    hoursPerDay
    number <double>

    Represents assignment total hours per day.

    includeNonWorkingDays
    boolean

    Indicates whether to include non-working days or not.

    note
    string [ 0 .. 100 ] characters

    Represents assignment note.

    seriesUpdateOption
    string
    Enum: "THIS_ONE" "THIS_AND_FOLLOWING" "ALL"

    Valid series option

    start
    required
    string

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    startTime
    string

    Represents start time in hh:mm:ss format.

    taskId
    string

    Represents task identifier across the system.

    Responses

    Request samples

    Content type
    application/json
    {
    • "billable": true,
    • "end": "2021-01-01T00:00:00Z",
    • "hoursPerDay": 7.5,
    • "includeNonWorkingDays": true,
    • "note": "This is a sample note for an assignment.",
    • "seriesUpdateOption": "THIS_ONE",
    • "start": "2020-01-01T00:00:00Z",
    • "startTime": "10:00:00",
    • "taskId": "56b687e29ae1f428e7ebe505"
    }

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Change recurring period

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    assignmentId
    required
    string
    Example: 5b641568b07987035750505e

    Represents assignment identifier across the system.

    Request Body schema: application/json
    required
    repeat
    boolean

    Indicates whether assignment is recurring or not.

    weeks
    required
    integer <int32> [ 1 .. 99 ]

    Indicates number of weeks for assignment.

    Responses

    Request samples

    Content type
    application/json
    {
    • "repeat": true,
    • "weeks": 5
    }

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Get total of users' capacity on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    end
    required
    string <date-time>

    Represents end date in yyyy-MM-ddThh:mm:ssZ format.

    page
    integer <int32>

    Page number.

    pageSize
    integer <int32> <= 200

    Page size.

    search
    string

    Represents keyword for searching users by name or email.

    start
    required
    string <date-time>

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    statusFilter
    string
    Enum: "PUBLISHED" "UNPUBLISHED" "ALL"

    Filters assignments by status.

    object (ContainsUsersFilterRequestV1)

    Represents a user filter request object.

    object (ContainsUserGroupFilterRequestV1)

    Represents a user group filter request object.

    Responses

    Request samples

    Content type
    application/json
    {
    • "end": "2021-01-01T00:00:00Z",
    • "page": 1,
    • "pageSize": 50,
    • "search": "keyword",
    • "start": "2020-01-01T00:00:00Z",
    • "statusFilter": "PUBLISHED",
    • "userFilter": {
      },
    • "userGroupFilter": {
      }
    }

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Get total capacity of a user

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    userId
    required
    string
    Example: 5a0ab5acb07987125438b60f

    Represents user identifier across the system.

    query Parameters
    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    start
    required
    string
    Example: start=2020-01-01T00:00:00Z

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    end
    required
    string
    Example: end=2021-01-01T00:00:00Z

    Represents end date in yyyy-MM-ddThh:mm:ssZ format.

    Responses

    Response samples

    Content type
    application/json
    {
    • "capacityPerDay": 25200,
    • "totalHoursPerDay": [
      ],
    • "userId": "72k687e29ae1f428e7ebe109",
    • "userImage": "string",
    • "userName": "John Doe",
    • "userStatus": "ACTIVE",
    • "workingDays": "[\"MONDAY\",\"TUESDAY\",\"WEDNESDAY\",\"THURSDAY\",\"FRIDAY\"]",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Copy scheduled assignment

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    assignmentId
    required
    string
    Example: 5b641568b07987035750505e

    Represents assignment identifier across the system.

    Request Body schema: application/json
    required
    seriesUpdateOption
    string
    Enum: "THIS_ONE" "THIS_AND_FOLLOWING" "ALL"

    Represents series update option.

    userId
    required
    string

    Represents user identifier across the system.

    Responses

    Request samples

    Content type
    application/json
    {
    • "seriesUpdateOption": "THIS_ONE",
    • "userId": "72k687e29ae1f428e7ebe109"
    }

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Tag

    Find tags on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    name
    string
    Example: name=feature_X

    If provided, you'll get a filtered list of tags that matches the provided string in their name.

    strict-name-search
    boolean

    Flag to toggle on/off strict search mode. When set to true, search by name will only return tags whose name exactly matches the string value given for the 'name' parameter. When set to false, results will also include tags whose name contain the string value, but could be longer than the string value itself. For example, if there is a tag with the name 'applications', and the search value is 'app', setting strict-name-search to true will not return that tag in the results, whereas setting it to false will.

    excluded-ids
    string
    Example: excluded-ids=90p687e29ae1f428e7ebe657&excluded-ids=3r8687e29ae1f428e7eg567y

    Represents a list of excluded ids

    sort-column
    string
    Enum: "ID" "NAME"
    Example: sort-column=NAME

    Represents column to be used as sorting criteria.

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Represents sorting mode.

    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    archived
    boolean
    Example: archived=false

    Filters the result whether tags are archived or not.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Add a new tag

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    name
    string [ 0 .. 100 ] characters

    Represents tag name.

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "Sprint1"
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "id": "21s687e29ae1f428e7ebe404",
    • "name": "Sprint1",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Delete tag

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    id
    required
    string
    Example: 21s687e29ae1f428e7ebe404

    Represents tag identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "id": "21s687e29ae1f428e7ebe404",
    • "name": "Sprint1",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Get tag by ID

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    id
    required
    string
    Example: 21s687e29ae1f428e7ebe404

    Represents tag identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "id": "21s687e29ae1f428e7ebe404",
    • "name": "Sprint1",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Update tag

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    id
    required
    string
    Example: 21s687e29ae1f428e7ebe404

    Represents tag identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    archived
    boolean

    Indicates whether a tag will be archived or not.

    name
    string [ 0 .. 100 ] characters

    Represents tag name.

    Responses

    Request samples

    Content type
    application/json
    {
    • "archived": true,
    • "name": "Sprint1"
    }

    Response samples

    Content type
    application/json
    {
    • "archived": true,
    • "id": "21s687e29ae1f428e7ebe404",
    • "name": "Sprint1",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Time entry

    Add a new time entry

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    billable
    boolean

    Indicates whether a time entry is billable or not.

    Array of objects (CreateCustomAttributeRequest) [ 0 .. 10 ] items

    Represents a list of create custom field request objects.

    Array of objects (UpdateCustomFieldRequest) [ 0 .. 50 ] items

    Represents a list of value objects for user’s custom fields.

    description
    string <= 3000 characters

    Represents time entry description.

    end
    string <date-time>

    Represents an end date in yyyy-MM-ddThh:mm:ssZ format.

    projectId
    string

    Represents project identifier across the system.

    start
    string <date-time>

    Represents a start date in yyyy-MM-ddThh:mm:ssZ format.

    tagIds
    Array of strings

    Represents a list of tag ids.

    taskId
    string

    Represents task identifier across the system.

    type
    string
    Enum: "REGULAR" "BREAK"

    Valid time entry type.

    Responses

    Request samples

    Content type
    application/json
    {
    • "billable": true,
    • "customAttributes": [
      ],
    • "customFields": [
      ],
    • "description": "This is a sample time entry description.",
    • "end": "2021-01-01T00:00:00Z",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "start": "2020-01-01T00:00:00Z",
    • "tagIds": [
      ],
    • "taskId": "54m377ddd3fcab07cfbb432w",
    • "type": "REGULAR"
    }

    Response samples

    Content type
    application/json
    {
    • "billable": true,
    • "customFieldValues": [
      ],
    • "description": "This is a sample time entry description.",
    • "id": "64c777ddd3fcab07cfbb210c",
    • "isLocked": true,
    • "kioskId": "94c777ddd3fcab07cfbb210d",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "tagIds": [
      ],
    • "taskId": "54m377ddd3fcab07cfbb432w",
    • "timeInterval": {
      },
    • "type": "BREAK",
    • "userId": "5a0ab5acb07987125438b60f",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Mark time entries as invoiced

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    invoiced
    required
    boolean

    Indicates whether time entry is invoiced or not.

    required
    Array of objects (TimeEntryId) unique

    Represents a list of invoiced time entry ids

    Responses

    Request samples

    Content type
    application/json
    {
    • "invoiced": true,
    • "timeEntryIds": [
      ]
    }

    Get all in progress time entries on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    query Parameters
    page
    integer <int32> >= 1
    Default: 1
    page-size
    integer <int32> [ 1 .. 1000 ]
    Default: 10

    Responses

    Delete time entry from workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 64c777ddd3fcab07cfbb210c

    Represents time entry identifier across the system.

    Responses

    Get a specific time entry on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 64c777ddd3fcab07cfbb210c

    Represents time entry identifier across the system.

    query Parameters
    hydrated
    boolean
    Default: false

    Flag to set whether to include additional information of a time entry or not.

    Responses

    Response samples

    Content type
    application/json
    {
    • "billable": true,
    • "costRate": {
      },
    • "customFieldValues": [
      ],
    • "description": "This is a sample time entry description.",
    • "hourlyRate": {
      },
    • "id": "64c777ddd3fcab07cfbb210c",
    • "isLocked": true,
    • "kioskId": "94c777ddd3fcab07cfbb210d",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "tagIds": [
      ],
    • "taskId": "54m377ddd3fcab07cfbb432w",
    • "timeInterval": {
      },
    • "type": "BREAK",
    • "userId": "5a0ab5acb07987125438b60f",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Update time entry on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 64c777ddd3fcab07cfbb210c

    Represents time entry identifier across the system.

    Request Body schema: application/json
    required
    billable
    boolean

    Indicates whether a time entry is billable or not.

    Array of objects (UpdateCustomFieldRequest) [ 0 .. 50 ] items

    Represents a list of value objects for user’s custom fields.

    description
    string [ 0 .. 3000 ] characters

    Represents time entry description.

    end
    string <date-time>

    Represents an end date in yyyy-MM-ddThh:mm:ssZ format.

    projectId
    string

    Represents project identifier across the system.

    start
    required
    string <date-time>

    Represents a start date in yyyy-MM-ddThh:mm:ssZ format.

    tagIds
    Array of strings

    Represents a list of tag ids.

    taskId
    string

    Represents task identifier across the system.

    type
    string
    Enum: "REGULAR" "BREAK"

    Responses

    Request samples

    Content type
    application/json
    {
    • "billable": true,
    • "customFields": [
      ],
    • "description": "This is a sample time entry description.",
    • "end": "2021-01-01T00:00:00Z",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "start": "2020-01-01T00:00:00Z",
    • "tagIds": [
      ],
    • "taskId": "54m377ddd3fcab07cfbb432w",
    • "type": "REGULAR"
    }

    Response samples

    Content type
    application/json
    {
    • "billable": true,
    • "customFieldValues": [
      ],
    • "description": "This is a sample time entry description.",
    • "id": "64c777ddd3fcab07cfbb210c",
    • "isLocked": true,
    • "kioskId": "94c777ddd3fcab07cfbb210d",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "tagIds": [
      ],
    • "taskId": "54m377ddd3fcab07cfbb432w",
    • "timeInterval": {
      },
    • "type": "BREAK",
    • "userId": "5a0ab5acb07987125438b60f",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Delete all time entries for user on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    userId
    required
    string
    Example: 5a0ab5acb07987125438b60f

    Represents user identifier across the system.

    query Parameters
    time-entry-ids
    required
    Array of strings
    Example: time-entry-ids=5a0ab5acb07987125438b60f

    Represents a list of time entry ids to delete.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Get time entries for a user on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    userId
    required
    string
    Example: 5a0ab5acb07987125438b60f

    Represents user identifier across the system.

    query Parameters
    description
    string
    Example: description=Description keywords

    Represents term for searching time entries by description.

    start
    string
    Example: start=2020-01-01T00:00:00Z

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    end
    string
    Example: end=2021-01-01T00:00:00Z

    Represents end date in yyyy-MM-ddThh:mm:ssZ format.

    project
    string
    Example: project=5b641568b07987035750505e

    If provided, you'll get a filtered list of time entries that matches the provided string in their project id.

    task
    string
    Example: task=64c777ddd3fcab07cfbb210c

    If provided, you'll get a filtered list of time entries that matches the provided string in their task id.

    tags
    Array of strings unique
    Example: tags=5e4117fe8c625f38930d57b7&tags=7e4117fe8c625f38930d57b8

    If provided, you'll get a filtered list of time entries that matches the provided string(s) in their tag id(s).

    project-required
    boolean

    Flag to set whether to only get time entries which have a project.

    task-required
    boolean

    Flag to set whether to only get time entries which have tasks.

    hydrated
    boolean
    Default: false

    Flag to set whether to include additional information on time entries or not.

    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    in-progress
    boolean

    Flag to set whether to filter only in progress time entries.

    get-week-before
    string
    Example: get-week-before=2020-01-01T00:00:00Z

    Valid yyyy-MM-ddThh:mm:ssZ format date. If provided, filters results within the week before the datetime provided and only those entries with assigned project or task.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Stop currently running timer on workspace for user

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    userId
    required
    string
    Example: 5a0ab5acb07987125438b60f

    Represents user identifier across the system.

    Request Body schema: application/json
    required
    end
    required
    string <date-time>

    Represents an end date in yyyy-MM-ddThh:mm:ssZ format.

    Responses

    Request samples

    Content type
    application/json
    {
    • "end": "2021-01-01T00:00:00Z"
    }

    Response samples

    Content type
    application/json
    {
    • "billable": true,
    • "customFieldValues": [
      ],
    • "description": "This is a sample time entry description.",
    • "id": "64c777ddd3fcab07cfbb210c",
    • "isLocked": true,
    • "kioskId": "94c777ddd3fcab07cfbb210d",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "tagIds": [
      ],
    • "taskId": "54m377ddd3fcab07cfbb432w",
    • "timeInterval": {
      },
    • "type": "BREAK",
    • "userId": "5a0ab5acb07987125438b60f",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Add a new time entry for another user on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    userId
    required
    string
    Example: 5a0ab5acb07987125438b60f

    Represents user identifier across the system.

    query Parameters
    from-entry
    string
    Example: from-entry=64c777ddd3fcab07cfbb210c

    Represents time entry identifier across the system.

    Request Body schema: application/json
    required
    billable
    boolean

    Indicates whether a time entry is billable or not.

    Array of objects (CreateCustomAttributeRequest) [ 0 .. 10 ] items

    Represents a list of create custom field request objects.

    Array of objects (UpdateCustomFieldRequest) [ 0 .. 50 ] items

    Represents a list of value objects for user’s custom fields.

    description
    string <= 3000 characters

    Represents time entry description.

    end
    string <date-time>

    Represents an end date in yyyy-MM-ddThh:mm:ssZ format.

    projectId
    string

    Represents project identifier across the system.

    start
    string <date-time>

    Represents a start date in yyyy-MM-ddThh:mm:ssZ format.

    tagIds
    Array of strings

    Represents a list of tag ids.

    taskId
    string

    Represents task identifier across the system.

    type
    string
    Enum: "REGULAR" "BREAK"

    Valid time entry type.

    Responses

    Request samples

    Content type
    application/json
    {
    • "billable": true,
    • "customAttributes": [
      ],
    • "customFields": [
      ],
    • "description": "This is a sample time entry description.",
    • "end": "2021-01-01T00:00:00Z",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "start": "2020-01-01T00:00:00Z",
    • "tagIds": [
      ],
    • "taskId": "54m377ddd3fcab07cfbb432w",
    • "type": "REGULAR"
    }

    Response samples

    Content type
    application/json
    {
    • "billable": true,
    • "customFieldValues": [
      ],
    • "description": "This is a sample time entry description.",
    • "id": "64c777ddd3fcab07cfbb210c",
    • "isLocked": true,
    • "kioskId": "94c777ddd3fcab07cfbb210d",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "tagIds": [
      ],
    • "taskId": "54m377ddd3fcab07cfbb432w",
    • "timeInterval": {
      },
    • "type": "BREAK",
    • "userId": "5a0ab5acb07987125438b60f",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Bulk edit time entries

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    userId
    required
    string
    Example: 5a0ab5acb07987125438b60f

    Represents user identifier across the system.

    query Parameters
    hydrated
    boolean
    Default: false

    If set to true, results will contain additional information about the time entry.

    Request Body schema: application/json
    required
    Array (non-empty)
    billable
    boolean

    Indicates whether a time entry is billable or not.

    Array of objects (UpdateCustomFieldRequest) [ 0 .. 50 ] items
    description
    string [ 0 .. 3000 ] characters

    Represents time entry description.

    end
    string <date-time>

    Represents an end date in yyyy-MM-ddThh:mm:ssZ format.

    id
    required
    string

    Represents time entry identifier across the system.

    projectId
    string

    Represents project identifier across the system.

    start
    string <date-time>

    Represents a start date in yyyy-MM-ddThh:mm:ssZ format.

    tagIds
    Array of strings

    Represents a list of tag ids.

    taskId
    string

    Represents task identifier across the system.

    type
    string
    Enum: "REGULAR" "BREAK"

    Responses

    Request samples

    Content type
    application/json
    [
    • {
      }
    ]

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Duplicate time entry

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    userId
    required
    string
    Example: 5a0ab5acb07987125438b60f

    Represents user identifier across the system.

    id
    required
    string
    Example: 8j39fn9307hh5125439g2ast

    Represents time entry identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "billable": true,
    • "customFieldValues": [
      ],
    • "description": "This is a sample time entry description.",
    • "id": "64c777ddd3fcab07cfbb210c",
    • "isLocked": true,
    • "kioskId": "94c777ddd3fcab07cfbb210d",
    • "projectId": "25b687e29ae1f428e7ebe123",
    • "tagIds": [
      ],
    • "taskId": "54m377ddd3fcab07cfbb432w",
    • "timeInterval": {
      },
    • "type": "BREAK",
    • "userId": "5a0ab5acb07987125438b60f",
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Balance

    This endpoint group replaces the deprecated Balance (Deprecated) endpoints. Request and response formats are exactly the same. Compared to Balance (Deprecated), changes are made only to the base URL and path.

    Get balance by policy

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    query Parameters
    page
    integer <int32> <= 1000
    Default: 1
    Example: page=1
    page-size
    integer <int32> [ 1 .. 200 ]
    Default: 50
    Example: page-size=50
    sort
    string
    Enum: "USER" "POLICY" "USED" "BALANCE" "TOTAL"
    Example: sort=USER

    If provided, you'll get result sorted by sort column.

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Sort results in ascending or descending order.

    Responses

    Update balance

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Request Body schema: application/json
    required
    note
    string

    Represents note attached to updating balance.

    userIds
    required
    Array of strings unique

    Represents list of users' identifiers whose balance is to be updated.

    value
    required
    number <double> [ -10000 .. 10000 ]

    Represents new balance value.

    Responses

    Request samples

    Content type
    application/json
    {
    • "note": "Bonus days added.",
    • "userIds": [
      ],
    • "value": 22
    }

    Get balance by user

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    userId
    required
    string
    Example: 60f924bafdaf031696ec6218

    Represents user identifier across the system.

    query Parameters
    page
    integer <int32> <= 1000
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> [ 1 .. 200 ]
    Default: 50
    Example: page-size=50

    Page size.

    sort
    string
    Enum: "USER" "POLICY" "USED" "BALANCE" "TOTAL"
    Example: sort=POLICY

    Sort result based on given criteria

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Sort result by providing sort order.

    Responses

    Policy

    This endpoint group replaces the deprecated Policy (Deprecated) endpoints. Request and response formats are exactly the same. Compared to Policy (Deprecated), changes are made only to the base URL and path.

    Get policies on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    query Parameters
    page
    integer <int32> <= 1000
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> [ 1 .. 200 ]
    Default: 50
    Example: page-size=50

    Page size.

    name
    string
    Example: name=Holidays

    If provided, you'll get a filtered list of policies that contain the provided string in their name.

    status
    string
    Enum: "ACTIVE" "ARCHIVED" "ALL"
    Example: status=ACTIVE

    If provided, you'll get a filtered list of policies with the corresponding status.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Create time off policy

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    allowHalfDay
    boolean

    Indicates whether policy allows half days.

    allowNegativeBalance
    boolean

    Indicates whether policy allows negative balances.

    required
    object (ApproveDto)

    Provide approval settings.

    archived
    boolean

    Indicates whether policy is archived.

    object (AutomaticAccrualRequest)

    Provide automatic accrual settings.

    object (AutomaticTimeEntryCreationRequest)

    Provides automatic time entry creation settings.

    color
    string^#(?:[0-9a-fA-F]{6}){1}$

    Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format.

    everyoneIncludingNew
    boolean

    Indicates whether the policy is to be applied to future new users.

    name
    required
    string [ 2 .. 100 ] characters

    Represents name of new policy.

    object (NegativeBalanceRequest)

    Provide the negative balance data you would like to use for updating the policy.

    timeUnit
    string
    Enum: "DAYS" "HOURS"

    Indicates time unit of the policy.

    object (UserGroupIdsSchema)

    Provide list with user group ids and corresponding status.

    object (UserIdsSchema)

    Provide list with user ids and corresponding status.

    Responses

    Request samples

    Content type
    application/json
    {
    • "allowHalfDay": false,
    • "allowNegativeBalance": true,
    • "approve": {
      },
    • "archived": true,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "color": "#8BC34A",
    • "everyoneIncludingNew": false,
    • "name": "Mental health days",
    • "negativeBalance": {
      },
    • "timeUnit": "DAYS",
    • "userGroups": {
      },
    • "users": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "allowHalfDay": false,
    • "allowNegativeBalance": true,
    • "approve": {
      },
    • "archived": true,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "Days",
    • "negativeBalance": {
      },
    • "projectId": "string",
    • "timeUnit": "DAYS",
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Delete policy

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Responses

    Get time off policy

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "allowHalfDay": false,
    • "allowNegativeBalance": true,
    • "approve": {
      },
    • "archived": true,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "Days",
    • "negativeBalance": {
      },
    • "projectId": "string",
    • "timeUnit": "DAYS",
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Change policy status

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Request Body schema: application/json
    required
    status
    required
    string
    Enum: "ACTIVE" "ARCHIVED" "ALL"

    Provide the status you would like to use for changing the policy.

    Responses

    Request samples

    Content type
    application/json
    {
    • "status": "ACTIVE"
    }

    Response samples

    Content type
    application/json
    {
    • "allowHalfDay": false,
    • "allowNegativeBalance": true,
    • "approve": {
      },
    • "archived": true,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "Days",
    • "negativeBalance": {
      },
    • "projectId": "string",
    • "timeUnit": "DAYS",
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Update policy

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Request Body schema: application/json
    required
    allowHalfDay
    required
    boolean

    Indicates whether policy allows half day.

    allowNegativeBalance
    required
    boolean

    Indicates whether policy allows negative balance.

    required
    object (ApproveDto)

    Provide approval settings.

    archived
    required
    boolean

    Indicates whether policy is archived.

    object (AutomaticAccrualRequest)

    Provide automatic accrual settings.

    object (AutomaticTimeEntryCreationRequest)

    Provides automatic time entry creation settings.

    color
    string^#(?:[0-9a-fA-F]{6}){1}$

    Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format.

    everyoneIncludingNew
    required
    boolean

    Indicates whether the policy is shown to new users.

    name
    required
    string [ 2 .. 100 ] characters

    Provide the name you would like to use for updating the policy.

    object (NegativeBalanceRequest)

    Provide the negative balance data you would like to use for updating the policy.

    required
    object (UserGroupIdsSchema)

    Provide list with user group ids and corresponding status.

    required
    object (UserIdsSchema)

    Provide list with user ids and corresponding status.

    Responses

    Request samples

    Content type
    application/json
    {
    • "allowHalfDay": true,
    • "allowNegativeBalance": false,
    • "approve": {
      },
    • "archived": false,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "color": "#8BC34A",
    • "everyoneIncludingNew": false,
    • "name": "Days",
    • "negativeBalance": {
      },
    • "userGroups": {
      },
    • "users": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "allowHalfDay": false,
    • "allowNegativeBalance": true,
    • "approve": {
      },
    • "archived": true,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "Days",
    • "negativeBalance": {
      },
    • "projectId": "string",
    • "timeUnit": "DAYS",
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Time Off

    This endpoint group replaces the deprecated Time Off (Deprecated) endpoints. Request and response formats are exactly the same. Compared to Time Off (Deprecated), changes are made only to the base URL and path.

    Create time off request

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Request Body schema: application/json
    required
    note
    string

    Provide the note you would like to use for creating the time off request.

    required
    object (TimeOffRequestPeriodV1Request)

    Provide the period you would like to use for creating the time off request.

    Responses

    Request samples

    Content type
    application/json
    {
    • "note": "Create Time Off Note",
    • "timeOffPeriod": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "balance": 10,
    • "balanceDiff": 1,
    • "createdAt": "2022-08-26T08:32:01.640708Z",
    • "id": "5b715612b079875110791111",
    • "note": "Time Off Request Note",
    • "policyId": "5b715612b079875110792333",
    • "policyName": "Days",
    • "requesterUserId": "5b715612b0798751107925555",
    • "requesterUserName": "John",
    • "status": {
      },
    • "timeOffPeriod": {
      },
    • "timeUnit": "DAYS",
    • "userEmail": "nicholas@clockify.com",
    • "userId": "5b715612b079875110794444",
    • "userName": "Nicholas",
    • "userTimeZone": "Europe/Budapest",
    • "workspaceId": "5b715612b079875110792222"
    }

    Delete request

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    requestId
    required
    string
    Example: 6308850156b7d75ea8fd3fbd

    Represents time off request identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "balanceDiff": 1,
    • "createdAt": "2022-08-26T08:32:01.640708Z",
    • "id": "5b715612b079875110791111",
    • "note": "Time Off Request Note",
    • "policyId": "5b715612b079875110792333",
    • "status": {
      },
    • "timeOffPeriod": {
      },
    • "userId": "5b715612b079875110794444",
    • "workspaceId": "5b715612b079875110792222"
    }

    Change time off request status

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    requestId
    required
    string
    Example: 6308850156b7d75ea8fd3fbd

    Represents time off request identifier across the system.

    Request Body schema: application/json
    required
    note
    string

    Provide the note you would like to use for changing the time off request.

    status
    string
    Enum: "APPROVED" "REJECTED"

    Provide the status you would like to use for changing the time off request.

    Responses

    Request samples

    Content type
    application/json
    {
    • "note": "Time Off Request Note",
    • "status": "APPROVED"
    }

    Response samples

    Content type
    application/json
    {
    • "balanceDiff": 1,
    • "createdAt": "2022-08-26T08:32:01.640708Z",
    • "id": "5b715612b079875110791111",
    • "note": "Time Off Request Note",
    • "policyId": "5b715612b079875110792333",
    • "status": {
      },
    • "timeOffPeriod": {
      },
    • "userId": "5b715612b079875110794444",
    • "workspaceId": "5b715612b079875110792222"
    }

    Create time off request for user

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    userId
    required
    string
    Example: 60f924bafdaf031696ec6218

    Represents user identifier across the system.

    Request Body schema: application/json
    required
    note
    string

    Provide the note you would like to use for creating the time off request.

    required
    object (TimeOffRequestPeriodV1Request)

    Provide the period you would like to use for creating the time off request.

    Responses

    Request samples

    Content type
    application/json
    {
    • "note": "Create Time Off Note",
    • "timeOffPeriod": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "balance": 10,
    • "balanceDiff": 1,
    • "createdAt": "2022-08-26T08:32:01.640708Z",
    • "id": "5b715612b079875110791111",
    • "note": "Time Off Request Note",
    • "policyId": "5b715612b079875110792333",
    • "policyName": "Days",
    • "requesterUserId": "5b715612b0798751107925555",
    • "requesterUserName": "John",
    • "status": {
      },
    • "timeOffPeriod": {
      },
    • "timeUnit": "DAYS",
    • "userEmail": "nicholas@clockify.com",
    • "userId": "5b715612b079875110794444",
    • "userName": "Nicholas",
    • "userTimeZone": "Europe/Budapest",
    • "workspaceId": "5b715612b079875110792222"
    }

    Get all time off requests on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    end
    string <date-time>

    Return time off requests created before the specified time in requester's time zone. Provide end in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    page
    integer <int32> <= 1000
    Default: 1

    Page number.

    pageSize
    integer <int32> [ 1 .. 200 ]
    Default: 50

    Page size.

    start
    string <date-time>

    Return time off requests created after the specified time in requester's time zone. Provide start in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    statuses
    Array of strings unique
    Items Enum: "PENDING" "APPROVED" "REJECTED" "ALL"

    Filters time off requests by status.

    userGroups
    Array of strings unique

    Provide the user group ids of time off requests.

    users
    Array of strings unique

    Provide the user ids of time off requests. If empty, will return time off requests of all users (with a maximum of 5000 users).

    Responses

    Request samples

    Content type
    application/json
    {
    • "end": "2022-08-26T23:55:06.281873Z",
    • "page": 1,
    • "pageSize": 50,
    • "start": "2022-08-26T08:00:06.281873Z",
    • "statuses": [
      ],
    • "userGroups": [
      ],
    • "users": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "count": 1,
    • "requests": [
      ]
    }

    Group

    Find all groups on workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    project-id
    string
    Example: project-id=5a0ab5acb07987125438b60f

    If provided, you'll get a filtered list of groups that matches the string provided in their project id.

    name
    string
    Example: name=development_team

    If provided, you'll get a filtered list of groups that matches the string provided in their name.

    sort-column
    string
    Enum: "ID" "NAME"
    Example: sort-column=NAME

    Column to be used as the sorting criteria.

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Sorting mode.

    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    includeTeamManagers
    boolean
    Default: false
    Example: includeTeamManagers=true

    If provided, you'll get a list of team managers assigned to this user group.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Add a new group

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    name
    string [ 0 .. 100 ] characters

    Represents user group name.

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "development_team"
    }

    Response samples

    Content type
    application/json
    {
    • "id": "76a687e29ae1f428e7ebe101",
    • "name": "development_team",
    • "teamManagers": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Delete group

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 76a687e29ae1f428e7ebe101

    Represents user group identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "id": "76a687e29ae1f428e7ebe101",
    • "name": "development_team",
    • "teamManagers": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Update group

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    id
    required
    string
    Example: 76a687e29ae1f428e7ebe101

    Represents user group identifier across the system.

    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    name
    string [ 0 .. 100 ] characters

    Represents user group name.

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "development_team"
    }

    Response samples

    Content type
    application/json
    {
    • "id": "76a687e29ae1f428e7ebe101",
    • "name": "development_team",
    • "teamManagers": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Add users to group

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    userGroupId
    required
    string
    Example: 76a687e29ae1f428e7ebe101

    Represents user group identifier across the system.

    Request Body schema: application/json
    required
    userId
    required
    string

    Represents user identifier across the system.

    Responses

    Request samples

    Content type
    application/json
    {
    • "userId": "5a0ab5acb07987125438b60f"
    }

    Response samples

    Content type
    application/json
    {
    • "id": "76a687e29ae1f428e7ebe101",
    • "name": "development_team",
    • "teamManagers": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Remove user from group

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    userGroupId
    required
    string
    Example: 76a687e29ae1f428e7ebe101

    Represents user group identifier across the system.

    userId
    required
    string
    Example: 5a0ab5acb07987125438b60f

    Represents user identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "id": "76a687e29ae1f428e7ebe101",
    • "name": "development_team",
    • "teamManagers": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "64a687e29ae1f428e7ebe303"
    }

    Shared Report

    Generate shared report by ID

    Response depends on report type and export type. Given example is for SUMMARY report and JSON exportType.

    Shared report data on FREE subscription plan is limited to a maximum interval length of one year (366 days).

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    id
    required
    string
    Example: 61794f784363c45af78e5555

    Represents shared report identifier across the system.

    query Parameters
    dateRangeStart
    string
    Example: dateRangeStart=2018-11-01T00:00:00Z

    Provide start date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeEnd
    string
    Example: dateRangeEnd=2018-11-30T23:59:59.999Z

    Provide end date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    sortOrder
    string
    Example: sortOrder=ASCENDING

    Sort result in ascending or descending order

    sortColumn
    string

    If provided, you'll get result sorted by sort column.

    exportType
    string
    Example: exportType=JSON

    Represents export type of shared report

    page
    integer <int32>
    Example: page=1
    pageSize
    integer <int32>
    Example: pageSize=20

    Responses

    Get all my shared reports

    Gets all shared reports for current user on given workspace

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ecxxxx

    Represents workspace identifier across the system.

    query Parameters
    page
    integer <int32>
    Default: 1
    Example: page=2

    Page number.

    pageSize
    integer <int32> >= 1
    Default: 50
    Example: pageSize=20

    Page size.

    sharedReportsFilter
    string
    Default: "ALL"
    Enum: "ALL" "CREATED_BY_ME" "SHARED_WITH_ME"
    Example: sharedReportsFilter=CREATED_BY_ME

    Filters shared reports by origin.

    Responses

    Create shared report

    Saves shared report with name, options and report filter.

    Shared report data on FREE subscription plan is limited to a maximum interval length of one year (366 days).

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ecxxxx

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    object (ReportFilterV1)
    fixedDate
    boolean

    Indicates whether the shared report has a fixed date range.

    isPublic
    boolean

    Indicates whether the shared report is public or not

    name
    string

    Represents shared report's name

    type
    string
    Enum: "DETAILED" "WEEKLY" "SUMMARY" "SCHEDULED" "EXPENSE_DETAILED" "EXPENSE_RECEIPT" "PTO_REQUESTS" "PTO_BALANCE" "ATTENDANCE" "INVOICE_EXPENSE" "PROJECT" "TEAM_FULL" "TEAM_LIMITED" "TEAM_GROUPS" "INVOICES"

    Represent the type of shared report.

    visibleToUserGroups
    Array of strings unique

    Represents user group ids.

    visibleToUsers
    Array of strings unique

    Represents user ids.

    Responses

    Request samples

    Content type
    application/json
    {
    • "filter": {
      },
    • "fixedDate": true,
    • "isPublic": false,
    • "name": "Weekly 1",
    • "type": "WEEKLY",
    • "visibleToUserGroups": "\"[5b715448b079875110792222\", \"5b715448b079875110791111\"]",
    • "visibleToUsers": [
      ]
    }

    Delete shared report

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    id
    required
    string
    Example: 61794f784363c45af78e5555

    Represents shared report identifier across the system.

    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ecxxxx

    Represents workspace identifier across the system.

    Responses

    Update shared report

    Updates shared report name and/or options

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ecxxxx

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 61794f784363c45af78e5555

    Represents shared report identifier across the system.

    Request Body schema: application/json
    required
    fixedDate
    boolean

    Indicates whether the shared report has a fixed date range.

    isPublic
    boolean

    Indicates whether the shared report is public.

    name
    required
    string

    Represents shared reports name.

    visibleToUserGroups
    Array of strings unique

    Provide user groups ids to which the shared report is visible.

    visibleToUsers
    Array of strings unique

    Provide user ids to which the shared report is visible.

    Responses

    Request samples

    Content type
    application/json
    {
    • "fixedDate": false,
    • "isPublic": false,
    • "name": "Weekly Updated Report",
    • "visibleToUserGroups": "\"[5b715448b079875110792222\", \"5b715448b079875110791111\"]",
    • "visibleToUsers": [
      ]
    }

    Team Report

    Generate attendance report

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Request Body schema: application/json
    amountShown
    string
    Enum: "EARNED" "COST" "PROFIT" "HIDE_AMOUNT" "EXPORT"

    If provided, you'll get filtered result including reports with provided amount shown.

    amounts
    Array of strings
    Items Enum: "EARNED" "COST" "PROFIT" "HIDE_AMOUNT" "EXPORT"
    approvalState
    string
    Enum: "APPROVED" "UNAPPROVED" "ALL"

    If provided, you'll get filtered result including reports with provided approval state.

    archived
    boolean

    Indicates whether the report is archived

    required
    object (AttendanceFilterV1)

    Represents attendance report filter.

    billable
    boolean

    Indicates whether the report is billable

    object (ContainsArchivedFilterV1)
    object (ContainsArchivedFilterV1)
    Array of objects (CustomFieldFilterV1)
    dateFormat
    string

    Provide date in format YYYY-MM-DD

    dateRangeEnd
    required
    string non-empty

    Provide date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeStart
    required
    string non-empty

    Provide date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeType
    string
    Enum: "ABSOLUTE" "TODAY" "YESTERDAY" "THIS_WEEK" "LAST_WEEK" "PAST_TWO_WEEKS" "THIS_MONTH" "LAST_MONTH" "THIS_YEAR" "LAST_YEAR"

    Provide date range type

    description
    string

    Represents search term for filtering report entries by description

    object (DetailedFilterV1)

    Represents detailed report filter.

    exportType
    string
    Enum: "JSON" "JSON_V1" "PDF" "CSV" "XLSX" "ZIP"

    If provided, you'll get filtered result including reports with provided export type.

    invoicingState
    string
    Enum: "INVOICED" "UNINVOICED" "ALL"

    If provided, you'll get filtered result including reports with provided invoicing state.

    object (ContainsArchivedFilterV1)
    rounding
    boolean

    Indicates whether the report filter is rounding

    sortOrder
    string
    Enum: "ASCENDING" "DESCENDING"

    If provided, you'll get sorted result by provided sort order.

    object (SummaryFilterV1)

    Represents summary report filter.

    object (ContainsTagFilterV1)

    Represents object for filtering entries by tags.

    object (ContainsTaskFilterV1)

    Represents filter criteria for expenses associated with tasks.

    timeFormat
    string

    Provide time in format THH:MM:SS.ssssss

    timeZone
    string

    If provided, you'll get filtered result including reports with provided time zone.

    object (ContainsUsersFilterV1)
    userLocale
    string

    If provided, you'll get filtered result including reports with provided user locale.

    object (ContainsUsersFilterV1)
    weekStart
    string
    Enum: "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY"

    If provided, you'll get filtered result including reports with provided week start.

    object (WeeklyFilterV1)

    Represents weekly report filter.

    withoutDescription
    boolean

    If set to 'true', report will only include entries with empty description

    zoomLevel
    string
    Enum: "WEEK" "MONTH" "YEAR"

    If provided, you'll get filtered result including reports with provided zoom level.

    Responses

    Request samples

    Content type
    application/json
    {
    • "amountShown": "COST",
    • "amounts": [
      ],
    • "approvalState": "APPROVED",
    • "archived": false,
    • "attendanceFilter": {
      },
    • "billable": true,
    • "clients": {
      },
    • "currency": {
      },
    • "customFields": [
      ],
    • "dateFormat": "2018-11-01",
    • "dateRangeEnd": "2018-11-30T23:59:59.999Z",
    • "dateRangeStart": "2018-11-01T00:00:00Z",
    • "dateRangeType": "LAST_MONTH",
    • "description": "some description keyword",
    • "detailedFilter": {
      },
    • "exportType": "JSON",
    • "invoicingState": "INVOICED",
    • "projects": {
      },
    • "rounding": false,
    • "sortOrder": "ASCENDING",
    • "summaryFilter": {
      },
    • "tags": {
      },
    • "tasks": {
      },
    • "timeFormat": "T00:00:00",
    • "timeZone": "Europe/Belgrade",
    • "userGroups": {
      },
    • "userLocale": "en",
    • "users": {
      },
    • "weekStart": "MONDAY",
    • "weeklyFilter": {
      },
    • "withoutDescription": false,
    • "zoomLevel": "WEEK"
    }

    Time Entry Report

    Detailed report

    Detailed report data on FREE subscription plan is limited to a maximum interval length of one year (366 days).

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ecxxxx

    Represents workspace identifier across the system.

    Request Body schema: application/json
    amountShown
    string
    Enum: "EARNED" "COST" "PROFIT" "HIDE_AMOUNT" "EXPORT"

    If provided, you'll get filtered result including reports with provided amount shown.

    amounts
    Array of strings
    Items Enum: "EARNED" "COST" "PROFIT" "HIDE_AMOUNT" "EXPORT"
    approvalState
    string
    Enum: "APPROVED" "UNAPPROVED" "ALL"

    If provided, you'll get filtered result including reports with provided approval state.

    archived
    boolean

    Indicates whether the report is archived

    object (AttendanceFilterV1)

    Represents attendance report filter.

    billable
    boolean

    Indicates whether the report is billable

    object (ContainsArchivedFilterV1)
    object (ContainsArchivedFilterV1)
    Array of objects (CustomFieldFilterV1)
    dateFormat
    string

    Provide date in format YYYY-MM-DD

    dateRangeEnd
    required
    string non-empty

    Provide date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeStart
    required
    string non-empty

    Provide date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeType
    string
    Enum: "ABSOLUTE" "TODAY" "YESTERDAY" "THIS_WEEK" "LAST_WEEK" "PAST_TWO_WEEKS" "THIS_MONTH" "LAST_MONTH" "THIS_YEAR" "LAST_YEAR"

    Provide date range type

    description
    string

    Represents search term for filtering report entries by description

    required
    object (DetailedFilterV1)

    Represents detailed report filter.

    exportType
    string
    Enum: "JSON" "JSON_V1" "PDF" "CSV" "XLSX" "ZIP"

    If provided, you'll get filtered result including reports with provided export type.

    invoicingState
    string
    Enum: "INVOICED" "UNINVOICED" "ALL"

    If provided, you'll get filtered result including reports with provided invoicing state.

    object (ContainsArchivedFilterV1)
    rounding
    boolean

    Indicates whether the report filter is rounding

    sortOrder
    string
    Enum: "ASCENDING" "DESCENDING"

    If provided, you'll get sorted result by provided sort order.

    object (SummaryFilterV1)

    Represents summary report filter.

    object (ContainsTagFilterV1)

    Represents object for filtering entries by tags.

    object (ContainsTaskFilterV1)

    Represents filter criteria for expenses associated with tasks.

    timeFormat
    string

    Provide time in format THH:MM:SS.ssssss

    timeZone
    string

    If provided, you'll get filtered result including reports with provided time zone.

    object (ContainsUsersFilterV1)
    userLocale
    string

    If provided, you'll get filtered result including reports with provided user locale.

    object (ContainsUsersFilterV1)
    weekStart
    string
    Enum: "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY"

    If provided, you'll get filtered result including reports with provided week start.

    object (WeeklyFilterV1)

    Represents weekly report filter.

    withoutDescription
    boolean

    If set to 'true', report will only include entries with empty description

    zoomLevel
    string
    Enum: "WEEK" "MONTH" "YEAR"

    If provided, you'll get filtered result including reports with provided zoom level.

    Responses

    Request samples

    Content type
    application/json
    {
    • "amountShown": "COST",
    • "amounts": [
      ],
    • "approvalState": "APPROVED",
    • "archived": false,
    • "attendanceFilter": {
      },
    • "billable": true,
    • "clients": {
      },
    • "currency": {
      },
    • "customFields": [
      ],
    • "dateFormat": "2018-11-01",
    • "dateRangeEnd": "2018-11-30T23:59:59.999Z",
    • "dateRangeStart": "2018-11-01T00:00:00Z",
    • "dateRangeType": "LAST_MONTH",
    • "description": "some description keyword",
    • "detailedFilter": {
      },
    • "exportType": "JSON",
    • "invoicingState": "INVOICED",
    • "projects": {
      },
    • "rounding": false,
    • "sortOrder": "ASCENDING",
    • "summaryFilter": {
      },
    • "tags": {
      },
    • "tasks": {
      },
    • "timeFormat": "T00:00:00",
    • "timeZone": "Europe/Belgrade",
    • "userGroups": {
      },
    • "userLocale": "en",
    • "users": {
      },
    • "weekStart": "MONDAY",
    • "weeklyFilter": {
      },
    • "withoutDescription": false,
    • "zoomLevel": "WEEK"
    }

    Summary report

    Summary report data on FREE subscription plan is limited to a maximum interval length of one year (366 days).

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ecxxxx

    Represents workspace identifier across the system.

    Request Body schema: application/json
    amountShown
    string
    Enum: "EARNED" "COST" "PROFIT" "HIDE_AMOUNT" "EXPORT"

    If provided, you'll get filtered result including reports with provided amount shown.

    amounts
    Array of strings
    Items Enum: "EARNED" "COST" "PROFIT" "HIDE_AMOUNT" "EXPORT"
    approvalState
    string
    Enum: "APPROVED" "UNAPPROVED" "ALL"

    If provided, you'll get filtered result including reports with provided approval state.

    archived
    boolean

    Indicates whether the report is archived

    object (AttendanceFilterV1)

    Represents attendance report filter.

    billable
    boolean

    Indicates whether the report is billable

    object (ContainsArchivedFilterV1)
    object (ContainsArchivedFilterV1)
    Array of objects (CustomFieldFilterV1)
    dateFormat
    string

    Provide date in format YYYY-MM-DD

    dateRangeEnd
    required
    string non-empty

    Provide date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeStart
    required
    string non-empty

    Provide date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeType
    string
    Enum: "ABSOLUTE" "TODAY" "YESTERDAY" "THIS_WEEK" "LAST_WEEK" "PAST_TWO_WEEKS" "THIS_MONTH" "LAST_MONTH" "THIS_YEAR" "LAST_YEAR"

    Provide date range type

    description
    string

    Represents search term for filtering report entries by description

    object (DetailedFilterV1)

    Represents detailed report filter.

    exportType
    string
    Enum: "JSON" "JSON_V1" "PDF" "CSV" "XLSX" "ZIP"

    If provided, you'll get filtered result including reports with provided export type.

    invoicingState
    string
    Enum: "INVOICED" "UNINVOICED" "ALL"

    If provided, you'll get filtered result including reports with provided invoicing state.

    object (ContainsArchivedFilterV1)
    rounding
    boolean

    Indicates whether the report filter is rounding

    sortOrder
    string
    Enum: "ASCENDING" "DESCENDING"

    If provided, you'll get sorted result by provided sort order.

    required
    object (SummaryFilterV1)

    Represents summary report filter.

    object (ContainsTagFilterV1)

    Represents object for filtering entries by tags.

    object (ContainsTaskFilterV1)

    Represents filter criteria for expenses associated with tasks.

    timeFormat
    string

    Provide time in format THH:MM:SS.ssssss

    timeZone
    string

    If provided, you'll get filtered result including reports with provided time zone.

    object (ContainsUsersFilterV1)
    userLocale
    string

    If provided, you'll get filtered result including reports with provided user locale.

    object (ContainsUsersFilterV1)
    weekStart
    string
    Enum: "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY"

    If provided, you'll get filtered result including reports with provided week start.

    object (WeeklyFilterV1)

    Represents weekly report filter.

    withoutDescription
    boolean

    If set to 'true', report will only include entries with empty description

    zoomLevel
    string
    Enum: "WEEK" "MONTH" "YEAR"

    If provided, you'll get filtered result including reports with provided zoom level.

    Responses

    Request samples

    Content type
    application/json
    {
    • "amountShown": "COST",
    • "amounts": [
      ],
    • "approvalState": "APPROVED",
    • "archived": false,
    • "attendanceFilter": {
      },
    • "billable": true,
    • "clients": {
      },
    • "currency": {
      },
    • "customFields": [
      ],
    • "dateFormat": "2018-11-01",
    • "dateRangeEnd": "2018-11-30T23:59:59.999Z",
    • "dateRangeStart": "2018-11-01T00:00:00Z",
    • "dateRangeType": "LAST_MONTH",
    • "description": "some description keyword",
    • "detailedFilter": {
      },
    • "exportType": "JSON",
    • "invoicingState": "INVOICED",
    • "projects": {
      },
    • "rounding": false,
    • "sortOrder": "ASCENDING",
    • "summaryFilter": {
      },
    • "tags": {
      },
    • "tasks": {
      },
    • "timeFormat": "T00:00:00",
    • "timeZone": "Europe/Belgrade",
    • "userGroups": {
      },
    • "userLocale": "en",
    • "users": {
      },
    • "weekStart": "MONDAY",
    • "weeklyFilter": {
      },
    • "withoutDescription": false,
    • "zoomLevel": "WEEK"
    }

    Weekly report

    Weekly report data on FREE subscription plan is limited to a maximum interval length of one year (366 days).

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ecxxxx

    Represents workspace identifier across the system.

    Request Body schema: application/json
    amountShown
    string
    Enum: "EARNED" "COST" "PROFIT" "HIDE_AMOUNT" "EXPORT"

    If provided, you'll get filtered result including reports with provided amount shown.

    amounts
    Array of strings
    Items Enum: "EARNED" "COST" "PROFIT" "HIDE_AMOUNT" "EXPORT"
    approvalState
    string
    Enum: "APPROVED" "UNAPPROVED" "ALL"

    If provided, you'll get filtered result including reports with provided approval state.

    archived
    boolean

    Indicates whether the report is archived

    object (AttendanceFilterV1)

    Represents attendance report filter.

    billable
    boolean

    Indicates whether the report is billable

    object (ContainsArchivedFilterV1)
    object (ContainsArchivedFilterV1)
    Array of objects (CustomFieldFilterV1)
    dateFormat
    string

    Provide date in format YYYY-MM-DD

    dateRangeEnd
    required
    string non-empty

    Provide date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeStart
    required
    string non-empty

    Provide date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeType
    string
    Enum: "ABSOLUTE" "TODAY" "YESTERDAY" "THIS_WEEK" "LAST_WEEK" "PAST_TWO_WEEKS" "THIS_MONTH" "LAST_MONTH" "THIS_YEAR" "LAST_YEAR"

    Provide date range type

    description
    string

    Represents search term for filtering report entries by description

    object (DetailedFilterV1)

    Represents detailed report filter.

    exportType
    string
    Enum: "JSON" "JSON_V1" "PDF" "CSV" "XLSX" "ZIP"

    If provided, you'll get filtered result including reports with provided export type.

    invoicingState
    string
    Enum: "INVOICED" "UNINVOICED" "ALL"

    If provided, you'll get filtered result including reports with provided invoicing state.

    object (ContainsArchivedFilterV1)
    rounding
    boolean

    Indicates whether the report filter is rounding

    sortOrder
    string
    Enum: "ASCENDING" "DESCENDING"

    If provided, you'll get sorted result by provided sort order.

    object (SummaryFilterV1)

    Represents summary report filter.

    object (ContainsTagFilterV1)

    Represents object for filtering entries by tags.

    object (ContainsTaskFilterV1)

    Represents filter criteria for expenses associated with tasks.

    timeFormat
    string

    Provide time in format THH:MM:SS.ssssss

    timeZone
    string

    If provided, you'll get filtered result including reports with provided time zone.

    object (ContainsUsersFilterV1)
    userLocale
    string

    If provided, you'll get filtered result including reports with provided user locale.

    object (ContainsUsersFilterV1)
    weekStart
    string
    Enum: "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY"

    If provided, you'll get filtered result including reports with provided week start.

    required
    object (WeeklyFilterV1)

    Represents weekly report filter.

    withoutDescription
    boolean

    If set to 'true', report will only include entries with empty description

    zoomLevel
    string
    Enum: "WEEK" "MONTH" "YEAR"

    If provided, you'll get filtered result including reports with provided zoom level.

    Responses

    Request samples

    Content type
    application/json
    {
    • "amountShown": "COST",
    • "amounts": [
      ],
    • "approvalState": "APPROVED",
    • "archived": false,
    • "attendanceFilter": {
      },
    • "billable": true,
    • "clients": {
      },
    • "currency": {
      },
    • "customFields": [
      ],
    • "dateFormat": "2018-11-01",
    • "dateRangeEnd": "2018-11-30T23:59:59.999Z",
    • "dateRangeStart": "2018-11-01T00:00:00Z",
    • "dateRangeType": "LAST_MONTH",
    • "description": "some description keyword",
    • "detailedFilter": {
      },
    • "exportType": "JSON",
    • "invoicingState": "INVOICED",
    • "projects": {
      },
    • "rounding": false,
    • "sortOrder": "ASCENDING",
    • "summaryFilter": {
      },
    • "tags": {
      },
    • "tasks": {
      },
    • "timeFormat": "T00:00:00",
    • "timeZone": "Europe/Belgrade",
    • "userGroups": {
      },
    • "userLocale": "en",
    • "users": {
      },
    • "weekStart": "MONDAY",
    • "weeklyFilter": {
      },
    • "withoutDescription": false,
    • "zoomLevel": "WEEK"
    }

    Expense Report

    Generate expense report

    Expense report data on FREE subscription plan is limited to a maximum interval length of one year (366 days).

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec6bbb

    Represents workspace identifier across the system.

    Request Body schema: application/json
    approvalState
    string
    Enum: "APPROVED" "UNAPPROVED" "ALL"

    Represents approval state

    billable
    boolean

    Indicates whether report is billable

    object (ContainsArchivedFilterV1)
    object (ContainsArchivedFilterV1)
    object (ContainsArchivedFilterV1)
    dateRangeEnd
    required
    string non-empty

    Provide date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeStart
    required
    string non-empty

    Provide date in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    dateRangeType
    string
    Enum: "ABSOLUTE" "TODAY" "YESTERDAY" "THIS_WEEK" "LAST_WEEK" "PAST_TWO_WEEKS" "THIS_MONTH" "LAST_MONTH" "THIS_YEAR" "LAST_YEAR"

    Represents date range type of expense report

    exportType
    string
    Enum: "JSON" "JSON_V1" "PDF" "CSV" "XLSX" "ZIP"

    Represents export type

    invoicingState
    string
    Enum: "INVOICED" "UNINVOICED" "ALL"

    Represents invoicing state

    note
    string

    Represents search term for filtering report entries by note

    page
    integer <int32> >= 1

    Page number.

    pageSize
    integer <int32> >= 1

    Page size.

    object (ContainsArchivedFilterV1)
    sortColumn
    string
    Enum: "ID" "PROJECT" "USER" "CATEGORY" "DATE" "AMOUNT"

    Represents expenses sort column

    sortOrder
    string
    Enum: "ASCENDING" "DESCENDING"

    Represents sort order

    object (ContainsTaskFilterV1)

    Represents filter criteria for expenses associated with tasks.

    timeZone
    string

    Represents time zone

    object (ContainsUsersFilterV1)
    userLocale
    string

    Represents user locale

    object (ContainsUsersFilterV1)
    weekStart
    string
    Enum: "MONDAY" "TUESDAY" "WEDNESDAY" "THURSDAY" "FRIDAY" "SATURDAY" "SUNDAY"

    Represents week start

    withoutNote
    boolean

    If set to 'true', report will only include entries with empty note

    zoomLevel
    string
    Enum: "WEEK" "MONTH" "YEAR"

    Represents zoom level

    Responses

    Request samples

    Content type
    application/json
    {
    • "approvalState": "APPROVED",
    • "billable": true,
    • "categories": {
      },
    • "clients": {
      },
    • "currency": {
      },
    • "dateRangeEnd": "2021-10-27T23:59:59.999Z",
    • "dateRangeStart": "2021-10-27T00:00:00Z",
    • "dateRangeType": "TODAY",
    • "exportType": "JSON",
    • "invoicingState": "INVOICED",
    • "note": "some note keyword",
    • "page": 1,
    • "pageSize": 50,
    • "projects": {
      },
    • "sortColumn": "ID",
    • "sortOrder": "ASCENDING",
    • "tasks": {
      },
    • "timeZone": "Europe/Budapest",
    • "userGroups": {
      },
    • "userLocale": "en",
    • "users": {
      },
    • "weekStart": "MONDAY",
    • "withoutNote": false,
    • "zoomLevel": "WEEK"
    }

    Response samples

    Content type
    application/json
    {
    • "expenses": [
      ],
    • "totals": {
      }
    }

    Balance (Deprecated)

    This endpoint group is deprecated. It will be available until 1st of July 2025. Use Balance instead.

    Get balance by policy Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Balance instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    query Parameters
    page
    string <= 1000
    Default: "1"
    Example: page=1
    page-size
    string [ 1 .. 200 ]
    Default: "50"
    Example: page-size=50
    sort
    string
    Enum: "USER" "POLICY" "USED" "BALANCE" "TOTAL"
    Example: sort=USER

    If provided, you'll get result sorted by sort column.

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Sort results in ascending or descending order.

    Responses

    Response samples

    Content type
    application/json
    {
    • "balances": [
      ],
    • "count": 2
    }

    Update balance Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Balance instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Request Body schema: application/json
    required
    note
    string

    Represents note attached to updating balance.

    userIds
    required
    Array of strings unique

    Represents list of users' identifiers whose balance is to be updated.

    value
    required
    number <double> [ -10000 .. 10000 ]

    Represents new balance value.

    Responses

    Request samples

    Content type
    application/json
    {
    • "note": "Bonus days added.",
    • "userIds": [
      ],
    • "value": 22
    }

    Get balance by user Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Balance instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    userId
    required
    string
    Example: 60f924bafdaf031696ec6218

    Represents user identifier across the system.

    query Parameters
    page
    integer <int32> <= 1000
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> [ 1 .. 200 ]
    Default: 50
    Example: page-size=50

    Page size.

    sort
    string
    Enum: "USER" "POLICY" "USED" "BALANCE" "TOTAL"
    Example: sort=POLICY

    Sort result based on given criteria

    sort-order
    string
    Enum: "ASCENDING" "DESCENDING"
    Example: sort-order=ASCENDING

    Sort result by providing sort order.

    Responses

    Response samples

    Content type
    application/json
    {
    • "balances": [
      ],
    • "count": 2
    }

    Policy (Deprecated)

    This endpoint group is deprecated. It will be available until 1st of July 2025. Use Policy instead.

    Get policies on workspace Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Policy instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    query Parameters
    page
    integer <int32> <= 1000
    Default: 1
    Example: page=1

    Page number.

    page-size
    string [ 1 .. 200 ]
    Example: page-size=50

    Page size.

    name
    string
    Example: name=Holidays

    If provided, you'll get a filtered list of policies that contain the provided string in their name.

    status
    string
    Enum: "ACTIVE" "ARCHIVED" "ALL"
    Example: status=ACTIVE

    If provided, you'll get a filtered list of policies with the corresponding status.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Create time off policy Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Policy instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    allowHalfDay
    boolean

    Indicates whether policy allows half days.

    allowNegativeBalance
    boolean

    Indicates whether policy allows negative balances.

    required
    object (Approve)

    Provide approval settings.

    archived
    boolean

    Indicates whether policy is archived.

    object (PtoAutomaticAccrualRequest)

    Provide automatic accrual settings.

    object (AutomaticTimeEntryCreationRequest)

    Provides automatic time entry creation settings.

    color
    string^#(?:[0-9a-fA-F]{6}){1}$

    Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format.

    everyoneIncludingNew
    boolean

    Indicates whether the policy is to be applied to future new users.

    name
    required
    string

    Represents name of new policy.

    object (NegativeBalanceRequest)

    Provide the negative balance data you would like to use for updating the policy.

    timeUnit
    string
    Enum: "DAYS" "HOURS"

    Indicates time unit of the policy.

    object (PTOUserGroupIdsSchema)

    Provide list with user group ids and corresponding status.

    object (PTOUserIdsSchema)

    Provide list with user ids and corresponding status.

    Responses

    Request samples

    Content type
    application/json
    {
    • "allowHalfDay": false,
    • "allowNegativeBalance": true,
    • "approve": {
      },
    • "archived": true,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "color": "#8BC34A",
    • "everyoneIncludingNew": false,
    • "name": "Mental health days",
    • "negativeBalance": {
      },
    • "timeUnit": "DAYS",
    • "userGroups": {
      },
    • "users": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "allowHalfDay": false,
    • "allowNegativeBalance": true,
    • "approve": {
      },
    • "archived": true,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "Days",
    • "negativeBalance": {
      },
    • "projectId": "string",
    • "timeUnit": "DAYS",
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Delete policy Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Policy instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Responses

    Get time off policy Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Policy instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "allowHalfDay": false,
    • "allowNegativeBalance": true,
    • "approve": {
      },
    • "archived": true,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "Days",
    • "negativeBalance": {
      },
    • "projectId": "string",
    • "timeUnit": "DAYS",
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Change policy status Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Policy instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Request Body schema: application/json
    required
    status
    required
    string
    Enum: "ACTIVE" "ARCHIVED" "ALL"

    Provide the status you would like to use for changing the policy.

    Responses

    Request samples

    Content type
    application/json
    {
    • "status": "ACTIVE"
    }

    Response samples

    Content type
    application/json
    {
    • "allowHalfDay": false,
    • "allowNegativeBalance": true,
    • "approve": {
      },
    • "archived": true,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "Days",
    • "negativeBalance": {
      },
    • "projectId": "string",
    • "timeUnit": "DAYS",
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Update policy Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Policy instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    id
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Request Body schema: application/json
    required
    allowHalfDay
    required
    boolean

    Indicates whether policy allows half day.

    allowNegativeBalance
    required
    boolean

    Indicates whether policy allows negative balance.

    required
    object (Approve)

    Provide approval settings.

    archived
    required
    boolean

    Indicates whether policy is archived.

    object (PtoAutomaticAccrualRequest)

    Provide automatic accrual settings.

    object (AutomaticTimeEntryCreationRequest)

    Provides automatic time entry creation settings.

    color
    string^#(?:[0-9a-fA-F]{6}){1}$

    Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format.

    everyoneIncludingNew
    required
    boolean

    Indicates whether the policy is shown to new users.

    name
    required
    string

    Provide the name you would like to use for updating the policy.

    object (NegativeBalanceRequest)

    Provide the negative balance data you would like to use for updating the policy.

    required
    object (PTOUserGroupIdsSchema)

    Provide list with user group ids and corresponding status.

    required
    object (PTOUserIdsSchema)

    Provide list with user ids and corresponding status.

    Responses

    Request samples

    Content type
    application/json
    {
    • "allowHalfDay": true,
    • "allowNegativeBalance": false,
    • "approve": {
      },
    • "archived": false,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "color": "#8BC34A",
    • "everyoneIncludingNew": false,
    • "name": "Days",
    • "negativeBalance": {
      },
    • "userGroups": {
      },
    • "users": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "allowHalfDay": false,
    • "allowNegativeBalance": true,
    • "approve": {
      },
    • "archived": true,
    • "automaticAccrual": {
      },
    • "automaticTimeEntryCreation": {
      },
    • "everyoneIncludingNew": false,
    • "id": "5b715612b079875110791111",
    • "name": "Days",
    • "negativeBalance": {
      },
    • "projectId": "string",
    • "timeUnit": "DAYS",
    • "userGroupIds": [
      ],
    • "userIds": [
      ],
    • "workspaceId": "5b715612b079875110792222"
    }

    Time Off (Deprecated)

    This endpoint group is deprecated. It will be available until 1st of July 2025. Use Time Off instead.

    Create time off request Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Time Off instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    Request Body schema: application/json
    required
    note
    string

    Provide the note you would like to use for creating the time off request.

    required
    object (PtoTimeOffRequestPeriodV1Request)

    Provide the period you would like to use for creating the time off request.

    Responses

    Request samples

    Content type
    application/json
    {
    • "note": "Create Time Off Note",
    • "timeOffPeriod": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "balance": 1,
    • "balanceDiff": 1,
    • "createdAt": "2022-08-26T08:32:01.640708Z",
    • "id": "5b715612b079875110791111",
    • "note": "Time Off Request Note",
    • "policyId": "5b715612b079875110792333",
    • "policyName": "Days",
    • "requesterUserId": "5b715612b0798751107925555",
    • "requesterUserName": "John",
    • "status": {
      },
    • "timeOffPeriod": {
      },
    • "timeUnit": "DAYS",
    • "userId": "5b715612b079875110794444",
    • "userName": "Nicholas",
    • "workspaceId": "5b715612b079875110792222"
    }

    Delete request Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Time Off instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    requestId
    required
    string
    Example: 6308850156b7d75ea8fd3fbd

    Represents time off request identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "balanceDiff": 1,
    • "createdAt": "2022-08-26T08:32:01.640708Z",
    • "id": "5b715612b079875110791111",
    • "note": "Time Off Request Note",
    • "policyId": "5b715612b079875110792333",
    • "status": {
      },
    • "timeOffPeriod": {
      },
    • "userId": "5b715612b079875110794444",
    • "workspaceId": "5b715612b079875110792222"
    }

    Change time off request status Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Time Off instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    requestId
    required
    string
    Example: 6308850156b7d75ea8fd3fbd

    Represents time off request identifier across the system.

    Request Body schema: application/json
    required
    note
    string

    Provide the note you would like to use for changing the time off request.

    status
    string
    Enum: "APPROVED" "REJECTED"

    Provide the status you would like to use for changing the time off request.

    Responses

    Request samples

    Content type
    application/json
    {
    • "note": "Time Off Request Note",
    • "status": "APPROVED"
    }

    Response samples

    Content type
    application/json
    {
    • "balanceDiff": 1,
    • "createdAt": "2022-08-26T08:32:01.640708Z",
    • "id": "5b715612b079875110791111",
    • "note": "Time Off Request Note",
    • "policyId": "5b715612b079875110792333",
    • "status": {
      },
    • "timeOffPeriod": {
      },
    • "userId": "5b715612b079875110794444",
    • "workspaceId": "5b715612b079875110792222"
    }

    Create time off request for user Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Time Off instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    policyId
    required
    string
    Example: 63034cd0cb0fb876a57e93ad

    Represents policy identifier across the system.

    userId
    required
    string
    Example: 60f924bafdaf031696ec6218

    Represents user identifier across the system.

    Request Body schema: application/json
    required
    note
    string

    Provide the note you would like to use for creating the time off request.

    required
    object (PtoTimeOffRequestPeriodV1Request)

    Provide the period you would like to use for creating the time off request.

    Responses

    Request samples

    Content type
    application/json
    {
    • "note": "Create Time Off Note",
    • "timeOffPeriod": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "balance": 1,
    • "balanceDiff": 1,
    • "createdAt": "2022-08-26T08:32:01.640708Z",
    • "id": "5b715612b079875110791111",
    • "note": "Time Off Request Note",
    • "policyId": "5b715612b079875110792333",
    • "policyName": "Days",
    • "requesterUserId": "5b715612b0798751107925555",
    • "requesterUserName": "John",
    • "status": {
      },
    • "timeOffPeriod": {
      },
    • "timeUnit": "DAYS",
    • "userId": "5b715612b079875110794444",
    • "userName": "Nicholas",
    • "workspaceId": "5b715612b079875110792222"
    }

    Get all time off requests on workspace Deprecated

    This endpoint is deprecated. It will be available until 1st of July 2025. Use Time Off instead.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 60f91b3ffdaf031696ec61a8

    Represents workspace identifier across the system.

    Request Body schema: application/json
    required
    end
    string <date-time>

    Return time off requests created before the specified time in requester's time zone. Provide end in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    page
    integer <int32> <= 1000
    Default: 1

    Page number.

    pageSize
    integer <int32> [ 1 .. 200 ]
    Default: 50

    Page size.

    start
    string <date-time>

    Return time off requests created after the specified time in requester's time zone. Provide start in format YYYY-MM-DDTHH:MM:SS.ssssssZ

    statuses
    string
    Enum: "PENDING" "APPROVED" "REJECTED" "ALL"

    Filters time off requests by status.

    userGroups
    Array of strings unique

    Provide the user group ids of time off requests.

    users
    Array of strings unique

    Provide the user ids of time off requests.If empty will return time off requests of all users (with a maximum of 5000 users).

    Responses

    Request samples

    Content type
    application/json
    {
    • "end": "2022-08-26T23:55:06.281873Z",
    • "page": 1,
    • "pageSize": 50,
    • "start": "2022-08-26T08:00:06.281873Z",
    • "statuses": "[\"APPROVED\",\"PENDING\"]",
    • "userGroups": [
      ],
    • "users": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "count": 1,
    • "requests": [
      ]
    }

    Scheduling (Deprecated)

    This endpoint group contains deprecated endpoints from the Scheduling endpoint group.

    Get all scheduled assignments per project Deprecated

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    search
    string
    Default: ""
    Example: search=Project name

    Represents term for searching projects and clients by name.

    start
    required
    string
    Example: start=2020-01-01T00:00:00Z

    Represents start date in yyyy-MM-ddThh:mm:ssZ format.

    end
    required
    string
    Example: end=2021-01-01T00:00:00Z

    Represents end date in yyyy-MM-ddThh:mm:ssZ format.

    page
    integer <int32>
    Default: 1
    Example: page=1

    Page number.

    page-size
    integer <int32> >= 1
    Default: 50
    Example: page-size=50

    Page size.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Workspace (Deprecated)

    This endpoint group contains deprecated endpoints from the Workspace endpoint group.

    Remove user from workspace Deprecated

    This endpoint is not functional and has been deprecated. A user can be removed/deleted on the CAKE.com Account Members page after deactivating all their existing memberships on all workspaces within an organization.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    userId
    required
    string
    Example: 89b687e29ae1f428e7ebe912

    Represents user identifier across the system.

    Responses

    Response samples

    Content type
    application/json
    {
    • "cakeOrganizationId": "67d471fb56aa9668b7bfa295",
    • "costRate": {
      },
    • "currencies": [
      ],
    • "featureSubscriptionType": "PREMIUM",
    • "features": [
      ],
    • "hourlyRate": {
      },
    • "id": "64a687e29ae1f428e7ebe303",
    • "memberships": [
      ],
    • "name": "Cool Company",
    • "subdomain": {
      },
    • "workspaceSettings": {
      }
    }

    Entity changes (Experimental)

    For use case see Entity Changes Use Cases

    Deleted entities (Experimental)

    This endpoint retrieves information of database collection(s) that have been deleted within the specified date range. The date range is determined by two parameters: start and end. Please note that deleted entities will be updated and reflected approximately one minute after deletion.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system (Experimental)

    query Parameters
    type
    required
    Array of strings
    Example: type=TIME_ENTRY

    Specifies the type of document to be retrieved. Expected values are TIME_ENTRY, TIME_ENTRY_CUSTOM_FIELD_VALUE and TIME_ENTRY_RATE.This parameter can accept multiple values, and at least one option must be provided. Based on the input, the application will return results corresponding to the selected document types.

    start
    string
    Example: start=2024-10-29T10:00:00Z

    Represents the start date in yyyy-MM-ddThh:mm:ssZ format. This parameter is optional; if no start date is provided, the application will set a default start date that matches the end date to create a date range of 30 days. If the end date is not specified either, the default behavior will apply from the current date.

    end
    string
    Example: end=2024-11-28T10:00:00Z

    Represents the end date in yyyy-MM-ddThh:mm:ssZ format. This parameter is optional; if no end date is provided, the application will set a default end date that matches the start date to create a date range of 30 days.

    page
    string
    Default: "0"
    limit
    string
    Default: "50"

    Responses

    Response samples

    Content type
    application/json
    {
    • "response": [
      ]
    }

    Updated entities (Experimental)

    This endpoint retrieves records from the database collection that have been updated within the specified date range. The date range is determined by two parameters: start and end.

    Authorizations:
    ApiKeyAuthAddonKeyAuth
    path Parameters
    workspaceId
    required
    string
    Example: 64a687e29ae1f428e7ebe303

    Represents workspace identifier across the system.

    query Parameters
    type
    required
    Array of strings
    Example: type=TIME_ENTRY

    Specifies the type of document to be retrieved. Expected values are TIME_ENTRY, TIME_ENTRY_CUSTOM_FIELD_VALUE and TIME_ENTRY_RATE.This parameter can accept multiple values, and at least one option must be provided. Based on the input, the application will return results corresponding to the selected document types.

    start
    string
    Example: start=2024-10-29T10:00:00Z

    Represents the start date in yyyy-MM-ddThh:mm:ssZ format. This parameter is optional; if no start date is provided, the application will set a default start date that matches the end date to create a date range of 30 days. If the end date is not specified either, the default behavior will apply from the current date.

    end
    string
    Example: end=2024-11-28T10:00:00Z

    Represents the end date in yyyy-MM-ddThh:mm:ssZ format. This parameter is optional; if no end date is provided, the application will set a default end date that matches the start date to create a date range of 30 days.

    page
    string
    Default: "0"
    limit
    string
    Default: "50"

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Entity Changes Use Cases

    This section presents a step-by-step use case of the Entity Changes API endpoints. While only a single use case is available at the moment, additional scenarios may be added in the future.

    This documentation is intended to show developers how these endpoints can be integrated and used within their systems.

    Entity Changes Based on Detailed Report

    This use case describes how to retrieve the detailed report as a starting point, then incrementally get changes of custom field values or other type) (inserts, updates, and deletions) to keep data of time entry in sync.

    Step 1: Get Initial Data Using the Detailed Report API

    Use the Detailed Report API to fetch time entries for a specified date range. This initial data serves as the base dataset, which will be incrementally updated in subsequent steps without the need to refetch the entire detailed report.

    Below is an example that fetches data from May 1 to May 20, 2025.

    • Use the curl command below:
    curl --location 'http://localhost:9090/workspaces/{WORKSPACE_ID}/reports/detailed' \
    --header 'Accept: application/json' \
    --data '{
        "dateRangeStart": "2025-05-01T00:00:00.000Z",
        "dateRangeEnd": "2025-05-20T23:59:59.999Z"
    }'
    
    • Sample response:
        {
          "timeentries": [
            {
              "_id": "1",
              "description": "Time entry 1",
              "timeInterval": {
                "start": "2025-05-18T01:00:00Z",
                "end": "2025-05-18T09:00:00.000Z"
              },
              "customFields": [
                {
                  "customFieldId": "6808e9a6b77db953ea0d3f73",
                  "value": "custom field value 1"
                }
              ]
            },
            {
              "_id": "2",
              "description": "Time entry 2",
              "timeInterval": {
                "start": "2025-05-19T01:00:00Z",
                "end": "2025-05-19T09:00:00.000Z"
              },
              "customFields": [
                {
                  "customFieldId": "6808e9a6b77db953ea0d3f73",
                  "value": "Custom field value 2"
                }
              ]
            }
          ]
        }
    

    The response contains a detailed report of time entries from the specified date range. This data can be saved in a database and serve as the baseline for tracking incremental updates. From this baseline, you can retrieve updates at your preferred frequency—daily, weekly, or monthly—depending on your system’s requirements.

    Step 2: Retrieve Custom Field Value Changes for Subsequent Days

    Fetch incremental changes (inserts, updates) on custom field values of time entries for the days following the initial data range. For API specification see Updated entities - Custom field values

    After fetching the initial dataset in Step 1, use this step to retrieve any changes to custom field values on time entries for the days that follow.

    Below is an example that fetches the changes occurring after the last date retrieved in the detailed report (e.g., after May 20, 2025).

    • Use the curl command below:
    curl -X GET
    "http://localhost:8080/v1/workspaces/{WORKSPACE_ID}/entities/updated?type=TIME_ENTRY_CUSTOM_FIELD_VALUE&start=2025-05-21T00:00:00Z&end=2025-05-22T00:00:00Z&limit=30&page=1"
    
    • Sample response:
      [
        {
          "auditMetadata": {
            "updatedAt": "2025-05-21T04:51:20Z",
            "createdAt": "2025-05-19T04:51:10Z"
          },
          "documentType": "TIME_ENTRY_CUSTOM_FIELD_VALUE",
          "id": "...",
          "customFieldId": "6808e9a6b77db953ea0d3f73",
          "timeEntryId": "2",
          "value": "Custom field value 2 - Updated"
            "sourceType": "TIMEENTRY"
        }
      ]
    

    The response will include only custom field values that were created or updated within the specified date range. Each change is associated with a timeEntryId, indicating which time entries have been affected.

    In the example response above, only the time entry with id=2 has been updated. This record should be updated in the previously stored dataset from Step 1— to keep your data in sync without needing to refetch the full detailed report.

    Step 3: Retrieve or Identify Deleted Custom Field Values

    In addition to fetching created and updated custom field values, you also need to handle deletions. This step involves retrieving records of custom field values that were deleted after the initial detailed report date range.

    The response will include references (such as timeEntryId and custom field identifiers) for the deleted entries. These indicate which custom field values should be removed from your previously stored dataset to maintain accurate and up-to-date records.

    For more information about this API, see Deleted entities - Custom field values

    Below is an example that fetches the deleted records after the last date retrieved in the detailed report in the Step 1 (e.g., after May 20, 2025).

    • Use the curl command below:
    curl -X GET "http://localhost:8080/v1/workspaces/{WORKSPACE_ID}/entities/deleted?type=TIME_ENTRY_CUSTOM_FIELD_VALUE&start=2025-05-21T00:00:00Z&end=2025-05-22T00:00:00Z&limit=30&page=1"
    
    • Sample response:
      [
        {
          "id": "...",
          "deletionBinId": "....",
          "deletedAt": "2025-05-21T23:15:54.790Z",
          "documentType": "TIME_ENTRY_CUSTOM_FIELD_VALUE",
          "document": {
            "customFieldId": "6808e9a6b77db953ea0d3f73",
            "timeEntryId": "1",
            "value": "custom field value 1",
            "sourceType": "TIMEENTRY"
          }
        }
      ]
    

    The response above shows which custom field values have been deleted. In this case, a specific custom field value for the time entry with id=1 has been removed. This change should now be reflected in your system by updating the data initially fetched in Step 1—either by deleting or archiving the corresponding record, based on your implementation.

    Note

    The above steps demonstrate how to retrieve incremental changes specifically for custom field values (type=TIME_ENTRY_CUSTOM_FIELD_VALUE).

    The same approach can be applied to other data types by simply replacing the type parameter. Below are the currently supported types that follow the same incremental pattern:

    • TIME_ENTRY
    • TIME_ENTRY_RATE
    • TIME_ENTRY_CUSTOM_FIELD_VALUE

    More types may be supported in the future as the system evolves.