Skeemid ja näited

Admin API skeemid ja näited

See fail määrab Endpointide viites nimetatud korduvkasutatavad JSON-tüübid. ? tähendab sisendis valikulist; | null tähendab, et omadus on väljundis olemas ja võib olla null, kui endpoint ei ütle teisiti. DateTime on RFC 3339 string; päringu kuupäevad-kellaajad peavad sisaldama nihet.

Primitiiv- ja teatmetüübid

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 }

Tundmatuid tulevasi välju tuleks ignoreerida. ID-d on JSON-arvud, välja arvatud läbipaistmatud kursorid ja portaali hallatavad pääsutõendite ID-d. API ei tagasta tooreid RFID UID-sid, laadijate paroole, tööruumi pääsutõendeid, contractId, teenusepakkujate saladusi ega varjamata saladuselaadseid konfiguratsiooniväärtusi.

Päringu tüübiteisendus ja tundmatud omadused

API ei rakenda üht globaalset arvuteisenduse poliitikat:

  • Iga ressursitee ID ja arvuline päringuparameeter aktsepteerib kümnendstringi, näiteks "12", kui see vastab dokumenteeritud täisarvu/vahemiku piirangule.
  • Tööruumi countryId; asukoha countryId/timezoneId; laadija asukoha/pistiku ja käskude arvulised väljad; kõik tariifi arvulised väljad ja kõik laadimisprofiili arvulised väljad teisendatakse ka arvulistest JSON-stringidest.
  • Asukoha laius-/pikkuskraad, laadija smartMode, kõik võimsushalduse ja aruandeajakava arvud ning kasutaja/RFID/juurdepääsu/piirangute/kohaliku kasutaja sisu ID-d ja väärtused nõuavad JSON-arve ega läbi tüübiteisendust.
  • Tariifide, laadimisprofiilide, aruandeajakavade ja kasutajate sisuobjektid lükkavad tundmatud omadused veaga 422 tagasi. Tööruumi, asukoha, võimsushalduse, muude laadija-/aruandeobjektide ja päringute objektid ignoreerivad tundmatuid omadusi.

Need on transpordikäitumise üksikasjad, mitte soovitus: kliendid peaksid arvulised sisuväljad saatma JSON-arvudena.

Tööruumi ja asukoha tüübid

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 tagastab { site, recentSessions, totals, metricsWindow }. Selle site lisab omatava laadija/pistiku oleku asukoha põhiprojektsioonile; totals sisaldab sessions, energyWh, energyKwh, durationSeconds ja costs: Cost[].

Asukoha teatmeandmed on { countries: {countryId, countryCode, name}[], timezones: {timezoneId, name}[] } arvuliste ID-de ja stringnimede/-koodidega.

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[] }
}

Tööruumi osalise uuenduse ja vastuse näide:

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

Asukoha loomise/uuendamise näide (vaikeväärtustega väljad võib ära jätta):

{
  "name": "Main depot",
  "addressLine1": "1 Example Street",
  "city": "Riga",
  "countryId": 1,
  "timezoneId": 1,
  "latitude": 56.9496,
  "longitude": 24.1052
}

Võimsushalduse vastus

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

Täiendavate ühilduvusväljade täpsed nimed tekitab smartChargingCompatibility(); selle abifunktsiooni tagastustüüpi pole lähtekoodis eraldi nimetatud. See on ainus vastuseosa, mille suletud väljaloendit ei saa eksporditud tüübist määrata, seega märgitakse lisaväljad tahtlikult ebaselgeks, mitte ei mõelda välja.

Asendamise näide:

{
  "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": []}
      ]
    }
  ]
}

Laadijatüübid

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

Loendiprojektsioon lisab piiratud mõõdikuväljad ja tagastab metricsWindow; detailiprojektsioon kasutab ülaltoodud kuju. Tundlike võtmete konfiguratsiooniväärtused on täpselt "[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 }>
}

Edukas pistiku osaline uuendus tagastab täpselt { portId, connectorId, ocpiConnectorFormatEnumId, ocpiConnectorTypeEnumId, ocpiPowerTypeEnumId, maxVoltage, maxAmperage, maxElectricPower }.

connectorLookups sisaldab järgmisi teatmekujusid: vormingud kasutavad { ocpiConnectorFormatEnumId, name, description }; tüübid { ocpiConnectorTypeEnumId, name, description, icon }; voolutüübid { ocpiPowerTypeEnumId, name, shortDescr, description, numPhases }.

