Extended protocols
The following games have additional methods in the datastore protocol:
- Animal Crossing: Happy Home Designer
- Miitopia (3DS)
- Pokemon Bank
- Pokemon X / Y
- Real Escape Game
- Splatoon 2
- Super Mario Maker
- Super Mario Maker 2
- Super Mario Odyssey
- Super Smash Bros. 4
- Super Smash Bros. Ultimate
- Xenoblade Chronicles X
This remainder of this page describes the methods that are not specific to any game.
Methods
(1) PrepareGetObjectV1
Request
Type | Name |
---|---|
DataStorePrepareGetParamV1 | param |
Response
Type | Name |
---|---|
DataStoreReqGetInfoV1 | pReqGetInfo |
(2) PreparePostObjectV1
Request
Type | Name |
---|---|
DataStorePreparePostParamV1 | param |
Response
Type | Name |
---|---|
DataStoreReqPostInfoV1 | pReqPostInfo |
(3) CompletePostObjectV1
Request
Type | Name |
---|---|
DataStoreCompletePostParamV1 | param |
Response
This method does not return anything.
(4) DeleteObject
Request
Type | Name |
---|---|
DataStoreDeleteParam | param |
Response
This method does not return anything.
(5) DeleteObjects
Request
Type | Name |
---|---|
List<DataStoreDeleteParam> | params |
Bool | transactional |
Response
(6) ChangeMetaV1
Request
Type | Name |
---|---|
DataStoreChangeMetaParamV1 | param |
Response
This method does not return anything.
(7) ChangeMetasV1
Request
Type | Name |
---|---|
List<Uint64> | dataIds |
List<DataStoreChangeMetaParamV1> | params |
Bool | transactional |
Response
(8) GetMeta
Request
Type | Name |
---|---|
DataStoreGetMetaParam | param |
Response
Type | Name |
---|---|
DataStoreMetaInfo | pMetaInfo |
(9) GetMetas
Request
Type | Name |
---|---|
List<Uint64> | dataIds |
DataStoreGetMetaParam | param |
Response
Type | Name |
---|---|
List<DataStoreMetaInfo> | pMetaInfo |
List<Result> | pResults |
(10) PrepareUpdateObject
Request
Type | Name |
---|---|
DataStorePrepareUpdateParam | param |
Response
Type | Name |
---|---|
DataStoreReqUpdateInfo | pReqUpdateInfo |
(11) CompleteUpdateObject
Request
Type | Name |
---|---|
DataStoreCompleteUpdateParam | param |
Response
This method does not return anything.
(12) SearchObject
Request
Type | Name |
---|---|
DataStoreSearchParam | param |
Response
Type | Name |
---|---|
DataStoreSearchResult | pSearchResult |
(13) GetNotificationUrl
Request
Type | Name |
---|---|
DataStoreGetNotificationUrlParam | param |
Response
Type | Name |
---|---|
DataStoreReqGetNotificationUrlInfo | info |
(14) GetNewArrivedNotificationsV1
Request
Type | Name |
---|---|
DataStoreGetNewArrivedNotificationsParam | param |
Response
Type | Name |
---|---|
List<DataStoreNotificationV1> | pResult |
Bool | pHasNext |
(15) RateObject
Request
Type | Name |
---|---|
DataStoreRatingTarget | target |
DataStoreRateObjectParam | param |
Bool | fetchRatings |
Response
Type | Name |
---|---|
DataStoreRatingInfo | pRating |
(16) GetRating
Request
Type | Name |
---|---|
DataStoreRatingTarget | target |
Uint64 | accessPassword |
Response
Type | Name |
---|---|
DataStoreRatingInfo | pRating |
(17) GetRatings
Request
Type | Name |
---|---|
List<Uint64> | dataIds |
Uint64 | accessPassword |
Response
Type | Name |
---|---|
List<List<DataStoreRatingInfoWithSlot>> | pRatings |
List<Result> | pResults |
(18) ResetRating
Request
Type | Name |
---|---|
DataStoreRatingTarget | target |
Uint64 | updatePassword |
Response
This method does not return anything.
(19) ResetRatings
Request
Type | Name |
---|---|
List<Uint64> | dataIds |
Bool | transactional |
Response
(20) GetSpecificMetaV1
Request
Type | Name |
---|---|
DataStoreGetSpecificMetaParamV1 | param |
Response
Type | Name |
---|---|
List<DataStoreSpecificMetaInfoV1> | pMetaInfos |
(21) PostMetaBinary
Request
Type | Name |
---|---|
DataStorePreparePostParam | param |
Response
Type | Name |
---|---|
Uint64 | dataId |
(22) TouchObject
Request
Type | Name |
---|---|
DataStoreTouchObjectParam | param |
Response
This method does not return anything.
(23) GetRatingWithLog
Request
Type | Name |
---|---|
DataStoreRatingTarget | target |
Uint64 | accessPassword |
Response
Type | Name |
---|---|
DataStoreRatingInfo | pRating |
DataStoreRatingLog | pRatingLog |
(24) PreparePostObject
Request
Type | Name |
---|---|
DataStorePreparePostParam | param |
Response
Type | Name |
---|---|
DataStoreReqPostInfo | pReqPostInfo |
(25) PrepareGetObject
Request
Type | Name |
---|---|
DataStorePrepareGetParam | param |
Response
Type | Name |
---|---|
DataStoreReqGetInfo | pReqGetInfo |
(26) CompletePostObject
Request
Type | Name |
---|---|
DataStoreCompletePostParam | param |
Response
This method does not return anything.
(27) GetNewArrivedNotifications
Request
Type | Name |
---|---|
DataStoreGetNewArrivedNotificationsParam | param |
Response
Type | Name |
---|---|
List<DataStoreNotification> | pResult |
Bool | pHasNext |
(28) GetSpecificMeta
Request
Type | Name |
---|---|
DataStoreGetSpecificMetaParam | param |
Response
Type | Name |
---|---|
List<DataStoreSpecificMetaInfo> | pMetaInfos |
(29) GetPersistenceInfo
Request
Type | Name |
---|---|
PID | ownerId |
Uint16 | persistenceSlotId |
Response
Type | Name |
---|---|
DataStorePersistenceInfo | pPersistenceInfo |
(30) GetPersistenceInfos
Request
Response
Type | Name |
---|---|
List<DataStorePersistenceInfo> | pPersistenceInfo |
List<Result> | pResults |
(31) PerpetuateObject
Request
Type | Name |
---|---|
Uint16 | persistenceSlotId |
Uint64 | dataId |
Bool | deleteLastObject |
Response
This method does not return anything.
(32) UnperpetuateObject
Request
Type | Name |
---|---|
Uint16 | persistenceSlotId |
Bool | deleteLastObject |
Response
This method does not return anything.
(33) PrepareGetObjectOrMetaBinary
Request
Type | Name |
---|---|
DataStorePrepareGetParam | param |
Response
Type | Name |
---|---|
DataStoreReqGetInfo | pReqGetInfo |
DataStoreReqGetAdditionalMeta | pReqGetAdditionalMeta |
(34) GetPasswordInfo
Request
Type | Name |
---|---|
Uint64 | dataId |
Response
Type | Name |
---|---|
DataStorePasswordInfo | pPasswordInfo |
(35) GetPasswordInfos
Request
Type | Name |
---|---|
List<Uint64> | dataIds |
Response
Type | Name |
---|---|
List<DataStorePasswordInfo> | pPasswordInfos |
List<Result> | pResults |
(36) GetMetasMultipleParam
Request
Type | Name |
---|---|
List<DataStoreGetMetaParam> | params |
Response
Type | Name |
---|---|
List<DataStoreMetaInfo> | pMetaInfo |
List<Result> | pResults |
(37) CompletePostObjects
Request
Type | Name |
---|---|
List<Uint64> | dataIds |
Response
This method does not return anything.
(38) ChangeMeta
Request
Type | Name |
---|---|
DataStoreChangeMetaParam | param |
Response
This method does not return anything.
(39) ChangeMetas
Request
Type | Name |
---|---|
List<Uint64> | dataIds |
List<DataStoreChangeMetaParam> | params |
Bool | transactional |
Response
(40) RateObjects
Request
Type | Name |
---|---|
List<DataStoreRatingTarget> | targets |
List<DataStoreRateObjectParam> | params |
Bool | transactional |
Bool | fetchRatings |
Response
Type | Name |
---|---|
List<DataStoreRatingInfo> | pRatings |
List<Result> | pResults |
(41) PostMetaBinaryWithDataId
Request
Type | Name |
---|---|
Uint64 | dataId |
DataStorePreparePostParam | param |
Response
This method does not return anything.
(42) PostMetaBinariesWithDataId
Request
Type | Name |
---|---|
List<Uint64> | dataIds |
List<DataStorePreparePostParam> | params |
Bool | transactional |
Response
(43) RateObjectWithPosting
Request
Type | Name |
---|---|
DataStoreRatingTarget | target |
DataStoreRateObjectParam | rateParam |
DataStorePreparePostParam | postParam |
Bool | fetchRatings |
Response
Type | Name |
---|---|
DataStoreRatingInfo | pRating |
(44) RateObjectsWithPosting
Request
Type | Name |
---|---|
List<DataStoreRatingTarget> | targets |
List<DataStoreRateObjectParam> | rateParams |
List<DataStorePreparePostParam> | postParams |
Bool | transactional |
Bool | fetchRatings |
Response
Type | Name |
---|---|
List<DataStoreRatingInfo> | pRatings |
List<Result> | pResults |
(45) GetObjectInfos
Request
Type | Name |
---|---|
List<Uint64> | dataIds |
Response
Type | Name |
---|---|
List<DataStoreReqGetInfo> | pInfos |
List<Result> | pResults |
(46) SearchObjectLight
Request
Type | Name |
---|---|
DataStoreSearchParam | param |
Response
Type | Name |
---|---|
DataStoreSearchResult | pSearchResult |
Types
DataStorePrepareGetParamV1 (Structure)
Type | Name |
---|---|
Uint32 | dataId |
Uint32 | lockId |
DataStorePrepareGetParam (Structure)
Type | Name |
---|---|
Uint64 | dataId |
Uint32 | lockId |
DataStorePersistenceTarget | persistenceTarget |
Uint64 | accessPassword |
In NEX version 3.5, one more field was added:
DataStoreReqGetInfoV1 (Structure)
Type | Name |
---|---|
String | url |
List<DataStoreKeyValue> | requestHeaders |
Uint32 | size |
Buffer | rootCaCert |
DataStoreReqGetInfo (Structure)
Type | Name |
---|---|
String | url |
List<DataStoreKeyValue> | requestHeaders |
Uint32 | size |
Buffer | rootCaCert |
In NEX version 3.5, one more field was added:
Type | Name |
---|---|
Uint64 | dataId |
DataStoreReqGetAdditionalMeta (Structure)
DataStorePreparePostParamV1 (Structure)
Type | Name |
---|---|
Uint32 | size |
String | name |
Uint16 | dataType |
qBuffer | metaBinary |
DataStorePermission | permission |
DataStorePermission | delPermission |
Uint32 | flag |
Uint16 | period |
Uint32 | referDataId |
List<String> | tags |
List<DataStoreRatingInitParamWithSlot> | ratingInitParams |
DataStorePreparePostParam (Structure)
Type | Name |
---|---|
Uint32 | size |
String | name |
Uint16 | dataType |
qBuffer | metaBinary |
DataStorePermission | permission |
DataStorePermission | delPermission |
Uint32 | flag |
Uint16 | period |
Uint32 | referDataId |
List<String> | tags |
List<DataStoreRatingInitParamWithSlot> | ratingInitParams |
DataStorePersistenceInitParam | persistenceInitParam |
In NEX version 3.5, one more field was added:
DataStoreReqPostInfoV1 (Structure)
Type | Name |
---|---|
Uint32 | dataId |
String | url |
List<DataStoreKeyValue> | requestHeaders |
List<DataStoreKeyValue> | formFields |
Buffer | rootCaCert |
DataStoreReqPostInfo (Structure)
Type | Name |
---|---|
Uint64 | dataId |
String | url |
List<DataStoreKeyValue> | requestHeaders |
List<DataStoreKeyValue> | formFields |
Buffer | rootCaCert |
DataStoreCompletePostParamV1 (Structure)
Type | Name |
---|---|
Uint32 | dataId |
Bool | isSuccess |
DataStoreCompletePostParam (Structure)
Type | Name |
---|---|
Uint64 | dataId |
Bool | isSuccess |
DataStoreDeleteParam (Structure)
Type | Name |
---|---|
Uint64 | dataId |
Uint64 | updatePassword |
DataStoreChangeMetaParamV1 (Structure)
Type | Name |
---|---|
Uint64 | dataId |
Uint32 | modifiesFlag |
String | name |
DataStorePermission | permission |
DataStorePermission | delPermission |
Uint16 | period |
qBuffer | metaBinary |
List<String> | tags |
Uint64 | updatePassword |
DataStoreChangeMetaParam (Structure)
Type | Name |
---|---|
Uint64 | dataId |
Uint32 | modifiesFlag |
String | name |
DataStorePermission | permission |
DataStorePermission | delPermission |
Uint16 | period |
qBuffer | metaBinary |
List<String> | tags |
Uint64 | updatePassword |
Uint32 | referredCnt |
Uint16 | dataType |
Uint8 | status |
DataStoreChangeMetaCompareParam | compareParam |
Revision 1:
Type | Name |
---|---|
DataStorePersistenceTarget | persistenceTarget |
DataStoreGetMetaParam (Structure)
Type | Name |
---|---|
Uint64 | dataId |
DataStorePersistenceTarget | persistenceTarget |
Uint8 | resultOption |
Uint64 | accessPassword |
DataStoreRatingInfo (Structure)
Type | Name |
---|---|
Sint64 | totalValue |
Uint32 | count |
Sint64 | initialValue |
DataStoreRatingInfoWithSlot (Structure)
Type | Name |
---|---|
Sint8 | slot |
DataStoreRatingInfo | rating |
DataStoreMetaInfo (Structure)
Type | Name |
---|---|
Uint64 | dataId |
PID | ownerId |
Uint32 | size |
String | name |
Uint16 | dataType |
qBuffer | metaBinary |
DataStorePermission | permission |
DataStorePermission | delPermission |
DateTime | createdTime |
DateTime | updatedTime |
Uint16 | period |
Uint8 | status |
Uint32 | referredCnt |
Uint32 | referDataId |
Uint32 | flag |
DateTime | referredTime |
DateTime | expireTime |
List<String> | tags |
List<DataStoreRatingInfoWithSlot> | ratings |
DataStorePrepareUpdateParam (Structure)
Up to NEX version 2.x, this structure looks as follows:
Type | Name |
---|---|
Uint32 | dataId |
Uint32 | size |
In NEX version 3.0, the data ID was set to a Uint64 and one more field was added:
Type | Name |
---|---|
Uint64 | dataId |
Uint32 | size |
Uint64 | updatePassword |
In NEX version 3.5, one more field was added:
DataStoreReqUpdateInfo (Structure)
Up to NEX version 2.x, this structure looks as follows:
Type | Name |
---|---|
Uint16 | version |
String | url |
List<DataStoreKeyValue> | requestHeaders |
List<DataStoreKeyValue> | formFields |
Buffer | rootCaCert |
In NEX version 3.0, the version was set to a Uint32:
Type | Name |
---|---|
Uint32 | version |
String | url |
List<DataStoreKeyValue> | requestHeaders |
List<DataStoreKeyValue> | formFields |
Buffer | rootCaCert |
DataStoreCompleteUpdateParam (Structure)
Up to NEX version 2.x, this structure looks as follows:
Type | Name |
---|---|
Uint32 | dataId |
Uint16 | version |
Bool | isSuccess |
In NEX version 3.0, the data ID was set to a Uint64 and the version was set to a Uint32:
Type | Name |
---|---|
Uint64 | dataId |
Uint32 | version |
Bool | isSuccess |
DataStoreSearchParam (Structure)
Type | Name |
---|---|
Uint8 | searchTarget |
List<PID> | ownerIds |
Uint8 | ownerType |
List<PID> | destinationIds |
Uint16 | dataType |
DateTime | createdAfter |
DateTime | createdBefore |
DateTime | updatedAfter |
DateTime | updatedBefore |
Uint32 | referDataId |
List<String> | tags |
Uint8 | resultOrderColumn |
Uint8 | resultOrder |
ResultRange | resultRange |
Uint8 | resultOption |
Uint32 | minimalRatingFrequency |
Revision 1:
Type | Name |
---|---|
Bool | useCache |
Revision 2:
Type | Name |
---|---|
List<Uint16> | dataTypes |
In revision 3, a total count enabled field was added. Note that this field was inserted before the data types field:
Type | Name |
---|---|
Uint8 | searchTarget |
List<PID> | ownerIds |
Uint8 | ownerType |
List<PID> | destinationIds |
Uint16 | dataType |
DateTime | createdAfter |
DateTime | createdBefore |
DateTime | updatedAfter |
DateTime | updatedBefore |
Uint32 | referDataId |
List<String> | tags |
Uint8 | resultOrderColumn |
Uint8 | resultOrder |
ResultRange | resultRange |
Uint8 | resultOption |
Uint32 | minimalRatingFrequency |
Bool | useCache |
Bool | totalCountEnabled |
List<Uint16> | dataTypes |
In NEX version 4.0, the revision number was set back to 0 with no other changes.
DataStoreSearchResult (Structure)
Type | Name |
---|---|
Uint32 | totalCount |
List<DataStoreMetaInfo> | result |
Uint8 | totalCountType |
Total count types:
Type | Description |
---|---|
0 | Total number of results (if all results are returned) |
1 | Total number of results (if not all results are returned) |
3 | Disabled |
DataStoreGetNotificationUrlParam (Structure)
Type | Name |
---|---|
String | previousUrl |
DataStoreReqGetNotificationUrlInfo (Structure)
DataStoreGetNewArrivedNotificationsParam (Structure)
Type | Name |
---|---|
Uint64 | lastNotificationId |
Uint16 | limit |
DataStoreNotificationV1 (Structure)
Type | Name |
---|---|
Uint64 | notificationId |
Uint32 | dataId |
DataStoreNotification (Structure)
Type | Name |
---|---|
Uint64 | notificationId |
Uint64 | dataId |
DataStoreRateObjectParam (Structure)
Type | Name |
---|---|
Sint32 | ratingValue |
Uint64 | accessPassword |
DataStoreRatingTarget (Structure)
Type | Name |
---|---|
Uint64 | dataId |
Sint8 | slot |
DataStoreGetSpecificMetaParamV1 (Structure)
Type | Name |
---|---|
List<Uint32> | dataIds |
DataStoreGetSpecificMetaParam (Structure)
Type | Name |
---|---|
List<Uint64> | dataIds |
DataStoreSpecificMetaInfoV1 (Structure)
Type | Name |
---|---|
Uint32 | dataId |
PID | ownerId |
Uint32 | size |
Uint16 | dataType |
Uint16 | version |
DataStoreSpecificMetaInfo (Structure)
Type | Name |
---|---|
Uint64 | dataId |
PID | ownerId |
Uint32 | size |
Uint16 | dataType |
Uint32 | version |
DataStoreTouchObjectParam (Structure)
Type | Name |
---|---|
Uint64 | dataId |
Uint32 | lockId |
Uint64 | accessPassword |
DataStoreRatingLog (Structure)
DataStorePersistenceInfo (Structure)
Type | Name |
---|---|
PID | ownerId |
Uint16 | persistenceSlotId |
Uint64 | dataId |
DataStorePasswordInfo (Structure)
Type | Name |
---|---|
Uint64 | dataId |
Uint64 | accessPassword |
Uint64 | updatePassword |
DataStorePersistenceTarget (Structure)
Type | Name |
---|---|
PID | ownerId |
Uint16 | persistenceSlotId |
DataStoreKeyValue (Structure)
DataStorePermission (Structure)
Permission types:
Value | Description |
---|---|
0 | Everyone |
1 | Friends |
2 | Recipient IDs |
3 | Owner only |
DataStoreRatingInitParamWithSlot (Structure)
Type | Name |
---|---|
Sint8 | slot |
DataStoreRatingInitParam | param |
DataStorePersistenceInitParam (Structure)
Type | Name |
---|---|
Uint16 | persistenceSlotId |
Bool | deleteLastObject |
DataStoreChangeMetaCompareParam (Structure)
Type | Name |
---|---|
Uint32 | comparisonFlag |
String | name |
DataStorePermission | permission |
DataStorePermission | delPermission |
Uint16 | period |
qBuffer | metaBinary |
List<String> | tags |
Uint32 | referredCnt |
Uint16 | dataType |
Uint8 | status |
DataStoreRatingInitParam (Structure)
Type | Name |
---|---|
Uint8 | flag |
Uint8 | internalFlag |
Uint8 | lockType |
Sint64 | initialValue |
Sint32 | rangeMin |
Sint32 | rangeMax |
Sint8 | periodHour |
Sint16 | periodDuration |
Result options
In DataStore resultOption
is a set of flags which determine what extra data gets returned when requesting an objects metadata. The following flags are used
Flag | Description |
---|---|
0x1 | Populate the objects tags field |
0x2 | Populate the objects ratings field |
0x4 | Populate the objects metaBinary field |
Modifies flag
In DataStore modifiesFlag
is a set of flags which determine what data gets updated when changing an objects metadata. The following flags are used. None of these changes update the objects updatedTime
field besides flag 0x40
, which updates the S3 object itself. updatedTime
likely refers to only the object, then, and not the metadata.
Flag | Description |
---|---|
0x001 | Update objects name field |
0x002 | Update objects access permission field |
0x004 | Update objects delete permission field |
0x008 | Update objects period field |
0x010 | Update objects metaBinary field |
0x020 | Update objects tags field. Replaced, not appended |
0x040 | Refresh objects expire time using the period field. If also using flag 0x8 , this uses the NEW period |
0x080 | Update objects name field |
0x100 | Update objects referredCnt field. Set, not added |
0x200 | Update objects status field. Anything besides 0 seems to result in DataStore::NotFound on future requests |
Period
DataStore objects are really just S3 objects. The period
field of an object is the number of days the object is valid for before it expires and is deleted from S3. Objects can be “refreshed” to update their expire time, which also updates the objects updatedTime
field. Not all games respect this value, however, and will either set their own expire time or never expire objects even if a period
is set for them.