# Retrieve a command log for an EVSE

An EVSE command log is uniquely identified by the combination of EVSE ID and the time it was logged at.

Endpoint: GET /evses/{evse_id}/command_logs/{logged_at}
Version: 2.0
Security: oauth2

## Path parameters:

  - `evse_id` (string, required)
    The ID of the specific EVSE to retrieve.

  - `logged_at` (string, required)
    The time the command was logged.

## Query parameters:

  - `expand` (array)
    Specify a url field to expand into a nested resource.

## Header parameters:

  - `EvEnergy-Version` (number)
    Specify the version of this endpoint to use.

## Response 200 fields (application/json):

  - `url` (string)
    Example: https://api.ev.energy/v2/evses/evse01HSH04KDEWF6Z4DB2J77J74K5/command_logs/2024-04-17T09:39:45.984584Z/

  - `logged_at` (string)
    The date and time when this command was logged by the ev.energy system.

  - `evse` (any)

  - `evse.id` (string, required)
    Unique identifier for the given EVSE.
    Example: evse01HSH04KDEWF6Z4DB2J77J74K5

  - `evse.url` (string, required)
    Example: https://api.ev.energy/v2/evses/evse01HSH04KDEWF6Z4DB2J77J74K5

  - `evse.cpid` (string, required)
    A unique identifier for the chargepoint. The format varies by manufacturer and model.
    Example: SHIR100001

  - `evse.model` (any)

  - `evse.model.id` (string, required)
    Unique identifier for the given EVSE Model.
    Example: emod01HS9A004X5TB5JCMHENB5Z446

  - `evse.model.url` (string, required)
    Example: https://api.ev.energy/v2/evse_models/emod01HS9A004X5TB5JCMHENB5Z446

  - `evse.model.name` (string, required)
    Example: EVWC2S22

  - `evse.model.make` (any)

  - `evse.model.make.id` (string, required)
    Unique identifier for the given EVSE Make.
    Example: emak01HS8FRXKJD5JZZ7ZN6W8H21P8

  - `evse.model.make.url` (string, required)
    Example: https://api.ev.energy/v2/evse_makes/emak01HS8FRXKJD5JZZ7ZN6W8H21P8

  - `evse.model.make.name` (string, required)
    Example: BG SyncEV

  - `evse.model.make.display_name` (string | null)
    The EVSE make name for in-app display. May be null if no display name has been set.
    Example: BG SyncEV

  - `evse.model.make.icon` (string | null)
    A url for an image of the make's logo.
    Example: https://cdn.example.com/volvo.png

  - `evse.model.make.onboarding_url` (string | null)
    A pre-constructed link to initiate onboarding for an EVSE of this make. If it is null, then it cannot be onboarded with model alone. You should filter the list of [EVSE models](ev.energy-API-v2.yaml/paths/~1evse_models/get) by this make and then have the user select their model.
Your `client_id` and the user's `user_id` are automatically included based on your authentication token. If you are using client credentials authentication, the user ID will not be automatically included unless you set the EvEnergy-User header on your request.
    Example: https://api.ev.energy/v2/evse_onboarding?make_id=emak01HN2NJQRGDQP0GBE1F7R6PB3D&user_id=user01HN2NJ9NMRZBXT1H6FT9N7735&client_id=your_client_id

  - `evse.model.make.is_beta` (boolean)
    Whether this EVSE make integration is in beta.
    Example: false

  - `evse.model.make.evse_models` (string)
    A pre-constructed link to a list of EVSE models filtered for this make.
    Example: https://api.ev.energy/v2/evse_models/?make_id=emak01HN2NJQRGDQP0GBE1F7R6PB3D

  - `evse.model.display_name` (string | null)
    The EVSE model name for in-app display. May be null if no display name has been set.
    Example: EVWC2S22

  - `evse.model.onboarding_url` (string | null)
    A pre-constructed link to initiate onboarding for an EVSE with this model. If it is null, then we do not support intergrating with this EVSE and the user will need an integrated vehicle in order for us to be able to track their charging.
