3a0be7261e
Verkstaden har redan sina avtal: Volvo-verkstaden har VIDA, VAG-verkstaden har erWin, den fria verkstaden har en fordonsdataleverantör. Kopplingarna konfigureras därför av kunden själv under Inställningar, med sina egna uppgifter — vi tillhandahåller ramen, inte kontot. Uppgifterna når aldrig webbläsaren. De krypteras med AES-256-GCM (INTEGRATION_NYCKEL) innan de skrivs till tabellen integrationer, och API:t returnerar hemliga fält maskerade. Alla uppslag görs av servern. Saknas krypteringsnyckeln sparas ingenting alls — 503 och en förklaring i gränssnittet i stället för klartext i databasen. Endast systemadministratören hanterar uppgifterna; kopplingarna är organisationsknutna som all annan ärendedata. Leverantörer är data, inte kod: URL-mall, autentiseringstyp (bearer/header/basic/query) och svarsmappning beskrivs i services/plattform/integrationer.json, utbytbar via ConfigMap (INTEGRATIONER_FIL). Nya märken läggs till utan att appen byggs om. Varje uppslag skriver senast_testad och senaste_status på kopplingen, så ett utgånget abonnemang syns i inställningarna i stället för att ge tysta tomma svar. Två latenta krascher hittade av klicktestet och åtgärdade: TextFalt och UNDANTAGSORSAKER användes utan import. vite build typkontrollerar inte, så de passerade bygget — därav nya npm-skriptet typkontroll, nu del av verifieringen. Verifierat: 80 vitest-tester, typkontroll, eslint, OpenAPI-validering, integrationstest mot riktig Postgres (rollstyrning, kryptering i vila, maskering, organisationsisolering, fail closed, borttagning) och klickgenomgång mot en körande plattform. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
97 lines
3.4 KiB
JSON
97 lines
3.4 KiB
JSON
{
|
|
"version": "1.0",
|
|
"beskrivning": "Register över märkesspecifika kopplingar. Leverantörer är data, inte kod: nya märken/dataleverantörer läggs till här (eller via ConfigMap-mount, INTEGRATIONER_FIL) utan att applikationen byggs om. Fält märkta hemlig=true maskeras alltid i API-svar och lagras krypterat.",
|
|
"leverantorer": [
|
|
{
|
|
"id": "generisk_vin",
|
|
"namn": "Generisk VIN-tjänst",
|
|
"beskrivning": "Valfri dataleverantör med VIN-uppslag över HTTP. Ange bas-URL och nyckel enligt leverantörens dokumentation.",
|
|
"falt": [
|
|
{ "nyckel": "bas_url", "etikett": "Bas-URL (använd {vin} som platshållare)", "hemlig": false },
|
|
{ "nyckel": "api_nyckel", "etikett": "API-nyckel", "hemlig": true }
|
|
],
|
|
"uppslag": {
|
|
"urlFalt": "bas_url",
|
|
"auth": "bearer",
|
|
"authFalt": "api_nyckel",
|
|
"svarsfalt": {
|
|
"marke": "make",
|
|
"modell": "model",
|
|
"arsmodell": "year",
|
|
"motor": "engine",
|
|
"vaxellada": "transmission"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "vag_erwin",
|
|
"namn": "Volkswagen Group erWin",
|
|
"beskrivning": "OEM-portal för VW, Audi, Škoda och SEAT. Kräver eget abonnemang hos tillverkaren.",
|
|
"falt": [
|
|
{ "nyckel": "bas_url", "etikett": "Bas-URL (använd {vin} som platshållare)", "hemlig": false },
|
|
{ "nyckel": "anvandarnamn", "etikett": "Användarnamn", "hemlig": false },
|
|
{ "nyckel": "losenord", "etikett": "Lösenord", "hemlig": true }
|
|
],
|
|
"uppslag": {
|
|
"urlFalt": "bas_url",
|
|
"auth": "basic",
|
|
"authFalt": "anvandarnamn",
|
|
"authFalt2": "losenord",
|
|
"svarsfalt": {
|
|
"marke": "brand",
|
|
"modell": "model",
|
|
"arsmodell": "modelYear",
|
|
"motor": "engineCode",
|
|
"vaxellada": "gearbox"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "volvo_vida",
|
|
"namn": "Volvo VIDA",
|
|
"beskrivning": "Volvos verkstadsportal. Kräver eget abonnemang och verkstads-ID.",
|
|
"falt": [
|
|
{ "nyckel": "bas_url", "etikett": "Bas-URL (använd {vin} som platshållare)", "hemlig": false },
|
|
{ "nyckel": "verkstadsid", "etikett": "Verkstads-ID", "hemlig": false },
|
|
{ "nyckel": "api_nyckel", "etikett": "API-nyckel", "hemlig": true }
|
|
],
|
|
"uppslag": {
|
|
"urlFalt": "bas_url",
|
|
"auth": "header",
|
|
"authHeader": "X-Api-Key",
|
|
"authFalt": "api_nyckel",
|
|
"svarsfalt": {
|
|
"marke": "make",
|
|
"modell": "model",
|
|
"arsmodell": "year",
|
|
"motor": "engine",
|
|
"vaxellada": "transmission"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "fordonsregister",
|
|
"namn": "Fordonsregisteruppslag (regnr → fordon)",
|
|
"beskrivning": "Nationell fordonsdata via vald leverantör. Uppslag sker på registreringsnummer i stället för VIN.",
|
|
"nyckeltyp": "regnr",
|
|
"falt": [
|
|
{ "nyckel": "bas_url", "etikett": "Bas-URL (använd {regnr} som platshållare)", "hemlig": false },
|
|
{ "nyckel": "api_nyckel", "etikett": "API-nyckel", "hemlig": true }
|
|
],
|
|
"uppslag": {
|
|
"urlFalt": "bas_url",
|
|
"auth": "query",
|
|
"authParam": "key",
|
|
"authFalt": "api_nyckel",
|
|
"svarsfalt": {
|
|
"marke": "make",
|
|
"modell": "model",
|
|
"arsmodell": "year",
|
|
"vin": "vin",
|
|
"motor": "engine"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|