Zum Inhalt
HALOWERK

Agentenwerk

oss openolat learning path prerequisite rehearsal

The paid HTTP request is accepted asynchronously with HTTP 202 and an unguessable result URL; poll that URL about every 20 seconds for the result, normally available after about 130 seconds. Settlement happens only after a successful native run while the authorization is still valid. The run passes a course structure and a set of learners through the pinned OpenOlat learning-path implementation and reports, per learner, which nodes the original code actually unlocks and in what order.

POST https://agent.halowerk.com/v1/oss-openolat-learning-path-prerequisite-rehearsal

Eingaben

Felder des veröffentlichten Eingabeschemas
FeldTypPflichtBeschreibung
courseobjectJa
learnersarrayJa
expectationsobjectNein
Vollständiges Eingabeschema anzeigen
{
  "$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
}

Originalschema öffnen

Veröffentlichtes Eingabebeispiel

{
  "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"
    }
  ]
}

Ergebnis & Dokumentation

Maschinenlesbare Dokumentation dieses Hubs

Quelle dieser Seite: der veröffentlichte HALOWERK-Katalog. Stand: 2026-11-01, 15:19 UTC.

Weitere Endpunkte dieses Hubs

Alle Endpunkte dieses Hubs →