Galiniai taškai

Darbo srities administravimo API galinių taškų užklausos ir atsakymai

Tai kiekvieno /v2/admin galinio taško užklausų ir atsakymų žinynas. Autentifikavimas, idempotentiškumas, užklausų dažnio ribos, prieigos raktų kūrimas ir prieigos sričių reikšmė aprašyti Darbo srities administravimo API. Pakartotinai naudojami laukų tipai ir pavyzdžiai pateikti Schemose ir pavyzdžiuose. Kiekvieną galinio taško eilutę skaitykite kartu su Atsakymų ir klaidų sutartimi, kurioje išvardytas visas galimas bendras ir konkrečiam taškui būdingas nesėkmingų atsakymų turinys.

Bendra sutartis

Kiekvienas kelias prasideda įdiegtos app-api paslaugos pradžios adresu. Darbo sritis nustatoma tik iš autentifikuoto prieigos rakto; klientai negali siųsti cpoId. Visos dokumentuotos :...Id išteklių kelio reikšmės yra teigiami dešimtainiai sveikieji skaičiai. Kiekvienai užklausai reikia tiksliai vienos:

Authorization: Bearer <workspace-access-token>

Užklausoms su nurodytu JSON turiniu reikia Content-Type: application/json. Visoms duomenų keitimo operacijoms reikia Idempotency-Key (POST, PUT, PATCH ir DELETE), įskaitant POST /v2/admin/reports/send; jei eilutėje nenurodyta kitaip, sėkmingo atsakymo turinio tipas yra application/json, JSON datos yra RFC 3339 eilutės, o skaičiai — JSON skaičiai.

Kiekvienoje užklausoje gali būti X-Request-Id ir X-Error-Format: envelope; žr. Atsakymų ir klaidų sutartį. Šios antraštės nekeičia sėkmingų atsakymų schemų.

Toliau naudojami žymėjimai:

  • none reiškia, kad užklausos turinio nėra. DELETE, kuriam dokumentuotas JSON turinys, vis tiek jo reikalauja.
  • ? žymi neprivalomą savybę arba užklausos parametrą.
  • T | null reiškia, kad savybė yra ir gali būti null.
  • 204 empty reiškia, kad atsakymo turinio nėra.
  • CursorPage<T> reiškia { items: T[], nextCursor: number|string|null }, išskyrus atvejus, kai eilutėje aiškiai įvardytas page arba pagination objektas.
  • Visiems nerastiems įdėtiesiems ištekliams, įskaitant kitos darbo srities ID, naudojamas 404 { "error": "Workspace resource not found", "code": "RESOURCE_NOT_FOUND" }, nebent funkcija dokumentuoja konkretesnį konfliktą.

Bendros užklausų schemos

Darbo srities ir vietos įvesties duomenys

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
}

Galios valdymo įvestis

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
}

Įkroviklio įvesties duomenys

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

Ataskaitų įvesties duomenys

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

Ataskaitų intervalai turi atitikti from < to ir negali viršyti 90 dienų. Nepateikus intervalo naudojamos paskutinės 90 dienų. userId ir anonymous=true negali būti naudojami kartu. Suplanuoti eksportai kompensuoja praleistą UTC minutę ir naudoja ribotus pakartojimus (5 / 10 minučių atidėjimas, 30 minučių pasenusios užduoties rezervacijos laikas, trys bandymai).

Tarifų įvesties duomenys

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 }

Įkrovimo profilių įvesties duomenys

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 }

Naudotojų įvesties duomenys

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 }

Kuriant ribą bent viena iš energyValue arba timeValue reikšmių turi būti didesnė už nulį. Iš el. pašto adresų pašalinami kraštiniai tarpai, o raidės pakeičiamos mažosiomis. RFID UID priimami tik rašymo operacijose ir užmaskuojami skaitymo atsakymuose.

Atsakymų DTO santrauka

