Zuweisungen
Zuweisungen verbinden ein Stück Schulung (eine Kategorie, ein Modul, ein Topic, einen Kurs oder ein Szenario) mit einem Benutzer, Team oder der gesamten Organisation mit einer Frist. Dieselben Datensätze unterstützen den SARIF-Auto-Zuweisungs-Flow. Alle Endpunkte befinden sich unter /api/public/v1/assignments.
Endpunkte
| Methode | Pfad | Geltungsbereich | Zweck |
|---|---|---|---|
| GET | /assignments | assignments:read | Zuweisungen mit aggregiertem Fortschritt auflisten. |
| GET | /assignments/{'{'}id{'}'} | assignments:read | Einzelne Zuweisung plus Fortschritt pro Benutzer. |
| POST | /assignments | assignments:write | Eine Zuweisung erstellen. Löst assignment.created aus. |
| PATCH | /assignments/{'{'}id{'}'} | assignments:write | Frist, Pflicht-Flag, Notiz oder aktiven Zustand aktualisieren. |
| DELETE | /assignments/{'{'}id{'}'} | assignments:write | Deaktivieren. Fortschrittsdatensätze bleiben erhalten. |
Vokabular für Zuweisungsempfänger und Inhalt
Jede Zuweisung trägt ein assigneeType + assigneeId-Paar und ein contentArea + targetType + targetId-Tripel. Die zulässigen Werte:
| Feld | Zulässige Werte | Bedeutung von targetId / assigneeId |
|---|---|---|
assigneeType | user, team, org | Für user und team ist die assigneeId die entsprechende UUID. Für org ist die ID Ihre Organisations-ID. |
contentArea | practice, learn | practice sind praktische Challenges; learn sind Kurse und Szenarien. |
targetType für practice | category, module, topic | String-Slug, z.B. web, owasp-top-10, sql-injection. |
targetType für learn | course, scenario | String-Slug, z.B. owasp-top-10-2025, phishing-call-2025. |
targetType für beide Bereiche | custom-course | UUID eines benutzerdefinierten Kurses (siehe Benutzerdefinierte Kurse). Die Elemente des Kurses bestimmen, welche Übungs-Topics und/oder Lern-Szenarien für den Abschluss verfolgt werden. |
Zuweisungen auflisten
Gibt jede Zuweisung in der Organisation zurück, aktiv und inaktiv, mit denormalisierten Fortschrittsaggregaten.
GET /api/public/v1/assignments
Authorization: Bearer scs_live_…Antwort
[
{
"id": "d7c8a1b2-3e45-4f67-89ab-cd0123456789",
"contentArea": "practice",
"assigneeType": "team",
"assigneeId": "4f8d3e2a-71cb-4d09-9ad7-5b8c7e1f0a32",
"assigneeName": "Payments",
"targetType": "topic",
"targetId": "sql-injection",
"targetTitle": "SQL Injection",
"deadline": "2026-06-12T23:59:59Z",
"isMandatory": true,
"isActive": true,
"isOverdue": false,
"avgProgress": 42.5,
"totalAssignees": 12,
"completedAssignees": 3,
"createdAt": "2026-05-29T08:00:00Z"
}
]Beispiel
curl -sS -H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/assignmentsZuweisung abrufen
Dieselben Felder wie der Listeneintrag, plus Anzeigename des Zuweisenden, optionale Notiz und ein Fortschrittsarray pro Benutzer, das für Compliance-Berichte geeignet ist.
GET /api/public/v1/assignments/{assignmentId}
Authorization: Bearer scs_live_…Antwort
{
"id": "d7c8a1b2-3e45-4f67-89ab-cd0123456789",
"contentArea": "practice",
"assigneeType": "team",
"assigneeId": "4f8d3e2a-71cb-4d09-9ad7-5b8c7e1f0a32",
"assigneeName": "Payments",
"targetType": "topic",
"targetId": "sql-injection",
"targetTitle": "SQL Injection",
"deadline": "2026-06-12T23:59:59Z",
"isMandatory": true,
"isActive": true,
"isOverdue": false,
"note": "Follow-up to the May audit finding.",
"assignedByName": "API Key: CI Ingestion",
"avgProgress": 42.5,
"totalAssignees": 12,
"completedAssignees": 3,
"createdAt": "2026-05-29T08:00:00Z",
"userProgress": [
{
"userId": "b1a4d7c2-9e58-4f3a-83cd-2c6f1a90e7b4",
"name": "Jane Smith",
"email": "jane.smith@acme.com",
"totalChallenges": 8,
"completedChallenges": 8,
"progressPercent": 100,
"completedAt": "2026-06-04T10:18:42Z",
"isOverdue": false
}
]
}Beispiel
curl -sS -H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/assignments/d7c8a1b2-3e45-4f67-89ab-cd0123456789Zuweisung erstellen
Erstellt die Zuweisung und löst assignment.created aus. Wenn der Empfänger ein Team oder die Organisation ist, werden Fortschrittszeilen pro Benutzer für jedes Mitglied bei Erstellung materialisiert, sodass die Antwort von GET /assignments/{id} sofort vollständig ist.
POST /api/public/v1/assignments
Authorization: Bearer scs_live_…
Content-Type: application/jsonAnfragetext
| Feld | Typ | Erforderlich | Bedeutung |
|---|---|---|---|
assigneeType | string | ja | user, team oder org. |
assigneeId | uuid | ja | Benutzer-ID, Team-ID oder Organisations-ID je nach Typ. |
contentArea | string | ja | practice oder learn. |
targetType | string | ja | Siehe Vokabular-Tabelle oben. |
targetId | string | ja | Slug oder ID der Kategorie, des Moduls, des Topics, des Kurses oder des Szenarios. |
deadline | ISO 8601 | ja | Fälligkeitsdatum und -zeit in UTC. |
isMandatory | bool | nein | Standardmäßig true. Nicht-obligatorische Zuweisungen blockieren keine Compliance-Berichte. |
note | string | nein | Freitext, der dem Empfänger im Dashboard angezeigt wird. |
Antwort
{
"id": "d7c8a1b2-3e45-4f67-89ab-cd0123456789",
"contentArea": "practice",
"assigneeType": "team",
"assigneeId": "4f8d3e2a-71cb-4d09-9ad7-5b8c7e1f0a32",
"assigneeName": "Payments",
"targetType": "topic",
"targetId": "sql-injection",
"targetTitle": "SQL Injection",
"deadline": "2026-06-12T23:59:59Z",
"isMandatory": true,
"isActive": true,
"isOverdue": false,
"avgProgress": 0,
"totalAssignees": 12,
"completedAssignees": 0,
"createdAt": "2026-05-29T08:00:00Z"
}Beispiel
curl -sS -X POST \
-H "Authorization: Bearer $SCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"assigneeType": "team",
"assigneeId": "4f8d3e2a-71cb-4d09-9ad7-5b8c7e1f0a32",
"contentArea": "practice",
"targetType": "topic",
"targetId": "sql-injection",
"deadline": "2026-06-12T23:59:59Z",
"isMandatory": true,
"note": "Follow-up to the May audit finding."
}' \
https://api.limeplate.com/api/public/v1/assignmentsZuweisung aktualisieren
Jede Teilmenge von deadline, isMandatory, note und isActive kann gesendet werden. Ausgelassene Felder bleiben unverändert. Verwenden Sie isActive: false als nicht-destruktives Äquivalent zu DELETE.
PATCH /api/public/v1/assignments/{assignmentId}
Authorization: Bearer scs_live_…
Content-Type: application/jsonAnfragetext
| Feld | Typ | Bedeutung |
|---|---|---|
deadline | ISO 8601 | Neues Fälligkeitsdatum. |
isMandatory | bool | Das Pflicht-Flag umschalten. |
note | string | Notiz ersetzen. Leeren String senden, um zu löschen. |
isActive | bool | Aktivieren oder deaktivieren, ohne den Fortschritt zu beeinflussen. |
Antwort
{
"message": "Assignment updated"
}Beispiel
curl -sS -X PATCH \
-H "Authorization: Bearer $SCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"deadline": "2026-06-26T23:59:59Z",
"note": "Extended after sprint planning."
}' \
https://api.limeplate.com/api/public/v1/assignments/d7c8a1b2-3e45-4f67-89ab-cd0123456789Zuweisung deaktivieren
Setzt isActive auf false. Die Zuweisung erscheint nicht mehr in der "Meine Zuweisungen"-Ansicht des Empfängers und trägt nicht mehr zu Compliance-Metriken bei, aber historische Fortschrittsdatensätze bleiben erhalten, sodass Berichte für vergangene Zeiträume weiterhin auflösen.
DELETE /api/public/v1/assignments/{assignmentId}
Authorization: Bearer scs_live_…Antwort
{
"message": "Assignment deactivated"
}Beispiel
curl -sS -X DELETE \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/assignments/d7c8a1b2-3e45-4f67-89ab-cd0123456789Webhook-Ereignisse
Das Erstellen einer Zuweisung über POST /assignments löst assignment.created einmal aus. Wenn ein einzelner Empfänger 100% Fortschritt auf dem zugrundeliegenden Ziel erreicht, wird assignment.completed für diesen Benutzer ausgelöst — für Team- und Organisations-Zuweisungen bedeutet dies ein Ereignis pro Mitglied, das 100% erreicht, nicht ein Ereignis für die gesamte Zuweisung. Beide Ereignisse enthalten die Zuweisungs-ID und die Empfänger-Identität. Abonnieren Sie und verifizieren Sie Signaturen über /docs/api/webhooks.