Munkaterület-adminisztrációs API végpontkérései és válaszai
Ez minden /v2/admin végpont kérés-/válaszreferenciája. A hitelesítést, idempotenciát, sebességkorlátokat, tokenlétrehozást és a hatókörök jelentését a Munkaterület-adminisztrációs API dokumentálja. Az újrafelhasználható mezőszintű típusok és példák a Sémák és példák oldalon találhatók. Minden végpontsort a Válasz- és hibaszerződéssel együtt olvasson, amely az összes lehetséges közös és végpontspecifikus sikertelen választörzset felsorolja.
Közös szerződés
Minden elérési út a telepített app-api eredettel kezdődik. A munkaterület kizárólag a hitelesített tokenből származik; a kliensek nem küldhetnek cpoId értéket. Minden dokumentált :...Id erőforrásútvonal-érték pozitív decimális egész szám. Minden kéréshez pontosan egy szükséges:
Authorization: Bearer <workspace-access-token>
A JSON-törzzsel jelzett kérésekhez Content-Type: application/json szükséges. Minden módosításhoz Idempotency-Key (POST, PUT, PATCH és DELETE) kell, beleértve a(z) POST /v2/admin/reports/send műveletet is; ha a sor nem jelzi másként, a sikeres válasz tartalomtípusa application/json, a JSON-dátumok RFC 3339 karakterláncok, a számok pedig JSON-számok.
Minden kérés tartalmazhat X-Request-Id és X-Error-Format: envelope fejlécet; lásd a Válasz- és hibaszerződést. Ezek a fejlécek nem módosítják a sikersémákat.
Az alább használt jelölések:
- A(z)
noneazt jelenti, hogy nincs kéréstörzs. A JSON-törzset dokumentálóDELETEtovábbra is igényli azt a törzset. - A(z)
?opcionális tulajdonságot vagy lekérdezési paramétert jelöl. - A(z)
T | nullazt jelenti, hogy a tulajdonság jelen van, és null is lehet. - A(z)
204 emptyazt jelenti, hogy nincs választörzs. - A(z)
CursorPage<T>jelentése{ items: T[], nextCursor: number|string|null }, kivéve ha a sor kifejezettenpagevagypaginationobjektumot nevez meg. - Minden hiányzó beágyazott erőforrás, beleértve a más munkaterülethez tartozó azonosítókat is,
404 { "error": "Workspace resource not found", "code": "RESOURCE_NOT_FOUND" }választ használ, kivéve ha egy funkció konkrétabb ütközést dokumentál.
Közös kéréssémák
Munkaterület- és helyszínbemenetek
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
}
Teljesítménykezelési bemenet
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
}
Töltőbemenetek
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]
}
Jelentésbemenetek
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"
}
A jelentéstartományoknak meg kell felelniük a(z) from < to feltételnek, és legfeljebb 90 naposak lehetnek. Elhagyásukkor a legutóbbi 90 nap érvényesül. A(z) userId és anonymous=true kölcsönösen kizárja egymást. Az ütemezett exportok pótolják az elmulasztott UTC-percet, és korlátozott újrapróbálkozásokat használnak (5/10 perces várakozás, elavult foglaláshoz 30 perces időtartam, három kísérlet).
Tarifabemenetek
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 }
Töltésiprofil-bemenetek
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 }
Felhasználói bemenetek
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 }
Korlát létrehozásakor a(z) energyValue vagy timeValue érték közül legalább az egyiknek nullánál nagyobbnak kell lennie. Az e-mail-címek szélső szóközeit a rendszer eltávolítja, és kisbetűssé alakítja őket. Az RFID UID-k csak íráskor fogadhatók el, az olvasási válaszokban maszkoltak.
Válasz-DTO-k összefoglalója
A végponttáblázatok minden legfelső szintű válaszburkolót mutatnak. Ezek a burkolók fő újrafelhasználható DTO-i:
| DTO | Mezők |
|---|---|
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; a részletekhez normalizált chargers és csatlakozóállapot adódik |
GeocodeCandidate | placeId, displayName, latitude, longitude; a szolgáltatói hitelesítő adatok és szolgáltatóspecifikus metaadatok soha nem kerülnek visszaadásra |
MetricsWindow | from, to, töltési korlátok/darabszámok és adott esetben totalsCapped |
Charger | id, name, identifier, cpoId, site, normalizált status, isPublic, RFID-/intelligens-/automatizálási jelzők, provisioned, connection, evses, connectors, createdAt, updatedAt; a részletekhez kitakart configuration, firmware és darabszámok adódnak |
Connector | portId, connectorId, csatlakozó-hivatkozási azonosítók, maxVoltage, maxAmperage, maxElectricPower |
ReportSession | id, töltő/helyszín, port- és csatlakozóazonosítók, minimalizált felhasználó, active, energyWh, indítás/leállítás/időtartam és pénznemenkénti nettó/adó/teljes költség |
ReportSchedule | id, workspaceId, enabled, recipientEmail, format, UTC sendDay/sendTime, létrehozási/frissítési és biztonságos utolsókézbesítési metaadatok, beleértve a kísérletek számát |
Tariff | id, cpoId, name, típus-/helyszín-/pénznem-/ajánlattételizóna-objektumok, tax, fallbackPrice, tényleges price, components, assignmentCount |
ChargingProfile | id, cpoId, label, description, stackLevel, hely-/cél-/fajta-/ismétlődési-/rátaegység-objektumok, érvényesség, ütemezés, assignmentCount, időbélyegek |
User | id, membershipId, name, email, maszkolt rfids, töltő access, limitCount; a részletekhez phone, createdAt és limits adódik. OCPP-hitelesítő adat, például contractId, soha nem kerül visszaadásra. |
RFID | id, maskedUid, name, type, valid; a nyers UID soha nem kerül visszaadásra |
Access | allChargers, rendezett chargerIds és jogosultság-/töltő-/helyszín-/lejárati metaadatokat tartalmazó items |
Limit | id, limitTypeId, label, energyValue, timeValue |
LocalUser | Lista-DTO: id, customerId, name, email, expiresAt, systemManaged. A helyi felhasználók módosításai a Sémák és példák oldalon szereplő különálló LocalUserMutation/LocalUserUpdate szerkezeteket használják. |
A lista-/részletútvonalak hivatkozási objektumokat adnak vissza, hogy a hívók megtalálhassák az érvényes azonosítókat. Az ismeretlen új mezőket kezelje jövőbeli verziókkal kompatibilisként, és csak dokumentált stabil mezők és hibakódok alapján ágaztassa el a programot.
Munkaterület-végpontok
| Metódus és elérési út | Hatókör | Kérés | Sikeres válasz |
|---|---|---|---|
GET /v2/admin | workspaces:read | Törzs: nincs | 200 { workspace: Workspace } |
PATCH /v2/admin | workspaces:update | Törzs: WorkspacePatch | 200 { workspace: Workspace } |
GET /v2/admin/dashboard | workspaces:read + reports:read | Törzs/lekérdezés: nincs | 200 { window, stats { chargerCount, onlineChargerCount, siteCount, userCount }, sessions: DashboardSession[], analytics }; legfeljebb 1 000 töltés 90 nap alatt |
Helyszín- és teljesítménykezelési végpontok
| Metódus és elérési út | Hatókör | Kérés | Sikeres válasz |
|---|---|---|---|
GET /v2/admin/sites | sites:read | Törzs/lekérdezés: nincs | 200 { items: Site[], metricsWindow: MetricsWindow, lookups { countries, timezones } } |
GET /v2/admin/sites/geocode | sites:read | Lekérdezés: opcionális street (max. 160), city, state, country (egyenként max. 100), countryCode (max. 2); opcionális Accept-Language fejléc; legalább két utca-/város-/államkarakter szükséges összesen | 200 { results: GeocodeCandidate[] }; az azonos folyamatban lévő keresések összevonódnak, a szolgáltatói munka korlátozott soros várólistát és korlátozott szerveroldali gyorsítótárat használ; érvénytelen keresésnél 400 INVALID_GEOCODE_QUERY, telített várólistánál 429 GEOCODING_BUSY és Retry-After, szolgáltatói hibánál 502 GEOCODING_UNAVAILABLE a válasz |
POST /v2/admin/sites | sites:create | Törzs: SiteInput | 201 { site: Site } |
GET /v2/admin/sites/:siteId | sites:read + reports:read | Törzs/lekérdezés: nincs | 200 { site: SiteDetail, recentSessions: SiteSession[], totals, metricsWindow } |
PATCH /v2/admin/sites/:siteId | sites:update | Törzs: teljes SiteInput | 200 { site: Site } |
DELETE /v2/admin/sites/:siteId | sites:delete | Törzs: nincs | 204 empty; a nem üres helyszín 409 SITE_NOT_EMPTY választ ad |
GET /v2/admin/sites/:siteId/power-management | sites:power-management | Törzs/lekérdezés: nincs | 200 { configuration: PowerConfiguration }, amely a tulajdonban lévő helyszínt, töltőket/csatlakozókat, csoportokat, mérőforrásokat, hozzárendeléseket és kompatibilitási állapotot tartalmazza |
PUT /v2/admin/sites/:siteId/power-management | sites:power-management | Törzs: PowerConfigurationInput | 200 { configuration: PowerConfiguration }; OCPP-elutasítás, időtúllépés vagy párhuzamos változás 409 POWER_MANAGEMENT_CONFLICT választ ad a csere alkalmazása nélkül |
Töltővégpontok
| Metódus és elérési út | Hatókör | Kérés | Sikeres válasz |
|---|---|---|---|
GET /v2/admin/chargers | chargers:read | Törzs/lekérdezés: nincs | 200 { items: Charger[], metricsWindow: MetricsWindow, connectorLookups { formats, types, powerTypes } } |
POST /v2/admin/chargers | chargers:create | Törzs: ChargerCreate; az azonosító nagybetűssé alakul | 201 { charger: Charger }; a jelszó soha nem kerül visszaadásra |
GET /v2/admin/chargers/:chargerId | chargers:read | Törzs/lekérdezés: nincs | 200 { charger: ChargerDetail } |
PATCH /v2/admin/chargers/:chargerId | chargers:update | Törzs: ChargerPatch | 200 { charger: ChargerDetail } |
DELETE /v2/admin/chargers/:chargerId | chargers:delete | Törzs: nincs | 204 empty |
PATCH /v2/admin/chargers/:chargerId/credentials | chargers:credentials | Törzs: { password: string(0..40) } | 200 { success: true } |
PATCH /v2/admin/chargers/:chargerId/connectors/:portId | chargers:connector-settings | Törzs: ConnectorPatch | 200 { connector: Connector } |
PATCH /v2/admin/chargers/:chargerId/public-listing | chargers:public | Törzs: { isPublic: boolean } | 200 { isPublic: boolean }; hiányzó készenlét esetén 409 CHARGER_CONFLICT |
GET /v2/admin/chargers/:chargerId/public-readiness | chargers:read | Törzs/lekérdezés: nincs | 200 { readiness: { ready, missingRequirements, connectorIds, missingTariffConnectorIds, ...commercialState } } |
GET /v2/admin/chargers/:chargerId/logs | chargers:read | Lekérdezés: 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 | Lekérdezés: 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 | Lekérdezés: connector?: integer[0,255] | 200 image/png bináris adat, 300 px, Content-Disposition: inline, Cache-Control: no-store |
GET /v2/admin/chargers/:chargerId/composite-schedules | chargers:read | Lekérdezés: cursor?, limit?=20 (1..50), connectorId? | 200 { items: CompositeSchedule[], nextCursor: number or null } |
GET /v2/admin/chargers/:chargerId/configuration | chargers:read | Törzs/lekérdezés: nincs | 200 { items: ChargerConfiguration[] }; a titokszerű értékek [REDACTED] alakúak |
PATCH /v2/admin/chargers/:chargerId/configuration | chargers:configuration | Törzs: { key: string(1..50), value: string(0..500) } | 200 { status: string }, ahol az állapot a töltő/OCPP eredménye |
POST /v2/admin/chargers/:chargerId/configuration/reload | chargers:configuration | Törzs: nincs | 200 { status: string } |
GET /v2/admin/chargers/:chargerId/firmware | chargers:read | Törzs/lekérdezés: nincs | 200 { firmware: { status, notifiedAt, currentVersion, bootNotifiedAt } } |
POST /v2/admin/chargers/:chargerId/firmware | chargers:firmware | Törzs: { url: HTTP-or-HTTPS URL, max 2048 characters } | 202 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/reset | chargers:commands | Törzs: { resetType: "Soft" or "Hard" } | 200 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/availability | chargers:commands | Törzs: { availabilityType: "Operative" or "Inoperative" } | 200 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/trigger | chargers:commands | Törzs: { messageType: "BootNotification", "Heartbeat", "StatusNotification", or "MeterValues" } | 200 { status: string, connectorResults: { connectorId, status }[] } |
POST /v2/admin/chargers/:chargerId/commands/unlock | chargers:commands | Törzs: { connectorId: positive integer } | 200 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/composite-schedule | chargers:commands | Törzs: { connectorId: nonnegative integer, durationSeconds?: integer[60,604800], chargingRateUnit?: "W" or "A" } | 200 { status: string, connectorId: number, compositeSchedule: CompositeSchedule or null } |
Jelentésvégpontok
| Metódus és elérési út | Hatókör | Kérés | Sikeres válasz |
|---|---|---|---|
GET /v2/admin/reports/data | reports:read | Lekérdezés: ReportFilters, átlátszatlan cursor?, limit?=50 (1..100) | 200 { items: ReportSession[], pageTotals, page { limit, nextCursor }, range { from, to, toExclusive: true } } |
GET /v2/admin/reports/schedule | reports:read | Törzs/lekérdezés: nincs | 200 { schedule: ReportSchedule or null } |
PUT /v2/admin/reports/schedule | reports:schedules | Törzs: szigorú ReportScheduleInput | 200 { schedule: ReportSchedule } |
POST /v2/admin/reports/send | reports:send | Törzs: nincs; a(z) Idempotency-Key fejléc kötelező | 200 { sent: true, format: "csv" or "pdf", rowCount: number, range { from, to } }; mentett ütemezés hiányában 409 REPORT_SCHEDULE_REQUIRED |
GET /v2/admin/reports/measurements | reports:read | Lekérdezés: kötelező transactionLogId, átlátszatlan cursor?, limit?=500 (1..1000) | 200 { transactionLogId, measurements: { name, unit, lines[] }[], page { limit, nextCursor, sampleValuesTruncated, sampleLimitPerMeterValue: 64 } } |
GET /v2/admin/reports/export | reports:export | Lekérdezés: ReportFilters, format?="csv" or "pdf" | 200 CSV/PDF bináris adat csatolmányfájlnévvel, Cache-Control: private, no-store, X-Content-Type-Options: nosniff; több mint 2 000 sor esetén 422 REPORT_EXPORT_ROW_LIMIT |
Tarifavégpontok
| Metódus és elérési út | Hatókör | Kérés | Sikeres válasz |
|---|---|---|---|
GET /v2/admin/tariffs | tariffs:read | Törzs/lekérdezés: nincs | 200 { items: Tariff[], lookups { currencies, biddingZones, currencyRates, componentTypes, seasons, tariffTypes } } |
POST /v2/admin/tariffs | tariffs:create | Törzs: TariffInput | 201 { tariff: Tariff } |
GET /v2/admin/tariffs/:tariffId | tariffs:read | Törzs/lekérdezés: nincs | 200 { tariff: Tariff, lookups } |
PATCH /v2/admin/tariffs/:tariffId | tariffs:update | Törzs: teljes TariffInput | 200 { tariff: Tariff } |
PUT /v2/admin/tariffs/:tariffId/components | tariffs:components | Törzs: { components: TariffComponentInput[0..256] } | 200 { tariff: Tariff, components: TariffComponent[] } |
DELETE /v2/admin/tariffs/:tariffId | tariffs:delete | Törzs: nincs | 204 empty; töltésirekord-hivatkozások esetén 409 TARIFF_CONFLICT |
GET /v2/admin/tariffs/:tariffId/market-prices | tariffs:read | Lekérdezés: kötelező startsAt nemnegatív Unix-időbélyeg | 200 { items: { id, value, currencyId, startsAt, endsAt, startsAtIso, endsAtIso, intervalMinutes }[], truncated: boolean }; legfeljebb 10 000 sor |
GET /v2/admin/chargers/:chargerId/tariff-assignments | chargers:tariff-assignments + tariffs:read | Törzs/lekérdezés: nincs | 200 { items: TariffAssignment[], tariffs: Tariff[] } |
POST /v2/admin/chargers/:chargerId/tariff-assignments | chargers:tariff-assignments + tariffs:assign | Törzs: TariffAssignmentCreateInput; az elhagyott connectorId vagy connectorId=0 az összes csatlakozót jelenti | 201 { assignments: TariffAssignment[] } |
PATCH /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentId | chargers:tariff-assignments + tariffs:assign | Törzs: TariffAssignmentUpdateInput; a csatlakozó kötelező, és nem lehet 0 | 200 { assignment: TariffAssignment } |
DELETE /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentId | chargers:tariff-assignments + tariffs:assign | Törzs: nincs | 204 empty |
A(z) TariffAssignment tartalma: id, chargerId, connectorId, biztonságos tarifa-/pénznemösszefoglaló, createdAt és updatedAt.
Töltésiprofil-végpontok
| Metódus és elérési út | Hatókör | Kérés | Sikeres válasz |
|---|---|---|---|
GET /v2/admin/charging-profiles | chargingProfiles:read | Törzs/lekérdezés: nincs | 200 { items: ChargingProfile[], lookups { locations, purposes, kinds, recurrencyKinds, rateUnits, allowedRateUnits } } |
POST /v2/admin/charging-profiles | chargingProfiles:create | Törzs: ChargingProfileCreate | 201 { profile: ChargingProfile } |
GET /v2/admin/charging-profiles/:profileId | chargingProfiles:read | Törzs/lekérdezés: nincs | 200 { profile: ChargingProfile, lookups, isEditBlocked: boolean, usage { simpleChargingSchedule, smartSchedule, chargePoolChargepoint, isUsed } } |
PATCH /v2/admin/charging-profiles/:profileId | chargingProfiles:update | Törzs: teljes ChargingProfileInput | 200 { profile: ChargingProfile, ocppSync: OcppCommandResult[] } |
PUT /v2/admin/charging-profiles/:profileId/schedule | chargingProfiles:update | Törzs: ChargingScheduleInput | 200 { profile: ChargingProfile, schedule: SchedulePeriod[], ocppSync: OcppCommandResult[] } |
DELETE /v2/admin/charging-profiles/:profileId | chargingProfiles:delete | Törzs: nincs | 204 empty csak akkor, ha minden hozzárendelt töltő elfogadta a törlést, és az állapot újraellenőrzése megtörtént; máskülönben 409, és a profil megmarad |
GET /v2/admin/chargers/:chargerId/profile-assignments | chargers:profile-assignments + chargingProfiles:read | Törzs/lekérdezés: nincs | 200 { items: ProfileAssignment[], profiles: ChargingProfile[] } |
POST /v2/admin/chargers/:chargerId/profile-assignments | chargers:profile-assignments + chargingProfiles:assign | Törzs: ProfileAssignmentInput | 201 { assignment: ProfileAssignment, ocpp: OcppCommandResult } |
PATCH /v2/admin/chargers/:chargerId/profile-assignments/:assignmentId | chargers:profile-assignments + chargingProfiles:assign | Törzs: ProfileAssignmentInput | 200 { assignment: ProfileAssignment, ocpp: OcppCommandResult } |
DELETE /v2/admin/chargers/:chargerId/profile-assignments/:assignmentId | chargers:profile-assignments + chargingProfiles:assign | Törzs: nincs | 204 empty szinkronizált törlés után |
A(z) ProfileAssignment tartalmazza a hozzárendelés azonosítóját, a töltő/csatlakozó azonosítóit és a profil biztonságos összefoglalóját. Az OCPP-eredményobjektumok stabil kérés-/állapotadatokat mutatnak, hitelesítő adatokat soha.
Felhasználó-, RFID-, hozzáférés-, korlát- és helyifelhasználó-végpontok
| Metódus és elérési út | Hatókör | Kérés | Sikeres válasz |
|---|---|---|---|
GET /v2/admin/users | users:read | Lekérdezés: állapotnak megfelelő cursor? (members: pozitív numerikus; invitations: hitelesített átlátszatlan i2.*; all: régi numerikus tagfolytatás vagy hitelesített átlátszatlan összetett a2.*), limit?=50 (1..100), status?="all", "members", or "invitations"; opcionális X-Admin-User-Search fejléc (max. 100) | 200 { items: User[], invitations: Invitation[], chargers: ChargerSummary[], page { nextCursor, memberNextCursor, invitationNextCursor, limit } }; a meghívások lapozása és adatfeltöltése ugyanazzal a normalizált e-mail-kifejezéssel történik, így régi kis-/nagybetűk vagy szóközök nem rejthetnek el sorokat; a kurzorok a munkaterülethez és keresési szűrőhöz kötöttek, nem tartalmaznak olvasható e-mail-címet, és változtatás nélkül kell visszaküldeni őket; a(z) all kurzorok a tag- és meghívásfolyamokat külön léptetik |
POST /v2/admin/users | users:create | Törzs: UserCreate; az ügyfélnek már regisztráltnak kell lennie | 201 { user: User }; ismeretlen e-mail-cím felderítést megakadályozó 404 RESOURCE_NOT_FOUND törzset kap, és meghívást kell használnia |
POST /v2/admin/users/invitations | users:invitations + users:access; továbbá users:rfid, ha rfid megadva | Törzs: InvitationInput | 200 or 201 { result }; hozzákapcsolt eredmény: { kind:"attached", user, accessChanged, rfidChanged }; függő eredmény: { kind:"invited", email, name, maskedRfid, chargerIds, createdCount, emailSent, emailRetryReady, alreadyInvited } |
POST /v2/admin/users/invitations/resend | users:invitations | Törzs: { email: email } | 200 { result: { targetedChargers, emailSent, emailRetryReady } }; a címzett összes kérésére vonatkozó várakozási idő érvényesül |
DELETE /v2/admin/users/invitations | users:invitations | Törzs: { email: email } | 204 empty |
GET /v2/admin/users/:userId | users:read + reports:read | Törzs/lekérdezés: nincs | 200 { user: UserDetail, sessions: UserSession[], totals { count, energyWh, durationSeconds }, window, limitTypes, chargers }; legfeljebb 200 töltés 90 nap alatt |
PATCH /v2/admin/users/:userId | users:update | Törzs: { name: string(1..255) } | 200 { user: User } |
DELETE /v2/admin/users/:userId | users:delete | Törzs: nincs | 204 empty |
GET /v2/admin/users/:userId/vehicles | users:read | Lekérdezés: numerikus cursor?, limit?=50 (1..100) | 200 { items: Vehicle[], page { nextCursor, limit } }; a jármű-DTO biztonságos szolgáltató-/állapot-/modell-/telemetriamezőket tartalmaz |
GET /v2/admin/users/:userId/rfids | users:read | Törzs/lekérdezés: nincs | 200 { items: RFID[] }; az UID-k maszkoltak |
POST /v2/admin/users/:userId/rfids | users:rfid | Törzs: { uid: string(1..36), name?: string or null } | 201 { rfid: RFID }; a nyers UID nem jelenik meg a válaszban |
PATCH /v2/admin/users/:userId/rfids/:rfidId | users:rfid | Törzs: { name: string or null } | 200 { rfid: RFID } |
DELETE /v2/admin/users/:userId/rfids/:rfidId | users:rfid | Törzs: nincs | 204 empty |
GET /v2/admin/users/:userId/access | users:read | Törzs/lekérdezés: nincs | 200 { access: Access } |
PUT /v2/admin/users/:userId/access | users:access | Törzs: AccessInput | 200 { access: Access } |
DELETE /v2/admin/users/:userId/access/:accessId | users:access | Törzs: nincs | 204 empty |
GET /v2/admin/users/:userId/limits | users:read | Törzs/lekérdezés: nincs | 200 { items: Limit[] } |
POST /v2/admin/users/:userId/limits | users:limits | Törzs: LimitCreate | 201 { limit: Limit } |
PATCH /v2/admin/users/:userId/limits/:limitId | users:limits | Törzs: LimitPatch, legalább egy tulajdonság | 200 { limit: Limit } |
DELETE /v2/admin/users/:userId/limits/:limitId | users:limits | Törzs: nincs | 204 empty |
GET /v2/admin/chargers/:chargerId/local-users | chargers:read + users:read | Törzs/lekérdezés: nincs | 200 { charger: ChargerSummary, items: LocalUser[], invitations: { email }[], availableMembers: [] }; az API szándékosan kihagyja a portál széles körű, elérhetőtag-jegyzékét |
POST /v2/admin/chargers/:chargerId/local-users | chargers:local-users + users:access | Törzs: { 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 | Törzs: { email: email } | 200 or 201 { result }; meglévő ügyfél: { invited:false, localUser: LocalUserMutation }; meghívás: { invited:true, alreadyInvited, emailSent, emailRetryReady } |
DELETE /v2/admin/chargers/:chargerId/local-users/invitations | chargers:local-users + users:invitations | Törzs: { email: email } | 204 empty |
PATCH /v2/admin/chargers/:chargerId/local-users/:localUserId | chargers:local-users + users:access | Törzs: { expiresAt: RFC3339 or null } | 200 { localUser: LocalUserUpdate } |
DELETE /v2/admin/chargers/:chargerId/local-users/:localUserId | chargers:local-users + users:access | Törzs: nincs | 204 empty |
A Tagless-rendszerfelhasználó védett ezektől a műveletektől. A meghívó e-mail hibái biztonságos kézbesítési állapotot adnak vissza SMTP-részletek kiszivárogtatása nélkül; a hívók újrapróbálkozhatnak, ha a(z) emailRetryReady igaz.
Bináris válaszok
Két végpontcsalád siker esetén nem ad JSON-t:
| Végpont | Tartalomtípus | Fontos fejlécek |
|---|---|---|
| Töltő QR-kódja | image/png | Cache-Control: no-store, Content-Disposition: inline, X-Content-Type-Options: nosniff |
| Jelentésexport | text/csv; charset=utf-8 vagy application/pdf | Cache-Control: private, no-store, Content-Disposition: attachment, X-Content-Type-Options: nosniff |
A bináris végpontok hibái továbbra is JSON-formátumúak.