BOSS Services: Difference between revisions

DaniElectra (talk | contribs)
Privileged BOSS Service "boss:P": Add more command names
DaniElectra (talk | contribs)
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
==BOSS Service "boss:U"==
==BOSS User Service "boss:U"==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 9: Line 9:
|-
|-
| 0x00020100
| 0x00020100
| [[BOSS:SetStorageInfo|SetStorageInfo]]
| [[BOSSU:SetStorageInfo|SetStorageInfo]]
|-
|-
| 0x00030000
| 0x00030000
| [[BOSS:UnregisterStorage|UnregisterStorage]]
| [[BOSSU:UnregisterStorage|UnregisterStorage]]
|-
|-
| 0x00040000
| 0x00040000
| GetStorageInfo
| [[BOSSU:GetStorageInfo|GetStorageInfo]]
|-
|-
| 0x00050042
| 0x00050042
| RegisterPrivateRootCa
| [[BOSSU:RegisterPrivateRootCa|RegisterPrivateRootCa]]
|-
|-
| 0x00060084
| 0x00060084
| RegisterPrivateClientCert <nowiki>(u32 Size0, u32 Size1, ((Size0<<4) | 10), Buf0, ((Size1<<4) | 10), Buf1)</nowiki> This writes the content of the input buffers into files "bossdb:/%s_CL" and "bossdb:/%s_CLK", where "%s" is generated from the programID.
| [[BOSSU:RegisterPrivateClientCert|RegisterPrivateClientCert]] <nowiki>(u32 Size0, u32 Size1, ((Size0<<4) | 10), Buf0, ((Size1<<4) | 10), Buf1)</nowiki> This writes the content of the input buffers into files "bossdb:/%s_CL" and "bossdb:/%s_CLK", where "%s" is generated from the programID.
|-
|-
| 0x00070000
| 0x00070000
| GetNewArrivalFlag
| [[BOSSU:GetNewArrivalFlag|GetNewArrivalFlag]]
|-
|-
| 0x00080002
| 0x00080002
| [[BOSS:RegisterNewArrivalEvent|RegisterNewArrivalEvent]]: Used for sending a handle. This is used with a table of programIDs etc with a maximum of 5 entries.
| [[BOSSU:RegisterNewArrivalEvent|RegisterNewArrivalEvent]]: Used for sending a handle. This is used with a table of programIDs etc with a maximum of 5 entries.
|-
|-
| 0x00090040
| 0x00090040
| [[BOSS:SetOptoutFlag|SetOptoutFlag]]
| [[BOSSU:SetOptoutFlag|SetOptoutFlag]]
|-
|-
| 0x000A0000
| 0x000A0000
| [[BOSS:GetOptoutFlag|GetOptoutFlag]]
| [[BOSSU:GetOptoutFlag|GetOptoutFlag]]
|-
|-
| 0x000B00C2
| 0x000B00C2
Line 48: Line 48:
|-
|-
| 0x000F0042
| 0x000F0042
| GetStepIdList
| [[BOSSU:GetStepIdList|GetStepIdList]]
|-
|-
| 0x00100102
| 0x00100102
Line 54: Line 54:
|-
|-
| 0x00110102
| 0x00110102
| [[BOSS:GetNsDataIdList1|GetNsDataIdList1]]
| [[BOSSU:GetNsDataIdList1|GetNsDataIdList1]]
|-
|-
| 0x00120102
| 0x00120102
| [[BOSS:GetNsDataIdList2|GetNsDataIdList2]]
| [[BOSSU:GetNsDataIdList2|GetNsDataIdList2]]
|-
|-
| 0x00130102
| 0x00130102
| [[BOSS:GetNsDataIdList3|GetNsDataIdList3]]
| [[BOSSU:GetNsDataIdList3|GetNsDataIdList3]]
|-
|-
| 0x00140082
| 0x00140082
Line 72: Line 72:
|-
|-
| 0x00170082
| 0x00170082
| UpdateTaskInterval
| [[BOSSU:UpdateTaskInterval|UpdateTaskInterval]]
|-
|-
| 0x00180082
| 0x00180082
| UpdateTaskCount
| [[BOSSU:UpdateTaskCount|UpdateTaskCount]]
|-
|-
| 0x00190042
| 0x00190042
| GetTaskInterval
| [[BOSSU:GetTaskInterval|GetTaskInterval]]
|-
|-
| 0x001A0042
| 0x001A0042
| GetTaskCount
| [[BOSSU:GetTaskCount|GetTaskCount]]
|-
|-
| 0x001B0042
| 0x001B0042
| GetTaskServiceStatus
| [[BOSSU:GetTaskServiceStatus|GetTaskServiceStatus]]
|-
|-
| 0x001C0042
| 0x001C0042
Line 96: Line 96:
|-
|-
| 0x001F0000
| 0x001F0000
| [[BOSS:GetTaskFinishHandle|GetTaskFinishHandle]]
| [[BOSSU:GetTaskFinishHandle|GetTaskFinishHandle]]
|-
|-
| 0x00200082
| 0x00200082
Line 102: Line 102:
|-
|-
| 0x00210042
| 0x00210042
| GetTaskResult
| [[BOSSU:GetTaskResult|GetTaskResult]]
|-
|-
| 0x00220042
| 0x00220042
| GetTaskCommErrorCode
| [[BOSSU:GetTaskCommErrorCode|GetTaskCommErrorCode]]
|-
|-
| 0x002300C2
| 0x002300C2
| GetTaskStatus
| [[BOSSU:GetTaskStatus|GetTaskStatus]]
|-
|-
| 0x00240082
| 0x00240082
| GetTaskError
| [[BOSSU:GetTaskError|GetTaskError]]
|-
|-
| 0x00250082
| 0x00250082
| GetTaskInfo
| [[BOSSU:GetTaskInfo|GetTaskInfo]]
|-
|-
| 0x00260040
| 0x00260040
| [[BOSS:DeleteNsData|DeleteNsData]]
| [[BOSSU:DeleteNsData|DeleteNsData]]
|-
|-
| 0x002700C2
| 0x002700C2
Line 126: Line 126:
|-
|-
| 0x00290080
| 0x00290080
| SetNsDataAdditionalInfo
| [[BOSSU:SetNsDataAdditionalInfo|SetNsDataAdditionalInfo]]
|-
|-
| 0x002A0040
| 0x002A0040
| GetNsDataAdditionalInfo. Writes an output u32 to cmdreply[2].
| [[BOSSU:GetNsDataAdditionalInfo|GetNsDataAdditionalInfo]]. Writes an output u32 to cmdreply[2].
|-
|-
| 0x002B0080
| 0x002B0080
| SetNsDataNewFlag
| [[BOSSU:SetNsDataNewFlag|SetNsDataNewFlag]]
|-
|-
| 0x002C0040
| 0x002C0040
| GetNsDataNewFlag
| [[BOSSU:GetNsDataNewFlag|GetNsDataNewFlag]]
|-
|-
| 0x002D0040
| 0x002D0040
| GetNsDataLastUpdate (u32 NsDataId) Writes an output u64 to cmdreply[2-3], from the content file in extdata.
| [[BOSSU:GetNsDataLastUpdate|GetNsDataLastUpdate]] (u32 NsDataId) Writes an output u64 to cmdreply[2-3], from the content file in extdata.
|-
|-
| 0x002E0040
| 0x002E0040
| [[BOSS:GetErrorCode|GetErrorCode]]
| [[BOSSU:GetErrorCode|GetErrorCode]]
|-
|-
| 0x002F0140
| 0x002F0140
| RegisterStorageEntry
| [[BOSSU:RegisterStorageEntry|RegisterStorageEntry]]
|-
|-
| 0x00300000
| 0x00300000
| GetStorageEntryInfo
| [[BOSSU:GetStorageEntryInfo|GetStorageEntryInfo]]
|-
|-
| 0x00310100
| 0x00310100
| SetStorageOption
| [[BOSSU:SetStorageOption|SetStorageOption]]
|-
|-
| 0x00320000
| 0x00320000
| GetStorageOption
| [[BOSSU:GetStorageOption|GetStorageOption]]
|-
|-
| 0x00330042
| 0x00330042
| [[BOSS:StartBgImmediate|StartBgImmediate]]
| [[BOSSU:StartBgImmediate|StartBgImmediate]]
|-
|-
| 0x00340042
| 0x00340042
| [[BOSS:GetTaskProperty0|GetTaskProperty0]]
| [[BOSSU:GetTaskPriority|GetTaskPriority]]
|-
|-
| 0x003500C2
| 0x003500C2
| RegisterImmediateTask
| [[BOSSU:RegisterImmediateTask|RegisterImmediateTask]]
|-
|-
| 0x00360084
| 0x00360084
| SetTaskQuery <nowiki>(u32 TaskID_Size, u32 BufSize, ((TaskID_Size<<4) | 10), TaskID_buf, ((BufSize<<4) | 10), Buf)</nowiki> BufSize must match 0x60.
| [[BOSSU:SetTaskQuery|SetTaskQuery]] <nowiki>(u32 TaskID_Size, u32 BufSize, ((TaskID_Size<<4) | 10), TaskID_buf, ((BufSize<<4) | 10), Buf)</nowiki> BufSize must match 0x60.
|-
|-
| 0x00370084
| 0x00370084
| GetTaskQuery <nowiki>(u32 TaskID_Size, u32 BufSize, ((TaskID_Size<<4) | 10), TaskID_buf, ((BufSize<<4) | 10), Buf)</nowiki> BufSize must match 0x60.
| [[BOSSU:GetTaskQuery|GetTaskQuery]] <nowiki>(u32 TaskID_Size, u32 BufSize, ((TaskID_Size<<4) | 10), TaskID_buf, ((BufSize<<4) | 10), Buf)</nowiki> BufSize must match 0x60.
|}
|}


