Galapunkti

Darbvietas administrēšanas API galapunktu pieprasījumi un atbildes

Šī ir katra /v2/admin galapunkta pieprasījumu/atbilžu uzziņa. Autentifikācija, idempotence, biežuma ierobežojumi, marķieru izveide un tvērumu nozīme ir dokumentēta Darbvietas administrēšanas API. Atkārtoti lietojamie lauku līmeņa tipi un piemēri ir sadaļā Shēmas un piemēri. Katru galapunkta rindu lasiet kopā ar Atbilžu un kļūdu līgumu, kur uzskaitīts viss iespējamais kopīgo un galapunktam specifisko neveiksmīgo atbilžu saturs.

Kopīgais līgums

Katrs ceļš sākas ar izvietoto app-api izcelsmi. Darbvieta tiek noteikta tikai pēc autentificētā marķiera; klienti nedrīkst sūtīt cpoId. Visas dokumentētās :...Id resursu ceļu vērtības ir pozitīvi decimāli veseli skaitļi. Katrā pieprasījumā nepieciešama tieši viena:

Authorization: Bearer <workspace-access-token>

Pieprasījumiem, kas parādīti ar JSON saturu, nepieciešams Content-Type: application/json. Visām izmaiņām nepieciešams Idempotency-Key (POST, PUT, PATCH un DELETE), tostarp POST /v2/admin/reports/send; ja rindā nav norādīts citādi, veiksmīgās atbildes satura tips ir application/json, JSON datumi ir RFC 3339 virknes, bet skaitļi ir JSON skaitļi.

Katrs pieprasījums var ietvert X-Request-Id un X-Error-Format: envelope; skatiet Atbilžu un kļūdu līgumu. Šīs galvenes nemaina veiksmīgo atbilžu shēmas.

Tālāk izmantotie apzīmējumi:

  • none nozīmē, ka nav pieprasījuma satura. DELETE, kam dokumentēts JSON saturs, joprojām prasa šo saturu.
  • ? apzīmē neobligātu rekvizītu vai vaicājuma parametru.
  • T | null nozīmē, ka rekvizīts ir klātesošs un var būt null.
  • 204 empty nozīmē, ka nav atbildes satura.
  • CursorPage<T> nozīmē { items: T[], nextCursor: number|string|null }, izņemot gadījumus, kad rinda skaidri nosauc page vai pagination objektu.
  • Visos ligzdotu resursu neatrašanas gadījumos, tostarp citas darbvietas ID gadījumā, tiek izmantots 404 { "error": "Workspace resource not found", "code": "RESOURCE_NOT_FOUND" }, ja vien funkcija nedokumentē konkrētāku konfliktu.

Kopīgās pieprasījumu shēmas

Darbvietu un objektu ievaddati

WorkspacePatch = {
  name?: string(1..100), email?: email|null, website?: string|null,
  addressLine1?: string|null, addressLine2?: string|null,
  postalCode?: string|null, city?: string|null, state?: string|null,
  countryId?: positive integer
} // at least one property

SiteInput = {
  name: string(1..255), description?: string|null = null,
  addressLine1?: string|null = null, addressLine2?: string|null = null,
  postalCode?: string|null = null, city?: string|null = null, state?: string|null = null,
  countryId: positive integer, timezoneId: positive integer,
  latitude?: number[-90,90]|null = null, longitude?: number[-180,180]|null = null
}

Jaudas pārvaldības ievaddati

PowerConfigurationInput = { pools: PowerPoolInput[0..200] }
PowerPoolInput = {
  id?: positive integer|null, name?: string(0..255),
  limit: integer[0,100000000], meterSources?: ExternalMeterInput[0..16],
  children?: (PowerPoolInput | ChargerPoolChild)[0..1000]
}
ChargerPoolChild = { chargepointId: positive integer, priority?: integer[-1000000,1000000] }
ExternalMeterInput = {
  id?: positive integer|null, sourceId?: positive integer|null,
  provider?: "perific", name?: string(0..255), externalId: string(1..80),
  measurementMode?: "available_headroom"|"external_non_ev_load_only"|"total_site_load_including_ev",
  valueMode?: "perific_relative"|"perific_direct"|"perific_meter",
  reserveA?: integer[0,100000], offlineSafeA?: integer[0,100000],
  ttlSeconds?: integer[30,86400], enabled?: boolean
}