Galinių taškų lentelėse parodyti visi aukščiausio lygio atsakymų apvalkalai. Tai pagrindiniai pakartotinai naudojami DTO šiuose apvalkaluose:

DTOLaukai
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; išsami informacija prideda normalizuotą chargers ir jungties būseną
GeocodeCandidateplaceId, displayName, latitude, longitude; paslaugos teikėjo prisijungimo duomenys ir jam būdingi metaduomenys niekada negrąžinami
MetricsWindowfrom, to, seansų ribos / skaičiai ir totalsCapped, kai taikoma
Chargerid, name, identifier, cpoId, site, normalizuotas status, isPublic, RFID / išmaniojo įkrovimo / automatizavimo požymiai, provisioned, connection, evses, connectors, createdAt, updatedAt; išsami informacija prideda configuration su paslėptais jautriais duomenimis, firmware ir skaičius
ConnectorportId, connectorId, jungties žinyno duomenų ID, maxVoltage, maxAmperage, maxElectricPower
ReportSessionid, įkroviklis / vieta, prievado ir jungties ID, minimalūs naudotojo duomenys, active, energyWh, pradžia / pabaiga / trukmė ir grynosios išlaidos / mokestis / visa suma pagal valiutą
ReportScheduleid, workspaceId, enabled, recipientEmail, format, UTC sendDay/sendTime, kūrimo / atnaujinimo ir saugūs paskutinio pristatymo metaduomenys, įskaitant bandymų skaičių
Tariffid, cpoId, name, tipo / vietos / valiutos / prekybos zonos objektai, tax, fallbackPrice, galiojantis price, components, assignmentCount
ChargingProfileid, cpoId, label, description, stackLevel, vietos / paskirties / rūšies / pasikartojimo / ribos vieneto objektai, galiojimas, tvarkaraštis, assignmentCount, laiko žymos
Userid, membershipId, name, email, užmaskuotas rfids, įkroviklio access, limitCount; išsami informacija prideda phone, createdAt ir limits. OCPP autorizavimo duomenys, pavyzdžiui, contractId, niekada negrąžinami.
RFIDid, maskedUid, name, type, valid; neapdorotas UID niekada negrąžinamas
AccessallChargers, surikiuotas chargerIds ir items su prieigos leidimo / įkroviklio / vietos / galiojimo pabaigos metaduomenimis
Limitid, limitTypeId, label, energyValue, timeValue
LocalUserSąrašo DTO: id, customerId, name, email, expiresAt, systemManaged. Vietinių naudotojų keitimo operacijos naudoja atskiras LocalUserMutation/LocalUserUpdate struktūras, pateiktas Schemose ir pavyzdžiuose.

Žinyno objektai grąžinami sąrašų ir išsamios informacijos maršrutais, kad kviečiančiosios programos galėtų rasti tinkamus ID. Nežinomus pridėtus laukus laikykite su būsimomis versijomis suderinamais plėtiniais, o sprendimus grįskite tik dokumentuotais stabiliais laukais ir klaidų kodais.

Darbo srities galiniai taškai

Metodas ir keliasPrieigos sritisUžklausaSėkmingas atsakymas
GET /v2/adminworkspaces:readTurinys: nėra200 { workspace: Workspace }
PATCH /v2/adminworkspaces:updateTurinys: WorkspacePatch200 { workspace: Workspace }
GET /v2/admin/dashboardworkspaces:read + reports:readTurinys / užklausos parametrai: nėra200 { window, stats { chargerCount, onlineChargerCount, siteCount, userCount }, sessions: DashboardSession[], analytics }; seansai ribojami iki 1 000 per 90 dienų

Vietų ir galios valdymo galiniai taškai

