Vejledning: Kundestyret adgang til data Denne vejledning beskriver, hvorledes elleverandører og tredjeparter kan opnå adgang til at indhente data i DataHub via kundestyret adgang. 15. september 2016 JLI/JLI 1. Indledning... 2 2. Generelle vilkår... 2 3. Hvordan ansøges?... 2 3.1 Trin 1 Udfyld formular... 3 3.2 Trin 2 Underskriv med digital signatur... 4 3.3 Trin 3 Kvittering for oprettelse... 4 4. Hvordan giver kunden fuldmagt til 3PA/EL... 5 4.1 Trin 1 Opret stamdata (hos 3PA/EL)... 5 4.2 Trin 2 Modtag request (hos Energinet)... 5 4.3 Trin 3 NemID login (hos Energinet)... 6 4.4 Trin 4 Vælg målere til fuldmagt (hos Energinet)... 7 4.5 Trin 5 Manuel oprettelse af måler (hos Energinet)... 9 4.6 Trin 6 Type af fuldmagt (hos Energinet)... 10 4.7 Trin 7 Signering af fuldmagt, digital signatur (hos Energinet)... 14 4.8 Trin 8 Bekræftelse (hos Energinet)... 15 4.9 Trin 9 Afslutning (hos 3PA/EL)... 16 5. Hvordan henter 3PA/EL data... 17 5.1 HTML... 17 5.2 Webservice / API... 18 Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 1/25
1. Indledning Energinet.dk indførte pr. 1. april 2016 en kundestyret adgang til data i DataHub. Det betyder, at elleverandører i en tilbudsfase samt tredjeparter (herefter 3PA/EL), kan opnå adgang til en kundes data, hvis kunden giver sin tilladelse i form af en elektronisk fuldmagt. 2. Generelle vilkår Det er en betingelse for optagelse som 3PA/EL hos Energinet.dk, at virksomheden er elleverandør, eller kan opfylde følgende krav: Virksomheden er momsregistreret i Danmark. Virksomheden kan fremsende dokumentation (fx vedtægter el. lign.) for selskabets formål, herunder formål med at indhente kunders data fra DataHub. Virksomhedens aktiviteter ligger inden for et af følgende områder: o Mægler, dvs. en virksomhed som handler på en elleverandørs vegne og markedsfører elleverandørens produkter over for kunder, eller som på en kundes vegne afsøger kundens muligheder for indgåelse af aftaler med elleverandører. o Energirådgiver, dvs. en virksomhed som afsøger kundens muligheder for bedre energiudnyttelse eller energibesparelser. o Serviceudbyder, der varetager funktioner i det danske elmarked med henblik på at oplyse, vejlede eller regulere det løbende energiforbrug og/eller produktion for en kunde. o Øvrige virksomheder, institutioner eller myndigheder, der ifølge gældende lovgivning har autorisation til at indhente data. Virksomheden kan autentificere sig med gyldig NemID medarbejdersignatur fra Nets. Virksomheden har egen hjemmeside. 3. Hvordan ansøges? For optagelse som 3PA/EL hos Energinet.dk, skal virksomheden ansøge via ansøgningsformularen på Energinet.dk s hjemmeside. Ansøgningen udfyldes, og vilkårene godkendes, hvorefter ansøgningen underskrives med virksomhedens (medarbejderens) Nem-ID signatur. Efter modtagelse vil Energinet.dk behandle ansøgningen, hvorefter 3PA/EL vil modtage mail med besked om, hvorvidt ansøgningen er godkendt eller afvist. Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 2/25
Elleverandører, der allerede var oprettet til eloverblik.dk inden 1. april 2016, skal ikke ansøge via ansøgningsformularen. Energinet.dk har sikret at disse er systemmæssigt godkendt til at indhente data via den kundestyrede adgang. 3.1 Trin 1 Udfyld formular Ansøgningen om at blive 3PA/EL findes på adressen: https://energinet.eloverblik.dk/da- DK/ThirdpartyApplication/NemIdLogon Efter login med NemID, udfyldes alle felter i formularen, vilkårene læses og der klikkes accepter. Vær opmærksom på, at e-mailadressen vil blive benyttet ift. til kommunikation omkring tilmelding og efterfølgende opdateringer om adgang til data. Figur 1 Eksempel på skærmbillede Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 3/25
3.2 Trin 2 Underskriv med digital signatur Underskriv betingelser med medarbejderens digitale signatur. Figur 2 Eksempel på skærmbillede 3.3 Trin 3 Kvittering for oprettelse Efter 3PA/ELs underskrift, sendes ansøgningen til Energinet.dks administrationsmodul. Efter modtagelse vil Energinet vurdere, hvorvidt 3PA/EL opfylder betingelserne for at blive 3PA/EL. Efter endt behandling sendes mail til 3PA/EL (som angivet i ansøgningen) inkl. oplysninger om oprettede stamdata m.m. Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 4/25
4. Hvordan giver kunden fuldmagt til 3PA/EL 4.1 Trin 1 Opret stamdata (hos 3PA/EL) Processen for at give elektronisk fuldmagt til en 3PA/EL igangsættes via dennes hjemmeside. Herved kan 3PA/EL evt. indhente oplysninger til intern brug, fx indhentning af stamdata. Når stamdata er udfyldt, skal 3PA/EL sørge for at sende kunden til Energinets-fuldmagtside på adressen: https://tredjepart.eloverblik.dk/register 3PA/EL skal herudover medsende: 1. ThirdPartyID, som er det unikke ID 3PA/EL er blevet oplyst af Energinet.dk ved oprettelsen (vil fremgå af email), fx b2ce4073-89d2-4d3c-80a5-0cf70e143cf2 2. ReturnURL som er den adresse, Energinet.dk returnerer kaldet til efter kunden har afgivet fuldmagt, fx https://tredjepartfirma.dk/retur 3PA/EL kan herudover medsende: 3. ThirdPartyKey, som er 3PA/ELs interne reference til kunden, fx et kundeid. ThirdPartyKey må kun indeholde bogstaver og tal, samt (bindestreg) og må maksimalt være 25 karakterer langt. ÆØÅ er ikke tilladt. Den komplette URL, som 3PA/EL skal sende kunden til vil således fx være: https://tredjepart.eloverblik.dk/register?thirdpartyid=b2ce4073-89d2-4d3c-80a5-0cf70e143cf2&thirdpartykey=4321&returnurl=https://tredjepartfirma.dk/retur Bemærk at den URL som kunden sendes retur til, tilføjes en kode som angivet i trin 9. Som tredjepart skal du derfor sørge for at du har en hjemmesideurl som svarer til retururl en. 4.2 Trin 2 Modtag request (hos Energinet) Energinet aflæser de tre medsendte værdier. Hvis ThirdPartyID ikke er medsendt eller er fejlagtig, vises en fejlmeddelelse, og flowet stopper. Fejlkoder: Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 5/25
invalidthirdpartyid nothirdpartyid Ikke et gyldigt ThirdPartyID Manglende ThirdPartyID Hvis der ikke er opgivet en ReturnURL, vil der blive genereret en fuldmagt, men kunden vil ikke blive sendt retur til 3PA/EL. Kunden vil I dette tilfælde få vist en generel statusside. 4.3 Trin 3 NemID login (hos Energinet) På dette tidspunkt er ThirdpartyId modtaget (dvs. Energinet ved, hvem 3PA/EL er), og systemet har modtaget en ReturnURL (dvs. systemet ved, hvor kunden skal afleveres efter endt fuldmagtflow). Nu skal kunden logge ind med sit NemID. Skærmbilledet ser ud som følger: Figur 3 Login med NemID Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 6/25
4.4 Trin 4 Vælg målere til fuldmagt (hos Energinet) Efter Nem ID login skal kunden vælge, hvilke målepunkter som fuldmagten skal omfatte. 4.4.1 Hvis privatkunde (CPR-nr.) Relationen mellem kundens NemID og kundens målepunkt kendes ikke første gang kunden logger ind hos Energinet.dk med sit NemID, for at give adgang til en 3PA/EL. Kunden vil derfor efter login blive sendt til trin 5, og bedt om at tilknytte sit målepunkt til det benyttede NemID. Dette vil i praksis ske ved brug at målepunkts ID og webadgangskode, som findes i DataHub, og som elleverandøren på målepunktet er ansvarlig for at udlevere til kunden. Har kunden i forvejen tilknyttet sit målepunkts ID til NemID i DataHub (ved brug af Eloverblik.dk) dirigeres kunden direkte til trin 4, hvor det/de tilknyttede målepunkter vises. Her bedes kunden markere de målepunkter, som den elektroniske fuldmagt skal omfatte. 4.4.2 Hvis erhvervskunde (CVR-nr) Adgangsfuldmagten for erhvervskunder kontrolleres af det CVRnummer, der er markeret som dataadgangsansvarlig på målepunktet, også kaldet Dataadgangs-CVR-nr. Den dataadgangsansvarlige kan være kunden selv eller en virksomhed som kunden har overdraget sit dataadgangsansvar til. Det CVR nummer som er registreret i DataadgangsCVR har ene ret til at give dataadgangsfuldmagt til 3PA/EL. Energinet.dk vil ved login indhente det CVR-nr som NemID et er registeret på, og lave opslag mod Dataadgangs-CVR-nr. i DataHub. Hvis den dataadgangsansvarlige ikke får vist den forventede liste af målepunkter, som følge af manglende opdatering af Dataadgangs-CVR-nr. i DataHub, skal Dataadgangs-CVR-nr. opdateres i DataHub af elleverandøren på målepunktet. Har kunden i forvejen tilknyttet sine målepunkts ID er til NemID i Data- Hub (ved brug af Eloverblik.dk) vil disse blive vist i trin 4, også selvom Dataadgangs-CVR-nr. ikke findes på målepunktet. Kunden kan også ved klik på Tilmeld en måler, der ikke fremgår af listen tilmelde målere manuelt (trin 5). Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 7/25
Uanset om der er tale om en privat eller juridisk kunde, kan kunden vælge at inkludere alle målepunkter i fuldmagten på én gang, eller selektere i listen af målepunkter. Figur 4 Vælg målere der skal med i fuldmagten Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 8/25
4.5 Trin 5 Manuel oprettelse af måler (hos Energinet) Manuel tilmelding foregår på samme måde som på eloverblik.dk. Hvis målepunkts ID og Webadgangskode udfyldes korrekt, kvitteres der for tilmeldingen. Ønsker kunden at tilføje flere målere, gentages Tildeling af adgang til mit elforbrug, indtil brugeren ønsker at stoppe. Ønsker brugeren ikke at tilmelde flere målere, sendes han tilbage til Trin 4. Her skal han vælge målerne og fortsætte i flowet. Figur 5 Manuel tilmelding af målere Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 9/25
4.6 Trin 6 Type af fuldmagt (hos Energinet) Efter udvælgelse af målepunkter, vises følgende skærmbillede: Figur 6 Angiv fuldmagtstype (skærmbilledet er kun et eksempel) Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 10/25
Kunden skal tage stilling til følgende: 4.6.1 Type af fuldmagt Typen af fuldmagt afgør, hvilke data der efter kundens accept, kan indhentes af 3PA/EL. Sætter kunden flueben i historisk fuldmagt, gives der tilladelse til at 3PA/EL kan indhente 1 års timedata fra og med datoen for fuldmagtsgivning. Kunden vælger herudover, hvilken dataopløsning 3PA/EL må indhente fra og med datoen for fuldmagtgivning og et år frem. Kunden kan vælge om opløsning på måledata skal være time, dag, måned eller år. - 365 dage Fuldmagtsdato + 365 dage Historisk fuldmagt Fremtidig (løbende) fuldmagt Ved historisk returneres altid et års timeværdier fra dato for fuldmagtsgivning. Ved fremtidig kan der forespørges på data tilbage til dato for fuldmagtsgivning. Dataopløsning afhænger af kundens fuldmagt. Eksempel: 3PA/EL har fået fuldmagt til historiske samt fremtidig (løbende) fuldmagt pr. time. Kunden har givet 3PA/EL fuldmagt d. 1. juni 2016. 3PA/EL forespørger på data d. 15 november 2016. Afhængig af den valgte periode returneres data til 3PA/EL jf. afsnit 5.2.5.1. 1. juni 2016 fuldmagtsdato 15. november 2016 Ved historisk returneres altid et års timeværdier fra dato for fuldmagtsgivning.* Ved periode: år returneres timedata tom dato for fuldmagtsgivning. Ved periode: kvartal returneres timedata fra 15. juli til 15. november Ved periode: måned returneres timedata fra 15. oktober til 15. november * Såfremt der er tale om en historisk fuldmagt til et måneds- eller årsaflæst skabelonafregnet målepunkt udleveres aflæsninger for seneste 3 år. For timeaflæste skabelonafregnede målepunkter udleveres timedata (og evt. aflæsninger) for seneste år regnet fra fuldmagtsdato. Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 11/25
4.6.2 Skal eksisterende fuldmagter overskrives? Hvis der allerede findes én eller flere fuldmagter til den pågældende 3PA/EL på målepunktet, vil systemet som sidste trin i oprettelsen af fuldmagten spørge, om de(n) eksisterende fuldmagt(er) skal overskrives. Der er dog ingen begrænsning ift. hvor mange 3PA/EL der kan have fuldmagt på et målepunkt på samme tid, ligesom den samme 3PA/EL godt kan have flere fuldmagter, der omfatter samme målepunkt. 4.6.3 Accept af vilkår Kunden gøres opmærksom på, at data deles med 3PA/EL, herunder hvordan delingen med 3PA/EL kan annulleres. 4.6.4 Kundens overblik efter fuldmagtsgivning Kunden kan ved login på eloverblik.dk til enhver tid se, hvilke 3PA/EL der er registeret på målepunktet samt gyldighedsperioden for en fuldmagt. Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 12/25
Kunden kan ligeledes slette aktive fuldmagter, og se inaktive og historiske fuldmagter. Fuldmagter vil automatisk udløbe efter 365 kalenderdage. Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 13/25
4.7 Trin 7 Signering af fuldmagt, digital signatur (hos Energinet) Kunden skal underskrive den digitale fuldmagt med sit Nem ID. Af siden vises en opsummering af kundens valg, hvem der gives fuldmagt til, samt hvilke data og målepunkter der gives fuldmagt til. Kunden indtaster sit NemID bruger-id og adgangskode, og klikker næste. Nøglekort id indtastes, hvorefter fuldmagten dannes. Figur 7 Underskriv fuldmagten med NemID Det er kun banker, der kan springe nøglekortet over ved digitale underskrifter, hvorfor kunden skal angive bruger-id, password og nøglekort id igen. Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 14/25
4.8 Trin 8 Bekræftelse (hos Energinet) Kunden ser bekræftelse på at fuldmagten er dannet. Kunden sendes umiddelbart herefter til 3PA/ELs hjemmeside (redirect). Figur 8 Kvittering Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 15/25
4.9 Trin 9 Afslutning (hos 3PA/EL) Efter kunden sendes retur til 3PA/EL vil der af returadressen fremgå en statuskode, som angiver om fuldmagtsregisteringen blev gennemført. Kun hvis 3PA/EL har medsendt en ThirdPartyKey vil denne fremgå af returadressen. endk1 endk3 Der blev registreret fuldmagt Kunden trykkede cancel Hvis der er medsendt ThirdPartyKey, vil returadressen fx være: http://tredjepart-firma.dk/retur/?status=endk1&thirdpartykey=4321 Hvis der ikke er medsendt ThirdPartyKey, vil returadressen fx være: http://tredjepart-firma.dk/retur/?status=endk1 3PA/EL kan nu hente data via website eller API jf. kapitel 5. Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 16/25
5. Hvordan henter 3PA/EL data 5.1 HTML Når 3PA/EL ønsker at hente data for målere, der er givet fuldmagt for, foregår det via et skærmbillede som det nedenfor. https://energinet.eloverblik.dk/da-dk/thirdparty/ 3PA/EL er logget ind med medarbejder NemID. Alle fra virksomheden kan altså hente data. Figur 9 Skærmbillede hvor 3PA/EL henter data (det er kun et eksempel) Skærmbilledet er opdelt i fuldmagter for op til et år frem og historiske fuldmagter, der dækker et år tilbage i tiden. For hver af de to typer af fuldmagter vælges hvilke fuldmagter, der skal med i udtrækket, og hvilken periode der skal returneres data for. Uanset om der forespørges på Month, Quarter eller Year returneres data kun til og med datoen for fuldmagtsgivning. Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 17/25
Eksempel: 3PA/EL har fået fuldmagt til historiske samt fremtidig (løbende) fuldmagt pr. time. Kunden har givet 3PA/EL fuldmagt d. 1. juni 2016. 3PA/EL forespørger på data d. 15 november 2016. Afhængig af den valgte periode returneres data til 3PA/EL jf. afsnit 5.2.5.1. 1. juni 2016 fuldmagtsdato 15. november 2016 Ved historisk returneres altid et års timeværdier fra dato for fuldmagtsgivning.* Ved periode: år returneres timedata tom dato for fuldmagtsgivning. Ved periode: kvartal returneres timedata fra 15. juli til 15. november Ved periode: måned returneres timedata fra 15. oktober til 15. november * Såfremt der er tale om en historisk fuldmagt til et måneds- eller årsaflæst skabelonafregnet målepunkt udleveres aflæsninger for seneste 3 år. For timeaflæste skabelonafregnede målepunkter udleveres timedata (og evt. aflæsninger) for seneste år regnet fra fuldmagtsdato. Data leveres asynkront, så det er muligt at angive en e-mail adresse, hvortil der sendes en reminder, når data er klar til download. Data leveres i CSV-format. 5.2 Webservice / API Ift. direkte dataudveksling stilles to webservices til rådighed: 1. GET: /authorizations (stamdata på målepunktet) 2. GET: /timeseries/ (måledata på målepunktet) 5.2.1 Introduktion Webservicen består af følgende elementer: ASP.NET Web API, JSON og XML. HTTPS/SSL benyttes til transport og sikkerhed. Transportlaget krypterer data og overfører certifikat mellem 3PA/EL og Energinet til autentifikation. Certifikater (FOCES) benyttes som identifikation af 3PA/EL Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 18/25
5.2.2 Miljøer TEST miljø Web service URL https://test.eloverblik.dk/webservicedummy/api/ PROD miljø Web service URL https://eloverblik.dk/api/ 5.2.3 Adgang Før en 3PA/EL kan benytte system-til-system - adgangen, skal følgende kriterier være opfyldt: 3PA/EL skal anskaffe et funktionscertifikat (FOCES). 3PA/EL skal registreres som systembruger i tredjepartsystemet. 3PA/EL skal i øvrigt kunne leve op til de tekniske specifikationer for brug af servicen, som beskrives i de efterfølgende sektioner. Certifikat kan rekvirere hos NETS: http://www.nets.eu/dkda/produkter/sikkerhed/funktionssignatur/pages/default.aspx#tab5 5.2.4 GET: /authorizations Returnerer en liste over fuldmagter for CVR-nummeret i NemIDcertifikatet. API et er baseret på HTTP. 5.2.4.1 Input Navn Type Krævet Kommentar Nem ID certifikat Http header Ja Accept Http header Nej application/xml application/json (standard) Key Querystring - string Nej Søgekriterie: der kan angives til det ID 3PA/EL angav da fuldmagten blev oprettet. 5.2.4.2 Output HTTP Status Data Kommentar 200 Fuldmagtliste 403 Ingen HTTPS Required 403 Ingen Certificate is missing or is invalid 403 Ingen Certificate is oces status 404 Ingen No authorizations found for CVR cvr Current Data Data Kommentar Resolution H 1 Data pr. time D 2 Data pr. dag M 3 Data pr. måned Y 4 Data pr år. Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 19/25
Eksempler: /Authorizations Output-eksempel XML <Authorization> <CurrentDataResolution></CurrentDataResolution> <DeleteDate i:nil="" /> <EndDate>0000-00-00T00:00:00.000+00:00</EndDate> <Guid></Guid> <HistoricData></HistoricData> <Id></Id> <ListOfMeteringPoints> <AuthorizationMeter> <Alias></Alias> <BuildingNumber></BuildingNumber> <CityName></CityName> <ConsumerCVR></ConsumerCVR> <DataAccessCvr></DataAccessCvr> <FloorIdentification></FloorIdentification> <MeterCounterUnit></MeterCounterUnit> <MeterReadingOccurence></MeterReadingOccurence> <MeteringPointIdentification></MeteringPointIdentification> <NetSettlementGroup></NetSettlementGroup> <ParentMP></ParentMP> <Postcode></Postcode> <Product></Product> <SettlementMethod></SettlementMethod> <StreetName></StreetName> <TypeOfMP></TypeOfMP> <WebaccessCode></WebaccessCode> </AuthorizationMeter> </ListOfMeteringPoints> <Name></Name> <SignedBy>PID:</SignedBy> <SignedTimeStamp>0000-00-00T00:00:00.000+00:00</SignedTimeStamp> <SignedXml></SignedXml> <StartDate>0000-00-00T00:00:00.000+00:00</StartDate> <ThirdPartyId></ThirdPartyId> <ThirdPartyKey></ThirdPartyKey> <ToBeSignedHtml></ToBeSignedHtml> </Authorization> JSON [ "Id":, "Guid": "", "ThirdPartyId":, "ThirdPartyKey":, "ThirdPartyName": "", "ThirdPartyCVR": "", "StartDate": "", "EndDate": "", "Name": "", "HistoricData":, "CurrentDataResolution":, "DeleteExistingAuthorizations":, "ToBeSignedHtml": "<html><body><p>..", "SignedBy": "PID: ", "SignedTimeStamp": "", "DeleteDate":, "ListOfMeteringPoints": [ "MeteringPointIdentification": "", "ParentMeteringPointIdentification":, "WebAccessCode":, "StreetName": "", "BuildingNumber": "", "FloorIdentification":, "Postcode": "", "CityName": "", "MeteringPointAlias":, "TypeOfMeteringPoint":, "NetSettlementGroup":, "DataAccessCVR":, "ConsumerCVR":, "Checked":, Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 20/25
5.2.5 GET: /timeseries/ Returnerer målerdata for den kaldte måler. Vær opmærksom på, at ved forespørgsel på Month, Quarter og Year returneres data kun til og med datoen for fuldmagtsgivning. 5.2.5.1 Input Navn Type Krævet Kommentar Nem ID certifikat Http header Ja Accept Http header Nej application/xml application/json (standard) AuthorizationId Querystring - integer Ja MeteringPointId Querystring - integer Ja 18 cifret måler id Period Querystring - string Ja Værdier: Month data for seneste måned Quarter data for seneste kvartal Year data for op til et år Historic data for det foregående år Eksempler: /timeseries?authorizationid=2&meteringpointid=123456789012345678& period=month 5.2.5.2 Output HTTP Status Data Kommentar 200 Målerdata 400 Ingen AuthorizationId id is not valid 400 Ingen MeteringpointId id is not valid 400 Ingen Period value id is not valid 400 Ingen Combination of AuthorizationId id and MeteringspointId id is not valid 400 Ingen Historic data is not allowed for MeteringpointId id 403 Ingen HTTPS Required 403 Ingen Certificate is missing or is invalid 403 Ingen Certificate is oces status 404 Ingen No timeseries available for MeteringpointId id Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 21/25
Output-eksempel XML <meteringpoints> <element> </element> <element> </element> <element> </element> </meteringpoints> <from>2016-12-07t10:57:22.592+01:00</from> <meteringpointid>1200000000000123</meteringpointid> <to>2016-12-08t10:57:22.592+01:00</to> <usage>1234,0 KwH</usage> <from>2011-07-07t10:57:22.592+01:00</from> <meteringpointid>1200000000000126</meteringpointid> <to>2011-12-07t10:57:22.592+01:00</to> <usage>1234,0 KwH</usage> <from>2014-11-07t01:15:22.592+01:00from> <meteringpointid>1200000000000129</meteringpointid> <to>2014-12-07t10:10:22.592+01:00</to> <usage>1234,0 KwH</usage> JSON "meteringpoints":[ "meteringpointid":"1200000000000123", "from":"23-11-2011 00:00", "to":"23-11-2011 01:00", "usage":"1234,0 KwH", "meteringpointid":"1200000000000126", "from":"23-11-2011 01:00", "to":"23-11-2011 02:00", "usage":"1234,0 KwH", "meteringpointid":"1200000000000129", "from":"23-11-2011 02:00", "to":"23-11-2011 03:00", "usage":"1234,0 KwH" ] 5.2.6.NET kode eksempel Nedenstående kodeeksempel viser, hvordan man kan lave klientautentificerede SSL-forbindelser til webservicen. using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Net.Mime; using System.Security.Cryptography.X509Certificates; using System.ServiceModel.Configuration; using System.Text; Kommentar [FM1]: Jeg vil foreslå at vi placerer eksemplet på eloverblik.dk som en zippet fil inkl. de test certifikater der skal anvendes Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 22/25
using System.Threading; using System.Threading.Tasks; using Newtonsoft.Json; namespace Dk.Miracleas.Energinet.CustomerAccessPortal.WebserviceTestClient class Program : ICertificatePolicy static void Main(string[] args) CallIisHttpsService().Wait(); Console.ReadLine(); /// <summary> /// Call IIS Https Service /// </summary> /// <returns>awaitable task object</returns> private async static Task CallIisHttpsService() Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Start processing IIS Https service operation call"); var baseaddress = "https://test.eloverblik.dk/webservicedummy/api/"; var actionuri = "authorizations"; //var actionuri = "timeseries?authorizationid=16&meteringpointid=000000000000000000&peri od=month"; try string uri = string.concat(baseaddress, actionuri); Uri address = new Uri(uri); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, address); var path = System.Reflection.Assembly.GetExecutingAssembly().Location; var newpath = new System.IO.DirectoryInfo(path).Parent.Parent.Parent.FullName + "\\Certificates\\"; //var cert = new X509Certificate2(newpath + "VOCES_spaerret.p12", "Test1234"); var cert = new X509Certificate2(newpath + "VOCES_gyldig.p12", "Test1234"); WebRequestHandler handler = new WebRequestHandler(); handler.clientcertificates.add(cert); CancellationToken token = new CancellationToken(); using (HttpClient httpclient = new HttpClient(handler)) Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 23/25
await httpclient.sendasync(request, token).continuewith((response) => try //Print response ProcessIisHttpsResponse(response); catch (AggregateException aggregateexception) Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Exception 0", aggregateexception); ); catch (Exception exception) Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(exception); /// <summary> /// Process IIS Https response object /// </summary> /// <param name="response"> /// Awaitable HttpResponseMessage task value</param> private static async void ProcessIisHttpsResponse(Task<HttpResponseMessage> response) if (response.result.statuscode == HttpStatusCode.OK response.result.statuscode == HttpStatusCode.Created) Console.ForegroundColor = ConsoleColor.Green; var result = await response.result.content.readasstringasync(); var list = JsonConvert.DeserializeObject<List<Authorizations>>(result); Console.WriteLine("Result: \n0", JsonConvert.SerializeObject(list, Formatting.Indented)); else Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Response message: \n 0", JsonConvert.SerializeObject(response.Result, Formatting.Indented)); #region Models public class Timeseries Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 24/25
public string Meteringpoint get; set; public DateTime DateFrom get; set; public DateTime DateTo get; set; public decimal Usage get; set; public string Unit get; set; public class Authorizations public int Id get; set; public string ThirdPartyKey get; set; public string Name get; set; public DateTime StartDate get; set; public DateTime EndDate get; set; public bool HistoricData get; set; public int CurrentDataResolution get; set; get; set; public IEnumerable<MeteringPoints> ListOfMeteringPoints public class MeteringPoints public string MeteringpointIdentification get; set; public string Streetname get; set; public string BuildingNumber get; set; public string Postcode get; set; public string CityName get; set; public string Alias get; set; public string ParentMP get; set; public string SettlementMethod get; set; public string Product get; set; public string MeterCounterUnit get; set; public string MeterReadingOccurence get; set; public string TypeOfMP get; set; public string NetSettlementGroup get; set; public string DataAccessCvr get; set; public string ConsumerCVR get; set; public class Exception : System.Exception public HttpStatusCode StatusCode get; set; public string Reason get; set; public string Content get; set; #endregion public bool CheckValidationResult(ServicePoint srvpoint, X509Certificate certificate, WebRequest request, int certificate- Problem) return true; Dok. 16/09277-10 Klassificering: Klassificering: Til arbejdsbrug/restricted 25/25