DYNVOLT · developers

Work orders

Work orders endpoints of the DynVolt Open API.

O&M work orders (list, create, update, approve), inspection categories, and O&M notifications. Writes support idempotency keys.

GET /v1/sites/{site_id}/work-orders

O&M work orders (filters: location_id, logger_id, status, start, end, offset, limit).

Scope: om:read · Module: om

Query parameterTypeRequiredDescription
statusstringnoFilter by work-order status.
location_idintegernoFilter by location.
logger_idintegernoRestrict to a single logger (plant). Omit for all plants.
assigned_tostringnoFilter by assignee.
startstringnoWindow start — RFC3339 UTC, e.g. 2026-08-01T00:00:00Z. Naive (offset-less) timestamps are rejected.
endstringnoWindow end — RFC3339 UTC. Must be after start.
offsetintegernoRows to skip (pagination).
limitintegernoMaximum rows to return (capped at 200).
curl "https://api.owner.dynvolt.com/v1/sites/pv-ljubas/work-orders" \
  -H "Authorization: Bearer $DYNVOLT_API_KEY"

POST /v1/sites/{site_id}/work-orders

Create a work order.

Scope: om:write · Module: om · Write (rate-limited at 30/min)

  • Supports the Idempotency-Key header for safe retries (24-hour replay). Returns 409 conflict_safe_mode while the site is in commissioning safe mode.
curl -X POST "https://api.owner.dynvolt.com/v1/sites/pv-ljubas/work-orders" \
  -H "Authorization: Bearer $DYNVOLT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ ... }'

GET /v1/sites/{site_id}/work-orders/{wo_id}

One work order.

Scope: om:read · Module: om

curl "https://api.owner.dynvolt.com/v1/sites/pv-ljubas/work-orders/101" \
  -H "Authorization: Bearer $DYNVOLT_API_KEY"

PUT /v1/sites/{site_id}/work-orders/{wo_id}

Update a work order.

Scope: om:write · Module: om · Write (rate-limited at 30/min)

  • Supports the Idempotency-Key header for safe retries (24-hour replay). Returns 409 conflict_safe_mode while the site is in commissioning safe mode.
curl -X PUT "https://api.owner.dynvolt.com/v1/sites/pv-ljubas/work-orders/101" \
  -H "Authorization: Bearer $DYNVOLT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ ... }'

GET /v1/sites/{site_id}/om/categories

Inspection categories.

Scope: om:read · Module: om

curl "https://api.owner.dynvolt.com/v1/sites/pv-ljubas/om/categories" \
  -H "Authorization: Bearer $DYNVOLT_API_KEY"

GET /v1/sites/{site_id}/om/notifications

O&M notifications (?unread_only&offset&limit).

Scope: om:read · Module: om

Query parameterTypeRequiredDescription
unread_onlybooleannoReturn only unread notifications.
offsetintegernoRows to skip (pagination).
limitintegernoMaximum rows to return (capped at 200).
curl "https://api.owner.dynvolt.com/v1/sites/pv-ljubas/om/notifications" \
  -H "Authorization: Bearer $DYNVOLT_API_KEY"

GET /v1/sites/{site_id}/om/notifications/unread-count

Unread O&M notification count.

Scope: om:read · Module: om

curl "https://api.owner.dynvolt.com/v1/sites/pv-ljubas/om/notifications/unread-count" \
  -H "Authorization: Bearer $DYNVOLT_API_KEY"

PUT /v1/sites/{site_id}/work-orders/{wo_id}/items/{item_id}

Update a work-order checklist item.

Scope: om:write · Module: om · Write (rate-limited at 30/min)

  • Supports the Idempotency-Key header for safe retries (24-hour replay). Returns 409 conflict_safe_mode while the site is in commissioning safe mode.
curl -X PUT "https://api.owner.dynvolt.com/v1/sites/pv-ljubas/work-orders/101/items/42" \
  -H "Authorization: Bearer $DYNVOLT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ ... }'

POST /v1/sites/{site_id}/work-orders/{wo_id}/approve

Approve a completed work order.

Scope: om:write · Module: om · Write (rate-limited at 30/min)

  • Supports the Idempotency-Key header for safe retries (24-hour replay). Returns 409 conflict_safe_mode while the site is in commissioning safe mode.
curl -X POST "https://api.owner.dynvolt.com/v1/sites/pv-ljubas/work-orders/101/approve" \
  -H "Authorization: Bearer $DYNVOLT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ ... }'

PUT /v1/sites/{site_id}/om/notifications/{notification_id}/read

Mark an O&M notification read.

Scope: om:write · Module: om · Write (rate-limited at 30/min)

  • Supports the Idempotency-Key header for safe retries (24-hour replay). Returns 409 conflict_safe_mode while the site is in commissioning safe mode.
curl -X PUT "https://api.owner.dynvolt.com/v1/sites/pv-ljubas/om/notifications/3/read" \
  -H "Authorization: Bearer $DYNVOLT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ ... }'