v8 Migration Guide
This guide will help you migrate from API v8 to API v9.
The v9 API added new entities like the organization, hence the interface was extended and these concepts are not migrated from v8. Read through our v9 announcement and Getting Started for more information.
v8 -> v9 mapping
All not explicitly listed endpoints can be considered available as 1 to 1 replacement, changing v8 to v9 in the endpoint URL.
When v9 endpoints is marked -, it means the endpoint is no longer available. More details provided in additional notes.
If you are looking for a pattern, most of the domain entities moved their path under workspace, for instance POST /clients will be available under /workspaces/{workspace_id}/clients/{client_id}.
Clients
| Verb | v8 | v9 | Additional Notes |
|---|---|---|---|
| GET | /clients | /me/clients | Retrieves details for all clients that the current API user can access. v9 payload adds archived, creator_id, and permissions properties to each object. |
| POST | /clients | /workspaces/{workspace_id}/clients | Creates clients |
| PUT | /clients/{client_id} | /workspaces/{workspace_id}/clients/{client_id} | Modifies a client |
| GET | /clients/{client_id} | /workspaces/{workspace_id}/clients/{client_id} | Retrieves details for a specific client |
| DELETE | /clients/{client_id} | /workspaces/{workspace_id}/clients/{client_id} | Deletes a client |
NOTE: the new POST /workspaces/{workspace_id}/clients/{client_id}/archive and /workspaces/{workspace_id}/clients/{client_id}/restore endpoints are also available. These allow clients to be archived instead of deleted, for data management purposes.
Invitations
| Verb | v8 | v9 | Additional Notes |
|---|---|---|---|
| POST | /workspaces/{workspace_id}/invite | /organizations/{organization_id}/invitations | Invites a user to an organization |
| PUT | /invitations/{invitation_code}/resend | /organizations/{organization_id}/invitations/{invitation_code}/resend | Resends an existing invitation to the target user |
| POST | /invitations/{invitation_code}/accept | /organizations/invitations/{invitation_code}/accept | Accepts an invitation |
| POST | /invitations/{invitation_code}/reject | /organizations/invitations/{invitation_code}/reject | Rejects an invitation |
Misc
| Verb | v8 | v9 | Additional Notes |
|---|---|---|---|
| POST | /signups | /signup | |
| GET | /timeline_settings | - | Can be retrieved via the /me/preferences endpoint |
| POST | /timeline_settings | - | Can be updated via the /me/preferences endpoint |
| POST | /sessions | /me/sessions | |
| DELETE | /sessions | /me/sessions | |
| POST | /reset_token | /me/reset_token | |
| POST | /alerts | /workspaces/{workspace_id}/alerts | |
| DELETE | /alerts/{alert_id} | /workspaces/{workspace_id}/alerts/{alert_id} | |
| GET | /dashboard/{workspace_id} | /workspaces/{workspace_id}/dashboard/all_activity | Also available more specific /most_active and /top_activity |
| POST | /user_groups | - | No longer available. Use the new user group endpoints. |
| DELETE | /user_groups | - | No longer available. Use the new user group endpoints. |
Projects
| Verb | v8 | v9 | Additional Notes |
|---|---|---|---|
| GET | /projects | /me/projects | Lists projects accessible by API user. /me/projects/paginated also available |
| POST | /projects | /workspaces/{workspace_id}/projects | Creates a project |
| GET | /projects/{project_id} | /workspaces/{workspace_id}/projects/{project_id} | Retrieves the details of a specific project. To retrieve all projects, you can paginate through GET /workspaces/{workspace_id}/projects, or use report utility endpoints to quickly retrieve names for specific ids |
| PUT | /projects/{project_id} | /workspaces/{workspace_id}/projects/{project_id} | Updates a project. A PATCH action is also available for uniform bulk editing. |
| DELETE | /projects/{project_id} | /workspaces/{workspace_id}/projects/{project_id} | Deletes a project. Projects can be archived instead, through the PUT or PATCH actions detailed above with the payload {"active": false}. |
| GET | /projects/{project_id}/project_groups | /workspaces/{workspace_id}/project_groups | Retrieves all project groups for a workspace, which represents the user groups assigned to projects. |
| POST | /project_groups | /workspaces/{workspace_id}/project_groups | Assigns a user group to a project. |
| DELETE | /project_groups/{project_group_id} | /workspaces/{workspace_id}/project_groups/{project_group_id} | Unassigns a user group from a project. |
| GET | /projects/{project_id}/project_users | /workspaces/{workspace_id}/project_users | Retrieves all project users for a workspace, which represents the users assigned to projects. |
| POST | /project_users | /workspaces/{workspace_id}/project_users | Assigns a user to a project. |
| PUT | /project_users/{project_user_id} | /workspaces/{workspace_id}/project_users/{project_user_id} | Updates a project user. |
| DELETE | /project_users/{project_user_id} | /workspaces/{workspace_id}/project_users/{project_user_id} | Unassigns a user from a project. |
Tags
| Verb | v8 | v9 | Additional Notes |
|---|---|---|---|
| POST | /tags | /workspaces/{workspace_id}/tags | |
| PUT | /tags/{tag_id} | /workspaces/{workspace_id}/tags/{tag_id} | |
| DELETE | /tags/{tag_id} | /workspaces/{workspace_id}/tags/{tag_id} |
Tasks
| Verb | v8 | v9 | Additional Notes |
|---|---|---|---|
| GET | /tasks | /me/tasks | |
| POST | /tasks | /workspaces/{workspace_id}/projects/{project_id}/tasks | |
| DELETE | /tasks/{task_id} | /workspaces/{workspace_id}/projects/{project_id}/tasks/{task_id} | |
| GET | /tasks/{task_id} | /workspaces/{workspace_id}/projects/{project_id}/tasks | |
| PUT | /tasks/{task_id} | /workspaces/{workspace_id}/projects/{project_id}/tasks/{task_id} |
Time Entries
| Verb | v8 | v9 | Additional Notes |
|---|---|---|---|
| GET | /time_entries | /me/time_entries | |
| GET | /time_entries/start | - | Creates a new running time entry. No longer available. Use POST /workspaces/{workspace_id}/time_entries instead, with a negative duration. |
| POST | /time_entries/start | /workspaces/{workspace_id}/time_entries | To create a new running time entry, call this endpoint with a negative duration. |
| GET | /time_entries/current | /me/time_entries/current | Retrieves the current running time entry. |
| GET | /time_entries/{time_entry_id}/stop | - | Stops the current running time entry. No longer available. Use PATCH /workspaces/{workspace_id}/time_entries/{time_entry_id}/stop instead. |
| POST | /time_entries/{time_entry_id}/stop | /workspaces/{workspace_id}/time_entries/{time_entry_id}/stop | Stops the current time entry. In v9 the verb is now PATCH. |
| PUT | /time_entries/{time_entry_id} | /workspaces/{workspace_id}/time_entries/{time_entry_id} | Updates a time entry. |
| POST | /time_entries/{time_entry_id} | - | Use PUT /workspaces/{workspace_id}/time_entries/{time_entry_id} instead. |
| DELETE | /time_entries/{time_entry_id} | /workspaces/{workspace_id}/time_entries/{time_entry_id} | |
| GET | /time_entries/{time_entry_id} | /me/time_entries/{time_entry_id} | You can use the detailed report endpoints to retrieve multiple time entries. |
Workspace
| Verb | v8 | v9 | Additional Notes |
|---|---|---|---|
| GET | /workspaces | /workspaces | Also available as /me/workspaces |
| POST | /workspaces/{workspace_id}/reset_token | /me/reset_token | |
| DELETE | /workspaces/{workspace_id}/leave | /organizations/{organization_id}/users/leave | |
| GET | /workspaces/{workspace_id}/workspace_users | /workspaces/{workspace_id}/users | |
| PUT | /workspace_users/{workspace_user_id} | /workspaces/{workspace_id}/workspace_users/{workspace_user_id} | |
| DELETE | /workspace_users/{workspace_user_id} | /workspaces/{workspace_id}/workspace_users/{workspace_user_id} |