Trin Beskrivelse Navigation. Der stilles to API-kald til rådighed: 1. GET: /authorizations (returnerer fuldmagts- og målepunktsstamdata)

Relaterede dokumenter
Trin Beskrivelse Navigation. Introduktion til API et

Tredjepart webservices

Vejledning: Kundestyret adgang til data

Databeskrivelse for Eloverblik og Tredjepartsadgang til Data- Hub

Databeskrivelse for eloverblik.dk og tredjepartsadgang til DataHub

Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Hvordan vælger jeg dokumentprofilen?

System til system indberetning af underretninger

D INTEGRATIONSDESIGN FOR DATAAFTAGERE

1.1 Formål Webservicen gør det muligt for eksterne parter, at fremsøge informationer om elevers fravær.

Webservice til upload af produktionstilladelser

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank

XML webservice for deklarationsgebyrer. Version 1.0 Final

Internt notat

Guide for Forsikring & Pensions REST API v2, version Indledning. 2. Forudsætninger før brug af Forsikring & Pensions REST API

SOSI STS Testscenarier

KOMBIT. Køreprøvebooking KC-KPB- Web Service Systemdokumentation. Version 1.6. Dato 12. juni Reference [Reference]

Digital post Snitflader Bilag A5 - REST HTTP returkoder Version 6.3

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

AuthorizationCodeService

Dokumentation af optagelse.dk

Udkast til dataudveksling med elleverandører og andre tredjeparter via kundestyret dataadgang

Digitaliseringsstyrelsen

/05/2013 Tilføjet dokumentation af bvn input for GetEngagementDetailed

DKAL Snitflader REST HTTP returkoder

Udkast til dataudveksling med elleverandører og andre tredjeparter via kundestyret dataadgang

STS Driftsvejledning. STS Driftsvejledning

XML webservice for pensionsordninger. Version 1.0 Draft A

Kald af PingService via SOAPUI

Anvenderguide til Stamdatamodulet KOMBIT

Snitfladebeskrivelse for Snitfladebeskrivelse STD-8 KMD Boligstøtte Version 1.0.0,

Abstrakte datatyper C#-version

ELEKTRONISK INDBERETNING BØRNEDATABASEN VIA DGWS 13/ VERSION 1.02

Specifikationsdokument for OCSP

LESSOR-5. Inquiry (teknisk beskrivelse) Tilgængelighed for andre systemer

Specifikationsdokument for OCSP

Webservice kald. System-til-system integration. Ny Easy. ATP 1. februar 2017

Tredjepartsadgang. Til Datahub i Engrosmodellen. André Bryde Christensen & Ulrik Stougaard Kiil

Ivan Overgaard 11/29/2012

.NET 4.5 og C# 5.0. Denne artikel beskriver nogle af de nye features i.net 4.5 og C# 5.0. Den forudsætter et vist kendskab til.net og C#.

Teknisk Dokumentation

DKAL Snitflader REST Register

SAX Simple API for XML.

DESIGNDOKUMENT (Teknisk dokumentation)

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

Digital post Snitflader Bilag A2 - REST Register Version 6.3

LUDUS Web Bestilling og installation af SSL-servercertifikat Introduktion Bestilling af certifikat fra andre udbydere...

ENS DiademService. Servicebeskrivelse

Fra idé til virkelig med Azure Mobile Services

Specifikationsdokument for PDF Validator API

FairSSL Fair priser fair support

Specifikationsdokument for servicen PID-CPR

Vejledning til Retsinformation web services test stubs

The server successfully processed the request and is not returning any content.

Forord. Versioner. Version Date Description /05/2012 Initial version

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

Indberetning af elev-trivselsdata på erhvervsuddannelserne 2016: Webservice.

NemRefusion VSLight Integrationsvejledning

Bits, bit operationer, integers og floating point

ITD ecmr WEB Services. Af Allan Wisborg, IT Udvikler

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

STS Fejlsituationer. STS Fejlsituationer

Sådan kan du sende data fra din egen hjemmeside til JitBesked via en HTML-JDF.

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

Note KSP NOT1179. Prepared for: KOMBIT. 1 of 12 $Revision: 1.6$ $Date: 26 Nov 2018$

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

DataHub Forbrugeradgangsløsning Spørgsmål og svar

Dette dokument beskriver de rekonfigurationer, du skal foretage, hvis du fornyr dit eksisterende funktionscertifikat eller anskaffer et nyt.

MM Hul-Igennem-Test i Prod. Information til kunder

Indberetning af afregninger teknik

Kom i gang med SAS STPbaserede

Kundevejledning. AD FS opsætning til Reindex. Version: 1.0. Dato: 19. april Forfatter: Lasse Balsvad (XPERION)

PUT og INPUT funktionerne

Specifikationsdokument for PDF Validator API

Transkript:

