ProjectsList the hourly rates a task's contract offers

List the hourly rates a task's contract offers

Lists the active hourly rates of a task's contract (plus one rate in use), cheapest first, for choosing an allocation's rate.

Resolves the task's contract and returns its ACTIVE contract hourly rates, ordered by amount then name, plus the rate given in suggestedHourlyRateId even when inactive (only if it belongs to the same contract) — so a rate already in use stays selectable. Unpaged. Amounts are in the rate's price-group currency, which is not returned. A contract with no matching rate answers 200 with the body null instead of an empty list.

Use it to:

  • Offer the rate choices when allocating a person to a task (default = SuggestedHourlyRateId from employee-unallocated)

Not for:

  • Full rate records with currency, GUID and product number → GET /v1/contract-hourly-rate

Behaviour:

  • Idempotent.
  • Safe to retry.
  • Consistency: immediate

Call first: GET /v2/projects/{projectId}/employee-unallocated

Next: POST /v1/task/{taskID}/allocation

See also: GET /v1/contract-hourly-rate, GET /v2/projects/{projectId}/employee-allocation

Not yet documented: description; examples.

curl -X GET "https://app3.timelog.com/your-account/api/v2/contract-hourly-rates/dropdown-content?taskId=123&suggestedHourlyRateId=0" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "Entities": [
    {
      "Properties": {
        "ContractHourlyRateID": 123,
        "ProjectSubContractID": 123,
        "Name": "John Doe",
        "Amount": 3.14,
        "Type": "Standard"
      },
      "Links": [
        {
          "Href": "example_string",
          "Rel": "example_string"
        }
      ],
      "Actions": [
        {}
      ]
    }
  ],
  "Links": [
    {
      "Href": "example_string",
      "Rel": "example_string"
    }
  ]
}
GET
/v2/contract-hourly-rates/dropdown-content
GET
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.
query
taskIdinteger
Required

Task whose contract's rates are listed. Omitted → 404 (captured); unknown → 500.

Format: int32
query
suggestedHourlyRateIdinteger

A rate to include even if inactive (ignored when it is on another contract); 0 = none.

Format: int32
Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp).

The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user.

Not yet documented: how to obtain a token.

Not yet documented: token lifetime.

Query Parameters

taskIdinteger
Required

Task whose contract's rates are listed. Omitted → 404 (captured); unknown → 500.

suggestedHourlyRateIdinteger

A rate to include even if inactive (ignored when it is on another contract); 0 = none.

Responses

Entitiesarray

Omitted (not []) when the list is empty.

Linksarray