HubstaffDeveloper Portal

Manual time requests

List and approve/deny manual time entry requests

Get manual time request

GET/v2/manual_time_requests/{manual_time_request_id}

Returns the manual time request with the given ID.

Parameters

NameInTypeDescription
manual_time_request_idrequired
pathinteger (int32)

Responses

200
object
  • manual_time_requestobject
    object

    ManualTimeRequest model

    • idinteger required

      Manual time request ID

    • member_idinteger required

      Member (user) ID who submitted the request

    • project_idinteger required

      Project ID

    • task_idinteger

      Task ID if associated with a task

    • start_timestring required

      Start time of the manual time entry

    • stop_timestring required

      Stop time of the manual time entry

    • submitted_atstring required

      When the request was submitted

    • approved_atstring

      When the request was approved

    • denied_atstring

      When the request was denied

    • duration_secondsinteger required

      Duration in seconds

    • notesstring

      Notes for the time entry

    • statusstring required

      Status: submitted, approved, or denied

    • reviewer_idinteger

      ID of user who approved or denied (approved_by when approved, denied_by when denied)

    • denial_reasonstring

      Reason for denial (only present when status is denied)

    • organization_idinteger required

      Organization ID

    • datestring required

      Calendar date (org tz) from start_time. The list date[] filter is overlap on starts/stops (in_range).

    • billableboolean required

      Whether the time is billable

    • reason_to_submitstring required

      Reason the manual time was submitted

    • submitted_by_idinteger required

      User ID who submitted the request

    • approved_by_idinteger

      User ID who approved the request

    • denied_by_idinteger

      User ID who denied the request

    • attachment_original_filenamestring

      Original filename of attachment if present

    • created_atstring required

      When the record was created

    • updated_atstring required

      When the record was last updated

Example response
json
{
  "manual_time_request": {
    "id": 0,
    "member_id": 0,
    "project_id": 0,
    "task_id": 0,
    "start_time": "2024-01-15T10:30:00Z",
    "stop_time": "2024-01-15T10:30:00Z",
    "submitted_at": "2024-01-15T10:30:00Z",
    "approved_at": "2024-01-15T10:30:00Z",
    "denied_at": "2024-01-15T10:30:00Z",
    "duration_seconds": 0,
    "notes": "string",
    "status": "string",
    "reviewer_id": 0,
    "denial_reason": "string",
    "organization_id": 0,
    "date": "2024-01-15",
    "billable": false,
    "reason_to_submit": "string",
    "submitted_by_id": 0,
    "approved_by_id": 0,
    "denied_by_id": 0,
    "attachment_original_filename": "string",
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-15T10:30:00Z"
  }
}
400Invalid parameters
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
401Unauthorized
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
403API access is only for organizations on an active plan
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
404Could not find record
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
429Rate limit exceeded
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}

Update manual time request status

PUT/v2/manual_time_requests/{manual_time_request_id}/status

Approves or denies a submitted manual time request.

Parameters

NameInTypeDescription
manual_time_request_idrequired
pathinteger (int32)

Request body

object

Update manual time request status

  • statusstring required

    New status for the request: approved or denied.

  • denial_reasonstring

    Required when status is denied. Reason recorded on the request.

  • accept_collisionsboolean

    Confirm approval when the request overlaps existing time the approver is authorized to override. Covers ordinary tracked-time collisions and associated data within role permissions: unprocessed paid time, client invoices, user invoices, timesheets, and integration-synced time. May remove time from unprocessed payments and leave invoices or integrations out of sync.

  • allow_above_project_budgetboolean

    Allow approval when the created activity would exceed the project budget only.

  • discard_exceeding_hoursboolean

    Approve only time within member limits. Cannot be combined with increase_limit.

  • increase_limitboolean

    Automatically increase exceeded daily and weekly member limits. Organization owners and managers only.

Responses

200
object
  • manual_time_requestobject
    object

    ManualTimeRequest model

    • idinteger required

      Manual time request ID

    • member_idinteger required

      Member (user) ID who submitted the request

    • project_idinteger required

      Project ID

    • task_idinteger

      Task ID if associated with a task

    • start_timestring required

      Start time of the manual time entry

    • stop_timestring required

      Stop time of the manual time entry

    • submitted_atstring required

      When the request was submitted

    • approved_atstring

      When the request was approved

    • denied_atstring

      When the request was denied

    • duration_secondsinteger required

      Duration in seconds

    • notesstring

      Notes for the time entry

    • statusstring required

      Status: submitted, approved, or denied

    • reviewer_idinteger

      ID of user who approved or denied (approved_by when approved, denied_by when denied)

    • denial_reasonstring

      Reason for denial (only present when status is denied)

    • organization_idinteger required

      Organization ID

    • datestring required

      Calendar date (org tz) from start_time. The list date[] filter is overlap on starts/stops (in_range).

    • billableboolean required

      Whether the time is billable

    • reason_to_submitstring required

      Reason the manual time was submitted

    • submitted_by_idinteger required

      User ID who submitted the request

    • approved_by_idinteger

      User ID who approved the request

    • denied_by_idinteger

      User ID who denied the request

    • attachment_original_filenamestring

      Original filename of attachment if present

    • created_atstring required

      When the record was created

    • updated_atstring required

      When the record was last updated