1. Opsætning og anvendelse af API til tredjepartsadgang Energinet.dk stiller et API til rådighed til dataeksport fra tredjepartsadgangen, således at tredjeparten har mulighed for selv at designe et system frem for at benytte Energinet.dk s webløsning. Trin Beskrivelse Navigation Introduktion til API et Der stilles to API-kald til rådighed: 1. /authorizations (returnerer fuldmagts- og målepunktsstamdata) 2. /timeseries (returnerer måledata) API-miljø Produktion URL https://eloverblik.dk/api/ URL en til produktionsmiljøet ses til højre herfor. API et 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 tredjepart og Energinet til autentifikation. Certifikat (FOCES) benyttes som identifikation af tredjepart. Autentifikation For at få adgang til API et skal følgende være opfyldt: Jeres virksomhed skal være oprettet som tredjepart (se separat vejledning) Den server, I anvender, skal have et FOCES-certifikat fra Nets (knyttet til samme CVR som tredjepartsansøgningen) Installation og rekvirering af certifikatet er beskrevet her: https://www.nets.eu/dkda/løsninger/nemid/funktionssignatur OBS: Det er kun jeres virksomheds NemID-administrator, som kan rekvirere certifikatet fra Nets. Test Energinet stiller udelukkende et statisk testmiljø til rådighed, hvor der tilbydes dummy-testkald, som returnerer hardcodede data. Derved kan det testes, om webkald og certifikat fungerer korrekt. URL en til testmiljøet samt eksempler på mulige webkald ses til højre herfor. Logikken i opbygningen af kaldene fremgår af beskrivelserne af de enkelte kald på produktion, som findes på de følgende sider. OBS-1: Samme certifikat kan anvendes på både test- og produktionsmiljøet. OBS-2: Vær opmærksom på, at period = historic ikke kan benyttes til /timeseries-kald på testmiljøet. API-miljø Test URL https://test.eloverblik.dk/webservicedummy/api/ Eksempler på webkald på testmiljøet: https://test.eloverblik.dk/webservicedummy/api/authorizations https://test.eloverblik.dk/webservicedummy/api/authorizations?key=cid20 0 https://test.eloverblik.dk/webservicedummy/api/timeseries?authorizationid= 16&meteringpointid=571313153100061122&period=month https://test.eloverblik.dk/webservicedummy/api/timeseries?authorizationid= 16&meteringpointid=571313153100061122&period=quarter https://test.eloverblik.dk/webservicedummy/api/timeseries?authorizationid= 16&meteringpointid=571313153100061122&period=year Dok.nr. 16-09277-11 Side 1 af 13

Introduktion til /authorizations Forespørgsel via /authorizations Svar fra /authorizations /authorizations returnerer en liste over alle aktive fuldmagter registreret til det CVR-nummer, som er angivet i NemIDcertifikatet. Ved angivelse af key (Third Party Key), returneres udelukkende de fuldmagter, som er registreret til CVR-nummeret, og som samtidig er registreret med den pågældende key. For hver fuldmagt returneres en række data om fuldmagten samt ID er for de målepunkter, som er indeholdt i fuldmagten, og en lang række andre målepunktsstamdata. Der forespørges via følgende URL, som returnerer data for alle aktive fuldmagter registreret til CVR-nummeret i certifikatet: https://eloverblik.dk/api/authorizations URL en kan udvides med en Third Party Key, hvorved der kun returneres data for aktive fuldmagter registreret med den pågældende key (angivet som XXX nedenfor): https://eloverblik.dk/api/authorizations?key =XXX Til højre oplistes inputværdierne, som bruges til opbygning af forespørgslen. For hvert kald bliver der sendt et svar, der som minimum indeholder en httpstatuskode. I tabellen til højre oplistes statuskoderne. Hvis kaldet går godt, returneres de forespurgte data. Sidst i dette dokument findes outputeksempler i både JSON- og XML-format. Forklaringer til de enkelte outputværdier findes i et særskilt dokument. Input Type Påkrævet Kommentar Nem ID certifikat http header Ja Accept http header Nej Fortæller serveren, i hvilket format der ønskes svar. Der er to valgmuligheder: application/xml application/json (standard) Key Querystring - string Httpstatus Nej Refererer til en Third Party Key, anvendt ved registrering af fuldmagt (kan indgå i det fuldmagtslink, som kunden benytter ved fuldmagtsgivning). Data Beskrivelse Kommentar 200 Fuldmagtsog målepunktsstamdata OK Alt OK. Data returneres. 204 Ingen No content Der er ingen fuldmagter registreret for det pågældende CVR. 403 Ingen HTTPS Required Kun HTTPS accepteres. 403 Ingen Certificate is missing or is invalid 403 Ingen Certificate is oces status Der mangler et certifikat, eller certifikatet er ugyldigt. Der er et problem med status for det anvendte certifikat. Typisk er certifikatet udløbet. Dok.nr. 16-09277-11 Side 2 af 13