Metodas ir keliasPrieigos sritisUžklausaSėkmingas atsakymas
GET /v2/admin/sitessites:readTurinys / užklausos parametrai: nėra200 { items: Site[], metricsWindow: MetricsWindow, lookups { countries, timezones } }
GET /v2/admin/sites/geocodesites:readUžklausos parametrai: neprivalomas street (daugiausia 160), city, state, country (kiekvienas daugiausia 100), countryCode (daugiausia 2); neprivaloma Accept-Language antraštė; bendroje gatvės / miesto / regiono paieškoje būtini bent du simboliai200 { results: GeocodeCandidate[] }; vienodos vykdomos paieškos apjungiamos, o paslaugos teikėjo operacijos naudoja ribotą nuoseklią eilę ir ribotą serverio podėlį; netinkamos paieškos grąžina 400 INVALID_GEOCODE_QUERY, užpildyta eilė grąžina 429 GEOCODING_BUSY su Retry-After, o paslaugos teikėjo sutrikimai grąžina 502 GEOCODING_UNAVAILABLE
POST /v2/admin/sitessites:createTurinys: SiteInput201 { site: Site }
GET /v2/admin/sites/:siteIdsites:read + reports:readTurinys / užklausos parametrai: nėra200 { site: SiteDetail, recentSessions: SiteSession[], totals, metricsWindow }
PATCH /v2/admin/sites/:siteIdsites:updateTurinys: visas SiteInput200 { site: Site }
DELETE /v2/admin/sites/:siteIdsites:deleteTurinys: nėra204 empty; netuščia vieta grąžina 409 SITE_NOT_EMPTY
GET /v2/admin/sites/:siteId/power-managementsites:power-managementTurinys / užklausos parametrai: nėra200 { configuration: PowerConfiguration }, kuriame yra priklausanti vieta, įkrovikliai / jungtys, grupės, skaitiklių šaltiniai, priskyrimai ir suderinamumo būsena
PUT /v2/admin/sites/:siteId/power-managementsites:power-managementTurinys: PowerConfigurationInput200 { configuration: PowerConfiguration }; OCPP atmetimas, laukimo laiko pabaiga arba lygiagretus pakeitimas grąžina 409 POWER_MANAGEMENT_CONFLICT, nepritaikant pakeitimo

Įkroviklių galiniai taškai

