Summary

Cloud-hosted REST API for GivEnergy inverters, batteries, EV chargers, gateways, EMS devices, sites, meters, locks, tariff automation, and account management. Communication is HTTPS REST with Bearer-token authentication; requires an active GivEnergy Premium subscription. This spec covers API v1 (documented at v1.53.0).

Transport

# HTTPS REST; default 443 (standard for HTTPS), not stated by source.
protocols:
  - http
addressing:
  base_url: https://api.givenergy.cloud/v1
  # UNRESOLVED: port number not stated in source (HTTPS defaults to 443)
  port: null  # UNRESOLVED: port number not stated in source
auth:
  type: bearer
  header: Authorization
  scheme: Bearer
  token_format: api_token
  # UNRESOLVED: token format/structure not stated in source; operators obtain via API Tokens portal page

Traits

# - powerable       (powerable inferred from Eco/Timed-Charge/Timed-Discharge/Timed-Export/charge-mode and inverter settings commands)
# - routable        (no input/output routing in this cloud spec)
# - queryable       (numerous read/state endpoints present)
# - levelable       (charge/discharge rates, EV charge power limits, generator charge percent)
- powerable  # inferred from charge-mode, eco-mode, timed-charge, timed-discharge, timed-export, pause-battery, generator-mode presets
- queryable  # inferred from read setting, get latest system/energy/health/preset endpoints
- levelable  # inferred from adjust-charge-power-limit, timed-charge max_power_watts, generator-mode charge_power_percent

Actions

# Each entry represents one operation documented in the source. Every
# method+path combination counts as one action. URL parameters shown verbatim.
# Authorization: Bearer {YOUR_API_KEY} header required for all authenticated
# endpoints. Required headers: Accept: application/json and
# Content-Type: application/json.

# --- Account ---
- id: get_account
  label: Get Your Account Information
  kind: query
  command: "GET /v1/account"
  params: []
- id: get_account_by_id
  label: Get Account Information by ID
  kind: query
  command: "GET /v1/account/{user_id}"
  params:
    - name: user_id
      type: string
- id: get_account_dongles
  label: Get Account Dongles by ID
  kind: query
  command: "GET /v1/account/{user_username}/devices"
  params:
    - name: user_username
      type: string
    - name: page
      type: integer
    - name: pageSize
      type: integer
- id: get_account_by_username
  label: Get Account Information by Username
  kind: query
  command: "GET /v1/account/search/{user_username}"
  params:
    - name: user_username
      type: string
- id: get_account_children
  label: Get Your Account Children Information
  kind: query
  command: "GET /v1/account-children"
  params:
    - name: page
      type: integer
    - name: pageSize
      type: integer
- id: get_account_children_by_id
  label: Get Account Children Information by ID
  kind: query
  command: "GET /v1/account-children/{user_id}"
  params:
    - name: user_id
      type: string
    - name: page
      type: integer
    - name: pageSize
      type: integer
- id: get_sso_accounts
  label: Get List Of Accounts Associated With Your SSO Identity
  kind: query
  command: "GET /v1/sso/me/accounts"
  params: []

# --- Communication Device ---
- id: get_communication_devices
  label: Get Your Communication Devices
  kind: query
  command: "GET /v1/communication-device"
  params:
    - name: page
      type: integer
    - name: pageSize
      type: integer
- id: get_communication_device_by_serial
  label: Get Communication Device Information by Serial Number
  kind: query
  command: "GET /v1/communication-device/{communicationDevice_serial_number}"
  params:
    - name: communicationDevice_serial_number
      type: string

# --- EMS Data ---
- id: get_ems_system_data_latest
  label: Get Latest EMS System Data
  kind: query
  command: "GET /v1/ems/{inverter_serial_number}/system-data/latest"
  params:
    - name: inverter_serial_number
      type: string

# --- EV Charger ---
- id: get_ev_chargers
  label: Get Your EV Chargers
  kind: query
  command: "GET /v1/ev-charger"
  params:
    - name: page
      type: integer
    - name: pageSize
      type: integer
- id: get_ev_charger_by_uuid
  label: Get EV Charger by UUID
  kind: query
  command: "GET /v1/ev-charger/{charger_uuid}"
  params:
    - name: charger_uuid
      type: string
