# Retrieve schedules for a charging sub-session

Retrieve schedules for a specific charging sub-session.

Schedules represent charging instructions for a charging session. Each schedule specifies a current (in milliamps) and a time period during which that current should be applied.

Endpoint: GET /charging_sub_sessions/{charging_sub_session_id}/schedules
Version: 2.0
Security: oauth2

## Path parameters:

  - `charging_sub_session_id` (string, required)
    Uniquely identify a specific charging sub-session.

## Query parameters:

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

  - `started_at__gte` (string)
    Filter schedules with started_at greater than or equal to this datetime.

  - `started_at__lte` (string)
    Filter schedules with started_at less than or equal to this datetime.

  - `schedule_plan_id` (string)
    Filter schedules generated from a specific schedule plan.

  - `only_most_recently_created` (boolean)
    Only show the most recently created schedule for each time period

## 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/charging_sub_sessions/csub01HSH04KDEWF6Z4DB2J77J74K5/schedules

  - `charging_sub_session` (any)
    The charging sub-session these schedules belong to. Defaults to a url, but can be expanded to the full ChargingSubSession resource via the `expand` query parameter.

  - `charging_sub_session.id` (string, required)
    Unique identifier for the given Charging sub-session.
    Example: csub01HSH04KDEWF6Z4DB2J77J74K5

  - `charging_sub_session.url` (string, required)
    Example: https://api.ev.energy/v2/charging_sub_sessions/csub01HSH04KDEWF6Z4DB2J77J74K5

  - `charging_sub_session.start` (string, required)
    When this sub-session began — either when the vehicle was plugged in, or when the charging mode changed (e.g. the user activated boost). Not necessarily when energy started flowing; see the energy_usage endpoint for actual delivery intervals.

  - `charging_sub_session.end` (string | null, required)
    When this sub-session ended — either when the vehicle was unplugged, or when the charging mode changed again. Null while the sub-session is ongoing. Energy delivery often finishes well before this time (e.g. once the target charge level is reached).

  - `charging_sub_session.mode` (string, required)
    The type of scheduling applied during this period.
