Przegląd API administracyjnego

API administracyjne obszaru roboczego

API administracyjne obszaru roboczego pozwala integracjom serwer–serwer administrować jednym obszarem roboczym EVCharge. Ta dokumentacja jest przeznaczona dla administratorów obszarów roboczych i zewnętrznych integratorów API. Wykorzystuje odwoływalne tokeny dostępu powiązane z obszarem roboczym i szczegółowe zakresy uprawnień; tokeny logowania klientów i sesje przeglądarki nie są przyjmowane.

Ten katalog jest kanoniczną dokumentacją dla programistów API /v2/admin zaimplementowanego przez app-api. Nie opisuje ścieżek klientów/aplikacji mobilnej ani własnych ścieżek HTTP portalu administracyjnego.

Bazowy URL i granica zasobów

Wszystkie ścieżki są względne wobec adresu źródłowego wdrożonej usługi app-api:

https://api.evcharge.mobi/v2/admin/...

Identyfikator obszaru roboczego nie jest przyjmowany w URL, ciągu zapytania ani treści żądania. Każdy token dostępu jest związany z dokładnie jednym obszarem roboczym, a API wyznacza cpoId z uwierzytelnionej tożsamości tokena. Jeśli zagnieżdżona lokalizacja, ładowarka, użytkownik, taryfa, profil, przypisanie lub transakcja nie należy do tego obszaru, API zwraca tę samą odpowiedź 404 RESOURCE_NOT_FOUND, która nie ujawnia istnienia zasobu.

Uzyskiwanie tokena dostępu

Administrator obszaru roboczego tworzy tokeny w Ustawieniach obszaru roboczego, w sekcji Dostęp do API. Zarządzanie tokenami celowo nie jest udostępniane tokenom obszaru roboczego.

  • Dostęp do API jest zawarty w każdym planie, także Free. Administrator musi mieć uprawnienie do edycji obszaru roboczego.
  • Dostawca obszaru roboczego musi włączyć API administracyjne przez adminApiEnabled; w przeciwnym razie prawidłowy token otrzyma z app-api odpowiedź 404, która nie ujawnia istnienia zasobu.
  • Administrator może nadać tylko zakresy dozwolone przez jego własne bieżące uprawnienia i prawa obszaru roboczego do funkcji.
  • Nowe tokeny mogą być bezterminowe (domyślne ustawienie w Ustawieniach obszaru roboczego) lub mieć wybrany przez administratora okres ważności od 1 do 365 pełnych dni; serwer oblicza skończony bezwzględny termin wygaśnięcia. Tokeny bezterminowe pozostają ważne do cofnięcia.
  • Obszar roboczy może mieć najwyżej 50 aktywnych tokenów.
  • Dane uwierzytelniające w jawnym tekście są pokazywane tylko raz. Natychmiast zapisz je w menedżerze sekretów.
  • Nazwa, zakresy uprawnień i termin ważności są niezmienne. Aby przeprowadzić rotację, utwórz zamiennik, wdroż go, zweryfikuj i cofnij stary token.
  • Cofnięcie jest natychmiastowe; cofnięte rekordy pozostają widoczne jako niezmienna historia obszaru roboczego z ukrytymi danymi wrażliwymi. Nie ma punktu końcowego introspekcji tokena Bearer ani trwałego usuwania.

app-api nie ma punktu końcowego wydającego, odświeżającego, wyświetlającego lub cofającego te dane uwierzytelniające. Uzyskanie tokena jest więc warunkiem wstępnym realizowanym przez człowieka w portalu administracyjnym, a nie innym punktem końcowym w tej dokumentacji.

Nigdy nie umieszczaj tokena w systemie kontroli wersji, adresach URL, ciągach zapytań, plikach cookie, dziennikach, analityce ani raportach błędów.

Uwierzytelnianie

W każdym żądaniu wyślij dokładnie jeden nagłówek w stylu RFC 6750:

Authorization: Bearer evc_ws_<selector>.<secret>

Dokładne nieprzezroczyste dane uwierzytelniające składają się z evc_ws_, po którym następuje 16-znakowy kanoniczny selektor base64url, . i 43-znakowy kanoniczny sekret base64url. Wyślij kompletne dane bez zmian; nie koduj ich ponownie w base64.

API odrzuca powielone nagłówki autoryzacji, wartości połączone przecinkami, inne schematy, puste wartości Bearer, tokeny JWT klientów i dane uwierzytelniające przesłane gdziekolwiek poza tym nagłówkiem.