Introduktion til /timeseries Forespørgsel via /timeseries Svar fra /timeseries /timeseries returnerer måledata for et specifikt målepunktsid. Der forespørges via nedenstående URL, som returnerer måledata for det angivne målepunkt (YYYYYYYYYYYYYYYYYY) for den angivne periode (ZZZ). I URL en skal også angives, hvilken fuldmagt/hvilket fuldmagtsid der forespørges på (XXX): https://eloverblik.dk/api/timeseries?authoriz ationid=xxx&meteringpointid=yyyyyyyyyy YYYYYYYY&period=ZZZ Eksempel: https://eloverblik.dk/api/timeseries?authoriz ationid=123&meteringpointid=5713131244507 93223&period=historic Til højre oplistes inputværdierne, som bruges til opbygning af forespørgslen. For hvert kald bliver der sendt et svar, der som minimum indeholder en httpstatuskode. I tabellen til højre oplistes statuskoderne. Hvis kaldet går godt, returneres de forespurgte data. Sidst i dette dokument findes outputeksempler i både JSON- og XML-format. Forklaringer til de enkelte outputværdier findes i et særskilt dokument. Input Type Påkrævet Kommentar Nem ID certifikat http header Ja Accept http header Nej Fortæller serveren, i hvilket format der ønskes svar. Der er to valgmuligheder: application/xml application/json (standard) AuthorizationId Metering- PointId Querystring - integer Querystring - integer Period Querystring - string Httpstatus Ja Ja Ja Fuldmagtsid 18 cifret målepunktsid Periode, der forespørges på data for. Der er fire valgmuligheder: Historic forespørger på data fra fuldmagtsdatoen og 1 år tilbage Month forespørger på data fra og med fuldmagtsdatoen og 1 måned frem* Quarter forespørger på data fra og med fuldmagtsdatoen og 3 måneder frem* Year forespørger på data fra og med fuldmagtsdatoen og 1 år frem* *dog kun til og med datoen for forespørgslen Data Beskrivelse Kommentar 200 Måledata OK Alt OK. Data returneres. 400 Ingen AuthorizationId id is not valid 400 Ingen MeteringpointId id is not valid 400 Ingen Period value id is not valid Det angivne fuldmagtsid er ikke gyldigt. Det angivne målepunktsid er ikke gyldigt. Den angivne periode er ikke gyldig. 400 Ingen Combination of AuthorizationId id and MeteringspointId id is not valid 400 Ingen Historic data is not allowed for MeteringpointId id Den angivne kombination af fuldmagtsid og målepunktsid er ikke gyldig. Målepunktet findes ikke på den angivne fuldmagt. Der er ikke fuldmagt til historiske data for det angivne målepunkt. 403 Ingen HTTPS Required Kun HTTPS accepteres. 403 Ingen Certificate is missing or is invalid 403 Ingen Certificate is oces status 404 Ingen No timeseries available for MeteringpointId id Der mangler et certifikat, eller certifikatet er ugyldigt. Der er et problem med status for det anvendte certifikat. Typisk er certifikatet udløbet. Der er ingen tilgængelige måledata for det angivne målepunkt i den angivne periode. Dok.nr. 16-09277-11 Side 3 af 13

TIPS Kald API et via browser Begge de nævnte kald kan foretages direkte via en browser. Dette kan være en hjælp ved fejlsøgning, da det hurtigt kan konstateres, hvilke data der returneres. Dok.nr. 16-09277-11 Side 4 af 13

