Suomi.fi-palveluväylä –
Metapalvelut

Print Friendly, PDF & Email
 


Metapalvelut ovat käytettävissä palveluväylän versiosta 6.4 lähtien. Metapalveluiden protokollakuvaus on ladattavissa kokonaisuudessaan GitHub:sta täältä

Metapalvelut ovat liityntäpalvelimen tarjoamia palveluita, joiden avulla on mahdollista saada tietoja palveluväylään liittyneistä organisaatioista ja niiden tarjoamista palveluista. Metapalveluiden tarkoituksena on parantaa palveluväylään liitettyjen palveluiden löydettävyyttä ja helpottaa niiden käyttöönottoa. Metapalveluiden kautta on mahdollista saada seuraavat tiedot:

  • listClients: listaus palveluväylään liitetyistä organisaatioista (member) ja organisaatioiden alijärjestelmistä (subsystem)
  • listCentralServices: listaus keskuspalvelimen liityntäpalvelimen tarjoamista keskuspalveluista (central services)
  • listMethods: listaus tietyn organisaation tarjoamista palveluista
  • listAllowedMethods: listaus sellaisista tietyn organisaation tarjoamista palveluista, joihin kyselyn lähettäjällä on käyttöoikeus
  • getwsdl: palveluiden WSDL-rajapintakuvaukset.

Palveluväylään liittyneet organisaatiot ja niiden alijärjestelmät – listClients

listClients-metapalvelu palauttaa listauksen palveluväylään liitetyistä organisaatioista (member) ja organisaatioiden alijärjestelmistä (subsystem).

Metapalvelun kutsuminen tapahtuu tekemällä HTTP GET -pyyntö liityntäpalvelimelle:

[GET] https://{SECURITYSERVER}/listClients
Liityntäpalvelin palauttaa vastauksena kaikkien palveluväylään liitettyjen organisaatioiden ja alijärjestelmien tiedot sisältävän XML-sanoman:
    <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>

Keskuspalvelimen tarjoamat palvelut – listCentralServices

listCentralServices-metapalvelu palauttaa listauksen keskuspalvelimen liityntäpalvelimen tarjoamista keskuspalveluista (central services).

Metapalvelun kutsuminen tapahtuu tekemällä HTTP GET -pyyntö liityntäpalvelimelle:

[GET] https://{SECURITYSERVER}/listCentralServices

Liityntäpalvelin palauttaa vastauksena keskuspalveluiden tiedot sisältävän XML-sanoman:

<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>

Organisaation tarjoamat palvelut – listMethods

listMethods-metapalvelu palauttaa listauksen tietyn organisaation tarjoamista palveluista.

Metapalvelun kutsuminen tapahtuu tekemällä palveluväylän tiedonsiirtoprotokollan mukainen SOAP-kutsu liityntäpalvelimelle. Service-elementissä on yksilöitävä alijärjestelmä (subsystem), jolle kutsu kohdistetaan.

    <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>

Liityntäpalvelin palauttaa vastauksena listauksen kutsussa yksilöidyn alijärjestelmän (subsystem) alle liitetyistä palveluista:

<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>

Organisaation tarjoamat palvelut joihin on käyttöoikeus – allowedMethods

allowedMethods-metapalvelu palauttaa listauksen sellaisista tietyn organisaation tarjoamista palveluista, joihin kyselyn lähettäjällä on käyttöoikeus.

Metapalvelun kutsuminen tapahtuu tekemällä palveluväylän tiedonsiirtoprotokollan mukainen SOAP-kutsu liityntäpalvelimelle. Service-elementissä on yksilöitävä alijärjestelmä (subsystem), jolle kutsu kohdistetaan.

<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>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <xrd:allowedMethods/>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Liityntäpalvelin palauttaa vastauksena listauksen kutsussa yksilöidyn alijärjestelmän (subsystem) alle liitetyistä palveluista, joihin kyselyn lähettäjällä on käyttöoikeus:

    <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>

Palveluiden rajapintakuvaukset – getwsdl