Lādētāju ievaddati

ChargerCreate = { name: string(1..40), identifier: string(1..40), password?: string(0..40) = "", siteId: positive integer }
ChargerPatch = {
  name?: string(1..40), siteId?: positive integer, invertedRfid?: boolean,
  smartMode?: integer[0,3], automationDisabled?: boolean
} // at least one
ConnectorPatch = {
  connectorFormatId: positive integer, connectorTypeId: positive integer,
  powerTypeId: positive integer, maxVoltage: integer[1,10000],
  maxAmperage: integer[1,10000], maxElectricPower: integer[1,100000000]
}

Pārskatu ievaddati

ReportFilters = {
  from?: RFC3339, to?: RFC3339, siteId?: positive integer,
  chargerId?: positive integer, userId?: positive integer,
  anonymous?: true|false|1|0, active?: true|false|1|0
}
ReportScheduleInput = {
  enabled: boolean, recipientEmail: email(max 255; may be empty only when disabled), format: "csv"|"pdf",
  sendDay: integer[1,28], sendTime: UTC "HH:mm"
}

Pārskatu diapazoniem jāatbilst from < to, un tie nedrīkst pārsniegt 90 dienas. Ja nav norādīti, tiek izmantotas pēdējās 90 dienas. userId un anonymous=true savstarpēji izslēdzas. Plānotie eksporti atgūst izlaistu UTC minūti un izmanto ierobežotus atkārtotus mēģinājumus (5/10 minūšu aizkave, 30 minūšu novecojušas rezervācijas termiņš, trīs mēģinājumi).

Tarifu ievaddati

TariffInput = {
  name: string(1..64),
  exactly one of currencyId: positive integer, currencyCode: 3 letters, currency: 3 letters,
  biddingZoneId?: positive integer|null, tax?: finite number
}
TariffComponentInput = {
  typeId: positive integer, seasonId: positive integer, priority?: finite number,
  price: finite number, validFromMonth?: finite number, validToMonth?: finite number,
  validFromWeekDay?: finite number, validToWeekDay?: finite number,
  validFromHour?: finite number, validToHour?: finite number
}
TariffAssignmentCreateInput = { tariffId: positive integer, connectorId?: nonnegative integer }
TariffAssignmentUpdateInput = { tariffId: positive integer, connectorId: positive integer }

Uzlādes profilu ievaddati

ChargingProfileInput = {
  label: string(1..40), locationId: positive integer, stackLevel: nonnegative number,
  purposeId: positive integer, kindId: positive integer,
  recurrencyKindId?: positive integer|null, validFrom?: RFC3339|null,
  validTo?: RFC3339|null, startSchedule?: RFC3339|null,
  rateUnitId: positive integer, minChargingRate?: nonnegative number|null
}
ChargingProfileCreate = ChargingProfileInput & { schedule?: SchedulePeriod[0..256] }
SchedulePeriod = { startPeriod: nonnegative number, limit: nonnegative number, numberOfPhases?: positive integer|null }
ChargingScheduleInput = { rateUnitId: positive integer, periods: SchedulePeriod[1..256] }
ProfileAssignmentInput = { profileId: positive integer, connectorId?: nonnegative integer }

Lietotāju ievaddati

UserCreate = { email: email(max 255), name: string(1..255) }
InvitationInput = {
  email: email, name?: string|null, rfid?: string|null,
  allChargers?: boolean, chargerIds?: unique positive integer[0..500]
} // chargerIds must be non-empty unless allChargers=true
AccessInput = { allChargers?: boolean, chargerIds?: unique positive integer[0..500] }
LimitCreate = { limitTypeId: positive integer, energyValue?: nonnegative integer = 0, timeValue?: nonnegative integer = 0 }
LimitPatch = { limitTypeId?: positive integer, energyValue?: nonnegative integer, timeValue?: nonnegative integer }

