ExpensesSearch addresses (TimeLog data)

Search addresses (TimeLog data)

Suggests addresses TimeLog already holds — for a project (home, own company, the project's customer) or by a search phrase over CRM customers.

Address suggestions for a trip's start / end address without calling Google. With projectId: the caller's own home address (Type 2 Home, returned even when empty), the account's own company address (Type 0 Internal) and the address of the project's customer (Type 1 Project). With addressPhrase: CRM customers whose name or any address part or country contains the phrase (Type 3 Customer), paged. Store FullDetailAddress.

Use it to:

  • Mobile mileage form: offer 'home', 'office' and 'customer of this project' as one-tap start / end addresses

Not for:

  • Only the caller's home and company address — GET /v1/address/home-work
  • CRM customer master data — the CRM customer operations

Rules across fields:

  • R1: Send exactly one of projectId and addressPhrase; neither → 404 (captured).

Behaviour:

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

Next: POST /v1/mileage-registration

See also: GET /v1/address/home-work

Not yet documented: examples; request → cross field rules; response → variants.

curl -X GET "https://app3.timelog.com/your-account/api/v1/address/search?projectId=123&addressPhrase=123%20Main%20St&$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": {
        "Name": "null",
        "FullAddress": "null",
        "FullDetailAddress": "null",
        "Type": 42,
        "TypeName": "John Doe",
        "Address": "null",
        "Address2": "null",
        "Address3": "null",
        "Postcode": "null",
        "City": "null",
        "State": "null",
        "CountryName": "null"
      },
      "Links": [
        {
          "Href": "example_string",
          "Rel": "example_string"
        }
      ],
      "Actions": [
        {}
      ]
    }
  ],
  "Links": [
    {
      "Href": "example_string",
      "Rel": "example_string"
    }
  ]
}
GET
/v1/address/search
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
projectIdinteger

Project whose customer address to include. An unknown ID just drops the Project row. Conditional. Exactly one of projectId / addressPhrase selects the variant.

Format: int32
query
addressPhrasestring

Text searched with LIKE '%phrase%' (trimmed) in customer name, address lines, postcode, city, state and country. Max 200 characters. Conditional. Exactly one of projectId / addressPhrase selects the variant.

query
$pageinteger

addressPhrase variant only: page number.

query
$pagesizeinteger

addressPhrase variant only: page size. No maximum enforced 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

projectIdinteger

Project whose customer address to include. An unknown ID just drops the Project row.

Conditional. Exactly one of projectId / addressPhrase selects the variant.

addressPhrasestring

Text searched with LIKE '%phrase%' (trimmed) in customer name, address lines, postcode, city, state and country. Max 200 characters.

Conditional. Exactly one of projectId / addressPhrase selects the variant.

$pageinteger

addressPhrase variant only: page number.

$pagesizeinteger

addressPhrase variant only: page size. No maximum enforced 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