getwsdl-metapalvelu palauttaa kutsussa yksilöidyn palvelun WSDL-kuvauksen. Lisätietoja X-Roadissa käytettävästä WSDL -kuvauksesta löytyy täältä.

Huom! Tietoturvasyistä X-Roadin versiosta 6.17.0 lähtien getwsdl-metapalvelun suositeltava kutsutapa on käyttää POST-metodia.

HTTP GET-metodissa kutsut tehdään liityntäpalvelimen omistajan nimissä ja allekirjoituksella, joka ei ole hyvän tietoturvan mukaista – siksi HTTP POST-metodin käyttö suositellaan. HTTP POST-metodia käytettäessä metapalvelun kutsuissa käytetään samoja yhteysasetuksia kuin palveluja kutsuvalle alijärjestelmälle on määritetty – tämä on tietoturvan kannalta turvallisempi tapa koska tällöin käytetään samoja asetuksia kuin muissakin liityntäpalvelimen alijärjestelmän kautta tehtävissä kutsuissa on määritetty käytettäväksi. HTTP POST-metodi on käytännössä sama tapa kuin muutenkin SOAP-sanomia lähetetään liityntäpalvelimen välityksellä palveluväylään.

Kannattaa huomioida, että liityntäpalvelimen ohjelmiston päivitysasennuksessa getWsdl (HTTP GET) toimii kuten ennenkin. Uusissa, puhtaalle palvelimelle tehtävissä, asennuksissa getWsdl (HTTP GET) on kytketty oletuksena parametrilla pois päältä ja vain HTTP POST-metodi on käytössä. Lue lisää parametrista täältä (parametrin nimi on listassa: allow-get-wsdl-request).

Huom! Mikäli samassa WSDL-kuvauksessa on kuvattu myös muita palveluita, palauttaa metapalvelu WSDL-kuvauksen kokonaisuudessaan eli vastaus sisältää myös kaikki muut samassa WSDL:ssä kuvatut palvelut.

Seuraavassa on esitetty kummallakin tavalla (POST ja GET) tehtävät getwsdl-metapalvelun kutsut.

1. HTTP POST (suositeltava tapa)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    <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>

2. HTTP GET (ei suositeltu tapa)

[GET] https://{SECURITYSERVER}/wsdl?xRoadInstance=FI-DEV&memberClass=GOV&memberCode=0245437-2&subsystemCode=TestService&serviceCode=getRandom&version=v1

getwsdl-metapalvelu vastaus

Liityntäpalvelin palauttaa vastauksena kutsussa yksilöidyn palvelun WSDL-kuvauksen, joka sisältää myös kaikkien muiden samassa WSDL:ssä kuvattujen palveluiden kuvaukset. Esimerkkikyselyssä yllä on yksilöity getRandom-palvelu, mutta samassa WSDL-kuvauksessa on kuvattu myös helloService-palvelu, jonka johdosta myös helloService-palvelun kuvaus sisältyy vastaukseen.

HUOM! HTTP POST-metodia käytettäessä vastaus eli halutun palvelun WSDL-kuvaus palautuu SOAP vastaussanoman liitteenä, HTTP GET-metodia käytettäessä vastaus on SOAP vastaussanoman sisällä. Lisätietoja vastaussanomista ja esimerkkivastaukset molempiin tapauksiin löytyvät täältä.

Alla esimerkkivastaus HTTP GET-metodin avulla tehdystä kyselystä.

