Data Reporting 101
An xAPI report is called a "statement", and an xAPI statement is a simply a json object with a few defined properties. The required elements of any xAPI statement created for any system are the Actor, Verb and Object properties. However for the purposes of reporting to Apex, we also want to consider the Context, Result, and Timestamp properties.
Most of these properties are made of up of several, mostly optional, sub-properties. After filling out the required properties of an xAPI statement, you can pick and choose whichever properties make the most sense in order to capture the rest of the data you want to include.
To help understand the purpose of each of these properties, let's look at a hypothetical event we might want to report to Apex. Imagine, if you will, a user named Jane Doe who is using a Pico Neo 3 headset to play the latest release of a Fall Protection simulation on it. She has just chosen a harness to put on, and we want to track that she has chosen the correct harness, and will score 10 points for doing so.
We will generate very simple objects for each of the top level xAPI properties that include just enough sub-properties to detail the information described above.