Home docs SOAP Services
Post

SOAP Services

Nintendo provides several eShop related services as a SOAP service:

The common client certificate is required to access these servers.

In addition to standard HTTP headers, a SOAPAction is included in requests and contains the following string: urn:{service_code}.wsapi.broadon.com/{method_name}.

Request

To call a method, a POST request is sent with the following xml body:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:{service_code}="urn:{service_code}.wsapi.broadon.com">
<SOAP-ENV:Body>
<{service_code}:{method_name} xsi:type="{service_code}:{method_name}RequestType">
<{service_code}:Version>{version}</{service_code}:Version>
<{service_code}:MessageId>EC-{device_id}-{random_integer}</{service_code}:MessageId>
{...}
</{service_code}:{method_name}>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Quick explanation of the fields:

  • service_code: ecs, ias, cas or nus
  • version: depends on service (1.0 on nus service, 2.0 on other services)
  • device_id: this is the device id combined with device type: device_id | (device_type << 32). On Wii U the device id is stored in the OTP and can be retrieved with MCP_GetDeviceId.

Additional parameters depend on the service type and method.

Response

If the method call was successful the server returns the following response. The server does not send any insignificant whitespace (I added it for readability).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <{method_name}Response xmlns="urn:{service_code}.wsapi.broadon.com">
            <DeviceId>{device id from request}</DeviceId>
            <MessageId>{message id from request}</MessageId>
            <TimeStamp>{timestamp in milliseconds}</TimeStamp>
            <ErrorCode>0</ErrorCode>
            {...}
        </{method_name}Response>
    </soapenv:Body>
</soapenv:Envelope>

If an error occurs, ErrorCode is set to a non-zero integer and another ErrorMessage tag describes the error message.

Device Type

TypeDevice
1Wii
3DSi
43DS
5Wii U
7vWii

Additional Parameters

All parameters are prefixed with the service code.

NameServicesDescription
DeviceIdcas, ecs, ias, nusDevice id, combined with device type
DeviceTokencas, ecs, iasDevice token
AccountIdcas, ecs, iasAccount id
ApplicationIdcas, ecsApplication id
TINcas, ecsTIN
Regioncas, ecs, iasRegion (e.g. EUR)
RegionIdnusRegion (e.g. EUR)
Countrycas, ecs, iasCountry (e.g. NL)
CountryCodenusCountry (e.g. NL)
VirtualDeviceTypeecs, ias, nusVirtual device type. This overrides the device type in the device id.
Languagecas, ecs, ias, nusLanguage
SerialNoecs, nusSerial number
AgecasAge
SessionHandleecsSession handle
ServiceTicketecsService ticket
ServiceIdecsService id
Contents