Disable a charger that changed owner
For a charger you pre-coupled at upload (charger_brand bluebird) that now belongs to someone else, for example because it was sold. We disable it on your current customer's account, so their sync stops and the charger_id is free for your next upload. Sessions that started at or after transferred_at belong to the new owner. We void them on the old account, except a session already in an ERE batch. The new owner's account books nothing that starts before history_from. Call this before you upload the new owner, or the upload rejects the charger as charger_claimed. Idempotent per charger: a second call returns the first hand-over and changes nothing.
Partner API key, sent as Authorization: Bearer <key>. Production keys start with jpk_live_ and work only on https://api.joulo.nl. Sandbox keys start with jpk_test_ and work only on https://api-staging.joulo.nl. Sandbox keys minted before September 2026 also start with jpk_live_. A key used on the wrong host returns 401 with a detail. A key is bound to one partner and reaches only the Partner API routes. Any other route returns 404 when it does not exist. A route that needs a scope the key lacks, such as GET /sessions, returns 403 with error: Insufficient scope and a required_scope. Every other route returns 403 with error: partner_api_key_scope. Mint and revoke keys in the partner portal. A partner has one active key at a time.
In: header
The BlueBird charger id you sent as charger_id at upload. Any usual spelling of the MAC address works.
When the charger changed owner, with a time zone (Z or an offset). Optional: without it, the hand-over is now. It may lie in the past, but not before your customer linked the charger.
date-timeResponse Body
curl -X POST "https://api.joulo.nl/functions/v1/api/partner/chargers/disable" \ -H "Content-Type: application/json" \ -d '{ "charger_id": "88:13:bf:28:7a:d4", "transferred_at": "2026-10-28T12:00:00+01:00" }'{
"ok": true,
"charger_id": "88:13:bf:28:7a:d4",
"already_disabled": false,
"disabled_at": "2026-11-04T09:12:31.204118+00:00",
"transferred_at": "2026-10-28T11:00:00+00:00",
"history_from": "2026-10-28T11:00:00+00:00",
"voided_sessions": 4,
"kept_sessions": 0
}{
"error": "naive_timestamp",
"detail": "transferred_at needs a time zone: Z or an offset such as +02:00."
}{
"error": "Missing or invalid API token"
}{
"error": "charger_not_found",
"detail": "No BlueBird charger with this charger_id that you pre-coupled for an active customer."
}{
"error": "transferred_at_before_link",
"detail": "transferred_at lies before the customer linked this charger. Check the date, or contact Joulo.",
"linked_at": "2026-05-12T08:41:07.118442+00:00"
}{
"error": "Too many requests",
"retry_after_seconds": 3
}{
"error": "disable_failed",
"detail": "We could not disable the charger. Send the same request again: it is idempotent."
}{
"error": "Authentication is temporarily unavailable, try again shortly"
}