- id: get_ev_charger_meter_data
  label: Get EV Charger Data Points
  kind: query
  command: "GET /v1/ev-charger/{charger_uuid}/meter-data"
  params:
    - name: charger_uuid
      type: string
    - name: start_time
      type: string
    - name: end_time
      type: string
    - name: measurands
      type: string
    - name: meter_ids
      type: integer
    - name: page
      type: integer
    - name: pageSize
      type: integer
- id: get_ev_charger_supported_commands
  label: Get Supported Commands
  kind: query
  command: "GET /v1/ev-charger/{charger_uuid}/commands"
  params:
    - name: charger_uuid
      type: string
- id: get_ev_charger_command_data
  label: Get Command Data
  kind: query
  command: "GET /v1/ev-charger/{charger_uuid}/commands/{command_id}"
  params:
    - name: charger_uuid
      type: string
    - name: command_id
      type: string
- id: send_ev_charger_command
  label: Send Command
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/{command_id}"
  params:
    - name: charger_uuid
      type: string
    - name: command_id
      type: string
    - name: command_body
      type: object
      description: Body varies by command_id; see EV Charger Commands below
- id: get_ev_charger_charging_sessions
  label: Get Charging Sessions
  kind: query
  command: "GET /v1/ev-charger/{charger_uuid}/charging-sessions"
  params:
    - name: charger_uuid
      type: string
    - name: start_time
      type: string
    - name: end_time
      type: string
    - name: page
      type: integer
    - name: pageSize
      type: integer

# --- EV Charger Commands (sent via POST /v1/ev-charger/{uuid}/commands/{command-id}) ---
- id: evc_start_charge
  label: EV Charger Start Charge
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/start-charge"
  params:
    - name: charger_uuid
      type: string
- id: evc_stop_charge
  label: EV Charger Stop Charge
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/stop-charge"
  params:
    - name: charger_uuid
      type: string
- id: evc_adjust_charge_power_limit
  label: EV Charger Adjust Charge Power Limit
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/adjust-charge-power-limit"
  params:
    - name: charger_uuid
      type: string
    - name: limit
      type: number
      description: Between 6 and 32 (A or W depending on unit)
- id: evc_set_plug_and_go
  label: EV Charger Set Plug and Go
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/set-plug-and-go"
  params:
    - name: charger_uuid
      type: string
    - name: enabled
      type: boolean
- id: evc_set_session_energy_limit
  label: EV Charger Set Session Energy Limit
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/set-session-energy-limit"
  params:
    - name: charger_uuid
      type: string
    - name: limit
      type: number
      description: Between 0.1 and 250 kWh
- id: evc_set_schedule
  label: EV Charger Set Schedule
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/set-schedule"
  params:
    - name: charger_uuid
      type: string
    - name: schedule_id
      type: string
    - name: name
      type: string
    - name: periods
      type: array
- id: evc_unlock_connector
  label: EV Charger Unlock Connector
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/unlock-connector"
  params:
    - name: charger_uuid
      type: string
- id: evc_delete_charging_profile
  label: EV Charger Delete Charging Profile
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/delete-charging-profile"
  params:
    - name: charger_uuid
      type: string
    - name: schedule_id
      type: string
- id: evc_change_mode
  label: EV Charger Change Mode
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/change-mode"
  params:
    - name: charger_uuid
      type: string
    - name: mode
      type: string
      description: One of SuperEco, Eco, Boost, ModbusSlave
- id: evc_restart_charger
  label: EV Charger Restart
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/restart-charger"
  params:
    - name: charger_uuid
      type: string
    - name: hard_reset
      type: boolean
- id: evc_change_randomised_delay_duration
  label: EV Charger Set Randomised Delay Duration
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/change-randomised-delay-duration"
  params:
    - name: charger_uuid
      type: string
    - name: duration
      type: number
      description: 600 to 1800 (seconds)
- id: evc_add_id_tags
  label: EV Charger Add ID Tags
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/add-id-tags"
  params:
    - name: charger_uuid
      type: string
    - name: id_tags
      type: array
- id: evc_delete_id_tags
  label: EV Charger Delete ID Tags
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/delete-id-tags"
  params:
    - name: charger_uuid
      type: string
    - name: id_tags
      type: array