Niepoprawnie sformatowane, nieznane, wygasłe, cofnięte lub w inny sposób nieprawidłowe tokeny otrzymują tę samą odpowiedź:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer
Cache-Control: no-store
Content-Type: application/json

{
  "error": "Unauthorized",
  "code": "INVALID_WORKSPACE_TOKEN"
}

Usługa sprawdza status tokena i bieżące uprawnienia obszaru roboczego przy każdym żądaniu. Usunięcie uprawnienia do funkcji może więc wyłączyć powiązane zakresy przed wygaśnięciem tokena.

Tokeny obszaru roboczego są nieprzezroczystymi danymi uwierzytelniającymi, a nie JWT. Nie mają tokena odświeżania i nie istnieje punkt końcowy odświeżania. Token terminowy przestaje uwierzytelniać w bezwzględnym momencie expiresAt; token bezterminowy pozostaje ważny do cofnięcia. Rotacja oznacza utworzenie zastępczych danych w portalu, wdrożenie ich w kliencie i cofnięcie poprzednich.

Konwencje żądań

  • Użyj Content-Type: application/json dla żądań z treścią JSON.
  • Z opcjonalnych wartości żądania X-Request-Id usuwane są skrajne spacje. Wartości są przyjmowane tylko wtedy, gdy zawierają 1–128 znaków z A-Z, a-z, 0-9, ., _, : lub -; w przeciwnym razie serwer generuje UUID. Każda odpowiedź zwraca wybraną wartość jako X-Request-Id.
  • Opcjonalne X-Error-Format: envelope konwertuje każdą odpowiedź błędu JSON do ustrukturyzowanego opakowania opisanego w sekcji Kontrakt odpowiedzi i błędów. Każda inna wartość zachowuje domyślną treść zapewniającą zgodność.
  • Identyfikatory w parametrach ścieżki są dodatnimi liczbami całkowitymi. Identyfikatory tokenów dostępu zwracane przez portal są ciągami dziesiętnymi, ponieważ w bazie są 64-bitowymi wartościami bez znaku.
  • Wartości daty i czasu to ciągi RFC 3339 z jawnym przesunięciem strefy czasowej, na przykład 2026-08-13T12:30:00Z.
  • Pomyślne usunięcia zwykle zwracają 204 No Content.
  • Operacje tworzenia zwykle zwracają 201 Created.
  • Operacja OCPP, która została jedynie umieszczona w kolejce, może zwrócić 202 Accepted; nie interpretuj tego jako potwierdzenia ładowarki, chyba że odpowiedź wyraźnie tak stanowi.
  • Uwierzytelnione odpowiedzi używają Cache-Control: no-store. Punkty końcowe QR i eksportu raportów zwracają treść binarną z jawnymi nagłówkami zawartości.
  • Dozwolone źródła przeglądarki mogą odczytywać X-Request-Id, Idempotency-Replayed, Retry-After i Content-Disposition przez CORS. Pozwala to klientom przeglądarkowym korelować żądania, wykrywać powtórzenia idempotentne, przestrzegać czasu kolejnej próby i zachowywać wybrane przez serwer nazwy pobieranych plików.

Idempotencja

Wszystkie żądania administracyjne POST, PUT, PATCH i DELETE muszą zawierać jeden nagłówek Idempotency-Key. Klucze mają 1–255 widocznych znaków, a ich zakres jest powiązany z tokenem, metodą i ścieżką.

Idempotency-Key: provisioning-2026-08-13-site-42

Ponowne użycie zakończonego klucza z identycznym URL i treścią odtwarza zapisaną odpowiedź i dodaje:

Idempotency-Replayed: true

Ponowne użycie klucza z innym żądaniem zwraca 409 IDEMPOTENCY_CONFLICT. Nadal przetwarzane żądanie zwraca 409 IDEMPOTENT_REQUEST_PROCESSING wraz z Retry-After: 5.

Zakończone odpowiedzi i wyniki końcowe są przechowywane do powtórzenia lub uzgodnienia przez siedem dni od ostatniej aktualizacji. Po tym okresie ten sam klucz może zostać potraktowany jako nowe polecenie, dlatego klienci muszą używać globalnie unikalnych kluczy i nie mogą celowo używać ich ponownie.