Veidojot ierobežojumu, vismaz vienai no energyValue vai timeValue vērtībām jābūt lielākai par nulli. E-pasta adrešu sākuma un beigu atstarpes tiek noņemtas, un adreses tiek pārveidotas uz mazajiem burtiem. RFID UID tiek pieņemti tikai rakstīšanas darbībās un maskēti lasīšanas atbildēs.

Atbilžu DTO kopsavilkums

Galapunktu tabulas rāda katru augstākā līmeņa atbildes ietvaru. Šie ir galvenie atkārtoti lietojamie DTO tajos:

DTOLauki
Workspaceid, name, email, website, address { line1, line2, postalCode, city, state, countryId, countryCode, countryName }, createdAt, updatedAt
Siteid, name, description, address, timezone { id, name }, latitude, longitude, chargerCount; detaļas pievieno normalizētu chargers un pieslēgvietas stāvokli
GeocodeCandidateplaceId, displayName, latitude, longitude; pakalpojuma sniedzēja piekļuves dati un tam specifiskie metadati nekad netiek atgriezti
MetricsWindowfrom, to, sesiju ierobežojumi/skaiti un totalsCapped, ja piemērojams
Chargerid, name, identifier, cpoId, site, normalizēts status, isPublic, RFID/viedās/automatizācijas karodziņi, provisioned, connection, evses, connectors, createdAt, updatedAt; detaļas pievieno aizklātu configuration, firmware un skaitus
ConnectorportId, connectorId, pieslēgvietas uzziņu ID, maxVoltage, maxAmperage, maxElectricPower
ReportSessionid, lādētājs/objekts, porta un pieslēgvietas ID, minimizēts lietotājs, active, energyWh, sākums/beigas/ilgums un neto/nodokļa/kopējās izmaksas pa valūtām
ReportScheduleid, workspaceId, enabled, recipientEmail, format, UTC sendDay/sendTime, izveides/atjaunināšanas un droši pēdējās piegādes metadati, tostarp mēģinājumu skaits
Tariffid, cpoId, name, veida/objekta/valūtas/tirdzniecības zonas objekti, tax, fallbackPrice, faktiskais price, components, assignmentCount
ChargingProfileid, cpoId, label, description, stackLevel, vietas/mērķa/veida/atkārtošanās/intensitātes mērvienības objekti, derīgums, grafiks, assignmentCount, laikspiedoli
Userid, membershipId, name, email, maskēts rfids, lādētāja access, limitCount; detaļas pievieno phone, createdAt un limits. OCPP autorizācijas dati, piemēram, contractId, nekad netiek atgriezti.
RFIDid, maskedUid, name, type, valid; neapstrādāts UID nekad netiek atgriezts
AccessallChargers, sakārtots chargerIds un items, kas satur piešķīruma/lādētāja/objekta/termiņa metadatus
Limitid, limitTypeId, label, energyValue, timeValue
LocalUserSaraksta DTO: id, customerId, name, email, expiresAt, systemManaged. Vietējo lietotāju izmaiņas izmanto atšķirīgās LocalUserMutation/LocalUserUpdate struktūras sadaļā Shēmas un piemēri.

Uzziņu objektus atgriež sarakstu/detaļu maršruti, lai izsaucēji varētu atrast derīgus ID. Nezināmus pievienotus laukus uzskatiet par saderīgiem ar turpmākām versijām un gadījumus atšķiriet tikai pēc dokumentētiem stabiliem laukiem un kļūdu kodiem.

Darbvietu galapunkti

Metode un ceļšTvērumsPieprasījumsVeiksmīga atbilde
GET /v2/adminworkspaces:readSaturs: nav200 { workspace: Workspace }
PATCH /v2/adminworkspaces:updateSaturs: WorkspacePatch200 { workspace: Workspace }
GET /v2/admin/dashboardworkspaces:read + reports:readSaturs/vaicājums: nav200 { window, stats { chargerCount, onlineChargerCount, siteCount, userCount }, sessions: DashboardSession[], analytics }; sesijas ierobežotas līdz 1 000 sesijām 90 dienās