- id: evc_rename_id_tag
  label: EV Charger Rename ID Tag
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/rename-id-tag"
  params:
    - name: charger_uuid
      type: string
    - name: tag_id
      type: string
    - name: alias
      type: string
- id: evc_installation_mode
  label: EV Charger Set Installation Mode (Deprecated)
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/installation-mode"
  params:
    - name: charger_uuid
      type: string
    - name: installation_mode
      type: string
      description: standalone, ct_meter, inverter_control, or hybrid_inverter_control
- id: evc_setup_version
  label: EV Charger Setup Version
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/setup-version"
  params:
    - name: charger_uuid
      type: string
    - name: setup_version
      type: integer
- id: evc_set_active_schedule
  label: EV Charger Set Active Schedule
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/set-active-schedule"
  params:
    - name: charger_uuid
      type: string
    - name: schedule_id
      type: string
- id: evc_set_max_import_capacity
  label: EV Charger Set Max Import Capacity
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/set-max-import-capacity"
  params:
    - name: charger_uuid
      type: string
    - name: value
      type: integer
      description: 40 to 100 (amps)
- id: evc_enable_front_panel_led
  label: EV Charger Front Panel LED
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/enable-front-panel-led"
  params:
    - name: charger_uuid
      type: string
    - name: value
      type: boolean
- id: evc_configure_inverter_control
  label: EV Charger Configure Inverter Control
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/configure-inverter-control"
  params:
    - name: charger_uuid
      type: string
    - name: inverter_battery_export_split
      type: string
    - name: max_battery_discharge_power_to_evc
      type: integer
    - name: mode
      type: string
      description: Eco, SuperEco, or Boost
- id: evc_perform_factory_reset
  label: EV Charger Factory Reset
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/perform-factory-reset"
  params:
    - name: charger_uuid
      type: string
- id: evc_configuration_mode
  label: EV Charger Configuration Mode
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/configuration-mode"
  params:
    - name: charger_uuid
      type: string
    - name: configuration_mode
      type: string
      description: One of A, B, C, D, E
- id: evc_enable_local_control
  label: EV Charger Enable Local Control
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/enable-local-control"
  params:
    - name: charger_uuid
      type: string
    - name: value
      type: boolean
- id: evc_read_cp_voltage_and_duty_cycle
  label: EV Charger Read CP Voltage and Duty Cycle
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/read-cp-voltage-and-duty-cycle"
  params:
    - name: charger_uuid
      type: string
- id: evc_adjust_cp_voltage_range
  label: EV Charger Adjust CP Voltage Range
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/adjust-cp-voltage-range"
  params:
    - name: charger_uuid
      type: string
    - name: min
      type: number
      description: 7.6 to 8
    - name: max
      type: number
      description: 10 to 10.5
- id: evc_adjust_suspended_state_wait_timeout
  label: EV Charger Adjust Suspended State Wait Timeout
  kind: action
  command: "POST /v1/ev-charger/{charger_uuid}/commands/adjust-suspended-state-wait-timeout"
  params:
    - name: charger_uuid
      type: string
    - name: value
      type: integer
      description: 0 to 43200

# --- Energy Flow Data ---
- id: get_energy_flow_data
  label: Get Energy Flow Data (Deprecated)
  kind: query
  command: "POST /v1/inverter/{inverter_serial_number}/energy-flows"
  params:
    - name: inverter_serial_number
      type: string
    - name: start_time
      type: string
    - name: end_time
      type: string
    - name: grouping
      type: integer
    - name: types
      type: array

# --- Inverter Health ---
- id: get_health_checks
  label: Get Inverter Health Checks
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/health"
  params:
    - name: inverter_serial_number
      type: string

# --- Inverter Control (Single) ---
- id: inverter_send_custom_command
  label: Send Custom Hex Command to Inverter
  kind: action
  command: "POST /v1/inverter/{inverter_serial_number}/debug/transparent/send"
  params:
    - name: inverter_serial_number
      type: string
    - name: hex
      type: string
      description: Hex string passed transparently to inverter
- id: inverter_get_settings
  label: Get Inverter Settings List
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/settings"
  params:
    - name: inverter_serial_number
      type: string
- id: inverter_read_setting
  label: Read Inverter Setting
  kind: query
  command: "POST /v1/inverter/{inverter_serial_number}/settings/{setting_id}/read"
  params:
    - name: inverter_serial_number
      type: string
    - name: setting_id
      type: integer
    - name: context
      type: string
