Dokumente/API & Webhooks/Zuweisungen

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

MethodePfadGeltungsbereichZweck
GET/assignmentsassignments:readZuweisungen mit aggregiertem Fortschritt auflisten.
GET/assignments/{'{'}id{'}'}assignments:readEinzelne Zuweisung plus Fortschritt pro Benutzer.
POST/assignmentsassignments:writeEine Zuweisung erstellen. Löst assignment.created aus.
PATCH/assignments/{'{'}id{'}'}assignments:writeFrist, Pflicht-Flag, Notiz oder aktiven Zustand aktualisieren.
DELETE/assignments/{'{'}id{'}'}assignments:writeDeaktivieren. 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:

FeldZulässige WerteBedeutung von targetId / assigneeId
assigneeTypeuser, team, orgFür user und team ist die assigneeId die entsprechende UUID. Für org ist die ID Ihre Organisations-ID.
contentAreapractice, learnpractice sind praktische Challenges; learn sind Kurse und Szenarien.
targetType für practicecategory, module, topicString-Slug, z.B. web, owasp-top-10, sql-injection.
targetType für learncourse, scenarioString-Slug, z.B. owasp-top-10-2025, phishing-call-2025.
targetType für beide Bereichecustom-courseUUID 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/assignments

Zuweisung 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-cd0123456789

Zuweisung 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/json

Anfragetext

FeldTypErforderlichBedeutung
assigneeTypestringjauser, team oder org.
assigneeIduuidjaBenutzer-ID, Team-ID oder Organisations-ID je nach Typ.
contentAreastringjapractice oder learn.
targetTypestringjaSiehe Vokabular-Tabelle oben.
targetIdstringjaSlug oder ID der Kategorie, des Moduls, des Topics, des Kurses oder des Szenarios.
deadlineISO 8601jaFälligkeitsdatum und -zeit in UTC.
isMandatoryboolneinStandardmäßig true. Nicht-obligatorische Zuweisungen blockieren keine Compliance-Berichte.
notestringneinFreitext, 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/assignments

Zuweisung 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/json

Anfragetext

FeldTypBedeutung
deadlineISO 8601Neues Fälligkeitsdatum.
isMandatoryboolDas Pflicht-Flag umschalten.
notestringNotiz ersetzen. Leeren String senden, um zu löschen.
isActiveboolAktivieren 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-cd0123456789

Zuweisung 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-cd0123456789

Webhook-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.