Metatjänster
Artikeln beskriver de metatjänster som anslutningsservern erbjuder. Med hjälp av dem är det möjligt att få information om organisationer som anslutit sig till Suomi.fi-informationsled och de tjänster de erbjuder.
Syftet med metatjänsterna är att förbättra tillgången till de tjänster som anslutits till Informationsleden och underlätta ibruktagandet av dem. Följande uppgifter kan fås via metatjänsterna:
- listClients: förteckning över organisationer som anslutits till Informationsleden (member) och organisationernas subsystem.
- listCentralServices: förteckning över centraltjänster som tillhandahålls av Centralserverns anslutningsserver (central services).
- listMethods: förteckning över tjänster tillhandahållen av viss organisation.
- allowedMethods: förteckning över sådana tjänster som en viss organisation tillhandahåller och avsändaren av enkäten har användarrätt till.
- getWsdl: tjänsternas WSDL-gränssnittsbeskrivningar
Metatjänsterna är tillgängliga från och med version 6.4/Informationsleden. Bekanta dig med metatjänsternas protokollbeskrivning (på engelska)Öppnas i ett nytt fönster..
Organisationer som anslutit sig till Informationsleden och deras subsystem - listClients
listClients metatjänst returnerar förteckning över organisationer (member) och organisationers subsystem som anslutits till Informationsleden
Kontakta Metatjänsten genom att göra en HTTP GET-begäran till anslutningsservern.
[GET] https://{SECURITYSERVER}/listClientsAnslutningsservern returnerar som svar ett XML-meddelande som innehåller uppgifter om alla organisationer och subsystem som anslutits till Informationsleden:
<ns2:clientList xmlns:ns1="http://x-
road.eu/xsd/identifiers"xmlns:ns2="http://x-road.eu/xsd/xroad.xsd">
<ns2:member>
<ns2:id ns1:objectType="MEMBER">
<ns1:xRoadInstance>FI-DEV</ns1:xRoadInstance>
<ns1:memberClass>GOV</ns1:memberClass>
<ns1:memberCode>0920632-0</ns1:memberCode>
</ns2:id>
<ns2:name>CSC</ns2:name>
</ns2:member>
<ns2:member>
<ns2:id ns1:objectType="MEMBER">
<ns1:xRoadInstance>FI-DEV</ns1:xRoadInstance>
<ns1:memberClass>GOV</ns1:memberClass>
<ns1:memberCode>0245437-2</ns1:memberCode>
</ns2:id>
<ns2:name>VRK</ns2:name>
</ns2:member>
<ns2:member>
<ns2:id ns1:objectType="SUBSYSTEM">
<ns1:xRoadInstance>FI-DEV</ns1:xRoadInstance>
<ns1:memberClass>GOV</ns1:memberClass>
<ns1:memberCode>0245437-2</ns1:memberCode>
<ns1:subsystemCode>TestClient</ns1:subsystemCode>
</ns2:id>
<ns2:name>VRK</ns2:name>
</ns2:member>
<ns2:member>
<ns2:id ns1:objectType="SUBSYSTEM">
<ns1:xRoadInstance>FI-DEV</ns1:xRoadInstance>
<ns1:memberClass>GOV</ns1:memberClass>
<ns1:memberCode>0245437-2</ns1:memberCode>
<ns1:subsystemCode>TestService</ns1:subsystemCode>
</ns2:id>
<ns2:name>VRK</ns2:name>
</ns2:member>
</ns2:clientList>
Tjänster från Centralservern - listCentralServices
listCentralServices metaservice returnerar förteckningen över centralserverns centraltjänster (central services).
Kontakta Metatjänsten genom att göra en HTTP GET-begäran till anslutningsservern.
[GET] https://{SECURITYSERVER}/listCentralServicesAnslutningsservern returnerar som svar ett XML-meddelande som innehåller centraltjänsternas uppgifter:
<ns2:centralServiceList
xmlns:ns1="http://x-road.eu/xsd/identifiers"
xmlns:ns2="http://x-road.eu/xsd/xroad.xsd">
<ns2:centralService ns1:objectType="CENTRALSERVICE">
<ns1:xRoadInstance>FI-DEV</ns1:xRoadInstance>
<ns1:serviceCode>random</ns1:serviceCode>
</ns2:centralService>
</ns2:centralServiceList>
Organisationens tjänster - listMethods
listMethods-metatjänsten returnerar en förteckning över tjänster som tillhandahålls av en viss organisation.
Metatjänsten kontaktas genom att göra en SOAP-inbjudan till anslutningsservern enligt Informationsledens dataöverföringsprotokoll. I Service-elementet ska det subsystem som kontaktas specificeras.
<SOAP-ENV:Envelope xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:id="http://x-
road.eu/xsd/identifiers"xmlns:xrd="http://x-road.eu/xsd/xroad.xsd">
<SOAP-ENV:Header>
<xrd:client id:objectType="SUBSYSTEM">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestClient</id:subsystemCode>
</xrd:client>
<xrd:service id:objectType="SERVICE">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestService</id:subsystemCode>
<id:serviceCode>listMethods</id:serviceCode>
</xrd:service>
<xrd:userId>tuser</xrd:userId>
<xrd:id>ID11234</xrd:id>
<xrd:protocolVersion>4.0</xrd:protocolVersion>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<xrd:listMethods/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Anslutningsservern returnerar som svar en förteckning över de tjänster som kopplats till det subsystem som specificerats i inbjudan.
<SOAP-ENV:Envelope xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:id="http://x-
road.eu/xsd/identifiers"xmlns:xrd="http://x-road.eu/xsd/xroad.xsd">
<SOAP-ENV:Header>
<xrd:client id:objectType="SUBSYSTEM">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestClient</id:subsystemCode>
</xrd:client>
<xrd:service id:objectType="SERVICE">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestService</id:subsystemCode>
<id:serviceCode>listMethods</id:serviceCode>
</xrd:service>
<xrd:userId>tuser</xrd:userId>
<xrd:id>ID11234</xrd:id>
<xrd:protocolVersion>4.0</xrd:protocolVersion>
<xrd:requestHash
algorithmId="http://www.w3.org/2001/04/xmlenc#sha512">kXIWpudDipT1nlID9CvINYGJZwIxcZ0dn4LkWO9Y141M+1nJ5pDzmtR5ul+PxJnR2xDdOQBEXBgEMrodomEwfQ==
</xrd:requestHash>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<xrd:listMethodsResponse>
<xrd:service id:objectType="SERVICE">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestService</id:subsystemCode>
<id:serviceCode>helloService</id:serviceCode>
<id:serviceVersion>v1</id:serviceVersion>
</xrd:service>
<xrd:service id:objectType="SERVICE">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestService</id:subsystemCode>
<id:serviceCode>getRandom</id:serviceCode>
<id:serviceVersion>v1</id:serviceVersion>
</xrd:service>
</xrd:listMethodsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Tjänster som organisationen tillhandahåller och som frågeställaren har användarrättigheter till - allowedMethods
allowedMethods-metatjänsten returnerar en förteckning över sådana tjänster som en viss organisation tillhandahåller och som avsändaren av enkäten har användarrättigheter till.
Metatjänsten kontaktas genom att göra en SOAP-inbjudan till anslutningsservern enligt Informationsledens dataöverföringsprotokoll. I Service-elementet ska det subsystem som kontaktas specificeras.
<SOAP-ENV:Envelope xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:id="http://x-
road.eu/xsd/identifiers"xmlns:xrd="http://x-road.eu/xsd/xroad.xsd">
<SOAP-ENV:Header>
<xrd:client id:objectType="SUBSYSTEM">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestClient</id:subsystemCode>
</xrd:client>
<xrd:service id:objectType="SERVICE">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestService</id:subsystemCode>
<id:serviceCode>listMethods</id:serviceCode>
</xrd:service>
<xrd:userId>tuser</xrd:userId>
<xrd:id>ID11234</xrd:id>
<xrd:protocolVersion>4.0</xrd:protocolVersion>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<xrd:listMethods/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Anslutningsservern returnerar som svar en förteckning över de tjänster som kopplats till det subsystem som specificerats i inbjudan och som avsändaren av enkäten har användarrätt till.
<SOAP-ENV:Envelope xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:id="http://x-
road.eu/xsd/identifiers"xmlns:xrd="http://x-road.eu/xsd/xroad.xsd">
<SOAP-ENV:Header>
<xrd:client id:objectType="SUBSYSTEM">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestClient</id:subsystemCode>
</xrd:client>
<xrd:service id:objectType="SERVICE">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestService</id:subsystemCode>
<id:serviceCode>allowedMethods</id:serviceCode>
</xrd:service>
<xrd:userId>tuser</xrd:userId>
<xrd:id>ID11234</xrd:id>
<xrd:protocolVersion>4.0</xrd:protocolVersion>
<xrd:requestHash
algorithmId="http://www.w3.org/2001/04/xmlenc#sha512">DBtjBqBKhtoOLWzw7KeaySlNtxZ3eI9x5LR7c9974+CYdVGkPj5nqLWkcLOlwHZPlguJUeMB2sLg0URxvgaIpw==
</xrd:requestHash>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<xrd:allowedMethodsResponse>
<xrd:service id:objectType="SERVICE">
<id:xRoadInstance>FI-DEV</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>0245437-2</id:memberCode>
<id:subsystemCode>TestService</id:subsystemCode>
<id:serviceCode>getRandom</id:serviceCode>
<id:serviceVersion>v1</id:serviceVersion>
</xrd:service>
</xrd:allowedMethodsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Tjänsternas gränssnittsbeskrivningar - getWsdl
getWsdl-metatjänsten returnerar WSDL-beskrivningen av den tjänst som specificerats i inbjudan. Bekanta dig med WSDL-beskrivningen som används i X-Road under punkten gränssnittsbeskrivningar i artikeln X-Road-dataöverföringsprotokoll.
När man använder HTTP POST-metoden används samma förbindelseinställningar som fastställts för det subsystem som kontaktar tjänsterna. Med HTTP POST-metoden skickas alltså SOAP-meddelanden via anslutningsservern till Informationsleden i praktiken på exakt samma sätt som annars.
Nedan presenteras kontakten till getWsdl-metatjänsten
HTTP POST anrop
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xro="http://x-road.eu/xsd/xroad.xsd"
xmlns:iden="http://x-road.eu/xsd/identifiers">
<soapenv:Header>
<xro:protocolVersion>4.x</xro:protocolVersion>
<xro:issue>123</xro:issue>
<xro:id>123</xro:id>
<xro:userId>123</xro:userId>
<xro:service iden:objectType="SERVICE">
<iden:xRoadInstance>FI</iden:xRoadInstance>
<iden:memberClass>COM</iden:memberClass>
<iden:memberCode>111</iden:memberCode>
<iden:subsystemCode>SUB</iden:subsystemCode>
<iden:serviceCode>getWsdl</iden:serviceCode>
<iden:serviceVersion>v1</iden:serviceVersion>
</xro:service>
<xro:client iden:objectType="SUBSYSTEM">
<iden:xRoadInstance>FI</iden:xRoadInstance>
<iden:memberClass>COM</iden:memberClass>
<iden:memberCode>111</iden:memberCode>
<iden:subsystemCode>SUB</iden:subsystemCode>
</xro:client>
</soapenv:Header>
<soapenv:Body>
<xro:getWsdl>
<xro:serviceCode>getRandom</xro:serviceCode>
<xro:serviceVersion>v1</xro:serviceVersion>
</xro:getWsdl>
</soapenv:Body>
</soapenv:Envelope>
Svar från getWsdl-metatjänsten
Anslutningsservern returnerar som svar WSDL-beskrivningen för den tjänst som specificerats i kontakten. Beskrivningen innehåller också information om alla andra tjänster som beskrivs i samma WSDL. I exempelförfrågan ovan har tjänsten getRandom specificerats. I samma WSDL-beskrivning beskrivs även tjänsten helloService. Därför ingår också en beskrivning av helloService-tjänsten i svaret.
När man använder HTTP POST-metoden returneras svaret, dvs WSDL- beskrivningen av den önskade tjänsten, som bilaga till SOAP-svarsmeddelandet.
Bekanta dig närmare med svarsmeddelanden och exempelsvar (på engelska)Öppnas i ett nytt fönster..