- id: inverter_modify_setting
  label: Modify Inverter Setting
  kind: action
  command: "POST /v1/inverter/{inverter_serial_number}/settings/{setting_id}/write"
  params:
    - name: inverter_serial_number
      type: string
    - name: setting_id
      type: integer
    - name: value
      type: string
    - name: context
      type: string

# --- Inverter Control (Presets) ---
- id: inverter_get_setting_presets
  label: Get Setting Presets
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/presets"
  params:
    - name: inverter_serial_number
      type: string
- id: inverter_get_preset_values
  label: Get Preset Values
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/presets/{id}"
  params:
    - name: inverter_serial_number
      type: string
    - name: id
      type: string
- id: inverter_modify_preset
  label: Modify Preset
  kind: action
  command: "POST /v1/inverter/{inverter_serial_number}/presets/{preset}"
  params:
    - name: inverter_serial_number
      type: string
    - name: preset
      type: string
      description: Preset ID (identifier) or legacy numeric ID
    - name: context
      type: string
    - name: force
      type: boolean

# Preset identifiers (sent as {preset} parameter of inverter_modify_preset):
# eco-mode, timed-charge, timed-discharge, timed-export,
# battery-operating-range, reset-to-defaults, winter-battery-conditioning,
# plant-ems-enable-control, grid-settings, parallel-settings,
# generator-mode, smart-load, pause-battery

# --- Inverter Control (Preset Profiles) ---
- id: preset_profile_list
  label: Get Inverter Preset Profiles
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/preset-profile"
  params:
    - name: inverter_serial_number
      type: string
    - name: name
      type: string
    - name: presets
      type: array
- id: preset_profile_create
  label: Create Inverter Preset Profile
  kind: action
  command: "POST /v1/inverter/{inverter_serial_number}/preset-profile"
  params:
    - name: inverter_serial_number
      type: string
    - name: name
      type: string
    - name: preset
      type: string
- id: preset_profile_update
  label: Update Inverter Preset Profile
  kind: action
  command: "PUT /v1/inverter/{inverter_serial_number}/preset-profile"
  params:
    - name: inverter_serial_number
      type: string
    - name: name
      type: string
    - name: preset
      type: string
- id: preset_profile_apply
  label: Apply Inverter Preset Profile
  kind: action
  command: "POST /v1/inverter/{inverter_serial_number}/preset-profile/apply"
  params:
    - name: inverter_serial_number
      type: string
    - name: name
      type: string
    - name: presets
      type: array
    - name: delete_after_apply
      type: boolean
- id: preset_profile_delete
  label: Delete Inverter Preset Profile
  kind: action
  command: "DELETE /v1/inverter/{inverter_serial_number}/preset-profile"
  params:
    - name: inverter_serial_number
      type: string
    - name: name
      type: string
    - name: preset
      type: string

# --- Inverter Control (Snapshots) ---
- id: snapshot_delete
  label: Delete Inverter Snapshot
  kind: action
  command: "DELETE /v1/inverter/{inverter_serial_number}/snapshot/{name}"
  params:
    - name: inverter_serial_number
      type: string
    - name: name
      type: string
- id: snapshot_take
  label: Take Inverter Snapshot
  kind: action
  command: "POST /v1/inverter/{inverter_serial_number}/snapshot/{name}"
  params:
    - name: inverter_serial_number
      type: string
    - name: name
      type: string
    - name: sync
      type: boolean
    - name: context
      type: string
- id: snapshot_restore
  label: Restore Inverter Snapshot
  kind: action
  command: "POST /v1/inverter/{inverter_serial_number}/snapshot/{name}/restore"
  params:
    - name: inverter_serial_number
      type: string
    - name: name
      type: string
    - name: sync
      type: boolean
    - name: context
      type: string
- id: snapshot_exists
  label: Determine if Snapshot Exists
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/snapshot/{name}"
  params:
    - name: inverter_serial_number
      type: string
    - name: name
      type: string

# --- Inverter Control (Multiple) ---
- id: multi_control_modify_setting
  label: Modify Setting on Multiple Inverters
  kind: action
  command: "POST /v1/multi-control/write"
  params:
    - name: inverter_serials
      type: array
    - name: setting_id
      type: integer
    - name: value
      type: string