Objektu un jaudas pārvaldības galapunkti

Metode un ceļšTvērumsPieprasījumsVeiksmīga atbilde
GET /v2/admin/sitessites:readSaturs/vaicājums: nav200 { items: Site[], metricsWindow: MetricsWindow, lookups { countries, timezones } }
GET /v2/admin/sites/geocodesites:readVaicājums: neobligāts street (maks. 160), city, state, country (katram maks. 100), countryCode (maks. 2); neobligāta Accept-Language galvene; nepieciešamas vismaz divas kopējās ielas/pilsētas/reģiona rakstzīmes200 { results: GeocodeCandidate[] }; identiski vienlaicīgi meklējumi tiek apvienoti, un pakalpojuma sniedzēja darbs izmanto ierobežotu secīgu rindu un ierobežotu servera puses kešatmiņu; nederīgi meklējumi atgriež 400 INVALID_GEOCODE_QUERY, rindas piesātinājums atgriež 429 GEOCODING_BUSY ar Retry-After, bet pakalpojuma sniedzēja kļūmes atgriež 502 GEOCODING_UNAVAILABLE
POST /v2/admin/sitessites:createSaturs: SiteInput201 { site: Site }
GET /v2/admin/sites/:siteIdsites:read + reports:readSaturs/vaicājums: nav200 { site: SiteDetail, recentSessions: SiteSession[], totals, metricsWindow }
PATCH /v2/admin/sites/:siteIdsites:updateSaturs: pilns SiteInput200 { site: Site }
DELETE /v2/admin/sites/:siteIdsites:deleteSaturs: nav204 empty; objekts, kas nav tukšs, atgriež 409 SITE_NOT_EMPTY
GET /v2/admin/sites/:siteId/power-managementsites:power-managementSaturs/vaicājums: nav200 { configuration: PowerConfiguration }, kas satur piederošo objektu, lādētājus/pieslēgvietas, grupas, skaitītāju avotus, piešķīrumus un saderības stāvokli
PUT /v2/admin/sites/:siteId/power-managementsites:power-managementSaturs: PowerConfigurationInput200 { configuration: PowerConfiguration }; OCPP atteikums, noildze vai vienlaicīga izmaiņa atgriež 409 POWER_MANAGEMENT_CONFLICT, nepiemērojot aizstāšanu

Lādētāju galapunkti