Your `client_id` and the user's `user_id` are automatically included based on your authentication token. If you are using client credentials authentication, the user ID will not be automatically included unless you set the EvEnergy-User header on your request.
    Example: https://api.ev.energy/v2/evse_onboarding?model_id=emod01HN2NJHAJJAQD32QJ4QXTDSGW&user_id=user01HN2NJ9NMRZBXT1H6FT9N7735&client_id=your_client_id

  - `evse.user` (any)
    Example: https://api.ev.energy/v2/users/user01HN2NJ9NMRZBXT1H6FT9N7735

  - `evse.user.id` (string, required)
    Unique identifier for the given user.
    Example: user01HN2NJ9NMRZBXT1H6FT9N7735

  - `evse.user.url` (string, required)
    Example: https://api.ev.energy/v2/users/user01HN2NJ9NMRZBXT1H6FT9N7735

  - `evse.user.email` (string)

  - `evse.user.full_name` (string)
    The user's full name.
    Example: Frodo Baggins

  - `evse.user.joined_at` (string)
    The date and time when the user joined the platform.
    Example: 2023-06-15T10:00:00Z

  - `evse.user.terms_consent_datetime` (string | null)
    When the user gave their terms and conditions consent, or null if they have not.
    Example: 2023-06-15T10:00:00Z

  - `evse.user.deleted_at` (string | null)
    When the user's account was deleted, or null if it is still live. Deleted accounts are anonymised, so the remaining fields hold placeholder values rather than the user's data. Reaching a deleted user requires `include_deleted=true`.
    Example: 2024-08-01T12:00:00Z

  - `evse.user.default_location` (any)
    LocationDetail is served when a single user is requested, otherwise Location is served for user lists.

  - `evse.user.default_location.address_1` (string | null)
    First line of address.

  - `evse.user.default_location.address_2` (string | null)
    Second line of address.

  - `evse.user.default_location.postal_code` (string | null)
    Postal Code.

  - `evse.user.default_location.country_code` (string)
    ISO 3166-1 2 letter Country Codes.
    Enum: "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW"

  - `evse.user.default_location.coordinates` (any)

  - `evse.user.default_location.coordinates.latitude` (number, required)
    Example: 51.52576576674041

  - `evse.user.default_location.coordinates.longitude` (number, required)
    Example: -0.08366433371722264

  - `evse.user.default_location.tariff` (any)

  - `evse.user.default_location.tariff.id` (string, required)
    Unique identifier for the given user.
    Example: tari01HN2NJ9NMRZBXT1H6FT9N7735

  - `evse.user.default_location.tariff.url` (string, required)
    Example: https://api.ev.energy/v2/tariffs/tari01HN2NJ9NMRZBXT1H6FT9N7735

  - `evse.user.default_location.tariff.supplier` (any, required)
    The energy company that supplies this tariff.

  - `evse.user.default_location.tariff.supplier.id` (string, required)
    Unique identifier for the given user.
    Example: supl01HN2NJ9NMRZBXT1H6FT9N7735

  - `evse.user.default_location.tariff.supplier.url` (string, required)
    Example: https://api.ev.energy/v2/suppliers/supl01HN2NJ9NMRZBXT1H6FT9N7735

  - `evse.user.default_location.tariff.supplier.name` (string, required)
    Example: Rivendell Renewables

  - `evse.user.default_location.tariff.supplier.icon` (string | null, required)
    Example: https://cdn.example.com/rivendell_renewables.jpg

  - `evse.user.default_location.tariff.supplier.highlighted` (boolean)
    A highlighted supplier is one that is often selected by users.

  - `evse.user.default_location.tariff.name` (string, required)
    Example: Fangorn Biomass

  - `evse.user.default_location.tariff.currency` (string, required)
    Example: GBP

  - `evse.user.default_location.tariff.highlighted` (boolean)
    A highlighted tariff is one that is often selected by users.

  - `evse.user.default_location.tariff.type` (string)
    Enum: "FLAT_RATE", "DUAL_RATE", "THREE_RATE", "DYNAMIC", "EXTERNALLY_MANAGED", "OTHER"

  - `evse.user.default_location.tariff.daily_prices` (object)
    Information about the tariff's prices for different parts of the day.

  - `evse.user.default_location.tariff.daily_prices.peak` (object, required)
    A single price for a certain time range.

  - `evse.user.default_location.tariff.daily_prices.peak.price` (string)
    The price is in major currency units e.g. 0.10 means £0.10.
    Example: 0.10

  - `evse.user.default_location.tariff.daily_prices.peak.times` (array)

  - `evse.user.default_location.tariff.timezone_name` (string)
    Example: Europe/London

  - `evse.user.default_location.tariff.price_chart_url` (string | null)
    The url of a website which can display a chart of prices for the tariff. This website is an external resource and is not affiliated with ev.energy.
    Example: https://www.example.com/

  - `evse.user.default_location.tariff.gsp_group` (string | null)
    The GB Grid Supply Point (DNO region) the tariff applies to. Suppliers publish region-specific rates, so the same named tariff can appear once per region with differing prices; this field distinguishes them. `null` for tariffs that are not region-specific.
    Example: _C

  - `evse.user.default_location.tariff.valid_from` (string)
    The date from which this tariff became available to new customers.
    Example: 2026-03-17

  - `evse.user.default_location.tariff.valid_until` (string | null)
    The date after which this tariff is no longer available to new customers (it has been superseded). `null` if the tariff is still open to new sign-ups. Use the `valid` query parameter to filter the list to only currently-available tariffs.
    Example: 2027-03-17

  - `evse.user.default_location.tariff.scheduler_tariff` (any)
    The tariff used by the scheduler for charge optimisation, which may differ from the billing tariff. Returns a URL by default, or null if not set. Expandable with ?expand=scheduler_tariff to return a TariffBase object (additional fields may be present beyond those listed here).

  - `evse.user.default_location.tariff.scheduler_tariff.id` (string, required)

  - `evse.user.default_location.tariff.scheduler_tariff.url` (string, required)

  - `evse.user.default_location.tariff.scheduler_tariff.supplier` (string, required)

  - `evse.user.default_location.tariff.scheduler_tariff.name` (string, required)

  - `evse.user.default_location.tariff.scheduler_tariff.currency` (string, required)

  - `evse.user.default_location.city` (string | null)

  - `evse.user.default_location.state` (string | null)

  - `evse.user.default_location.evse_site` (any)
    If null, the user's location is not an EVSE Site. Otherwise, this field references the site they are a part of.

  - `evse.user.default_location.evse_site.id` (string, required)

  - `evse.user.default_location.evse_site.url` (string, required)
    Example: https://api.ev.energy/v2/evse_sites/site01JX2SZ0WAFTDYVYY0JRAYREY7

  - `evse.user.default_location.evse_site.evses` (array, required)
    A list of all EVSEs that are currently associated with this site.

  - `evse.user.default_location.evse_site.cpms_connection` (string | null, required)
    The type of ChargePoint Management System that this site is connected to, if there is one.
    Enum: null, "CHARGEPOINT", "SWTCH"

  - `evse.user.default_location.evse_site.cpms_connection_display_name` (string | null)
    A human-readable name for the Chargepoint Management System that the site is connected to.
    Example: ChargePoint

  - `evse.user.default_location.evse_site.user_connected` (boolean | null)
    When authenticated as a specific user (eg. via the Authorisation Code grant type) or when the EvEnergy-User header is set to a valid user ID, this field will indicate whether the user is currently connected to this EVSE Site's CPMS. If the request is not made in the context of a user, or the site does not have a CPMS connection, this field will be null.

  - `evse.user.default_location.current_carbon_intensity_grams_per_kilowatt_hour` (integer | null)
    The current carbon intensity associated with the location in gCO2/kWh.
    Example: 300

  - `evse.user.vehicles` (array)

  - `evse.user.evses` (array)

  - `evse.latest_status_log` (any)
    An expandable reference to the most recent status log for this EVSE. This can be requested or expanded to get the most accurate information we have on the device's current status.