Jeśli wygaśnie rezerwacja przetwarzania, połączenie zostanie zamknięte po rozpoczęciu wykonania lub operacja zwróci błąd serwera, API nie może bezpiecznie ustalić, czy wystąpił skutek zewnętrzny. W siedmiodniowym okresie przechowywania klucz pozostaje ostatecznie nieokreślony i zwraca 409 IDEMPOTENCY_OUTCOME_UNKNOWN; nie jest przejmowany ponownie ani automatycznie wykonywany. Zweryfikuj skutki operacji przed ręcznym odzyskiwaniem i nie przesyłaj tej samej operacji z nowym kluczem, dopóki uzgadnianie nie zostanie zakończone.

Wszystkie administracyjne punkty końcowe zmieniające dane, w tym POST /reports/send, wymagają Idempotency-Key.

Limity częstotliwości żądań

Limity obowiązują zarówno pojedynczy token, jak i jego obszar roboczy. Domyślne wartości zapisane w repozytorium:

LimitDomyślnie
Okres60 sekund
Na token300 żądań
Na obszar roboczy1000 żądań

Żądanie objęte limitem zwraca 429 Too Many Requests i nagłówek Retry-After. Wdrożenia mogą nadpisywać te wartości.

Błędy

Błędy JSON używają stabilnego code, gdy wywołujący musi wybrać dalszą ścieżkę działania:

{
  "error": "Insufficient workspace-token scope",
  "code": "INSUFFICIENT_SCOPE"
}

Błędy walidacji używają tablic pól:

{
  "validationErrors": {
    "name": ["String must contain at least 1 character(s)"]
  }
}

Typowe statusy:

StatusZnaczenie
400Nieprawidłowy kontrakt idempotencji, kursora użytkownika lub geokodera; błędy schematu ścieżki, treści lub zapytania zwykle mają kod 422
401Nieprawidłowy token obszaru roboczego
403Prawidłowy token bez wymaganego efektywnego zakresu lub uprawnienia do funkcji
404Obszar roboczy lub zagnieżdżony zasób nie jest widoczny dla tego tokena
409Konflikt stanu zasobu, zależności, współbieżności lub idempotencji
422Błąd walidacji pola, ograniczonego zakresu lub limitu eksportu
429Przekroczono limit częstotliwości tokena lub obszaru roboczego
502Nie powiodła się operacja zależna, na przykład dostarczenie raportu
503Magazyn autoryzacji lub idempotencji jest tymczasowo niedostępny

Katalog zakresów uprawnień

Poniższy katalog zakresów uprawnień jest używany, gdy administrator tworzy token. Zakres zapisu lub działań o dużym wpływie może implikować odpowiadający mu zakres odczytu, ale zakresy odczytu nigdy nie przyznają prawa zapisu. Dostępne zakresy zależą od uprawnień administratora i funkcji włączonych w obszarze roboczym.

DomenaZakresy uprawnień do odczytuZakresy zapisu i działań o dużym wpływieDodatkowe uprawnienie, jeśli ma zastosowanie
Obszar roboczyworkspaces:readworkspaces:update—
Lokalizacjesites:readsites:create, sites:update, sites:delete, sites:power-managementdlmPowerManagement dla zarządzania mocą
Ładowarkichargers:readchargers:create, chargers:update, chargers:delete, chargers:credentials, chargers:configuration, chargers:firmware, chargers:commands, chargers:public, chargers:connector-settings, chargers:local-users, chargers:tariff-assignments, chargers:profile-assignmentsfirmwareOperations, publicCharging, tariffs lub smartCharging dla odpowiedniej możliwości
Użytkownicyusers:readusers:create, users:update, users:delete, users:invitations, users:rfid, users:access, users:limits—
Profile ładowaniachargingProfiles:readchargingProfiles:create, chargingProfiles:update, chargingProfiles:delete, chargingProfiles:assignsmartCharging
Taryfytariffs:readtariffs:create, tariffs:update, tariffs:delete, tariffs:components, tariffs:assigntariffs
Raportyreports:readreports:export, reports:schedules, reports:sendscheduledReports dla harmonogramów i wysyłki teraz

Sam dostęp do API jest zawarty w każdym planie i kontrolowany przez ustawienie adminApiEnabled dostawcy. Dodatkowe uprawnienia do funkcji opisane powyżej nadal obowiązują; dostęp do API nie przyznaje funkcji spoza planu obszaru roboczego.

Dokumentacja punktów końcowych

Poniższe tabele wymieniają wszystkie 87 ścieżek administracyjnych obszaru roboczego. Jeśli w komórce jest wiele zakresów uprawnień, wymagane są wszystkie.

Obszar roboczy

