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:
nonenozī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 | nullnozīmē, ka rekvizīts ir klātesošs un var būt null.204 emptynozīmē, ka nav atbildes satura.CursorPage<T>nozīmē{ items: T[], nextCursor: number|string|null }, izņemot gadījumus, kad rinda skaidri nosaucpagevaipaginationobjektu.- 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:
| DTO | Lauki |
|---|---|
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; detaļas pievieno normalizētu chargers un pieslēgvietas stāvokli |
GeocodeCandidate | placeId, displayName, latitude, longitude; pakalpojuma sniedzēja piekļuves dati un tam specifiskie metadati nekad netiek atgriezti |
MetricsWindow | from, to, sesiju ierobežojumi/skaiti un totalsCapped, ja piemērojams |
Charger | id, 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 |
Connector | portId, connectorId, pieslēgvietas uzziņu ID, maxVoltage, maxAmperage, maxElectricPower |
ReportSession | id, 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 |
ReportSchedule | id, 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 |
Tariff | id, cpoId, name, veida/objekta/valūtas/tirdzniecības zonas objekti, tax, fallbackPrice, faktiskais price, components, assignmentCount |
ChargingProfile | id, cpoId, label, description, stackLevel, vietas/mērķa/veida/atkārtošanās/intensitātes mērvienības objekti, derīgums, grafiks, assignmentCount, laikspiedoli |
User | id, 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. |
RFID | id, maskedUid, name, type, valid; neapstrādāts UID nekad netiek atgriezts |
Access | allChargers, sakārtots chargerIds un items, kas satur piešķīruma/lādētāja/objekta/termiņa metadatus |
Limit | id, limitTypeId, label, energyValue, timeValue |
LocalUser | Saraksta 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ērums | Pieprasījums | Veiksmīga atbilde |
|---|---|---|---|
GET /v2/admin | workspaces:read | Saturs: nav | 200 { workspace: Workspace } |
PATCH /v2/admin | workspaces:update | Saturs: WorkspacePatch | 200 { workspace: Workspace } |
GET /v2/admin/dashboard | workspaces:read + reports:read | Saturs/vaicājums: nav | 200 { 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ērums | Pieprasījums | Veiksmīga atbilde |
|---|---|---|---|
GET /v2/admin/sites | sites:read | Saturs/vaicājums: nav | 200 { items: Site[], metricsWindow: MetricsWindow, lookups { countries, timezones } } |
GET /v2/admin/sites/geocode | sites:read | Vaicā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īmes | 200 { 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/sites | sites:create | Saturs: SiteInput | 201 { site: Site } |
GET /v2/admin/sites/:siteId | sites:read + reports:read | Saturs/vaicājums: nav | 200 { site: SiteDetail, recentSessions: SiteSession[], totals, metricsWindow } |
PATCH /v2/admin/sites/:siteId | sites:update | Saturs: pilns SiteInput | 200 { site: Site } |
DELETE /v2/admin/sites/:siteId | sites:delete | Saturs: nav | 204 empty; objekts, kas nav tukšs, atgriež 409 SITE_NOT_EMPTY |
GET /v2/admin/sites/:siteId/power-management | sites:power-management | Saturs/vaicājums: nav | 200 { 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-management | sites:power-management | Saturs: PowerConfigurationInput | 200 { 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ērums | Pieprasījums | Veiksmīga atbilde |
|---|---|---|---|
GET /v2/admin/chargers | chargers:read | Saturs/vaicājums: nav | 200 { items: Charger[], metricsWindow: MetricsWindow, connectorLookups { formats, types, powerTypes } } |
POST /v2/admin/chargers | chargers:create | Saturs: ChargerCreate; identifikators tiek pārveidots uz lielajiem burtiem | 201 { charger: Charger }; parole nekad netiek atgriezta |
GET /v2/admin/chargers/:chargerId | chargers:read | Saturs/vaicājums: nav | 200 { charger: ChargerDetail } |
PATCH /v2/admin/chargers/:chargerId | chargers:update | Saturs: ChargerPatch | 200 { charger: ChargerDetail } |
DELETE /v2/admin/chargers/:chargerId | chargers:delete | Saturs: nav | 204 empty |
PATCH /v2/admin/chargers/:chargerId/credentials | chargers:credentials | Saturs: { password: string(0..40) } | 200 { success: true } |
PATCH /v2/admin/chargers/:chargerId/connectors/:portId | chargers:connector-settings | Saturs: ConnectorPatch | 200 { connector: Connector } |
PATCH /v2/admin/chargers/:chargerId/public-listing | chargers:public | Saturs: { isPublic: boolean } | 200 { isPublic: boolean }; neizpildīta gatavība atgriež 409 CHARGER_CONFLICT |
GET /v2/admin/chargers/:chargerId/public-readiness | chargers:read | Saturs/vaicājums: nav | 200 { readiness: { ready, missingRequirements, connectorIds, missingTariffConnectorIds, ...commercialState } } |
GET /v2/admin/chargers/:chargerId/logs | chargers:read | Vaicājums: 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 | Vaicā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/qr | chargers:read | Vaicā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-schedules | chargers:read | Vaicājums: cursor?, limit?=20 (1..50), connectorId? | 200 { items: CompositeSchedule[], nextCursor: number or null } |
GET /v2/admin/chargers/:chargerId/configuration | chargers:read | Saturs/vaicājums: nav | 200 { items: ChargerConfiguration[] }; noslēpumiem līdzīgās vērtības ir [REDACTED] |
PATCH /v2/admin/chargers/:chargerId/configuration | chargers:configuration | Saturs: { 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/reload | chargers:configuration | Saturs: nav | 200 { status: string } |
GET /v2/admin/chargers/:chargerId/firmware | chargers:read | Saturs/vaicājums: nav | 200 { firmware: { status, notifiedAt, currentVersion, bootNotifiedAt } } |
POST /v2/admin/chargers/:chargerId/firmware | chargers:firmware | Saturs: { url: HTTP-or-HTTPS URL, max 2048 characters } | 202 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/reset | chargers:commands | Saturs: { resetType: "Soft" or "Hard" } | 200 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/availability | chargers:commands | Saturs: { availabilityType: "Operative" or "Inoperative" } | 200 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/trigger | chargers:commands | Saturs: { messageType: "BootNotification", "Heartbeat", "StatusNotification", or "MeterValues" } | 200 { status: string, connectorResults: { connectorId, status }[] } |
POST /v2/admin/chargers/:chargerId/commands/unlock | chargers:commands | Saturs: { connectorId: positive integer } | 200 { status: string } |
POST /v2/admin/chargers/:chargerId/commands/composite-schedule | chargers:commands | Saturs: { 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ērums | Pieprasījums | Veiksmīga atbilde |
|---|---|---|---|
GET /v2/admin/reports/data | reports:read | Vaicā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/schedule | reports:read | Saturs/vaicājums: nav | 200 { schedule: ReportSchedule or null } |
PUT /v2/admin/reports/schedule | reports:schedules | Saturs: stingrs ReportScheduleInput | 200 { schedule: ReportSchedule } |
POST /v2/admin/reports/send | reports:send | Saturs: nav; Idempotency-Key galvene ir obligāta | 200 { 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/measurements | reports:read | Vaicā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/export | reports:export | Vaicā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ērums | Pieprasījums | Veiksmīga atbilde |
|---|---|---|---|
GET /v2/admin/tariffs | tariffs:read | Saturs/vaicājums: nav | 200 { items: Tariff[], lookups { currencies, biddingZones, currencyRates, componentTypes, seasons, tariffTypes } } |
POST /v2/admin/tariffs | tariffs:create | Saturs: TariffInput | 201 { tariff: Tariff } |
GET /v2/admin/tariffs/:tariffId | tariffs:read | Saturs/vaicājums: nav | 200 { tariff: Tariff, lookups } |
PATCH /v2/admin/tariffs/:tariffId | tariffs:update | Saturs: pilns TariffInput | 200 { tariff: Tariff } |
PUT /v2/admin/tariffs/:tariffId/components | tariffs:components | Saturs: { components: TariffComponentInput[0..256] } | 200 { tariff: Tariff, components: TariffComponent[] } |
DELETE /v2/admin/tariffs/:tariffId | tariffs:delete | Saturs: nav | 204 empty; atsauces uz uzlādes ierakstiem atgriež 409 TARIFF_CONFLICT |
GET /v2/admin/tariffs/:tariffId/market-prices | tariffs:read | Vaicājums: obligāts startsAt nenegatīvs Unix laikspiedols | 200 { items: { id, value, currencyId, startsAt, endsAt, startsAtIso, endsAtIso, intervalMinutes }[], truncated: boolean }; ne vairāk kā 10 000 rindu |
GET /v2/admin/chargers/:chargerId/tariff-assignments | chargers:tariff-assignments + tariffs:read | Saturs/vaicājums: nav | 200 { items: TariffAssignment[], tariffs: Tariff[] } |
POST /v2/admin/chargers/:chargerId/tariff-assignments | chargers:tariff-assignments + tariffs:assign | Saturs: TariffAssignmentCreateInput; izlaists connectorId vai connectorId=0 nozīmē visas pieslēgvietas | 201 { assignments: TariffAssignment[] } |
PATCH /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentId | chargers:tariff-assignments + tariffs:assign | Saturs: TariffAssignmentUpdateInput; pieslēgvieta ir obligāta un nevar būt 0 | 200 { assignment: TariffAssignment } |
DELETE /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentId | chargers:tariff-assignments + tariffs:assign | Saturs: nav | 204 empty |
TariffAssignment satur id, chargerId, connectorId, drošu tarifa/valūtas kopsavilkumu, createdAt un updatedAt.
Uzlādes profilu galapunkti
| Metode un ceļš | Tvērums | Pieprasījums | Veiksmīga atbilde |
|---|---|---|---|
GET /v2/admin/charging-profiles | chargingProfiles:read | Saturs/vaicājums: nav | 200 { items: ChargingProfile[], lookups { locations, purposes, kinds, recurrencyKinds, rateUnits, allowedRateUnits } } |
POST /v2/admin/charging-profiles | chargingProfiles:create | Saturs: ChargingProfileCreate | 201 { profile: ChargingProfile } |
GET /v2/admin/charging-profiles/:profileId | chargingProfiles:read | Saturs/vaicājums: nav | 200 { profile: ChargingProfile, lookups, isEditBlocked: boolean, usage { simpleChargingSchedule, smartSchedule, chargePoolChargepoint, isUsed } } |
PATCH /v2/admin/charging-profiles/:profileId | chargingProfiles:update | Saturs: pilns ChargingProfileInput | 200 { profile: ChargingProfile, ocppSync: OcppCommandResult[] } |
PUT /v2/admin/charging-profiles/:profileId/schedule | chargingProfiles:update | Saturs: ChargingScheduleInput | 200 { profile: ChargingProfile, schedule: SchedulePeriod[], ocppSync: OcppCommandResult[] } |
DELETE /v2/admin/charging-profiles/:profileId | chargingProfiles:delete | Saturs: nav | 204 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-assignments | chargers:profile-assignments + chargingProfiles:read | Saturs/vaicājums: nav | 200 { items: ProfileAssignment[], profiles: ChargingProfile[] } |
POST /v2/admin/chargers/:chargerId/profile-assignments | chargers:profile-assignments + chargingProfiles:assign | Saturs: ProfileAssignmentInput | 201 { assignment: ProfileAssignment, ocpp: OcppCommandResult } |
PATCH /v2/admin/chargers/:chargerId/profile-assignments/:assignmentId | chargers:profile-assignments + chargingProfiles:assign | Saturs: ProfileAssignmentInput | 200 { assignment: ProfileAssignment, ocpp: OcppCommandResult } |
DELETE /v2/admin/chargers/:chargerId/profile-assignments/:assignmentId | chargers:profile-assignments + chargingProfiles:assign | Saturs: nav | 204 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ērums | Pieprasījums | Veiksmīga atbilde |
|---|---|---|---|
GET /v2/admin/users | users:read | Vaicā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/users | users:create | Saturs: UserCreate; klientam jau jābūt reģistrētam | 201 { 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/invitations | users:invitations + users:access; papildus users:rfid, ja norādīts rfid | Saturs: InvitationInput | 200 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/resend | users:invitations | Saturs: { email: email } | 200 { result: { targetedChargers, emailSent, emailRetryReady } }; tiek piemērots saņēmējam globāls nogaidīšanas periods |
DELETE /v2/admin/users/invitations | users:invitations | Saturs: { email: email } | 204 empty |
GET /v2/admin/users/:userId | users:read + reports:read | Saturs/vaicājums: nav | 200 { user: UserDetail, sessions: UserSession[], totals { count, energyWh, durationSeconds }, window, limitTypes, chargers }; ne vairāk kā 200 sesiju 90 dienās |
PATCH /v2/admin/users/:userId | users:update | Saturs: { name: string(1..255) } | 200 { user: User } |
DELETE /v2/admin/users/:userId | users:delete | Saturs: nav | 204 empty |
GET /v2/admin/users/:userId/vehicles | users:read | Vaicā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/rfids | users:read | Saturs/vaicājums: nav | 200 { items: RFID[] }; UID tiek maskēti |
POST /v2/admin/users/:userId/rfids | users:rfid | Saturs: { 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/:rfidId | users:rfid | Saturs: { name: string or null } | 200 { rfid: RFID } |
DELETE /v2/admin/users/:userId/rfids/:rfidId | users:rfid | Saturs: nav | 204 empty |
GET /v2/admin/users/:userId/access | users:read | Saturs/vaicājums: nav | 200 { access: Access } |
PUT /v2/admin/users/:userId/access | users:access | Saturs: AccessInput | 200 { access: Access } |
DELETE /v2/admin/users/:userId/access/:accessId | users:access | Saturs: nav | 204 empty |
GET /v2/admin/users/:userId/limits | users:read | Saturs/vaicājums: nav | 200 { items: Limit[] } |
POST /v2/admin/users/:userId/limits | users:limits | Saturs: LimitCreate | 201 { limit: Limit } |
PATCH /v2/admin/users/:userId/limits/:limitId | users:limits | Saturs: LimitPatch, vismaz viens rekvizīts | 200 { limit: Limit } |
DELETE /v2/admin/users/:userId/limits/:limitId | users:limits | Saturs: nav | 204 empty |
GET /v2/admin/chargers/:chargerId/local-users | chargers:read + users:read | Saturs/vaicājums: nav | 200 { 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-users | chargers:local-users + users:access | Saturs: { 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 | Saturs: { 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/invitations | chargers:local-users + users:invitations | Saturs: { email: email } | 204 empty |
PATCH /v2/admin/chargers/:chargerId/local-users/:localUserId | chargers:local-users + users:access | Saturs: { expiresAt: RFC3339 or null } | 200 { localUser: LocalUserUpdate } |
DELETE /v2/admin/chargers/:chargerId/local-users/:localUserId | chargers:local-users + users:access | Saturs: nav | 204 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:
| Galapunkts | Satura tips | Svarīgas galvenes |
|---|---|---|
| Lādētāja QR | image/png | Cache-Control: no-store, Content-Disposition: inline, X-Content-Type-Options: nosniff |
| Pārskata eksports | text/csv; charset=utf-8 vai application/pdf | Cache-Control: private, no-store, Content-Disposition: attachment, X-Content-Type-Options: nosniff |
Bināro galapunktu kļūdas joprojām ir JSON formātā.