**Inferring reachability:** v2 deliberately does not expose a discrete `online`/`offline` state on the EVSE resource — the boundary is fuzzy and prone to misuse. To decide whether an EVSE is currently reachable, expand `latest_status_log` (or fetch it separately) and compare its `sampled_at` timestamp against your own staleness threshold (for example: a charger silent for more than 15 minutes is likely unreachable).
    Example: https://api.ev.energy/v2/evse/evse01HSH04KDEWF6Z4DB2J77J74K5/status_logs/2024-01-01T11:11:11.1111Z/

  - `evse.latest_status_log.url` (string)
    Example: https://api.ev.energy/v2/evse/evse01HSH04KDEWF6Z4DB2J77J74K5/status_logs/2024-01-01T11:11:11.1111Z/

  - `evse.latest_status_log.sampled_at` (string)
    The date and time this status information was sampled on the EVSE.

  - `evse.latest_status_log.logged_at` (string)
    The date and time when this data was recorded. Likely to be later than `sampled_at`, but how much later depends on the integration and other factors.

  - `evse.latest_status_log.evse` (any)

  - `evse.latest_status_log.is_plugged_in` (boolean | null)
    Is there currently a vehicle connected to the EVSE? Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.is_charging` (boolean | null)
    Is the EVSE currently delivering charge? Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.charge_rate_watts` (integer | null)
    The current rate of charge delivery, in watts. Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.export_power_watts` (integer | null)
    Power flowing from the vehicle to the grid (V2X), in watts. Will be null when the EVSE does not report export power or is not bidirectional.

  - `evse.latest_status_log.control_pilot_status` (string | null)
    The SAE J1772 Control Pilot state of the EVSE. Will be null if we are unable to get this information from the EVSE integration.
- `A`: Standby (no vehicle connected).
- `B`: Vehicle detected (plugged in, not charging).
- `C`: Ready / charging (drawing power, no ventilation required).
- `D`: Charging with ventilation required.
- `E`: No power (shut off).
- `F`: Error / fault.
    Enum: "A", "B", "C", "D", "E", "F", null

  - `evse.latest_status_log.meter_reading_watt_hours` (integer | null)
    The meter reading in watt hours. Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.is_enabled` (boolean | null)
    Whether the EVSE is enabled (free-vend mode). Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.max_current_rating_milliamps` (integer | null)
    The maximum current the EVSE will allow the car to draw, in milliamps. Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.cable_current_rating_milliamps` (integer | null)
    The maximum current the cable is rated for, in milliamps. Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.signal_strength_rssi_dbm` (integer | null)
    The signal strength (RSSI) the EVSE reported, in dBm. Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.inlet_power_watts` (integer | null)
    Power measured by the EVSE at the property supply inlet, in watts. Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.voltage_millivolts` (integer | null)
    Voltage measured by the EVSE, in millivolts. Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.state_of_charge_percentage` (integer | null)
    Battery charge level as a percentage, as received via the EVSE. Will be null if we are unable to get this information from the EVSE integration.

  - `evse.latest_status_log.mode` (string | null)
    Operating mode reported by the EVSE. Will be null if we are unable to get this information from the EVSE integration.
    Enum: null, "Unknown", "Idle", "Delay", "Charge", "Discharge", "FFR", "Load match", "Export match", "Peak time", "Deep sleep"

  - `evse.ct_clamp` (any)
    An expandable reference to the CT clamp associated with this EVSE. Will be null if no CT clamp is installed.

  - `evse.ct_clamp.id` (string)
    Unique identifier for the given CT clamp.
    Example: ctcl01HSH04KDEWF6Z4DB2J77J74K5

  - `evse.ct_clamp.url` (string)
    Example: https://api.ev.energy/v2/ct_clamps/ctcl01HSH04KDEWF6Z4DB2J77J74K5

  - `evse.ct_clamp.evse` (any)
    The EVSE associated with this CT clamp. Will be null if not linked to an EVSE.

  - `evse.ct_clamp.calibration_factor` (integer)
    Calibration multiplier for current readings. A value of -1 indicates the clamp was fitted the wrong way around.
    Example: 1

  - `evse.lock_mode` (string | null)
    Lock mode of the EVSE. `UNLOCKED` allows free charging, `SMART` only allows charging within smart-charging hours, `LOCKED` blocks all charging.
    Enum: "UNLOCKED", "SMART", "LOCKED", null

  - `evse.location` (object | null)
    The geographic location of the EVSE as a latitude/longitude point.