- id: multi_control_read_setting
  label: Read Setting on Multiple Inverters
  kind: action
  command: "POST /v1/multi-control/read"
  params:
    - name: inverter_serials
      type: array
    - name: setting_id
      type: integer

# --- Inverter Data ---
- id: inverter_request_data
  label: Request Inverter Data
  kind: action
  command: "GET /v1/inverter/{inverter_serial_number}/request-data"
  params:
    - name: inverter_serial_number
      type: string
- id: inverter_system_data_latest
  label: Get Latest Inverter System Data
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/system-data/latest"
  params:
    - name: inverter_serial_number
      type: string
- id: inverter_meter_data_latest
  label: Get Latest Inverter Energy Data
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/meter-data/latest"
  params:
    - name: inverter_serial_number
      type: string
- id: inverter_events
  label: Get Inverter Events
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/events"
  params:
    - name: inverter_serial_number
      type: string
    - name: cleared
      type: boolean
    - name: start
      type: string
    - name: end
      type: string
    - name: page
      type: integer
    - name: pageSize
      type: integer
- id: inverter_data_points
  label: Get Inverter Data Points
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/data-points/{date}"
  params:
    - name: inverter_serial_number
      type: string
    - name: date
      type: string
    - name: page
      type: integer
    - name: pageSize
      type: integer

# --- Locking ---
- id: lock_get_config
  label: Get Locking Config
  kind: query
  command: "GET /v1/lock"
  params: []
- id: lock_delete
  label: Delete Lock
  kind: action
  command: "DELETE /v1/lock/{id}"
  params:
    - name: id
      type: string
- id: lock_get
  label: Get Locks
  kind: query
  command: "GET /v1/lock/{type}/{id}"
  params:
    - name: type
      type: string
    - name: id
      type: string
- id: lock_create
  label: Create Lock
  kind: action
  command: "POST /v1/lock/{type}/{id}/create"
  params:
    - name: type
      type: string
    - name: id
      type: string
    - name: expires_at
      type: string
    - name: reason
      type: string
- id: lock_cleanup
  label: Cleanup Locks
  kind: action
  command: "POST /v1/lock/{type}/{id}/cleanup"
  params:
    - name: type
      type: string
    - name: id
      type: string

# --- Meter ---
- id: meter_historic
  label: Get Historic Meter Data
  kind: query
  command: "GET /v1/inverter/{inverter_serial_number}/meter/data"
  params:
    - name: inverter_serial_number
      type: string
    - name: address
      type: integer
      description: 1 to 8
    - name: start_time
      type: string
    - name: end_time
      type: string

# --- Notifications ---
- id: send_notification
  label: Send Notification
  kind: action
  command: "POST /v1/notification/send"
  params:
    - name: platforms
      type: array
      description: One or more of persist, push
    - name: title
      type: string
    - name: body
      type: string
    - name: icon
      type: string

# --- Site ---
- id: site_list
  label: Get Your Sites
  kind: query
  command: "GET /v1/site"
  params:
    - name: page
      type: integer
    - name: pageSize
      type: integer
- id: site_get
  label: Get Single Site by ID
  kind: query
  command: "GET /v1/site/{plant_id}"
  params:
    - name: plant_id
      type: integer
- id: site_energy_data_latest
  label: Get Realtime Site Energy Data
  kind: query
  command: "GET /v1/site/{site_plant_id}/energy-data/latest"
  params:
    - name: site_plant_id
      type: integer
- id: site_data_latest
  label: Get Realtime Site Data
  kind: query
  command: "GET /v1/site/{site_plant_id}/data/latest"
  params:
    - name: site_plant_id
      type: integer
- id: site_status_get
  label: Get Site Status
  kind: query
  command: "GET /v1/site/{site_plant_id}/status"
  params:
    - name: site_plant_id
      type: integer
- id: site_status_update
  label: Update Site Status
  kind: action
  command: "POST /v1/site/{site_plant_id}/status"
  params:
    - name: site_plant_id
      type: integer
    - name: status
      type: string
      description: vacant, opted_in, opted_out, or null to clear

# --- Smart Device ---
- id: smart_device_list
  label: Get Your Smart Devices
  kind: query
  command: "GET /v1/smart-device"
  params:
    - name: page
      type: integer
    - name: pageSize
      type: integer