Metode un ceļšTvērumsPieprasījumsVeiksmīga atbilde
GET /v2/admin/chargerschargers:readSaturs/vaicājums: nav200 { items: Charger[], metricsWindow: MetricsWindow, connectorLookups { formats, types, powerTypes } }
POST /v2/admin/chargerschargers:createSaturs: ChargerCreate; identifikators tiek pārveidots uz lielajiem burtiem201 { charger: Charger }; parole nekad netiek atgriezta
GET /v2/admin/chargers/:chargerIdchargers:readSaturs/vaicājums: nav200 { charger: ChargerDetail }
PATCH /v2/admin/chargers/:chargerIdchargers:updateSaturs: ChargerPatch200 { charger: ChargerDetail }
DELETE /v2/admin/chargers/:chargerIdchargers:deleteSaturs: nav204 empty
PATCH /v2/admin/chargers/:chargerId/credentialschargers:credentialsSaturs: { password: string(0..40) }200 { success: true }
PATCH /v2/admin/chargers/:chargerId/connectors/:portIdchargers:connector-settingsSaturs: ConnectorPatch200 { connector: Connector }
PATCH /v2/admin/chargers/:chargerId/public-listingchargers:publicSaturs: { isPublic: boolean }200 { isPublic: boolean }; neizpildīta gatavība atgriež 409 CHARGER_CONFLICT
GET /v2/admin/chargers/:chargerId/public-readinesschargers:readSaturs/vaicājums: nav200 { readiness: { ready, missingRequirements, connectorIds, missingTariffConnectorIds, ...commercialState } }
GET /v2/admin/chargers/:chargerId/logschargers:readVaicājums: cursor?, limit?=50 (1..200), from?, to?, action?, direction?, levelId?200 { items: RedactedOcppLog[], nextCursor: number or null }
GET /v2/admin/chargers/:chargerId/sessionschargers:read + reports:readVaicājums: page?=1, limit?=25 (1..100), from?, to?, customerId?: positive integer or "unknown"200 { items: ChargerSession[], pagination { page, limit, total, totalPages }, filters { customers }, totals, totalsCapped }
GET /v2/admin/chargers/:chargerId/qrchargers:readVaicājums: connector?: integer[0,255]200 image/png binārs saturs, 300 px, Content-Disposition: inline, Cache-Control: no-store
GET /v2/admin/chargers/:chargerId/composite-scheduleschargers:readVaicājums: cursor?, limit?=20 (1..50), connectorId?200 { items: CompositeSchedule[], nextCursor: number or null }
GET /v2/admin/chargers/:chargerId/configurationchargers:readSaturs/vaicājums: nav200 { items: ChargerConfiguration[] }; noslēpumiem līdzīgās vērtības ir [REDACTED]
PATCH /v2/admin/chargers/:chargerId/configurationchargers:configurationSaturs: { key: string(1..50), value: string(0..500) }200 { status: string }, kur statuss ir lādētāja/OCPP rezultāts
POST /v2/admin/chargers/:chargerId/configuration/reloadchargers:configurationSaturs: nav200 { status: string }
GET /v2/admin/chargers/:chargerId/firmwarechargers:readSaturs/vaicājums: nav200 { firmware: { status, notifiedAt, currentVersion, bootNotifiedAt } }
POST /v2/admin/chargers/:chargerId/firmwarechargers:firmwareSaturs: { url: HTTP-or-HTTPS URL, max 2048 characters }202 { status: string }
POST /v2/admin/chargers/:chargerId/commands/resetchargers:commandsSaturs: { resetType: "Soft" or "Hard" }200 { status: string }
POST /v2/admin/chargers/:chargerId/commands/availabilitychargers:commandsSaturs: { availabilityType: "Operative" or "Inoperative" }200 { status: string }
POST /v2/admin/chargers/:chargerId/commands/triggerchargers:commandsSaturs: { messageType: "BootNotification", "Heartbeat", "StatusNotification", or "MeterValues" }200 { status: string, connectorResults: { connectorId, status }[] }
POST /v2/admin/chargers/:chargerId/commands/unlockchargers:commandsSaturs: { connectorId: positive integer }200 { status: string }
POST /v2/admin/chargers/:chargerId/commands/composite-schedulechargers:commandsSaturs: { connectorId: nonnegative integer, durationSeconds?: integer[60,604800], chargingRateUnit?: "W" or "A" }200 { status: string, connectorId: number, compositeSchedule: CompositeSchedule or null }

Pārskatu galapunkti

Metode un ceļšTvērumsPieprasījumsVeiksmīga atbilde
GET /v2/admin/reports/datareports:readVaicājums: ReportFilters, necaurspīdīgs cursor?, limit?=50 (1..100)200 { items: ReportSession[], pageTotals, page { limit, nextCursor }, range { from, to, toExclusive: true } }
GET /v2/admin/reports/schedulereports:readSaturs/vaicājums: nav200 { schedule: ReportSchedule or null }
PUT /v2/admin/reports/schedulereports:schedulesSaturs: stingrs ReportScheduleInput200 { schedule: ReportSchedule }
POST /v2/admin/reports/sendreports:sendSaturs: nav; Idempotency-Key galvene ir obligāta200 { sent: true, format: "csv" or "pdf", rowCount: number, range { from, to } }; ja nav saglabāta grafika, atgriež 409 REPORT_SCHEDULE_REQUIRED
GET /v2/admin/reports/measurementsreports:readVaicājums: obligāts transactionLogId, necaurspīdīgs cursor?, limit?=500 (1..1000)200 { transactionLogId, measurements: { name, unit, lines[] }[], page { limit, nextCursor, sampleValuesTruncated, sampleLimitPerMeterValue: 64 } }
GET /v2/admin/reports/exportreports:exportVaicājums: ReportFilters, format?="csv" or "pdf"200 binārs CSV/PDF ar pielikuma faila nosaukumu, Cache-Control: private, no-store, X-Content-Type-Options: nosniff; vairāk nekā 2 000 rindu atgriež 422 REPORT_EXPORT_ROW_LIMIT

