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:
nonereiškia, kad užklausos turinio nėra.DELETE, kuriam dokumentuotas JSON turinys, vis tiek jo reikalauja.?žymi neprivalomą savybę arba užklausos parametrą.T | nullreiškia, kad savybė yra ir gali būti null.204 emptyreiškia, kad atsakymo turinio nėra.CursorPage<T>reiškia{ items: T[], nextCursor: number|string|null }, išskyrus atvejus, kai eilutėje aiškiai įvardytaspagearbapaginationobjektas.- 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:
| DTO | Laukai |
|---|---|
Workspace | id, name, email, website, address { line1, line2, postalCode, city, state, countryId, countryCode, countryName }, createdAt, updatedAt |
Site | id, name, description, address, timezone { id, name }, latitude, longitude, chargerCount; išsami informacija prideda normalizuotą chargers ir jungties būseną |
GeocodeCandidate | placeId, displayName, latitude, longitude; paslaugos teikėjo prisijungimo duomenys ir jam būdingi metaduomenys niekada negrąžinami |
MetricsWindow | from, to, seansų ribos / skaičiai ir totalsCapped, kai taikoma |
Charger | id, 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 |
Connector | portId, connectorId, jungties žinyno duomenų ID, maxVoltage, maxAmperage, maxElectricPower |
ReportSession | id, į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ą |
ReportSchedule | id, workspaceId, enabled, recipientEmail, format, UTC sendDay/sendTime, kūrimo / atnaujinimo ir saugūs paskutinio pristatymo metaduomenys, įskaitant bandymų skaičių |
Tariff | id, cpoId, name, tipo / vietos / valiutos / prekybos zonos objektai, tax, fallbackPrice, galiojantis price, components, assignmentCount |
ChargingProfile | id, cpoId, label, description, stackLevel, vietos / paskirties / rūšies / pasikartojimo / ribos vieneto objektai, galiojimas, tvarkaraštis, assignmentCount, laiko žymos |
User | id, 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. |
RFID | id, maskedUid, name, type, valid; neapdorotas UID niekada negrąžinamas |
Access | allChargers, surikiuotas chargerIds ir items su prieigos leidimo / įkroviklio / vietos / galiojimo pabaigos metaduomenimis |
Limit | id, limitTypeId, label, energyValue, timeValue |
LocalUser | Są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 kelias | Prieigos sritis | Užklausa | Sėkmingas atsakymas |
|---|---|---|---|
GET /v2/admin | workspaces:read | Turinys: nėra | 200 { workspace: Workspace } |
PATCH /v2/admin | workspaces:update | Turinys: WorkspacePatch | 200 { workspace: Workspace } |
GET /v2/admin/dashboard | workspaces:read + reports:read | Turinys / užklausos parametrai: nėra | 200 { 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 kelias | Prieigos sritis | Užklausa | Sėkmingas atsakymas |
|---|---|---|---|
GET /v2/admin/sites | sites:read | Turinys / užklausos parametrai: nėra | 200 { items: Site[], metricsWindow: MetricsWindow, lookups { countries, timezones } } |
GET /v2/admin/sites/geocode | sites:read | Už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 simboliai | 200 { 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/sites | sites:create | Turinys: SiteInput | 201 { site: Site } |
GET /v2/admin/sites/:siteId | sites:read + reports:read | Turinys / užklausos parametrai: nėra | 200 { site: SiteDetail, recentSessions: SiteSession[], totals, metricsWindow } |
PATCH /v2/admin/sites/:siteId | sites:update | Turinys: visas SiteInput | 200 { site: Site } |
DELETE /v2/admin/sites/:siteId | sites:delete | Turinys: nėra | 204 empty; netuščia vieta grąžina 409 SITE_NOT_EMPTY |
GET /v2/admin/sites/:siteId/power-management | sites:power-management | Turinys / užklausos parametrai: nėra | 200 { configuration: PowerConfiguration }, kuriame yra priklausanti vieta, įkrovikliai / jungtys, grupės, skaitiklių šaltiniai, priskyrimai ir suderinamumo būsena |
PUT /v2/admin/sites/:siteId/power-management | sites:power-management | Turinys: PowerConfigurationInput | 200 { configuration: PowerConfiguration }; OCPP atmetimas, laukimo laiko pabaiga arba lygiagretus pakeitimas grąžina 409 POWER_MANAGEMENT_CONFLICT, nepritaikant pakeitimo |
Įkroviklių galiniai taškai
| Metodas ir kelias | Prieigos sritis | Užklausa | Sėkmingas atsakymas |
|---|---|---|---|
GET /v2/admin/chargers | chargers:read | Turinys / užklausos parametrai: nėra | 200 { items: Charger[], metricsWindow: MetricsWindow, connectorLookups { formats, types, powerTypes } } |
POST /v2/admin/chargers | chargers:create | Turinys: ChargerCreate; identifikatorius pakeičiamas didžiosiomis raidėmis | 201 { charger: Charger }; slaptažodis niekada negrąžinamas |
GET /v2/admin/chargers/:chargerId | chargers:read | Turinys / užklausos parametrai: nėra | 200 { charger: ChargerDetail } |
PATCH /v2/admin/chargers/:chargerId | chargers:update | Turinys: ChargerPatch | 200 { charger: ChargerDetail } |
DELETE /v2/admin/chargers/:chargerId | chargers:delete | Turinys: nėra | 204 empty |
PATCH /v2/admin/chargers/:chargerId/credentials | chargers:credentials | Turinys: { password: string(0..40) } | 200 { success: true } |
PATCH /v2/admin/chargers/:chargerId/connectors/:portId | chargers:connector-settings | Turinys: ConnectorPatch | 200 { connector: Connector } |
PATCH /v2/admin/chargers/:chargerId/public-listing | chargers:public | Turinys: { isPublic: boolean } | 200 { isPublic: boolean }; neįvykdytos pasirengimo sąlygos grąžina 409 CHARGER_CONFLICT |
GET /v2/admin/chargers/:chargerId/public-readiness | chargers:read | Turinys / užklausos parametrai: nėra | 200 { readiness: { ready, missingRequirements, connectorIds, missingTariffConnectorIds, ...commercialState } } |
GET /v2/admin/chargers/:chargerId/logs | chargers:read | Užklausos parametrai: cursor?, limit?=50 (1..200), from?, to?, action?, direction?, levelId? | 200 { items: RedactedOcppLog[], nextCursor: number or null } |
GET /v2/admin/chargers/:chargerId/sessions | chargers:read + reports:read | Už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/qr | chargers:read | Už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-schedules | chargers:read | Užklausos parametrai: cursor?, limit?=20 (1..50), connectorId? | 200 { items: CompositeSchedule[], nextCursor: number or null } |
GET /v2/admin/chargers/:chargerId/configuration | chargers:read | Turinys / užklausos parametrai: nėra | 200 { items: ChargerConfiguration[] }; į paslaptis panašios reikšmės yra [REDACTED] |
PATCH /v2/admin/chargers/:chargerId/configuration | chargers:configuration | Turinys: { key: string(1..50), value: string(0..500) } | 200 { status: string }, kur būsena yra įkroviklio / OCPP rezultatas |
POST /v2/admin/chargers/:chargerId/configuration/reload | chargers:configuration | Turinys: nėra | 200 { status: string } |
GET /v2/admin/chargers/:chargerId/firmware | chargers:read | Turinys / užklausos parametrai: nėra | 200 { firmware: { status, notifiedAt, currentVersion, bootNotifiedAt } } |
POST /v2/admin/chargers/:chargerId/firmware | chargers:firmware | Turinys: { url: HTTP-or-HTTPS URL, max 2048 characters } | 202 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/reset | chargers:commands | Turinys: { resetType: "Soft" or "Hard" } | 200 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/availability | chargers:commands | Turinys: { availabilityType: "Operative" or "Inoperative" } | 200 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/trigger | chargers:commands | Turinys: { messageType: "BootNotification", "Heartbeat", "StatusNotification", or "MeterValues" } | 200 { status: string, connectorResults: { connectorId, status }[] } |
POST /v2/admin/chargers/:chargerId/commands/unlock | chargers:commands | Turinys: { connectorId: positive integer } | 200 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/composite-schedule | chargers:commands | Turinys: { 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 kelias | Prieigos sritis | Užklausa | Sėkmingas atsakymas |
|---|---|---|---|
GET /v2/admin/reports/data | reports:read | Už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/schedule | reports:read | Turinys / užklausos parametrai: nėra | 200 { schedule: ReportSchedule or null } |
PUT /v2/admin/reports/schedule | reports:schedules | Turinys: griežta ReportScheduleInput schema | 200 { schedule: ReportSchedule } |
POST /v2/admin/reports/send | reports:send | Turinys: 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/measurements | reports:read | Už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/export | reports:export | Už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 kelias | Prieigos sritis | Užklausa | Sėkmingas atsakymas |
|---|---|---|---|
GET /v2/admin/tariffs | tariffs:read | Turinys / užklausos parametrai: nėra | 200 { items: Tariff[], lookups { currencies, biddingZones, currencyRates, componentTypes, seasons, tariffTypes } } |
POST /v2/admin/tariffs | tariffs:create | Turinys: TariffInput | 201 { tariff: Tariff } |
GET /v2/admin/tariffs/:tariffId | tariffs:read | Turinys / užklausos parametrai: nėra | 200 { tariff: Tariff, lookups } |
PATCH /v2/admin/tariffs/:tariffId | tariffs:update | Turinys: visas TariffInput | 200 { tariff: Tariff } |
PUT /v2/admin/tariffs/:tariffId/components | tariffs:components | Turinys: { components: TariffComponentInput[0..256] } | 200 { tariff: Tariff, components: TariffComponent[] } |
DELETE /v2/admin/tariffs/:tariffId | tariffs:delete | Turinys: nėra | 204 empty; įkrovimo įrašų nuorodos grąžina 409 TARIFF_CONFLICT |
GET /v2/admin/tariffs/:tariffId/market-prices | tariffs:read | Užklausos parametrai: būtinas startsAt, neneigiama „Unix“ laiko žyma | 200 { items: { id, value, currencyId, startsAt, endsAt, startsAtIso, endsAtIso, intervalMinutes }[], truncated: boolean }; daugiausia 10 000 eilučių |
GET /v2/admin/chargers/:chargerId/tariff-assignments | chargers:tariff-assignments + tariffs:read | Turinys / užklausos parametrai: nėra | 200 { items: TariffAssignment[], tariffs: Tariff[] } |
POST /v2/admin/chargers/:chargerId/tariff-assignments | chargers:tariff-assignments + tariffs:assign | Turinys: TariffAssignmentCreateInput; nepateikus connectorId arba connectorId=0, taikoma visoms jungtims | 201 { assignments: TariffAssignment[] } |
PATCH /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentId | chargers:tariff-assignments + tariffs:assign | Turinys: TariffAssignmentUpdateInput; jungtis būtina ir negali būti 0 | 200 { assignment: TariffAssignment } |
DELETE /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentId | chargers:tariff-assignments + tariffs:assign | Turinys: nėra | 204 empty |
TariffAssignment turi id, chargerId, connectorId, saugią tarifo / valiutos santrauką, createdAt ir updatedAt.
Įkrovimo profilių galiniai taškai
| Metodas ir kelias | Prieigos sritis | Užklausa | Sėkmingas atsakymas |
|---|---|---|---|
GET /v2/admin/charging-profiles | chargingProfiles:read | Turinys / užklausos parametrai: nėra | 200 { items: ChargingProfile[], lookups { locations, purposes, kinds, recurrencyKinds, rateUnits, allowedRateUnits } } |
POST /v2/admin/charging-profiles | chargingProfiles:create | Turinys: ChargingProfileCreate | 201 { profile: ChargingProfile } |
GET /v2/admin/charging-profiles/:profileId | chargingProfiles:read | Turinys / užklausos parametrai: nėra | 200 { profile: ChargingProfile, lookups, isEditBlocked: boolean, usage { simpleChargingSchedule, smartSchedule, chargePoolChargepoint, isUsed } } |
PATCH /v2/admin/charging-profiles/:profileId | chargingProfiles:update | Turinys: visas ChargingProfileInput | 200 { profile: ChargingProfile, ocppSync: OcppCommandResult[] } |
PUT /v2/admin/charging-profiles/:profileId/schedule | chargingProfiles:update | Turinys: ChargingScheduleInput | 200 { profile: ChargingProfile, schedule: SchedulePeriod[], ocppSync: OcppCommandResult[] } |
DELETE /v2/admin/charging-profiles/:profileId | chargingProfiles:delete | Turinys: nėra | 204 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-assignments | chargers:profile-assignments + chargingProfiles:read | Turinys / užklausos parametrai: nėra | 200 { items: ProfileAssignment[], profiles: ChargingProfile[] } |
POST /v2/admin/chargers/:chargerId/profile-assignments | chargers:profile-assignments + chargingProfiles:assign | Turinys: ProfileAssignmentInput | 201 { assignment: ProfileAssignment, ocpp: OcppCommandResult } |
PATCH /v2/admin/chargers/:chargerId/profile-assignments/:assignmentId | chargers:profile-assignments + chargingProfiles:assign | Turinys: ProfileAssignmentInput | 200 { assignment: ProfileAssignment, ocpp: OcppCommandResult } |
DELETE /v2/admin/chargers/:chargerId/profile-assignments/:assignmentId | chargers:profile-assignments + chargingProfiles:assign | Turinys: nėra | 204 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 kelias | Prieigos sritis | Užklausa | Sėkmingas atsakymas |
|---|---|---|---|
GET /v2/admin/users | users:read | Už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/users | users:create | Turinys: UserCreate; klientas jau turi būti registruotas | 201 { 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/invitations | users:invitations + users:access; papildomai users:rfid, jei pateiktas rfid | Turinys: InvitationInput | 200 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/resend | users:invitations | Turinys: { email: email } | 200 { result: { targetedChargers, emailSent, emailRetryReady } }; privalomai taikomas visiems gavėjo užklausų šaltiniams bendras laukimo intervalas |
DELETE /v2/admin/users/invitations | users:invitations | Turinys: { email: email } | 204 empty |
GET /v2/admin/users/:userId | users:read + reports:read | Turinys / užklausos parametrai: nėra | 200 { user: UserDetail, sessions: UserSession[], totals { count, energyWh, durationSeconds }, window, limitTypes, chargers }; daugiausia 200 seansų per 90 dienų |
PATCH /v2/admin/users/:userId | users:update | Turinys: { name: string(1..255) } | 200 { user: User } |
DELETE /v2/admin/users/:userId | users:delete | Turinys: nėra | 204 empty |
GET /v2/admin/users/:userId/vehicles | users:read | Už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/rfids | users:read | Turinys / užklausos parametrai: nėra | 200 { items: RFID[] }; UID užmaskuoti |
POST /v2/admin/users/:userId/rfids | users:rfid | Turinys: { uid: string(1..36), name?: string or null } | 201 { rfid: RFID }; neapdorotas UID atsakyme nekartojamas |
PATCH /v2/admin/users/:userId/rfids/:rfidId | users:rfid | Turinys: { name: string or null } | 200 { rfid: RFID } |
DELETE /v2/admin/users/:userId/rfids/:rfidId | users:rfid | Turinys: nėra | 204 empty |
GET /v2/admin/users/:userId/access | users:read | Turinys / užklausos parametrai: nėra | 200 { access: Access } |
PUT /v2/admin/users/:userId/access | users:access | Turinys: AccessInput | 200 { access: Access } |
DELETE /v2/admin/users/:userId/access/:accessId | users:access | Turinys: nėra | 204 empty |
GET /v2/admin/users/:userId/limits | users:read | Turinys / užklausos parametrai: nėra | 200 { items: Limit[] } |
POST /v2/admin/users/:userId/limits | users:limits | Turinys: LimitCreate | 201 { limit: Limit } |
PATCH /v2/admin/users/:userId/limits/:limitId | users:limits | Turinys: LimitPatch, bent viena savybė | 200 { limit: Limit } |
DELETE /v2/admin/users/:userId/limits/:limitId | users:limits | Turinys: nėra | 204 empty |
GET /v2/admin/chargers/:chargerId/local-users | chargers:read + users:read | Turinys / užklausos parametrai: nėra | 200 { charger: ChargerSummary, items: LocalUser[], invitations: { email }[], availableMembers: [] }; API sąmoningai neįtraukia plataus portalo galimų narių katalogo |
POST /v2/admin/chargers/:chargerId/local-users | chargers:local-users + users:access | Turinys: { customerId: positive integer, expiresAt?: RFC3339 or null } | 201 { localUser: LocalUserMutation } |
POST /v2/admin/chargers/:chargerId/local-users/invitations | chargers:local-users + users:invitations + users:access | Turinys: { 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/invitations | chargers:local-users + users:invitations | Turinys: { email: email } | 204 empty |
PATCH /v2/admin/chargers/:chargerId/local-users/:localUserId | chargers:local-users + users:access | Turinys: { expiresAt: RFC3339 or null } | 200 { localUser: LocalUserUpdate } |
DELETE /v2/admin/chargers/:chargerId/local-users/:localUserId | chargers:local-users + users:access | Turinys: nėra | 204 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škas | Turinio tipas | Svarbios antraštės |
|---|---|---|
| Įkroviklio QR | image/png | Cache-Control: no-store, Content-Disposition: inline, X-Content-Type-Options: nosniff |
| Ataskaitos eksportas | text/csv; charset=utf-8 arba application/pdf | Cache-Control: private, no-store, Content-Disposition: attachment, X-Content-Type-Options: nosniff |
Dvejetainių galinių taškų klaidos vis tiek yra JSON formato.