Metodas ir keliasPrieigos sritisUžklausaSėkmingas atsakymas
GET /v2/admin/chargerschargers:readTurinys / užklausos parametrai: nėra200 { items: Charger[], metricsWindow: MetricsWindow, connectorLookups { formats, types, powerTypes } }
POST /v2/admin/chargerschargers:createTurinys: ChargerCreate; identifikatorius pakeičiamas didžiosiomis raidėmis201 { charger: Charger }; slaptažodis niekada negrąžinamas
GET /v2/admin/chargers/:chargerIdchargers:readTurinys / užklausos parametrai: nėra200 { charger: ChargerDetail }
PATCH /v2/admin/chargers/:chargerIdchargers:updateTurinys: ChargerPatch200 { charger: ChargerDetail }
DELETE /v2/admin/chargers/:chargerIdchargers:deleteTurinys: nėra204 empty
PATCH /v2/admin/chargers/:chargerId/credentialschargers:credentialsTurinys: { password: string(0..40) }200 { success: true }
PATCH /v2/admin/chargers/:chargerId/connectors/:portIdchargers:connector-settingsTurinys: ConnectorPatch200 { connector: Connector }
PATCH /v2/admin/chargers/:chargerId/public-listingchargers:publicTurinys: { isPublic: boolean }200 { isPublic: boolean }; neįvykdytos pasirengimo sąlygos grąžina 409 CHARGER_CONFLICT
GET /v2/admin/chargers/:chargerId/public-readinesschargers:readTurinys / užklausos parametrai: nėra200 { readiness: { ready, missingRequirements, connectorIds, missingTariffConnectorIds, ...commercialState } }
GET /v2/admin/chargers/:chargerId/logschargers:readUžklausos parametrai: 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:readUžklausos parametrai: 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:readUžklausos parametrai: connector?: integer[0,255]200 image/png dvejetainis, 300 px, Content-Disposition: inline, Cache-Control: no-store
GET /v2/admin/chargers/:chargerId/composite-scheduleschargers:readUžklausos parametrai: cursor?, limit?=20 (1..50), connectorId?200 { items: CompositeSchedule[], nextCursor: number or null }
GET /v2/admin/chargers/:chargerId/configurationchargers:readTurinys / užklausos parametrai: nėra200 { items: ChargerConfiguration[] }; į paslaptis panašios reikšmės yra [REDACTED]
PATCH /v2/admin/chargers/:chargerId/configurationchargers:configurationTurinys: { key: string(1..50), value: string(0..500) }200 { status: string }, kur būsena yra įkroviklio / OCPP rezultatas
POST /v2/admin/chargers/:chargerId/configuration/reloadchargers:configurationTurinys: nėra200 { status: string }
GET /v2/admin/chargers/:chargerId/firmwarechargers:readTurinys / užklausos parametrai: nėra200 { firmware: { status, notifiedAt, currentVersion, bootNotifiedAt } }
POST /v2/admin/chargers/:chargerId/firmwarechargers:firmwareTurinys: { url: HTTP-or-HTTPS URL, max 2048 characters }202 { status: string }
POST /v2/admin/chargers/:chargerId/commands/resetchargers:commandsTurinys: { resetType: "Soft" or "Hard" }200 { status: string }
POST /v2/admin/chargers/:chargerId/commands/availabilitychargers:commandsTurinys: { availabilityType: "Operative" or "Inoperative" }200 { status: string }
POST /v2/admin/chargers/:chargerId/commands/triggerchargers:commandsTurinys: { messageType: "BootNotification", "Heartbeat", "StatusNotification", or "MeterValues" }200 { status: string, connectorResults: { connectorId, status }[] }
POST /v2/admin/chargers/:chargerId/commands/unlockchargers:commandsTurinys: { connectorId: positive integer }200 { status: string }
POST /v2/admin/chargers/:chargerId/commands/composite-schedulechargers:commandsTurinys: { connectorId: nonnegative integer, durationSeconds?: integer[60,604800], chargingRateUnit?: "W" or "A" }200 { status: string, connectorId: number, compositeSchedule: CompositeSchedule or null }

Ataskaitų galiniai taškai

Metodas ir keliasPrieigos sritisUžklausaSėkmingas atsakymas
GET /v2/admin/reports/datareports:readUžklausos parametrai: ReportFilters, nepermatomas cursor?, limit?=50 (1..100)200 { items: ReportSession[], pageTotals, page { limit, nextCursor }, range { from, to, toExclusive: true } }
GET /v2/admin/reports/schedulereports:readTurinys / užklausos parametrai: nėra200 { schedule: ReportSchedule or null }
PUT /v2/admin/reports/schedulereports:schedulesTurinys: griežta ReportScheduleInput schema200 { schedule: ReportSchedule }
POST /v2/admin/reports/sendreports:sendTurinys: nėra; būtina Idempotency-Key antraštė200 { sent: true, format: "csv" or "pdf", rowCount: number, range { from, to } }; jei nėra išsaugoto tvarkaraščio, grąžinamas 409 REPORT_SCHEDULE_REQUIRED
GET /v2/admin/reports/measurementsreports:readUžklausos parametrai: būtinas transactionLogId, nepermatomas cursor?, limit?=500 (1..1000)200 { transactionLogId, measurements: { name, unit, lines[] }[], page { limit, nextCursor, sampleValuesTruncated, sampleLimitPerMeterValue: 64 } }
GET /v2/admin/reports/exportreports:exportUžklausos parametrai: ReportFilters, format?="csv" or "pdf"200 dvejetainis CSV / PDF su priedo failo pavadinimu, Cache-Control: private, no-store, X-Content-Type-Options: nosniff; daugiau nei 2 000 eilučių grąžina 422 REPORT_EXPORT_ROW_LIMIT

Tarifų galiniai taškai

