{"service":"HALOWERK agentenwerk","endpoint":"/v1/oss-openolat-learning-path-prerequisite-rehearsal","method":"POST","content_type":"application/json","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"page":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"kind":{"const":"page"},"title":{"type":"string","minLength":1,"maxLength":120},"obligation":{"enum":["mandatory","optional","excluded"]},"trigger":{"enum":["visit","confirm"]},"start_offset_minutes":{"type":"integer","minimum":-525600,"maximum":525600,"not":{"minimum":-59,"maximum":59}},"end_offset_minutes":{"type":"integer","minimum":-525600,"maximum":525600,"not":{"minimum":-59,"maximum":59}}},"required":["key","kind","title"],"additionalProperties":false},"section":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"kind":{"const":"section"},"title":{"type":"string","minLength":1,"maxLength":120},"sequence":{"enum":["sequential","free"]},"children":{"type":"array","minItems":1,"maxItems":32,"items":{"$ref":"#/$defs/node"}}},"required":["key","kind","title","sequence","children"],"additionalProperties":false},"node":{"oneOf":[{"$ref":"#/$defs/page"},{"$ref":"#/$defs/section"}]}},"type":"object","properties":{"course":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"sequence":{"enum":["sequential","free"]},"children":{"type":"array","minItems":1,"maxItems":32,"items":{"$ref":"#/$defs/node"}}},"required":["title","sequence","children"],"additionalProperties":false},"learners":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"membership":{"enum":["participant","coach","owner","none"]},"actions":{"type":"array","maxItems":64,"items":{"type":"object","properties":{"node":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"action":{"enum":["visit","confirm"]}},"required":["node","action"],"additionalProperties":false}}},"required":["key","membership","actions"],"additionalProperties":false}},"expectations":{"type":"object","properties":{"learners":{"type":"object","minProperties":1,"maxProperties":8,"propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"course_access":{"enum":["granted","denied"]},"security":{"type":"object","properties":{"can_launch":{"type":"boolean"},"participant":{"type":"boolean"},"coach":{"type":"boolean"},"owner":{"type":"boolean"},"entry_admin":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":[],"additionalProperties":false,"minProperties":1},"initial":{"type":"object","minProperties":1,"maxProperties":65,"propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"status":{"anyOf":[{"enum":["notReady","notStarted","inProgress","inReview","done"]},{"type":"null"}]},"fully_assessed":{"anyOf":[{"enum":["true","false"]},{"type":"null"}]},"obligation":{"anyOf":[{"enum":["mandatory","optional","excluded"]},{"type":"null"}]},"visible":{"type":"boolean"},"accessible":{"type":"boolean"}},"required":[],"additionalProperties":false,"minProperties":1}},"steps":{"type":"array","maxItems":64,"items":{"type":"object","properties":{"applied":{"type":"boolean"},"reason":{"type":"string","maxLength":64},"visible_before":{"type":"boolean"},"accessible_before":{"type":"boolean"},"after":{"type":"object","minProperties":1,"maxProperties":65,"propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"status":{"anyOf":[{"enum":["notReady","notStarted","inProgress","inReview","done"]},{"type":"null"}]},"fully_assessed":{"anyOf":[{"enum":["true","false"]},{"type":"null"}]},"obligation":{"anyOf":[{"enum":["mandatory","optional","excluded"]},{"type":"null"}]},"visible":{"type":"boolean"},"accessible":{"type":"boolean"}},"required":[],"additionalProperties":false,"minProperties":1}}},"required":[],"additionalProperties":false}}},"required":[],"additionalProperties":false}}},"required":["learners"],"additionalProperties":false}},"required":["course","learners"],"additionalProperties":false},"requestExample":{"course":{"children":[{"key":"intro","kind":"page","obligation":"mandatory","title":"intro","trigger":"visit"},{"key":"reading","kind":"page","obligation":"mandatory","title":"reading","trigger":"confirm"},{"key":"bonus","kind":"page","obligation":"optional","title":"bonus","trigger":"visit"},{"key":"final","kind":"page","obligation":"mandatory","title":"final","trigger":"visit"}],"sequence":"sequential","title":"Roles and triggers"},"expectations":{"learners":{"coach":{"course_access":"granted","security":{"can_launch":true,"coach":true,"participant":false},"steps":[{"applied":false}]},"outsider":{"course_access":"denied","security":{"can_launch":false},"steps":[{"applied":false,"reason":"course_access_denied"}]},"owner":{"course_access":"granted","security":{"can_launch":true,"owner":true,"participant":false},"steps":[{"applied":false}]},"participant":{"course_access":"granted","initial":{"final":{"accessible":false},"intro":{"accessible":true},"reading":{"accessible":false}},"security":{"can_launch":true,"coach":false,"owner":false,"participant":true},"steps":[{"applied":false,"reason":"node_not_accessible"},{"applied":false,"reason":"confirmation_not_enabled"},{"after":{"intro":{"fully_assessed":"true","status":"done"},"reading":{"accessible":true}},"applied":true},{"applied":false},{"after":{"bonus":{"accessible":true},"final":{"accessible":true},"reading":{"fully_assessed":"true","status":"done"}},"applied":true},{"after":{"course":{"status":"done"},"final":{"fully_assessed":"true","status":"done"}},"applied":true}]}}},"learners":[{"actions":[{"action":"confirm","node":"reading"},{"action":"confirm","node":"intro"},{"action":"visit","node":"intro"},{"action":"visit","node":"reading"},{"action":"confirm","node":"reading"},{"action":"visit","node":"final"}],"key":"participant","membership":"participant"},{"actions":[{"action":"visit","node":"intro"}],"key":"coach","membership":"coach"},{"actions":[{"action":"visit","node":"intro"}],"key":"owner","membership":"owner"},{"actions":[{"action":"visit","node":"intro"}],"key":"outsider","membership":"none"}]},"operations":[{"method":"POST","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"page":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"kind":{"const":"page"},"title":{"type":"string","minLength":1,"maxLength":120},"obligation":{"enum":["mandatory","optional","excluded"]},"trigger":{"enum":["visit","confirm"]},"start_offset_minutes":{"type":"integer","minimum":-525600,"maximum":525600,"not":{"minimum":-59,"maximum":59}},"end_offset_minutes":{"type":"integer","minimum":-525600,"maximum":525600,"not":{"minimum":-59,"maximum":59}}},"required":["key","kind","title"],"additionalProperties":false},"section":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"kind":{"const":"section"},"title":{"type":"string","minLength":1,"maxLength":120},"sequence":{"enum":["sequential","free"]},"children":{"type":"array","minItems":1,"maxItems":32,"items":{"$ref":"#/$defs/node"}}},"required":["key","kind","title","sequence","children"],"additionalProperties":false},"node":{"oneOf":[{"$ref":"#/$defs/page"},{"$ref":"#/$defs/section"}]}},"type":"object","properties":{"course":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"sequence":{"enum":["sequential","free"]},"children":{"type":"array","minItems":1,"maxItems":32,"items":{"$ref":"#/$defs/node"}}},"required":["title","sequence","children"],"additionalProperties":false},"learners":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"membership":{"enum":["participant","coach","owner","none"]},"actions":{"type":"array","maxItems":64,"items":{"type":"object","properties":{"node":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"action":{"enum":["visit","confirm"]}},"required":["node","action"],"additionalProperties":false}}},"required":["key","membership","actions"],"additionalProperties":false}},"expectations":{"type":"object","properties":{"learners":{"type":"object","minProperties":1,"maxProperties":8,"propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"course_access":{"enum":["granted","denied"]},"security":{"type":"object","properties":{"can_launch":{"type":"boolean"},"participant":{"type":"boolean"},"coach":{"type":"boolean"},"owner":{"type":"boolean"},"entry_admin":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":[],"additionalProperties":false,"minProperties":1},"initial":{"type":"object","minProperties":1,"maxProperties":65,"propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"status":{"anyOf":[{"enum":["notReady","notStarted","inProgress","inReview","done"]},{"type":"null"}]},"fully_assessed":{"anyOf":[{"enum":["true","false"]},{"type":"null"}]},"obligation":{"anyOf":[{"enum":["mandatory","optional","excluded"]},{"type":"null"}]},"visible":{"type":"boolean"},"accessible":{"type":"boolean"}},"required":[],"additionalProperties":false,"minProperties":1}},"steps":{"type":"array","maxItems":64,"items":{"type":"object","properties":{"applied":{"type":"boolean"},"reason":{"type":"string","maxLength":64},"visible_before":{"type":"boolean"},"accessible_before":{"type":"boolean"},"after":{"type":"object","minProperties":1,"maxProperties":65,"propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"status":{"anyOf":[{"enum":["notReady","notStarted","inProgress","inReview","done"]},{"type":"null"}]},"fully_assessed":{"anyOf":[{"enum":["true","false"]},{"type":"null"}]},"obligation":{"anyOf":[{"enum":["mandatory","optional","excluded"]},{"type":"null"}]},"visible":{"type":"boolean"},"accessible":{"type":"boolean"}},"required":[],"additionalProperties":false,"minProperties":1}}},"required":[],"additionalProperties":false}}},"required":[],"additionalProperties":false}}},"required":["learners"],"additionalProperties":false}},"required":["course","learners"],"additionalProperties":false},"requestExample":{"course":{"children":[{"key":"intro","kind":"page","obligation":"mandatory","title":"intro","trigger":"visit"},{"key":"reading","kind":"page","obligation":"mandatory","title":"reading","trigger":"confirm"},{"key":"bonus","kind":"page","obligation":"optional","title":"bonus","trigger":"visit"},{"key":"final","kind":"page","obligation":"mandatory","title":"final","trigger":"visit"}],"sequence":"sequential","title":"Roles and triggers"},"expectations":{"learners":{"coach":{"course_access":"granted","security":{"can_launch":true,"coach":true,"participant":false},"steps":[{"applied":false}]},"outsider":{"course_access":"denied","security":{"can_launch":false},"steps":[{"applied":false,"reason":"course_access_denied"}]},"owner":{"course_access":"granted","security":{"can_launch":true,"owner":true,"participant":false},"steps":[{"applied":false}]},"participant":{"course_access":"granted","initial":{"final":{"accessible":false},"intro":{"accessible":true},"reading":{"accessible":false}},"security":{"can_launch":true,"coach":false,"owner":false,"participant":true},"steps":[{"applied":false,"reason":"node_not_accessible"},{"applied":false,"reason":"confirmation_not_enabled"},{"after":{"intro":{"fully_assessed":"true","status":"done"},"reading":{"accessible":true}},"applied":true},{"applied":false},{"after":{"bonus":{"accessible":true},"final":{"accessible":true},"reading":{"fully_assessed":"true","status":"done"}},"applied":true},{"after":{"course":{"status":"done"},"final":{"fully_assessed":"true","status":"done"}},"applied":true}]}}},"learners":[{"actions":[{"action":"confirm","node":"reading"},{"action":"confirm","node":"intro"},{"action":"visit","node":"intro"},{"action":"visit","node":"reading"},{"action":"confirm","node":"reading"},{"action":"visit","node":"final"}],"key":"participant","membership":"participant"},{"actions":[{"action":"visit","node":"intro"}],"key":"coach","membership":"coach"},{"actions":[{"action":"visit","node":"intro"}],"key":"owner","membership":"owner"},{"actions":[{"action":"visit","node":"intro"}],"key":"outsider","membership":"none"}]}}],"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"job_id":{"type":"string","pattern":"^[0-9a-f]{32,}$"},"result_url":{"type":"string","format":"uri"},"status":{"const":"accepted"},"retry_after_seconds":{"type":"integer","minimum":1},"expected_seconds":{"type":"integer","minimum":1},"charged":{"const":false},"settlement":{"const":"after_success"},"duplicate":{"type":"boolean"}},"required":["job_id","result_url","status","retry_after_seconds","expected_seconds","charged","settlement"],"additionalProperties":false},{"type":"object","properties":{"job_id":{"type":"string","pattern":"^[0-9a-f]{32,}$"},"status":{"enum":["queued","running"]},"retry_after_seconds":{"type":"integer","minimum":1},"expected_seconds":{"type":"integer","minimum":1},"charged":{"const":false},"settlement":{"const":"after_success"}},"required":["job_id","status","retry_after_seconds","expected_seconds","charged","settlement"],"additionalProperties":false},{"type":"object","properties":{"job_id":{"type":"string","pattern":"^[0-9a-f]{32,}$"},"status":{"const":"completed"},"charged":{"const":true},"result":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"operation":{"const":"learning-path-prerequisite-rehearsal"},"result":{"type":"object","properties":{"rehearsal":{"type":"object","properties":{"artifact_id":{"type":"string","pattern":"^olat-lp-[0-9a-f]{64}\\.json$"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"bytes":{"type":"integer","minimum":1},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"learners":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"course_access":{"enum":["granted","denied"]},"actions":{"type":"integer","minimum":0},"applied_actions":{"type":"integer","minimum":0},"final":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"status":{"anyOf":[{"enum":["notReady","notStarted","inProgress","inReview","done"]},{"type":"null"}]},"accessible":{"type":"boolean"}},"required":["status","accessible"],"additionalProperties":false}}},"required":["key","course_access","actions","applied_actions"],"additionalProperties":false}},"expectation_checks":{"type":"integer","minimum":0},"discrepancy_count":{"type":"integer","minimum":0},"all_expectations_match":{"type":"boolean"},"native_execution_verified":{"const":true},"source_unchanged":{"const":true},"reference_time":{"type":"string","format":"date-time"},"scope":{"const":"Caller course policy saved and published through the original OpenOlat course editor, real repository memberships, native node visits/confirmations and AssessmentAccounting.evaluateAll(true) in a disposable private MariaDB; wall-clock dates are relative to the evaluation reference time."}},"required":["rehearsal","learners","expectation_checks","discrepancy_count","all_expectations_match","native_execution_verified","source_unchanged","reference_time","scope"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenOlat"},"version":{"const":"21.1-SNAPSHOT"},"source_commit":{"const":"8842b7ce370737b5431c595f0be98322680c308b"},"database":{"type":"string"},"runtime_bundle_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"canonical_request_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"locale":{"const":"en"},"timezone":{"const":"UTC"}},"required":["project","version","source_commit","database","runtime_bundle_sha256","canonical_request_sha256","locale","timezone"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false},"payment":{"type":"object","properties":{"settled":{"const":true},"tx_hash":{"type":["string","null"]},"payer":{"type":["string","null"]},"price_usdc":{"type":"number","const":0.005},"facilitator":{"type":["string","null"]}},"required":["settled","tx_hash","payer","price_usdc","facilitator"],"additionalProperties":false}},"required":["job_id","status","charged","result","payment"],"additionalProperties":false},{"type":"object","properties":{"job_id":{"type":"string","pattern":"^[0-9a-f]{32,}$"},"status":{"const":"failed"},"charged":{"const":false},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["job_id","status","charged","error"],"additionalProperties":false}]},"execution":{"mode":"asynchronous","acceptance_status":202,"expected_seconds":130,"retry_after_seconds":20,"settlement":"after_success","result_url_is_capability":true},"example_request":{"course":{"children":[{"key":"intro","kind":"page","obligation":"mandatory","title":"intro","trigger":"visit"},{"key":"reading","kind":"page","obligation":"mandatory","title":"reading","trigger":"confirm"},{"key":"bonus","kind":"page","obligation":"optional","title":"bonus","trigger":"visit"},{"key":"final","kind":"page","obligation":"mandatory","title":"final","trigger":"visit"}],"sequence":"sequential","title":"Roles and triggers"},"expectations":{"learners":{"coach":{"course_access":"granted","security":{"can_launch":true,"coach":true,"participant":false},"steps":[{"applied":false}]},"outsider":{"course_access":"denied","security":{"can_launch":false},"steps":[{"applied":false,"reason":"course_access_denied"}]},"owner":{"course_access":"granted","security":{"can_launch":true,"owner":true,"participant":false},"steps":[{"applied":false}]},"participant":{"course_access":"granted","initial":{"final":{"accessible":false},"intro":{"accessible":true},"reading":{"accessible":false}},"security":{"can_launch":true,"coach":false,"owner":false,"participant":true},"steps":[{"applied":false,"reason":"node_not_accessible"},{"applied":false,"reason":"confirmation_not_enabled"},{"after":{"intro":{"fully_assessed":"true","status":"done"},"reading":{"accessible":true}},"applied":true},{"applied":false},{"after":{"bonus":{"accessible":true},"final":{"accessible":true},"reading":{"fully_assessed":"true","status":"done"}},"applied":true},{"after":{"course":{"status":"done"},"final":{"fully_assessed":"true","status":"done"}},"applied":true}]}}},"learners":[{"actions":[{"action":"confirm","node":"reading"},{"action":"confirm","node":"intro"},{"action":"visit","node":"intro"},{"action":"visit","node":"reading"},{"action":"confirm","node":"reading"},{"action":"visit","node":"final"}],"key":"participant","membership":"participant"},{"actions":[{"action":"visit","node":"intro"}],"key":"coach","membership":"coach"},{"actions":[{"action":"visit","node":"intro"}],"key":"owner","membership":"owner"},{"actions":[{"action":"visit","node":"intro"}],"key":"outsider","membership":"none"}]},"serviceName":"oss_openolat_learning_path_prerequisite_rehearsal","tags":["oss","openolat","p046"]}