Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://{site_name}.teamwork.com
/projects/api/v3/activity/{activityLogId}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| activityLogId | path | required | integer | — |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
DELETE /projects/api/v3/activity/{activityLogId}
/projects/api/v3/latestactivity.json
Lists the latest activity across all projects ordered chronologically. When
you log into Teamwork you will see all the recent activity. This corresponds
to that view in Teamwork. There are parameters you can send in to filter your
results.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| updatedAfter | query | optional | string | filter by updated after date |
| startDate | query | optional | string | filter by start datetime |
| sort | query | optional | string | sort by (deprecated, use orderBy) |
| projectStatus | query | optional | string | filter by project status |
| orderMode | query | optional | string | order mode |
| orderBy | query | optional | string | sort by |
| endDate | query | optional | string | filter by end datetime |
| projectId | query | optional | integer | filter by project id (deprecated, use projectIds) |
| pageSize | query | optional | integer | number of items in a page |
| page | query | optional | integer | page number |
| maxId | query | optional | integer | activity id offset |
| catchupFromId | query | optional | integer | limit results from previous id |
| showDeleted | query | optional | boolean | include deleted items |
| onlyStarredProjects | query | optional | boolean | filter by starred projects only |
| onlyProjectsWithExplicitMembership | query | optional | boolean | only projects with explicit membership |
| matchAllProjectTags | query | optional | boolean | enforce all tag ids must be matched |
| includeArchivedProjects | query | optional | boolean | include archived projects |
| groupCommentActivityType | query | optional | boolean | group all activities on comments |
| userIds | query | optional | array | filter by user ids |
| projectTagIds | query | optional | array | filter by project tag ids |
| projectStatuses | query | optional | array | list of project status |
| projectOwnerIds | query | optional | array | filter by project owner ids |
| projectIds | query | optional | array | filter by project ids |
| projectHealths | query | optional | array | list of project health |
| projectCompanyIds | query | optional | array | filter by company ids |
| projectCategoryIds | query | optional | array | filter by project category ids |
| include | query | optional | array | include |
| fields[users] | query | optional | array | — |
| fields[projects] | query | optional | array | — |
| fields[companies] | query | optional | array | — |
| fields[activities] | query | optional | array | — |
| activityTypes | query | optional | array | filter by activity types |
200 OK
400 Bad Request
GET /projects/api/v3/latestactivity.json
/projects/api/v3/projects/{projectId}/activity
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| projectId | path | required | integer | — |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
DELETE /projects/api/v3/projects/{projectId}/activity
/projects/api/v3/projects/{projectId}/latestactivity
Lists the latest activity for a specific project. When you access a project
you will see all the recent activity. This corresponds to that view in
Teamwork. There is some parameters you can send in to filter your results.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| updatedAfter | query | optional | string | filter by updated after date |
| startDate | query | optional | string | filter by start datetime |
| sort | query | optional | string | sort by (deprecated, use orderBy) |
| projectStatus | query | optional | string | filter by project status |
| orderMode | query | optional | string | order mode |
| orderBy | query | optional | string | sort by |
| endDate | query | optional | string | filter by end datetime |
| projectId | path | required | integer | — |
| projectId | query | optional | integer | filter by project id (deprecated, use projectIds) |
| pageSize | query | optional | integer | number of items in a page |
| page | query | optional | integer | page number |
| maxId | query | optional | integer | activity id offset |
| catchupFromId | query | optional | integer | limit results from previous id |
| showDeleted | query | optional | boolean | include deleted items |
| onlyStarredProjects | query | optional | boolean | filter by starred projects only |
| onlyProjectsWithExplicitMembership | query | optional | boolean | only projects with explicit membership |
| matchAllProjectTags | query | optional | boolean | enforce all tag ids must be matched |
| includeArchivedProjects | query | optional | boolean | include archived projects |
| groupCommentActivityType | query | optional | boolean | group all activities on comments |
| userIds | query | optional | array | filter by user ids |
| projectTagIds | query | optional | array | filter by project tag ids |
| projectStatuses | query | optional | array | list of project status |
| projectOwnerIds | query | optional | array | filter by project owner ids |
| projectIds | query | optional | array | filter by project ids |
| projectHealths | query | optional | array | list of project health |
| projectCompanyIds | query | optional | array | filter by company ids |
| projectCategoryIds | query | optional | array | filter by project category ids |
| include | query | optional | array | include |
| fields[users] | query | optional | array | — |
| fields[projects] | query | optional | array | — |
| fields[companies] | query | optional | array | — |
| fields[activities] | query | optional | array | — |
| activityTypes | query | optional | array | filter by activity types |
200 OK
400 Bad Request
GET /projects/api/v3/projects/{projectId}/latestactivity
/projects/api/v3/budget/notifications/{notificationId}.json
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| notificationId | path | required | integer | — |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
DELETE /projects/api/v3/budget/notifications/{notificationId}.json
/projects/api/v3/budget/notifications/{notificationId}.json
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| notificationId | path | required | integer | — |
application/json
notification.ProjectBudgetRequest
| Property | Type | Required |
|---|---|---|
| notification | object | optional |
| └ id | integer | optional |
| └ teamIds | array | optional |
| └ userIds | array | optional |
| └ budgetId | integer | optional |
| └ projectId | integer | optional |
| └ companyIds | array | optional |
| └ capacityThreshold | number | optional |
| └ notificationMedium | string | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
PATCH /projects/api/v3/budget/notifications/{notificationId}.json
/projects/api/v3/budgets/:id/tasklists/budgets/bulk/add.json
application/json
tasklistbudget.BulkAddBudgetRequest
| Property | Type | Required |
|---|---|---|
| tasklistBudgets | array | optional |
| └ id | integer | optional |
| └ capacity | integer | optional |
| └ tasklist | object | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ notifications | array | optional |
| └ id | integer | optional |
| └ teams | array | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ users | array | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ companies | array | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ capacityThreshold | number | optional |
| └ notificationMedium | string | optional |
| tasklistBudgetsOptions | object | optional |
| └ fireWebhook | boolean | optional |
| └ logActivity | boolean | optional |
| └ useNotifyViaTWIM | boolean | optional |
201 Created
400 Bad Request
403 Forbidden
409 Conflict
POST /projects/api/v3/budgets/:id/tasklists/budgets/bulk/add.json
/projects/api/v3/projects/budgets/:budgetId/tasklists/budgets/:tasklistId.json
application/json
tasklistbudget.PatchBudgetRequest
| Property | Type | Required |
|---|---|---|
| tasklistBudget | object | optional |
| └ id | integer | optional |
| └ capacity | integer | optional |
| └ tasklist | object | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ notifications | array | optional |
| └ id | integer | optional |
| └ teams | array | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ users | array | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ companies | array | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ capacityThreshold | number | optional |
| └ notificationMedium | string | optional |
| tasklistBudgetOptions | object | optional |
| └ fireWebhook | boolean | optional |
| └ logActivity | boolean | optional |
| └ useNotifyViaTWIM | boolean | optional |
201 Created
400 Bad Request
403 Forbidden
409 Conflict
PATCH /projects/api/v3/projects/budgets/:budgetId/tasklists/budgets/:tasklistId.json
/projects/api/v3/projects/budgets/:id/tasklists/budgets.json
Get a list of tasklist budgets information.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| orderMode | query | optional | string | order mode |
| orderBy | query | optional | string | order by |
| projectBudgetId | query | optional | integer | parent project budget id |
| pageSize | query | optional | integer | number of items in a page |
| page | query | optional | integer | page number |
| include | query | optional | array | include |
| fields[tasklists] | query | optional | array | — |
| fields[tasklistBudgetNotifications] | query | optional | array | — |
| fields[projectBudgets] | query | optional | array | — |
200 OK
400 Bad Request
GET /projects/api/v3/projects/budgets/:id/tasklists/budgets.json
/projects/api/v3/projects/budgets/:id/tasklists/budgets.json
payload. If an ID is provided it is seen as an update, else it inserts.
NOTE: the payload provided is the final source of truth, meaning any
budgets omitted will be cleared.
Adds or updates task list budgets.
application/json
tasklistbudget.BulkAddBudgetRequest
| Property | Type | Required |
|---|---|---|
| tasklistBudgets | array | optional |
| └ id | integer | optional |
| └ capacity | integer | optional |
| └ tasklist | object | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ notifications | array | optional |
| └ id | integer | optional |
| └ teams | array | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ users | array | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ companies | array | optional |
| └ id | integer | optional |
| └ type | string | optional |
| └ capacityThreshold | number | optional |
| └ notificationMedium | string | optional |
| tasklistBudgetsOptions | object | optional |
| └ fireWebhook | boolean | optional |
| └ logActivity | boolean | optional |
| └ useNotifyViaTWIM | boolean | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
PUT /projects/api/v3/projects/budgets/:id/tasklists/budgets.json
/projects/api/v3/calendar/events.csv
Generates an agenda report in CSV format containing all the events for the
provided filters.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| startDate | query | optional | string | events that happen after this date |
| reportFormat | query | optional | string | define the format of the report |
| endDate | query | optional | string | events that happen before this date |
| withTasks | query | optional | boolean | include tasks |
| withMilestones | query | optional | boolean | include milestones |
| withEvents | query | optional | boolean | include events |
| isReportDownload | query | optional | boolean | generate a report document |
| includeTags | query | optional | boolean | should include tags |
| attendingOnly | query | optional | boolean | when filtering events with targetUserIDs, display only when attending the event |
| typeIDs | query | optional | array | filter calendar events to show only the ones in typeIDs |
| targetUserIDs | query | optional | array | filter to show only events for the provided user |
| targetProjectIDs | query | optional | array | filter to show only events for the provided projects |
200 OK (no data)
400 Bad Request
GET /projects/api/v3/calendar/events.csv
/projects/api/v3/calendar/events.html
Generates an agenda report in HTML format containing all the events for the
provided filters.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| startDate | query | optional | string | events that happen after this date |
| reportFormat | query | optional | string | define the format of the report |
| endDate | query | optional | string | events that happen before this date |
| withTasks | query | optional | boolean | include tasks |
| withMilestones | query | optional | boolean | include milestones |
| withEvents | query | optional | boolean | include events |
| isReportDownload | query | optional | boolean | generate a report document |
| includeTags | query | optional | boolean | should include tags |
| attendingOnly | query | optional | boolean | when filtering events with targetUserIDs, display only when attending the event |
| typeIDs | query | optional | array | filter calendar events to show only the ones in typeIDs |
| targetUserIDs | query | optional | array | filter to show only events for the provided user |
| targetProjectIDs | query | optional | array | filter to show only events for the provided projects |
200 OK (no data)
400 Bad Request
GET /projects/api/v3/calendar/events.html
/projects/api/v3/calendar/events.pdf
Generates an agenda report in PDF format containing all the events for the
provided filters.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| startDate | query | optional | string | events that happen after this date |
| reportFormat | query | optional | string | define the format of the report |
| endDate | query | optional | string | events that happen before this date |
| withTasks | query | optional | boolean | include tasks |
| withMilestones | query | optional | boolean | include milestones |
| withEvents | query | optional | boolean | include events |
| isReportDownload | query | optional | boolean | generate a report document |
| includeTags | query | optional | boolean | should include tags |
| attendingOnly | query | optional | boolean | when filtering events with targetUserIDs, display only when attending the event |
| typeIDs | query | optional | array | filter calendar events to show only the ones in typeIDs |
| targetUserIDs | query | optional | array | filter to show only events for the provided user |
| targetProjectIDs | query | optional | array | filter to show only events for the provided projects |
200 OK (no data)
400 Bad Request
GET /projects/api/v3/calendar/events.pdf
/projects/api/v3/calendar/events.xlsx
Generates an agenda report in XLSX format containing all the events for the
provided filters.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| startDate | query | optional | string | events that happen after this date |
| reportFormat | query | optional | string | define the format of the report |
| endDate | query | optional | string | events that happen before this date |
| withTasks | query | optional | boolean | include tasks |
| withMilestones | query | optional | boolean | include milestones |
| withEvents | query | optional | boolean | include events |
| isReportDownload | query | optional | boolean | generate a report document |
| includeTags | query | optional | boolean | should include tags |
| attendingOnly | query | optional | boolean | when filtering events with targetUserIDs, display only when attending the event |
| typeIDs | query | optional | array | filter calendar events to show only the ones in typeIDs |
| targetUserIDs | query | optional | array | filter to show only events for the provided user |
| targetProjectIDs | query | optional | array | filter to show only events for the provided projects |
200 OK (no data)
400 Bad Request
GET /projects/api/v3/calendar/events.xlsx
/projects/api/v3/projectcategories.json
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| searchTerm | query | optional | string | filter by name |
| onlyStarredProjects | query | optional | boolean | filter by starred projects only. |
| projectStatuses | query | optional | array | filter by project statuses. |
| ids | query | optional | array | filter by specific ids |
| fields[projectcategories] | query | optional | array | — |
200 OK
400 Bad Request
403 Forbidden
GET /projects/api/v3/projectcategories.json
/projects/api/v3/projectcategories/{categoryId}.json
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| searchTerm | query | optional | string | filter by name |
| categoryId | path | required | integer | — |
| onlyStarredProjects | query | optional | boolean | filter by starred projects only. |
| projectStatuses | query | optional | array | filter by project statuses. |
| ids | query | optional | array | filter by specific ids |
| fields[projectcategories] | query | optional | array | — |
200 OK
400 Bad Request
403 Forbidden
GET /projects/api/v3/projectcategories/{categoryId}.json
/projects/api/v3/projects/teamwork/categories.json
200 OK
400 Bad Request
403 Forbidden
GET /projects/api/v3/projects/teamwork/categories.json
/projects/api/v3/companies.json
Retrieve all companies for the provided filters.
On this endpoint you can filter by custom fields. The syntax for the
query parameter is the following:
customField[id][op]=value
Where:
For example, if I want to filter a dropdown custom field with ID 10 to only
return entries that have the value “Option1” we would do the following:
customField[10][eq]=Option1
The allowed operators are:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| updatedAfterDate | query | optional | string | filter by updated after date (deprecated, use updatedAfter) |
| updatedAfter | query | optional | string | filter by updated after date |
| searchTerm | query | optional | string | filter by company name and description |
| reportType | query | optional | string | define the type of the report |
| reportFormat | query | optional | string | define the format of the report |
| orderMode | query | optional | string | order mode |
| orderBy | query | optional | string | order by |
| firstLetter | query | optional | string | filter by first letter of company name |
| createdAfterDate | query | optional | string | filter by created after date (deprecated, use createdAfter) |
| createdAfter | query | optional | string | filter by created after date |
| budgetRanges | query | optional | string | budget distribution ranges |
| pageSize | query | optional | integer | number of items in a page |
| page | query | optional | integer | page number |
| orderByCustomFieldId | query | optional | integer | order by custom field id when orderBy is equal to customfield |
| useFormulaFields | query | optional | boolean | use formula fields |
| skipCounts | query | optional | boolean | SkipCounts allows you to skip doing counts on a list API endpoint for |
| searchClientManagers | query | optional | boolean | include client managers in the search |
| returnLetters | query | optional | boolean | return unfiltered company initial letter counts |
| onlyUntaggedCompanies | query | optional | boolean | only untagged companies |
| matchAllTags | query | optional | boolean | match all tags |
| matchAllExcludedTags | query | optional | boolean | match all exclude tags |
| isReportDownload | query | optional | boolean | generate a report document |
| includeUntaggedCompanies | query | optional | boolean | include untagged companies |
| includeProfitability | query | optional | boolean | include profitability data for each client |
| includeCustomFields | query | optional | boolean | include custom fields |
| includeBudgetDistribution | query | optional | boolean | include budget distribution data |
| getStats | query | optional | boolean | include stats of company tasks and projects |
| getEmoji | query | optional | boolean | parse emojis to unicode |
| fullProfile | query | optional | boolean | include full profile |
| excludeOwnerCompany | query | optional | boolean | exclude the owner company |
| tagIds | query | optional | array | filter by tag ids |
| selectedColumns | query | optional | array | customise the report by selecting columns |
| projectStatuses | query | optional | array | filter by project statuses |
| include | query | optional | array | include |
| ids | query | optional | array | filter by ids |
| fields[users] | query | optional | array | — |
| fields[tags] | query | optional | array | — |
| fields[industries] | query | optional | array | — |
| fields[countries] | query | optional | array | — |
| fields[companies] | query | optional | array | — |
| excludeTagIds | query | optional | array | filter by excluded tag ids |
| excludeIds | query | optional | array | exclude by company ids |
| clientManagedByUserIds | query | optional | array | filter by client manager user ids |
| CustomFields | query | optional | array | filter by custom fields |
200 OK
400 Bad Request
403 Forbidden
GET /projects/api/v3/companies.json
/projects/api/v3/companies.json
Create a company.
application/json
company.Request
| Property | Type | Required |
|---|---|---|
| tags | array | optional |
| └ name | string | optional |
| └ color | string | optional |
| └ projectId | integer | optional |
| company | object | optional |
| └ cid | string | optional |
| └ fax | string | optional |
| └ zip | string | optional |
| └ city | string | optional |
| └ name | string | optional |
| └ phone | string | optional |
| └ state | string | optional |
| └ tagIds | array | optional |
| └ profile | string | optional |
| └ website | string | optional |
| └ emailOne | string | optional |
| └ emailTwo | string | optional |
| └ addressOne | string | optional |
| └ addressTwo | string | optional |
| └ emailThree | string | optional |
| └ countrycode | string | optional |
| └ customFields | object | optional |
| └ Values | array | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
| └ privateNotes | string | optional |
| └ industryCatId | integer | optional |
| └ clientManagedBy | integer | optional |
| └ …1 more | object | optional |
| companyOptions | object | optional |
| └ fireWebhook | boolean | optional |
| └ logActivity | boolean | optional |
| └ useNotifyViaTWIM | boolean | optional |
201 Created
400 Bad Request
403 Forbidden
POST /projects/api/v3/companies.json
/projects/api/v3/companies/{companyId}.json
Delete a company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| companyId | path | required | integer | — |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
DELETE /projects/api/v3/companies/{companyId}.json
/projects/api/v3/companies/{companyId}.json
Retrieves a company by id.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| updatedAfterDate | query | optional | string | filter by updated after date (deprecated, use updatedAfter) |
| updatedAfter | query | optional | string | filter by updated after date |
| searchTerm | query | optional | string | filter by company name and description |
| reportType | query | optional | string | define the type of the report |
| reportFormat | query | optional | string | define the format of the report |
| orderMode | query | optional | string | order mode |
| orderBy | query | optional | string | order by |
| firstLetter | query | optional | string | filter by first letter of company name |
| createdAfterDate | query | optional | string | filter by created after date (deprecated, use createdAfter) |
| createdAfter | query | optional | string | filter by created after date |
| budgetRanges | query | optional | string | budget distribution ranges |
| pageSize | query | optional | integer | number of items in a page |
| page | query | optional | integer | page number |
| orderByCustomFieldId | query | optional | integer | order by custom field id when orderBy is equal to customfield |
| companyId | path | required | integer | — |
| useFormulaFields | query | optional | boolean | use formula fields |
| skipCounts | query | optional | boolean | SkipCounts allows you to skip doing counts on a list API endpoint for |
| searchClientManagers | query | optional | boolean | include client managers in the search |
| returnLetters | query | optional | boolean | return unfiltered company initial letter counts |
| onlyUntaggedCompanies | query | optional | boolean | only untagged companies |
| matchAllTags | query | optional | boolean | match all tags |
| matchAllExcludedTags | query | optional | boolean | match all exclude tags |
| isReportDownload | query | optional | boolean | generate a report document |
| includeUntaggedCompanies | query | optional | boolean | include untagged companies |
| includeProfitability | query | optional | boolean | include profitability data for each client |
| includeCustomFields | query | optional | boolean | include custom fields |
| includeBudgetDistribution | query | optional | boolean | include budget distribution data |
| getStats | query | optional | boolean | include stats of company tasks and projects |
| getEmoji | query | optional | boolean | parse emojis to unicode |
| fullProfile | query | optional | boolean | include full profile |
| excludeOwnerCompany | query | optional | boolean | exclude the owner company |
| tagIds | query | optional | array | filter by tag ids |
| selectedColumns | query | optional | array | customise the report by selecting columns |
| projectStatuses | query | optional | array | filter by project statuses |
| include | query | optional | array | include |
| ids | query | optional | array | filter by ids |
| fields[users] | query | optional | array | — |
| fields[tags] | query | optional | array | — |
| fields[industries] | query | optional | array | — |
| fields[countries] | query | optional | array | — |
| fields[companies] | query | optional | array | — |
| excludeTagIds | query | optional | array | filter by excluded tag ids |
| excludeIds | query | optional | array | exclude by company ids |
| clientManagedByUserIds | query | optional | array | filter by client manager user ids |
| CustomFields | query | optional | array | filter by custom fields |
200 OK
400 Bad Request
403 Forbidden
404 Not Found
GET /projects/api/v3/companies/{companyId}.json
/projects/api/v3/companies/{companyId}.json
Modify the properties of an existing company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| companyId | path | required | integer | — |
application/json
company.Request
| Property | Type | Required |
|---|---|---|
| tags | array | optional |
| └ name | string | optional |
| └ color | string | optional |
| └ projectId | integer | optional |
| company | object | optional |
| └ cid | string | optional |
| └ fax | string | optional |
| └ zip | string | optional |
| └ city | string | optional |
| └ name | string | optional |
| └ phone | string | optional |
| └ state | string | optional |
| └ tagIds | array | optional |
| └ profile | string | optional |
| └ website | string | optional |
| └ emailOne | string | optional |
| └ emailTwo | string | optional |
| └ addressOne | string | optional |
| └ addressTwo | string | optional |
| └ emailThree | string | optional |
| └ countrycode | string | optional |
| └ customFields | object | optional |
| └ Values | array | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
| └ privateNotes | string | optional |
| └ industryCatId | integer | optional |
| └ clientManagedBy | integer | optional |
| └ …1 more | object | optional |
| companyOptions | object | optional |
| └ fireWebhook | boolean | optional |
| └ logActivity | boolean | optional |
| └ useNotifyViaTWIM | boolean | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
PATCH /projects/api/v3/companies/{companyId}.json
/projects/api/v3/companies/{companyId}/customfields.json
Return all custom field values from a specific company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| searchTerm | query | optional | string | filter by custom field value |
| pageSize | query | optional | integer | number of items in a page |
| page | query | optional | integer | page number |
| companyId | path | required | integer | — |
| companyId | query | optional | integer | filter by company id |
| useFormulaFields | query | optional | boolean | use formula fields |
| skipCounts | query | optional | boolean | SkipCounts allows you to skip doing counts on a list API endpoint for |
| include | query | optional | array | include |
| fields[projects] | query | optional | array | — |
| fields[customfields] | query | optional | array | — |
| customFieldIds | query | optional | array | filter by custom field ids |
200 OK
400 Bad Request
GET /projects/api/v3/companies/{companyId}/customfields.json
/projects/api/v3/companies/{companyId}/customfields.json
Add a company custom field value.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| companyId | path | required | integer | — |
application/json
value.requestCompany
| Property | Type | Required |
|---|---|---|
| customfieldCompany | object | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
201 Created
400 Bad Request
403 Forbidden
POST /projects/api/v3/companies/{companyId}/customfields.json
/projects/api/v3/companies/{companyId}/customfields/bulk/delete.json
Remove many entries of company custom field values at once.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| companyId | path | required | integer | — |
application/json
value.bulkDeleteRequestCompany
| Property | Type | Required |
|---|---|---|
| customfieldCompanyIds | array | optional |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
POST /projects/api/v3/companies/{companyId}/customfields/bulk/delete.json
/projects/api/v3/companies/{companyId}/customfields/bulk/update.json
Edit many entries of company custom field values at once.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| companyId | path | required | integer | — |
application/json
value.bulkUpdateRequestCompany
| Property | Type | Required |
|---|---|---|
| customfieldCompanies | array | optional |
| └ id | integer | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
POST /projects/api/v3/companies/{companyId}/customfields/bulk/update.json
/projects/api/v3/companies/{companyId}/customfields/{customFieldId}.json
Removes a company custom field value.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customFieldId | path | required | integer | — |
| companyId | path | required | integer | — |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
DELETE /projects/api/v3/companies/{companyId}/customfields/{customFieldId}.json
/projects/api/v3/companies/{companyId}/customfields/{customFieldId}.json
Return a specific custom field value from a company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customFieldId | path | required | integer | — |
| companyId | path | required | integer | — |
200 OK
400 Bad Request
404 Not Found (no data)
GET /projects/api/v3/companies/{companyId}/customfields/{customFieldId}.json
/projects/api/v3/companies/{companyId}/customfields/{customFieldId}.json
Edit a company custom field value.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customFieldId | path | required | integer | — |
| companyId | path | required | integer | — |
application/json
value.requestCompany
| Property | Type | Required |
|---|---|---|
| customfieldCompany | object | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
PATCH /projects/api/v3/companies/{companyId}/customfields/{customFieldId}.json
/projects/api/v3/customfields.json
Return all custom fields for the provided filters.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| searchTerm | query | optional | string | filter by custom field name |
| projectStatuses | query | optional | string | filter by project statuses |
| orderMode | query | optional | string | order mode |
| orderBy | query | optional | string | order by |
| name | query | optional | string | filter by name |
| projectId | query | optional | integer | filter by project id |
| pageSize | query | optional | integer | number of items in a page |
| page | query | optional | integer | page number |
| useFormulaFields | query | optional | boolean | use formula fields |
| skipCounts | query | optional | boolean | SkipCounts allows you to skip doing counts on a list API endpoint for |
| showDeleted | query | optional | boolean | include deleted items |
| onlyStarredProjects | query | optional | boolean | filter by starred projects only |
| onlySiteLevel | query | optional | boolean | only return site-level custom fields |
| onlyProjectLevel | query | optional | boolean | only return custom fields for project-level in the response |
| matchAllProjectTags | query | optional | boolean | match all project tags |
| includeSiteLevel | query | optional | boolean | include custom fields for site-level in the response |
| projectTagIds | query | optional | array | filter by project tag ids |
| projectOwnerIds | query | optional | array | filter by project owner ids |
| projectIds | query | optional | array | filter by project ids |
| projectHealths | query | optional | array | filter by project healths 0: not set |
| projectCompanyIds | query | optional | array | filter by company ids |
| projectCategoryIds | query | optional | array | filter by project category ids |
| include | query | optional | array | include |
| ids | query | optional | array | filter by custom field ids |
| fields[users] | query | optional | array | — |
| fields[projects] | query | optional | array | — |
| entities | query | optional | array | filter by entities |
200 OK
400 Bad Request
GET /projects/api/v3/customfields.json
/projects/api/v3/customfields.json
Creates a new custom field. The custom field could have a scope at an
installation-level or at a project-level.
application/json
customfield.Request
| Property | Type | Required |
|---|---|---|
| customfield | object | optional |
| └ name | string | optional |
| └ type | string | optional |
| └ entity | string | optional |
| └ formula | string | optional |
| └ groupId | integer | optional |
| └ options | object | optional |
| └ privacy | object | optional |
| └ teamIds | object | optional |
| └ Set | boolean | optional |
| └ Null | boolean | optional |
| └ Value | array | optional |
| └ userIds | object | optional |
| └ Set | boolean | optional |
| └ Null | boolean | optional |
| └ Value | array | optional |
| └ companyIds | object | optional |
| └ Set | boolean | optional |
| └ Null | boolean | optional |
| └ Value | array | optional |
| └ required | boolean | optional |
| └ isPrivate | boolean | optional |
| └ projectId | integer | optional |
| └ description | string | optional |
| └ currencyCode | string | optional |
| └ visibilities | array | optional |
201 Created
400 Bad Request
403 Forbidden
POST /projects/api/v3/customfields.json
/projects/api/v3/customfields/bulk/delete.json
Remove multiple custom fields at once.
application/json
customfield.BulkDeleteRequest
| Property | Type | Required |
|---|---|---|
| customfieldIds | array | optional |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
POST /projects/api/v3/customfields/bulk/delete.json
/projects/api/v3/customfields/{customFieldId}.json
Removes a custom field.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customFieldId | path | required | integer | — |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
DELETE /projects/api/v3/customfields/{customFieldId}.json
/projects/api/v3/customfields/{customFieldId}.json
This returns all details about an individual custom field.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| searchTerm | query | optional | string | filter by custom field name |
| projectStatuses | query | optional | string | filter by project statuses |
| orderMode | query | optional | string | order mode |
| orderBy | query | optional | string | order by |
| name | query | optional | string | filter by name |
| projectId | query | optional | integer | filter by project id |
| pageSize | query | optional | integer | number of items in a page |
| page | query | optional | integer | page number |
| customFieldId | path | required | integer | — |
| useFormulaFields | query | optional | boolean | use formula fields |
| skipCounts | query | optional | boolean | SkipCounts allows you to skip doing counts on a list API endpoint for |
| showDeleted | query | optional | boolean | include deleted items |
| onlyStarredProjects | query | optional | boolean | filter by starred projects only |
| onlySiteLevel | query | optional | boolean | only return site-level custom fields |
| onlyProjectLevel | query | optional | boolean | only return custom fields for project-level in the response |
| matchAllProjectTags | query | optional | boolean | match all project tags |
| includeSiteLevel | query | optional | boolean | include custom fields for site-level in the response |
| projectTagIds | query | optional | array | filter by project tag ids |
| projectOwnerIds | query | optional | array | filter by project owner ids |
| projectIds | query | optional | array | filter by project ids |
| projectHealths | query | optional | array | filter by project healths 0: not set |
| projectCompanyIds | query | optional | array | filter by company ids |
| projectCategoryIds | query | optional | array | filter by project category ids |
| include | query | optional | array | include |
| ids | query | optional | array | filter by custom field ids |
| fields[users] | query | optional | array | — |
| fields[projects] | query | optional | array | — |
| entities | query | optional | array | filter by entities |
200 OK
400 Bad Request
404 Not Found (no data)
GET /projects/api/v3/customfields/{customFieldId}.json
/projects/api/v3/customfields/{customFieldId}.json
Updates an existing custom field.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customFieldId | path | required | integer | — |
application/json
customfield.Request
| Property | Type | Required |
|---|---|---|
| customfield | object | optional |
| └ name | string | optional |
| └ type | string | optional |
| └ entity | string | optional |
| └ formula | string | optional |
| └ groupId | integer | optional |
| └ options | object | optional |
| └ privacy | object | optional |
| └ teamIds | object | optional |
| └ Set | boolean | optional |
| └ Null | boolean | optional |
| └ Value | array | optional |
| └ userIds | object | optional |
| └ Set | boolean | optional |
| └ Null | boolean | optional |
| └ Value | array | optional |
| └ companyIds | object | optional |
| └ Set | boolean | optional |
| └ Null | boolean | optional |
| └ Value | array | optional |
| └ required | boolean | optional |
| └ isPrivate | boolean | optional |
| └ projectId | integer | optional |
| └ description | string | optional |
| └ currencyCode | string | optional |
| └ visibilities | array | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
PATCH /projects/api/v3/customfields/{customFieldId}.json
/projects/api/v3/customfields/{customFieldId}.json
Updates an existing custom field.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customFieldId | path | required | integer | — |
application/json
customfield.Request
| Property | Type | Required |
|---|---|---|
| customfield | object | optional |
| └ name | string | optional |
| └ type | string | optional |
| └ entity | string | optional |
| └ formula | string | optional |
| └ groupId | integer | optional |
| └ options | object | optional |
| └ privacy | object | optional |
| └ teamIds | object | optional |
| └ Set | boolean | optional |
| └ Null | boolean | optional |
| └ Value | array | optional |
| └ userIds | object | optional |
| └ Set | boolean | optional |
| └ Null | boolean | optional |
| └ Value | array | optional |
| └ companyIds | object | optional |
| └ Set | boolean | optional |
| └ Null | boolean | optional |
| └ Value | array | optional |
| └ required | boolean | optional |
| └ isPrivate | boolean | optional |
| └ projectId | integer | optional |
| └ description | string | optional |
| └ currencyCode | string | optional |
| └ visibilities | array | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
PUT /projects/api/v3/customfields/{customFieldId}.json
/projects/api/v3/projects/{projectId}/customfields.json
Return all custom field values from a specific project.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| searchTerm | query | optional | string | filter by custom field value |
| projectId | path | required | integer | — |
| projectId | query | optional | integer | filter by project id |
| pageSize | query | optional | integer | number of items in a page |
| page | query | optional | integer | page number |
| useFormulaFields | query | optional | boolean | use formula fields |
| skipCounts | query | optional | boolean | SkipCounts allows you to skip doing counts on a list API endpoint for |
| include | query | optional | array | include |
| fields[projects] | query | optional | array | — |
| fields[customfields] | query | optional | array | — |
| customFieldIds | query | optional | array | filter by custom field ids |
200 OK
400 Bad Request
GET /projects/api/v3/projects/{projectId}/customfields.json
/projects/api/v3/projects/{projectId}/customfields.json
Add a project custom field value.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| projectId | path | required | integer | — |
application/json
value.requestProject
| Property | Type | Required |
|---|---|---|
| customfieldProject | object | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
201 Created
400 Bad Request
403 Forbidden
POST /projects/api/v3/projects/{projectId}/customfields.json
/projects/api/v3/projects/{projectId}/customfields/bulk/delete.json
Remove many entries of project custom field values at once.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| projectId | path | required | integer | — |
application/json
value.bulkDeleteRequestProject
| Property | Type | Required |
|---|---|---|
| customfieldProjectIds | array | optional |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
POST /projects/api/v3/projects/{projectId}/customfields/bulk/delete.json
/projects/api/v3/projects/{projectId}/customfields/bulk/update.json
Edit many entries of project custom field values at once.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| projectId | path | required | integer | — |
application/json
value.bulkUpdateRequestProject
| Property | Type | Required |
|---|---|---|
| customfieldProjects | array | optional |
| └ id | integer | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
POST /projects/api/v3/projects/{projectId}/customfields/bulk/update.json
/projects/api/v3/projects/{projectId}/customfields/{customFieldId}.json
Removes a project custom field value.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| projectId | path | required | integer | — |
| customFieldId | path | required | integer | — |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
DELETE /projects/api/v3/projects/{projectId}/customfields/{customFieldId}.json
/projects/api/v3/projects/{projectId}/customfields/{customFieldId}.json
Return a specific custom field value from a project.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| projectId | path | required | integer | — |
| customFieldId | path | required | integer | — |
200 OK
400 Bad Request
404 Not Found (no data)
GET /projects/api/v3/projects/{projectId}/customfields/{customFieldId}.json
/projects/api/v3/projects/{projectId}/customfields/{customFieldId}.json
Edit a project custom field value.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| projectId | path | required | integer | — |
| customFieldId | path | required | integer | — |
application/json
value.requestProject
| Property | Type | Required |
|---|---|---|
| customfieldProject | object | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
PATCH /projects/api/v3/projects/{projectId}/customfields/{customFieldId}.json
/projects/api/v3/tasks/{taskId}/customfields.json
Return all custom field values from a specific task.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| searchTerm | query | optional | string | filter by custom field value |
| taskId | path | required | integer | — |
| taskId | query | optional | integer | filter by task id |
| pageSize | query | optional | integer | number of items in a page |
| page | query | optional | integer | page number |
| useFormulaFields | query | optional | boolean | use formula fields |
| skipCounts | query | optional | boolean | SkipCounts allows you to skip doing counts on a list API endpoint for |
| include | query | optional | array | include |
| fields[projects] | query | optional | array | — |
| fields[customfields] | query | optional | array | — |
| customFieldIds | query | optional | array | filter by custom field ids |
200 OK
400 Bad Request
GET /projects/api/v3/tasks/{taskId}/customfields.json
/projects/api/v3/tasks/{taskId}/customfields.json
Add a task custom field value.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| taskId | path | required | integer | — |
application/json
value.requestTask
| Property | Type | Required |
|---|---|---|
| customfieldTask | object | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
201 Created
400 Bad Request
403 Forbidden
POST /projects/api/v3/tasks/{taskId}/customfields.json
/projects/api/v3/tasks/{taskId}/customfields/bulk/delete.json
Remove many entries of task custom field values at once.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| taskId | path | required | integer | — |
application/json
value.bulkDeleteRequestTask
| Property | Type | Required |
|---|---|---|
| customfieldTaskIds | array | optional |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
POST /projects/api/v3/tasks/{taskId}/customfields/bulk/delete.json
/projects/api/v3/tasks/{taskId}/customfields/bulk/update.json
Edit many entries of task custom field values at once.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| taskId | path | required | integer | — |
application/json
value.bulkUpdateRequestTask
| Property | Type | Required |
|---|---|---|
| customfieldTasks | array | optional |
| └ id | integer | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
POST /projects/api/v3/tasks/{taskId}/customfields/bulk/update.json
/projects/api/v3/tasks/{taskId}/customfields/{customFieldId}.json
Removes a task custom field value.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| taskId | path | required | integer | — |
| customFieldId | path | required | integer | — |
204 No Content (no data)
400 Bad Request
403 Forbidden
404 Not Found (no data)
DELETE /projects/api/v3/tasks/{taskId}/customfields/{customFieldId}.json
/projects/api/v3/tasks/{taskId}/customfields/{customFieldId}.json
Return a specific custom field value from a task.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| taskId | path | required | integer | — |
| customFieldId | path | required | integer | — |
200 OK
400 Bad Request
404 Not Found (no data)
GET /projects/api/v3/tasks/{taskId}/customfields/{customFieldId}.json
/projects/api/v3/tasks/{taskId}/customfields/{customFieldId}.json
Edit a task custom field value.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| taskId | path | required | integer | — |
| customFieldId | path | required | integer | — |
application/json
value.requestTask
| Property | Type | Required |
|---|---|---|
| customfieldTask | object | optional |
| └ value | object | optional |
| └ countryCode | string | optional |
| └ customfieldId | integer | optional |
| └ currencySymbol | string | optional |
| └ urlTextToDisplay | string | optional |
200 OK
400 Bad Request
403 Forbidden
404 Not Found (no data)
409 Conflict
PATCH /projects/api/v3/tasks/{taskId}/customfields/{customFieldId}.json
active.ProjectMetricActive
{
"type": "object",
"title": "ProjectMetricActive",
"properties": {
"value": {
"type": "integer"
}
},
"description": "ProjectMetricActive contains all the information returned from a active."
}
active.Response
{
"type": "object",
"title": "Response",
"properties": {
"data": {
"$ref": "#/components/schemas/active.ProjectMetricActive"
}
},
"description": "Response contains information about a specific active."
}
activity.ActivitiesResponse
{
"type": "object",
"title": "ActivitiesResponse",
"properties": {
"meta": {
"$ref": "#/components/schemas/view.Meta"
},
"included": {
"type": "object",
"properties": {
"users": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.User"
}
},
"projects": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.ProjectV205"
}
},
"companies": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Company"
}
}
}
},
"activities": {
"type": "array",
"items": {
"$ref": "#/components/schemas/activity.Activity"
}
}
},
"description": "ActivitiesResponse contains all the information returned when sending a GET\nrequest to the activity endpoint."
}
activity.Activity
{
"type": "object",
"title": "Activity",
"properties": {
"id": {
"type": "integer"
},
"item": {
"$ref": "#/components/schemas/view.Relationship"
},
"link": {
"type": "string"
},
"type": {
"type": "string"
},
"user": {
"$ref": "#/components/schemas/view.Relationship"
},
"itemId": {
"type": "integer"
},
"userId": {
"type": "integer"
},
"company": {
"$ref": "#/components/schemas/view.Relationship"
},
"dueDate": {
"type": "string"
},
"forUser": {
"$ref": "#/components/schemas/view.Relationship"
},
"project": {
"$ref": "#/components/schemas/view.Relationship"
},
"dateTime": {
"type": "string"
},
"itemLink": {
"type": "string"
},
"lockdown": {
"$ref": "#/components/schemas/view.Relationship"
},
"companyId": {
"type": "integer"
},
"forUserId": {
"type": "integer"
},
"isPrivate": {
"type": "integer"
},
"projectId": {
"type": "integer"
},
"lockdownId": {
"type": "integer"
},
"publicInfo": {
"type": "string"
},
"description": {
"type": "string"
},
"forUserName": {
"type": "string"
},
"activityType": {
"type": "string"
},
"extraDescription": {
"type": "string"
},
"latestActivityType": {
"type": "string"
}
},
"description": "Activity represents a view of activity."
}
billable.ProjectMetricBillable
{
"type": "object",
"title": "ProjectMetricBillable",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "integer"
}
},
"description": "ProjectMetricBillable contains all the information returned from a billable."
}
billable.ProjectMetricBillablesResponse
{
"type": "object",
"title": "ProjectMetricBillablesResponse",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/billable.ProjectMetricBillable"
}
}
},
"description": "ProjectMetricBillablesResponse contains information about a group of billables."
}
category.CategoriesResponse
{
"type": "object",
"title": "CategoriesResponse",
"properties": {
"projectCategories": {
"type": "array",
"items": {
"$ref": "#/components/schemas/view.ProjectCategory"
}
},
"projectCategoryTotals": {
"$ref": "#/components/schemas/view.CategoryTotals"
}
},
"description": "CategoriesResponse contains information about a group of categories."
}
comment.CommentsResponse
{
"type": "object",
"title": "CommentsResponse",
"properties": {
"meta": {
"$ref": "#/components/schemas/view.Meta"
},
"comments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/comment.FullComment"
}
},
"included": {
"type": "object",
"properties": {
"files": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.ProjectFileV205"
}
},
"links": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.LinkItem"
}
},
"tasks": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.TaskV205"
}
},
"users": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.User"
}
},
"projects": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.ProjectV205"
}
},
"companies": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Company"
}
},
"notebooks": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Notebook"
}
},
"milestones": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Milestone"
}
},
"fileversions": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.FileversionV205"
}
}
}
}
},
"description": "CommentsResponse contains information about a group of comments."
}
comment.FullComment
{
"type": "object",
"title": "FullComment",
"properties": {
"id": {
"type": "integer"
},
"body": {
"type": "string"
},
"meta": {
"$ref": "#/components/schemas/comment.Meta"
},
"files": {
"type": "array",
"items": {
"$ref": "#/components/schemas/view.Relationship"
}
},
"object": {
"$ref": "#/components/schemas/view.Relationship"
},
"deleted": {
"type": "boolean"
},
"fileIds": {
"type": "array",
"items": {
"type": "integer"
}
},
"project": {
"$ref": "#/components/schemas/view.Relationship"
},
"htmlBody": {
"type": "string"
},
"objectId": {
"type": "integer"
},
"postedBy": {
"type": "integer"
},
"deletedBy": {
"type": "integer"
},
"fileCount": {
"type": "integer"
},
"isPrivate": {
"type": "integer"
},
"projectId": {
"type": "integer"
},
"reactions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/view.Reaction"
}
},
"lockdownID": {
"type": "integer"
},
"objectType": {
"type": "string"
},
"commentLink": {
"type": "string"
},
"contentType": {
"type": "string"
},
"dateDeleted": {
"type": "string"
},
"installation": {
"$ref": "#/components/schemas/view.Relationship"
},
"lastEditedBy": {
"type": "integer"
},
"dateLastEdited": {
"type": "string"
},
"installationId": {
"type": "integer"
},
"postedByUserId": {
"type": "integer"
},
"postedDateTime": {
"type": "string"
},
"reactionsCount": {
"type": "integer"
},
"deletedByUserId": {
"type": "integer"
},
"lastEditedByUserId": {
"type": "integer"
},
"peopleNotifiedCount": {
"type": "integer"
}
},
"description": "FullComment contains the full information for a comment"
}
comment.Meta
{
"type": "object",
"title": "Meta",
"properties": {
"isRead": {
"type": "boolean"
},
"permissions": {
"$ref": "#/components/schemas/comment.Permissions"
}
},
"description": "Meta contains metadata for a comment, such as permissions"
}
comment.Permissions
{
"type": "object",
"title": "Permissions",
"properties": {
"canEdit": {
"type": "boolean"
},
"canDelete": {
"type": "boolean"
}
},
"description": "Permissions are the permissions the user has for the comment"
}
company.CompaniesResponse
{
"type": "object",
"title": "CompaniesResponse",
"properties": {
"meta": {
"$ref": "#/components/schemas/view.Meta"
},
"letters": {
"type": "array",
"items": {
"type": "string"
}
},
"included": {
"type": "object",
"properties": {
"tags": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Tag"
}
},
"users": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.User"
}
},
"updates": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.CompanyUpdate"
}
},
"countries": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Country"
}
},
"industries": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Industry"
}
},
"customfields": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.CustomField"
}
},
"customfieldCompanies": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.CustomFieldValueCompany"
}
}
}
},
"companies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/view.Company"
}
}
},
"description": "CompaniesResponse contains information about a group of companies."
}
company.Company
{
"type": "object",
"title": "Company",
"properties": {
"cid": {
"type": "string"
},
"fax": {
"type": "string"
},
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"state": {
"type": "string"
},
"tagIds": {
"type": "array",
"items": {
"type": "integer"
}
},
"profile": {
"type": "string"
},
"website": {
"type": "string"
},
"emailOne": {
"type": "string"
},
"emailTwo": {
"type": "string"
},
"addressOne": {
"type": "string"
},
"addressTwo": {
"type": "string"
},
"emailThree": {
"type": "string"
},
"countrycode": {
"type": "string"
},
"customFields": {
"$ref": "#/components/schemas/company.CustomFields"
},
"privateNotes": {
"type": "string"
},
"industryCatId": {
"type": "integer"
},
"clientManagedBy": {
"type": "integer"
},
"logoPendingFileRef": {
"type": "string"
}
},
"description": "Company contains all the information returned from a company."
}
company.CustomFields
{
"type": "object",
"title": "CustomFields",
"properties": {
"Values": {
"type": "array",
"items": {
"$ref": "#/components/schemas/value.CustomFieldValue"
}
}
},
"description": "CustomFields is the custom fields type."
}
company.Request
{
"type": "object",
"title": "Request",
"properties": {
"tags": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tag.Tag"
}
},
"company": {
"$ref": "#/components/schemas/company.Company"
},
"companyOptions": {
"type": "object",
"properties": {
"fireWebhook": {
"type": "boolean"
},
"logActivity": {
"type": "boolean"
},
"useNotifyViaTWIM": {
"type": "boolean"
}
}
}
},
"description": "Request contains information of a company to be created or updated."
}
company.Response
{
"type": "object",
"title": "Response",
"properties": {
"company": {
"$ref": "#/components/schemas/view.Company"
},
"included": {
"type": "object",
"properties": {
"tags": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Tag"
}
},
"users": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.User"
}
},
"updates": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.CompanyUpdate"
}
},
"countries": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Country"
}
},
"industries": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Industry"
}
},
"customfields": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.CustomField"
}
},
"customfieldCompanies": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.CustomFieldValueCompany"
}
}
}
}
},
"description": "Response contains information about a specific company."
}
complete.Response
{
"type": "object",
"title": "Response",
"properties": {
"data": {
"$ref": "#/components/schemas/complete.TaskMetricComplete"
}
},
"description": "Response contains information about a specific complete."
}
complete.TaskMetricComplete
{
"type": "object",
"title": "TaskMetricComplete",
"properties": {
"value": {
"type": "integer"
}
},
"description": "TaskMetricComplete contains all the information returned from a complete."
}
customfield.BulkDeleteRequest
{
"type": "object",
"title": "BulkDeleteRequest",
"properties": {
"customfieldIds": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"description": "BulkDeleteRequest contains the ids of the custom fields that should be\nremoved."
}
customfield.CustomField
{
"type": "object",
"title": "CustomField",
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"entity": {
"type": "string",
"description": "using a verbose name to avoid conflict"
},
"formula": {
"type": "string"
},
"groupId": {
"type": "integer"
},
"options": {},
"privacy": {
"$ref": "#/components/schemas/payload.UserGroups"
},
"required": {
"type": "boolean"
},
"isPrivate": {
"type": "boolean"
},
"projectId": {
"type": "integer"
},
"description": {
"type": "string"
},
"currencyCode": {
"type": "string"
},
"visibilities": {
"type": "array",
"items": {
"type": "string"
}
}
},
"description": "CustomField contains all the information returned from a custom field."
}
customfield.CustomFieldsResponse
{
"type": "object",
"title": "CustomFieldsResponse",
"properties": {
"meta": {
"$ref": "#/components/schemas/view.Meta"
},
"included": {
"type": "object",
"properties": {
"users": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.User"
}
},
"projects": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.ProjectV205"
}
}
}
},
"customfields": {
"type": "array",
"items": {
"$ref": "#/components/schemas/view.CustomField"
}
}
},
"description": "CustomFieldsResponse contains information about a group of custom fields."
}
customfield.Request
{
"type": "object",
"title": "Request",
"properties": {
"customfield": {
"$ref": "#/components/schemas/customfield.CustomField"
}
},
"description": "Request contains information of a custom field to be created or updated."
}
customfield.Response
{
"type": "object",
"title": "Response",
"properties": {
"count": {
"type": "integer"
},
"customfield": {
"$ref": "#/components/schemas/view.CustomField"
}
},
"description": "Response contains information about a specific customfield."
}
dashboard.UserDashboardsResponse
{
"type": "object",
"title": "UserDashboardsResponse",
"properties": {
"meta": {
"$ref": "#/components/schemas/view.Meta"
},
"included": {
"type": "object",
"properties": {
"users": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.User"
}
},
"projects": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.ProjectV205"
}
},
"dashboardPanels": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.UserDashboardPanel"
}
},
"dashboardSettings": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.UserDashboardSetting"
}
},
"dashboardPanelSettings": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.UserDashboardPanelSetting"
}
}
}
},
"dashboards": {
"type": "array",
"items": {
"$ref": "#/components/schemas/view.UserDashboard"
}
}
},
"description": "UserDashboardsResponse contains information about a group of dashboards."
}
deadline.MilestoneMetricDeadline
{
"type": "object",
"title": "MilestoneMetricDeadline",
"properties": {
"date": {
"type": "string"
},
"value": {
"type": "integer"
}
},
"description": "MilestoneMetricDeadline contains all the information returned from a deadline."
}
deadline.MilestoneMetricDeadlinesResponse
{
"type": "object",
"title": "MilestoneMetricDeadlinesResponse",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/deadline.MilestoneMetricDeadline"
}
}
},
"description": "MilestoneMetricDeadlinesResponse contains information about a group of deadlines."
}
entity.ProjectBudgetRange
{
"type": "object",
"title": "ProjectBudgetRange",
"properties": {
"to": {
"type": "integer"
},
"from": {
"type": "integer"
},
"count": {
"type": "integer"
},
"companyId": {
"type": "integer"
}
},
"description": "ProjectBudgetRange is a distribution item type."
}
form.Banner
{
"type": "object",
"title": "Banner",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"url": {
"type": "string"
},
"accentColor": {
"type": "string"
},
"primaryColor": {
"type": "string"
}
},
"description": "Banner contains information of a form banner to be created or updated."
}
form.Content
{
"type": "object",
"title": "Content",
"properties": {
"logo": {
"$ref": "#/components/schemas/form.Logo"
},
"name": {
"type": "string"
},
"state": {
"type": "string"
},
"banner": {
"$ref": "#/components/schemas/form.Banner"
},
"definition": {
"type": "string"
},
"description": {
"type": "string"
},
"pendingLogoId": {
"type": "string"
},
"pendingBannerId": {
"type": "string"
}
},
"description": "Content contains information of a form content to be created or updated."
}
form.CopyForm
{
"type": "object",
"title": "CopyForm",
"properties": {
"title": {
"type": "string"
},
"hostObject": {
"$ref": "#/components/schemas/form.HostObject"
},
"projectIds": {
"type": "array",
"items": {
"type": "integer"
}
},
"copyAssignees": {
"type": "boolean"
},
"generateToken": {
"type": "boolean"
}
},
"description": "CopyForm contains information on where and what to copy from a form"
}
form.CopyRequest
{
"type": "object",
"title": "CopyRequest",
"properties": {
"form": {
"$ref": "#/components/schemas/form.CopyForm"
}
},
"description": "CopyRequest outter request for copying a form"
}
form.DestinationObject
{
"type": "object",
"title": "DestinationObject",
"properties": {
"id": {
"type": "integer"
},
"type": {
"type": "string"
}
},
"description": "DestinationObject contains information of a form destination object to be created or updated."
}
form.Form
{
"type": "object",
"title": "Form",
"properties": {
"content": {
"$ref": "#/components/schemas/form.Content"
},
"hostObject": {
"$ref": "#/components/schemas/form.HostObject"
},
"redirectUrl": {
"type": "string"
},
"primaryColor": {
"type": "string"
},
"submitButtonText": {
"type": "string"
},
"taskTitleFieldId": {
"type": "string"
},
"destinationObject": {
"$ref": "#/components/schemas/form.DestinationObject"
},
"confirmationMessage": {
"type": "string"
},
"responseEmailFieldId": {
"type": "string"
},
"allowTeamworkBranding": {
"type": "boolean"
},
"promptAdditionalSubmissions": {
"type": "boolean"
}
},
"description": "Form contains information of a form to be created or updated."
}
form.FormsResponse
{
"type": "object",
"title": "FormsResponse",
"properties": {
"meta": {
"$ref": "#/components/schemas/view.Meta"
},
"forms": {
"type": "array",
"items": {
"$ref": "#/components/schemas/view.Form"
}
},
"included": {
"type": "object",
"properties": {
"users": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.User"
}
},
"projects": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.ProjectV205"
}
},
"companies": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Company"
}
},
"tasklists": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Tasklist"
}
}
}
}
},
"description": "FormsResponse contains information about a group of forms."
}
form.HostObject
{
"type": "object",
"title": "HostObject",
"properties": {
"id": {
"type": "integer"
},
"meta": {
"$ref": "#/components/schemas/form.HostObjectMeta"
},
"type": {
"type": "string"
}
},
"description": "HostObject contains information of a form host object to be created or updated."
}
form.HostObjectMeta
{
"type": "object",
"title": "HostObjectMeta",
"properties": {
"tasklistId": {
"type": "integer"
}
},
"description": "HostObjectMeta contains information of a form host object meta to be created or updated."
}
form.Logo
{
"type": "object",
"title": "Logo",
"properties": {
"url": {
"type": "string"
}
},
"description": "Logo contains information of a form custom logo to be created or updated."
}
form.PublicResponse
{
"type": "object",
"title": "PublicResponse",
"properties": {
"form": {
"$ref": "#/components/schemas/view.PublicForm"
}
},
"description": "PublicResponse contains information about a specific public form."
}
form.Request
{
"type": "object",
"title": "Request",
"properties": {
"form": {
"$ref": "#/components/schemas/form.Form"
}
},
"description": "Request contains information of a form to be created or updated."
}
form.Response
{
"type": "object",
"title": "Response",
"properties": {
"form": {
"$ref": "#/components/schemas/view.Form"
},
"included": {
"type": "object",
"properties": {
"users": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.User"
}
},
"projects": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.ProjectV205"
}
},
"companies": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Company"
}
},
"tasklists": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Tasklist"
}
}
}
}
},
"description": "Response contains information about a specific form."
}
health.ProjectMetricHealth
{
"type": "object",
"title": "ProjectMetricHealth",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "integer"
}
},
"description": "ProjectMetricHealth stores a specific health counter."
}
health.ProjectMetricHealthsResponse
{
"type": "object",
"title": "ProjectMetricHealthsResponse",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/health.ProjectMetricHealth"
}
}
},
"description": "ProjectMetricHealthsResponse contains information about a group of healths.\nFollowing this format to satisfy the Numerics integration."
}
importer.Importer
{
"type": "object",
"title": "Importer",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"running": {
"type": "boolean"
}
},
"description": "Importer single importer for response."
}
importer.ImportersResponse
{
"type": "object",
"title": "ImportersResponse",
"properties": {
"importers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/importer.Importer"
}
},
"isImporting": {
"type": "boolean"
}
},
"description": "ImportersResponse contains information about a group of importers."
}
invoice.ProjectMetricInvoicesResponse
{
"type": "object",
"title": "ProjectMetricInvoicesResponse",
"properties": {
"data": {
"type": "object",
"properties": {
"value": {
"type": "integer"
}
}
}
},
"description": "ProjectMetricInvoicesResponse contains information about a group of invoices."
}
late.Response
{
"type": "object",
"title": "Response",
"properties": {
"data": {
"$ref": "#/components/schemas/late.TaskMetricLate"
}
},
"description": "Response contains the count of late tasks.\nFollowing this format to satisfy the Numerics integration."
}
late.TaskMetricLate
{
"type": "object",
"title": "TaskMetricLate",
"properties": {
"value": {
"type": "integer"
}
},
"description": "TaskMetricLate contains count information about late tasks."
}
message.MessagesResponse
{
"type": "object",
"title": "MessagesResponse",
"properties": {
"meta": {
"$ref": "#/components/schemas/view.Meta"
},
"included": {
"type": "object",
"properties": {
"users": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.User"
}
},
"Included": {
"$ref": "#/components/schemas/messagereply.Included"
},
"projects": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.ProjectV205"
}
},
"companies": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Company"
}
},
"messageReplies": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.MessageReply"
}
}
}
},
"messages": {
"type": "array",
"items": {
"$ref": "#/components/schemas/view.Message"
}
}
},
"description": "MessagesResponse contains all the information returned when sending a GET\nrequest to the message endpoint."
}
message.Request
{
"type": "object",
"title": "Request",
"properties": {
"read": {
"type": "boolean"
}
},
"description": "Request contains information of a message to be created or updated."
}
message.Response
{
"type": "object",
"title": "Response",
"properties": {
"message": {
"$ref": "#/components/schemas/view.Message"
},
"included": {
"type": "object",
"properties": {
"users": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.User"
}
},
"Included": {
"$ref": "#/components/schemas/messagereply.Included"
},
"projects": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.ProjectV205"
}
},
"companies": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.Company"
}
},
"messageReplies": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/view.MessageReply"
}
}
}
}
},
"description": "Response contains information about a specific message."
}
| Version | Endpoints | Schemas | Ingested | Status |
|---|---|---|---|---|
| 3.0 | 188 | 296 | 2026-05-11 | current |
| 3.0 | 188 | 296 | 2026-04-16 |