- id: smart_device_create
  label: Create Smart Device
  kind: action
  command: "POST /v1/smart-device"
  params:
    - name: serial_number
      type: string
    - name: alias
      type: string
    - name: product_name
      type: string
    - name: manufacturer
      type: string
    - name: other_data
      type: object
- id: smart_device_get
  label: Get Smart Device by ID
  kind: query
  command: "GET /v1/smart-device/{smartDevice_uuid}"
  params:
    - name: smartDevice_uuid
      type: string
- id: smart_device_data_points
  label: Get Smart Device Data Points by ID
  kind: query
  command: "GET /v1/smart-device/{smartDevice_uuid}/data"
  params:
    - name: smartDevice_uuid
      type: string
    - name: page
      type: integer
    - name: pageSize
      type: integer
- id: smart_device_data_point_create
  label: Create Smart Device Data Point
  kind: action
  command: "POST /v1/smart-device/{smartDevice_uuid}/data"
  params:
    - name: smartDevice_uuid
      type: string
    - name: time
      type: string
    - name: power
      type: integer

# --- Smart Tariff ---
- id: smart_tariff_regions
  label: Get Available Smart Tariff Regions
  kind: query
  command: "GET /v1/smart-tariff/region"
  params: []
- id: smart_tariff_providers
  label: Get Smart Tariff Providers for a Region
  kind: query
  command: "GET /v1/smart-tariff/provider"
  params:
    - name: region
      type: string
- id: smart_tariff_static_tariff
  label: Get List of Tariffs for a Static Tariff Provider
  kind: query
  command: "GET /v1/smart-tariff/static/{provider_id}/tariff"
  params:
    - name: provider_id
      type: string
    - name: parent_guid
      type: string
- id: smart_tariff_market_pricing_tariff
  label: Get List of Tariffs for a Market Pricing Provider
  kind: query
  command: "GET /v1/smart-tariff/market-pricing/{provider_id}/tariff"
  params:
    - name: provider_id
      type: string
- id: smart_tariff_onboard
  label: Onboard to Smart Tariff Automation
  kind: action
  command: "POST /v1/smart-tariff/tariff"
  params:
    - name: provider_id
      type: string
    - name: provider_settings
      type: object
    - name: region
      type: string
- id: smart_tariff_update_settings
  label: Update Smart Tariff Provider Settings
  kind: action
  command: "PUT /v1/smart-tariff/tariff"
  params:
    - name: provider_id
      type: string
    - name: provider_settings
      type: object
- id: smart_tariff_offboard
  label: Offboard Smart Tariff Automation
  kind: action
  command: "DELETE /v1/smart-tariff/tariff"
  params: []
- id: smart_tariff_automation_data
  label: Get Automation Data for a Given Date
  kind: query
  command: "GET /v1/smart-tariff/automation/{date}"
  params:
    - name: date
      type: string
    - name: version
      type: integer
- id: smart_tariff_automation_settings_get
  label: Get User Automation Settings
  kind: query
  command: "GET /v1/smart-tariff/automation-settings"
  params: []
- id: smart_tariff_automation_settings_update
  label: Update Automation Settings
  kind: action
  command: "PUT /v1/smart-tariff/automation-settings"
  params:
    - name: is_enabled
      type: boolean
    - name: export_price
      type: number
    - name: slot_overrides
      type: array
- id: smart_tariff_scheduler_slots
  label: Get Scheduler Slots for Period
  kind: query
  command: "GET /v1/smart-tariff/scheduler/slots"
  params:
    - name: start_date
      type: string
    - name: end_date
      type: string

# --- Take Control ---
- id: inverter_take_control_start
  label: Take Control of an Inverter
  kind: action
  command: "POST /v1/inverter/{inverter_serial_number}/take-control/start"
  params:
    - name: inverter_serial_number
      type: string
    - name: reason
      type: string
    - name: expires_at
      type: string
- id: inverter_take_control_stop
  label: Relinquish Inverter Control
  kind: action
  command: "POST /v1/inverter/{inverter_serial_number}/take-control/stop"
  params:
    - name: inverter_serial_number
      type: string

Feedbacks