Output-eksempler /authorizationsoutput I JSONformat (uden eksempeldata) [ "Id":, "Guid": "", "ThirdPartyId":, "ThirdPartyKey": "", "ThirdPartyName": "", "ThirdPartyCVR": "", "StartDate": "", "EndDate": "", "Name": "", "HistoricData":, "CurrentDataResolution":, "DeleteExistingAuthorizations":, "ToBeSignedHtml": "", "SignedXml": "", "SignedBy": "", "SignedTimeStamp": "", "DeleteDate": null, "ListOfMeteringPoints": [ "MeteringPointIdentification": "", "ParentMeteringPointIdentification":, "StreetName": "", "BuildingNumber": "", "FloorIdentification":, "RoomId":, "Postcode": "", "CityName": "", "TypeOfMeteringPoint": "", "NetSettlementGroup": "", "DataAccessCVR":, "ConsumerCVR":, "Product": "", "SettlementMethod": "", "MeterReadingOccurrence": "", "EnergyTimeSeriesMeasureUnit": "", "EstimatedAnnualVolume": "" "MeteringPointIdentification": "", "ParentMeteringPointIdentification":, "StreetName": "", "BuildingNumber": "", "FloorIdentification":, "RoomId":, "Postcode": "", "CityName": "", "TypeOfMeteringPoint": "", "NetSettlementGroup": "", "DataAccessCVR":, "ConsumerCVR":, "Product": "", "SettlementMethod": "", "MeterReadingOccurrence": "", "EnergyTimeSeriesMeasureUnit": "", "EstimatedAnnualVolume": "" ] ] Fuldmagtsstamdata Målepunktsstamdata /authorizationsoutput I XMLformat (uden <ArrayOfAuthorizationForWebservice xmlns:i="http://www.w3.org/2001/xmlschema-instance" xmlns="http://schemas.datacontract.org/2004/07/dk.miracleas.energinet.customeraccessportal.models"> <AuthorizationForWebservice> <CurrentDataResolution></CurrentDataResolution> <DeleteDate i:nil="true" /> <DeleteExistingAuthorizations></DeleteExistingAuthorizations> <EndDate></EndDate> Dok.nr. 16-09277-11 Side 5 af 13

eksempeldata) /authorizationsoutput i JSONformat (med eksempeldata) <Guid></Guid> <HistoricData></HistoricData> <Id></Id> <ListOfMeteringPoints> <AuthorizationMetersForDownload> <BuildingNumber></BuildingNumber> <CityName></CityName> <ConsumerCVR></ConsumerCVR> <DataAccessCVR></DataAccessCVR> <EnergyTimeSeriesMeasureUnit> </EnergyTimeSeriesMeasureUnit> <EstimatedAnnualVolume></EstimatedAnnualVolume> <FloorIdentification i:nil="true" /> <MeterReadingOccurrence></MeterReadingOccurrence> <MeteringPointIdentification></MeteringPointIdentification> <NetSettlementGroup></NetSettlementGroup> <ParentMeteringPointIdentification i:nil="true" /> <Postcode></Postcode> <Product> </Product> <RoomId i:nil="true" /> <SettlementMethod> </SettlementMethod> <StreetName></StreetName> <TypeOfMeteringPoint></TypeOfMeteringPoint> </AuthorizationMetersForDownload> <AuthorizationMetersForDownload> <BuildingNumber></BuildingNumber> <CityName></CityName> <ConsumerCVR></ConsumerCVR> <DataAccessCVR></DataAccessCVR> <EnergyTimeSeriesMeasureUnit> </EnergyTimeSeriesMeasureUnit> <EstimatedAnnualVolume></EstimatedAnnualVolume> <FloorIdentification i:nil="true" /> <MeterReadingOccurrence></MeterReadingOccurrence> <MeteringPointIdentification></MeteringPointIdentification> <NetSettlementGroup></NetSettlementGroup> <ParentMeteringPointIdentification i:nil="true" /> <Postcode></Postcode> <Product> </Product> <RoomId i:nil="true" /> <SettlementMethod> </SettlementMethod> <StreetName></StreetName> <TypeOfMeteringPoint></TypeOfMeteringPoint> </AuthorizationMetersForDownload> </ListOfMeteringPoints> <Name></Name> <SignedBy></SignedBy> <SignedTimeStamp></SignedTimeStamp> <SignedXml></SignedXml> <StartDate></StartDate> <ThirdPartyCVR></ThirdPartyCVR> <ThirdPartyId></ThirdPartyId> <ThirdPartyKey> </ThirdPartyKey> <ThirdPartyName></ThirdPartyName> <ToBeSignedHtml></ToBeSignedHtml> </AuthorizationForWebservice> < /ArrayOfAuthorizationForWebservice> [ "Id": 68, "Guid": "d55c458f-ecce-40f8-9b4a-b2fd689d5c76", "ThirdPartyId": 23, "ThirdPartyKey": "FuldmagtUdenAktuelleData", "ThirdPartyName": "Nordjysk elhandel", "ThirdPartyCVR": "29915938", "StartDate": "2016-10-21T10:43:37.32", "EndDate": "2017-10-21T10:43:37.32", "Name": "SIGNATURGRUPPEN A/S ", "HistoricData": true, "CurrentDataResolution": 0, "DeleteExistingAuthorizations": false, Dok.nr. 16-09277-11 Side 6 af 13

"ToBeSignedHtml": "<html><body><p>signaturgruppen A/S giver hermed fuldmagt til Nordjysk elhandel der må: </p><ul><li>hente historiske data for perioden 21-10-2015 til 21-10-2016 én gang</li></ul><p>for følgende målere:</p><ul><li>578030100000096890, Tonne Kjærsvej 0 Fredericia</li><li>578030100000096968, Tonne Kjærsvej 0 Fredericia</li></ul></body></html>", "SignedXml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<openoces:signature xmlns:openoces=\"http://www.openoces.org/2006/07/signature#\" version=\"0.1\"><ds:signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" Id=\"signature\">\n<ds:SignedInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:openoces=\"http://www.openoces.org/2006/07/signature#\">\n<ds:canonicalizationmethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n- 20010315\"></ds:CanonicalizationMethod>\n<ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsasha256\"></ds:SignatureMethod>\n<ds:Reference URI=\"#ToBeSigned\">\n<ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"></ds:DigestMethod>\n<ds:DigestValue>D3xY9JvOkXCqnJZ05eJsyz7NntLSnQYsUbDsd2TXAQ0=</ds:DigestValue >\n</ds:reference>\n</ds:signedinfo>\n<ds:signaturevalue>\nkb+3oia3jmi6gsjdghikunbnrll3bwefiyhlzsgrwn7zmt57w8tv/+usjq2qpnsk5s2p+s0pl0n9\n+pwn 3M12N92LRFAOFd0OTkITJn81uF56PBncIu13pTV36FpdF7/IxuBLXTPaciUUuNoKbvODqMlS\nTlaEyy/INcvC2IMDH1lpIPe8QMgev+PKcHBEPFNHLao8xnRTbr3Q1yjhfc 13JdPHsv7t0hopTPjt\nM+HiXjpcekm6I4aHeVl1mECjmqMOuaeKvo5mYH9ih7K6lV/WL4z5CWtPJOhKZHLeWkzo3dWvTZDg\nccXQoguhw9xDOxjIkVM1Dr/dpJoFfKX/q WskWA==\n</ds:SignatureValue>\n<ds:KeyInfo>\n<ds:X509Data>\n<ds:X509Certificate>\nMIIFQDCCAyigAwIBAgIES+raLTANBgkqhkiG9w0BAQsFADBPMQswCQYD VQQGEwJESzESMBAGA1UE\nChMJVFJVU1QyNDA4MSwwKgYDVQQDEyNUUlVTVDI0MDggU3lzdGVtdGVzdCBWSUkgUHJpbWFyeSBD\nQTAeFw0xNDAyMjcwNzUzMTBaFw0y OTAyMjcwODIzMTBaMEcxCzAJBgNVBAYTAkRLMRIwE- we- AYDVQQK\nDAlUUlVTVDI0MDgxJDAiBgNVBAMMG1RSVVNUMjQwOCBTeXN0ZW10ZXN0IFhJWCBDQTCCASIwDQYJ\nKoZIhvcNAQEBBQADggEPADCCAQoCggE BAJ/pQ+ft8lMEslE2fXgWrtCyjApkps6JDThFyedtFoBr\nRCrDbLqrP7HJObJJKMPYjdVxl44OsRfxGFRhZufILx8YhMYw3jjPiWuxe0pZdISyzMDtlC9GMZ7z\nyncwaZXFK8A 0PAZmoNimm9ZFsr2ubzlwCbRrtM8v4+vR9cVSgwlPMda5c1HM9/ED8uC0pZBira7N\nw8r5Jqnn1ctHW/61L3XzXS1sslN2bXP43fTcsbhxCr5dLD0m2OHPgl056LqMleNeb VMlSudbYuWr\neugGG2L9Nxnr1U38KSRHzEAjg8uT5ljDOm3ju/QGewfMsS0HM/H/tVxb04YZLFeKgNtrFGECAwEA\nAaOCASowggEmMA8GA1UdEwEB/wQFMAMBAf8wDgY DVR0PAQH/BAQDAgEGMBEGA1UdIAQKMAgwBgYE\nVR0gADCBrwYDVR0fBIGnMIGkMDqgOKA2hjRodHRwOi8vY3JsLnN5c3RlbXRlc3Q3LnRydXN0MjQw\nOC5jb2 0vc3lzdGVtdGVzdDcuY3JsMGagZKBipGAwXjELMAkGA1UEBhMCREsxEjAQBgNVBAoTCVRS\nVVNUMjQwODEsMCoGA1UEAxMjVFJVU1QyNDA4IFN5c3RlbXRlc3 QgVklJIFByaW1hcnkgQ0ExDTAL\nBgNVBAMTBENSTDEwHwYDVR0jBBgwFoAUI7pMMZDh08zTG7MbWrbIRc3Tg5cwHQYDVR0OBBYEFMwC\nVQzkgXSvIFTVERRXnJ FSOH+gMA0GCSqGSIb3DQEBCwUAA4ICAQBoWzOTuedV5etuNQTX+TNbjuTr\nQk78b0m3zXbGL4vtTXKLV6Xm3n4I7S4/GLViduMzO487W2hW+qI304vZ3JUxdFmB LS2+4Kzr2cCK\nRG4BseqiOw4KGNO1nmoXsMKmlw/ywndQUKW9o+t2rr6e9Bi6EQ8trnLEtLPhRMRXed99j8GsWBgB\nXDcVUpky7trRjM8LnQPXUPq9RYHrz0i/cVd2n bxqcb/zjzns2u9if9h09ur48uf1odj0i2mvas5y\nu+wgnn8zzrlscd5osbl1lxkamgempad7modskuexmtpu8atw38bmdi/6sukghp6ueygpacmevxom\n2bzlxoohzi BxKTG4us0ccemkV8+tia2VyrZnVrF5TzqS+GoKUYKmmcVi4s0/NKWtJANGYT8ZxEpt\ngprHGJ7y27941DFaRcPFLUhn9rqHpyHOr0x4BjVMz/sm52kqvof2NWwkjoNVQv JLB6XsL7SjGjST\neg2j0XmL9lPwSvjZ4azOrwbqJ7UyrRey3iHnKFMbyB6tTW2IjhhMeHLSIq1XYE0Z6Lb6VfLZbSiY\nAaOOhQKvdU0FrkBuBmdmtFhInMbSPgQPXquKH hfh8yo/76g/fokjfcmozqjjcjvb62r3p58xlqwp\nsvasaipb2h6hbhkzmwgus+njorlwiwwurxeuaowyvddew5zi7g==\n</ds:x509certificate>\n</ds:x509data>\n< ds:x509data>\n<ds:x509certificate>\nmiigltccbrwgawibagieuw+xgjanbgkqhkig9w0baqsfadbhmqswcqydvqqgewjeszesmbaga1ue\ncgwjvfjvu1qy NDA4MSQwIgYDVQQDDBtUUlVTVDI0MDggU3lzdGVtdGVzdCBYSVggQ0EwHhcNMTUw\nMjE5MTIwMDMyWhcNMTgwMjE5MTE1OTI2WjB3MQswCQYDVQQGEwJ ESzEsMCo- GA1UECgwjU0lHTkFU\nVVJHUlVQUEVOIEEvUyAvLyBDVlI6Mjk5MTU5MzgxOjAWBgNVBAMMD0ZsZW1taW5nIE1hZHNlbjAg\nBgNVBAUTGUNWUjoyOTkxNTkzOC1 SSUQ6MjMxOTUwMDQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw\nggEKAoIBAQCZncc460Qde9Yc2DOU1NBn7PiM9ajLipE+2z0z55muRMSgr4h1ycLSyQSzM/kT DRvd\nLCmSTlMr69nGEluC5lDr3JrZwtuvQDn1MHjhxEijgyoJrXK8mFszdGiRp8SbruqiawY19Sx2F64X\ns/vrv7wAbH2WzcPb/2irH6cqc1MjnJ4L3rZ3/PmNQc1Euis8F17u ScBxGiH9yZCJQrz/ymPBh9St\nmmFTgr14N+L2PeetiPzlP6fgIJGimpW764VqAV46phmaZe8Rb18WIHrjOwYBUIyKZx3M6iJFSVtS\nU1HdSOhPloGlVw1x3HRNIygedQfI 1U02MYyQXEL/z1sJF1hvAgMBAAGjggLvMIIC6zAOBgNVHQ8B\nAf8EBAMCA/gwgZcGCCsGAQUFBwEBBIGKMIGHMDwGCCsGAQUFBzABhjBodHRwOi8vb2NzcC5 zexn0\nzw10zxn0mtkudhj1c3qynda4lmnvbs9yzxnwb25kzxiwrwyikwybbquhmakgo2h0dha6ly9tlmfp\nys5zexn0zw10zxn0mtkudhj1c3qynda4lmnv bs9zexn0zw10zxn0mtkty2euy2vymiibiaydvr0g\nbiibfzccarmwggepbg0rbgeeayh0uqiebgifmih9mc8gccsgaqufbwibfinodhrwoi8vd3d3lnry\ndxn0 MjQwOC5jb20vcmVwb3NpdG9yeTCByQYIKwYBBQUHAgIwgbwwDBYFRGFuSUQwAwIBARqBq0Rh\nbklEIHRlc3QgY2VydGlmaWthdGVyIGZyYSBkZW5uZSBDQSB1 ZHN0ZWRlcyB1bmRlciBPSUQgMS4z\nLjYuMS40LjEuMzEzMTMuMi40LjYuMi41LiBEYW5JRCB0ZXN0IGNlcnRpZmljYXRlcyBmcm9tIHRo\naXMgQ0EgYXJlIGlzc3VlZC B1bmRlciBPSUQgMS4zLjYuMS40LjEuMzEzMTMuMi40LjYuMi41LjAj\nBgNVHREEHDAagRhqYWtvYkBzaWduYXR1cmdydXBwZW4uZGswgaoGA1UdHwSBojCBnzA8 odqgoiy2\nahr0cdovl2nybc5zexn0zw10zxn0mtkudhj1c3qynda4lmnvbs9zexn0zw10zxn0mtkuy3jsmf+g\nxabbpfkwvzelmakga1uebhmcresxejaqbg NVBAoMCVRSVVNUMjQwODEkMCI- GA1UEAwwbVFJVU1Qy\nNDA4IFN5c3RlbXRlc3QgWElYIENBMQ4wDAYDVQQDDAVDUkwyNTAfBgNVHSMEGDAWgBTMAlUM5IF0\nryBU1REUV5yRUjh/oDAdBgN VHQ4EFgQUk/f8QLdn7YzkDIukuwb+gPdMJUcwCQYDVR0TBAIwADAN\nBgkqhkiG9w0BAQsFAAOCAQEAUHiHRR+Hzd6be+W/NZAVUB37b+DUdtj66EcBV+USQYIw /mfhhfsh\nys+vhnzg/sxms9xomkq0yubpsevu713pchtjlr0u+plxct98zsjcv9cmr7c2eyin1hilc04urkwc\nkbk9pp28134vsz0+whu9gslzxig9615qhdw4kuogcqhnx 1HuXPs4QT4qzzB80ZrJXZO7/zhJ1wMU\nKhGveAHhMPAMedmBLqmjYiaPHtB017TAlM7EZTjUFbJEIhTnHQT5Hge+E7xmBerd3lP8dFjGo4wi\nHF+ZgMqCleJLVWK8E kuauazvlwlezenwrxgnxtlsswbtoajz/ay0nfht8z/phq==\n</ds:x509certificate>\n</ds:x509data>\n<ds:x509data>\n<ds:x509certificate>\nmiigsdccbdcgawibagies+puldanbgkqhkig9w0baqs FADBPMQswCQYDVQQGEwJESzESMBAGA1UE\nChMJVFJVU1QyNDA4MSwwKgYDVQQDEyNUUlVTVDI0MDggU3lzdGVtdGVzdCBWSUkgUHJpbWFyeSBD\nQTAeFw0xMDA1MTIwODMyMTRaFw 0zNzAxMTIwOTAyMTRaME8xCzAJBgNVBAYTAkRLMRIwEAYDVQQK\nEwlUUlVTVDI0MDgxLDAqBgNVBAMTI1RSVVNUMjQwOCBTeXN0ZW10ZXN0IFZJSSBQcmlt YXJ5IENB\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApuuMpdHu/lXhQ+9TyecthOxrg5hPgxlK\n1rpjsyBNDEmOEpmOlK8ghyZ7MnSF3ffsiY+0jA51p+A QfYYuarGgUQVO+VM6E3VUdDpgWEksetCY\nY8L7UrpyDeYx9oywT7E+YXH0vCoug5F9vBPnky7PlfVNaXPfgjh1+66mlUD9sV3fiTjDL12GkwOL\nt35S5BkcqAEYc37HT69N88Qu gxtarl8efbrumj1mw0lbxcwl21gdvy4ejqh1us7ytrmrj2neftcr\nwhzm2ryf7bgd80ymtjel6roiidwligzvhofhv4xdlhwzaqbdb9s141q2s9kdpzcgcgigexzdqy1v\ nz7ubcmibdg7q2s2ni7wpumbye+iyvkvjd32srgczpwqg7203clyzcjq2owulkl807/sk4sylema4\nyfqsazifv+m0ovrjccckpyss10n/+iolem0hnoxqiupujigpcjma8 anqwuegiaknzfa/m1ikwnn0\nctkem2agttewpzb0+dcatllyv6ss3w+d7pqwcxsavazmd4pncx+/asrzqd3osvnqxuqr8eoxeulx\nsae0cprygwqwswgpqmgm8knphjic 5ks2mzHZAMyTz3zoU3h/QW2T2U2+pZjUeMjYhyrReWRbOIBC\nizoOaoaNcSnPGUEohGUyLPTbZLpWsm3vjbyk7yvPqoUCAwEAAaOCASowggEmMA8GA1UdEwEB/ wqf\nmambaf8wdgydvr0paqh/baqdagegmbega1udiaqkmagwbgyevr0gadcbrwydvr0fbignmigkmdqg\noka2hjrodhrwoi8vy3jslnn5c3rlbxrlc3q3ln RydXN0MjQwOC5jb20vc3lzdGVtdGVzdDcuY3Js\nMGagZKBipGAwXjELMAkGA1UEBhMCREsxEjAQBgNVBAoTCVRSVVNUMjQwODEsMCoGA1UEAxMjVFJV\nU1Qy NDA4IFN5c3RlbXRlc3QgVklJIFByaW1hcnkgQ0ExDTALBgNVBAMTBENSTDEwHwYDVR0jBBgw\nFoAUI7pMMZDh08zTG7MbWrbIRc3Tg5cwHQYDVR0OBBYEFCO6 TDGQ4dPM0xuzG1q2yEXN04OXMA0G\nCSqGSIb3DQEBCwUAA4ICAQCRJ9TM7sISJBHQwN8xdey4rxA0qT7NZdKICcIxyIC82HIOGAouKb3o\nHjIoMgxIUhA3xbU3Pu tr4+smnc1ldrw8aoflglfyg2ypg3cpf9pdhrvdh8qierozlwfnpdgvecan\njkpnt8mu0fwbs32tivm5deouwdpoddrf27ku9qtfh4iyg90wlhfli+nqc2hwvbugdt3tx U6zK4pz\nM0CpbrbOXPJOYHMvaw/4Em2r0PZD+QOagcecxPMWI65t2h/USbyO/ah3VKnBWDkPsMKjj5jEbBVR\nnGZdv5rcJb0cHqQ802eztziA4HTbSzBE4oRaVCrhXg/ g6jj8/tzlgxri0jggax2dvwqyp4xhbxln\ncvxpdvrv0g0ehkvhom1fgjiz975/dmavkybh0gzygq4sy9fykl4ot4rdkdvzlyixs4u1brujjjad\nzhcexmzqohx8she+fj9yw VVRGfxT4FL0Qd3WAtaCVyhSQ6SkZgrPvzAmxOUruI6XhEhYGlP5O8WF\nETiATxuZAJNuKMJtibfRhMNsQ+TVv/ZPr5Swe+3DIQtmt1MIlGlTn4k40z4s6gDGKiFwAYXjd/kI\nD 32R/hJPE41o9+3nd8aHZhBy2lF0jKAmr5a6Lbhg2O7zjGq7mQ3MceNeebuWXD44AxIinryzhqnE\nWI+BxdlFaia3U7o2+HYdHw==\n</ds:X509Certificate>\n</ds:X509Dat a>\n</ds:keyinfo>\n<ds:object xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:openoces=\"http://www.openoces.org/2006/07/signature#\" Id=\"ToBeSigned\"><ds:SignatureProperties>\n<ds:SignatureProperty Target=\"signature\"><openoces:Name>signtext</openoces:Name><openoces:Value Encoding=\"base64\" VisibleToSigner=\"yes\">PGh0bWw+PGJvZHk+PHA+U0lHTkFUVVJHUlVQUEVOIEEvUyAgZ2l2ZXIgaGVybWVkIGZ1bGRtYWd0IHRpbCBOb3JkanlzayBlbGhhbmRlbCBkZXIgbcOlO ia8l3a+phvspjxsat5ozw50zsboaxn0b3jpc2tligrhdgegzm9yihblcmlvzgvuidixltewltiwmtugdglsidixltewltiwmtygw6luigdhbmc8l2xppjwvdww+pha+zm9 yigb- DuGxnZW5kZSBtw6VsZXJlOjwvcD48dWw+PGxpPjU3ODAzMDEwMDAwMDA5Njg5MCwgVG9ubmUgS2rDpnJzdmVqIDAgRnJlZGVyaWNpYTwvbGk+PGxpPjU3ODAz MDEwMDAwM- DA5Njk2OCwgVG9ubmUgS2rDpnJzdmVqIDAgRnJlZGVyaWNpYTwvbGk+PC91bD48L2JvZHk+PC9odG1sPg==</openoces:Value></ds:SignatureProperty>\n<ds:Signa tureproperty Target=\"signature\"><openoces:Name>RequestIssuer</openoces:Name><openoces:Value Encoding=\"base64\" VisibleToSigner=\"yes\">U2lnbmF0dXJncnVwcGVuIA==</openoces:Value></ds:SignatureProperty>\n<ds:SignatureProperty Target=\"signature\"><openoces:Name>action</openoces:Name><openoces:Value Encoding=\"xml\" VisibleToSigner=\"no\">sign</openoces:Value></ds:SignatureProperty>\n<ds:SignatureProperty Target=\"signature\"><openoces:Name>useragent</openoces:Name><openoces:Value Encoding=\"base64\" VisibleToSigner=\"no\">TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXT1c2NDsgVHJpZGVudC83LjA7IFNMQ0MyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMu NS4zMDcyOTsgLk5FVCBDTFIgMy4wLjMwNzI5OyBNZWRpYSBDZW50ZXIgUEMgNi4wOyAuTkVUNC4wQzsgLk5FVDQuMEU7IEluZm9QYXRoLjM7IHJ2OjExLjApIGxp a2ugr2vja28=</openoces:value></ds:signatureproperty>\n<ds:signatureproperty Target=\"signature\"><openoces:Name>TimeStamp</openoces:Name><openoces:Value Encoding=\"xml\" VisibleToSigner=\"no\">1477039417321</openoces:Value></ds:SignatureProperty>\n</ds:SignatureProperties></ds:Object>\n</ds:Signature></openoces:signature>", "SignedBy": "CVR:29915938-RID:23195004", "SignedTimeStamp": "2016-10-21T10:44:20.167", "DeleteDate": null, "ListOfMeteringPoints": [ "MeteringPointIdentification": "578030100000096944", "ParentMeteringPointIdentification": "578030100000096968", "StreetName": "Tonne Kjærsvej", "BuildingNumber": "65", "FloorIdentification": "0", Dok.nr. 16-09277-11 Side 7 af 13

"RoomId": "1", "Postcode": "7000", "CityName": "Fredericia", "TypeOfMeteringPoint": "D06", "NetSettlementGroup": null, "DataAccessCVR": 0, "ConsumerCVR": 0, "Product": "Item8716867000030", "SettlementMethod": null, "MeterReadingOccurrence": "PT1H", "EnergyTimeSeriesMeasureUnit": "KWH", "EstimatedAnnualVolume": "0" "MeteringPointIdentification": "578030100000096968", "ParentMeteringPointIdentification": null, "StreetName": "Tonne Kjærsvej", "BuildingNumber": "65", "FloorIdentification": "0", "RoomId": "1", "Postcode": "7000", "CityName": "Fredericia", "TypeOfMeteringPoint": "E17", "NetSettlementGroup": "6", "DataAccessCVR": 23232323, "ConsumerCVR": 23232323, "Product": "Item8716867000030", "SettlementMethod": "E02", "MeterReadingOccurrence": "PT1H", "EnergyTimeSeriesMeasureUnit": "KWH", "EstimatedAnnualVolume": "0" ] ] /timeseriesoutput i JSONformat (uden eksempeldata) /timeseriesoutput i XMLformat (uden eksempeldata) [ "Meteringpoint": "", "DateFrom": "", "DateTo": "", "Usage":, "Unit": "" "Meteringpoint": "", "DateFrom": "", "DateTo": "", "Usage":, "Unit": "" ] <ArrayOfReading xmlns:i="http://www.w3.org/2001/xmlschema-instance" xmlns="http://schemas.datacontract.org/2004/07/dk.miracleas.energinet.customeraccessportal.webservice.models"> <Reading> <DateFrom></DateFrom> <DateTo></DateTo> <Meteringpoint></Meteringpoint> <Unit></Unit> <Usage></Usage> </Reading> <Reading> <DateFrom></DateFrom> <DateTo></DateTo> <Meteringpoint></Meteringpoint> <Unit></Unit> <Usage></Usage> </Reading> </ArrayOfReading> Dok.nr. 16-09277-11 Side 8 af 13