SMART: Actively optimised charging
BOOST: Charge immediately
UNMANAGED_HOME: No optimisation, at a home location
UNMANAGED_OTG: No optimisation, at an on-the-go (public) location
MANAGED_OTG: Optimised charging at an on-the-go (public) location
    Enum: "SMART", "BOOST", "UNMANAGED_HOME", "UNMANAGED_OTG", "MANAGED_OTG"

  - `charging_sub_session.vehicle` (any)

  - `charging_sub_session.vehicle.id` (string, required)
    Unique identifier for the given Vehicle.
    Example: vhcl01HRFF3SEVSCRAV9B3CHVDFN0H

  - `charging_sub_session.vehicle.url` (string, required)
    Example: https://api.ev.energy/v2/vehicles/vhcl01HRFF3SEVSCRAV9B3CHVDFN0H

  - `charging_sub_session.vehicle.trim` (any)
    Defaults to a url, but can be expanded to the full Trim resource via the `expand` query parameter.

  - `charging_sub_session.vehicle.trim.id` (string, required)
    Unique identifier for the given Vehicle Trim.
    Example: trim01HRFHBCM7VBSWRPVYFBQMH2BR

  - `charging_sub_session.vehicle.trim.url` (string, required)
    Example: https://api.ev.energy/v2/vehicle_trim/trim01HRFHBCM7VBSWRPVYFBQMH2BR

  - `charging_sub_session.vehicle.trim.name` (string, required)
    Example: Recharge Core (69 kWh)

  - `charging_sub_session.vehicle.trim.model` (any)

  - `charging_sub_session.vehicle.trim.model.id` (string, required)
    Unique identifier for the given Vehicle Model.
    Example: vmod01HSBR8Z36GD7A46K7M4R12VG0

  - `charging_sub_session.vehicle.trim.model.url` (string, required)
    Example: https://api.ev.energy/vehicle_models/vmod01HSBR8Z36GD7A46K7M4R12VG0

  - `charging_sub_session.vehicle.trim.model.name` (string, required)
    Example: C40

  - `charging_sub_session.vehicle.trim.model.make` (any)

  - `charging_sub_session.vehicle.trim.model.make.id` (string, required)
    Unique identifier for the given Vehicle Make.
    Example: vmak01HRFHBCM7VBSWRPVYFBQMH2BR

  - `charging_sub_session.vehicle.trim.model.make.url` (string, required)
    Example: https://api.ev.energy/v2/vehicle_makes/vmak01HRFHBCM7VBSWRPVYFBQMH2BR

  - `charging_sub_session.vehicle.trim.model.make.name` (string, required)
    Example: Volvo

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

  - `charging_sub_session.vehicle.trim.model.make.onboarding_url` (string | null, required)
    A pre-constructed link to initiate onboarding for a vehicle of this make. If it is null, then it cannot be onboarded with make alone. You should filter the list of [vehicle models](ev.energy-API-v2.yaml/paths/~1vehicle_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/vehicle_onboarding/?make_id=vmak01HN2P75GBNFRJPCZJXEFVXH5E&user_id=user01HN2NJ9NMRZBXT1H6FT9N7735&client_id=your_client_id

  - `charging_sub_session.vehicle.trim.model.make.models` (string, required)
    A pre-constructed link to a list of vehicle models filtered for this make.
    Example: https://api.ev.energy/vehicle_models?make_id=vmak01HN2P75GBNFRJPCZJXEFVXH5E

  - `charging_sub_session.vehicle.trim.model.make.subscription_name` (string | null)
    Full OEM telematics subscription name required for vehicle connectivity (e.g. 'Volkswagen We Connect ID'). Null if no subscription is required.
    Example: Volkswagen We Connect ID

  - `charging_sub_session.vehicle.trim.model.make.subscription_package` (string | null)
    Specific OEM subscription package required (e.g. 'We Connect ID'). Null if no subscription is required.
    Example: We Connect ID

  - `charging_sub_session.vehicle.trim.model.onboarding_url` (string | null)
    A pre-constructed link to initiate onboarding for a vehicle of this model. If it is null, then it cannot be onboarded with model alone. You should filter the list of [vehicle trims](ev.energy-API-v2.yaml/paths/~1vehicle_trims/get) by this model and then have the user select their trim.
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/vehicle_onboarding?model_id=vmod01HN2P436099PEQ20B7TKPGTEJ&user_id=user01HN2NJ9NMRZBXT1H6FT9N7735&client_id=your_client_id

  - `charging_sub_session.vehicle.trim.model.vehicle_trims` (string)
    A pre-constructed link to a list of vehicle trims filtered for this model.
    Example: https://api.ev.energy/v2/vehicle_trims?model_id=vmod01HN2P436099PEQ20B7TKPGTEJ

  - `charging_sub_session.vehicle.trim.model.default_battery_size_watt_hours` (integer, required)
    Default battery size in watt-hours for this model, derived from the most common battery size across trims. Falls back to 45000 Wh if no trim data exists.
    Example: 79000

  - `charging_sub_session.vehicle.trim.battery_size_watt_hours` (integer | null)
    Battery size in watt-hours. null if not known for this trim.
    Example: 75500

  - `charging_sub_session.vehicle.trim.onboarding_url` (string | null, required)
    A pre-constructed link to initiate onboarding for a vehicle with this trim. If it is null, then we do not support intergrating with this vehicle and you should POST the trim to [/vehicles](ev.energy-API-v2.yaml/paths/~1vehicles/post) to create an unintegrated vehicle.
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/vehicle_onboarding?trim_id=trim01HN2NZ1040Y8E77CQGXADC2TZ&user_id=user01HN2NJ9NMRZBXT1H6FT9N7735&client_id=your_client_id

  - `charging_sub_session.vehicle.user` (any)
    Defaults to a url, but can be expanded to the full User resource via the `expand` query parameter.
    Example: https://api.ev.energy/v2/users/user01HN2NJ9NMRZBXT1H6FT9N7735

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

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

  - `charging_sub_session.vehicle.user.email` (string)

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

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

  - `charging_sub_session.vehicle.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

  - `charging_sub_session.vehicle.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

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

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

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

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

  - `charging_sub_session.vehicle.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"

  - `charging_sub_session.vehicle.user.default_location.coordinates` (any)

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

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

  - `charging_sub_session.vehicle.user.default_location.tariff` (any)

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

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

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

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

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

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

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

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

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

  - `charging_sub_session.vehicle.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/

  - `charging_sub_session.vehicle.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

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

  - `charging_sub_session.vehicle.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

  - `charging_sub_session.vehicle.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).

  - `charging_sub_session.vehicle.user.default_location.city` (string | null)

  - `charging_sub_session.vehicle.user.default_location.state` (string | null)

  - `charging_sub_session.vehicle.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.

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

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

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

  - `charging_sub_session.vehicle.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"

  - `charging_sub_session.vehicle.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

  - `charging_sub_session.vehicle.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.

  - `charging_sub_session.vehicle.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

  - `charging_sub_session.vehicle.user.vehicles` (array)

  - `charging_sub_session.vehicle.user.evses` (array)

  - `charging_sub_session.vehicle.latest_status_log` (any)
    An expandable reference to the most recent status log for this Vehicle. This can be requested or expanded to get the most accurate information we have on the device's current status.
    Example: https://api.ev.energy/v2/vehicles/vhcl01HRFF3SEVSCRAV9B3CHVDFN0H/status_logs/2024-04-17T09:39:45.994584Z/

  - `charging_sub_session.vehicle.latest_status_log.url` (string)
    Example: https://api.ev.energy/v2/vehicles/vhcl01HRFF3SEVSCRAV9B3CHVDFN0H/status_logs/2024-01-01T11:11:11.1111Z/

  - `charging_sub_session.vehicle.latest_status_log.logged_at` (string)
    The date and time this status information was received and stored.

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

  - `charging_sub_session.vehicle.latest_status_log.vehicle` (any)

  - `charging_sub_session.vehicle.latest_status_log.state_of_charge_percentage` (integer | null)
    How full the vehicle's battery is, as a percentage. Will be null if we are unable to get this information from the vehicle's telematics.
    Example: 70

  - `charging_sub_session.vehicle.latest_status_log.is_charging` (boolean | null)
    Is the vehicle currently receiving charge? Will be null if we are unable to get this information from the vehicle's telematics.

  - `charging_sub_session.vehicle.latest_status_log.is_plugged_in` (boolean | null)
    Is the vehicle currently connected to an EVSE? Will be null if we are unable to get this information from the vehicle's telematics.

  - `charging_sub_session.vehicle.latest_status_log.charge_rate_watts` (integer | null)
    The current rate of charge being received, in watts. Will be null if we are unable to get this information from the Vehicle integration.

  - `charging_sub_session.vehicle.latest_status_log.estimated_charge_rate_watts` (integer | null)
    The charge rate in watts estimated from the change in battery charge level. Useful when the Vehicle integration does not report charge_rate_watts directly. Will be null if it cannot be estimated.

  - `charging_sub_session.vehicle.latest_status_log.charge_level_watt_hours` (integer | null)
    The battery charge level in watt hours. Will be null if we are unable to get this information from the Vehicle integration.

  - `charging_sub_session.vehicle.latest_status_log.target_charge_level_percentage` (integer | null)
    The target charge level as a percentage. Will be null if we are unable to get this information from the Vehicle integration.

  - `charging_sub_session.vehicle.latest_status_log.target_charge_level_watt_hours` (integer | null)
    The target charge level in watt hours. Will be null if we are unable to get this information from the Vehicle integration.

  - `charging_sub_session.vehicle.latest_status_log.charge_energy_added_watt_hours` (integer | null)
    The amount of energy added during the most recent charge, as reported by the vehicle, in watt hours. Will be null if we are unable to get this information from the Vehicle integration.

  - `charging_sub_session.vehicle.latest_status_log.minutes_to_full_charge` (integer | null)
    The number of minutes the vehicle predicts until it is fully charged. Will be null if we are unable to get this information from the Vehicle integration.

  - `charging_sub_session.vehicle.latest_status_log.current_type` (string | null)
    The current type of the EVSE the vehicle is connected to (AC or DC). Will be null if we are unable to get this information from the Vehicle integration.
    Enum: "AC - Typically home chargers", "DC - Typically OTG chargers", null

  - `charging_sub_session.vehicle.latest_status_log.is_complete` (boolean | null)
    Whether the vehicle has reached the target charge level. Will be null if we are unable to get this information from the Vehicle integration.

  - `charging_sub_session.vehicle.latest_status_log.odometer_meters` (integer | null)
    The vehicle's odometer reading in meters. Will be null if we are unable to get this information from the Vehicle integration.

  - `charging_sub_session.vehicle.latest_status_log.data_source` (string | null)
    The integration that originated this data.

  - `charging_sub_session.vehicle.latest_status_log.state` (string | null)
    The state of the vehicle. Will be null if we are unable to get this information from the Vehicle integration.
    Enum: "DRIVING", "RECENTLY_FINISHED_DRIVING", "STATIONARY", "IN_SERVICE", "PLUGGED_IN_NOT_CHARGING", "PLUGGED_IN_CHARGING", "PLUGGED_IN_COMPLETE", "PLUGGED_IN_NEAR_READY_BY_TIME", "PLUGGED_IN_ALMOST_COMPLETE", "UNKNOWN", null

  - `charging_sub_session.vehicle.charging_sub_sessions` (string)
    Provides a pre-constructed URL to list charging sub-sessions involving this Vehicle.
    Example: https://api.ev.energy/charging_sub_sessions/?vehicle_id=vhcl01HRFF3SEVSCRAV9B3CHVDFN0H

  - `charging_sub_session.vehicle.integrated` (string, required)
    Whether we have an integration with this vehicle.
- `UNINTEGRATED`: This vehicle is not integrated
- `ACTIVE`: This vehicle is integrated and the connection is working.
- `INACTIVE`: This vehicle has been integrated but the connection has been severed, usually because the user needs to reconnect it.
    Enum: "UNINTEGRATED", "ACTIVE", "INACTIVE"

  - `charging_sub_session.vehicle.battery_size_watt_hours` (integer, required)
    The nominal battery capacity of the vehicle in watt-hours according to the vehicle integration or trim. Editable via PATCH only for unintegrated vehicles; sending it for an integrated vehicle is rejected. Setting it flags the battery size as user-provided. Stored to the nearest 0.01 kWh (10 Wh), so the value read back may be rounded.
    Example: 60000

  - `charging_sub_session.vehicle.effective_battery_size_watt_hours` (integer, required)
    The effective battery capacity of the vehicle in watt-hours, accounting for estimated degradation based on odometer reading. This is the value used by the smart charging scheduler.
    Example: 60000

  - `charging_sub_session.vehicle.maximum_charge_limit_percentage` (integer, required)
    The target state of charge of the car as a percentage between 50 and 100. The car will not be smart charged above this value. Can be null if target charge level has not been set or we don't know the car's battery size.

  - `charging_sub_session.vehicle.description` (string, required)
    Human-readable label for the vehicle.
    Example: My Volvo C40

  - `charging_sub_session.vehicle.disabled` (boolean, required)
    Whether the vehicle has been disabled and can no longer be smart-charged or controlled. Set when the user unenrolls the vehicle, when an integrated vehicle is switched to unintegrated ('dumb'), or when the owning account is pending deletion. Disabled vehicles that have not been permanently deleted are still returned by this endpoint. This is independent of integrated: a disabled vehicle can still report integrated=ACTIVE (e.g. pending deletion), and a healthy never-integrated vehicle is not disabled.
    Example: false

  - `charging_sub_session.vehicle.smart_charging_enabled` (boolean, required)
    Whether smart (dynamic) charging is enabled for this vehicle.
    Example: true

  - `charging_sub_session.vehicle.vehicle_class` (string | null, required)
    Class of vehicle, passenger or commercial.
    Enum: "PASSENGER", "COMMERCIAL", null

  - `charging_sub_session.evse` (any)

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

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

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

  - `charging_sub_session.evse.model` (any)

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

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

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

  - `charging_sub_session.evse.model.make` (any)

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

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

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

  - `charging_sub_session.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

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

  - `charging_sub_session.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

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

  - `charging_sub_session.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

  - `charging_sub_session.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

  - `charging_sub_session.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

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

  - `charging_sub_session.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/

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

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

  - `charging_sub_session.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.

  - `charging_sub_session.evse.latest_status_log.evse` (any)

  - `charging_sub_session.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.

  - `charging_sub_session.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.

  - `charging_sub_session.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.

  - `charging_sub_session.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.

  - `charging_sub_session.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

  - `charging_sub_session.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.

  - `charging_sub_session.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.

  - `charging_sub_session.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.

  - `charging_sub_session.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.

  - `charging_sub_session.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.

  - `charging_sub_session.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.

  - `charging_sub_session.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.

  - `charging_sub_session.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.

  - `charging_sub_session.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"

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

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

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

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

  - `charging_sub_session.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

  - `charging_sub_session.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

  - `charging_sub_session.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}

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

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

  - `charging_sub_session.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

  - `charging_sub_session.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

  - `charging_sub_session.energy_delivered_watt_hours` (integer, required)
    Net energy delivered to the vehicle during this sub-session in Wh.
    Example: 2300

  - `charging_sub_session.cost` (integer | null, required)
    Example: 634

  - `charging_sub_session.location` (object, required)

  - `charging_sub_session.location.name` (string)
    Example: Home

  - `charging_sub_session.location.postal_code` (string | null)

  - `charging_sub_session.location.address_1` (string | null)

  - `charging_sub_session.location.timezone` (string | null)
    IANA timezone name for the charging location.
    Example: Europe/London

  - `charging_sub_session.percentage_added` (number | null)
    Example: 30

  - `charging_sub_session.currency` (string, required)
    Example: GBP

  - `charging_sub_session.savings_cost` (integer | null)
    Cost Savings in Minor Unit of Currency.

  - `charging_sub_session.savings_co2_grams` (integer | null)
    Savings of Carbon in Grams of CO2.

  - `charging_sub_session.incentive_earned` (integer | null)
    Incentive earned in minor unit of currency.
    Example: 99

  - `charging_sub_session.total_co2_grams` (integer | null, required)
    Estimated total CO2 emissions of this sub-session in grams

  - `charging_sub_session.co2_intensity_grams_per_kilowatt_hour` (integer | null, required)
    Estimated CO2 emissions per unit of electricity in grams per kilowatt hour

  - `charging_sub_session.co2_intensity_classification` (any, required)
    Classification of the estimated CO2 intensity value. Can be null.

  - `charging_sub_session.cost_per_kilowatt_hour` (integer | null)
    Average cost per kilowatt hour of energy delivered during this charging sub-session

  - `charging_sub_session.total_points` (integer)
    Number of smart points earned during this charging sub-session

  - `charging_sub_session.total_points_missed` (integer | null)
    Difference between the number of smart points earned in this sub-session and the number that would have been earned by Smart charging

  - `charging_sub_session.duration_minutes` (integer, required)
    How long the vehicle was actively charging for, to the nearest minute. This can be much shorter than the gap between start and end, and does not tell you when within the sub-session energy was delivered — use the energy_usage endpoint for that.

  - `charging_sub_session.grid_energy_delivered_watt_hours` (integer | null, required)
    Grid energy delivered during this charging sub-session in watt hours (Wh).

  - `charging_sub_session.solar_energy_delivered_watt_hours` (integer | null, required)
    Solar energy delivered during this charging sub-session in watt hours (Wh).

  - `charging_sub_session.labels` (array | null)
    Labels categorizing this charging sub-session (e.g., service territory, pricing period).

  - `charging_sub_session.energy_usage` (any)
    A link to more detailed information about energy usage during the charging sub-session, including the intervals in which energy was actually delivered to the vehicle. Can be expanded.

  - `charging_sub_session.energy_usage.url` (string)
    Example: https://api.ev.energy/v2/charging_sub_sessions/csub01HSH04KDEWF6Z4DB2J77J74K5/energy_usage

  - `charging_sub_session.energy_usage.currency` (string)
    The currency that prices for intervals are quoted in. Note that we always use the smallest unit of the currency.
    Example: GBP

  - `charging_sub_session.energy_usage.charging_sub_session` (string)
    Example: https://api.ev.energy/v2/charging_sub_sessions/csub01HSH04KDEWF6Z4DB2J77J74K5

  - `charging_sub_session.energy_usage.intervals` (array)
    A list of energy usage intervals for this charging sub-session.

  - `charging_sub_session.energy_usage.intervals.interval_seconds` (integer)
    The number of seconds that this interval lasts for.

  - `charging_sub_session.energy_usage.intervals.started_at` (string)
    When this interval began.

  - `charging_sub_session.energy_usage.intervals.total_energy_delivered_watt_hours` (integer)
    The total number of watt hours delivered during the interval.

  - `charging_sub_session.energy_usage.intervals.meter_usage_watt_hours` (integer)
    An estimate of the supply meter usage in watt hours during the interval, accounting for charging system losses between the supply meter and the EVSE/Vehicle. Null when not available.

  - `charging_sub_session.energy_usage.intervals.alt_usage_watt_hours` (integer)
    Counterfactual energy usage in watt hours. Represents the estimated energy that would have been delivered during this interval if the vehicle had charged immediately without managed charging. Null when not available.

  - `charging_sub_session.energy_usage.intervals.percentage_import` (integer)
    The percentage of energy imported from the grid during this interval (0-100). Used for calculating costs with home solar.

  - `charging_sub_session.energy_usage.intervals.electricity_cost_sub_unit` (string)
    The electricity rate for this interval, in the smallest sub-unit of the currency (e.g. pence/kWh, cents/kWh). For merged intervals with multiple pricing tiers, this is the sum of the distinct rate values.

  - `charging_sub_session.energy_usage.intervals.energy_delivered_by_price` (object)

  - `charging_sub_session.energy_usage.intervals.energy_delivered_by_price.price` (string)
    The price paid for the energy in the smallest unit of the currency.
    Example: 21.3

  - `charging_sub_session.energy_usage.intervals.energy_delivered_by_price.energy_delivered_watt_hours` (integer)
    Example: 1800

  - `charging_sub_session.energy_usage.last_updated_at` (string)
    The datetime when the energy usages were last updated at.

  - `charging_sub_session.schedules` (any)
    A link to schedule information for the charging sub-session. Can be expanded.

  - `charging_sub_session.schedules.url` (string)
    Example: https://api.ev.energy/v2/charging_sub_sessions/csub01HSH04KDEWF6Z4DB2J77J74K5/schedules

  - `charging_sub_session.schedules.charging_sub_session` (any)
    The charging sub-session these schedules belong to. Defaults to a url, but can be expanded to the full ChargingSubSession resource via the `expand` query parameter.

  - `charging_sub_session.schedules.schedules` (array)
    A list of schedule intervals for this charging sub-session.

  - `charging_sub_session.schedules.schedules.started_at` (string)
    The start time of the period this schedule applies to. Always aligned to half-hour boundaries (:00 or :30).
    Example: 2024-01-01T02:00:00Z

  - `charging_sub_session.schedules.schedules.interval_seconds` (integer | null)
    The duration of this schedule in seconds. Currently always 1800 seconds (30 minutes), or null for boost sessions which have no defined end time.
    Example: 1800

  - `charging_sub_session.schedules.schedules.current_milliamps` (integer)
    The charging current in milliamps that should be applied during this period. A value of 0 means no charging.
    Example: 7400

  - `charging_sub_session.schedules.schedules.schedule_type` (string)
    The type of scheduling that generated this instruction.