- id: inverter_status
  type: enum
  values: [NORMAL, WAITING, LOST, UNKNOWN, ERROR, WARNING, UPDATING, BYPASS, OFF_GRID, ON_GRID]
  description: Inverter operational status; from /v1/inverter/{serial}/system-data/latest and /system-data/latest
- id: ems_status
  type: enum
  values: [WAITING, NORMAL, WARNING, ERROR, UPDATING, BYPASS]
- id: ems_inverter_status
  type: enum
  values: [DISABLED, WAITING, ONLINE, WARNING, ERROR, FLASH, OFFLINE]
- id: ems_meter_status
  type: enum
  values: [DISABLED, ONLINE, OFFLINE]
- id: ems_meter_type
  type: enum
  values: [GRID, GENERATION, LOAD, OTHER]
- id: ev_charger_status
  type: enum
  values: [Available, Preparing, Charging, SuspendedEVSE, SuspendedEV, Finishing, Reserved, Unavailable, Faulted]
- id: health_status
  type: enum
  values: [ok, warning, error]
- id: inverter_command_response
  type: integer
  description: |
    Numeric response code for single-device remote control commands.
    Codes: 0 SUCCESS, -1 TIMEOUT, -2 CHARGER_OFFLINE, -3 INVALID_DATA,
    -4 FAILURE, -5 ERROR
- id: inverter_remote_control_code
  type: integer
  description: |
    Remote control code returned when sending commands to inverters.
    -1 Inverter Timeout, -2 Inverter Offline, -3 Inverter Not Found,
    -4 Validation errors, -5 Request Failed, -6 No response from comms,
    -7 Inverter Locked
- id: site_status_value
  type: enum
  values: [vacant, opted_in, opted_out]
- id: pause_battery_mode
  type: enum
  values: [0, 1, 2, 3]
  description: 0 Not Paused, 1 Pause Charge, 2 Pause Discharge, 3 Pause Charge and Discharge
- id: ev_charger_mode
  type: enum
  values: [SuperEco, Eco, Boost, ModbusSlave]
  description: Mode IDs from change-mode command; new IDs EcoPlus and EcoPlus are also listed
- id: ev_charger_configuration_mode
  type: enum
  values: [A, B, C, D, E]
- id: charge_session_stop_reason
  type: enum
  values: [EmergencyStop, EVDisconnected, HardReset, Local, Other, PowerLoss, Reboot, Remote, SoftReset, UnlockCommand, DeAuthorized]
- id: charge_session_id_tag
  type: string
  description: |
    ID of the tag used to start/stop a session, user ID when started via
    app/API/portal, "PLUG_AND_GO", or "INVERTER_CONTROL"

Variables

- id: charge_power_limit
  label: EV Charger Charge Power Limit
  type: number
  range: [6, 32]
  unit: A or W
- id: session_energy_limit
  label: EV Charger Session Energy Limit
  type: number
  range: [0.1, 250]
  unit: kWh
- id: randomised_delay_duration
  label: EV Charger Randomised Delay Duration
  type: number
  range: [600, 1800]
  unit: seconds
- id: ev_charger_max_import_capacity
  label: EV Charger Max Import Capacity
  type: integer
  range: [40, 100]
  unit: amps
- id: ev_charger_cp_voltage_min
  label: EV Charger CP Voltage Range Minimum
  type: number
  range: [7.6, 8]
  unit: V
- id: ev_charger_cp_voltage_max
  label: EV Charger CP Voltage Range Maximum
  type: number
  range: [10, 10.5]
  unit: V
- id: suspended_state_wait_timeout
  label: EV Charger Suspended State Wait Timeout
  type: integer
  range: [0, 43200]
  unit: seconds
- id: inverter_battery_export_split
  label: EV Charger to Inverter Battery Export Split
  type: string
  description: "0 to 1 (single character); 0.5 = 50/50 split"
- id: max_battery_discharge_power_to_evc
  label: Max Battery Discharge Power to EV Charger
  type: integer
  unit: watts
  minimum: 0
- id: winter_battery_conditioning_enabled
  label: Winter Battery Conditioning
  type: boolean
- id: pause_battery_mode_value
  label: Pause Battery Mode
  type: integer
  range: [0, 3]
- id: generator_mode
  label: Generator Mode Configuration
  type: object
  properties: [enabled, start_soc, stop_soc, charge_power_percent]