**Why smart charging needs it:** the location tells ev.energy which electricity grid the charger sits on, which drives the core smart-charging decisions:
- **Carbon optimisation** — selects the local carbon-intensity feed so charging is shifted to the lowest-carbon periods.
- **Timezone** — resolves the charger's timezone so time-of-day charging schedules and tariff windows are applied in local time.
- **Programs and solar** — determines the eligible grid/demand-response programs and the relevant solar forecast.

Without an accurate location the scheduler cannot reliably optimise charging for cost and carbon.
**When it is set:** during commissioning, where the supplied postcode/address is geocoded to a latitude/longitude (or, for app-linked chargers, copied from the owner's home location). It can be corrected later via `PATCH`. Null when the location has not yet been determined.
    Example: {"latitude":51.5074,"longitude":-0.1278}

  - `evse.location.latitude` (number, required)
    Example: 51.5074

  - `evse.location.longitude` (number, required)
    Example: -0.1278

  - `evse.lifecycle_state` (string | null)
    The most recently recorded stage of the EVSE's onboarding lifecycle. Null when no stage has been recorded for it yet, which is normal for a charger that has only just been created.
    Enum: "CREATED_LINKED", "INSTALLED", "COMMISSIONED", "DECOMMISSIONED", "UNKNOWN", "PROBABLY_INSTALLED", "UNPAIRED", "PENDING", "ENROLLED", null

  - `evse.charging_sub_sessions` (string)
    Provides a pre-constructed URL to list charging sub-sessions involving this EVSE.
    Example: https://api.ev.energy/charging_sub_sessions/?evse_id=evse01HSH04KDEWF6Z4DB2J77J74K5

  - `max_load_target_milliamps` (integer | null)
    The target maximum load sent to the EVSE, in milliamps.
    Example: 32000

  - `is_enabled_target` (boolean | null)
    The target state sent for is_enabled (i.e. free-vend mode).
    Example: true

  - `always_enabled` (boolean | null)
    Whether the EVSE should always be in is_enabled (i.e. free-vend) mode.
    Example: false

  - `reason` (string | null)
    The reason the command was sent to the EVSE.
    Enum: "SCHEDULED_CHARGING", "REFRESH_SCHEDULES", "STOP_CHARGE", "START_CHARGE", "SOLAR_CHARGE_NIGHTTIME_CHARGE_RATE", "API_TRIGGERED_COMMAND", "COMMISSIONING", "CHARGING_SESSION", "VEHICLE_TO_HOME", "FREE_VEND", "MAINTAIN_EVSE_STATE", "CREATE_HOME_CHARGER", "LOCKED_MODE", "SMART_CHARGE_ENABLED_CHANGED", "SMART_CHARGE_ENABLED", "SMART_CHARGE_DISABLED"

  - `internal_command_id` (string | null)
    Internal UUID to track this command dispatch. This links with device command logs.
    Example: d4e5f6a7-b8c9-0123-def0-123456789abc

## Response 400 fields (application/problem+json):

  - `type` (string)
    Example: https://api.ev.energy/v2/problems/example-problem/

  - `status` (number)
    Example: 400

  - `title` (string, required)
    Example: Short description

  - `detail` (string, required)
    Example: Long, more specific description.

  - `instance` (string)
    Example: https://api.ev.energy/v2/users/user01HN2P75GBNFRJPCZJXEFVXH5E

  - `notification` (object)
    Something that the user should be informed about.

  - `notification.id` (string, required)
    Unique identifier for the Notification
    Example: notf67O36PLTFDB57M0E5L33JZLGM0

  - `notification.url` (string, required)
    Example: https://api.ev.energy/notifications/notf67O36PLTFDB57M0E5L33JZLGM0

  - `notification.message_id` (string, required)
    Internal identifier for this notification type. E.g. 'ERR0023'

  - `notification.category` (string, required)
    Category of this notification type
    Enum: "ACTIONABLE", "SERVICE", "RETRY", "MARKETING", "INTERNAL"

  - `notification.event_time` (string, required)
    The timestamp of the event described by this notification

  - `notification.short_text_title` (string, required)
    Short title for the notification

  - `notification.short_text_body` (string, required)
    Short description of the event being notified

  - `notification.detail_page_title` (string, required)
    Title of a help page giving more information about this notification

  - `notification.detail_page_body` (string, required)
    Text of a help page giving more information about this notification

  - `notification.external_link` (string | null, required)
    URL of a web page giving further information about this notification

  - `notification.external_button_label` (string, required)
    Text to be displayed on a button leading to the external_link location

  - `notification.read_at` (string)
    When the user examined the contents of this notification

  - `notification.resolved_at` (string)
    When the problem associated with this notification was resolved

## Response 401 fields (application/problem+json):

  - `status` (number)
    Example: 401

  - `title` (string, required)
    Example: Unauthorized

  - `detail` (string, required)
    Example: Authentication credentials were not provided.

## Response 403 fields (application/problem+json):

  - `status` (number)
    Example: 403

  - `title` (string, required)
    Example: Forbidden

  - `detail` (string, required)
    Example: You do not have permission to perform this action.

## Response 404 fields (application/problem+json):

  - `status` (number)
    Example: 404

  - `title` (string, required)
    Example: Not found

  - `detail` (string, required)
    Example: Resource does not exist or cannot be accessed.

## Response 406 fields (application/problem+json):

  - `status` (number)
    Example: 406

  - `title` (string, required)
    Example: Not Acceptable

  - `detail` (string, required)
    Example: Could not satisfy the request Accept header.

## Response 429 fields (application/problem+json):

  - `type` (string)
    Example: https://api.ev.energy/v2/problems/example-problem/

  - `status` (number)
    Example: 400

  - `title` (string, required)
    Example: Short description

  - `detail` (string, required)
    Example: Long, more specific description.

  - `instance` (string)
    Example: https://api.ev.energy/v2/users/user01HN2P75GBNFRJPCZJXEFVXH5E

  - `notification` (object)
    Something that the user should be informed about.

  - `notification.id` (string, required)
    Unique identifier for the Notification
    Example: notf67O36PLTFDB57M0E5L33JZLGM0

  - `notification.url` (string, required)
    Example: https://api.ev.energy/notifications/notf67O36PLTFDB57M0E5L33JZLGM0

  - `notification.message_id` (string, required)
    Internal identifier for this notification type. E.g. 'ERR0023'

  - `notification.category` (string, required)
    Category of this notification type
    Enum: "ACTIONABLE", "SERVICE", "RETRY", "MARKETING", "INTERNAL"

  - `notification.event_time` (string, required)
    The timestamp of the event described by this notification

  - `notification.short_text_title` (string, required)
    Short title for the notification

  - `notification.short_text_body` (string, required)
    Short description of the event being notified

  - `notification.detail_page_title` (string, required)
    Title of a help page giving more information about this notification

  - `notification.detail_page_body` (string, required)
    Text of a help page giving more information about this notification

  - `notification.external_link` (string | null, required)
    URL of a web page giving further information about this notification

  - `notification.external_button_label` (string, required)
    Text to be displayed on a button leading to the external_link location

  - `notification.read_at` (string)
    When the user examined the contents of this notification

  - `notification.resolved_at` (string)
    When the problem associated with this notification was resolved