==Privileged BOSS Service "boss:P"==
==BOSS Privileged Service "boss:P"==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 193: Line 193:
|-
|-
| 0x040600C0
| 0x040600C0
| SetOptoutFlagPrivileged
| [[BOSSP:SetOptoutFlagPrivileged|SetOptoutFlagPrivileged]]
|-
|-
| 0x04070080
| 0x04070080
| GetOptoutFlagPrivileged
| [[BOSSP:GetOptoutFlagPrivileged|GetOptoutFlagPrivileged]]
|-
|-
| 0x04080040
| 0x04080040
Line 202: Line 202:
|-
|-
| 0x04090102
| 0x04090102
| UnregisterTaskPrivileged
| [[BOSSP:UnregisterTaskPrivileged|UnregisterTaskPrivileged]]
|-
|-
| 0x040A0000
| 0x040A0000
| ?
| [[BOSSP:GetAppIdList|GetAppIdList]]
|-
|-
| 0x040B0080
| 0x040B0080
| GetTaskIdListPrivileged
| [[BOSSP:GetTaskIdListPrivileged|GetTaskIdListPrivileged]]
|-
|-
| 0x040C00C2
| 0x040C00C2
| GetStepIdListPrivileged
| [[BOSSP:GetStepIdListPrivileged|GetStepIdListPrivileged]]
|-
|-
| 0x040D0182
| 0x040D0182
Line 220: Line 220:
|-
|-
| 0x040F0102
| 0x040F0102
| GetTaskInfoPrivileged
| [[BOSSP:GetTaskInfoPrivileged|GetTaskInfoPrivileged]]
|-
|-
| 0x04100102
| 0x04100102
| Same as GetTaskStatusPrivileged, but the input bool is set to false
| [[BOSSP:GetTaskStatusPrivileged1|GetTaskStatusPrivileged1]] Same as GetTaskStatusPrivileged, but the input bool is set to false
|-
|-
| 0x04110102
| 0x04110102
| GetTaskErrorPrivileged
| [[BOSSP:GetTaskErrorPrivileged|GetTaskErrorPrivileged]]
|-
|-
| 0x04120000
| 0x04120000
Line 238: Line 238:
|-
|-
| 0x041500C0
| 0x041500C0
| DeleteNsDataPrivileged
| [[BOSSP:DeleteNsDataPrivileged|DeleteNsDataPrivileged]]
|-
|-
| 0x04160142
| 0x04160142
Line 247: Line 247:
|-
|-
| 0x04180100
| 0x04180100
| SetNsDataAdditionalInfoPrivileged
| [[BOSSP:SetNsDataAdditionalInfoPrivileged|SetNsDataAdditionalInfoPrivileged]]
|-
|-
| 0x041900C0
| 0x041900C0
| GetNsDataAdditionalInfoPrivileged
| [[BOSSP:GetNsDataAdditionalInfoPrivileged|GetNsDataAdditionalInfoPrivileged]]
|-
|-
| 0x041A0100
| 0x041A0100
| SetNsDataNewFlagPrivileged
| [[BOSSP:SetNsDataNewFlagPrivileged|SetNsDataNewFlagPrivileged]]
|-
|-
| 0x041B00C0
| 0x041B00C0
| GetNsDataNewFlagPrivileged
| [[BOSSP:GetNsDataNewFlagPrivileged|GetNsDataNewFlagPrivileged]]
|-
|-
| 0x041C00C0
| 0x041C00C0
| GetNsDataLastUpdatePrivileged
| [[BOSSP:GetNsDataLastUpdatePrivileged|GetNsDataLastUpdatePrivileged]]
|-
|-
| 0x041D0040
| 0x041D0040
Line 268: Line 268:
|-
|-
| 0x041F0040
| 0x041F0040
| (bool unk_flag2)
| [[BOSSP:SetTestModeAvailability|SetTestModeAvailability]] (bool test_mode_flag)
|-
|-
| 0x04200000
| 0x04200000
| Returns: bool unk_flag2
| [[BOSSP:GetTestModeAvailability|GetTestModeAvailability]]. Returns: bool test_mode_flag
|-
|-
| 0x04210000?
| 0x04210000?
Line 286: Line 286:
|-
|-
| 0x04250042
| 0x04250042
| SetPolicyListEnvId. Sets the policylist env ID (default env ID is "p01"): strncpy("p01", in, 8)
| [[BOSSP:SetPolicyListEnvId|SetPolicyListEnvId]]. Sets the policylist env ID (default env ID is "p01"): strncpy("p01", in, 8)
|-
|-
| 0x04260042
| 0x04260042
| GetPolicyListEnvId. Gets the policylist env ID (default env ID is "p01"): strcpy(out, "p01")
| [[BOSSP:GetPolicyListEnvId|GetPolicyListEnvId]]. Gets the policylist env ID (default env ID is "p01"): strcpy(out, "p01")
|-
|-
| 0x04270042
| 0x04270042
| SetPolicyListUrl. Sets a custom policylist URL. Max of 0x200 chars
| [[BOSSP:SetPolicyListUrl|SetPolicyListUrl]]. Sets a custom policylist URL. Max of 0x200 chars
|-
|-
| 0x04280042
| 0x04280042
| GetPolicyListUrl. Gets the custom policylist URL
| [[BOSSP:GetPolicyListUrl|GetPolicyListUrl]]. Gets the custom policylist URL
|-
|-
| 0x04290002
| 0x04290002
Line 313: Line 313:
|-
|-
| 0x042E00C2
| 0x042E00C2
| StartTaskPrivileged
| [[BOSSP:StartTaskPrivileged|StartTaskPrivileged]]
|-
|-
| 0x042F00C2
| 0x042F00C2
| StartTaskImmediatePrivileged
| [[BOSSP:StartTaskImmediatePrivileged|StartTaskImmediatePrivileged]]
|-
|-
| 0x043000C2
| 0x043000C2
| CancelTaskPrivileged
| [[BOSSP:CancelTaskPrivileged|CancelTaskPrivileged]]
|-
|-
| 0x04310040
| 0x04310040
Line 328: Line 328:
|-
|-
| 0x04330080
| 0x04330080
| GetStorageOptionPrivileged
| [[BOSSP:GetStorageOptionPrivileged|GetStorageOptionPrivileged]]
|-
|-
| 0x043400C2
| 0x043400C2
| StartBgImmediatePrivileged
| [[BOSSP:StartBgImmediatePrivileged|StartBgImmediatePrivileged]]
|-
|-
| 0x04350042
| 0x04350042
Line 340: Line 340:
|-
|-
| 0x043700C2
| 0x043700C2
| GetTaskProperty0Privileged
| [[BOSSP:GetTaskPriorityPrivileged|GetTaskPriorityPrivileged]]
|-
|-
| 0x04380000
| 0x04380000
Line 346: Line 346:
|-
|-
| 0x04390104
| 0x04390104
| GetTaskQueryPrivileged
| [[BOSSP:GetTaskQueryPrivileged|GetTaskQueryPrivileged]]
|-
|-
| 0x043A0042
| 0x043A0042
Line 361: Line 361:
|-
|-
| 0x043E0042
| 0x043E0042
| <nowiki>(u32 Size, ((Size<<4)|0xA), Buf)</nowiki>. Sets the sprelay URL
| [[BOSSP:SetSprelayUrl|SetSprelayUrl]] <nowiki>(u32 Size, ((Size<<4)|0xA), Buf)</nowiki>. Sets the sprelay URL
|-
|-
| 0x043F0042
| 0x043F0042
| <nowiki>(u32 Size, ((Size<<4)|0xC), Buf)</nowiki>. Gets the sprelay URL
| [[BOSSP:GetSprelayUrl|GetSprelayUrl]] <nowiki>(u32 Size, ((Size<<4)|0xC), Buf)</nowiki>. Gets the sprelay URL
|-
|-
| 0x04400080
| 0x04400080
| (u32 interval, u32 unk). Sets the sprelay interval, and other things
| [[BOSSP:SetSprelayInterval|SetSprelayInterval]] (u32 interval, u32 unk). Sets the sprelay interval, and other things
|-
|-
| 0x04410000
| 0x04410000
| Returns: u32 interval, u32 unk. Gets the sprelay interval, and other things
| [[BOSSP:GetSprelayInterval|GetSprelayInterval]] Returns: u32 interval, u32 unk. Gets the sprelay interval, and other things
|-
|-
| 0x04420000
| 0x04420000
Line 388: Line 388:
|-
|-
| 0x04470002
| 0x04470002
| RegisterNewArrivalEventPrivileged
| [[BOSSP:RegisterNewArrivalEventPrivileged|RegisterNewArrivalEventPrivileged]]
|-
|-
| 0x04480000?
| 0x04480000?
Line 394: Line 394:
|-
|-
| 0x04490142
| 0x04490142
| RegisterTaskPrivileged
| [[BOSSP:RegisterTaskPrivileged|RegisterTaskPrivileged]]
|-
|-
| 0x044A0180
| 0x044A0180
| SetStorageInfoPrivileged
| [[BOSSP:SetStorageInfoPrivileged|SetStorageInfoPrivileged]]
|-
|-
| 0x044B01C0
| 0x044B01C0
| RegisterStorageEntryPrivileged
| [[BOSSP:RegisterStorageEntryPrivileged|RegisterStorageEntryPrivileged]]
|-
|-
| 0x044C0080
| 0x044C0080
| UnregisterStoragePrivileged
| [[BOSSP:UnregisterStoragePrivileged|UnregisterStoragePrivileged]]
|-
|-
| 0x044D0080
| 0x044D0080
| GetStorageInfoPrivileged
| [[BOSSP:GetStorageInfoPrivileged|GetStorageInfoPrivileged]]
|-
|-
| 0x044E0080
| 0x044E0080
| GetStorageEntryInfoPrivileged
| [[BOSSP:GetStorageEntryInfoPrivileged|GetStorageEntryInfoPrivileged]]
|-
|-
| 0x044F0102
| 0x044F0102
| UpdateTaskIntervalPrivileged
| [[BOSSP:UpdateTaskIntervalPrivileged|UpdateTaskIntervalPrivileged]]
|-
|-
| 0x04500102
| 0x04500102
| UpdateTaskCountPrivileged
| [[BOSSP:UpdateTaskCountPrivileged|UpdateTaskCountPrivileged]]
|-
|-
| 0x045100C2
| 0x045100C2
| GetTaskIntervalPrivileged
| [[BOSSP:GetTaskIntervalPrivileged|GetTaskIntervalPrivileged]]
|-
|-
| 0x045200C2
| 0x045200C2
| GetTaskCountPrivileged
| [[BOSSP:GetTaskCountPrivileged|GetTaskCountPrivileged]]
|-
|-
| 0x045300C2
| 0x045300C2
| GetTaskServiceStatusPrivileged
| [[BOSSP:GetTaskServiceStatusPrivileged|GetTaskServiceStatusPrivileged]]
|-
|-
| 0x04540102
| 0x04540102
| GetTaskStatePrivileged
| [[BOSSP:GetTaskStatePrivileged|GetTaskStatePrivileged]]
|-
|-
| 0x045500C2
| 0x045500C2
| GetTaskResultPrivileged
| [[BOSSP:GetTaskResultPrivileged|GetTaskResultPrivileged]]
|-
|-
| 0x045600C2
| 0x045600C2
| GetTaskCommErrorCodePrivileged
| [[BOSSP:GetTaskCommErrorCodePrivileged|GetTaskCommErrorCodePrivileged]]
|-
|-
| 0x04570142
| 0x04570142
| GetTaskStatusPrivileged
| [[BOSSP:GetTaskStatusPrivileged|GetTaskStatusPrivileged]]
|-
|-
| 0x04580104
| 0x04580104
| SetTaskQueryPrivileged
| [[BOSSP:SetTaskQueryPrivileged|SetTaskQueryPrivileged]]
|}
|}


