xAPI LRP ( Learning Record Store ) は「Actor・Verb・Object」含む JSON 形式の履歴である、相互運用性のある「xAPI ステートメント」を正しく生成し、RESTful APIを介して LRS へ送信することが役割です。
この中には「識別子や時間の扱い」「構造の厳守」「添付ファイルの処理」などの要件が含まれています。一方、「認証」や「権限判定」、「意味論的な妥当性チェック」は LRP の責務ではなく、LRS や上位レイヤーが担うとされています。
既存の識別子(IRI)がある場合は、それを厳密に同じ形式で再利用し、新しい識別子を乱用して複製しないよう注意が必要。
"contextActivities" などの配列構造は、必ず配列で扱い、形式を守ることが求められている。
ステートメント本体の "timestmap" には未来の日時を使用してはならない。
LRPはステートメントと共に添付ファイルを送信することができる。"sha2" プロパティを適切に生成する必要がある。
リクエストは RFC 2046 "multipart/mixed" の定義に準拠する。複数ステートメントに共通のファイルがある場合、添付データを1回だけ送るべき。 バッチ送信時、添付の重複やリレーション構造の整合性に気をつけ、仕様通りに実装する必要がある。
該当の仕様書では認証関連要件が外されており、別途、セキュリティ推奨に委ねられている。 権限情報 "authority" は LRP 側で設定しないほうが良いとされており、LRS 側で対応。
LRP: 構文上のエラーチェック
LRS: 意味論的エラー(語彙、動詞定義等)のチェック
を、それぞれ担当する。