Line 1: |
Line 1: |
| + | {{DISPLAYTITLE:eShop}} |
| The Nintendo 3DS eShop was added in the June 2011 update for JP/EUR/USA. | | The Nintendo 3DS eShop was added in the June 2011 update for JP/EUR/USA. |
| | | |
Line 20: |
Line 21: |
| ! Title ID | | ! Title ID |
| |- | | |- |
− | | ESHOP://50010000000201.PEAALL000000 || EUR || Nintendogs & Cats Demo || ADA/B/C || 0004000200030c01 | + | | ESHOP://50010000000201.PEAALL000000 || EUR || nintendogs + cats: Golden Retriever & New Friends || ADAP || 0004000000030C00 |
| |- | | |- |
− | | ESHOP://50010000007870.PEAALL000000 || EUR || Crush 3D || A??P || 00040002 | + | | ESHOP://50010000007463.J00101Z00061 || JPN || Pushmo || JCAJ || 0004000000068D00 |
| |- | | |- |
− | | ESHOP://50010000008009.PEAALL000000 || EUR || Resident Evil Revelations Demo || ABRE || 000400020005ee01 | + | | ESHOP://50010000007870.PEAALL000000 || EUR || Crush 3D || ACRP || 0004000000040400 |
| |- | | |- |
− | | ESHOP://50010000008123.J00101Z00095 || JPN || Rhythm Thief And The Emperor's Treasure Demo || ARTJ || 00040002 | + | | ESHOP://50010000008009.PEAALL000000 || EUR || Resident Evil Revelations || ABRE || 000400000005EE00 |
| |- | | |- |
− | | ESHOP://50010000008404.PEAALL000000 || EUR || Mario And Sonic At The London 2012 Olympic Games Demo || ACMP [http://mediacontent.nintendo-europe.com/NOE/images/game_content/ACMP-MarioAndSonicAtTheLondon2012OlympicGames-QRCode-EA_ALL_000_001.bmp] || 00040002 | + | | ESHOP://50010000008123.J00101Z00095 || JPN || Rhythm Kaitou R: Koutei Napoleon no Isan || ARTJ || 0004000000078100 |
| |- | | |- |
− | | ESHOP://50010000008447.J00101Z00094 || JPN || Resident Evil Revelations Demo || ABRJ || 00040002 | + | | ESHOP://50010000008404.PEAALL000000 || EUR || Mario & Sonic at the London 2012 Olympic Games || ACMP || 0004000000054900 |
| |- | | |- |
− | | ESHOP://50010000008449.J00101Z00082 || JPN || Swapnote || JFRJ ||? | + | | ESHOP://50010000008447.J00101Z00094 || JPN || Biohazard Revelations || ABRJ || 0004000000053B00 |
| + | |- |
| + | | ESHOP://50010000008449.J00101Z00082 || JPN || Itsu no Ma ni Koukan Nikki || JFRJ || 0004000000051600 |
| |- | | |- |
| | ESHOP://50010000008561 || USA || Swapnote || JFRE || 0004000000051700 | | | ESHOP://50010000008561 || USA || Swapnote || JFRE || 0004000000051700 |
| |- | | |- |
− | | ESHOP://50010000008647.J00101Z00096 || JPN || Metal Gear Solid Snake Eater 3D Demo || AMGJ || 0004000200048101 | + | | ESHOP://50010000008647.J00101Z00096 || JPN || Metal Gear Solid Snake Eater 3D || AMGJ || 000400000007A000 |
| + | |- |
| + | | ESHOP://50010000008648.J00101Z00097 || JPN || Theatrythm Final Fantasy || ATHJ || 0004000000078200 |
| + | |- |
| + | | ESHOP://50010000008782.PEAALL000000 || EUR || Metal Gear Solid Snake Eater 3D || AMGE || 0004000000082400 |
| |- | | |- |
− | | ESHOP://50010000008648.J00101Z00097 || JPN || Theatrythm Final Fantasy || ATHJ ||? | + | | ESHOP://50010000008842.PEAALL000000 || EUR || Rhythm Thief And The Emperor's Treasure || ARTP || 000400000006DA00 |
| |- | | |- |
− | | ESHOP://50010000008782.PEAALL000000 || EUR || Metal Gear Solid Snake Eater 3D Demo || AMGE || 0004000200082401 | + | | ESHOP://50010000009084.J00101Z00121 || JPN || Hatsune Miku And Future Stars: Project Mirai || AM9J || 0004000000048000 |
| |- | | |- |
− | | ESHOP://50010000008842.PEAALL000000 || EUR || Rhythm Thief And The Emperor's Treasure Demo || ARTP [http://mediacontent.nintendo-europe.com/NOE/images/game_content/ARTP-RhythmThief_TheEmperorsTreasure-QRCode-EA_ALL_000_001.bmp] || 00040002 | + | | ESHOP://50010000009102.J00101Z00106 || JPN || Denpa Ningen no RPG || JD8J || 0004000000077E00 |
| |- | | |- |
− | | ESHOP://50010000009084.J00101Z00121 || JPN || Hatsune Miku And Future Stars: Project Mirai Demo || AM9J || 00040002 | + | | ESHOP://50010000009161.J00101Z00118 || JPN || The Rolling Western || JAMJ || 0004000000059B00 |
| |- | | |- |
− | | ESHOP://50010000009102.J00101Z00106 || JPN || Denpa Ningen RPG || JD8J ||? | + | | ESHOP://50010000009261 || USA || Dillon's Rolling Western || JAME || 000400000007C400 |
| |- | | |- |
− | | ESHOP://50010000009161.J00101Z00118 || JPN || Dillon's Rolling Western || JAMJ || 00040000 | + | | ESHOP://50010000009401.J00101Z00120 || JPN || Kingdom Hearts 3D Nintendo Direct 2012.2.22 Video || JZ8J || 0004000000092E00 |
| |- | | |- |
− | | ESHOP://50010000009261 || USA || Dillon's Rolling Western || JAME? || 00040000 | + | | ESHOP://50010000009403.J00101Z00119 || JPN || Dragon Quest Monsters: Terry no Wonderland 3D Nintendo Direct 2012.2.22 Video || JZ7J || 0004000000092F00 |
| |- | | |- |
− | | ESHOP://50010000009401.J00101Z00120 || JPN || Kingdom Hearts 3D Video Download || JZ8J ||? | + | | ESHOP://50010000009575.PEAALL000000 || EUR || Kid Icarus: Of Myths And Monsters (Virtual Console) || RBLP || 0004000000069500 |
| |- | | |- |
− | | ESHOP://50010000009403.J00101Z00119 || JPN || DQM 3D Video Download || JZ7J ||? | + | | ESHOP://50010000009846 || USA || Ketzal's Corridors || JELE || 0004000000083800 |
| |- | | |- |
− | | ESHOP://50010000009575.PEAALL000000 || EUR || Kid Icarus: Of Myths And Monsters (Virtual Console) ||? ||? | + | | ESHOP://50010000010434 || USA || New Super Mario Bros. 2 Trailer |
| |- | | |- |
− | | ESHOP://50010000009846 || USA || Ketzal's Corridors ||? ||? | + | | ESHOP://50010000014732.J00101Z00407 || JPN || Chain Blaster || JCBJ || 00040000000DCC00 |
| |} | | |} |
| | | |
| * New QR Code for Japanese "Photos with Super Mario" has a different code string: ESHOP://50010000013120.J00108Z00001.CD588EAE95A3A68D15C647DA2AC0945FD88F70AB8A31149E51C4B05FB927B0B8 | | * New QR Code for Japanese "Photos with Super Mario" has a different code string: ESHOP://50010000013120.J00108Z00001.CD588EAE95A3A68D15C647DA2AC0945FD88F70AB8A31149E51C4B05FB927B0B8 |
| | | |
− | * There is a link in the Japanese eShop <nowiki>[http://www.nintendo.co.jp/3ds/eshop/qrCode.html?####]</nowiki> where you can replace the #### with the Japanese eShop title's serial and you will get it's QR code. (i.e. http://www.nintendo.co.jp/3ds/eshop/qrCode.html?jcaj will get you the pushmo QR code) | + | * There is a link in the Japanese eShop <nowiki>[http://www.nintendo.co.jp/3ds/eshop/qrCode.html?####]</nowiki> where you can replace the #### with the Japanese eShop title's serial and you will get it's QR code. (i.e. http://www.nintendo.co.jp/3ds/eshop/qrCode.html?JCAJ will get you the pushmo QR code) |
| | | |
| * You could use Google's Chart API to create a QR code from the codes above: https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=ESHOP (replace the ESHOP text with the ESHOP:// link from one of the above) | | * You could use Google's Chart API to create a QR code from the codes above: https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=ESHOP (replace the ESHOP text with the ESHOP:// link from one of the above) |
Line 126: |
Line 133: |
| The eShop pulls its music from a static, region-specific link in a format similar to the following: | | The eShop pulls its music from a static, region-specific link in a format similar to the following: |
| | | |
− | https:// a248.e.akamai.net/f/248/103046/10m/npdl.c.app.nintendowifi.net/p01/nsa/CtfKXACbUPl8s7lk/BGM1/US_BGM1 , | + | <nowiki>https://a248.e.akamai.net/f/248/103046/10m/npdl.c.app.nintendowifi.net/p01/nsa/CtfKXACbUPl8s7lk/BGM1/<region>_BGM1</nowiki>, |
| where region is one of the primary system regions (JP, US, EU, KR, etc.) Support also exists for 'BGM2', but this seems to be unused. | | where region is one of the primary system regions (JP, US, EU, KR, etc.) Support also exists for 'BGM2', but this seems to be unused. |
| The music is held in a [[SpotPass|BOSS]] container. | | The music is held in a [[SpotPass|BOSS]] container. |
Line 152: |
Line 159: |
| | | |
| ninja.ctr.shop.nintendo.net and samurai.ctr.shop.nintendo.net contain the bulk of the eShop information. | | ninja.ctr.shop.nintendo.net and samurai.ctr.shop.nintendo.net contain the bulk of the eShop information. |
| + | |
| + | Requests with the following parameters will always return XML unless the header "Accept: application/json" is used, in which case JSON will be returned. |
| | | |
| === Common Parameters to ninja and samurai === | | === Common Parameters to ninja and samurai === |
Line 167: |
Line 176: |
| | shop_id | | | shop_id |
| | depends on the URL, usually no | | | depends on the URL, usually no |
− | | Describes which eShop instance should be used. 1 indicates the 3DS eShop, 2 indicates the Wii U eShop. 3 seems to yield the same results as 2. Values greater than 3 or less than 1 are invalid. Defaults to 2 or 3 if not given. | + | | 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. |
| | unsigned integer | | | unsigned integer |
| | 1 | | | 1 |
Line 196: |
Line 205: |
| ! Parameters | | ! Parameters |
| |- | | |- |
− | | /samurai/ws/'''region'''/titles | + | | /samurai/ws/'''region'''/contents |
− | | Fetches the title list, containing the content id (not the 3DS title id), the product code and the localized title name | + | | Fetches the content list, containing basic content information like the content id (not the 3DS title id), the product code and the localized title name |
| | All of these are optional. | | | All of these are optional. |
| * genre[]: genre ID (unsigned int) | | * genre[]: genre ID (unsigned int) |
Line 210: |
Line 219: |
| * release_date_before: date/time title must have been released before (UNIX timestamp prefixed by +) | | * release_date_before: date/time title must have been released before (UNIX timestamp prefixed by +) |
| * release_date_after: date/time title must have been released after (UNIX timestamp prefixed by -) | | * release_date_after: date/time title must have been released after (UNIX timestamp prefixed by -) |
| + | |- |
| + | | /samurai/ws/'''region'''/titles |
| + | | Same as /contents but only shows software titles |
| + | | see /contents |
| + | |- |
| + | | /samurai/ws/'''region'''/title/'''content id''' |
| + | | Returns information about the title, more verbose than /titles. |
| + | | (none) |
| + | |- |
| + | | /samurai/ws/'''region'''/title/'''content id'''/aocs |
| + | | Returns a list of add-on contents/downloadable content and prices in eShop region currency. |
| + | | (none) |
| + | |- |
| + | | /samurai/ws/'''region'''/demo/'''content id''' |
| + | | Returns information about a demo. Content ID is available in the main game's /title entry. |
| + | | (none) |
| + | |- |
| + | | /samurai/ws/'''region'''/movies |
| + | | Same as /contents but only shows movies |
| + | | see /contents |
| + | |- |
| + | | /samurai/ws/'''region'''/movie/'''content id''' |
| + | | Returns information about the movie, more verbose than /movies. |
| + | | (none) |
| |- | | |- |
| | /samurai/ws/'''region'''/news | | | /samurai/ws/'''region'''/news |
Line 216: |
Line 249: |
| |- | | |- |
| | /samurai/ws/'''region'''/telops | | | /samurai/ws/'''region'''/telops |
− | | Some kind of news? | + | | Scrolling news on the top screen |
| | shop_id is required | | | shop_id is required |
| + | |- |
| + | | /samurai/ws/'''region'''/directories |
| + | | Returns a list of directories available on the regional server with the name, image, id used for the directory api point, etc. |
| + | | pattern: Unsure of the purpose, default value is B from what I can tell. |
| |- | | |- |
| | /samurai/ws/'''region'''/directory/'''(long long unsigned int)''' and /samurai/ws/'''region'''/directory/~'''(string)''' | | | /samurai/ws/'''region'''/directory/'''(long long unsigned int)''' and /samurai/ws/'''region'''/directory/~'''(string)''' |
− | | (unknown) | + | | Collections, like sales |
− | | (unknown)
| |
− | |-
| |
− | | /samurai/ws/'''region'''/title/'''content id'''
| |
− | | Returns information about the title, more verbose than /titles.
| |
| | (none) | | | (none) |
− | |-
| |
− | | /samurai/ws/'''region'''/contents
| |
− | | Seems identical to /titles.
| |
− | | see /titles
| |
| |- | | |- |
| | /samurai/ws/'''region'''/genres | | | /samurai/ws/'''region'''/genres |
Line 239: |
Line 268: |
| | (none) | | | (none) |
| |- | | |- |
− | | /samurai/ws/'''region'''/title/'''content id'''/aocs | + | | /samurai/ws/'''region'''/platforms |
− | | Returns a list of add-on contents/downloadable content and prices in eShop region currency. | + | | Returns a list of human-readable platform names and their corresponding platform id. |
| + | | (none) |
| + | |- |
| + | | /samurai/ws/'''region'''/languages |
| + | | Returns a list of languages available on the regional server with the ISO 639-1 code used for the lang parameter. |
| | (none) | | | (none) |
| |} | | |} |
Line 256: |
Line 289: |
| | /ninja/ws/'''region'''/title/'''content id'''/ec_info | | | /ninja/ws/'''region'''/title/'''content id'''/ec_info |
| | Contains information about the title. Such as title id, content size, and if available, the 9.6 crypto seed | | | Contains information about the title. Such as title id, content size, and if available, the 9.6 crypto seed |
| + | | (none) |
| + | |- |
| + | | /ninja/ws/titles/id_pair |
| + | | Provides the content id for the given title id, or vice versa. |
| + | | title_id[] or ns_uid[] is required. |
| + | |- |
| + | | /ninja/ws/'''region'''/tax_locations |
| + | | Provides the tax location ID |
| + | | postal_code is required. |
| + | |- |
| + | | /ninja/ws/service_hosts |
| + | | Provides CCIF and Samurai servers |
| + | | country and shop_id is required. |
| + | |- |
| + | | /ninja/ws/country/'''region''' |
| + | | Various eshop related information for a given region |
| + | | (none) |
| + | |- |
| + | | /ninja/ws/country/'''region'''/replenish_amounts |
| + | | Provides the amounts of money you can replenish to your account. |
| | (none) | | | (none) |
| |} | | |} |
| + | |
| + | === Trusted Root CAs === |
| + | 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: |
| + | * CertID 0x3 |
| + | * CertID 0x6 |
| + | * CertID 0x7 |
| + | * CertID 0x8 |
| + | * CertID 0x9 |
| + | * CertID 0xA |
| + | |
| + | === Server changes following the November 2, 2015, maintenance === |
| + | Pre-v10.0 eShop used an URL like this: "%s/samurai/ws/%s/title/%llu/other_purchased?shop_id=1&lang=%s&_type=json". 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. |
| + | |
| + | URL changes between [[9.7.0-25]] and [[10.0.0-27]] are (green = add, red = remove): |
| + | |
| + | %s/ninja/ws/%s/titles/online_prices?title%%5B%%5D=%s&lang=%s<span style="color:#00FF00">&include_coupon=true</span>&shop_id=1&_type=json |
| + | |
| + | <span style="color:#00FF00">%s/ninja/ws/%s/coupon/!check?shop_id=1&_type=json</span> |
| + | |
| + | <span style="color:#00FF00">%s/ninja/ws/my/owned_coupons?ns_uid=%llu&shop_id=1&_type=json</span> |
| + | |
| + | <span style="color:#00FF00">%s/ninja/ws/my/owned_coupons?shop_id=1&_type=json</span> |
| + | |
| + | <span style="color:#00FF00">%s/ninja/ws/my/parental_control/!put?shop_id=1&_type=json</span> |
| + | |
| + | <span style="color:#00FF00">%s/ninja/ws/%s/title/%llu/prepurchase_info?%s=%s&shop_id=1&_type=json</span> |
| + | |
| + | <span style="color:#00FF00">%s/samurai/ws/%s/coupon/%llu/titles?lang=%s&limit=%u&offset=%u&shop_id=1&_type=json</span> |
| + | |
| + | <span style="color:#00FF00">%s/ninja/ws/my/auto_billing/plans?limit=%u&offset=%u&shop_id=1&_type=json</span> |
| + | |
| + | <span style="color:#00FF00">%s/ninja/ws/%s/titles/online_prices?title%%5B%%5D=%s&lang=%s&include_coupon=true&coupon_id=%llu&shop_id=1&_type=json</span> |
| + | |
| + | <span style="color:#00FF00">%s/ninja/ws/my/auto_billing/%014llu/!cancel?shop_id=1&_type=json</span> |
| + | |
| + | <span style="color:#FF0000">%s/samurai/ws/%s/title/%llu/other_purchased?shop_id=1&lang=%s&_type=json</span> |
| + | |
| + | <span style="color:#FF0000">%s/samurai/movie/%s/%s/%014llu/moflex</span> |
| + | |
| + | ==New3DS== |
| + | 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 <retval=0>, results in the download button on the app page being grayed-out for a New3DS-only title. |
| + | |
| + | 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 "prepurchase_info" page) returning an error. HTTP 400 is returned with the following json reply: |
| + | 000000: 7b 22 65 72 72 6f 72 22 3a 7b 22 63 6f 64 65 22 {"error":{"code" |
| + | 000010: 3a 22 33 31 35 36 22 2c 22 6d 65 73 73 61 67 65 :"3156","message |
| + | 000020: 22 3a 22 54 68 69 73 20 70 72 6f 64 75 63 74 20 ":"This product |
| + | 000030: 63 61 6e 6e 6f 74 20 62 65 20 70 75 72 63 68 61 cannot be purcha |
| + | 000040: 73 65 64 5c 6e 6f 72 20 72 65 64 65 65 6d 65 64 sed\nor redeemed |
| + | 000050: 20 66 6f 72 20 75 73 65 20 6f 6e 20 74 68 69 73 for use on this |
| + | 000060: 20 73 79 73 74 65 6d 2e 5c 6e 5c 6e 49 66 20 74 system.\n\nIf t |
| + | 000070: 68 65 20 70 72 6f 62 6c 65 6d 20 70 65 72 73 69 he problem persi |
| + | 000080: 73 74 73 2c 20 70 6c 65 61 73 65 5c 6e 6d 61 6b sts, please\nmak |
| + | 000090: 65 20 6e 6f 74 65 20 6f 66 20 74 68 65 20 65 72 e note of the er |
| + | 0000a0: 72 6f 72 20 63 6f 64 65 20 61 6e 64 5c 6e 76 69 ror code and\nvi |
| + | 0000b0: 73 69 74 20 73 75 70 70 6f 72 74 2e 6e 69 6e 74 sit support.nint |
| + | 0000c0: 65 6e 64 6f 2e 63 6f 6d 2e 22 7d 7d endo.com."}} |
| + | |
| + | ==TitleID checks== |
| + | There's titleID checks in the system eShop application code for "Pokémon Omega Ruby". This appears to be used with UI-related code, unknown why. |