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 parameter | Type | Required | Description |
|---|---|---|---|
status | string | no | Filter by work-order status. |
location_id | integer | no | Filter by location. |
logger_id | integer | no | Restrict to a single logger (plant). Omit for all plants. |
assigned_to | string | no | Filter by assignee. |
start | string | no | Window start — RFC3339 UTC, e.g. 2026-08-01T00:00:00Z. Naive (offset-less) timestamps are rejected. |
end | string | no | Window end — RFC3339 UTC. Must be after start. |
offset | integer | no | Rows to skip (pagination). |
limit | integer | no | Maximum 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-Keyheader for safe retries (24-hour replay). Returns409 conflict_safe_modewhile 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-Keyheader for safe retries (24-hour replay). Returns409 conflict_safe_modewhile 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 parameter | Type | Required | Description |
|---|---|---|---|
unread_only | boolean | no | Return only unread notifications. |
offset | integer | no | Rows to skip (pagination). |
limit | integer | no | Maximum 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-Keyheader for safe retries (24-hour replay). Returns409 conflict_safe_modewhile 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-Keyheader for safe retries (24-hour replay). Returns409 conflict_safe_modewhile 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-Keyheader for safe retries (24-hour replay). Returns409 conflict_safe_modewhile 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 '{ ... }'