Tarifu galapunkti

Metode un ceļšTvērumsPieprasījumsVeiksmīga atbilde
GET /v2/admin/tariffstariffs:readSaturs/vaicājums: nav200 { items: Tariff[], lookups { currencies, biddingZones, currencyRates, componentTypes, seasons, tariffTypes } }
POST /v2/admin/tariffstariffs:createSaturs: TariffInput201 { tariff: Tariff }
GET /v2/admin/tariffs/:tariffIdtariffs:readSaturs/vaicājums: nav200 { tariff: Tariff, lookups }
PATCH /v2/admin/tariffs/:tariffIdtariffs:updateSaturs: pilns TariffInput200 { tariff: Tariff }
PUT /v2/admin/tariffs/:tariffId/componentstariffs:componentsSaturs: { components: TariffComponentInput[0..256] }200 { tariff: Tariff, components: TariffComponent[] }
DELETE /v2/admin/tariffs/:tariffIdtariffs:deleteSaturs: nav204 empty; atsauces uz uzlādes ierakstiem atgriež 409 TARIFF_CONFLICT
GET /v2/admin/tariffs/:tariffId/market-pricestariffs:readVaicājums: obligāts startsAt nenegatīvs Unix laikspiedols200 { items: { id, value, currencyId, startsAt, endsAt, startsAtIso, endsAtIso, intervalMinutes }[], truncated: boolean }; ne vairāk kā 10 000 rindu
GET /v2/admin/chargers/:chargerId/tariff-assignmentschargers:tariff-assignments + tariffs:readSaturs/vaicājums: nav200 { items: TariffAssignment[], tariffs: Tariff[] }
POST /v2/admin/chargers/:chargerId/tariff-assignmentschargers:tariff-assignments + tariffs:assignSaturs: TariffAssignmentCreateInput; izlaists connectorId vai connectorId=0 nozīmē visas pieslēgvietas201 { assignments: TariffAssignment[] }
PATCH /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentIdchargers:tariff-assignments + tariffs:assignSaturs: TariffAssignmentUpdateInput; pieslēgvieta ir obligāta un nevar būt 0200 { assignment: TariffAssignment }
DELETE /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentIdchargers:tariff-assignments + tariffs:assignSaturs: nav204 empty

TariffAssignment satur id, chargerId, connectorId, drošu tarifa/valūtas kopsavilkumu, createdAt un updatedAt.

Uzlādes profilu galapunkti