Line 447: Line 447:


==BOSS Service "boss:M"==
==BOSS Service "boss:M"==
{| class="wikitable" border="1"
|-
!  Command Header
!  Description
|-
| 0x00010002
| ?
|-
| 0x00020000
| ?
|-
| 0x00030040
| ?
|-
| 0x00040000
| ?
|-
| 0x00050000
| ?
|-
| 0x00060000
| ?
|-
| 0x00070000
| ?
|}


==programIDs==
==programIDs==
Line 487: Line 514:


==NsDataHeaderInfo==
==NsDataHeaderInfo==
When the input type is not one of the below or when the specified output size doesn't match the expected size for this type, an error is returned.
This type contains information about an NsData, the fields match exactly with the [[SpotPass#Payload_Content_Header|Payload Content Header]] without the hash and signature. When the input type is not one of the below or when the specified output size doesn't match the expected size for this type, an error is returned.
 
===Type0===
Total size is 0x8-bytes.


{| class="wikitable" border="1"
{| class="wikitable" border="1"
! Type !! Size !! Description
|-
| 0x0 || 0x8 || Program ID
|-
| 0x1 || 0x4 || Unknown field
|-
| 0x2 || 0x4 || Content datatype
|-
|-
!  Offset
| 0x3 || 0x4 || Payload size
!  Size
|-
!  Description
| 0x4 || 0x4 || NS Data ID
|-
| 0x5 || 0x4 || Version
|-
|-
| 0x0
| 0x6 || 0x20 || Everything:
| 0x8
| programID
|}
 
===Type1===
Total size is 0x4-bytes.
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! Offset !! Size !! Description
|-
| 0x0 || 0x8 || Program ID
|-
| 0x8 || 0x4 || Unknown field
|-
| 0xC || 0x4 || Content datatype
|-
| 0x10 || 0x4 || Payload size
|-
|-
!  Offset
| 0x14 || 0x4 || NS Data ID
!  Size
|-
!  Description
| 0x18 || 0x4 || Version
|-
|-
| 0x0
| 0x1C || 0x4 || Padding?
| 0x4
|}
| ?
|}
|}


