<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Larsenv</id>
	<title>3dbrew - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Larsenv"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/Larsenv"/>
	<updated>2026-04-16T04:50:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=EShop&amp;diff=17469</id>
		<title>EShop</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=EShop&amp;diff=17469"/>
		<updated>2016-06-04T20:17:41Z</updated>

		<summary type="html">&lt;p&gt;Larsenv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:eShop}}&lt;br /&gt;
The Nintendo 3DS eShop was added in the June 2011 update for JP/EUR/USA.&lt;br /&gt;
&lt;br /&gt;
From here, you can download Virtual Console games, 3D Classics, DSiware software, view screenshots, and 3D trailers for upcoming 3DS titles.&lt;br /&gt;
&lt;br /&gt;
While eShop is loading, eShop will use command [[NIMS:CheckSysupdateAvailableSOAP]]. If a system update is available where title installation for system titles still needs finalized (or when the updated titles were not downloaded at all), eShop will then display the &amp;quot;system update is available&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
The eShop application uses command [[AMNet:FinishInstallToMedia]] to finalize the SD title install (if the whole title is downloaded while eShop is still running), however, before using that command the eShop application also uses [[AMNet:FinishInstallToMedia]] to finalize installing all system titles (from system updates).&lt;br /&gt;
&lt;br /&gt;
== eShop QR Codes ==&lt;br /&gt;
eShop QR Codes can be scanned with the camera, allowing one to quickly navigate to the desired eShop title with just two clicks. The QR Codes themselves is a simple text/url QR, started with &amp;quot;ESHOP://&amp;quot; string followed by a decimal eShop content link id(same IDs used internally by eShop for all content) and then some special data, delimited by a dot symbol, which can be ommited.&lt;br /&gt;
&lt;br /&gt;
In order for the QR-code string data to be valid for eShop, it must begin with &amp;quot;ESHOP://5&amp;quot;, with the first ID being all decimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! QR Code source&lt;br /&gt;
! Region&lt;br /&gt;
! Title&lt;br /&gt;
! Serial&lt;br /&gt;
! Title ID&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000000201.PEAALL000000 || EUR || nintendogs + cats: Golden Retriever &amp;amp; New Friends || ADAP || 0004000000030C00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000007463.J00101Z00061 || JPN || Pushmo || JCAJ || 0004000000068D00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000007870.PEAALL000000 || EUR || Crush 3D || ACRP || 0004000000040400&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008009.PEAALL000000 || EUR || Resident Evil Revelations || ABRE || 000400000005EE00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008123.J00101Z00095 || JPN || Rhythm Kaitou R: Koutei Napoleon no Isan || ARTJ || 0004000000078100&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008404.PEAALL000000 || EUR || Mario &amp;amp; Sonic at the London 2012 Olympic Games || ACMP || 0004000000054900&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008447.J00101Z00094 || JPN || Biohazard Revelations || ABRJ || 0004000000053B00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008449.J00101Z00082 || JPN || Itsu no Ma ni Koukan Nikki || JFRJ || 0004000000051600&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008561 || USA || Swapnote || JFRE || 0004000000051700&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008647.J00101Z00096 || JPN || Metal Gear Solid Snake Eater 3D || AMGJ || 000400000007A000&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008648.J00101Z00097 || JPN || Theatrythm Final Fantasy || ATHJ || 0004000000078200&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008782.PEAALL000000 || EUR || Metal Gear Solid Snake Eater 3D || AMGE || 0004000000082400&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008842.PEAALL000000 || EUR || Rhythm Thief And The Emperor&#039;s Treasure || ARTP || 000400000006DA00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009084.J00101Z00121 || JPN || Hatsune Miku And Future Stars: Project Mirai || AM9J || 0004000000048000&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009102.J00101Z00106 || JPN || Denpa Ningen no RPG || JD8J || 0004000000077E00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009161.J00101Z00118 || JPN || The Rolling Western || JAMJ || 0004000000059B00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009261 || USA || Dillon&#039;s Rolling Western || JAME || 000400000007C400&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009401.J00101Z00120 || JPN || Kingdom Hearts 3D Nintendo Direct 2012.2.22 Video || JZ8J || 0004000000092E00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009403.J00101Z00119 || JPN || Dragon Quest Monsters: Terry no Wonderland 3D Nintendo Direct 2012.2.22 Video || JZ7J || 0004000000092F00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009575.PEAALL000000 || EUR || Kid Icarus: Of Myths And Monsters (Virtual Console) || RBLP || 0004000000069500&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009846 || USA || Ketzal&#039;s Corridors || JELE || 0004000000083800&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000010434 || USA || New Super Mario Bros. 2 Trailer&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000014732.J00101Z00407 || JPN || Chain Blaster || JCBJ || 00040000000DCC00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* New QR Code for Japanese &amp;quot;Photos with Super Mario&amp;quot; has a different code string: ESHOP://50010000013120.J00108Z00001.CD588EAE95A3A68D15C647DA2AC0945FD88F70AB8A31149E51C4B05FB927B0B8&lt;br /&gt;
&lt;br /&gt;
* There is a link in the Japanese eShop &amp;lt;nowiki&amp;gt;[http://www.nintendo.co.jp/3ds/eshop/qrCode.html?####]&amp;lt;/nowiki&amp;gt; where you can replace the #### with the Japanese eShop title&#039;s serial and you will get it&#039;s QR code. (i.e. http://www.nintendo.co.jp/3ds/eshop/qrCode.html?JCAJ will get you the pushmo QR code)&lt;br /&gt;
&lt;br /&gt;
* You could use Google&#039;s Chart API to create a QR code from the codes above: https://chart.googleapis.com/chart?chs=150x150&amp;amp;cht=qr&amp;amp;chl=ESHOP (replace the ESHOP text with the ESHOP:// link from one of the above)&lt;br /&gt;
&lt;br /&gt;
== NS eShop application parameters ==&lt;br /&gt;
This section describes the 0x1C-byte structure stored at the application parameters from [[APT:StartApplication]], under the 0x300-byte buffer listed there.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, usually 0x3?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, usually 0x0?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64 binary eShop content ID, same ID from the first string in eShop QR-codes except in binary form.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x10&lt;br /&gt;
| This is the last string from the QR-code(if any), no NUL-termination.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ExtData ==&lt;br /&gt;
The ExtData [[Extdata#Filesystem|File System]] for eShop is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 │   └── TIGER100.tmp&lt;br /&gt;
 └── user&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Firmware Introduced&lt;br /&gt;
!  Plain text&lt;br /&gt;
|-&lt;br /&gt;
|  icon&lt;br /&gt;
|  Duplicate from application ExeFS. Always image 00000002&lt;br /&gt;
|  0x36C0 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/eShopExtdata/icon Download_EUR]&lt;br /&gt;
|-&lt;br /&gt;
|  TIGER100.tmp&lt;br /&gt;
|  Always image 00000003.&lt;br /&gt;
|  0xCE47 bytes (varies?)&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Music ==&lt;br /&gt;
The eShop pulls its music from a static, region-specific link in a format similar to the following: &lt;br /&gt;
&lt;br /&gt;
https:// a248.e.akamai.net/f/248/103046/10m/npdl.c.app.nintendowifi.net/p01/nsa/CtfKXACbUPl8s7lk/BGM1/US_BGM1 ,&lt;br /&gt;
where region is one of the primary system regions (JP, US, EU, KR, etc.) Support also exists for &#039;BGM2&#039;, but this seems to be unused.&lt;br /&gt;
The music is held in a [[SpotPass|BOSS]] container. &lt;br /&gt;
&lt;br /&gt;
The format consists of a brief XML header describing the audio (including the date it was set as the main eShop theme, loop times, size, etc) followed by a raw AAC stream. Tools such as FFmpeg can handle rebuilding this stream with ADTS headers for proper time info and such.&lt;br /&gt;
&lt;br /&gt;
The [[Home_Menu|Home Menu]] uses nearly the same format for the Theme Shop&#039;s background music.&lt;br /&gt;
&lt;br /&gt;
== URLs ==&lt;br /&gt;
&lt;br /&gt;
eShop uses the following domains over HTTPS:&lt;br /&gt;
&lt;br /&gt;
* cp3s-auth.c.shop.nintendowifi.net&lt;br /&gt;
* a248.e.akamai.net&lt;br /&gt;
* ninja.ctr.shop.nintendo.net&lt;br /&gt;
* samurai.ctr.shop.nintendo.net&lt;br /&gt;
* ccif.ctr.shop.nintendo.net&lt;br /&gt;
* eou.c.shop.nintendowifi.net&lt;br /&gt;
&lt;br /&gt;
These domains are used by [[NIM_Services|NIM]]:&lt;br /&gt;
&lt;br /&gt;
* nus.c.shop.nintendowifi.net&lt;br /&gt;
* ecs.c.shop.nintendowifi.net&lt;br /&gt;
* cas.c.shop.nintendowifi.net&lt;br /&gt;
&lt;br /&gt;
ninja.ctr.shop.nintendo.net and samurai.ctr.shop.nintendo.net contain the bulk of the eShop information.&lt;br /&gt;
&lt;br /&gt;
Requests with the following parameters will always return XML unless the header &amp;quot;Accept: application/json&amp;quot; is used, in which case JSON will be returned.&lt;br /&gt;
&lt;br /&gt;
=== Common Parameters to ninja and samurai ===&lt;br /&gt;
&lt;br /&gt;
For every request to the ninja and samurai servers, three parameters are always sent, though are not necessarily required:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Required&lt;br /&gt;
!  Description&lt;br /&gt;
!  Type&lt;br /&gt;
!  Normal value&lt;br /&gt;
|-&lt;br /&gt;
|  shop_id&lt;br /&gt;
|  depends on the URL, usually no&lt;br /&gt;
|  Describes which eShop instance should be used. 1 indicates the 3DS eShop, 2 indicates the Wii U eShop. 3 yields the same results as 2 but uses the img-eshop image server. 4 yields similar results as 3 but includes VC titles and updates, lacks image links for /titles and lacks release dates, prices and whether eShop and web sales are possible. For 4, links are given in both MP4 and Moflex formats for movies. Values greater than 4 or less than 1 are invalid. Defaults to 2 if not given.&lt;br /&gt;
|  unsigned integer&lt;br /&gt;
|  1&lt;br /&gt;
|-&lt;br /&gt;
|  lang&lt;br /&gt;
|  no&lt;br /&gt;
|  Describes the language. Seems to be an ISO 639-1 code in lower case. Every eShop region has a default language that is used if this parameter is not given. Some regions have multiple languages, such as CA (en and fr).&lt;br /&gt;
|  string (two characters)&lt;br /&gt;
|  depends on region and eShop settings; for US: en&lt;br /&gt;
|-&lt;br /&gt;
|  _type&lt;br /&gt;
|  no&lt;br /&gt;
|  Describes whether the client wants to receive JSON or XML. This parameter seems actually unused and the servers always return XML.&lt;br /&gt;
|  string&lt;br /&gt;
|  json&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== samurai ===&lt;br /&gt;
&lt;br /&gt;
samurai.ctr.shop.nintendo.net (samurai) provides metadata about titles. The samurai server provides the backend for the eShop title search.&lt;br /&gt;
&lt;br /&gt;
Common parameters described above can always be sent.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Path&lt;br /&gt;
!  Description&lt;br /&gt;
!  Parameters&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/titles&lt;br /&gt;
|  Fetches the title list, containing the content id (not the 3DS title id), the product code and the localized title name&lt;br /&gt;
|  All of these are optional.&lt;br /&gt;
* genre[]: genre ID (unsigned int)&lt;br /&gt;
* publisher[]: publisher ID (unsigned int)&lt;br /&gt;
* price_min: minimum price in region currency (signed int)&lt;br /&gt;
* price_max: maximum price in region currency (signed int)&lt;br /&gt;
* video_format: &amp;quot;moflex&amp;quot;&lt;br /&gt;
* freeword: keyword(s?) to look for (string)&lt;br /&gt;
* limit: maximum results&lt;br /&gt;
* offset: results to skip&lt;br /&gt;
* sort: one of &amp;quot;new&amp;quot;, &amp;quot;popular&amp;quot; or &amp;quot;score&amp;quot;&lt;br /&gt;
* release_date_before: date/time title must have been released before (UNIX timestamp prefixed by +)&lt;br /&gt;
* release_date_after: date/time title must have been released after (UNIX timestamp prefixed by -)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/news&lt;br /&gt;
|  eShop news section&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/telops&lt;br /&gt;
|  Scrolling news on the top screen&lt;br /&gt;
|  shop_id is required&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/directory/&#039;&#039;&#039;(long long unsigned int)&#039;&#039;&#039; and /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/directory/~&#039;&#039;&#039;(string)&#039;&#039;&#039;&lt;br /&gt;
|  Collections, like sales&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/title/&#039;&#039;&#039;content id&#039;&#039;&#039;&lt;br /&gt;
|  Returns information about the title, more verbose than /titles.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/demo/&#039;&#039;&#039;content id&#039;&#039;&#039;&lt;br /&gt;
|  Returns information about a demo. Content ID is available in the main game&#039;s /title entry.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/contents&lt;br /&gt;
|  Seems identical to /titles.&lt;br /&gt;
|  see /titles&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/genres&lt;br /&gt;
|  Returns a list of human-readable genre names and their corresponding genre id.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/publishers&lt;br /&gt;
|  Returns a list of human-readable publisher names and their corresponding publisher id.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/platforms&lt;br /&gt;
|  Returns a list of human-readable platform names and their corresponding platform id.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/title/&#039;&#039;&#039;content id&#039;&#039;&#039;/aocs&lt;br /&gt;
|  Returns a list of add-on contents/downloadable content and prices in eShop region currency.&lt;br /&gt;
|  (none)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ninja ===&lt;br /&gt;
&lt;br /&gt;
ninja.ctr.shop.nintendo.net (ninja) contains the seeds for the new 9.6 crypto, pricing information and handles actions that require authentication, such as purchases. Authentication information seems to be obtained from the [[ACT_Services|act:u sysmodule]] and works through OAuth2.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Path&lt;br /&gt;
!  Description&lt;br /&gt;
!  Parameters&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/title/&#039;&#039;&#039;content id&#039;&#039;&#039;/ec_info&lt;br /&gt;
|  Contains information about the title. Such as title id, content size, and if available, the 9.6 crypto seed&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/titles/id_pair&lt;br /&gt;
|  Provides the content id for the given title id, or vice versa.&lt;br /&gt;
|  title_id[] or ns_uid[] is required.&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/tax_locations&lt;br /&gt;
|  Provides the tax location ID&lt;br /&gt;
|  postal_code is required.&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/service_hosts&lt;br /&gt;
|  Provides CCIF and Samurai servers&lt;br /&gt;
|  country and shop_id is required.&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/country/&#039;&#039;&#039;region&#039;&#039;&#039;&lt;br /&gt;
|  Various eshop related information for a given region&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/country/&#039;&#039;&#039;region&#039;&#039;&#039;/replenish_amounts&lt;br /&gt;
|  Provides the amounts of money you can replenish to your account.&lt;br /&gt;
|  (none)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trusted Root CAs ===&lt;br /&gt;
The eShop application itself uses a [[HTTP_Services|RootCertChain]] for all HTTPS requests, all of the trusted root CAs are the following [[SSLC:RootCertChainAddDefaultCert|default]] ones:&lt;br /&gt;
* CertID 0x3&lt;br /&gt;
* CertID 0x6&lt;br /&gt;
* CertID 0x7&lt;br /&gt;
* CertID 0x8&lt;br /&gt;
* CertID 0x9&lt;br /&gt;
* CertID 0xA&lt;br /&gt;
&lt;br /&gt;
=== Server changes following the November 2, 2015, maintenance ===&lt;br /&gt;
Pre-v10.0 eShop used an URL like this: &amp;quot;%s/samurai/ws/%s/title/%llu/other_purchased?shop_id=1&amp;amp;lang=%s&amp;amp;_type=json&amp;quot;. That URL was removed with v10.0. That URL was requested when trying to load eShop app-pages. Following the maintenance mentioned above, this page was removed from the server, which broke pre-v10.0 eShop app whenever it tried to access that page.&lt;br /&gt;
&lt;br /&gt;
URL changes between [[9.7.0-25]] and [[10.0.0-27]] are (green = add, red = remove):&lt;br /&gt;
&lt;br /&gt;
%s/ninja/ws/%s/titles/online_prices?title%%5B%%5D=%s&amp;amp;lang=%s&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;&amp;amp;include_coupon=true&amp;lt;/span&amp;gt;&amp;amp;shop_id=1&amp;amp;_type=json&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/%s/coupon/!check?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/owned_coupons?ns_uid=%llu&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/owned_coupons?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/parental_control/!put?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/%s/title/%llu/prepurchase_info?%s=%s&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/samurai/ws/%s/coupon/%llu/titles?lang=%s&amp;amp;limit=%u&amp;amp;offset=%u&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/auto_billing/plans?limit=%u&amp;amp;offset=%u&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/%s/titles/online_prices?title%%5B%%5D=%s&amp;amp;lang=%s&amp;amp;include_coupon=true&amp;amp;coupon_id=%llu&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/auto_billing/%014llu/!cancel?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;%s/samurai/ws/%s/title/%llu/other_purchased?shop_id=1&amp;amp;lang=%s&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;%s/samurai/movie/%s/%s/%014llu/moflex&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==New3DS==&lt;br /&gt;
CheckNew3DS is called in two functions. This is only used for disabling UI button(s) for downloading New3DS titles when running on Old3DS. For example, on a New3DS patching a CheckNew3DS func-call with &amp;lt;retval=0&amp;gt;, results in the download button on the app page being grayed-out for a New3DS-only title.&lt;br /&gt;
&lt;br /&gt;
Attempting to download a New3DS-only title with an Old3DS eShop account(even with a New3DS using an Old3DS account), results in the ninja server(specifically the &amp;quot;prepurchase_info&amp;quot; page) returning an error. HTTP 400 is returned with the following json reply: &lt;br /&gt;
 000000: 7b 22 65 72 72 6f 72 22 3a 7b 22 63 6f 64 65 22  {&amp;quot;error&amp;quot;:{&amp;quot;code&amp;quot;&lt;br /&gt;
 000010: 3a 22 33 31 35 36 22 2c 22 6d 65 73 73 61 67 65  :&amp;quot;3156&amp;quot;,&amp;quot;message&lt;br /&gt;
 000020: 22 3a 22 54 68 69 73 20 70 72 6f 64 75 63 74 20  &amp;quot;:&amp;quot;This product &lt;br /&gt;
 000030: 63 61 6e 6e 6f 74 20 62 65 20 70 75 72 63 68 61  cannot be purcha&lt;br /&gt;
 000040: 73 65 64 5c 6e 6f 72 20 72 65 64 65 65 6d 65 64  sed\nor redeemed&lt;br /&gt;
 000050: 20 66 6f 72 20 75 73 65 20 6f 6e 20 74 68 69 73   for use on this&lt;br /&gt;
 000060: 20 73 79 73 74 65 6d 2e 5c 6e 5c 6e 49 66 20 74   system.\n\nIf t&lt;br /&gt;
 000070: 68 65 20 70 72 6f 62 6c 65 6d 20 70 65 72 73 69  he problem persi&lt;br /&gt;
 000080: 73 74 73 2c 20 70 6c 65 61 73 65 5c 6e 6d 61 6b  sts, please\nmak&lt;br /&gt;
 000090: 65 20 6e 6f 74 65 20 6f 66 20 74 68 65 20 65 72  e note of the er&lt;br /&gt;
 0000a0: 72 6f 72 20 63 6f 64 65 20 61 6e 64 5c 6e 76 69  ror code and\nvi&lt;br /&gt;
 0000b0: 73 69 74 20 73 75 70 70 6f 72 74 2e 6e 69 6e 74  sit support.nint&lt;br /&gt;
 0000c0: 65 6e 64 6f 2e 63 6f 6d 2e 22 7d 7d              endo.com.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==TitleID checks==&lt;br /&gt;
There&#039;s titleID checks in the system eShop application code for &amp;quot;Pokémon Omega Ruby&amp;quot;. This appears to be used with UI-related code, unknown why.&lt;/div&gt;</summary>
		<author><name>Larsenv</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=EShop&amp;diff=17468</id>
		<title>EShop</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=EShop&amp;diff=17468"/>
		<updated>2016-06-04T20:14:38Z</updated>

		<summary type="html">&lt;p&gt;Larsenv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:eShop}}&lt;br /&gt;
The Nintendo 3DS eShop was added in the June 2011 update for JP/EUR/USA.&lt;br /&gt;
&lt;br /&gt;
From here, you can download Virtual Console games, 3D Classics, DSiware software, view screenshots, and 3D trailers for upcoming 3DS titles.&lt;br /&gt;
&lt;br /&gt;
While eShop is loading, eShop will use command [[NIMS:CheckSysupdateAvailableSOAP]]. If a system update is available where title installation for system titles still needs finalized (or when the updated titles were not downloaded at all), eShop will then display the &amp;quot;system update is available&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
The eShop application uses command [[AMNet:FinishInstallToMedia]] to finalize the SD title install (if the whole title is downloaded while eShop is still running), however, before using that command the eShop application also uses [[AMNet:FinishInstallToMedia]] to finalize installing all system titles (from system updates).&lt;br /&gt;
&lt;br /&gt;
== eShop QR Codes ==&lt;br /&gt;
eShop QR Codes can be scanned with the camera, allowing one to quickly navigate to the desired eShop title with just two clicks. The QR Codes themselves is a simple text/url QR, started with &amp;quot;ESHOP://&amp;quot; string followed by a decimal eShop content link id(same IDs used internally by eShop for all content) and then some special data, delimited by a dot symbol, which can be ommited.&lt;br /&gt;
&lt;br /&gt;
In order for the QR-code string data to be valid for eShop, it must begin with &amp;quot;ESHOP://5&amp;quot;, with the first ID being all decimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! QR Code source&lt;br /&gt;
! Region&lt;br /&gt;
! Title&lt;br /&gt;
! Serial&lt;br /&gt;
! Title ID&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000000201.PEAALL000000 || EUR || nintendogs + cats: Golden Retriever &amp;amp; New Friends || ADAP || 0004000000030C00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000007463.J00101Z00061 || JPN || Pushmo || JCAJ || 0004000000068D00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000007870.PEAALL000000 || EUR || Crush 3D || ACRP || 0004000000040400&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008009.PEAALL000000 || EUR || Resident Evil Revelations || ABRE || 000400000005EE00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008123.J00101Z00095 || JPN || Rhythm Kaitou R: Koutei Napoleon no Isan || ARTJ || 0004000000078100&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008404.PEAALL000000 || EUR || Mario &amp;amp; Sonic at the London 2012 Olympic Games || ACMP || 0004000000054900&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008447.J00101Z00094 || JPN || Biohazard Revelations || ABRJ || 0004000000053B00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008449.J00101Z00082 || JPN || Itsu no Ma ni Koukan Nikki || JFRJ || 0004000000051600&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008561 || USA || Swapnote || JFRE || 0004000000051700&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008647.J00101Z00096 || JPN || Metal Gear Solid Snake Eater 3D || AMGJ || 000400000007A000&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008648.J00101Z00097 || JPN || Theatrythm Final Fantasy || ATHJ || 0004000000078200&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008782.PEAALL000000 || EUR || Metal Gear Solid Snake Eater 3D || AMGE || 0004000000082400&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008842.PEAALL000000 || EUR || Rhythm Thief And The Emperor&#039;s Treasure || ARTP || 000400000006DA00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009084.J00101Z00121 || JPN || Hatsune Miku And Future Stars: Project Mirai || AM9J || 0004000000048000&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009102.J00101Z00106 || JPN || Denpa Ningen no RPG || JD8J || 0004000000077E00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009161.J00101Z00118 || JPN || The Rolling Western || JAMJ || 0004000000059B00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009261 || USA || Dillon&#039;s Rolling Western || JAME || 000400000007C400&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009401.J00101Z00120 || JPN || Kingdom Hearts 3D Nintendo Direct 2012.2.22 Video || JZ8J || 0004000000092E00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009403.J00101Z00119 || JPN || Dragon Quest Monsters: Terry no Wonderland 3D Nintendo Direct 2012.2.22 Video || JZ7J || 0004000000092F00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009575.PEAALL000000 || EUR || Kid Icarus: Of Myths And Monsters (Virtual Console) || RBLP || 0004000000069500&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009846 || USA || Ketzal&#039;s Corridors || JELE || 0004000000083800&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000010434 || USA || New Super Mario Bros. 2 Trailer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* New QR Code for Japanese &amp;quot;Photos with Super Mario&amp;quot; has a different code string: ESHOP://50010000013120.J00108Z00001.CD588EAE95A3A68D15C647DA2AC0945FD88F70AB8A31149E51C4B05FB927B0B8&lt;br /&gt;
&lt;br /&gt;
* There is a link in the Japanese eShop &amp;lt;nowiki&amp;gt;[http://www.nintendo.co.jp/3ds/eshop/qrCode.html?####]&amp;lt;/nowiki&amp;gt; where you can replace the #### with the Japanese eShop title&#039;s serial and you will get it&#039;s QR code. (i.e. http://www.nintendo.co.jp/3ds/eshop/qrCode.html?JCAJ will get you the pushmo QR code)&lt;br /&gt;
&lt;br /&gt;
* You could use Google&#039;s Chart API to create a QR code from the codes above: https://chart.googleapis.com/chart?chs=150x150&amp;amp;cht=qr&amp;amp;chl=ESHOP (replace the ESHOP text with the ESHOP:// link from one of the above)&lt;br /&gt;
&lt;br /&gt;
== NS eShop application parameters ==&lt;br /&gt;
This section describes the 0x1C-byte structure stored at the application parameters from [[APT:StartApplication]], under the 0x300-byte buffer listed there.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, usually 0x3?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, usually 0x0?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64 binary eShop content ID, same ID from the first string in eShop QR-codes except in binary form.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x10&lt;br /&gt;
| This is the last string from the QR-code(if any), no NUL-termination.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ExtData ==&lt;br /&gt;
The ExtData [[Extdata#Filesystem|File System]] for eShop is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 │   └── TIGER100.tmp&lt;br /&gt;
 └── user&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Firmware Introduced&lt;br /&gt;
!  Plain text&lt;br /&gt;
|-&lt;br /&gt;
|  icon&lt;br /&gt;
|  Duplicate from application ExeFS. Always image 00000002&lt;br /&gt;
|  0x36C0 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/eShopExtdata/icon Download_EUR]&lt;br /&gt;
|-&lt;br /&gt;
|  TIGER100.tmp&lt;br /&gt;
|  Always image 00000003.&lt;br /&gt;
|  0xCE47 bytes (varies?)&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Music ==&lt;br /&gt;
The eShop pulls its music from a static, region-specific link in a format similar to the following: &lt;br /&gt;
&lt;br /&gt;
https:// a248.e.akamai.net/f/248/103046/10m/npdl.c.app.nintendowifi.net/p01/nsa/CtfKXACbUPl8s7lk/BGM1/US_BGM1 ,&lt;br /&gt;
where region is one of the primary system regions (JP, US, EU, KR, etc.) Support also exists for &#039;BGM2&#039;, but this seems to be unused.&lt;br /&gt;
The music is held in a [[SpotPass|BOSS]] container. &lt;br /&gt;
&lt;br /&gt;
The format consists of a brief XML header describing the audio (including the date it was set as the main eShop theme, loop times, size, etc) followed by a raw AAC stream. Tools such as FFmpeg can handle rebuilding this stream with ADTS headers for proper time info and such.&lt;br /&gt;
&lt;br /&gt;
The [[Home_Menu|Home Menu]] uses nearly the same format for the Theme Shop&#039;s background music.&lt;br /&gt;
&lt;br /&gt;
== URLs ==&lt;br /&gt;
&lt;br /&gt;
eShop uses the following domains over HTTPS:&lt;br /&gt;
&lt;br /&gt;
* cp3s-auth.c.shop.nintendowifi.net&lt;br /&gt;
* a248.e.akamai.net&lt;br /&gt;
* ninja.ctr.shop.nintendo.net&lt;br /&gt;
* samurai.ctr.shop.nintendo.net&lt;br /&gt;
* ccif.ctr.shop.nintendo.net&lt;br /&gt;
* eou.c.shop.nintendowifi.net&lt;br /&gt;
&lt;br /&gt;
These domains are used by [[NIM_Services|NIM]]:&lt;br /&gt;
&lt;br /&gt;
* nus.c.shop.nintendowifi.net&lt;br /&gt;
* ecs.c.shop.nintendowifi.net&lt;br /&gt;
* cas.c.shop.nintendowifi.net&lt;br /&gt;
&lt;br /&gt;
ninja.ctr.shop.nintendo.net and samurai.ctr.shop.nintendo.net contain the bulk of the eShop information.&lt;br /&gt;
&lt;br /&gt;
Requests with the following parameters will always return XML unless the header &amp;quot;Accept: application/json&amp;quot; is used, in which case JSON will be returned.&lt;br /&gt;
&lt;br /&gt;
=== Common Parameters to ninja and samurai ===&lt;br /&gt;
&lt;br /&gt;
For every request to the ninja and samurai servers, three parameters are always sent, though are not necessarily required:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Required&lt;br /&gt;
!  Description&lt;br /&gt;
!  Type&lt;br /&gt;
!  Normal value&lt;br /&gt;
|-&lt;br /&gt;
|  shop_id&lt;br /&gt;
|  depends on the URL, usually no&lt;br /&gt;
|  Describes which eShop instance should be used. 1 indicates the 3DS eShop, 2 indicates the Wii U eShop. 3 yields the same results as 2 but uses the img-eshop image server. 4 yields similar results as 3 but includes VC titles and updates, lacks image links for /titles and lacks release dates, prices and whether eShop and web sales are possible. For 4, links are given in both MP4 and Moflex formats for movies. Values greater than 4 or less than 1 are invalid. Defaults to 2 if not given.&lt;br /&gt;
|  unsigned integer&lt;br /&gt;
|  1&lt;br /&gt;
|-&lt;br /&gt;
|  lang&lt;br /&gt;
|  no&lt;br /&gt;
|  Describes the language. Seems to be an ISO 639-1 code in lower case. Every eShop region has a default language that is used if this parameter is not given. Some regions have multiple languages, such as CA (en and fr).&lt;br /&gt;
|  string (two characters)&lt;br /&gt;
|  depends on region and eShop settings; for US: en&lt;br /&gt;
|-&lt;br /&gt;
|  _type&lt;br /&gt;
|  no&lt;br /&gt;
|  Describes whether the client wants to receive JSON or XML. This parameter seems actually unused and the servers always return XML.&lt;br /&gt;
|  string&lt;br /&gt;
|  json&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== samurai ===&lt;br /&gt;
&lt;br /&gt;
samurai.ctr.shop.nintendo.net (samurai) provides metadata about titles. The samurai server provides the backend for the eShop title search.&lt;br /&gt;
&lt;br /&gt;
Common parameters described above can always be sent.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Path&lt;br /&gt;
!  Description&lt;br /&gt;
!  Parameters&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/titles&lt;br /&gt;
|  Fetches the title list, containing the content id (not the 3DS title id), the product code and the localized title name&lt;br /&gt;
|  All of these are optional.&lt;br /&gt;
* genre[]: genre ID (unsigned int)&lt;br /&gt;
* publisher[]: publisher ID (unsigned int)&lt;br /&gt;
* price_min: minimum price in region currency (signed int)&lt;br /&gt;
* price_max: maximum price in region currency (signed int)&lt;br /&gt;
* video_format: &amp;quot;moflex&amp;quot;&lt;br /&gt;
* freeword: keyword(s?) to look for (string)&lt;br /&gt;
* limit: maximum results&lt;br /&gt;
* offset: results to skip&lt;br /&gt;
* sort: one of &amp;quot;new&amp;quot;, &amp;quot;popular&amp;quot; or &amp;quot;score&amp;quot;&lt;br /&gt;
* release_date_before: date/time title must have been released before (UNIX timestamp prefixed by +)&lt;br /&gt;
* release_date_after: date/time title must have been released after (UNIX timestamp prefixed by -)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/news&lt;br /&gt;
|  eShop news section&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/telops&lt;br /&gt;
|  Scrolling news on the top screen&lt;br /&gt;
|  shop_id is required&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/directory/&#039;&#039;&#039;(long long unsigned int)&#039;&#039;&#039; and /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/directory/~&#039;&#039;&#039;(string)&#039;&#039;&#039;&lt;br /&gt;
|  Collections, like sales&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/title/&#039;&#039;&#039;content id&#039;&#039;&#039;&lt;br /&gt;
|  Returns information about the title, more verbose than /titles.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/demo/&#039;&#039;&#039;content id&#039;&#039;&#039;&lt;br /&gt;
|  Returns information about a demo. Content ID is available in the main game&#039;s /title entry.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/contents&lt;br /&gt;
|  Seems identical to /titles.&lt;br /&gt;
|  see /titles&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/genres&lt;br /&gt;
|  Returns a list of human-readable genre names and their corresponding genre id.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/publishers&lt;br /&gt;
|  Returns a list of human-readable publisher names and their corresponding publisher id.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/platforms&lt;br /&gt;
|  Returns a list of human-readable platform names and their corresponding platform id.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/title/&#039;&#039;&#039;content id&#039;&#039;&#039;/aocs&lt;br /&gt;
|  Returns a list of add-on contents/downloadable content and prices in eShop region currency.&lt;br /&gt;
|  (none)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ninja ===&lt;br /&gt;
&lt;br /&gt;
ninja.ctr.shop.nintendo.net (ninja) contains the seeds for the new 9.6 crypto, pricing information and handles actions that require authentication, such as purchases. Authentication information seems to be obtained from the [[ACT_Services|act:u sysmodule]] and works through OAuth2.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Path&lt;br /&gt;
!  Description&lt;br /&gt;
!  Parameters&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/title/&#039;&#039;&#039;content id&#039;&#039;&#039;/ec_info&lt;br /&gt;
|  Contains information about the title. Such as title id, content size, and if available, the 9.6 crypto seed&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/titles/id_pair&lt;br /&gt;
|  Provides the content id for the given title id, or vice versa.&lt;br /&gt;
|  title_id[] or ns_uid[] is required.&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/tax_locations&lt;br /&gt;
|  Provides the tax location ID&lt;br /&gt;
|  postal_code is required.&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/service_hosts&lt;br /&gt;
|  Provides CCIF and Samurai servers&lt;br /&gt;
|  country and shop_id is required.&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/country/&#039;&#039;&#039;region&#039;&#039;&#039;&lt;br /&gt;
|  Various eshop related information for a given region&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/country/&#039;&#039;&#039;region&#039;&#039;&#039;/replenish_amounts&lt;br /&gt;
|  Provides the amounts of money you can replenish to your account.&lt;br /&gt;
|  (none)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trusted Root CAs ===&lt;br /&gt;
The eShop application itself uses a [[HTTP_Services|RootCertChain]] for all HTTPS requests, all of the trusted root CAs are the following [[SSLC:RootCertChainAddDefaultCert|default]] ones:&lt;br /&gt;
* CertID 0x3&lt;br /&gt;
* CertID 0x6&lt;br /&gt;
* CertID 0x7&lt;br /&gt;
* CertID 0x8&lt;br /&gt;
* CertID 0x9&lt;br /&gt;
* CertID 0xA&lt;br /&gt;
&lt;br /&gt;
=== Server changes following the November 2, 2015, maintenance ===&lt;br /&gt;
Pre-v10.0 eShop used an URL like this: &amp;quot;%s/samurai/ws/%s/title/%llu/other_purchased?shop_id=1&amp;amp;lang=%s&amp;amp;_type=json&amp;quot;. That URL was removed with v10.0. That URL was requested when trying to load eShop app-pages. Following the maintenance mentioned above, this page was removed from the server, which broke pre-v10.0 eShop app whenever it tried to access that page.&lt;br /&gt;
&lt;br /&gt;
URL changes between [[9.7.0-25]] and [[10.0.0-27]] are (green = add, red = remove):&lt;br /&gt;
&lt;br /&gt;
%s/ninja/ws/%s/titles/online_prices?title%%5B%%5D=%s&amp;amp;lang=%s&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;&amp;amp;include_coupon=true&amp;lt;/span&amp;gt;&amp;amp;shop_id=1&amp;amp;_type=json&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/%s/coupon/!check?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/owned_coupons?ns_uid=%llu&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/owned_coupons?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/parental_control/!put?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/%s/title/%llu/prepurchase_info?%s=%s&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/samurai/ws/%s/coupon/%llu/titles?lang=%s&amp;amp;limit=%u&amp;amp;offset=%u&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/auto_billing/plans?limit=%u&amp;amp;offset=%u&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/%s/titles/online_prices?title%%5B%%5D=%s&amp;amp;lang=%s&amp;amp;include_coupon=true&amp;amp;coupon_id=%llu&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/auto_billing/%014llu/!cancel?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;%s/samurai/ws/%s/title/%llu/other_purchased?shop_id=1&amp;amp;lang=%s&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;%s/samurai/movie/%s/%s/%014llu/moflex&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==New3DS==&lt;br /&gt;
CheckNew3DS is called in two functions. This is only used for disabling UI button(s) for downloading New3DS titles when running on Old3DS. For example, on a New3DS patching a CheckNew3DS func-call with &amp;lt;retval=0&amp;gt;, results in the download button on the app page being grayed-out for a New3DS-only title.&lt;br /&gt;
&lt;br /&gt;
Attempting to download a New3DS-only title with an Old3DS eShop account(even with a New3DS using an Old3DS account), results in the ninja server(specifically the &amp;quot;prepurchase_info&amp;quot; page) returning an error. HTTP 400 is returned with the following json reply: &lt;br /&gt;
 000000: 7b 22 65 72 72 6f 72 22 3a 7b 22 63 6f 64 65 22  {&amp;quot;error&amp;quot;:{&amp;quot;code&amp;quot;&lt;br /&gt;
 000010: 3a 22 33 31 35 36 22 2c 22 6d 65 73 73 61 67 65  :&amp;quot;3156&amp;quot;,&amp;quot;message&lt;br /&gt;
 000020: 22 3a 22 54 68 69 73 20 70 72 6f 64 75 63 74 20  &amp;quot;:&amp;quot;This product &lt;br /&gt;
 000030: 63 61 6e 6e 6f 74 20 62 65 20 70 75 72 63 68 61  cannot be purcha&lt;br /&gt;
 000040: 73 65 64 5c 6e 6f 72 20 72 65 64 65 65 6d 65 64  sed\nor redeemed&lt;br /&gt;
 000050: 20 66 6f 72 20 75 73 65 20 6f 6e 20 74 68 69 73   for use on this&lt;br /&gt;
 000060: 20 73 79 73 74 65 6d 2e 5c 6e 5c 6e 49 66 20 74   system.\n\nIf t&lt;br /&gt;
 000070: 68 65 20 70 72 6f 62 6c 65 6d 20 70 65 72 73 69  he problem persi&lt;br /&gt;
 000080: 73 74 73 2c 20 70 6c 65 61 73 65 5c 6e 6d 61 6b  sts, please\nmak&lt;br /&gt;
 000090: 65 20 6e 6f 74 65 20 6f 66 20 74 68 65 20 65 72  e note of the er&lt;br /&gt;
 0000a0: 72 6f 72 20 63 6f 64 65 20 61 6e 64 5c 6e 76 69  ror code and\nvi&lt;br /&gt;
 0000b0: 73 69 74 20 73 75 70 70 6f 72 74 2e 6e 69 6e 74  sit support.nint&lt;br /&gt;
 0000c0: 65 6e 64 6f 2e 63 6f 6d 2e 22 7d 7d              endo.com.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==TitleID checks==&lt;br /&gt;
There&#039;s titleID checks in the system eShop application code for &amp;quot;Pokémon Omega Ruby&amp;quot;. This appears to be used with UI-related code, unknown why.&lt;/div&gt;</summary>
		<author><name>Larsenv</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=EShop&amp;diff=17467</id>
		<title>EShop</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=EShop&amp;diff=17467"/>
		<updated>2016-06-04T20:09:27Z</updated>

		<summary type="html">&lt;p&gt;Larsenv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:eShop}}&lt;br /&gt;
The Nintendo 3DS eShop was added in the June 2011 update for JP/EUR/USA.&lt;br /&gt;
&lt;br /&gt;
From here, you can download Virtual Console games, 3D Classics, DSiware software, view screenshots, and 3D trailers for upcoming 3DS titles.&lt;br /&gt;
&lt;br /&gt;
While eShop is loading, eShop will use command [[NIMS:CheckSysupdateAvailableSOAP]]. If a system update is available where title installation for system titles still needs finalized (or when the updated titles were not downloaded at all), eShop will then display the &amp;quot;system update is available&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
The eShop application uses command [[AMNet:FinishInstallToMedia]] to finalize the SD title install (if the whole title is downloaded while eShop is still running), however, before using that command the eShop application also uses [[AMNet:FinishInstallToMedia]] to finalize installing all system titles (from system updates).&lt;br /&gt;
&lt;br /&gt;
== eShop QR Codes ==&lt;br /&gt;
eShop QR Codes can be scanned with the camera, allowing one to quickly navigate to the desired eShop title with just two clicks. The QR Codes themselves is a simple text/url QR, started with &amp;quot;ESHOP://&amp;quot; string followed by a decimal eShop content link id(same IDs used internally by eShop for all content) and then some special data, delimited by a dot symbol, which can be ommited.&lt;br /&gt;
&lt;br /&gt;
In order for the QR-code string data to be valid for eShop, it must begin with &amp;quot;ESHOP://5&amp;quot;, with the first ID being all decimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! QR Code source&lt;br /&gt;
! Region&lt;br /&gt;
! Title&lt;br /&gt;
! Serial&lt;br /&gt;
! Title ID&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000000201.PEAALL000000 || EUR || nintendogs + cats: Golden Retriever &amp;amp; New Friends || ADAP || 0004000000030C00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000007870.PEAALL000000 || EUR || Crush 3D || ACRP || 0004000000040400&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008009.PEAALL000000 || EUR || Resident Evil Revelations || ABRE || 000400000005EE00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008123.J00101Z00095 || JPN || Rhythm Kaitou R: Koutei Napoleon no Isan || ARTJ || 0004000000078100&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008404.PEAALL000000 || EUR || Mario &amp;amp; Sonic at the London 2012 Olympic Games || ACMP || 0004000000054900&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008447.J00101Z00094 || JPN || Biohazard Revelations || ABRJ || 0004000000053B00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008449.J00101Z00082 || JPN || Itsu no Ma ni Koukan Nikki || JFRJ || 0004000000051600&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008561 || USA || Swapnote || JFRE || 0004000000051700&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008647.J00101Z00096 || JPN || Metal Gear Solid Snake Eater 3D || AMGJ || 000400000007A000&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008648.J00101Z00097 || JPN || Theatrythm Final Fantasy || ATHJ || 0004000000078200&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008782.PEAALL000000 || EUR || Metal Gear Solid Snake Eater 3D || AMGE || 0004000000082400&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000008842.PEAALL000000 || EUR || Rhythm Thief And The Emperor&#039;s Treasure || ARTP || 000400000006DA00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009084.J00101Z00121 || JPN || Hatsune Miku And Future Stars: Project Mirai || AM9J || 0004000000048000&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009102.J00101Z00106 || JPN || Denpa Ningen no RPG || JD8J || 0004000000077E00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009161.J00101Z00118 || JPN || The Rolling Western || JAMJ || 0004000000059B00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009261 || USA || Dillon&#039;s Rolling Western || JAME || 000400000007C400&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009401.J00101Z00120 || JPN || Kingdom Hearts 3D Nintendo Direct 2012.2.22 Video || JZ8J || 0004000000092E00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009403.J00101Z00119 || JPN || Dragon Quest Monsters: Terry no Wonderland 3D Nintendo Direct 2012.2.22 Video || JZ7J || 0004000000092F00&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009575.PEAALL000000 || EUR || Kid Icarus: Of Myths And Monsters (Virtual Console) || RBLP || 0004000000069500&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000009846 || USA || Ketzal&#039;s Corridors || JELE || 0004000000083800&lt;br /&gt;
|-&lt;br /&gt;
| ESHOP://50010000010434 || USA || New Super Mario Bros. 2 Trailer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* New QR Code for Japanese &amp;quot;Photos with Super Mario&amp;quot; has a different code string: ESHOP://50010000013120.J00108Z00001.CD588EAE95A3A68D15C647DA2AC0945FD88F70AB8A31149E51C4B05FB927B0B8&lt;br /&gt;
&lt;br /&gt;
* There is a link in the Japanese eShop &amp;lt;nowiki&amp;gt;[http://www.nintendo.co.jp/3ds/eshop/qrCode.html?####]&amp;lt;/nowiki&amp;gt; where you can replace the #### with the Japanese eShop title&#039;s serial and you will get it&#039;s QR code. (i.e. http://www.nintendo.co.jp/3ds/eshop/qrCode.html?JCAJ will get you the pushmo QR code)&lt;br /&gt;
&lt;br /&gt;
* You could use Google&#039;s Chart API to create a QR code from the codes above: https://chart.googleapis.com/chart?chs=150x150&amp;amp;cht=qr&amp;amp;chl=ESHOP (replace the ESHOP text with the ESHOP:// link from one of the above)&lt;br /&gt;
&lt;br /&gt;
== NS eShop application parameters ==&lt;br /&gt;
This section describes the 0x1C-byte structure stored at the application parameters from [[APT:StartApplication]], under the 0x300-byte buffer listed there.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, usually 0x3?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, usually 0x0?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64 binary eShop content ID, same ID from the first string in eShop QR-codes except in binary form.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x10&lt;br /&gt;
| This is the last string from the QR-code(if any), no NUL-termination.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ExtData ==&lt;br /&gt;
The ExtData [[Extdata#Filesystem|File System]] for eShop is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 │   └── TIGER100.tmp&lt;br /&gt;
 └── user&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Firmware Introduced&lt;br /&gt;
!  Plain text&lt;br /&gt;
|-&lt;br /&gt;
|  icon&lt;br /&gt;
|  Duplicate from application ExeFS. Always image 00000002&lt;br /&gt;
|  0x36C0 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/eShopExtdata/icon Download_EUR]&lt;br /&gt;
|-&lt;br /&gt;
|  TIGER100.tmp&lt;br /&gt;
|  Always image 00000003.&lt;br /&gt;
|  0xCE47 bytes (varies?)&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Music ==&lt;br /&gt;
The eShop pulls its music from a static, region-specific link in a format similar to the following: &lt;br /&gt;
&lt;br /&gt;
https:// a248.e.akamai.net/f/248/103046/10m/npdl.c.app.nintendowifi.net/p01/nsa/CtfKXACbUPl8s7lk/BGM1/US_BGM1 ,&lt;br /&gt;
where region is one of the primary system regions (JP, US, EU, KR, etc.) Support also exists for &#039;BGM2&#039;, but this seems to be unused.&lt;br /&gt;
The music is held in a [[SpotPass|BOSS]] container. &lt;br /&gt;
&lt;br /&gt;
The format consists of a brief XML header describing the audio (including the date it was set as the main eShop theme, loop times, size, etc) followed by a raw AAC stream. Tools such as FFmpeg can handle rebuilding this stream with ADTS headers for proper time info and such.&lt;br /&gt;
&lt;br /&gt;
The [[Home_Menu|Home Menu]] uses nearly the same format for the Theme Shop&#039;s background music.&lt;br /&gt;
&lt;br /&gt;
== URLs ==&lt;br /&gt;
&lt;br /&gt;
eShop uses the following domains over HTTPS:&lt;br /&gt;
&lt;br /&gt;
* cp3s-auth.c.shop.nintendowifi.net&lt;br /&gt;
* a248.e.akamai.net&lt;br /&gt;
* ninja.ctr.shop.nintendo.net&lt;br /&gt;
* samurai.ctr.shop.nintendo.net&lt;br /&gt;
* ccif.ctr.shop.nintendo.net&lt;br /&gt;
* eou.c.shop.nintendowifi.net&lt;br /&gt;
&lt;br /&gt;
These domains are used by [[NIM_Services|NIM]]:&lt;br /&gt;
&lt;br /&gt;
* nus.c.shop.nintendowifi.net&lt;br /&gt;
* ecs.c.shop.nintendowifi.net&lt;br /&gt;
* cas.c.shop.nintendowifi.net&lt;br /&gt;
&lt;br /&gt;
ninja.ctr.shop.nintendo.net and samurai.ctr.shop.nintendo.net contain the bulk of the eShop information.&lt;br /&gt;
&lt;br /&gt;
Requests with the following parameters will always return XML unless the header &amp;quot;Accept: application/json&amp;quot; is used, in which case JSON will be returned.&lt;br /&gt;
&lt;br /&gt;
=== Common Parameters to ninja and samurai ===&lt;br /&gt;
&lt;br /&gt;
For every request to the ninja and samurai servers, three parameters are always sent, though are not necessarily required:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Required&lt;br /&gt;
!  Description&lt;br /&gt;
!  Type&lt;br /&gt;
!  Normal value&lt;br /&gt;
|-&lt;br /&gt;
|  shop_id&lt;br /&gt;
|  depends on the URL, usually no&lt;br /&gt;
|  Describes which eShop instance should be used. 1 indicates the 3DS eShop, 2 indicates the Wii U eShop. 3 yields the same results as 2 but uses the img-eshop image server. 4 yields similar results as 3 but includes VC titles and updates, lacks image links for /titles and lacks release dates, prices and whether eShop and web sales are possible. For 4, links are given in both MP4 and Moflex formats for movies. Values greater than 4 or less than 1 are invalid. Defaults to 2 if not given.&lt;br /&gt;
|  unsigned integer&lt;br /&gt;
|  1&lt;br /&gt;
|-&lt;br /&gt;
|  lang&lt;br /&gt;
|  no&lt;br /&gt;
|  Describes the language. Seems to be an ISO 639-1 code in lower case. Every eShop region has a default language that is used if this parameter is not given. Some regions have multiple languages, such as CA (en and fr).&lt;br /&gt;
|  string (two characters)&lt;br /&gt;
|  depends on region and eShop settings; for US: en&lt;br /&gt;
|-&lt;br /&gt;
|  _type&lt;br /&gt;
|  no&lt;br /&gt;
|  Describes whether the client wants to receive JSON or XML. This parameter seems actually unused and the servers always return XML.&lt;br /&gt;
|  string&lt;br /&gt;
|  json&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== samurai ===&lt;br /&gt;
&lt;br /&gt;
samurai.ctr.shop.nintendo.net (samurai) provides metadata about titles. The samurai server provides the backend for the eShop title search.&lt;br /&gt;
&lt;br /&gt;
Common parameters described above can always be sent.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Path&lt;br /&gt;
!  Description&lt;br /&gt;
!  Parameters&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/titles&lt;br /&gt;
|  Fetches the title list, containing the content id (not the 3DS title id), the product code and the localized title name&lt;br /&gt;
|  All of these are optional.&lt;br /&gt;
* genre[]: genre ID (unsigned int)&lt;br /&gt;
* publisher[]: publisher ID (unsigned int)&lt;br /&gt;
* price_min: minimum price in region currency (signed int)&lt;br /&gt;
* price_max: maximum price in region currency (signed int)&lt;br /&gt;
* video_format: &amp;quot;moflex&amp;quot;&lt;br /&gt;
* freeword: keyword(s?) to look for (string)&lt;br /&gt;
* limit: maximum results&lt;br /&gt;
* offset: results to skip&lt;br /&gt;
* sort: one of &amp;quot;new&amp;quot;, &amp;quot;popular&amp;quot; or &amp;quot;score&amp;quot;&lt;br /&gt;
* release_date_before: date/time title must have been released before (UNIX timestamp prefixed by +)&lt;br /&gt;
* release_date_after: date/time title must have been released after (UNIX timestamp prefixed by -)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/news&lt;br /&gt;
|  eShop news section&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/telops&lt;br /&gt;
|  Scrolling news on the top screen&lt;br /&gt;
|  shop_id is required&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/directory/&#039;&#039;&#039;(long long unsigned int)&#039;&#039;&#039; and /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/directory/~&#039;&#039;&#039;(string)&#039;&#039;&#039;&lt;br /&gt;
|  Collections, like sales&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/title/&#039;&#039;&#039;content id&#039;&#039;&#039;&lt;br /&gt;
|  Returns information about the title, more verbose than /titles.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/demo/&#039;&#039;&#039;content id&#039;&#039;&#039;&lt;br /&gt;
|  Returns information about a demo. Content ID is available in the main game&#039;s /title entry.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/contents&lt;br /&gt;
|  Seems identical to /titles.&lt;br /&gt;
|  see /titles&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/genres&lt;br /&gt;
|  Returns a list of human-readable genre names and their corresponding genre id.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/publishers&lt;br /&gt;
|  Returns a list of human-readable publisher names and their corresponding publisher id.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/platforms&lt;br /&gt;
|  Returns a list of human-readable platform names and their corresponding platform id.&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /samurai/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/title/&#039;&#039;&#039;content id&#039;&#039;&#039;/aocs&lt;br /&gt;
|  Returns a list of add-on contents/downloadable content and prices in eShop region currency.&lt;br /&gt;
|  (none)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ninja ===&lt;br /&gt;
&lt;br /&gt;
ninja.ctr.shop.nintendo.net (ninja) contains the seeds for the new 9.6 crypto, pricing information and handles actions that require authentication, such as purchases. Authentication information seems to be obtained from the [[ACT_Services|act:u sysmodule]] and works through OAuth2.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Path&lt;br /&gt;
!  Description&lt;br /&gt;
!  Parameters&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/title/&#039;&#039;&#039;content id&#039;&#039;&#039;/ec_info&lt;br /&gt;
|  Contains information about the title. Such as title id, content size, and if available, the 9.6 crypto seed&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/titles/id_pair&lt;br /&gt;
|  Provides the content id for the given title id, or vice versa.&lt;br /&gt;
|  title_id[] or ns_uid[] is required.&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/&#039;&#039;&#039;region&#039;&#039;&#039;/tax_locations&lt;br /&gt;
|  Provides the tax location ID&lt;br /&gt;
|  postal_code is required.&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/service_hosts&lt;br /&gt;
|  Provides CCIF and Samurai servers&lt;br /&gt;
|  country and shop_id is required.&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/country/&#039;&#039;&#039;region&#039;&#039;&#039;&lt;br /&gt;
|  Various eshop related information for a given region&lt;br /&gt;
|  (none)&lt;br /&gt;
|-&lt;br /&gt;
|  /ninja/ws/country/&#039;&#039;&#039;region&#039;&#039;&#039;/replenish_amounts&lt;br /&gt;
|  Provides the amounts of money you can replenish to your account.&lt;br /&gt;
|  (none)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trusted Root CAs ===&lt;br /&gt;
The eShop application itself uses a [[HTTP_Services|RootCertChain]] for all HTTPS requests, all of the trusted root CAs are the following [[SSLC:RootCertChainAddDefaultCert|default]] ones:&lt;br /&gt;
* CertID 0x3&lt;br /&gt;
* CertID 0x6&lt;br /&gt;
* CertID 0x7&lt;br /&gt;
* CertID 0x8&lt;br /&gt;
* CertID 0x9&lt;br /&gt;
* CertID 0xA&lt;br /&gt;
&lt;br /&gt;
=== Server changes following the November 2, 2015, maintenance ===&lt;br /&gt;
Pre-v10.0 eShop used an URL like this: &amp;quot;%s/samurai/ws/%s/title/%llu/other_purchased?shop_id=1&amp;amp;lang=%s&amp;amp;_type=json&amp;quot;. That URL was removed with v10.0. That URL was requested when trying to load eShop app-pages. Following the maintenance mentioned above, this page was removed from the server, which broke pre-v10.0 eShop app whenever it tried to access that page.&lt;br /&gt;
&lt;br /&gt;
URL changes between [[9.7.0-25]] and [[10.0.0-27]] are (green = add, red = remove):&lt;br /&gt;
&lt;br /&gt;
%s/ninja/ws/%s/titles/online_prices?title%%5B%%5D=%s&amp;amp;lang=%s&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;&amp;amp;include_coupon=true&amp;lt;/span&amp;gt;&amp;amp;shop_id=1&amp;amp;_type=json&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/%s/coupon/!check?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/owned_coupons?ns_uid=%llu&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/owned_coupons?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/parental_control/!put?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/%s/title/%llu/prepurchase_info?%s=%s&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/samurai/ws/%s/coupon/%llu/titles?lang=%s&amp;amp;limit=%u&amp;amp;offset=%u&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/auto_billing/plans?limit=%u&amp;amp;offset=%u&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/%s/titles/online_prices?title%%5B%%5D=%s&amp;amp;lang=%s&amp;amp;include_coupon=true&amp;amp;coupon_id=%llu&amp;amp;shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00FF00&amp;quot;&amp;gt;%s/ninja/ws/my/auto_billing/%014llu/!cancel?shop_id=1&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;%s/samurai/ws/%s/title/%llu/other_purchased?shop_id=1&amp;amp;lang=%s&amp;amp;_type=json&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;%s/samurai/movie/%s/%s/%014llu/moflex&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==New3DS==&lt;br /&gt;
CheckNew3DS is called in two functions. This is only used for disabling UI button(s) for downloading New3DS titles when running on Old3DS. For example, on a New3DS patching a CheckNew3DS func-call with &amp;lt;retval=0&amp;gt;, results in the download button on the app page being grayed-out for a New3DS-only title.&lt;br /&gt;
&lt;br /&gt;
Attempting to download a New3DS-only title with an Old3DS eShop account(even with a New3DS using an Old3DS account), results in the ninja server(specifically the &amp;quot;prepurchase_info&amp;quot; page) returning an error. HTTP 400 is returned with the following json reply: &lt;br /&gt;
 000000: 7b 22 65 72 72 6f 72 22 3a 7b 22 63 6f 64 65 22  {&amp;quot;error&amp;quot;:{&amp;quot;code&amp;quot;&lt;br /&gt;
 000010: 3a 22 33 31 35 36 22 2c 22 6d 65 73 73 61 67 65  :&amp;quot;3156&amp;quot;,&amp;quot;message&lt;br /&gt;
 000020: 22 3a 22 54 68 69 73 20 70 72 6f 64 75 63 74 20  &amp;quot;:&amp;quot;This product &lt;br /&gt;
 000030: 63 61 6e 6e 6f 74 20 62 65 20 70 75 72 63 68 61  cannot be purcha&lt;br /&gt;
 000040: 73 65 64 5c 6e 6f 72 20 72 65 64 65 65 6d 65 64  sed\nor redeemed&lt;br /&gt;
 000050: 20 66 6f 72 20 75 73 65 20 6f 6e 20 74 68 69 73   for use on this&lt;br /&gt;
 000060: 20 73 79 73 74 65 6d 2e 5c 6e 5c 6e 49 66 20 74   system.\n\nIf t&lt;br /&gt;
 000070: 68 65 20 70 72 6f 62 6c 65 6d 20 70 65 72 73 69  he problem persi&lt;br /&gt;
 000080: 73 74 73 2c 20 70 6c 65 61 73 65 5c 6e 6d 61 6b  sts, please\nmak&lt;br /&gt;
 000090: 65 20 6e 6f 74 65 20 6f 66 20 74 68 65 20 65 72  e note of the er&lt;br /&gt;
 0000a0: 72 6f 72 20 63 6f 64 65 20 61 6e 64 5c 6e 76 69  ror code and\nvi&lt;br /&gt;
 0000b0: 73 69 74 20 73 75 70 70 6f 72 74 2e 6e 69 6e 74  sit support.nint&lt;br /&gt;
 0000c0: 65 6e 64 6f 2e 63 6f 6d 2e 22 7d 7d              endo.com.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==TitleID checks==&lt;br /&gt;
There&#039;s titleID checks in the system eShop application code for &amp;quot;Pokémon Omega Ruby&amp;quot;. This appears to be used with UI-related code, unknown why.&lt;/div&gt;</summary>
		<author><name>Larsenv</name></author>
	</entry>
</feed>