Metode un ceļšTvērumsPieprasījumsVeiksmīga atbilde
GET /v2/admin/charging-profileschargingProfiles:readSaturs/vaicājums: nav200 { items: ChargingProfile[], lookups { locations, purposes, kinds, recurrencyKinds, rateUnits, allowedRateUnits } }
POST /v2/admin/charging-profileschargingProfiles:createSaturs: ChargingProfileCreate201 { profile: ChargingProfile }
GET /v2/admin/charging-profiles/:profileIdchargingProfiles:readSaturs/vaicājums: nav200 { profile: ChargingProfile, lookups, isEditBlocked: boolean, usage { simpleChargingSchedule, smartSchedule, chargePoolChargepoint, isUsed } }
PATCH /v2/admin/charging-profiles/:profileIdchargingProfiles:updateSaturs: pilns ChargingProfileInput200 { profile: ChargingProfile, ocppSync: OcppCommandResult[] }
PUT /v2/admin/charging-profiles/:profileId/schedulechargingProfiles:updateSaturs: ChargingScheduleInput200 { profile: ChargingProfile, schedule: SchedulePeriod[], ocppSync: OcppCommandResult[] }
DELETE /v2/admin/charging-profiles/:profileIdchargingProfiles:deleteSaturs: nav204 empty tikai pēc tam, kad visi piešķirtie lādētāji pieņem notīrīšanu un stāvoklis ir atkārtoti validēts; citādi 409, un profils paliek
GET /v2/admin/chargers/:chargerId/profile-assignmentschargers:profile-assignments + chargingProfiles:readSaturs/vaicājums: nav200 { items: ProfileAssignment[], profiles: ChargingProfile[] }
POST /v2/admin/chargers/:chargerId/profile-assignmentschargers:profile-assignments + chargingProfiles:assignSaturs: ProfileAssignmentInput201 { assignment: ProfileAssignment, ocpp: OcppCommandResult }
PATCH /v2/admin/chargers/:chargerId/profile-assignments/:assignmentIdchargers:profile-assignments + chargingProfiles:assignSaturs: ProfileAssignmentInput200 { assignment: ProfileAssignment, ocpp: OcppCommandResult }
DELETE /v2/admin/chargers/:chargerId/profile-assignments/:assignmentIdchargers:profile-assignments + chargingProfiles:assignSaturs: nav204 empty pēc sinhronizētas notīrīšanas

ProfileAssignment satur savu piešķīruma ID, lādētāja/pieslēgvietas ID un drošu profila kopsavilkumu. OCPP rezultātu objekti atklāj stabilu pieprasījuma/statusa informāciju, bet nekad piekļuves datus.

Lietotāju, RFID, piekļuves, ierobežojumu un vietējo lietotāju galapunkti

