Skip to content

WebWork Tracker REST API V2 (2.0.0)

Modern REST API for WebWork Tracker with OAuth2 authentication. This API provides access to workspaces, members, projects, and time tracking features.

Languages
Servers
Production Server
https://api.webwork-tracker.com/api/v2/

Workspaces

Read workspace information for the authenticated user for using it in the other endpoints

Operations

Members

Manage workspace members - invite, update roles, and remove members

Operations

Projects

Manage projects within workspaces

Operations

Contracts

Manage contracts (project-member assignments) within workspaces. Contracts define which members are assigned to which projects, with settings for rates, hours limits, and screenshot modes. Rate information is only visible if you have permission to view rates and the project is billable.

Operations

Tasks

Manage tasks within projects

Operations

Project Viewers

Manage project viewers - external users who can view specific projects

Operations

Timesheets

Manage timesheet approvals and submissions

Operations

Get All Timesheets

Request

Retrieve all timesheets for a specific workspace. Supports filtering by status, date range, user ID, and specific timesheet ID. Results are paginated and can be sorted by creation date.

Filters:

  • id: Filter by specific encrypted timesheet ID
  • status: Filter by timesheet status (e.g., open, submitted, approved, rejected)
  • date_from / date_to: Filter by date range
  • user_id: Filter by user ID
  • order_by: Sort by creation date (asc or desc)

Response Structure:

  • Totals: Each timesheet includes user information (user_id, member), date range (date_from, date_to), total_minutes, submission details, and status.
  • Daily Breakdown: The daily_breakdown object contains daily tracked time grouped by date. Each date has an array of project entries showing project_id, project_name, contract_id, and total_minutes for that day.
  • Amount Information: total_amount fields (both at timesheet level and in daily breakdown) are only included if the authenticated user has permission to see rates in the workspace.

Pagination:

  • Results are paginated with configurable page size
  • Default: 20 items per page, maximum: 100
Security
oauth2 or apiKey
Query
workspace_idintegerrequired

ID of the workspace

Example: workspace_id=1
idstring

Filter by specific encrypted timesheet ID. The ID is an encrypted string.

Example: id=abc123xyz
statusstring

Filter by timesheet status. Possible values: pending, submitted, approved, rejected.

Enum"pending""submitted""approved""rejected"
Example: status=pending
date_fromstring(date)

Filter timesheets starting from this date (inclusive). Format: YYYY-MM-DD.

Example: date_from=2024-01-01
date_tostring(date)

Filter timesheets up to this date (inclusive). Format: YYYY-MM-DD.

Example: date_to=2024-01-31
user_idinteger

Filter timesheets by user ID. Returns only timesheets belonging to the specified user.

Example: user_id=123
order_bystring

Sort order for timesheets by created_at. Possible values: asc (ascending), desc (descending).

Enum"asc""desc"
Example: order_by=desc
pageinteger>= 1

Page number for pagination. Default: 1.

Default 1
Example: page=1
per_pageinteger[ 1 .. 100 ]

Number of items per page. Minimum: 1, Maximum: 100, Default: 20.

Default 20
Example: per_page=20
curl -i -X GET \
  'https://api.webwork-tracker.com/api/v2/timesheets?workspace_id=1' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Timesheets retrieved successfully

Bodyapplication/json
successboolean
Example: true
dataArray of objects

Array of timesheet objects

metaobject
Response
application/json
{ "success": true, "data": [ {} ], "meta": { "api_version": "2.0.0", "timestamp": "2024-01-15T10:30:00.000000Z", "pagination": {} } }

Approve Timesheet

Request

Approve a submitted timesheet. Only workspace owners and executive managers can approve timesheets. The timesheet must be in 'submitted' status to be approved.

Security
oauth2 or apiKey
Path
timesheetIdstringrequired

Encrypted timesheet ID

Example: abc123xyz
Bodyapplication/jsonrequired
workspace_idintegerrequired

ID of the workspace

Example: 1
curl -i -X PUT \
  https://api.webwork-tracker.com/api/v2/timesheets/abc123xyz/approve \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1
  }'

Responses

Timesheet approved successfully

Bodyapplication/json
successboolean
Example: true
dataobject or null
Example: null
messagestring
Example: "Timesheet approved successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": null, "message": "Timesheet approved successfully", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Reject Timesheet

Request

Reject a submitted timesheet with a reason. Only workspace owners and executive managers can reject timesheets. The timesheet must be in 'submitted' status to be rejected. A reason must be provided.

Security
oauth2 or apiKey
Path
timesheetIdstringrequired

Encrypted timesheet ID

Example: abc123xyz
Bodyapplication/jsonrequired
workspace_idintegerrequired

ID of the workspace

Example: 1
reasonstringrequired

Reason for rejection. This is required and will be visible to the user.

Example: "Please correct the hours for Monday - they seem too high"
curl -i -X PUT \
  https://api.webwork-tracker.com/api/v2/timesheets/abc123xyz/reject \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1,
    "reason": "Please correct the hours for Monday - they seem too high"
  }'

Responses

Timesheet rejected successfully

Bodyapplication/json
successboolean
Example: true
dataobject or null
Example: null
messagestring
Example: "Timesheet rejected successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": null, "message": "Timesheet rejected successfully", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Submit Timesheet

Request

Submit a timesheet for approval. The timesheet must be in 'pending' or 'rejected' status to be submitted. Once submitted, it will be reviewed by workspace owners or executive managers.

Security
oauth2 or apiKey
Path
timesheetIdstringrequired

Encrypted timesheet ID

Example: abc123xyz
Bodyapplication/jsonrequired
workspace_idintegerrequired

ID of the workspace

Example: 1
curl -i -X PUT \
  https://api.webwork-tracker.com/api/v2/timesheets/abc123xyz/submit \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1
  }'

Responses

Timesheet submitted successfully

Bodyapplication/json
successboolean
Example: true
dataobject or null
Example: null
messagestring
Example: "Timesheet submitted successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": null, "message": "Timesheet submitted successfully", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Unsubmit Timesheet

Request

Unsubmit a previously submitted timesheet. This returns the timesheet to 'pending' status, allowing the user to make changes before resubmitting.

Security
oauth2 or apiKey
Path
timesheetIdstringrequired

Encrypted timesheet ID

Example: abc123xyz
Bodyapplication/jsonrequired
workspace_idintegerrequired

ID of the workspace

Example: 1
curl -i -X PUT \
  https://api.webwork-tracker.com/api/v2/timesheets/abc123xyz/unsubmit \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1
  }'

Responses

Timesheet unsubmitted successfully

Bodyapplication/json
successboolean
Example: true
dataobject or null
Example: null
messagestring
Example: "Timesheet unsubmitted successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": null, "message": "Timesheet unsubmitted successfully", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Time Requests

Manage manual time requests and approvals

Operations

Leaves

Manage leave requests, balances, and policies

Operations

Expenses

Manage expenses and expense categories

Operations

Time Tracking

Track and manage time entries

Operations

Reports

Generate and retrieve various reports including tracked hours, timeline, activity descriptions, tasks, and activity level reports

Operations

Webhooks

Manage webhooks for event notifications

Operations