Example response
json
{
  "manual_time_request": {
    "id": 0,
    "member_id": 0,
    "project_id": 0,
    "task_id": 0,
    "start_time": "2024-01-15T10:30:00Z",
    "stop_time": "2024-01-15T10:30:00Z",
    "submitted_at": "2024-01-15T10:30:00Z",
    "approved_at": "2024-01-15T10:30:00Z",
    "denied_at": "2024-01-15T10:30:00Z",
    "duration_seconds": 0,
    "notes": "string",
    "status": "string",
    "reviewer_id": 0,
    "denial_reason": "string",
    "organization_id": 0,
    "date": "2024-01-15",
    "billable": false,
    "reason_to_submit": "string",
    "submitted_by_id": 0,
    "approved_by_id": 0,
    "denied_by_id": 0,
    "attachment_original_filename": "string",
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-15T10:30:00Z"
  }
}
400Invalid parameters
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
401Unauthorized
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
403API access is only for organizations on an active plan
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
404Could not find record
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
429Rate limit exceeded
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}

List manual time requests

GET/v2/organizations/{organization_id}/manual_time_requests

Date range filter (date[start]/date[stop]) returns requests whose time span overlaps the given organization-local dates: it converts the dates to the org’s day range and applies in_range (overlap on starts_at/stops_at). This is not an exact filter on the date response field (see entity docs). Overnight entries or tz shifts may cause an entry to overlap a date even if its date column differs. Both bounds are required (otherwise 400).

Parameters

NameInTypeDescription
organization_idrequired
pathinteger (int32)
page_start_id
queryinteger (int32)
The page start ID.
page_limit
queryinteger (int32)
The default page size
date[start]
querystring (date)
Start date (ISO 8601)
date[stop]
querystring (date)
Stop date (ISO 8601, Inclusive)
updated_at[start]
querystring (date-time)
updated_at[stop]
querystring (date-time)
status
querystring
Possible valuessubmittedapproveddenied
user_ids
queryarray integer[]
List of user IDs
project_ids
queryarray integer[]
List of project IDs
task_ids
queryarray integer[]
List of task IDs
team_ids
queryarray integer[]
List of team IDs
include
queryarray string[]
Specify related data to side load.
Possible valuesusersprojectstasks

Responses

200
object
  • manual_time_requestsarray
    array<object>
    items
    object

    ManualTimeRequest model

    • idinteger required

      Manual time request ID

    • member_idinteger required

      Member (user) ID who submitted the request

    • project_idinteger required

      Project ID

    • task_idinteger

      Task ID if associated with a task

    • start_timestring required

      Start time of the manual time entry

    • stop_timestring required

      Stop time of the manual time entry

    • submitted_atstring required

      When the request was submitted

    • approved_atstring

      When the request was approved

    • denied_atstring

      When the request was denied

    • duration_secondsinteger required

      Duration in seconds

    • notesstring

      Notes for the time entry

    • statusstring required

      Status: submitted, approved, or denied

    • reviewer_idinteger

      ID of user who approved or denied (approved_by when approved, denied_by when denied)

    • denial_reasonstring

      Reason for denial (only present when status is denied)

    • organization_idinteger required

      Organization ID

    • datestring required

      Calendar date (org tz) from start_time. The list date[] filter is overlap on starts/stops (in_range).

    • billableboolean required

      Whether the time is billable

    • reason_to_submitstring required

      Reason the manual time was submitted

    • submitted_by_idinteger required

      User ID who submitted the request

    • approved_by_idinteger

      User ID who approved the request

    • denied_by_idinteger

      User ID who denied the request

    • attachment_original_filenamestring

      Original filename of attachment if present

    • created_atstring required

      When the record was created

    • updated_atstring required

      When the record was last updated

Example response
json
{
  "manual_time_requests": [
    {
      "id": 0,
      "member_id": 0,
      "project_id": 0,
      "task_id": 0,
      "start_time": "2024-01-15T10:30:00Z",
      "stop_time": "2024-01-15T10:30:00Z",
      "submitted_at": "2024-01-15T10:30:00Z",
      "approved_at": "2024-01-15T10:30:00Z",
      "denied_at": "2024-01-15T10:30:00Z",
      "duration_seconds": 0,
      "notes": "string",
      "status": "string",
      "reviewer_id": 0,
      "denial_reason": "string",
      "organization_id": 0,
      "date": "2024-01-15",
      "billable": false,
      "reason_to_submit": "string",
      "submitted_by_id": 0,
      "approved_by_id": 0,
      "denied_by_id": 0,
      "attachment_original_filename": "string",
      "created_at": "2024-01-15T10:30:00Z",
      "updated_at": "2024-01-15T10:30:00Z"
    }
  ]
}
400Invalid parameters
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
401Unauthorized
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
403API access is only for organizations on an active plan
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
404Could not find record
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}
429Rate limit exceeded
object

Hubstaff_Public_V2_Entities_Error model

  • codestring required

    Legacy string error code for backward compatibility

  • error_codeinteger

    Numeric error code for i18n/programmatic handling. Ranges: 10000-10999 (Auth), 11000-11999 (Validation), 12000-12999 (Resource), 13000-13999 (Rate Limit), 14000-14999 (Time Entry/Activity), 15000-15999 (System). See GET /v2/error_codes for full reference.

  • errorstring required

    Human-readable error message

  • detailsarray

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    array<string>

    Per-attribute validation errors: [{attribute, error}]. Present on validation failures.

    items
    string
Example response
json
{
  "code": "string",
  "error_code": 0,
  "error": "string",
  "details": [
    "string"
  ]
}