When there is any issue with the assignment or grade to be posted, the API provides a generic error message: {"statusInfoSet":[{"imsx_codeMajor":"failure","imsx_severity":"error"}]}
From my experience thus far, this could mean:
Data incompatibility:
lineItem assignDate is not between gradingPeriod.beginDate and gradingPeriod.endDate
gradingPeriod provided is not child of lineItem.class
result.student is not enrolled in lineItem.class
result.scoreDate (or date of request) is before lineItem.assignDate
result.score is less than result.resultValueMin or greater than result.resultValueMax
Functional incompatibility:
Result has already been posted for the student and lineItem within the UI. As this isn't an “external” line item, there is no way to confirm this with the API
The OneRoster specification for error payloads provides for an optional human-readable description of the error that occurred - could this be provided based on the reason for the failure? This lack of information has caused many hours of headache trying to identify the issue, and also confusion with teachers and admins who do not know why their data failed to sync.