Authenticatie
Stuur een API-sleutel mee als bearer token. De sleutel moet over de permissie agency.time.log beschikken; een sleutel zonder deze permissie wordt geweigerd met een 403 in plaats van een 404.
Dit eindpunt vereist geen organisatie-id. Uw sleutel identificeert al de organisatie waartoe deze behoort, en het antwoord is hierop afgestemd.
Probeer het
Vervang alles tussen punthaakjes door uw eigen waarden en de sleutelplaatsvervanger door een sleutel uit uw dashboard.
curl -X POST https://api.zinndigital.com/v1/agency/time/entries \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "project_id": <string>, "work_date": <string>, "minutes": <integer> }'Ingelogd? De API-console in je dashboard vult je echte organisatie-id en je eigen sleutel in, en voert het verzoek uit tegen de live API zodat je de daadwerkelijke respons kunt zien. Open dit eindpunt in de API-console
Details
`minutes` is an integer, 1..1440. Requires `agency.time.log` for your own time, or `agency.time.manage` to pass `user_id` and log on somebody else's behalf. If this client's billing schedule is *"invoice straight away"*, logging arms it and starts the billing workflow immediately — the invoice is raised in seconds rather than at the next sweep, without the invoicing call ever sitting in this request.
Aanvraaglichaam
| Naam | Type | Verplicht | Wat dit is |
|---|---|---|---|
project_id | string | Ja | — |
task_id | string | Nee | — |
work_date | string | Ja | — |
minutes | integer | Ja | — |
description | string | Nee | — |
billable | boolean | Nee | — |
user_id | string | Nee | Log on somebody else's behalf. Requires `agency.time.manage`; without it a caller may only log their own time. |
Reactie
| Naam | Type | Verplicht | Wat dit is |
|---|---|---|---|
id | string | Ja | — |
user_id | string | Nee | — |
project_id | string | Ja | — |
project_name | string | Nee | — |
task_id | string | Nee | — |
task_name | string | Nee | — |
client_id | string | Nee | — |
work_date | string | Ja | — |
minutes | integer | Ja | ⛔ An INTEGER of minutes. There is no `hours` field on this API: an hours-as-float duration re-enters the money through the rate and no rounding point can recover it. |
duration_label | string | Ja | Presentational only — never multiplied by anything. |
description | string | Nee | — |
billable | boolean | Ja | — |
billing_run_id | string | Nee | The run that invoiced this entry. `null` means it is still outstanding. |
billed_rate_minor_per_hour | integer | Nee | — |
billed_amount_minor | integer | Nee | What was actually charged, frozen at billing time so the document can be re-derived years later even if every rate card has since changed. |
billed_currency | string | Nee | — |
billed_under_fixed_price | boolean | Nee | TRUE when these minutes were rolled into a task's FIXED price rather than charged by the hour. `billed_amount_minor` is then 0 and that zero is correct — read this flag, not the… |
rate_minor_per_hour | integer | Nee | The rate that WOULD apply, resolved against this entry's own `work_date`, for an entry not yet billed. ⛔ `null` means **unpriced**, not free: work with no rate card is never inv… |
rate_scope | string<task, project, client, org> | Nee | Which rate card won, so a surprising invoice can be explained. |
rate_kind | string<hourly, fixed> | Nee | — |
created_at | string | Ja | — |
Fouten die dit eindpunt kan retourneren
401 · 403 · 422