MetodaŚcieżkaWymagany zakres uprawnieńPrzeznaczenie
GET/v2/adminworkspaces:readOdczytaj bezpieczne metadane i dane słownikowe obszaru roboczego.
PATCH/v2/adminworkspaces:updateZaktualizuj co najmniej jedno pole metadanych obszaru roboczego.
GET/v2/admin/dashboardworkspaces:read + reports:readOdczytaj ograniczone liczniki obszaru roboczego i agregaty operacyjne za 90 dni.

Pola częściowej aktualizacji obszaru roboczego: name, email, website, addressLine1, addressLine2, postalCode, city, state i countryId. Wymagane jest co najmniej jedno pole. Puste ciągi dopuszczające null są normalizowane do null.

Lokalizacje i zarządzanie mocą

MetodaŚcieżkaWymagany zakres uprawnieńPrzeznaczenie
GET/v2/admin/sitessites:readWyświetl lokalizacje z podsumowaniami ograniczonymi do 90 dni i danymi słownikowymi lokalizacji.
GET/v2/admin/sites/geocodesites:readWyszukaj znormalizowanych kandydatów adresu lokalizacji przez wspólny geokoder z ograniczaniem częstotliwości i pamięcią podręczną.
POST/v2/admin/sitessites:createUtwórz lokalizację.
GET/v2/admin/sites/:siteIdsites:read + reports:readOdczytaj szczegóły lokalizacji, ostatnie sesje, podsumowania i agregaty operacyjne.
PATCH/v2/admin/sites/:siteIdsites:updateZastąp edytowalny dokument lokalizacji.
DELETE/v2/admin/sites/:siteIdsites:deleteUsuń pustą lokalizację; zależności powodują zwrócenie konfliktu.
GET/v2/admin/sites/:siteId/power-managementsites:power-managementOdczytaj drzewo dynamicznego zarządzania obciążeniem lokalizacji.
PUT/v2/admin/sites/:siteId/power-managementsites:power-managementAtomowo zastąp konfigurację zarządzania mocą lokalizacji.

Treści tworzenia i częściowej aktualizacji lokalizacji używają:

{
  "name": "Main depot",
  "description": null,
  "addressLine1": "1 Example Street",
  "addressLine2": null,
  "postalCode": "LV-1001",
  "city": "Riga",
  "state": null,
  "countryId": 1,
  "timezoneId": 1,
  "latitude": 56.9496,
  "longitude": 24.1052
}

Geokodowanie lokalizacji przyjmuje opcjonalne pola zapytania street, city, state, country i dwuliterowe countryCode oraz nagłówek żądania Accept-Language. Łączne wyszukiwanie ulicy/miasta/regionu musi zawierać co najmniej dwa znaki. Odpowiedzi zawierają tylko placeId, displayName, latitude i longitude; dane uwierzytelniające dostawcy i metadane specyficzne dla dostawcy nie są ujawniane. Serwer stosuje wspólną kolejkę dostawcy z jednym żądaniem na sekundę, limit czasu ośmiu sekund, ograniczoną 24-godzinną pamięć podręczną i globalne limity częstotliwości tokenów obszaru roboczego.

Zarządzanie mocą przyjmuje { "pools": [...] }. Grupa ma id, name, limit, opcjonalne meterSources i rekurencyjne children. Ładowarka podrzędna ma chargepointId i priority. API ogranicza rozmiar drzewa i liczbę liczników oraz przeprowadza dwuetapowe czyszczenie OCPP i ponowną walidację podczas zastępowania zainstalowanego stanu. Odrzucenie zmiany, przekroczenie czasu lub konflikt współbieżnych zmian zwraca 409 POWER_MANAGEMENT_CONFLICT, zachowując poprzednią konfigurację.

Ładowarki

