Ga naar hoofdinhoud

Time tracker integration

Time
time-tracker
Provider stub

Link NC time-tracking entries to Open Register objects. Default backing app is timemanager; configurable for sites running a different NC time-tracking app. Provider stub today.

Group
Workflow
Required app
timemanager
Storage
Link table
Icon
Clock

Tie tracked time to an Open Register object. The Time tab will surface linked time entries with date, user, duration, and a running total. Default backing app is timemanager; the leaf's design supports overriding to another NC time-tracking app via a site-level config. Provider registers today; the wrapping service + link table land in a follow-up.

Screenshot

The integration registers in OpenRegister's in-page registry and renders as one of the tabs on the standalone integrations view. The tab is highlighted active here so you can see exactly which surface this leaf controls.

time-tracker integration tab active in the OpenRegister integrations view

Captured by tests/e2e/leaf-screenshots.spec.ts against the seeded integration-verification register on the dev container. Empty state (Nothing linked yet) is expected on a freshly seeded object — link an upstream entity from the tab's + Add affordance to populate it.

What it will do

  • Lists time entries linked to each Open Register object on the Time sidebar tab.
  • Shows date, user, duration, and the entry's note per row.
  • Renders a running total ("12h 30m this week, 47h total") on the detail-page widget.
  • Lets users add a time entry inline (date, duration, note); the entry lands in NC time tracker.
  • Resolves a referenceType: 'time-tracker' schema property to a single-entity chip with cumulative time + user count.

Setup

1. Install your NC time-tracking app

Default is the timemanager Nextcloud app. The Time tab appears once it's enabled. To use a different app, override at the openregister site level (config flag, set during install).

2. Use it on an object

Open any object whose schema declares linkedTypes: ['time-tracker']. The Time tab appears. Today it renders the empty state until the wrapping service lands.

Configuration

FieldOpen Register sideNC time tracker side
Storagelink-table (openregister_time_links, pending)timemanager (or alternate) entries
RefreshPer render (totals computed live)
AuthNone (uses session)The tracker's own ACL
Configurable appYes — overridable via site config

Local verification setup

The leaf-verification harness in tests/e2e/leaf-verification.spec.ts probes every advertised provider against the seeded integration-verification register; you can reproduce a single-leaf check by hand against any OpenRegister dev container.

1. Install the timemanager Nextcloud app

docker exec -u www-data nextcloud php occ app:install timemanager
docker exec -u www-data nextcloud php occ app:enable timemanager
docker exec nextcloud apache2ctl graceful # bust OPcache so the registry sees the new app

Without timemanager enabled, the time-tracker provider reports enabled: false on the OCS capabilities payload and its sub-resource endpoint refuses to dispatch.

2. Probe the registry to confirm the provider is advertised

curl -s -u admin:admin -H 'OCS-APIRequest: true' \
http://localhost:8080/ocs/v2.php/cloud/capabilities?format=json \
| jq '.ocs.data.capabilities.openregister.integrations.providers[] | select(.id == "time-tracker")'

Expected payload — the enabled flag flips to true once the required app is installed.

3. Probe the per-object sub-resource

curl -s -u admin:admin -H 'OCS-APIRequest: true' \
"http://localhost:8080/index.php/apps/openregister/api/objects/21/166/25706ca9-c989-4d6b-9f7b-98cf1cc70639/integrations/time-tracker"

Most recent harness run (against the seeded verification-probe object on this dev container):

  • Status: 200 (list-envelope)
  • Latency: 82ms
  • Body: matches the documented list envelope below
{
"items": []
}

The OCS-APIRequest: true header is mandatory — without it, Nextcloud's session-CSRF guard short-circuits with HTTP 412 before the provider runs. An empty items: [] is the correct response for a freshly-seeded object that hasn't been linked to any upstream time-tracker entity yet.

Current status

Provider registered. Wrapping service + link table tracked under openspec/changes/integration-time-tracker.