===Type2===
==PropertyIDs==
Total size is 0x4-bytes.
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! ID !! Size !! Type !! Read !! Write !! Rewritable !! Description
|-
| 0x0 || 0x1 || u8 || Yes || Yes || Yes || [[#PriorityLevel|Priority]]. Represents the priority of a task
|-
| 0x1 || 0x1 || u8 || Yes || Yes || Yes || SchedulingPolicy. Unknown purpose, the API on games force this to 1
|-
| 0x2 || 0x4 || u32 || Yes || Yes || Yes || TaskTargetDuration. Unknown purpose, the API on games require a value below 0x10000 (not inclusive)
|-
| 0x3 || 0x4 || u32 || Yes || Yes || Yes || Interval in seconds of the task
|-
| 0x4 || 0x4 || u32 || Yes || Yes || Yes || Count. Number of times that the task will be run. If zero, the task is persistent
|-
| 0x5 || 0x1 || u8 || Yes || Yes || Yes || TaskPermission. Unknown purpose, the API on games require a value between 0 and 3
|-
| 0x6 || 0x1 || u8 || Yes || Yes || No || [[#ActionCode|ActionCode]]. Represents the action that a task will perform
|-
| 0x7 || 0x200 || char[512] || Yes || Yes || No || URL. Unused for DataStore actions
|-
| 0x8 || 0x4 ||  || Yes || Yes || No || ?
|-
| 0x9 || 0x1 ||  || Yes || Yes || No || Controls the action data type? The API on games require a value between 0 and 6
|-
|-
! Offset
| 0xA || 0x100 || || Yes || Yes || No || Unknown action data. Shares buffer with properties 0xB and 0x3E
! Size
|-
!  Description
| 0xB || 0x200 || || Yes || Yes || No || Unknown action data. Shares buffer with properties 0xA and 0x3E
|-
| 0xC || 0x4 || Handle || Yes || Yes || No || Optional file handle with the data to send
|-
|-
| 0x0
| 0xD || 0x360 || HeaderField[3] || Yes || Yes || No || HeaderFields. Additional headers to include in the request sent to the server. Structure:
| 0x4
| Content data-type, originally from the [[SpotPass|BOSS-container]].
|}
 
===Type3===
Total size is 0x4-bytes.
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Offset
! Offset !! Size !! Description
! Size
|-
! Description
| 0x0 || 0x20 || char[32] Header name
|-
|-
| 0x0
| 0x20 || 0x100 || char[256] Header value
| 0x4
| Content size
|}
|}
===Type4===
Total size is 0x4-bytes.
{| class="wikitable" border="1"
|-
|-
!  Offset
| 0xE || 0x4 || u32[1] || Yes || Yes || No || ClientCerts. List of [[HTTPC:SetClientCertDefault|cert IDs]] to use as client certs
!  Size
|-
!  Description
| 0xF || 0xC || u32[3] || Yes || Yes || No || RootCAs. List of [[HTTPC:AddDefaultCert|cert IDs]] to use as root CAs
|-
| 0x10 || 0x1 || u8 || Yes || Yes || No || FSClientCert. If non-zero, enables the task client certificate to be read from the filesystem. May be a bool?
|-
| 0x11 || 0x1 || u8 || Yes || Yes || No || FSRootCA. If non-zero, enables the task root CA to be read from the filesystem. May be a bool?
|-
| 0x12 || 0x1 || u8 || Yes || Yes || No || [[#ApInfoType|ApInfoType]]
|-
| 0x13 || 0x4 || u32 || Yes || Yes || No || RootCaCount. Amount of root CAs stored in property 0xF
|-
| 0x14 || 0x4 || u32 || Yes || Yes || No || ClientCertCount. Amount of client certificates stored in property 0xE
|-
|-
| 0x0
| 0x15 || 0x40 ||  || Yes || Yes || No || ?
| 0x4
| ?
|}
 
===Type5===
Total size is 0x4-bytes.
 
{| class="wikitable" border="1"
|-
|-
! Offset
| 0x16 || 0x4 || || Yes || Yes || No || ?
!  Size
!  Description
|-
|-
| 0x0
| 0x17 || || || No || No || No || Reserved
| 0x4
| ?
|}
 
===Type6===
Total size is 0x20-bytes.
 
{| class="wikitable" border="1"
|-
|-
! Offset
| 0x18 || 0x1 || || Yes || Yes || No || Unknown purpose, the API on games force this to 1
!  Size
!  Description
|-
|-
| 0x0
| 0x19 || 0x1 ||  || Yes || Yes || No || ?
| 0x8
| programID. Same data as Type0.
|-
|-
| 0x8
| 0x1A || 0x1 ||  || Yes || Yes || No || ?
| 0x4
| Same data as Type1.
|-
|-
| 0xC
| 0x1B || 0x4 ||  || Yes || Yes || No || ?
| 0x4
| ?
|-
|-
| 0x10
| 0x1C || 0x4 ||  || Yes || Yes || No || ?
| 0x4
| Same data as Type3.
|-
|-
| 0x14
| 0x1D || 0x1 || u8 || Yes || No || No || [[#TaskStateCode|TaskStateCode]]
| 0xC
| ?
|}
 
==PropertyIDs==
{| class="wikitable" border="1"
|-
|-
! ID
| 0x1E || 0x1 || || Yes || No || No || ?
!  Size
!  Description
|-
|-
| 0x0
| 0x1F || 0x1 ||  || Yes || No || No || ?
| 0x1
| Unknown. Example values used by official titles: 0x7D, 0xAA, ...
|-
|-
| 0x1
| 0x20 || 0x1 || u8 || Yes || No || No || TaskResultCode. Unknown purpose
| 0x1
| Unknown. Usually 0x1?
|-
|-
| 0x2
| 0x21 || 0x1 || u8 || Yes || No || No || TaskServiceStatus. Unknown purpose
| 0x4
| Unknown. Usually 0x0?
|-
|-
| 0x3
| 0x22 || 0x1 ||  || Yes || No || No || ?
| 0x4
| Interval in seconds.
|-
|-
| 0x4
| 0x23 || 0x4 || u32 || Yes || No || No || CommErrorCode. Received HTTP status code when performing the task. Set to 0 for successful codes
| 0x4
| Duration(?), ~0 = infinite. 0x1 can be used for running the task just once. Usually set to 0x64(100). When not set to ~0 this is decreased by 1 each time the task runs(or at least when it fails). Task processing is skipped when the current state value is already 0x0.
|-
|-
| 0x5
| 0x24 || 0x1 ||  || Yes || No || No || ?
| 0x1
| Unknown. Usually 0x2?
|-
|-
| 0x6
| 0x25 || 0x4 ||  || Yes || No || No || ?
| 0x1
| ?
|-
|-
| 0x7
| 0x26 || 0x4 ||  || Yes || No || No || ?
| 0x200
| URL
|-
|-
| 0x8
| 0x27 || 0x4 ||  || Yes || No || No || ?
| 0x4
| ?
|-
|-
| 0x9
| 0x28 || 0x8 || u64 || Yes || No || No || LastSuccessfulTimestamp. Number of seconds since the year 2000 of the last successful run of the task
| 0x1
| ?
|-
|-
| 0xA
| 0x29 || 0x8 ||  || Yes || No || No || ?
| 0x100
| ?
|-
|-
| 0xB
| 0x2A || 0x4 ||  || Yes || No || No || ?
| 0x200
| ?
|-
|-
| 0xC
| 0x2B || 0x4 ||  || Yes || No || No || ?
|  
| [[BOSSU:SendPropertyHandle]] is used for this. This property is only setup for HTTP uploads? This can be used with [[BOSSU:SendProperty]] too but that's not the intended use.
|-
|-
| 0xD
| 0x2C || 0x1 ||  || Yes || No || No || ?
| 0x360
| Contains additional HTTP headers to send in the request, otherwise this is all-zero. This is an array of 3 entries: +0x0 size 0x20 is the header name, and +0x20 size 0x100 is the header value. Example: header-name "Content-Type" at 0x0, with header-value "application/octet-stream" at offset 0x20.
|-
|-
| 0xE
| 0x2D || 0x2 ||  || Yes || No || No || ?
| 0x4
| This u32 is passed directly as an u32 certID for [[HTTPC:SetClientCertDefault]](without masking to u8), even when this field is set to 0.
|-
|-
| 0xF
| 0x2E || 0x2 ||  || Yes || No || No || ?
| 0xC
| 3 words. Last word is unknown, normally 0(non-zero doesn't seem to affect any HTTPC commands). [[HTTPC:AddDefaultCert]] is called twice for each of the first two words which are used as certIDs(not masked to u8).
|-
|-
| 0x10
| 0x2F || 0x40 || char[64] || Yes || No || No || LastModifiedHeader. Date string from the Last-Modified HTTP header received when executing the task
| 0x1
| When non-zero this enables loading the client cert+privk from FS, requires the filepaths to be actually set.
|-
|-
| 0x11
| 0x30 || 0x1 ||  || Yes || No || No || ?
| 0x1
| When non-zero this enables loading a trusted rootCA cert DER from FS, requires the filepath to be actually set.
|-
|-
| 0x12
| 0x31 || 0x4 ||  || Yes || No || No || ?
| 0x1
| ?
|-
|-
| 0x13
| 0x32 || 0x100 ||  || Yes || No || No || ?
| 0x4
| ?
|-
|-
| 0x14
| 0x33 || 0x2 || u16 || Yes || No || No || TotalApps. Number of application IDs on the below list
| 0x4
| ?
|-
|-
| 0x15
| 0x34 || 0x400 || u64[128] || Yes || No || No || AppIdList. List of application IDs registered in BOSS
| 0x40
| ?
|-
|-
| 0x16
| 0x35 || 0x2 || u16 || Yes || No || No || TotalTasks. Number of task IDs on the below list
| 0x4
| ?
|-
|-
| 0x18
| 0x36 || 0x400 || char[8][128] || Yes || No || No || TaskIdList. List of task IDs registered by the application
| 0x1
| ?
|-
|-
| 0x19
| 0x37 || 0x2 || u16 || Yes || No || No || TotalSteps. Number of step IDs on the below list
| 0x1
| ?
|-
|-
| 0x1A
| 0x38 || 0x80 || u8[128] || Yes || No || No || StepIdList. List of steps that the task has registered
| 0x1
| ?
|-
|-
| 0x1B
| 0x39 || ||  || No || No || No || Reserved
| 0x4
| ?
|-
|-
| 0x1C
| 0x3A || ||  || No || No || No || Reserved
| 0x4
| ?
|-
|-
| 0x35
| 0x3B || 0x4 ||  || Yes || Yes || No || ?
| 0x2
| u16 total_tasks. [[BOSSU:GetTaskIdList]] is used before [[BOSSU:ReceiveProperty|reading]] this.
|-
|-
| 0x36
| 0x3C || ||  || No || No || No || Reserved
| 0x400
| List of TaskIDs. [[BOSSU:GetTaskIdList]] is used before [[BOSSU:ReceiveProperty|reading]] this.
|-
|-
| 0x3B
| 0x3D || ||  || No || No || No || Reserved
| 0x4
| ?
|-
|-
| 0x3E
| 0x3E || 0x200 ||  || Yes || Yes || No || DataStoreDownloadActionData. Shares buffer with properties 0xA and 0xB
| 0x200
| ?
|-
|-
| 0x3F
| 0x3F || 0x1 || u8 || Yes || Yes || No || [[#CfgInfoType|CfgInfoType]]
| 0x1
| ?
|}
|}


The only valid PropertyIDs for [[BOSSU:SendProperty]] are the ones listed above, except 0x35 and 0x36. If the specified size for the command is larger than the property size, it will use the actual property size instead. When the specified size is less than the actual property size, all of the property data that won't be written to is cleared.
The official name for this type is "PropertyType". The read column represents properties which can be obtained with [[BOSSU:ReceiveProperty|ReceiveProperty]], the write column represents properties which can be set with [[BOSSU:SendProperty|SendProperty]], and the rewritable column indicates properties which can be reassigned into an existing task with [[BOSSU:ReconfigureTask|ReconfigureTask]]. If the specified size for the command is larger than the property size, it will use the actual property size instead. When the specified size is less than the actual property size, all of the property data that won't be written to is cleared.


==TaskStatus==
Trying to send a property which doesn't support being sent will give an error 0xC960F84D. Using reserved properties as an argument will give the same error.
 
==TaskStateCode==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 768: Line 719:


This u8 is returned by [[BOSSU:GetTaskState]].
This u8 is returned by [[BOSSU:GetTaskState]].
==PriorityLevel==
{| class="wikitable" border="1"
! Value !! Name !! Description
|-
| 0x0 || INVALID? || Probably represents an invalid value
|-
| 0x15 || EXPEDITE1 ||
|-
| 0x16 || EXPEDITE2 ||
|-
| 0x17 || EXPEDITE3 ||
|-
| 0x18 || EXPEDITE4 ||
|-
| 0x19 || EXPEDITE5 ||
|-
| 0x1A || EXPEDITE6 ||
|-
| 0x1B || EXPEDITE7 ||
|-
| 0x1C || EXPEDITE8 ||
|-
| 0x23 || EXPEDITE ||
|-
| 0x50 || HIGH ||
|-
| 0x7D || MEDIUM || This is the default value inside the games API
|-
| 0xAA || LOW ||
|-
| 0xD7 || LOWEST ||
|-
| 0xDD || LOWEST1 ||
|-
| 0xDE || LOWEST2 ||
|-
| 0xDF || LOWEST3 ||
|-
| 0xE0 || LOWEST4 ||
|-
| 0xE1 || LOWEST5 ||
|-
| 0xE2 || LOWEST6 ||
|-
| 0xE3 || LOWEST7 ||
|-
| 0xE4 || LOWEST8 ||
|-
| 0xFF || STOPPED || The task won't be run
|}
Represents the priority of a task. Any values outside the ones listed above are considered invalid.
==ActionCode==
{| class="wikitable" border="1"
! Value !! Description
|-
| 0x1 || FileList? Action code used for listing files on the BOSS server. May be a generic raw download?
|-
| 0x2 || NsaDownload? Action code for downloading data from the given URL, principally an NsData
|-
| 0x3 || Upload? Action code for uploading data to the given URL
|-
| 0x4 || ?
|-
| 0x5 || ?
|-
| 0x6 || Action code used by task ID "pl" from the Home Menu
|-
| 0x7 || Action code used by task ID "phu" from the Home Menu
|-
| 0x8 || Action code used by task ID "tiu" from the Home Menu
|-
| 0x9 || Action code used by task ID "splu" from the Home Menu
|-
| 0xA || Action code used for downloading data from DataStore through an Hpp server. Stores notification data?
|-
| 0xB || Action code related to DataStore?
|-
| 0xC || Action code used for StreetPass Relay
|-
| 0xD || Action code used for downloading the title version list (versionList.dat)
|}
This represents the action that a task will perform.
==ApInfoType==
{| class="wikitable" border="1"
! Flag !! Description
|-
| 0x1 || Adds the "apgroup" parameter to the query
|-
| 0x2 || Adds the "aparea" parameter to the query
|-
| 0x4 || Adds the "ap" parameter to the query
|}
This is a set of flags which add additional paramaters to the URL query with information about the access point the console is connected to.
==CfgInfoType==
{| class="wikitable" border="1"
! Flag !! Description
|-
| 0x1 || Adds the "c" (two-letter country code) parameter to the query
|-
| 0x2 || Adds the "l" (two-letter language code) parameter to the query
|-
| 0x4 || Adds the "tm" ([[Cfg:GetSystemModel|target model]]) parameter to the query
|}
This is a set of flags which add additional paramaters to the URL query with information about the console configuration.


==Errors==
==Errors==