JouloDocs

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.

POST
/partner/chargers/disable
AuthorizationBearer <token>

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

charger_idstring

The BlueBird charger id you sent as charger_id at upload. Any usual spelling of the MAC address works.

transferred_at?string | null

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.

Formatdate-time

Response 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"
}