ProjectsList projects

List projects

Lists the active (or inactive) non-template projects the caller may see, optionally for one customer, by project number.

Returns one page of ProjectRead. Template projects are never listed. Customer is always null, even with $expand=customer.

Use it to:

  • Sync the project register into an ERP / PSA
  • Pick the ProjectID for payments, updates or status changes

Not for:

  • Projects a user can register time on → GET /v1/project-header/search-for-time-tracking-order-by-recent-registration

Behaviour:

  • Idempotent.
  • Safe to retry.
  • Changes are visible to the next read immediately.

Next: GET /v1/project/{projectID}, GET /v1/payment

See also: GET /v1/customer

Not yet documented: examples; response → empty result.

curl -X GET "https://app3.timelog.com/your-account/api/v1/project/get-all?customerID=123&isActive=true&$page=1&$pagesize=10" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "Properties": {
    "TotalRecord": "example_string",
    "TotalPage": "example_string",
    "PageNumber": "example_string"
  },
  "Entities": [
    {
      "Properties": {
        "ProjectID": 123,
        "ID": "123e4567-e89b-12d3-a456-426614174000",
        "Name": "John Doe",
        "No": "example_string",
        "ExpenseIsBillable": true,
        "CustomerID": 123,
        "Customer": {
          "CustomerID": 123,
          "ID": "123e4567-e89b-12d3-a456-426614174000",
          "Name": "John Doe",
          "No": "example_string",
          "DefaultMileageDistance": 25,
          "CustomerStatusID": 123,
          "VATNo": "example_string",
          "OrganizationNo": "example_string"
        },
        "ContactID": 123,
        "Description": "example_string",
        "DepartmentID": "null",
        "ProjectManagerID": "null",
        "AccountManagerID": "null",
        "PartnerID": "null",
        "ProjectTypeID": "null",
        "ProjectCategoryID": "null",
        "BudgetWorkHours": 3.14,
        "BudgetWorkAmount": 3.14,
        "StartDate": "null",
        "EndDate": "null"
      },
      "Links": [
        {
          "Href": "example_string",
          "Rel": "example_string"
        }
      ],
      "Actions": [
        {}
      ]
    }
  ],
  "Links": [
    {
      "Href": "example_string",
      "Rel": "example_string"
    }
  ]
}
GET
/v1/project/get-all
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
customerIDinteger

Only projects of this customer. Omitted = all customers.

Format: int32
query
isActiveboolean

true = active projects only (default); false = inactive projects only. There is no 'both'.

query
$pageinteger

Page number.

query
$pagesizeinteger

Page size. No maximum in the API layer.

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

customerIDinteger

Only projects of this customer. Omitted = all customers.

isActiveboolean

true = active projects only (default); false = inactive projects only. There is no 'both'.

$pageinteger

Page number.

$pagesizeinteger

Page size. No maximum in the API layer.

Responses

Propertiesobject

Paging values. They are returned as STRINGS, for example "TotalRecord": "12".

Entitiesarray

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

Linksarray