Metodas ir keliasPrieigos sritisUžklausaSėkmingas atsakymas
GET /v2/admin/tariffstariffs:readTurinys / užklausos parametrai: nėra200 { items: Tariff[], lookups { currencies, biddingZones, currencyRates, componentTypes, seasons, tariffTypes } }
POST /v2/admin/tariffstariffs:createTurinys: TariffInput201 { tariff: Tariff }
GET /v2/admin/tariffs/:tariffIdtariffs:readTurinys / užklausos parametrai: nėra200 { tariff: Tariff, lookups }
PATCH /v2/admin/tariffs/:tariffIdtariffs:updateTurinys: visas TariffInput200 { tariff: Tariff }
PUT /v2/admin/tariffs/:tariffId/componentstariffs:componentsTurinys: { components: TariffComponentInput[0..256] }200 { tariff: Tariff, components: TariffComponent[] }
DELETE /v2/admin/tariffs/:tariffIdtariffs:deleteTurinys: nėra204 empty; įkrovimo įrašų nuorodos grąžina 409 TARIFF_CONFLICT
GET /v2/admin/tariffs/:tariffId/market-pricestariffs:readUžklausos parametrai: būtinas startsAt, neneigiama „Unix“ laiko žyma200 { items: { id, value, currencyId, startsAt, endsAt, startsAtIso, endsAtIso, intervalMinutes }[], truncated: boolean }; daugiausia 10 000 eilučių
GET /v2/admin/chargers/:chargerId/tariff-assignmentschargers:tariff-assignments + tariffs:readTurinys / užklausos parametrai: nėra200 { items: TariffAssignment[], tariffs: Tariff[] }
POST /v2/admin/chargers/:chargerId/tariff-assignmentschargers:tariff-assignments + tariffs:assignTurinys: TariffAssignmentCreateInput; nepateikus connectorId arba connectorId=0, taikoma visoms jungtims201 { assignments: TariffAssignment[] }
PATCH /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentIdchargers:tariff-assignments + tariffs:assignTurinys: TariffAssignmentUpdateInput; jungtis būtina ir negali būti 0200 { assignment: TariffAssignment }
DELETE /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentIdchargers:tariff-assignments + tariffs:assignTurinys: nėra204 empty

TariffAssignment turi id, chargerId, connectorId, saugią tarifo / valiutos santrauką, createdAt ir updatedAt.

Įkrovimo profilių galiniai taškai

Metodas ir keliasPrieigos sritisUžklausaSėkmingas atsakymas
GET /v2/admin/charging-profileschargingProfiles:readTurinys / užklausos parametrai: nėra200 { items: ChargingProfile[], lookups { locations, purposes, kinds, recurrencyKinds, rateUnits, allowedRateUnits } }
POST /v2/admin/charging-profileschargingProfiles:createTurinys: ChargingProfileCreate201 { profile: ChargingProfile }
GET /v2/admin/charging-profiles/:profileIdchargingProfiles:readTurinys / užklausos parametrai: nėra200 { profile: ChargingProfile, lookups, isEditBlocked: boolean, usage { simpleChargingSchedule, smartSchedule, chargePoolChargepoint, isUsed } }
PATCH /v2/admin/charging-profiles/:profileIdchargingProfiles:updateTurinys: visas ChargingProfileInput200 { profile: ChargingProfile, ocppSync: OcppCommandResult[] }
PUT /v2/admin/charging-profiles/:profileId/schedulechargingProfiles:updateTurinys: ChargingScheduleInput200 { profile: ChargingProfile, schedule: SchedulePeriod[], ocppSync: OcppCommandResult[] }
DELETE /v2/admin/charging-profiles/:profileIdchargingProfiles:deleteTurinys: nėra204 empty tik kai visi priskirti įkrovikliai priima išvalymą ir būsena pakartotinai patikrinama; kitu atveju 409, o profilis lieka
GET /v2/admin/chargers/:chargerId/profile-assignmentschargers:profile-assignments + chargingProfiles:readTurinys / užklausos parametrai: nėra200 { items: ProfileAssignment[], profiles: ChargingProfile[] }
POST /v2/admin/chargers/:chargerId/profile-assignmentschargers:profile-assignments + chargingProfiles:assignTurinys: ProfileAssignmentInput201 { assignment: ProfileAssignment, ocpp: OcppCommandResult }
PATCH /v2/admin/chargers/:chargerId/profile-assignments/:assignmentIdchargers:profile-assignments + chargingProfiles:assignTurinys: ProfileAssignmentInput200 { assignment: ProfileAssignment, ocpp: OcppCommandResult }
DELETE /v2/admin/chargers/:chargerId/profile-assignments/:assignmentIdchargers:profile-assignments + chargingProfiles:assignTurinys: nėra204 empty po sinchronizuoto išvalymo