Loomise ja pistiku uuendamise näited:

{"name":"Warehouse 1","identifier":"cp-warehouse-1","password":"initial-secret","siteId":3}
{
  "connectorFormatId": 1,
  "connectorTypeId": 2,
  "powerTypeId": 1,
  "maxVoltage": 400,
  "maxAmperage": 32,
  "maxElectricPower": 22000
}

Käsuvastuste objektid sisaldavad status: string. Trigger sisaldab lisaks connectorResults: { connectorId: number, status: string }[]; koondajakava lisaks connectorId ja compositeSchedule (või null). Olekud on salvestatud OCPP/järgnevate süsteemide tulemused ja marsruut ei piira neid suletud loeteluga.

Aruandetüübid

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

Ajakava päringu ja vastuse näide:

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

Tariifitüübid

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[]
}

Tariifi ja komponentide näited:

{"name":"Public AC","currencyCode":"EUR","biddingZoneId":1,"tax":21}
{
  "components": [
    {"typeId":1,"seasonId":1,"priority":0,"price":0.25,"validFromHour":0,"validToHour":24}
  ]
}

Laadimisprofiilide tüübid

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[]
}

Loomise ja ajakava näited:

{
  "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}]}

Kasutajatüübid

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 muudatuse vastus ja POST /chargers/:chargerId/local-users/invitations olemasoleva kliendi tulemus tagastavad LocalUserMutation; PATCH /chargers/:chargerId/local-users/:localUserId tagastab LocalUserUpdate. Loendi endpoint kasutab LocalUser. Kliendid peavad neid käsitlema teadlikult erinevate vastusetüüpidena.

Kasutaja/kutse/RFID/juurdepääsu näited:

{"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]}

Edukad kirjutamised ei tagasta kunagi toorest RFID UID-d. Näiteks:

{"rfid":{"id":31,"maskedUid":"******CCDD","name":"Blue card","type":"RFID","valid":true}}

Tühjad ja kahendvormingus edukad vastused

  • 204 tähendab vastusesisu puudumist.
  • Edukas laadija QR-vastus on PNG-baidid, mitte JSON.
  • Edukas aruandeeksport on CSV- või PDF-baidid, mitte JSON.
  • Kummagi kahendendpointi nurjumise JSON-sisu kohta vt Vastuste ja vigade leping.

Ülejäänud muutmispäringute sisunäited

Selle ainult näiteid sisaldava tabeli teed on suhtelised /v2/admin suhtes; täispikad teed on Endpointide viites. Pikemad ülaltoodud näited hõlmavad tööruumi, asukohta, võimsushaldust, laadija loomist/pistikuseadeid, aruandeajakavu, tariife/komponente, laadimisprofiile/ajakavu, kasutajaid/kutseid, RFID-d ja juurdepääsu asendamist. Iga muu sisuga muudatus kasutab üht neist täpsetest näidiskujudest:

EndpointJSON-sisu näide
PATCH /chargers/:chargerId{"name":"Warehouse east","siteId":4,"invertedRfid":false,"smartMode":1,"automationDisabled":false}; aktsepteeritakse mis tahes mittetühja alamhulka
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 või PATCH /chargers/:chargerId/profile-assignments[...]{"profileId":8,"connectorId":1}
PATCH /users/:userId{"name":"Updated Driver"}
POST /users/invitations/resend või DELETE /users/invitations{"email":"new.driver@example.com"}
PATCH /users/:userId/rfids/:rfidId{"name":"Replacement label"}; null tühjendab sildi
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 või selle DELETE vaste{"email":"driver@example.com"}
PATCH /chargers/:chargerId/local-users/:localUserId{"expiresAt":null}

Muudel muudatustel pole päringu sisu. Need nõuavad endiselt täpselt üht Idempotency-Key päist.

Täiendavad edukate vastuste näited

Tühjad loendid on kehtivad ja muudavad ülataseme ümbrised üheselt mõistetavaks:

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

Objekte sisaldavate vastuste puhul asendage Endpointide viites loetletud ümbrises ülaltoodud jaotiste täpne nimega DTO; näiteks tariifi loomine on { "tariff": Tariff }, profiili loomine { "profile": ChargingProfile } ja kasutaja loomine { "user": User }.