<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

                  xmlns:tns="http://vrk-test.x-road.fi/producer"
                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                  xmlns:xrd="http://x-road.eu/xsd/xroad.xsd"
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:id="http://x-road.eu/xsd/identifiers"
                  name="testService"targetNamespace="http://vrk-test.x-road.fi/producer">
    <wsdl:types>
        <!-- Schema foridentifiers (reduced) -->
        <xsd:schema elementFormDefault="qualified"
                    targetNamespace="http://x-road.eu/xsd/identifiers"
                    xmlns="http://x-road.eu/xsd/identifiers">
            <xsd:simpleType name="XRoadObjectType">
                <xsd:annotation>
                    <xsd:documentation>Enumeration forX-Road identifier
                        types that can be used in requests.
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="MEMBER"/>
                    <xsd:enumeration value="SUBSYSTEM"/>
                    <xsd:enumeration value="SERVICE"/>
                </xsd:restriction>
            </xsd:simpleType>
            <xsd:element name="xRoadInstance"type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Identifies the X-Road instance.
                        This field is applicable to all identifier
                        types.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="memberClass"type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Type of the member (company,
                        government institution, privateperson, etc.)
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="memberCode"type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Code that uniquely identifies a
                        member of given member type.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="subsystemCode"type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Code that uniquely identifies a
                        subsystem of given SDSB member.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="serviceCode"type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Code that uniquely identifies a
                        service offered by given SDSB member or
                        subsystem.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="serviceVersion"type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Version of the service.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:attribute name="objectType"type="XRoadObjectType"/>
            <xsd:complexType name="XRoadClientIdentifierType">
                <xsd:sequence>
                    <xsd:element ref="xRoadInstance"/>
                    <xsd:element ref="memberClass"/>
                    <xsd:element ref="memberCode"/>
                    <xsd:element minOccurs="0"ref="subsystemCode"/>
                </xsd:sequence>
                <xsd:attribute ref="objectType"use="required"/>
            </xsd:complexType>
            <xsd:complexType name="XRoadServiceIdentifierType">
                <xsd:sequence>
                    <xsd:element ref="xRoadInstance"/>
                    <xsd:element ref="memberClass"/>
                    <xsd:element ref="memberCode"/>
                    <xsd:element minOccurs="0"ref="subsystemCode"/>
                    <xsd:element ref="serviceCode"/>
                    <xsd:element minOccurs="0"ref="serviceVersion"/>
                </xsd:sequence>
                <xsd:attribute ref="objectType"use="required"/>
            </xsd:complexType>
        </xsd:schema>
        <!-- Schema forrequest headers -->
        <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
                    targetNamespace="http://x-road.eu/xsd/xroad.xsd"
                    elementFormDefault="qualified">
           
            <xsd:element name="client"type="id:XRoadClientIdentifierType"/>
            <xsd:element name="service"type="id:XRoadServiceIdentifierType"/>
            <xsd:element name="userId"type="xsd:string"/>
            <xsd:element name="id"type="xsd:string"/>
            <xsd:element name="protocolVersion"type="xsd:string"/>
        </xsd:schema>
                 
        <!-- Schema forrequests (reduced) -->
        <xsd:schema targetNamespace="http://vrk-test.x-road.fi/producer">           
            <xsd:element name="getRandom"nillable="true"/>
            <xsd:element name="getRandomResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="response">
                            <xsd:complexType>
                                <xsd:sequence>
                                    <xsd:element name="data"type="xsd:string">
                                        <xsd:annotation>
                                            <xsd:documentation>
                                                Service response
                                            </xsd:documentation>
                                        </xsd:annotation>
                                    </xsd:element>
                                </xsd:sequence>
                            </xsd:complexType>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>   
            <xsd:element name="helloService">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="request">
                            <xsd:complexType>
                                <xsd:sequence>
                                    <xsd:element name="name"type="xsd:string">
                                        <xsd:annotation>
                                            <xsd:documentation>
                                                Name
                                            </xsd:documentation>
                                        </xsd:annotation>
                                    </xsd:element>
                                </xsd:sequence>
                            </xsd:complexType>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="helloServiceResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="request">
                            <xsd:complexType>
                                <xsd:sequence>
                                    <xsd:element name="name"nillable="true"type="xsd:string"/>
                                </xsd:sequence>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="response">
                            <xsd:complexType>
                                <xsd:sequence>
                                    <xsd:element name="message"type="xsd:string">
                                        <xsd:annotation>
                                            <xsd:documentation>
                                                Service response
                                            </xsd:documentation>
                                        </xsd:annotation>
                                    </xsd:element>
                                </xsd:sequence>
                            </xsd:complexType>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>  
        </xsd:schema>
    </wsdl:types>
    <wsdl:message name="requestheader">
        <wsdl:part name="client"element="xrd:client"/>
        <wsdl:part name="service"element="xrd:service"/>
        <wsdl:part name="userId"element="xrd:userId"/>
        <wsdl:part name="id"element="xrd:id"/>
        <wsdl:part name="protocolVersion"element="xrd:protocolVersion"/>
    </wsdl:message>
    <wsdl:message name="getRandom">
        <wsdl:part name="body"element="tns:getRandom"/>
    </wsdl:message>
    <wsdl:message name="getRandomResponse">
        <wsdl:part name="body"element="tns:getRandomResponse"/>
    </wsdl:message>
    <wsdl:message name="helloService">
        <wsdl:part name="body"element="tns:helloService"/>
    </wsdl:message>
    <wsdl:message name="helloServiceResponse">
        <wsdl:part name="body"element="tns:helloServiceResponse"/>
    </wsdl:message>
    <wsdl:portType name="testServicePortType">
        <wsdl:operation name="getRandom">
            <wsdl:input message="tns:getRandom"/>
            <wsdl:output message="tns:getRandomResponse"/>
        </wsdl:operation>
        <wsdl:operation name="helloService">
            <wsdl:input message="tns:helloService"/>
            <wsdl:output message="tns:helloServiceResponse"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="testServiceBinding"type="tns:testServicePortType">
        <soap:binding style="document"transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="getRandom">
            <soap:operation soapAction=""style="document"/>
            <id:version>v1</id:version>
            <wsdl:input>
                <soap:body parts="body"use="literal"/>
                <soap:header message="tns:requestheader"part="client"use="literal"/>
                <soap:header message="tns:requestheader"part="service"use="literal"/>
                <soap:header message="tns:requestheader"part="userId"use="literal"/>
                <soap:header message="tns:requestheader"part="id"use="literal"/>
                <soap:header message="tns:requestheader"part="protocolVersion"use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body parts="body"use="literal"/>
                <soap:header message="tns:requestheader"part="client"use="literal"/>
                <soap:header message="tns:requestheader"part="service"use="literal"/>
                <soap:header message="tns:requestheader"part="userId"use="literal"/>
                <soap:header message="tns:requestheader"part="id"use="literal"/>
                <soap:header message="tns:requestheader"part="protocolVersion"use="literal"/>
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="helloService">
            <soap:operation soapAction=""style="document"/>
            <id:version>v1</id:version>
            <wsdl:input>
                <soap:body parts="body"use="literal"/>
                <soap:header message="tns:requestheader"part="client"use="literal"/>
                <soap:header message="tns:requestheader"part="service"use="literal"/>
                <soap:header message="tns:requestheader"part="userId"use="literal"/>
                <soap:header message="tns:requestheader"part="id"use="literal"/>
                <soap:header message="tns:requestheader"part="protocolVersion"use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body parts="body"use="literal"/>
                <soap:header message="tns:requestheader"part="client"use="literal"/>
                <soap:header message="tns:requestheader"part="service"use="literal"/>
                <soap:header message="tns:requestheader"part="userId"use="literal"/>
                <soap:header message="tns:requestheader"part="id"use="literal"/>
                <soap:header message="tns:requestheader"part="protocolVersion"use="literal"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="testService">
        <wsdl:port binding="tns:testServiceBinding"name="testServicePort">
            <soap:address location="{SERVICE_ENDPOINT}"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

Dokumentin tiedot

Versionro Mitä tehty Pvm/henkilö
 1.0 Dokumentti julkaistu eSuomessa. 06.07.16 / HH
 1.1 Linkit korjattu. 02.08.17 / HH
 1.2 getwsdl-metapalvelun kuvaus päivitetty. 08.03.18 / HH

Yksilöintitunnus: 12345