The SOAP endpoint for checking if a system update is available is located at /nus/services/NetUpdateSOAP
.
A POST request is sent to the endpoint.
The following headers are sent with the request:
Header | Value |
---|---|
SOAPAction | urn:nus.wsapi.broadon.com/GetSystemUpdate |
User-Agent | wii libnup/1.0 |
Content-Type | text/xml; charset="utf-8" |
The following SOAP envelope is sent in the request body, where DeviceId
and RegionId
contain the device ID and region of the requesting Wii:
<?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>
<GetSystemUpdateRequest xmlns="urn:nus.wsapi.broadon.com">
<Version>1.0</Version>
<MessageId>0</MessageId>
<DeviceId>[Device ID]</DeviceId>
<RegionId>[Region ID]</RegionId>
</GetSystemUpdateRequest>
</soapenv:Body>
</soapenv:Envelope>
Possible regions are:
Region | ID |
---|---|
Japan | JPN |
North America | USA |
Europe | EUR |
South Korea | KOR |
A SOAP envelope in the following format is returned from the server:
<?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>
<GetSystemUpdateResponse xmlns="urn:nus.wsapi.broadon.com">
<Version>1.0</Version>
<DeviceId>[Device ID]</DeviceId>
<MessageId>[Message ID]</MessageId>
<TimeStamp>[Timestamp]</TimeStamp>
<ErrorCode>0</ErrorCode>
<ContentPrefixURL>[CDN URL]</ContentPrefixURL>
<UncachedContentPrefixURL>[Uncached CDN URL]</UncachedContentPrefixURL>
<TitleVersion>
<TitleId>0000000100000001</TitleId>
<Version>4</Version>
<FsSize>0</FsSize>
</TitleVersion>
<!-- other titles... -->
<UploadAuditData>0</UploadAuditData>
</GetSystemUpdateResponse>
</soapenv:Body>
</soapenv:Envelope>
Dolphin does not check or use Version
, DeviceId
, MessageId
, TimeStamp
, UncachedContentPrefixURL
, FsSize
, or UploadAuditData
, so those can just be set to dummy values.
A non-zero ErrorCode
indicates an error occurred with the request.
The list of titles to install vary per region. Example responses for each region are linked below.
Because the regional response content never changes (if the unused fields are set to dummy values), it is probably best to just serve the raw XML files as the response.
There are several CDN URLs available, including:
It is possible to download any title for any platform (for example, a Wii title from the Wii U CDN URL), which suggests that they are all using the same backend internally.
My example responses above use the Wii U CDN URL.