ProfileAssignment turi priskyrimo ID, įkroviklio / jungties ID ir saugią profilio santrauką. OCPP rezultatų objektai pateikia stabilią užklausos / būsenos informaciją ir niekada neteikia prisijungimo duomenų.

Naudotojų, RFID, prieigos, ribų ir vietinių naudotojų galiniai taškai

Metodas ir keliasPrieigos sritisUžklausaSėkmingas atsakymas
GET /v2/admin/usersusers:readUžklausos parametrai: būseną atitinkantis cursor? (members: teigiamas skaitinis; invitations: autentifikuotas nepermatomas i2.*; all: senosios versijos skaitinis narių tęsinys arba autentifikuotas nepermatomas sudėtinis a2.*), limit?=50 (1..100), status?="all", "members", or "invitations"; neprivaloma X-Admin-User-Search antraštė (daugiausia 100)200 { items: User[], invitations: Invitation[], chargers: ChargerSummary[], page { nextCursor, memberNextCursor, invitationNextCursor, limit } }; kvietimai puslapiuojami ir papildomi duomenimis naudojant tą pačią normalizuoto el. pašto išraišką, kad senosios raidžių dydžio ar tarpų variacijos nepaslėptų eilučių; žymekliai susieti su darbo sritimi ir paieškos filtru, neturi skaitomo el. pašto adreso ir turi būti grąžinti nepakeisti; all žymekliai nepriklausomai perkelia narių ir kvietimų srautus
POST /v2/admin/usersusers:createTurinys: UserCreate; klientas jau turi būti registruotas201 { user: User }; nežinomas el. pašto adresas grąžina egzistavimo neatskleidžiantį 404 RESOURCE_NOT_FOUND turinį, ir jam reikia naudoti kvietimus
POST /v2/admin/users/invitationsusers:invitations + users:access; papildomai users:rfid, jei pateiktas rfidTurinys: InvitationInput200 or 201 { result }; prijungimo rezultatas yra { kind:"attached", user, accessChanged, rfidChanged }; laukiantis rezultatas yra { kind:"invited", email, name, maskedRfid, chargerIds, createdCount, emailSent, emailRetryReady, alreadyInvited }
POST /v2/admin/users/invitations/resendusers:invitationsTurinys: { email: email }200 { result: { targetedChargers, emailSent, emailRetryReady } }; privalomai taikomas visiems gavėjo užklausų šaltiniams bendras laukimo intervalas
DELETE /v2/admin/users/invitationsusers:invitationsTurinys: { email: email }204 empty
GET /v2/admin/users/:userIdusers:read + reports:readTurinys / užklausos parametrai: nėra200 { user: UserDetail, sessions: UserSession[], totals { count, energyWh, durationSeconds }, window, limitTypes, chargers }; daugiausia 200 seansų per 90 dienų
PATCH /v2/admin/users/:userIdusers:updateTurinys: { name: string(1..255) }200 { user: User }
DELETE /v2/admin/users/:userIdusers:deleteTurinys: nėra204 empty
GET /v2/admin/users/:userId/vehiclesusers:readUžklausos parametrai: skaitinis cursor?, limit?=50 (1..100)200 { items: Vehicle[], page { nextCursor, limit } }; automobilio DTO turi saugius paslaugos teikėjo / būsenos / modelio / telemetrijos laukus
GET /v2/admin/users/:userId/rfidsusers:readTurinys / užklausos parametrai: nėra200 { items: RFID[] }; UID užmaskuoti
POST /v2/admin/users/:userId/rfidsusers:rfidTurinys: { uid: string(1..36), name?: string or null }201 { rfid: RFID }; neapdorotas UID atsakyme nekartojamas
PATCH /v2/admin/users/:userId/rfids/:rfidIdusers:rfidTurinys: { name: string or null }200 { rfid: RFID }
DELETE /v2/admin/users/:userId/rfids/:rfidIdusers:rfidTurinys: nėra204 empty
GET /v2/admin/users/:userId/accessusers:readTurinys / užklausos parametrai: nėra200 { access: Access }
PUT /v2/admin/users/:userId/accessusers:accessTurinys: AccessInput200 { access: Access }
DELETE /v2/admin/users/:userId/access/:accessIdusers:accessTurinys: nėra204 empty
GET /v2/admin/users/:userId/limitsusers:readTurinys / užklausos parametrai: nėra200 { items: Limit[] }
POST /v2/admin/users/:userId/limitsusers:limitsTurinys: LimitCreate201 { limit: Limit }
PATCH /v2/admin/users/:userId/limits/:limitIdusers:limitsTurinys: LimitPatch, bent viena savybė200 { limit: Limit }
DELETE /v2/admin/users/:userId/limits/:limitIdusers:limitsTurinys: nėra204 empty
GET /v2/admin/chargers/:chargerId/local-userschargers:read + users:readTurinys / užklausos parametrai: nėra200 { charger: ChargerSummary, items: LocalUser[], invitations: { email }[], availableMembers: [] }; API sąmoningai neįtraukia plataus portalo galimų narių katalogo
POST /v2/admin/chargers/:chargerId/local-userschargers:local-users + users:accessTurinys: { customerId: positive integer, expiresAt?: RFC3339 or null }201 { localUser: LocalUserMutation }
POST /v2/admin/chargers/:chargerId/local-users/invitationschargers:local-users + users:invitations + users:accessTurinys: { email: email }200 or 201 { result }; esamas klientas: { invited:false, localUser: LocalUserMutation }; kvietimas: { invited:true, alreadyInvited, emailSent, emailRetryReady }
DELETE /v2/admin/chargers/:chargerId/local-users/invitationschargers:local-users + users:invitationsTurinys: { email: email }204 empty
PATCH /v2/admin/chargers/:chargerId/local-users/:localUserIdchargers:local-users + users:accessTurinys: { expiresAt: RFC3339 or null }200 { localUser: LocalUserUpdate }
DELETE /v2/admin/chargers/:chargerId/local-users/:localUserIdchargers:local-users + users:accessTurinys: nėra204 empty

„Tagless“ sistemos naudotojas apsaugotas nuo šių operacijų. Nepavykus išsiųsti kvietimo el. paštu grąžinama saugi pristatymo būsena, neatskleidžiant SMTP duomenų; kviečiančiosios programos gali bandyti dar kartą, kai emailRetryReady yra true.

Dvejetainiai atsakymai

Dvi galinių taškų grupės sėkmės atveju negrąžina JSON:

Galinis taškasTurinio tipasSvarbios antraštės
Įkroviklio QRimage/pngCache-Control: no-store, Content-Disposition: inline, X-Content-Type-Options: nosniff
Ataskaitos eksportastext/csv; charset=utf-8 arba application/pdfCache-Control: private, no-store, Content-Disposition: attachment, X-Content-Type-Options: nosniff

Dvejetainių galinių taškų klaidos vis tiek yra JSON formato.