- id: inverter_setting_value
  label: Generic Inverter Setting
  type: string
  description: |
    Free-form value written via /v1/inverter/{serial}/settings/{id}/write;
    payload validation depends on the setting's `validation_rules`
- id: export_price
  label: Smart Tariff Automation Export Price
  type: number
  minimum: 0

Events

- id: inverter_event
  description: |
    Fault or notification event recorded against an inverter.
    Polled via GET /v1/inverter/{serial}/events; payload shape:
      { event: string, start_time: ISO8601, end_time: ISO8601 | null }
- id: charging_session_started
  description: |
    Charging session starts; surfaced via GET /v1/ev-charger/{uuid}/charging-sessions
    payload includes started_by, meter_start, started_at, stop_reason, etc.
- id: charging_session_stopped
  description: |
    Charging session stops; payload mirrors session object including stop_reason
- id: notification_received
  description: |
    Push notification delivered via POST /v1/notification/send target platforms
    (persist, push). Pull rather than push in this API.

Macros

- id: take_control_round_trip
  label: Take Control and Modify Inverter Settings
  description: |
    Sequence described in source "Take Control" section:
    1. POST /v1/inverter/{serial}/take-control/start (acquires lock + captures snapshot)
    2. Apply setting changes via /settings/{id}/write and/or /presets/{preset}
    3. POST /v1/inverter/{serial}/take-control/stop (restores snapshot + releases lock)
- id: snapshot_restore_round_trip
  label: Snapshot Round Trip
  description: |
    POST /v1/inverter/{serial}/snapshot/{name} (take) then later
    POST /v1/inverter/{serial}/snapshot/{name}/restore (restores settings, deletes snapshot)
- id: smart_tariff_automation_cycle
  label: Smart Tariff Onboard/Offboard
  description: |
    POST /v1/smart-tariff/tariff (onboard) → PUT /v1/smart-tariff/automation-settings
    (configure) → DELETE /v1/smart-tariff/tariff (offboard)

Safety

confirmation_required_for:
  - installation-mode (EV charger; deprecated)
  - perform-factory-reset (EV charger)
  - configuration-mode D and E (require Premium; modify inverter coupling)
  - inverter_take_control_stop (relinquishing control restores snapshot)
  - preset-profile_delete (only the creator can delete)
interlocks:
  - id: inverter_lock
    description: |
      Inverter control endpoints respect the locking system. Higher priority
      locks block lower priority actors. Code -7 (Inverter Locked) returned
      when target is locked by another actor.
  - id: take_control_lock
    description: |
      POST /v1/inverter/{serial}/take-control/start is rejected (422) if
      already locked by another actor; /take-control/stop is rejected if
      not locked by requesting actor.
# UNRESOLVED: source contains general operational warnings (e.g. Winter Battery
# Conditioning costed-charge note, optional Premium requirement) but no formal
# interlock procedures or sequencing requirements beyond the locks above.

Notes

All requests require Authorization: Bearer {YOUR_API_KEY} and headers Accept: application/json plus Content-Type: application/json. Premium subscription required for most endpoints (HTTP 402 returned otherwise). Default rate limit 300 req/min shared across all endpoints; custom limits per endpoint noted in badges. Inverters without the is-controllable flag (e.g. child/AC-coupled inverters in parallel config) receive commands but may ignore them. The smart-tariff endpoints and Premium-only configuration-mode D/E codes are mutually dependent. EV charger payloads adhere to OCPP 1.6.

Provenance

source_domains:
  - givenergy.cloud
source_urls:
  - https://givenergy.cloud/docs/api/v1
retrieved_at: 2026-09-02T20:36:08.323Z
last_checked_at: 2026-09-11T22:16:41.273Z

Verification Summary

verdict: verified
checked_at: 2026-09-11T22:16:41.273Z
matched_actions: 99
action_count: 99
confidence: medium
summary: "All 99 spec endpoints map1:1 to endpoints documented in the refined source; transport base URL, Bearer auth header, and headers all verbatim. (5 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "list any major gaps here"
- "port number not stated in source (HTTPS defaults to 443)"
- "port number not stated in source"
- "token format/structure not stated in source; operators obtain via API Tokens portal page"
- "source contains general operational warnings (e.g. Winter Battery"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0