DokumentationProdukteArtim Academy LMSKalenderKalender V1
Termin anlegen
In API Explorer austestenÖffnet den Explorer mit Methode und Pfad dieses Requests.
Legt eine Stunde oder einen Termin an.
Mit courseId und ohne participants werden alle Eingeschriebenen des Kurses eingeladen — der Regelfall für eine Stunde. Alle Zeiten sind UTC.
POST https://calendar.api.lms.artim-industries.com/v1/events
| Methode | POST |
| Basis | calendar.api.lms.artim-industries.com/v1 |
| Scope | lms.calendar.events:write |
| Antwort | 201 |
| Zugang | Developer Mitgliedschaft |
| Auth | Authorization: Bearer lmsapi_… |
Parameter
Dieser Endpunkt nimmt keine Parameter.
Anfragekörper
| Feld | Typ | Bedeutung |
|---|---|---|
title | string | Der Titel. Pflicht. |
start | string | Beginn (ISO 8601). Pflicht. |
end | string | Ende (ISO 8601). Pflicht. |
description | string | Die Beschreibung. |
type | string | lesson, assignment, live-session oder meeting. Standard meeting. |
courseId | string | Der Kurs, zu dem der Termin gehört. |
location | string | Ort oder Konferenzadresse. |
allDay | boolean | Ob er den ganzen Tag füllt. |
participants | array | Die Kennungen der eingeladenen Konten. |
Felder, die der Vertrag nicht nennt, werden verworfen — ein Client kann keine eigenen Felder unterschieben.
{
"title": "Stunde 7 — Generics",
"start": "2026-09-02T16:00:00Z",
"end": "2026-09-02T17:30:00Z",
"type": "lesson",
"courseId": "crs_1a9f"
}
Anfrage
curl -X POST "https://calendar.api.lms.artim-industries.com/v1/events" \
-H "Authorization: Bearer lmsapi_…" \
-H "Content-Type: application/json" \
-d '{ "title": "Stunde 7 — Generics", "start": "2026-09-02T16:00:00Z", "end": "2026-09-02T17:30:00Z", "type": "lesson", "courseId": "crs_1a9f" }'
Antwort
| Feld | Typ | Bedeutung |
|---|---|---|
id | string | Die Kennung des neuen Termins. |
title | string | Der Titel. |
participantCount | integer | Wie viele Konten eingeladen wurden. |
{ "id": "evt_5f10", "title": "Stunde 7 — Generics", "participantCount": 23 }
Fehler
| Status | code | Wann |
|---|---|---|
400 | invalid_request | Ein Pflichtfeld fehlt, ein Typ passt nicht, oder ein Verweis zeigt auf etwas, das es hier nicht gibt. |
401 | invalid_token | Bearer fehlt, ist unbekannt oder abgelaufen. |
403 | missing_scope | Das Token trägt den Scope dieses Endpunkts nicht. |
404 | not_found | Der Eintrag gehört nicht zum freigegebenen Akademie — oder die Anfrage kam auf der falschen Subdomain an. |
409 | conflict | Der Zustand verbietet die Änderung — der Fehlerkörper nennt den Grund. |
429 | rate_limited | Kontingent erschöpft, siehe Retry-After. |
Jede Fehlerantwort trägt dieselbe Hülle: error.code benennt den Fehler, error.message sagt in einem Satz, was fehlt.
Rate Limits
Das Limit gilt pro Team, nicht pro Token.
| Zugang | Produktion | Sandbox |
|---|---|---|
| Hobby | 60 Anfragen/Minute | ohne Limit |
| Developer Mitgliedschaft | 10.000 Anfragen/Minute | ohne Limit |
Bei 429 sagt der Retry-After-Header, wie lange du warten sollst.