Metode un ceļšTvērumsPieprasījumsVeiksmīga atbilde
GET /v2/admin/usersusers:readVaicājums: statusam atbilstošs cursor? (members: pozitīvs skaitlis; invitations: autentificēts necaurspīdīgs i2.*; all: vecā skaitliskā dalībnieku turpinājuma vērtība vai autentificēts necaurspīdīgs apvienots a2.*), limit?=50 (1..100), status?="all", "members", or "invitations"; neobligāta X-Admin-User-Search galvene (maks. 100)200 { items: User[], invitations: Invitation[], chargers: ChargerSummary[], page { nextCursor, memberNextCursor, invitationNextCursor, limit } }; uzaicinājumi tiek lapoti un aizpildīti ar vienu un to pašu normalizēto e-pasta izteiksmi, lai vecais burtu reģistrs vai atstarpes nevarētu paslēpt rindas; kursori ir saistīti ar darbvietu un meklēšanas filtru, nesatur lasāmu e-pasta adresi un jāatgriež nemainīti; all kursori neatkarīgi virza dalībnieku un uzaicinājumu plūsmas
POST /v2/admin/usersusers:createSaturs: UserCreate; klientam jau jābūt reģistrētam201 { user: User }; nezināma e-pasta adrese atgriež resursu uzskaitīšanu nepieļaujošu 404 RESOURCE_NOT_FOUND saturu, un tai jāizmanto uzaicinājumi
POST /v2/admin/users/invitationsusers:invitations + users:access; papildus users:rfid, ja norādīts rfidSaturs: InvitationInput200 or 201 { result }; piesaistītais rezultāts ir { kind:"attached", user, accessChanged, rfidChanged }; gaidošais rezultāts ir { kind:"invited", email, name, maskedRfid, chargerIds, createdCount, emailSent, emailRetryReady, alreadyInvited }
POST /v2/admin/users/invitations/resendusers:invitationsSaturs: { email: email }200 { result: { targetedChargers, emailSent, emailRetryReady } }; tiek piemērots saņēmējam globāls nogaidīšanas periods
DELETE /v2/admin/users/invitationsusers:invitationsSaturs: { email: email }204 empty
GET /v2/admin/users/:userIdusers:read + reports:readSaturs/vaicājums: nav200 { user: UserDetail, sessions: UserSession[], totals { count, energyWh, durationSeconds }, window, limitTypes, chargers }; ne vairāk kā 200 sesiju 90 dienās
PATCH /v2/admin/users/:userIdusers:updateSaturs: { name: string(1..255) }200 { user: User }
DELETE /v2/admin/users/:userIdusers:deleteSaturs: nav204 empty
GET /v2/admin/users/:userId/vehiclesusers:readVaicājums: skaitlisks cursor?, limit?=50 (1..100)200 { items: Vehicle[], page { nextCursor, limit } }; transportlīdzekļa DTO ietver drošus pakalpojuma sniedzēja/statusa/modeļa/telemetrijas laukus
GET /v2/admin/users/:userId/rfidsusers:readSaturs/vaicājums: nav200 { items: RFID[] }; UID tiek maskēti
POST /v2/admin/users/:userId/rfidsusers:rfidSaturs: { uid: string(1..36), name?: string or null }201 { rfid: RFID }; neapstrādāts UID netiek atkārtots atbildē
PATCH /v2/admin/users/:userId/rfids/:rfidIdusers:rfidSaturs: { name: string or null }200 { rfid: RFID }
DELETE /v2/admin/users/:userId/rfids/:rfidIdusers:rfidSaturs: nav204 empty
GET /v2/admin/users/:userId/accessusers:readSaturs/vaicājums: nav200 { access: Access }
PUT /v2/admin/users/:userId/accessusers:accessSaturs: AccessInput200 { access: Access }
DELETE /v2/admin/users/:userId/access/:accessIdusers:accessSaturs: nav204 empty
GET /v2/admin/users/:userId/limitsusers:readSaturs/vaicājums: nav200 { items: Limit[] }
POST /v2/admin/users/:userId/limitsusers:limitsSaturs: LimitCreate201 { limit: Limit }
PATCH /v2/admin/users/:userId/limits/:limitIdusers:limitsSaturs: LimitPatch, vismaz viens rekvizīts200 { limit: Limit }
DELETE /v2/admin/users/:userId/limits/:limitIdusers:limitsSaturs: nav204 empty
GET /v2/admin/chargers/:chargerId/local-userschargers:read + users:readSaturs/vaicājums: nav200 { charger: ChargerSummary, items: LocalUser[], invitations: { email }[], availableMembers: [] }; API apzināti izlaiž portāla plašo pieejamo dalībnieku direktoriju
POST /v2/admin/chargers/:chargerId/local-userschargers:local-users + users:accessSaturs: { customerId: positive integer, expiresAt?: RFC3339 or null }201 { localUser: LocalUserMutation }
POST /v2/admin/chargers/:chargerId/local-users/invitationschargers:local-users + users:invitations + users:accessSaturs: { email: email }200 or 201 { result }; esošs klients: { invited:false, localUser: LocalUserMutation }; uzaicinājums: { invited:true, alreadyInvited, emailSent, emailRetryReady }
DELETE /v2/admin/chargers/:chargerId/local-users/invitationschargers:local-users + users:invitationsSaturs: { email: email }204 empty
PATCH /v2/admin/chargers/:chargerId/local-users/:localUserIdchargers:local-users + users:accessSaturs: { expiresAt: RFC3339 or null }200 { localUser: LocalUserUpdate }
DELETE /v2/admin/chargers/:chargerId/local-users/:localUserIdchargers:local-users + users:accessSaturs: nav204 empty

Tagless sistēmas lietotājs ir aizsargāts pret šīm darbībām. Uzaicinājuma e-pasta kļūmes atgriež drošu piegādes stāvokli, neatklājot SMTP detaļas; izsaucēji var atkārtot mēģinājumu, ja emailRetryReady ir patiess.

Bināras atbildes

Divas galapunktu grupas veiksmīgā gadījumā neatgriež JSON:

GalapunktsSatura tipsSvarīgas galvenes
Lādētāja QRimage/pngCache-Control: no-store, Content-Disposition: inline, X-Content-Type-Options: nosniff
Pārskata eksportstext/csv; charset=utf-8 vai application/pdfCache-Control: private, no-store, Content-Disposition: attachment, X-Content-Type-Options: nosniff

Bināro galapunktu kļūdas joprojām ir JSON formātā.