Administrēšanas API shēmas un piemēri
Šis fails definē atkārtoti lietojamos JSON tipus, kas nosaukti Galapunktu uzziņā. ? nozīmē neobligātu ievadē; | null nozīmē, ka rekvizīts ir klātesošs un izvadē var būt null, ja vien attiecīgais galapunkts nenorāda citādi. DateTime ir RFC 3339 virkne; pieprasījumu datuma un laika vērtībām jāietver nobīde.
Primitīvie un uzziņu tipi
PositiveInt = integer > 0
NonnegativeInt = integer >= 0
DateTime = RFC3339 string, for example "2026-08-24T12:30:00Z"
NamedLookup = { id: PositiveInt, name: string }
SiteRef = { id: PositiveInt, name: string|null }
Cost = { currency: string, net: number, tax: number, total: number }
Nezināmie nākotnes lauki jāignorē. ID ir JSON skaitļi, izņemot necaurspīdīgos kursorus un portāla pārvaldītos piekļuves marķieru ID. API neatgriež neapstrādātus RFID UID, lādētāju paroles, darbvietu marķierus, contractId, pakalpojumu sniedzēju noslēpumus vai neaizklātas noslēpumiem līdzīgas konfigurācijas vērtības.
Pieprasījuma vērtību pārveidošana un nezināmi rekvizīti
API nepiemēro vienu globālu skaitlisko pārveidojumu politiku:
- Katrs resursa ceļa ID un skaitlisks vaicājuma parametrs pieņem decimālu virkni, piemēram,
"12", ja tā atbilst dokumentētajam vesela skaitļa/diapazona ierobežojumam. - Darbvietas
countryId; objektacountryId/timezoneId; lādētāja objekta/pieslēgvietas un komandu skaitliskie lauki; katrs skaitliskais tarifa lauks; un katrs skaitliskais uzlādes profila lauks tiek pārveidots arī no skaitliskām JSON virknēm. - Objekta platumam/garumam, lādētāja
smartMode, visiem jaudas pārvaldības skaitļiem, pārskata grafika skaitļiem un lietotāju/RFID/piekļuves/ierobežojumu/vietējo lietotāju satura ID un vērtībām nepieciešami JSON skaitļi; automātiska pārveidošana netiek veikta. - Tarifu, uzlādes profilu, pārskatu grafiku un lietotāju satura objekti noraida nezināmus rekvizītus ar
422. Darbvietu, objektu, jaudas pārvaldības, citi lādētāju/pārskatu objekti un vaicājumu objekti ignorē nezināmus rekvizītus.
Šīs detaļas apraksta datu pārsūtīšanas uzvedību, nevis ieteikumu: klientiem skaitliskajos satura laukos jāsūta JSON skaitļi.
Darbvietu un objektu tipi
Workspace = {
id: PositiveInt,
name: string,
email: string|null,
website: string|null,
address: {
line1: string|null, line2: string|null, postalCode: string|null,
city: string|null, state: string|null, countryId: PositiveInt,
countryCode: string, countryName: string
},
createdAt: DateTime,
updatedAt: DateTime
}
Site = {
id: PositiveInt,
name: string,
description: string|null,
address: {
line1: string|null, line2: string|null, postalCode: string|null,
city: string|null, state: string|null, countryId: PositiveInt,
countryCode: string, countryName: string
},
timezone: { id: PositiveInt, name: string },
latitude: number|null,
longitude: number|null,
chargerCount: integer
}
SiteSession = {
id: PositiveInt,
charger: { id: PositiveInt, name: string },
portId: PositiveInt,
connectorId: integer,
active: boolean,
startedAt: DateTime,
stoppedAt: DateTime|null,
durationSeconds: integer|null,
energyWh: number,
costs: Cost[]
}
MetricsWindow = {
from: DateTime, to: DateTime, sessionLimit: integer,
sessionsIncluded: integer, totalsCapped: boolean
}
GET /sites/:siteId atgriež { site, recentSessions, totals, metricsWindow }. Tā site pievieno piederošo lādētāju/pieslēgvietu stāvokli objekta pamata projekcijai; totals satur sessions, energyWh, energyKwh, durationSeconds un costs: Cost[].
Objektu uzziņu dati ir { countries: {countryId, countryCode, name}[], timezones: {timezoneId, name}[] } ar skaitliskiem ID un virkņu nosaukumiem/kodiem.
DashboardSession = {
id: PositiveInt, chargerId: PositiveInt, connectorId: PositiveInt,
userId: PositiveInt|null, userName: string|null, chargerName: string|null,
site: SiteRef|null, status: string|null, energyWh: number,
startedAt: DateTime|null, stoppedAt: DateTime|null,
costs: Array<{ currency: string|null, price: number, tax: number }>
}
Dashboard = {
window: { from: DateTime, to: DateTime, maxSessions: 1000 },
stats: { chargerCount: integer, onlineChargerCount: integer, siteCount: integer, userCount: integer },
sessions: DashboardSession[],
analytics: {
totals: { sessions: integer, energyWh: number, durationSeconds: integer, costs: Array<{currency:string, amount:number}> },
daily: Array<{ date:string, sessions:integer, energyWh:number, costs:Array<{currency:string, amount:number}> }>,
sites: Array<{ id:PositiveInt, name:string|null, sessions:integer, energyWh:number, costs:Array<{currency:string, amount:number}> }>,
chargers: Array<{ id:PositiveInt, name:string|null, siteId:PositiveInt|null, siteName:string|null, sessions:integer, energyWh:number, costs:Array<{currency:string, amount:number}> }>
}
}
SiteDetailCharger = {
id: PositiveInt, name: string|null, identifier: string|null, status: string,
connection: { lastSeenAt: DateTime|null, leaseExpiresAt: DateTime|null }|null,
connectors: Array<{ evseId:PositiveInt, evseNumber:integer, portId:PositiveInt, connectorId:integer, status:string|null }>,
sessionCount: integer,
totals: { sessions:integer, energyWh:number, energyKwh:number, durationSeconds:integer, costs:Cost[] }
}
Darbvietas daļējas atjaunināšanas un atbildes piemērs:
PATCH /v2/admin
Authorization: Bearer evc_ws_<selector>.<secret>
Idempotency-Key: workspace-contact-20260824
Content-Type: application/json
{"email":"ops@example.com","city":"Riga"}
{
"workspace": {
"id": 7,
"name": "Example CPO",
"email": "ops@example.com",
"website": null,
"address": {
"line1": "1 Example Street",
"line2": null,
"postalCode": "LV-1001",
"city": "Riga",
"state": null,
"countryId": 1,
"countryCode": "LV",
"countryName": "Latvia"
},
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-08-24T12:30:00.000Z"
}
}
Objekta izveides/atjaunināšanas piemērs (laukus ar noklusējumiem var izlaist):
{
"name": "Main depot",
"addressLine1": "1 Example Street",
"city": "Riga",
"countryId": 1,
"timezoneId": 1,
"latitude": 56.9496,
"longitude": 24.1052
}
Jaudas pārvaldības atbilde
PowerConfiguration = {
site: { id: PositiveInt, updatedAt: DateTime },
chargepoints: Array<{
id: PositiveInt, name: string|null,
compatible: boolean, compatibility: string, // values come from shared capability projection
...additional smart-charging capability flags
}>,
pools: Array<{
id: PositiveInt, parentId: PositiveInt|null, name: string|null,
limit: integer, defaultLimit: integer|null, mode: integer|string|null
}>,
assignments: Array<{
poolId: PositiveInt, chargepointId: PositiveInt, priority: integer,
chargingProfileId: PositiveInt|null,
chargingProfileSynced: integer|null,
limit: number|null
}>,
meterSources: Array<{
id: PositiveInt, poolId: PositiveInt, sourceId: PositiveInt,
provider: string, name: string|null, externalId: string,
measurementMode: string, valueMode: string,
reserveA: integer, offlineSafeA: integer, ttlSeconds: integer,
enabled: boolean, lastComputedLimitA: number|null,
lastComputedAt: DateTime|null, lastStatus: string|null,
lastSeenAt: DateTime|null, effectiveLimitA: number|null
}>,
connectors: Array<{
id: PositiveInt, connectorId: integer, chargepointId: PositiveInt,
status: string|null
}>
}
Papildu saderības lauku precīzos nosaukumus veido smartChargingCompatibility(); šīs palīgfunkcijas atgriešanas tips avotā nav tieši nosaukts. Šis ir vienīgais atbildes fragments, kura slēgto lauku sarakstu nevar noteikt no eksportēta tipa, tādēļ papildu lauki apzināti atzīmēti kā neskaidri, nevis izdomāti.
Aizstāšanas piemērs:
{
"pools": [
{
"name": "Depot supply",
"limit": 125,
"meterSources": [
{
"externalId": "meter-42",
"measurementMode": "available_headroom",
"enabled": true
}
],
"children": [
{"chargepointId": 11, "priority": 10},
{"name": "Secondary", "limit": 32, "children": []}
]
}
]
}
Lādētāju veidi
Charger = {
id: PositiveInt, name: string, identifier: string, cpoId: PositiveInt,
site: { id: PositiveInt, name: string }, status: string,
isPublic: boolean, invertedRfid: boolean, smartMode: integer,
automationDisabled: boolean, provisioned: boolean,
connection: {
protocol: string|null, lastSeenAt: DateTime|null, leaseExpiresAt: DateTime|null
} | null,
evses: Array<{ id: PositiveInt, number: integer, status: string|null }>,
connectors: Array<{
evseId: PositiveInt, evseNumber: integer, status: string|null,
id: PositiveInt, connectorId: integer, portNumber: integer,
format: { id: PositiveInt, name: string, description: string|null },
type: { id: PositiveInt, name: string, description: string|null },
powerType: { id: PositiveInt, name: string, description: string|null },
maxVoltage: number, maxAmperage: number, maxElectricPower: number,
maxPowerKw: number
}>,
createdAt: DateTime, updatedAt: DateTime
}
ChargerDetail = Charger & {
configuration: Array<{
chargepointConfigId: PositiveInt, key: string,
value: string|null, readonly: boolean|number, setByServer: boolean|number,
modified: DateTime
}>,
firmware: { status: string|null, statusAt: DateTime|null, version: string|null, bootAt: DateTime|null },
counts: { localUsers: integer, sessions: integer, tariffAssignments: integer, profileAssignments: integer }
}
Saraksta projekcija pievieno ierobežotus metriku laukus un atgriež metricsWindow; detaļu projekcija izmanto iepriekš norādīto struktūru. Sensitīvo atslēgu konfigurācijas vērtības ir tieši "[REDACTED]".
PublicReadiness = {
ready: boolean,
missingRequirements: Array<"site_coordinates"|"connector_tariffs"|"billing_plan"|"stripe_connect"|"legacy_payment_data">,
commercialGateEnabled: boolean, siteCoordinatesDefined: boolean,
allConnectorsHaveTariffs: boolean, connectorsMissingTariffs: integer[],
connectorCount: integer, paymentDataDefined: boolean,
billingAccountId: PositiveInt|null, planCode: string|null,
billingPlanEligible: boolean, stripeConnectReady: boolean,
stripeConnectState: "active"|"action_required"|"pending"|"not_configured",
connectorIds: integer[], missingTariffConnectorIds: integer[]
}
RedactedOcppLog = {
ocppServerLogId: PositiveInt, timestamp: DateTime, logLevelId: PositiveInt,
logAction: string|null, logDirection: string|null, logMessage: string|null,
messageId: string|null, transactionLogId: PositiveInt|null,
logLevel: { name:string }|null
}
CompositeSchedule = {
id: PositiveInt, chargepointId: PositiveInt, connectorId: integer,
evseId: PositiveInt|null, scheduleStart: DateTime, duration: integer,
minChargingRate: number|null, chargingRateUnitId: PositiveInt,
chargingRateUnit: string|null, chargingRateUnitDescription: string|null,
periods: Array<{ id:PositiveInt, startPeriod:number, limit:number, numberPhases:integer|null, phaseToUse:integer|null }>
}
Veiksmīga pieslēgvietas daļēja atjaunināšana atgriež tieši { portId, connectorId, ocpiConnectorFormatEnumId, ocpiConnectorTypeEnumId, ocpiPowerTypeEnumId, maxVoltage, maxAmperage, maxElectricPower }.
connectorLookups satur šādas uzziņu struktūras: formāti izmanto { ocpiConnectorFormatEnumId, name, description }; veidi izmanto { ocpiConnectorTypeEnumId, name, description, icon }; jaudas veidi izmanto { ocpiPowerTypeEnumId, name, shortDescr, description, numPhases }.
Izveides un pieslēgvietas atjaunināšanas piemēri:
{"name":"Warehouse 1","identifier":"cp-warehouse-1","password":"initial-secret","siteId":3}
{
"connectorFormatId": 1,
"connectorTypeId": 2,
"powerTypeId": 1,
"maxVoltage": 400,
"maxAmperage": 32,
"maxElectricPower": 22000
}
Komandu atbilžu objekti satur status: string. Pieprasītais ziņojums papildus satur connectorResults: { connectorId: number, status: string }[]; apvienotais grafiks papildus satur connectorId un compositeSchedule (vai null). Statusa vērtības ir saglabāti OCPP/turpmāku darbību rezultāti, un maršruts tās neierobežo līdz slēgtam enum.
Pārskatu veidi
ReportSession = {
id: PositiveInt,
charger: { id: PositiveInt, name: string, site: { id: PositiveInt, name: string }|null },
portId: PositiveInt, connectorId: integer,
user: { id: PositiveInt, name: string }|null,
active: boolean, energyWh: number,
startedAt: DateTime, stoppedAt: DateTime|null,
durationSeconds: integer|null, costs: Cost[]
}
ReportSchedule = {
id: PositiveInt, workspaceId: PositiveInt, enabled: boolean,
recipientEmail: string, format: "csv"|"pdf", sendDay: integer,
sendTime: string, createdAt: DateTime, updatedAt: DateTime,
lastDeliveryPeriod: string|null, lastDeliveryStatus: string|null,
lastDeliveryAttemptAt: DateTime|null, lastDeliveryAttemptCount: integer,
lastDeliveredPeriod: string|null, lastDeliveredAt: DateTime|null
}
ReportDataResponse = {
items: ReportSession[],
pageTotals: { sessions:integer, energyWh:number, durationSeconds:integer, costs:Cost[] },
page: { limit:integer, nextCursor:string|null },
range: { from:DateTime, to:DateTime, toExclusive:true }
}
MeasurementPoint = { meterValueId:PositiveInt, timestamp:DateTime, elapsedSeconds:integer, value:number }
Measurement = {
name:string,
unit:{ symbol:string|null, description:string|null },
lines:Array<{ phase:string, points:MeasurementPoint[] }>
}
MeasurementsResponse = {
transactionLogId:PositiveInt, measurements:Measurement[],
page:{ limit:integer, nextCursor:string|null, sampleValuesTruncated:boolean, sampleLimitPerMeterValue:64 }
}
Grafika pieprasījuma un atbildes piemērs:
{"enabled":true,"recipientEmail":"reports@example.com","format":"csv","sendDay":5,"sendTime":"08:30"}
{
"schedule": {
"id": 4,
"workspaceId": 7,
"enabled": true,
"recipientEmail": "reports@example.com",
"format": "csv",
"sendDay": 5,
"sendTime": "08:30",
"createdAt": "2026-08-01T10:00:00.000Z",
"updatedAt": "2026-08-24T12:30:00.000Z",
"lastDeliveryPeriod": null,
"lastDeliveryStatus": null,
"lastDeliveryAttemptAt": null,
"lastDeliveryAttemptCount": 0,
"lastDeliveredPeriod": null,
"lastDeliveredAt": null
}
}
Tarifu veidi
TariffComponent = {
id: PositiveInt,
type: NamedLookup, season: NamedLookup,
validFromMonth: number|null, validToMonth: number|null,
validFromWeekDay: number|null, validToWeekDay: number|null,
validFromHour: number|null, validToHour: number|null,
priority: number, price: number
}
Tariff = {
id: PositiveInt, cpoId: PositiveInt, name: string,
type: NamedLookup,
site: { id: PositiveInt, name: string, timezone: string|null }|null,
currency: { id: PositiveInt, code: string, sign: string },
biddingZone: { id: PositiveInt, code: string, name: string }|null,
tax: number, fallbackPrice: number|null, price: number|null,
components: TariffComponent[], assignmentCount: integer
}
TariffAssignment = {
id: PositiveInt, chargerId: PositiveInt, connectorId: integer,
tariff: { id: PositiveInt, name: string, currency: { code: string, sign: string } },
createdAt: DateTime, updatedAt: DateTime
}
MarketPrice = {
id: PositiveInt, value: number, currencyId: PositiveInt,
startsAt: integer, endsAt: integer,
startsAtIso: DateTime, endsAtIso: DateTime, intervalMinutes: number
}
TariffLookups = {
currencies:Array<{id:PositiveInt,code:string,sign:string,fractionalUnit:string,enabled:boolean,minimalValue:integer}>,
biddingZones:Array<{id:PositiveInt,code:string,name:string,currencyId:PositiveInt,enabled:boolean}>,
currencyRates:Array<{currencyId:PositiveInt,rate:number,updatedAt:DateTime}>,
componentTypes:NamedLookup[], seasons:NamedLookup[], tariffTypes:NamedLookup[]
}
Tarifu un komponentu piemēri:
{"name":"Public AC","currencyCode":"EUR","biddingZoneId":1,"tax":21}
{
"components": [
{"typeId":1,"seasonId":1,"priority":0,"price":0.25,"validFromHour":0,"validToHour":24}
]
}
Uzlādes profilu veidi
SchedulePeriod = { id: PositiveInt, startPeriod: number, limit: number, numberOfPhases: integer|null }
ChargingProfile = {
id: PositiveInt, cpoId: PositiveInt, label: string, description: string|null,
stackLevel: number, location: NamedLookup, purpose: NamedLookup,
kind: NamedLookup, recurrency: NamedLookup|null,
validFrom: DateTime|null, validTo: DateTime|null,
startSchedule: DateTime|null, durationSeconds: number|null,
rateUnit: NamedLookup, minChargingRate: number|null,
schedule: SchedulePeriod[], assignmentCount: integer,
createdAt: DateTime, updatedAt: DateTime
}
ProfileAssignment = {
id: PositiveInt, chargerId: PositiveInt, connectorId: integer,
synced: boolean, syncCode: integer,
syncStatus: "accepted"|"rejected"|"unknown",
profile: { id: PositiveInt, label: string, stackLevel: number, purpose: string, kind: string|null },
createdAt: DateTime, updatedAt: DateTime
}
ChargingProfileLookups = {
locations:NamedLookup[], purposes:NamedLookup[], kinds:NamedLookup[],
recurrencyKinds:NamedLookup[],
rateUnits:Array<{id:PositiveInt,name:string,supported:boolean}>,
allowedRateUnits:string[]
}
Izveides un grafika piemēri:
{
"label":"Depot cap","locationId":3,"stackLevel":1,"purposeId":1,"kindId":1,
"recurrencyKindId":null,"validFrom":null,"validTo":null,"startSchedule":null,
"rateUnitId":1,"minChargingRate":6,
"schedule":[{"startPeriod":0,"limit":32,"numberOfPhases":3}]
}
{"rateUnitId":1,"periods":[{"startPeriod":0,"limit":16,"numberOfPhases":3}]}
Lietotāju tipi
RFID = { id: PositiveInt, maskedUid: string, name: string|null, type: string, valid: boolean }
AccessItem = { id: PositiveInt, chargerId: PositiveInt, chargerName: string, expiresAt: DateTime|null, site: SiteRef|null }
Access = { allChargers: boolean, chargerIds: PositiveInt[], items: AccessItem[] }
Limit = { id: PositiveInt, limitTypeId: PositiveInt, label: string, energyValue: integer, timeValue: integer }
User = {
id: PositiveInt, membershipId: PositiveInt, name: string, email: string,
rfids: RFID[], access: AccessItem[], limitCount: integer
}
UserDetail = User & {
phone: string|null, createdAt: DateTime|null, limits: Limit[]
}
Vehicle = {
id: PositiveInt, name: string|null, provider: string|null, status: string|null,
vin: string|null, identifier: string|null, model: string|null,
batteryCapacityWh: number|null, createdAt: DateTime,
telemetry: { soc: number|null, chargeLimitSoc: number|null, recordedAt: DateTime|null }|null
}
LocalUser = {
id: PositiveInt, customerId: PositiveInt, name: string, email: string,
expiresAt: DateTime|null, systemManaged: boolean
}
LocalUserMutation = {
chargepointLocalUserId: PositiveInt,
customerId: PositiveInt,
expiryDate: DateTime|null,
customer: {} // `contractId` is removed by the workspace-admin response boundary
}
LocalUserUpdate = { id:PositiveInt, customerId:PositiveInt, expiresAt:DateTime|null }
Invitation = {
email:string, name:string, chargerIds:PositiveInt[], rfids:string[]
}
UserListResponse = {
items:User[], invitations:Invitation[], chargers:Array<{id:PositiveInt,name:string,identifier:string|null,site:SiteRef|null}>,
page:{ nextCursor:number|string|null, memberNextCursor:number|null, invitationNextCursor:string|null, limit:integer }
}
UserSession = {
id:PositiveInt, chargerId:PositiveInt, chargerName:string|null,
connectorId:PositiveInt, site:SiteRef|null, energyWh:number,
startedAt:DateTime|null, stoppedAt:DateTime|null
}
POST /chargers/:chargerId/local-users izmaiņu atbilde un POST /chargers/:chargerId/local-users/invitations esošā klienta rezultāts atgriež LocalUserMutation; PATCH /chargers/:chargerId/local-users/:localUserId atgriež LocalUserUpdate. Saraksta galapunkts izmanto LocalUser. Klientiem tie jāuztver kā apzināti atšķirīgi atbilžu tipi.
Lietotāju/uzaicinājumu/RFID/piekļuves piemēri:
{"email":"driver@example.com","name":"Example Driver"}
{
"email":"new.driver@example.com",
"name":"New Driver",
"rfid":"04AABBCCDD",
"allChargers":false,
"chargerIds":[11,12]
}
{"uid":"04AABBCCDD","name":"Blue card"}
{"allChargers":false,"chargerIds":[11,12]}
Veiksmīgas rakstīšanas darbības nekad neatgriež neapstrādātu RFID UID. Piemēram:
{"rfid":{"id":31,"maskedUid":"******CCDD","name":"Blue card","type":"RFID","valid":true}}
Tukšs un binārs veiksmīgas atbildes saturs
204nozīmē, ka nav atbildes satura.- Veiksmīga lādētāja QR atbilde satur PNG baitus, nevis JSON.
- Veiksmīgs pārskata eksports satur CSV vai PDF baitus, nevis JSON.
- JSON saturu, ko atgriež, ja kāds no binārajiem galapunktiem neizdodas, skatiet Atbilžu un kļūdu līgumā.
Atlikušie izmaiņu pieprasījumu satura piemēri
Ceļi šajā tikai piemēriem paredzētajā tabulā ir relatīvi pret /v2/admin; pilnie ceļi ir Galapunktu uzziņā. Garākie piemēri iepriekš aptver darbvietu, objektu, jaudas pārvaldību, lādētāju izveidi/pieslēgvietu iestatījumus, pārskatu grafikus, tarifus/komponentus, uzlādes profilus/grafikus, lietotājus/uzaicinājumus, RFID un piekļuves aizstāšanu. Visas pārējās izmaiņas ar saturu izmanto kādu no šīm precīzajām piemēru struktūrām:
| Galapunkts | JSON satura piemērs |
|---|---|
PATCH /chargers/:chargerId | {"name":"Warehouse east","siteId":4,"invertedRfid":false,"smartMode":1,"automationDisabled":false}; tiek pieņemta jebkura netukša apakškopa |
PATCH /chargers/:chargerId/credentials | {"password":"replacement-secret"} |
PATCH /chargers/:chargerId/public-listing | {"isPublic":true} |
PATCH /chargers/:chargerId/configuration | {"key":"HeartbeatInterval","value":"60"} |
POST /chargers/:chargerId/firmware | {"url":"https://firmware.example.com/charger-v2.bin"} |
POST /chargers/:chargerId/commands/reset | {"resetType":"Soft"} |
POST /chargers/:chargerId/commands/availability | {"availabilityType":"Operative"} |
POST /chargers/:chargerId/commands/trigger | {"messageType":"StatusNotification"} |
POST /chargers/:chargerId/commands/unlock | {"connectorId":1} |
POST /chargers/:chargerId/commands/composite-schedule | {"connectorId":0,"durationSeconds":86400,"chargingRateUnit":"W"} |
POST /chargers/:chargerId/tariff-assignments | {"tariffId":17,"connectorId":0} |
PATCH /chargers/:chargerId/tariff-assignments/:assignmentId | {"tariffId":17,"connectorId":1} |
POST vai PATCH /chargers/:chargerId/profile-assignments[...] | {"profileId":8,"connectorId":1} |
PATCH /users/:userId | {"name":"Updated Driver"} |
POST /users/invitations/resend vai DELETE /users/invitations | {"email":"new.driver@example.com"} |
PATCH /users/:userId/rfids/:rfidId | {"name":"Replacement label"}; null notīra etiķeti |
POST /users/:userId/limits | {"limitTypeId":1,"energyValue":20000,"timeValue":0} |
PATCH /users/:userId/limits/:limitId | {"energyValue":25000} |
POST /chargers/:chargerId/local-users | {"customerId":42,"expiresAt":"2026-12-31T23:59:59Z"} |
POST /chargers/:chargerId/local-users/invitations vai tā DELETE ekvivalents | {"email":"driver@example.com"} |
PATCH /chargers/:chargerId/local-users/:localUserId | {"expiresAt":null} |
Visām pārējām izmaiņām nav pieprasījuma satura. Tām joprojām nepieciešama tieši viena Idempotency-Key galvene.
Papildu veiksmīgu atbilžu piemēri
Tukši saraksti ir derīgi un padara augstākā līmeņa ietvarus nepārprotamus:
{"items":[],"metricsWindow":{"from":"2026-05-26T00:00:00.000Z","to":"2026-08-24T00:00:00.000Z","sessionLimit":10000,"sessionsIncluded":0,"totalsCapped":false},"connectorLookups":{"formats":[],"types":[],"powerTypes":[]}}
{"items":[],"pageTotals":{"sessions":0,"energyWh":0,"durationSeconds":0,"costs":[]},"page":{"limit":50,"nextCursor":null},"range":{"from":"2026-07-01T00:00:00.000Z","to":"2026-08-01T00:00:00.000Z","toExclusive":true}}
{"status":"Accepted"}
{"status":"Accepted","connectorResults":[{"connectorId":1,"status":"Accepted"}]}
{"sent":true,"format":"csv","rowCount":12,"range":{"from":"2026-07-01T00:00:00.000Z","to":"2026-08-01T00:00:00.000Z"}}
{"items":[],"invitations":[],"chargers":[],"page":{"nextCursor":null,"memberNextCursor":null,"invitationNextCursor":null,"limit":50}}
Atbildēm ar objektiem ievietojiet precīzi nosaukto DTO no iepriekšējām sadaļām Galapunktu uzziņā norādītajā ietvarā; piemēram, tarifa izveide ir { "tariff": Tariff }, profila izveide ir { "profile": ChargingProfile }, bet lietotāja izveide ir { "user": User }.