- INITIAL_CHARGE_TIME: Initial charge to condition the battery
- BATTERY_WARMING: Pre-warming the hour before the ready-by-time
- SMART: Optimised smart charging
- BOOST: Immediate charging at maximum rate
- SOLAR_ONLY: Charging only from solar generation
- SOLAR_SMART: Combined solar and smart charging
- V2G_DISCHARGE: Vehicle-to-grid discharge
- V2G_CHARGEBACK: Charging back after V2G discharge
- LEGACY: Legacy schedules from before type tracking
    Enum: "INITIAL_CHARGE_TIME", "BATTERY_WARMING", "SMART", "BOOST", "SOLAR_ONLY", "SOLAR_SMART", "V2G_DISCHARGE", "V2G_CHARGEBACK", "LEGACY"

  - `charging_sub_session.schedules.schedules.dispatched_at` (string | null)
    When this schedule was last sent to the device. Null if not yet dispatched.
    Example: 2024-01-01T02:00:15Z

  - `charging_sub_session.schedules.schedules.created_at` (string)
    When this schedule was created.
    Example: 2024-01-01T01:55:00Z

  - `charging_sub_session.assessment` (any)
    A link to the performance assessment for this charging sub-session. Can be expanded. Requires debug:read scope.

  - `charging_sub_session.assessment.url` (string)
    Example: https://api.ev.energy/v2/charging_sub_sessions/csub01HSH04KDEWF6Z4DB2J77J74K5/assessment

  - `charging_sub_session.assessment.charging_sub_session` (any)
    The parent charging sub-session. Defaults to a url, but can be expanded to the full ChargingSubSession resource via the `expand` query parameter.

  - `charging_sub_session.assessment.energy_delivered_to_capacity_percentage` (integer | null)
    Energy delivered as a percentage of battery capacity. Values above 100 indicate overdelivery.
    Example: 85

  - `charging_sub_session.assessment.energy_delivery_percentage` (integer | null)
    Energy delivered as a percentage of energy required.
    Example: 92

  - `charging_sub_session.assessment.average_charge_rate_watts` (integer | null)
    Average charge rate in watts throughout the session.
    Example: 7200

  - `charging_sub_session.assessment.max_charge_rate_watts` (integer | null)
    Maximum charge rate in watts throughout the session.
    Example: 11000

  - `charging_sub_session.assessment.metrics` (object)
    Performance quality metrics for a charging session assessment. All fields are nullable.

  - `charging_sub_session.assessment.metrics.vehicle_data_uptime` (integer | null)
    Vehicle data uptime as a percentage (0-100).
    Example: 95

  - `charging_sub_session.assessment.metrics.vehicle_location_uptime` (integer | null)
    Vehicle location uptime as a percentage (0-100).
    Example: 90

  - `charging_sub_session.assessment.metrics.vehicle_error_rate` (integer | null)
    Vehicle error rate as a percentage (0-100).
    Example: 2

  - `charging_sub_session.assessment.metrics.vehicle_command_adherence` (integer | null)
    Vehicle command adherence as a percentage (0-100).
    Example: 88

  - `charging_sub_session.assessment.metrics.evse_data_uptime` (integer | null)
    EVSE data uptime as a percentage (0-100).
    Example: 98

  - `charging_sub_session.assessment.metrics.evse_command_adherence` (integer | null)
    EVSE command adherence as a percentage (0-100).
    Example: 92

  - `charging_sub_session.assessment.metrics.schedule_quality` (integer | null)
    Time that schedule requested charging but no charge occurred as a percentage (0-100).
    Example: 85

  - `charging_sub_session.assessment.metrics.charge_outside_of_schedule` (integer | null)
    Energy usage outside of schedule as a percentage (0-100).
    Example: 5

  - `charging_sub_session.assessment.metrics.session_duration` (integer | null)
    Session duration.
    Example: 28800

  - `charging_sub_session.assessment.metrics.energy_delivered_vs_required` (integer | null)
    Energy delivered vs required as a percentage (0-100).
    Example: 95

  - `charging_sub_session.assessment.metrics.savings_attainment_rate` (integer | null)
    Savings achieved compared to theoretical maximum as a percentage (0-100).
    Example: 78

  - `charging_sub_session.assessment.metrics.session_savings_range` (integer | null)
    Difference between maximum and minimum theoretical session costs (units of currency).
    Example: 30

  - `charging_sub_session.assessment.metrics.charge_energy_added_meter_reset` (boolean | null)
    Whether a charge energy added meter reset was detected.
    Example: false

  - `charging_sub_session.assessment.metrics.charge_energy_added_oscillation_count` (integer | null)
    Number of charge energy added oscillations.
    Example: 0

  - `charging_sub_session.assessment.metrics.charge_level_oscillation_count` (integer | null)
    Number of charge level oscillations.
    Example: 1

  - `charging_sub_session.assessment.metrics.charge_location_data_at_session_start_minutes` (integer | null)
    Age of charge location data at session start, in minutes.
    Example: 5

  - `charging_sub_session.assessment.metrics.last_location_update_implied_velocity_kmh` (integer | null)
    Implied velocity from last location update, in km/h.
    Example: 0

  - `charging_sub_session.assessment.metrics.distance_from_home_meters` (integer | null)
    Distance from home in meters.
    Example: 15

  - `charging_sub_session.assessment.metrics.missing_location` (boolean | null)
    Whether location data is missing.
    Example: false

  - `charging_sub_session.assessment.metrics.vehicle_median_data_gap_duration_minutes` (integer | null)
    Median vehicle data gap duration in minutes.
    Example: 3

  - `charging_sub_session.assessment.metrics.vehicle_max_data_gap_duration_minutes` (integer | null)
    Maximum vehicle data gap duration in minutes.
    Example: 12

  - `charging_sub_session.assessment.metrics.vehicle_data_frequency_below_threshold` (integer | null)
    Vehicle data frequency below threshold as a percentage (0-100).
    Example: 8

  - `charging_sub_session.assessment.metrics.evse_median_data_gap_duration_minutes` (integer | null)
    Median EVSE data gap duration in minutes.
    Example: 2

  - `charging_sub_session.assessment.metrics.evse_max_data_gap_duration_minutes` (integer | null)
    Maximum EVSE data gap duration in minutes.
    Example: 8

  - `charging_sub_session.assessment.metrics.evse_data_frequency_below_threshold` (integer | null)
    EVSE data frequency below threshold as a percentage (0-100).
    Example: 5

  - `charging_sub_session.assessment.metrics.charge_rate_max_mad_score` (integer | null)
    Maximum MAD score for charge rate.
    Example: 3

  - `charging_sub_session.assessment.metrics.charge_rate_max_median_ratio` (integer | null)
    Charge rate max to median ratio as a percentage (0-100).
    Example: 140

  - `charging_sub_session.assessment.updated_at` (string)
    When the assessment was last updated.

  - `charging_sub_session.flags` (any)
    A link to flags associated with this charging sub-session. Can be expanded.

  - `charging_sub_session.flags.url` (string, required)
    Example: https://api.ev.energy/v2/charging_sub_sessions/csub01HSH04KDEWF6Z4DB2J77J74K5/flags

  - `charging_sub_session.flags.charging_sub_session` (any, required)
    The charging sub-session these flags belong to. Expandable.

  - `charging_sub_session.flags.flags` (array, required)
    A list of flags associated with this charging sub-session.

  - `charging_sub_session.flags.flags.name` (string, required)
    Name describing the type of issue flagged. New values may be added over time.
    Example: ENERGY_OVER_DELIVERY

  - `charging_sub_session.flags.flags.root_cause` (string, required)
    Category describing the root cause of the issue. New values may be added over time.
    Example: CHARGE_MEASUREMENT_OSCILLATION

  - `charging_sub_session.debug_metadata` (any)
    A link to debug metadata for this charging sub-session. Can be expanded. Requires debug:read scope.

  - `charging_sub_session.debug_metadata.url` (string, required)
    Example: https://api.ev.energy/v2/charging_sub_sessions/csub01HSH04KDEWF6Z4DB2J77J74K5/debug_metadata

  - `charging_sub_session.debug_metadata.charging_sub_session` (any, required)
    The charging sub-session this debug metadata belongs to. Expandable.

  - `charging_sub_session.debug_metadata.start_reason` (any, required)
    The reason the session was started. New values may be added over time.

  - `charging_sub_session.debug_metadata.finish_reason` (any, required)
    The reason the session finished. New values may be added over time.

  - `charging_sub_session.debug_metadata.is_energy_delivered_capped` (boolean, required)
    Indicates whether delivered energy was capped to prevent unrealistic over-delivery beyond the vehicle's battery capacity.

  - `charging_sub_session.debug_metadata.uncapped_energy_delivered_watt_hours` (any, required)
    The recalculated energy in watt-hours that would have been delivered without capping. Null when energy delivery was not capped or when recalculation cannot be completed.

  - `charging_sub_session.debug_metadata.energy_usage_calculation_method` (string, required)
    The method used to calculate energy usage for this session.
    Enum: "ESTIMATED_CHARGE_ENERGY_ADDED", "ESTIMATED_CHARGE_LEVEL", "ESTIMATED_CHARGE_RATE", "METERED", "METERED_CHARGE_RATE", "BETA_ESTIMATED_CHARGE_ENERGY_ADDED", "ESTIMATED_CHARGE_LEVEL_WITH_INFERENCE", "MANUAL_ENTRY"

  - `charging_sub_session.debug_metadata.energy_usage_interpolation_method` (string, required)
    The method used to interpolate data readings when calculating energy usage.
    Enum: "LINEAR", "LINEAR_WITH_CHARGE_STEP"

  - `charging_sub_session.debug_metadata.solar_integration_type` (any, required)
    The solar integration type of the EVSE paired with this session. Null when no EVSE is associated with the session.

  - `charging_sub_session.tariff` (any)
    The electricity import tariff. Expandable with ?expand=tariff. Requires tariff:read scope.

  - `charging_sub_session.carbon_feed` (any)
    The carbon feed used to calculate carbon intensity for this sub-session. Expandable with ?expand=carbon_feed. Requires carbon:read scope.

  - `charging_sub_session.carbon_feed.id` (string, required)
    Unique identifier for the carbon feed.
    Example: cabf01HN2NJ9NMRZBXT1H6FT9N7735

  - `charging_sub_session.carbon_feed.url` (string, required)
    Example: https://api.ev.energy/v2/carbon_feeds/cabf01HN2NJ9NMRZBXT1H6FT9N7735

  - `charging_sub_session.carbon_feed.name` (string, required)
    Human-readable name for the carbon feed.
    Example: UK National Grid

  - `charging_sub_session.grid_feeds` (any)
    Grid feeds applied to this sub-session. Expandable with ?expand=grid_feeds. Requires grid:read scope.

  - `charging_sub_session.grid_feeds.id` (string, required)
    Unique identifier for the grid feed.
    Example: grfd01HN2NJ9NMRZBXT1H6FT9N7735

  - `charging_sub_session.grid_feeds.url` (string, required)
    Example: https://api.ev.energy/v2/grid_feeds/grfd01HN2NJ9NMRZBXT1H6FT9N7735

  - `charging_sub_session.grid_feeds.name` (string, required)
    Human-readable name for the grid feed.
    Example: CAISO Peak Demand

  - `charging_sub_session.grid_feeds.reference_code` (string, required)
    Machine-readable reference code for the grid feed, consistent across environments.
    Example: CAISO_PEAK

  - `charging_sub_session.grid_feeds.priority` (integer, required)
    Priority level (1-10) used to resolve conflicts when a user has multiple overlapping grid feeds.
    Example: 8

  - `charging_sub_session.solar_mode_type` (string | null)
    The solar charging mode active for this sub-session. Null when solar charging is not configured.
    Enum: "OFF", "SOLAR_ONLY", "SOLAR_AND_GRID", "SOLAR_SMART", null

  - `charging_sub_session.grid_energy_delivered` (string)
    Use `grid_energy_delivered_watt_hours` instead

  - `charging_sub_session.solar_energy_delivered` (string)
    Use `solar_energy_delivered_watt_hours` instead.

  - `schedules` (array)
    A list of schedule intervals for this charging sub-session.

## 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