MetodaŚcieżkaWymagany zakres uprawnieńPrzeznaczenie lub dane wejściowe
GET/v2/admin/chargerschargers:readWyświetl ładowarki ze statusem i ograniczonymi podsumowaniami energii oraz kosztów.
POST/v2/admin/chargerschargers:createUtwórz, podając wymagane pola name, identifier i siteId; password jest opcjonalne.
GET/v2/admin/chargers/:chargerIdchargers:readOdczytaj dane ładowarki, EVSE, złącza, słowników i statusu.
PATCH/v2/admin/chargers/:chargerIdchargers:updateZaktualizuj name, siteId, invertedRfid, smartMode lub automationDisabled.
DELETE/v2/admin/chargers/:chargerIdchargers:deleteUsuń ładowarkę zgodnie z regułami zależności i rozliczeń.
PATCH/v2/admin/chargers/:chargerId/credentialschargers:credentialsZastąp hasło ładowarki wartością { "password": "..." }.
PATCH/v2/admin/chargers/:chargerId/connectors/:portIdchargers:connector-settingsZaktualizuj format/typ złącza, rodzaj zasilania, napięcie, natężenie prądu i limity mocy.
PATCH/v2/admin/chargers/:chargerId/public-listingchargers:publicUstaw `{ "isPublic": true
GET/v2/admin/chargers/:chargerId/public-readinesschargers:readOdczytaj gotowość do ładowania publicznego i brakujące wymagania.
GET/v2/admin/chargers/:chargerId/logschargers:readOdczytaj dzienniki OCPP z ukrytymi danymi wrażliwymi i stronicowaniem kursorem.
GET/v2/admin/chargers/:chargerId/sessionschargers:read + reports:readOdczytaj stronicowane sesje ładowania i podsumowania.
GET/v2/admin/chargers/:chargerId/qrchargers:readWygeneruj kod QR w formacie PNG o rozmiarze 300 pikseli; opcjonalne connector=0..255.
GET/v2/admin/chargers/:chargerId/composite-scheduleschargers:readOdczytaj zapisaną historię harmonogramów zbiorczych.
GET/v2/admin/chargers/:chargerId/configurationchargers:readOdczytaj konfigurację OCPP z ukrytymi danymi wrażliwymi.
PATCH/v2/admin/chargers/:chargerId/configurationchargers:configurationWyślij zmianę konfiguracji z key i value.
POST/v2/admin/chargers/:chargerId/configuration/reloadchargers:configurationZażądaj aktualnej konfiguracji ładowarki.
GET/v2/admin/chargers/:chargerId/firmwarechargers:readOdczytaj bieżące oprogramowanie układowe i status aktualizacji.
POST/v2/admin/chargers/:chargerId/firmwarechargers:firmwareUmieść aktualizację z HTTP(S) { "url": "..." } w kolejce.
POST/v2/admin/chargers/:chargerId/commands/resetchargers:commandsWyślij `{ "resetType": "Soft"
POST/v2/admin/chargers/:chargerId/commands/availabilitychargers:commandsWyślij `{ "availabilityType": "Operative"
POST/v2/admin/chargers/:chargerId/commands/triggerchargers:commandsWyzwól BootNotification, Heartbeat, StatusNotification lub MeterValues.
POST/v2/admin/chargers/:chargerId/commands/unlockchargers:commandsOdblokuj dodatnie connectorId.
POST/v2/admin/chargers/:chargerId/commands/composite-schedulechargers:commandsZażądaj harmonogramu zbiorczego dla connectorId, durationSeconds i chargingRateUnit.

Parametry zapytania dzienników ładowarki to cursor, limit (domyślnie 50, maksymalnie 200), from, to, action, direction i levelId. Parametry sesji to page, limit (domyślnie 25, maksymalnie 100), from, to i customerId (dodatni identyfikator lub unknown). Historia harmonogramu zbiorczego używa cursor, limit (domyślnie 20, maksymalnie 50) i opcjonalnego connectorId.

Raporty

MetodaŚcieżkaWymagany zakres uprawnieńPrzeznaczenie
GET/v2/admin/reports/datareports:readOdczytaj filtrowane dane raportu sesji ładowania ze stronicowaniem kursorem.
GET/v2/admin/reports/measurementsreports:readOdczytaj ograniczony zbiór wartości pomiarowych dla należącej do obszaru transakcji.
GET/v2/admin/reports/exportreports:exportPobierz eksport CSV lub PDF.
GET/v2/admin/reports/schedulereports:readOdczytaj harmonogram eksportu należący do obszaru roboczego albo null.
PUT/v2/admin/reports/schedulereports:schedulesUtwórz lub zastąp harmonogram eksportu należący do obszaru roboczego.
POST/v2/admin/reports/sendreports:sendWyślij e-mailem zapisany eksport za poprzedni miesiąc kalendarzowy UTC; wymagany jest klucz idempotencji.

Filtry danych raportu i eksportu to from, to, siteId, chargerId, userId, anonymous i active. from/to domyślnie obejmują ostatnie 90 dni i nie mogą obejmować więcej niż 90 dni. userId nie można łączyć z anonymous=true.

  • Stronicowanie danych: nieprzezroczysty cursor, domyślnie limit=50, maksymalnie 100.
  • Pomiary: wymagane transactionLogId, nieprzezroczysty cursor, domyślnie limit=500, maksymalnie 1000.
  • Eksport: format=csv|pdf, domyślnie csv, nieprzekraczalny limit 2000 wierszy.
  • Odpowiedzi eksportu używają Content-Disposition: attachment, Cache-Control: private, no-store i X-Content-Type-Options: nosniff.

Treść harmonogramu:

{
  "enabled": true,
  "recipientEmail": "reports@example.com",
  "format": "csv",
  "sendDay": 5,
  "sendTime": "08:30"
}

sendDay mieści się w zakresie 1–28, a sendTime jest interpretowane w UTC. Harmonogram nadrabia pominiętą zaplanowaną minutę w bieżącym miesiącu dostarczenia. Nieudane przygotowania przed przekazaniem są ponawiane po 5 i 10 minutach, przerwaną rezerwację building można przejąć po 30 minutach, a automatyczna dostawa kończy się po trzech próbach. Harmonogram zapisuje indeterminate bezpośrednio przed przekazaniem do SMTP; zarówno indeterminate, jak i starszy status sending są końcowe, ponieważ automatyczne ponowienie któregokolwiek mogłoby wysłać duplikat załącznika. Operatorzy muszą ręcznie uzgodnić te wyniki przed zmianą stanu harmonogramu. Każdy cykl wybiera maksymalnie dziesięć harmonogramów, przestaje rozpoczynać pracę po wyczerpaniu budżetu 45 sekund i używa ograniczonych limitów czasu SMTP. Zadanie jest domyślnie wyłączone i musi zostać jawnie włączone po weryfikacji SMTP oraz wydajności. Harmonogram API należy do obszaru roboczego, zamiast pożyczać tożsamość osoby, która utworzyła token.

Taryfy

MetodaŚcieżkaWymagany zakres uprawnieńPrzeznaczenie
GET/v2/admin/tariffstariffs:readWyświetl taryfy i dane słownikowe.
POST/v2/admin/tariffstariffs:createUtwórz taryfę.
GET/v2/admin/tariffs/:tariffIdtariffs:readOdczytaj jedną taryfę należącą do obszaru i jej składniki.
PATCH/v2/admin/tariffs/:tariffIdtariffs:updateZaktualizuj definicję taryfy.
PUT/v2/admin/tariffs/:tariffId/componentstariffs:componentsAtomowo zastąp maksymalnie 256 składników.
DELETE/v2/admin/tariffs/:tariffIdtariffs:deleteUsuń nieużywaną taryfę.
GET/v2/admin/tariffs/:tariffId/market-pricestariffs:readOdczytaj ceny dla strefy rynkowej należącej do taryfy, począwszy od liczbowego startsAt.
GET/v2/admin/chargers/:chargerId/tariff-assignmentschargers:tariff-assignments + tariffs:readWyświetl przypisania taryf ładowarki.
POST/v2/admin/chargers/:chargerId/tariff-assignmentschargers:tariff-assignments + tariffs:assignPrzypisz taryfę.
PATCH/v2/admin/chargers/:chargerId/tariff-assignments/:assignmentIdchargers:tariff-assignments + tariffs:assignZastąp cel przypisania.
DELETE/v2/admin/chargers/:chargerId/tariff-assignments/:assignmentIdchargers:tariff-assignments + tariffs:assignUsuń przypisanie.

Treść taryfy zawiera name, dokładnie jedno z currencyId, currencyCode lub currency, opcjonalne biddingZoneId oraz tax. Treść przypisania:

{ "tariffId": 17, "connectorId": 0 }

Przy tworzeniu przypisania taryfa ma zastosowanie do wszystkich fizycznych złączy, jeśli connectorId zostanie pominięte lub jawnie ustawione na 0. Aktualizacja przypisania dotyczy jednego zapisanego przypisania, dlatego wymaga jawnego dodatniego fizycznego connectorId; 0 jest odrzucane.

Składnik zawiera wymagane typeId, seasonId i price; priority oraz granice ważności według miesiąca, dnia tygodnia i godziny są opcjonalne.

Profile ładowania

MetodaŚcieżkaWymagany zakres uprawnieńPrzeznaczenie
GET/v2/admin/charging-profileschargingProfiles:readWyświetl profile i należące do obszaru dane słownikowe.
POST/v2/admin/charging-profileschargingProfiles:createUtwórz profil z opcjonalnym harmonogramem.
GET/v2/admin/charging-profiles/:profileIdchargingProfiles:readOdczytaj jeden profil należący do obszaru.
PATCH/v2/admin/charging-profiles/:profileIdchargingProfiles:updateZastąp metadane profilu.
PUT/v2/admin/charging-profiles/:profileId/schedulechargingProfiles:updateZastąp harmonogram 1–256 okresami.
DELETE/v2/admin/charging-profiles/:profileIdchargingProfiles:deleteWyczyść zainstalowane przypisania i usuń je dopiero po zaakceptowaniu wyników OCPP oraz ponownej weryfikacji.
GET/v2/admin/chargers/:chargerId/profile-assignmentschargers:profile-assignments + chargingProfiles:readWyświetl przypisania profili ładowarki.
POST/v2/admin/chargers/:chargerId/profile-assignmentschargers:profile-assignments + chargingProfiles:assignPrzypisz i zsynchronizuj profil.
PATCH/v2/admin/chargers/:chargerId/profile-assignments/:assignmentIdchargers:profile-assignments + chargingProfiles:assignZastąp i zsynchronizuj przypisanie.
DELETE/v2/admin/chargers/:chargerId/profile-assignments/:assignmentIdchargers:profile-assignments + chargingProfiles:assignWyczyść i usuń przypisanie.

Pola metadanych profilu to label, locationId, stackLevel, purposeId, kindId, opcjonalne recurrencyKindId, validFrom, validTo, startSchedule, rateUnitId i opcjonalne minChargingRate. Okres harmonogramu zawiera startPeriod, limit i opcjonalne numberOfPhases. Treść przypisania zawiera profileId i connectorId (domyślnie 0).

Usuwanie profili i zastępowanie zarządzania mocą może czekać na potwierdzenie ładowarki. Odrzucenie, przekroczenie czasu lub współbieżna zmiana stanu zwraca konflikt i zachowuje konfigurację w bazie danych, zamiast pozornie uznawać, że ładowarka została wyczyszczona.

Użytkownicy, zaproszenia, RFID, dostęp i limity

MetodaŚcieżkaWymagany zakres uprawnieńPrzeznaczenie
GET/v2/admin/usersusers:readWyświetl członków i zaproszenia.
POST/v2/admin/usersusers:createDołącz już zarejestrowanego klienta według email i pola obszaru roboczego name.
POST/v2/admin/users/invitationsusers:invitations + users:access; także users:rfid, gdy podano RFIDZaproś nieznany adres e-mail lub dołącz istniejącego klienta.
POST/v2/admin/users/invitations/resendusers:invitationsWyślij ponownie za pomocą { "email": "..." }, z zachowaniem odstępu między wysyłkami do tego samego odbiorcy.
DELETE/v2/admin/users/invitationsusers:invitationsAnuluj zaproszenie; adres e-mail pozostaje w treści JSON.
GET/v2/admin/users/:userIdusers:read + reports:readOdczytaj szczegóły użytkownika i ograniczone podsumowania sesji.
PATCH/v2/admin/users/:userIdusers:updateUstaw wyświetlane name właściwe dla obszaru roboczego.
DELETE/v2/admin/users/:userIdusers:deleteUsuń członka i powiązany dostęp do obszaru roboczego, uwzględniając możliwe konflikty.
GET/v2/admin/users/:userId/vehiclesusers:readWyświetl posiadane pojazdy.
GET/v2/admin/users/:userId/rfidsusers:readWyświetl metadane RFID z zamaskowanymi UID.
POST/v2/admin/users/:userId/rfidsusers:rfidDodaj uid i opcjonalne name; odpowiedzi ujawniają tylko zamaskowany UID.
PATCH/v2/admin/users/:userId/rfids/:rfidIdusers:rfidZaktualizuj etykietę RFID.
DELETE/v2/admin/users/:userId/rfids/:rfidIdusers:rfidUsuń RFID i zsynchronizuj powiązane ładowarki.
GET/v2/admin/users/:userId/accessusers:readOdczytaj przyznane dostępy do ładowarek.
PUT/v2/admin/users/:userId/accessusers:accessZastąp dostęp za pomocą allChargers i unikalnych chargerIds.
DELETE/v2/admin/users/:userId/access/:accessIdusers:accessCofnij jeden rekord dostępu.
GET/v2/admin/users/:userId/limitsusers:readWyświetl limity ładowania.
POST/v2/admin/users/:userId/limitsusers:limitsUtwórz limitTypeId, energyValue i/lub timeValue.
PATCH/v2/admin/users/:userId/limits/:limitIdusers:limitsZaktualizuj co najmniej jedno pole limitu.
DELETE/v2/admin/users/:userId/limits/:limitIdusers:limitsUsuń limit.
GET/v2/admin/chargers/:chargerId/local-userschargers:read + users:readWyświetl lokalnych użytkowników ładowarki i oczekujące zaproszenia.
POST/v2/admin/chargers/:chargerId/local-userschargers:local-users + users:accessDodaj istniejący customerId z opcjonalnym expiresAt.
POST/v2/admin/chargers/:chargerId/local-users/invitationschargers:local-users + users:invitations + users:accessDodaj lub zaproś przez e-mail.
DELETE/v2/admin/chargers/:chargerId/local-users/invitationschargers:local-users + users:invitationsAnuluj zaproszenie użytkownika lokalnego według adresu e-mail.
PATCH/v2/admin/chargers/:chargerId/local-users/:localUserIdchargers:local-users + users:accessUstaw expiresAt, które może mieć wartość null.
DELETE/v2/admin/chargers/:chargerId/local-users/:localUserIdchargers:local-users + users:accessUsuń dostęp lokalny i zsynchronizuj stan OCPP.

Stronicowanie pojazdów i stronicowanie użytkowników status=members używa dodatniego liczbowego cursor. Strony zaproszeń używają nieprzezroczystego kursora i2.*, a status=all po pierwszej stronie używa nieprzezroczystego kursora złożonego a2.* (kursor liczbowy pozostaje prawidłowy tylko jako kontynuacja starszego strumienia członków). Wyszukiwanie użytkowników jest przesyłane w nagłówku żądania X-Admin-User-Search, aby adresy e-mail nie trafiały do URL ani dzienników dostępu. limit domyślnie wynosi 50 i jest ograniczone do 100; lista użytkowników obsługuje status=all|members|invitations. Wszystkie zwrócone kursory traktuj jako nieprzezroczyste i odsyłaj bez zmian.

Bezpośrednie utworzenie użytkownika nie tworzy hasła, tożsamości logowania ani sesji. Jedynie dołącza już zarejestrowanego klienta. Dla nieznanego adresu e-mail użyj punktu końcowego zaproszeń. Chronionego użytkownika systemowego Tagless nie można zmieniać za pomocą tych ścieżek.

Przykłady

Ustaw wartości w swojej powłoce bez wypisywania tokena:

export ADMIN_API_BASE_URL="https://api.example.com"
export WORKSPACE_TOKEN="<read from secret manager>"

Wyświetl lokalizacje:

curl --fail-with-body \
  -H "Authorization: Bearer ${WORKSPACE_TOKEN}" \
  "${ADMIN_API_BASE_URL}/v2/admin/sites"

Bezpiecznie utwórz lokalizację:

curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer ${WORKSPACE_TOKEN}" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: site-main-depot-v1" \
  --data '{
    "name":"Main depot",
    "description":null,
    "addressLine1":"1 Example Street",
    "addressLine2":null,
    "postalCode":"LV-1001",
    "city":"Riga",
    "state":null,
    "countryId":1,
    "timezoneId":1,
    "latitude":56.9496,
    "longitude":24.1052
  }' \
  "${ADMIN_API_BASE_URL}/v2/admin/sites"

Pobierz raport CSV dla jawnie określonego zakresu UTC:

curl --fail-with-body \
  -H "Authorization: Bearer ${WORKSPACE_TOKEN}" \
  -o report.csv \
  "${ADMIN_API_BASE_URL}/v2/admin/reports/export?format=csv&from=2026-07-01T00%3A00%3A00Z&to=2026-08-01T00%3A00%3A00Z"

Celowo wyłączone możliwości

API tokenów obszaru roboczego nie udostępnia operacji wymagających tożsamości człowieka lub szerszych uprawnień. Obejmują one:

  • tworzenie, ujawnianie, rotację lub cofanie tokenów za pomocą innego tokena;
  • logowanie, reset hasła, sesje, delegowanie ludzkich ról lub przywilejów i zmiany własności obszaru roboczego;
  • tworzenie/usuwanie obszarów roboczych i członkostwo w koncie rozliczeniowym;
  • ustawienia płatności, wdrożenie Stripe, plany, faktury i rozliczenia dostawcy;
  • operacje pomocy obejmujące całego dostawcę i webhooki usługodawców;
  • powiadomienia do ludzi, przekierowania nawigacji, materiały marki i ścieżki programistyczne/testowe.