/timeseriesoutput i JSONformat (med eksempeldata) [ "DateFrom": "2016-10-25T23:00:00", "DateTo": "2016-10-26T00:00:00", "Usage": 24.0, "DateFrom": "2016-10-25T22:00:00", "DateTo": "2016-10-25T23:00:00", "Usage": 23.0, "DateFrom": "2016-10-25T21:00:00", "DateTo": "2016-10-25T22:00:00", "Usage": 22.0, "DateFrom": "2016-10-25T20:00:00", "DateTo": "2016-10-25T21:00:00", "Usage": 21.0, "DateFrom": "2016-10-25T19:00:00", "DateTo": "2016-10-25T20:00:00", "Usage": 20.0, "DateFrom": "2016-10-25T18:00:00", "DateTo": "2016-10-25T19:00:00", "Usage": 19.0, "DateFrom": "2016-10-25T17:00:00", "DateTo": "2016-10-25T18:00:00", "Usage": 18.0, "DateFrom": "2016-10-25T16:00:00", "DateTo": "2016-10-25T17:00:00", "Usage": 17.0, "DateFrom": "2016-10-25T15:00:00", "DateTo": "2016-10-25T16:00:00", "Usage": 16.0, Dok.nr. 16-09277-11 Side 9 af 13

"DateFrom": "2016-10-25T14:00:00", "DateTo": "2016-10-25T15:00:00", "Usage": 15.0, "DateFrom": "2016-10-25T13:00:00", "DateTo": "2016-10-25T14:00:00", "Usage": 14.0, "DateFrom": "2016-10-25T12:00:00", "DateTo": "2016-10-25T13:00:00", "Usage": 13.0, "DateFrom": "2016-10-25T11:00:00", "DateTo": "2016-10-25T12:00:00", "Usage": 12.0, "DateFrom": "2016-10-25T10:00:00", "DateTo": "2016-10-25T11:00:00", "Usage": 11.0, "DateFrom": "2016-10-25T09:00:00", "DateTo": "2016-10-25T10:00:00", "Usage": 10.0, "DateFrom": "2016-10-25T08:00:00", "DateTo": "2016-10-25T09:00:00", "Usage": 9.0, "DateFrom": "2016-10-25T07:00:00", "DateTo": "2016-10-25T08:00:00", "Usage": 8.0, "DateFrom": "2016-10-25T06:00:00", "DateTo": "2016-10-25T07:00:00", "Usage": 7.0, Dok.nr. 16-09277-11 Side 10 af 13

"DateFrom": "2016-10-25T05:00:00", "DateTo": "2016-10-25T06:00:00", "Usage": 6.0, "DateFrom": "2016-10-25T04:00:00", "DateTo": "2016-10-25T05:00:00", "Usage": 5.0, "DateFrom": "2016-10-25T03:00:00", "DateTo": "2016-10-25T04:00:00", "Usage": 4.0, "DateFrom": "2016-10-25T02:00:00", "DateTo": "2016-10-25T03:00:00", "Usage": 3.0, "DateFrom": "2016-10-25T01:00:00", "DateTo": "2016-10-25T02:00:00", "Usage": 2.0, "DateFrom": "2016-10-25T00:00:00", "DateTo": "2016-10-25T01:00:00", "Usage": 1.0, ].NET kodeeksempel Viser, hvordan man kan lave klientautentificerede SSLforbindelser til webservicen. using System; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Tasks; using Newtonsoft.Json; namespace ConsoleApplication1 class Program static void Main(string[] args) CallIisHttpsService().Wait(); Console.ReadLine(); /// <summary> /// Call IIS Https Service /// </summary> Dok.nr. 16-09277-11 Side 11 af 13

/// <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/webservice/"; var actionuri = "authorizations"; //var actionuri = "timeseries?authorizationid=16&meteringpointid=571313153100061122&period=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)) 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 Dok.nr. 16-09277-11 Side 12 af 13

Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Response message: \n 0", JsonConvert.SerializeObject(response.Result, Formatting.Indented)); #region Models public class Timeseries 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; public IEnumerable<MeteringPoints> ListOfMeteringPoints get; set; 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 certificateproblem) return true; Dok.nr. 16-09277-11 Side 13 af 13