Beheer-API voor werkruimten
Met de Beheer-API voor werkruimten kunnen server-naar-serverintegraties één EVCharge-werkruimte beheren. Deze documentatie is bedoeld voor werkruimtebeheerders en externe API-integratoren. De API gebruikt intrekbare, aan werkruimten gebonden toegangstokens en fijnmazige scopes; inlogtokens van klanten en browsersessies worden niet geaccepteerd.
Deze map is de gezaghebbende ontwikkelaarsreferentie voor de /v2/admin-API die door app-api is geïmplementeerd. De map documenteert geen klant-/mobiele routes of de eigen HTTP-routes van het beheerportaal.
- Eindpuntverzoeken en -antwoorden bevat alle 87 geregistreerde eindpunten, scopes, parameters, verzoekbodies en succesbodies.
- Schema's en voorbeelden definieert herbruikbare verzoek-/antwoordtypen en representatieve JSON-bodies.
- Antwoord- en foutcontract definieert elke gedeelde en eindpuntspecifieke body bij mislukking.
Basis-URL en resourcegrens
Alle routes zijn relatief aan de oorsprong van de geïmplementeerde app-api:
https://api.evcharge.mobi/v2/admin/...
De werkruimte-ID wordt niet geaccepteerd in de URL, querystring of verzoekbody. Elk toegangstoken is aan precies één werkruimte gebonden en de API leidt cpoId af van de geauthenticeerde tokenidentiteit. Als een geneste locatie, lader, gebruiker, tarief, profiel, toewijzing of transactie niet bij die werkruimte hoort, retourneert de API hetzelfde 404 RESOURCE_NOT_FOUND-antwoord dat het bestaan van resources niet onthult.
Een toegangstoken verkrijgen
Een beheerder van de werkruimte maakt tokens aan in Werkruimte-instellingen onder API-toegang. Tokenbeheer is bewust niet beschikbaar voor werkruimtetokens.
- API-toegang is inbegrepen in elk abonnement, ook Free. De beheerder moet rechten hebben om de werkruimte te bewerken.
- De aanbieder van de werkruimte moet de beheer-API inschakelen via
adminApiEnabled; anders ontvangt een geldig token een404vanapp-apizonder dat het bestaan van resources wordt onthuld. - De beheerder kan alleen scopes toekennen die zijn toegestaan op basis van de eigen huidige rechten en de functierechten van de werkruimte.
- Nieuwe tokens kunnen onbeperkt geldig zijn (de standaard in Werkruimte-instellingen) of een door de beheerder gekozen geldigheidsduur van 1 tot 365 hele dagen hebben; de server berekent eindige absolute vervaltijden. Tokens zonder vervaldatum blijven geldig totdat ze worden ingetrokken.
- Een werkruimte kan maximaal 50 actieve tokens hebben.
- De referentie in leesbare vorm wordt één keer getoond. Sla deze direct op in een geheimenbeheerder.
- Naam, scopes en vervaldatum zijn onveranderlijk. Maak voor rotatie een vervanger aan, neem deze in gebruik, controleer deze en trek het oude token in.
- Intrekking gaat direct in; ingetrokken records blijven zichtbaar als onveranderlijke, afgeschermde werkruimtegeschiedenis. Er is geen eindpunt voor bearer-tokenintrospectie of definitief verwijderen.
app-api heeft geen eindpunt dat deze referenties uitgeeft, vernieuwt, opsomt of intrekt. Het verkrijgen van het token is daarom een voorwaarde die via het menselijke beheerportaal wordt uitgevoerd, niet via een ander eindpunt in deze referentie.
Plaats het token nooit in versiebeheer, URL's, querystrings, cookies, logboeken, analytics of foutrapporten.
Authenticatie
Stuur bij elk verzoek precies één header volgens RFC 6750:
Authorization: Bearer evc_ws_<selector>.<secret>
De exacte ondoorzichtige referentie bestaat uit evc_ws_, gevolgd door een canonieke base64url-selector van 16 tekens, . en een canoniek base64url-geheim van 43 tekens. Verstuur de volledige referentie ongewijzigd; codeer deze niet opnieuw met base64.
De API weigert dubbele autorisatieheaders, met komma's samengevoegde waarden, andere schema's, lege bearer-waarden, klant-JWT's en referenties die ergens anders dan in deze header worden aangeleverd.
Onjuist gevormde, onbekende, verlopen, ingetrokken of anderszins ongeldige tokens krijgen allemaal hetzelfde antwoord:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer
Cache-Control: no-store
Content-Type: application/json
{
"error": "Unauthorized",
"code": "INVALID_WORKSPACE_TOKEN"
}
De dienst controleert bij elk verzoek de tokenstatus en de huidige werkruimtefunctierechten. Het verwijderen van een functierecht kan de betrokken scopes dus uitschakelen voordat het token verloopt.
Werkruimtetokens zijn ondoorzichtige referenties, geen JWT's. Ze hebben geen refreshtoken en er is geen vernieuwingseindpunt. Een tijdelijk token stopt met authenticeren op zijn absolute expiresAt; een token zonder vervaldatum blijft geldig totdat het wordt ingetrokken. Rotatie betekent een vervangende referentie in het portaal aanmaken, deze in de client in gebruik nemen en de oude referentie intrekken.
Verzoekconventies
- Gebruik
Content-Type: application/jsonvoor verzoeken met een JSON-body. - Spaties aan het begin en einde van optionele
X-Request-Id-verzoekwaarden worden verwijderd. De waarden worden alleen geaccepteerd als ze 1–128 tekens uitA-Z,a-z,0-9,.,_,:of-bevatten; anders genereert de server een UUID. Elk antwoord retourneert de gekozen waarde alsX-Request-Id. - Optioneel
X-Error-Format: envelopezet elk JSON-foutantwoord om naar het gestructureerde omhulsel dat wordt beschreven in Antwoord- en foutcontract. Elke andere waarde behoudt de standaardcompatibiliteitsbody. - ID's in padparameters zijn positieve gehele getallen. Toegangstoken-ID's die het portaal retourneert zijn decimale tekenreeksen, omdat het databasewaarden van 64 bits zonder teken zijn.
- Datum-tijdwaarden zijn RFC 3339-tekenreeksen met een expliciete tijdzone-offset, bijvoorbeeld
2026-08-13T12:30:00Z. - Geslaagde verwijderacties retourneren normaal gesproken
204 No Content. - Aanmaakbewerkingen retourneren normaal gesproken
201 Created. - OCPP-werk dat alleen in de wachtrij is geplaatst, kan
202 Acceptedretourneren; beschouw dit niet als bevestiging van de lader, tenzij het antwoord dat expliciet vermeldt. - Geauthenticeerde antwoorden gebruiken
Cache-Control: no-store. Eindpunten voor QR en rapportexport retourneren binaire bodies met expliciete inhoudsheaders. - Toegestane browseroorsprongen kunnen via CORS
X-Request-Id,Idempotency-Replayed,Retry-AfterenContent-Dispositionlezen. Hiermee kunnen browserclients verzoeken aan elkaar koppelen, idempotente herhalingen herkennen, de wachttijd voor nieuwe pogingen naleven en door de server gekozen downloadbestandsnamen behouden.
Idempotentie
Alle POST-, PUT-, PATCH- en DELETE-beheerverzoeken moeten één Idempotency-Key-header bevatten. Sleutels bevatten 1–255 zichtbare tekens en zijn gebonden aan het token, de methode en het pad.
Idempotency-Key: provisioning-2026-08-13-site-42
Hergebruik van een voltooide sleutel met dezelfde URL en body herhaalt het opgeslagen antwoord en voegt toe:
Idempotency-Replayed: true
Hergebruik van een sleutel met een ander verzoek retourneert 409 IDEMPOTENCY_CONFLICT. Een verzoek dat nog wordt verwerkt retourneert 409 IDEMPOTENT_REQUEST_PROCESSING met Retry-After: 5.
Voltooide antwoorden en definitieve resultaten worden zeven dagen na hun laatste update bewaard voor herhaling of afstemming. Na die bewaartermijn kan dezelfde sleutel als een nieuwe opdracht worden behandeld. Clients moeten daarom wereldwijd unieke sleutels gebruiken en mogen deze niet bewust hergebruiken.
Als de verwerkingsreservering verloopt, de verbinding na het starten van de uitvoering sluit of de bewerking een serverfout retourneert, kan de API niet veilig vaststellen of een extern effect is opgetreden. Tijdens de bewaartermijn van zeven dagen blijft de sleutel definitief onbepaald en retourneert deze 409 IDEMPOTENCY_OUTCOME_UNKNOWN; de sleutel wordt niet opnieuw geclaimd en de bewerking wordt niet automatisch opnieuw uitgevoerd. Controleer de effecten van de bewerking voordat u handmatig herstel uitvoert en dien dezelfde bewerking niet onder een nieuwe sleutel in voordat die afstemming is afgerond.
Alle muterende beheereindpunten, waaronder POST /reports/send, vereisen Idempotency-Key.
Verzoeklimieten
Limieten gelden zowel voor het afzonderlijke token als voor de werkruimte. De vastgelegde standaardwaarden zijn:
| Limiet | Standaard |
|---|---|
| Tijdvenster | 60 seconden |
| Per token | 300 verzoeken |
| Per werkruimte | 1.000 verzoeken |
Een begrensd verzoek retourneert 429 Too Many Requests en een Retry-After-header. Deze waarden kunnen per implementatie worden overschreven.
Fouten
JSON-fouten gebruiken een stabiele code wanneer de aanroepende toepassing een vervolgstap moet kiezen:
{
"error": "Insufficient workspace-token scope",
"code": "INSUFFICIENT_SCOPE"
}
Validatiefouten gebruiken veldarrays:
{
"validationErrors": {
"name": ["String must contain at least 1 character(s)"]
}
}
Veelvoorkomende statussen zijn:
| Status | Betekenis |
|---|---|
400 | Ongeldig contract voor idempotentie/gebruikerscursor/geocodering; fouten in pad-/body-/queryschema's zijn normaal gesproken 422 |
401 | Ongeldig werkruimtetoken |
403 | Geldig token zonder de vereiste effectieve scope of functierechten |
404 | Werkruimte of geneste resource is niet zichtbaar voor dit token |
409 | Conflict in resourcestatus, afhankelijkheden, gelijktijdigheid of idempotentie |
422 | Veldvalidatie, begrensd bereik of exportlimiet niet geldig |
429 | Verzoeklimiet van token of werkruimte overschreden |
502 | Een vervolgbewerking, zoals het afleveren van een rapport, is mislukt |
503 | Autorisatie- of idempotentieopslag is tijdelijk niet beschikbaar |
Scopecatalogus
De volgende scopecatalogus wordt gebruikt wanneer een beheerder een token aanmaakt. Een schrijf- of impactvolle scope kan de bijbehorende leesscope impliceren, maar leesscopes geven nooit schrijfrechten. Beschikbare scopes hangen af van de rechten van de beheerder en de ingeschakelde werkruimtefuncties.
| Domein | Leesscopes | Schrijfscopes en scopes met grote impact | Aanvullend recht indien van toepassing |
|---|---|---|---|
| Werkruimte | workspaces:read | workspaces:update | — |
| Locaties | sites:read | sites:create, sites:update, sites:delete, sites:power-management | dlmPowerManagement voor vermogensbeheer |
| Laders | chargers:read | chargers: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-assignments | firmwareOperations, publicCharging, tariffs of smartCharging voor de bijbehorende mogelijkheid |
| Gebruikers | users:read | users:create, users:update, users:delete, users:invitations, users:rfid, users:access, users:limits | — |
| Laadprofielen | chargingProfiles:read | chargingProfiles:create, chargingProfiles:update, chargingProfiles:delete, chargingProfiles:assign | smartCharging |
| Tarieven | tariffs:read | tariffs:create, tariffs:update, tariffs:delete, tariffs:components, tariffs:assign | tariffs |
| Rapporten | reports:read | reports:export, reports:schedules, reports:send | scheduledReports voor schema's en direct verzenden |
API-toegang zelf is inbegrepen in elk abonnement en wordt geregeld door de instelling adminApiEnabled van de aanbieder. De aanvullende functierechten hierboven blijven gelden; API-toegang geeft geen toegang tot functies buiten het abonnement van de werkruimte.
Eindpuntreferentie
De onderstaande tabellen bevatten alle 87 beheerroutes voor werkruimten. Als een cel meerdere scopes bevat, zijn ze allemaal vereist.
Werkruimte
| Methode | Pad | Vereiste scope | Doel |
|---|---|---|---|
GET | /v2/admin | workspaces:read | Lees veilige werkruimtemetagegevens en referentiegegevens. |
PATCH | /v2/admin | workspaces:update | Werk één of meer metagegevensvelden van de werkruimte bij. |
GET | /v2/admin/dashboard | workspaces:read + reports:read | Lees begrensde werkruimteaantallen en operationele totalen over 90 dagen. |
Patchvelden voor werkruimten: name, email, website, addressLine1, addressLine2, postalCode, city, state en countryId. Minstens één veld is vereist. Lege tekenreeksen die null mogen zijn, worden genormaliseerd naar null.
Locaties en vermogensbeheer
| Methode | Pad | Vereiste scope | Doel |
|---|---|---|---|
GET | /v2/admin/sites | sites:read | Geef locaties weer met samenvattingen over maximaal 90 dagen en referentiegegevens voor locaties. |
GET | /v2/admin/sites/geocode | sites:read | Zoek genormaliseerde locatieadreskandidaten via de gedeelde geocoder met verzoekbegrenzing en cache. |
POST | /v2/admin/sites | sites:create | Maak een locatie aan. |
GET | /v2/admin/sites/:siteId | sites:read + reports:read | Lees locatiegegevens, recente sessies, totalen en operationele totalen. |
PATCH | /v2/admin/sites/:siteId | sites:update | Vervang het bewerkbare locatiedocument. |
DELETE | /v2/admin/sites/:siteId | sites:delete | Verwijder een lege locatie; bij afhankelijkheden wordt een conflict geretourneerd. |
GET | /v2/admin/sites/:siteId/power-management | sites:power-management | Lees de boomstructuur voor dynamisch lastbeheer van de locatie. |
PUT | /v2/admin/sites/:siteId/power-management | sites:power-management | Vervang de vermogensbeheerconfiguratie van de locatie atomair. |
Bodies voor het aanmaken en patchen van locaties gebruiken:
{
"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
}
Geocodering van locaties accepteert de optionele queryvelden street, city, state, country en de tweeletterige countryCode, plus de verzoekheader Accept-Language. De gecombineerde zoekopdracht voor straat/plaats/provincie moet ten minste twee tekens bevatten. Antwoorden bevatten alleen placeId, displayName, latitude en longitude; providerreferenties en providerspecifieke metagegevens worden niet getoond. De server gebruikt de gedeelde providerwachtrij van één verzoek per seconde, een time-out van acht seconden, een begrensde cache van 24 uur en globale verzoeklimieten voor werkruimtetokens.
Vermogensbeheer accepteert { "pools": [...] }. Een laadgroep heeft id, name, limit, optioneel meterSources en recursieve children. Een onderliggende lader heeft chargepointId en priority. De API begrenst de boomstructuur en het aantal meters en voert bij vervanging van de geïnstalleerde toestand een tweefasige OCPP-wisactie en hercontrole uit. Een geweigerde, verlopen of door gelijktijdige wijzigingen ingehaalde wijziging retourneert 409 POWER_MANAGEMENT_CONFLICT en behoudt de vorige configuratie.
Laders
| Methode | Pad | Vereiste scope | Doel of invoer |
|---|---|---|---|
GET | /v2/admin/chargers | chargers:read | Geef laders weer met status en begrensde samenvattingen van energie en kosten. |
POST | /v2/admin/chargers | chargers:create | Maak aan met de verplichte velden name, identifier en siteId; password is optioneel. |
GET | /v2/admin/chargers/:chargerId | chargers:read | Lees lader-, EVSE-, connector-, referentie- en statusgegevens. |
PATCH | /v2/admin/chargers/:chargerId | chargers:update | Werk name, siteId, invertedRfid, smartMode of automationDisabled bij. |
DELETE | /v2/admin/chargers/:chargerId | chargers:delete | Verwijder een lader volgens de afhankelijkheids- en facturatieregels. |
PATCH | /v2/admin/chargers/:chargerId/credentials | chargers:credentials | Vervang het laderwachtwoord door { "password": "..." }. |
PATCH | /v2/admin/chargers/:chargerId/connectors/:portId | chargers:connector-settings | Werk connectorformaat/-type, stroomtype, spanning, stroomsterkte en vermogenslimieten bij. |
PATCH | /v2/admin/chargers/:chargerId/public-listing | chargers:public | Stel `{ "isPublic": true |
GET | /v2/admin/chargers/:chargerId/public-readiness | chargers:read | Lees de gereedheid voor openbaar laden en de ontbrekende vereisten. |
GET | /v2/admin/chargers/:chargerId/logs | chargers:read | Lees afgeschermde OCPP-logboeken met cursorpaginering. |
GET | /v2/admin/chargers/:chargerId/sessions | chargers:read + reports:read | Lees gepagineerde laadsessies en totalen. |
GET | /v2/admin/chargers/:chargerId/qr | chargers:read | Genereer een PNG-QR-code van 300 pixels; optioneel connector=0..255. |
GET | /v2/admin/chargers/:chargerId/composite-schedules | chargers:read | Lees de opgeslagen geschiedenis van samengestelde schema's. |
GET | /v2/admin/chargers/:chargerId/configuration | chargers:read | Lees OCPP-configuratie met afgeschermde gevoelige waarden. |
PATCH | /v2/admin/chargers/:chargerId/configuration | chargers:configuration | Stuur een configuratiewijziging met key en value. |
POST | /v2/admin/chargers/:chargerId/configuration/reload | chargers:configuration | Vraag een actuele laderconfiguratie op. |
GET | /v2/admin/chargers/:chargerId/firmware | chargers:read | Lees de huidige firmware en updatestatus. |
POST | /v2/admin/chargers/:chargerId/firmware | chargers:firmware | Plaats een update vanaf een HTTP(S)-{ "url": "..." } in de wachtrij. |
POST | /v2/admin/chargers/:chargerId/commands/reset | chargers:commands | Stuur `{ "resetType": "Soft" |
POST | /v2/admin/chargers/:chargerId/commands/availability | chargers:commands | Stuur `{ "availabilityType": "Operative" |
POST | /v2/admin/chargers/:chargerId/commands/trigger | chargers:commands | Vraag BootNotification, Heartbeat, StatusNotification of MeterValues op. |
POST | /v2/admin/chargers/:chargerId/commands/unlock | chargers:commands | Ontgrendel een positieve connectorId. |
POST | /v2/admin/chargers/:chargerId/commands/composite-schedule | chargers:commands | Vraag een samengesteld schema op voor connectorId, durationSeconds en chargingRateUnit. |
Queryparameters voor laderlogboeken zijn cursor, limit (standaard 50, maximaal 200), from, to, action, direction en levelId. Sessieparameters zijn page, limit (standaard 25, maximaal 100), from, to en customerId (een positieve ID of unknown). De geschiedenis van samengestelde schema's gebruikt cursor, limit (standaard 20, maximaal 50) en optioneel connectorId.
Rapporten
| Methode | Pad | Vereiste scope | Doel |
|---|---|---|---|
GET | /v2/admin/reports/data | reports:read | Lees gefilterde rapportgegevens over laadsessies met cursorpaginering. |
GET | /v2/admin/reports/measurements | reports:read | Lees een begrensde hoeveelheid meterwaarden voor een transactie van de werkruimte. |
GET | /v2/admin/reports/export | reports:export | Download een CSV- of PDF-export. |
GET | /v2/admin/reports/schedule | reports:read | Lees het exportschema van de werkruimte, of null. |
PUT | /v2/admin/reports/schedule | reports:schedules | Maak het exportschema van de werkruimte aan of vervang het. |
POST | /v2/admin/reports/send | reports:send | Mail de opgeslagen export van de vorige UTC-kalendermaand; een idempotentiesleutel is vereist. |
Filters voor rapportgegevens en export zijn from, to, siteId, chargerId, userId, anonymous en active. from/to gebruiken standaard de laatste 90 dagen en mogen niet meer dan 90 dagen omvatten. userId kan niet met anonymous=true worden gecombineerd.
- Gegevenspaginering: ondoorzichtige
cursor, standaardlimit=50, maximaal 100. - Metingen: vereist
transactionLogId, ondoorzichtigecursor, standaardlimit=500, maximaal 1.000. - Export:
format=csv|pdf, standaardcsv, harde limiet van 2.000 rijen. - Exportantwoorden gebruiken
Content-Disposition: attachment,Cache-Control: private, no-storeenX-Content-Type-Options: nosniff.
Schemabody:
{
"enabled": true,
"recipientEmail": "reports@example.com",
"format": "csv",
"sendDay": 5,
"sendTime": "08:30"
}
sendDay is 1–28 en sendTime wordt in UTC geïnterpreteerd. De planner haalt een gemiste geplande minuut in tijdens de huidige bezorgmaand. Mislukte opbouwpogingen vóór de overdracht worden na 5 en 10 minuten herhaald; een onderbroken building-claim kan na 30 minuten opnieuw worden geclaimd en automatische bezorging stopt na drie pogingen. De planner slaat indeterminate direct vóór overdracht aan SMTP op; zowel indeterminate als de oude status sending zijn definitief, omdat automatisch herhalen van beide een dubbele bijlage kan versturen. Exploitanten moeten deze resultaten handmatig afstemmen voordat ze de schemastatus wijzigen. Elke cyclus selecteert maximaal tien schema's, stopt na een budget van 45 seconden met het starten van nieuw werk en gebruikt begrensde SMTP-time-outs. De taak is standaard uitgeschakeld en moet expliciet worden ingeschakeld na validatie van SMTP en capaciteit. Het API-schema is eigendom van de werkruimte en leent niet de identiteit van de persoon die het token heeft aangemaakt.
Tarieven
| Methode | Pad | Vereiste scope | Doel |
|---|---|---|---|
GET | /v2/admin/tariffs | tariffs:read | Geef tarieven en referentiegegevens weer. |
POST | /v2/admin/tariffs | tariffs:create | Maak een tarief aan. |
GET | /v2/admin/tariffs/:tariffId | tariffs:read | Lees één tarief van de werkruimte en de bijbehorende componenten. |
PATCH | /v2/admin/tariffs/:tariffId | tariffs:update | Werk de tariefdefinitie bij. |
PUT | /v2/admin/tariffs/:tariffId/components | tariffs:components | Vervang maximaal 256 componenten atomair. |
DELETE | /v2/admin/tariffs/:tariffId | tariffs:delete | Verwijder een ongebruikt tarief. |
GET | /v2/admin/tariffs/:tariffId/market-prices | tariffs:read | Lees prijzen voor de bij het tarief horende biedzone vanaf numerieke startsAt. |
GET | /v2/admin/chargers/:chargerId/tariff-assignments | chargers:tariff-assignments + tariffs:read | Geef de tarieftoewijzingen van een lader weer. |
POST | /v2/admin/chargers/:chargerId/tariff-assignments | chargers:tariff-assignments + tariffs:assign | Wijs een tarief toe. |
PATCH | /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentId | chargers:tariff-assignments + tariffs:assign | Vervang het doel van een toewijzing. |
DELETE | /v2/admin/chargers/:chargerId/tariff-assignments/:assignmentId | chargers:tariff-assignments + tariffs:assign | Verwijder een toewijzing. |
Een tariefbody bevat name, precies één van currencyId, currencyCode of currency, optioneel biddingZoneId en tax. Een toewijzingsbody is:
{ "tariffId": 17, "connectorId": 0 }
Bij het aanmaken van een toewijzing geldt het tarief voor alle fysieke connectoren als connectorId wordt weggelaten of expliciet op 0 wordt ingesteld. Een toewijzingsupdate richt zich op één opgeslagen toewijzing en vereist daarom een expliciete positieve fysieke connectorId; 0 wordt geweigerd.
Een component bevat de verplichte velden typeId, seasonId en price; priority en geldigheidsgrenzen voor maanden, weekdagen en uren zijn optioneel.
Laadprofielen
| Methode | Pad | Vereiste scope | Doel |
|---|---|---|---|
GET | /v2/admin/charging-profiles | chargingProfiles:read | Geef profielen en bijbehorende referentiegegevens weer. |
POST | /v2/admin/charging-profiles | chargingProfiles:create | Maak een profiel met een optioneel schema aan. |
GET | /v2/admin/charging-profiles/:profileId | chargingProfiles:read | Lees één profiel van de werkruimte. |
PATCH | /v2/admin/charging-profiles/:profileId | chargingProfiles:update | Vervang de profielmetagegevens. |
PUT | /v2/admin/charging-profiles/:profileId/schedule | chargingProfiles:update | Vervang het schema door 1–256 perioden. |
DELETE | /v2/admin/charging-profiles/:profileId | chargingProfiles:delete | Wis geïnstalleerde toewijzingen en verwijder ze pas na geaccepteerde OCPP-resultaten en hercontrole. |
GET | /v2/admin/chargers/:chargerId/profile-assignments | chargers:profile-assignments + chargingProfiles:read | Geef de profieltoewijzingen van een lader weer. |
POST | /v2/admin/chargers/:chargerId/profile-assignments | chargers:profile-assignments + chargingProfiles:assign | Wijs een profiel toe en synchroniseer het. |
PATCH | /v2/admin/chargers/:chargerId/profile-assignments/:assignmentId | chargers:profile-assignments + chargingProfiles:assign | Vervang en synchroniseer een toewijzing. |
DELETE | /v2/admin/chargers/:chargerId/profile-assignments/:assignmentId | chargers:profile-assignments + chargingProfiles:assign | Wis en verwijder een toewijzing. |
Metagegevensvelden van een profiel zijn label, locationId, stackLevel, purposeId, kindId, optioneel recurrencyKindId, validFrom, validTo, startSchedule, rateUnitId en optioneel minChargingRate. Een schemaperiode bevat startPeriod, limit en optioneel numberOfPhases. Een toewijzingsbody bevat profileId en connectorId (standaard 0).
Profielen verwijderen en vermogensbeheer vervangen kan wachten op bevestiging van de lader. Een weigering, time-out of gelijktijdige statuswijziging retourneert een conflict en behoudt de databaseconfiguratie, in plaats van ten onrechte te melden dat de lader is gewist.
Gebruikers, uitnodigingen, RFID, toegang en limieten
| Methode | Pad | Vereiste scope | Doel |
|---|---|---|---|
GET | /v2/admin/users | users:read | Geef leden en uitnodigingen weer. |
POST | /v2/admin/users | users:create | Koppel een al geregistreerde klant via email en werkruimte-name. |
POST | /v2/admin/users/invitations | users:invitations + users:access; ook users:rfid wanneer RFID wordt opgegeven | Nodig een onbekend e-mailadres uit of koppel een bestaande klant. |
POST | /v2/admin/users/invitations/resend | users:invitations | Verzend opnieuw met { "email": "..." }, met inachtneming van de wachttijd per ontvanger. |
DELETE | /v2/admin/users/invitations | users:invitations | Annuleer een uitnodiging; het e-mailadres blijft in de JSON-body. |
GET | /v2/admin/users/:userId | users:read + reports:read | Lees gebruikersgegevens en begrensde sessietotalen. |
PATCH | /v2/admin/users/:userId | users:update | Stel de werkruimtespecifieke weergave-name in. |
DELETE | /v2/admin/users/:userId | users:delete | Verwijder het lid en de bijbehorende werkruimtetoegang, rekening houdend met conflicten. |
GET | /v2/admin/users/:userId/vehicles | users:read | Geef voertuigen in eigendom weer. |
GET | /v2/admin/users/:userId/rfids | users:read | Geef RFID-metagegevens met gemaskeerde UID's weer. |
POST | /v2/admin/users/:userId/rfids | users:rfid | Voeg uid en optioneel name toe; antwoorden tonen alleen de gemaskeerde UID. |
PATCH | /v2/admin/users/:userId/rfids/:rfidId | users:rfid | Werk het RFID-label bij. |
DELETE | /v2/admin/users/:userId/rfids/:rfidId | users:rfid | Verwijder een RFID en synchroniseer de betrokken laders. |
GET | /v2/admin/users/:userId/access | users:read | Lees toegangsrechten voor laders. |
PUT | /v2/admin/users/:userId/access | users:access | Vervang toegang met allChargers en unieke chargerIds. |
DELETE | /v2/admin/users/:userId/access/:accessId | users:access | Trek één toegangsrecord in. |
GET | /v2/admin/users/:userId/limits | users:read | Geef laadlimieten weer. |
POST | /v2/admin/users/:userId/limits | users:limits | Maak limitTypeId, energyValue en/of timeValue aan. |
PATCH | /v2/admin/users/:userId/limits/:limitId | users:limits | Werk één of meer limietvelden bij. |
DELETE | /v2/admin/users/:userId/limits/:limitId | users:limits | Verwijder een limiet. |
GET | /v2/admin/chargers/:chargerId/local-users | chargers:read + users:read | Geef lokale gebruikers van een lader en openstaande uitnodigingen weer. |
POST | /v2/admin/chargers/:chargerId/local-users | chargers:local-users + users:access | Voeg een bestaande customerId toe met optioneel expiresAt. |
POST | /v2/admin/chargers/:chargerId/local-users/invitations | chargers:local-users + users:invitations + users:access | Voeg toe of nodig uit via e-mail. |
DELETE | /v2/admin/chargers/:chargerId/local-users/invitations | chargers:local-users + users:invitations | Annuleer een uitnodiging voor een lokale gebruiker op basis van het e-mailadres. |
PATCH | /v2/admin/chargers/:chargerId/local-users/:localUserId | chargers:local-users + users:access | Stel expiresAt in; null is toegestaan. |
DELETE | /v2/admin/chargers/:chargerId/local-users/:localUserId | chargers:local-users + users:access | Verwijder lokale toegang en synchroniseer de OCPP-toestand. |
Voertuigpaginering en status=members-gebruikerspaginering gebruiken een positieve numerieke cursor. Uitnodigingspagina's gebruiken een ondoorzichtige i2.*-cursor, terwijl status=all na de eerste pagina een ondoorzichtige samengestelde a2.*-cursor gebruikt (een numerieke cursor blijft alleen geldig als voortzetting van de oude ledenstroom). De gebruikerszoekopdracht wordt in de X-Admin-User-Search-verzoekheader aangeleverd zodat e-mailadressen niet in URL's of toegangslogboeken komen. limit is standaard 50 en maximaal 100; gebruikerslijsten ondersteunen status=all|members|invitations. Behandel alle geretourneerde cursors als ondoorzichtig en stuur ze ongewijzigd terug.
Rechtstreeks een gebruiker aanmaken maakt geen wachtwoord, inlogidentiteit of sessie aan. Het koppelt alleen een al geregistreerde klant. Gebruik het uitnodigingseindpunt voor een onbekend e-mailadres. De beschermde Tagless-systeemgebruiker kan niet via deze routes worden gewijzigd.
Voorbeelden
Stel waarden in uw shell in zonder het token af te drukken:
export ADMIN_API_BASE_URL="https://api.example.com"
export WORKSPACE_TOKEN="<read from secret manager>"
Geef locaties weer:
curl --fail-with-body \
-H "Authorization: Bearer ${WORKSPACE_TOKEN}" \
"${ADMIN_API_BASE_URL}/v2/admin/sites"
Maak veilig een locatie aan:
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"
Download een CSV-rapport voor een expliciet UTC-bereik:
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"
Bewust uitgesloten mogelijkheden
De werkruimtetoken-API biedt geen bewerkingen die een menselijke identiteit of bredere bevoegdheid vereisen. Hieronder vallen:
- tokens aanmaken, tonen, roteren of intrekken met een ander token;
- inloggen, wachtwoordherstel, sessies, delegatie van menselijke rollen of bevoegdheden en wijzigingen in werkruimte-eigendom;
- werkruimten aanmaken/verwijderen en lidmaatschap van facturatieaccounts;
- betalingsinstellingen, Stripe-onboarding, abonnementen, facturen en facturatie van de aanbieder;
- ondersteuningsbewerkingen voor de hele aanbieder en providerwebhooks;
- meldingen aan personen, navigatiedoorverwijzingen, merkmateriaal en ontwikkel-/testroutes.