Automatisierung API
Regelbasierte Automatisierung
Erstellen Sie Regeln, überprüfen Sie Ausführungen, lösen Sie Webhooks aus und verwalten Sie Genehmigungen
Die PrimeCal-Automatisierung basiert auf benutzereigenen Regeln mit Auslösern, Bedingungen und Aktionen. Diese Seite dokumentiert die vollständige Nicht-Administrator-Automatisierungsoberfläche direkt vom Controller und den DTOs.
JWT oder Benutzer API SchlüsselÖffentlicher Webhook-TriggerAudit-Protokolle und StatistikenIntelligente Werte
Quelle
- Controller:
backend-nestjs/src/automation/automation.controller.ts - Regel-DTOs:
backend-nestjs/src/automation/dto/automation-rule.dto.ts - DTOs anfordern:
backend-nestjs/src/automation/dto/automation-requests.dto.ts - Audit-DTOs:
backend-nestjs/src/automation/dto/automation-audit-log.dto.ts - Aufzählungen:
backend-nestjs/src/entities/automation-rule.entity.ts,backend-nestjs/src/entities/automation-condition.entity.ts,backend-nestjs/src/entities/automation-action.entity.ts
Authentifizierung und Berechtigungen
- Alle Regelverwaltungsrouten erfordern eine Authentifizierung.
POST /api/automation/webhook/:tokenist über@Public()explizit öffentlich.- Regeln gelten für den authentifizierten Benutzer.
- Sensible Regeln können vor der Ausführung eine ausdrückliche Genehmigung erfordern.
- Der Controller verwendet die Validierungspipe API für Erstellungs- und Aktualisierungsvorgänge.
Endpunktreferenz
| Methode | Pfad | Zweck | Anfrage oder Anfrage | Auth | Quelle |
|---|---|---|---|---|---|
POST | /api/automation/rules | Erstellen Sie eine Regel. | Hauptteil: Regel zum Erstellen von Nutzdaten | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
GET | /api/automation/rules | Listen Sie Regeln mit Paginierung und optional aktiviertem Filter auf. | Abfrage: page,limit,enabled | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
GET | /api/automation/rules/:id | Holen Sie sich eine Regel. | Pfad: id | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
PUT | /api/automation/rules/:id | Aktualisieren Sie eine Regel. | Pfad: id, Text: Teilregelnutzlast | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
DELETE | /api/automation/rules/:id | Löschen Sie eine Regel. | Pfad: id | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
POST | /api/automation/rules/:id/execute | Führen Sie sofort eine Regel aus. | Pfad: id | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
GET | /api/automation/rules/:id/audit-logs | Audit-Logs für eine Regel auflisten. | Pfad: id, Abfrage von AuditLogQueryDto | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
GET | /api/automation/audit-logs/:logId | Holen Sie sich einen Audit-Log-Eintrag. | Pfad: logId | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
GET | /api/automation/rules/:id/stats | Rufen Sie Ausführungsstatistiken für eine Regel ab. | Pfad: id | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
POST | /api/automation/webhook/:token | Lösen Sie eine Webhook-gestützte Regel aus. | Pfad: token, JSON-Nutzlast | Öffentlich | automation/automation.controller.ts |
POST | /api/automation/rules/:id/webhook/regenerate | Generieren Sie das Webhook-Token der Regel neu. | Pfad: id | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
POST | /api/automation/rules/:id/webhook/rotate-secret | Rotieren Sie das Webhook-Signaturgeheimnis. | Pfad: id | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
POST | /api/automation/rules/:id/approve | Genehmigen Sie eine sensible Regel. | Pfad: id, Text: note | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
GET | /api/automation/smart-values/:triggerType | Listen Sie intelligente Werte für einen Triggertyp auf. | Pfad: triggerType | JWT oder Benutzerschlüssel API | automation/automation.controller.ts |
Fordern Sie Formen an
Listen- und Genehmigungsabfragen
ListAutomationRulesQueryDto.page: optionaler int, Minimum1, Standard1ListAutomationRulesQueryDto.limit: optionaler int,1..100, Standard20ListAutomationRulesQueryDto.enabled: optionaler boolescher WertApproveAutomationRuleDto.note: optionale Zeichenfolge, maximal 500 Zeichen
Regeldefinition
CreateAutomationRuleDto in backend-nestjs/src/automation/dto/automation-rule.dto.ts
name: erforderlich,1..200Zeichendescription: optional, max. 1000 ZeichentriggerType: erforderliche EnumerationtriggerConfig: optionales ObjektisEnabled: optionaler boolescher WertconditionLogic: optionale AufzählungAND|ORconditions: optionales Array, maximal 10 Elementeactions: erforderliches Array,1..5Elemente
UpdateAutomationRuleDto behält die gleiche Struktur bei, macht jedoch alle Felder optional.
Triggertypen
Von backend-nestjs/src/entities/automation-rule.entity.ts
event.createdevent.updatedevent.deletedevent.starts_inevent.ends_inrelative_time_to_eventcalendar.importedscheduled.timewebhook.incoming
Konfiguration des relativen Zeittriggers
Die Konfiguration des relativen Zeittriggers verfügt über eine verschachtelte Validierung für:
eventFilter.calendarIdseventFilter.titleContainseventFilter.descriptionContainseventFilter.tagseventFilter.labelseventFilter.isAllDayOnlyeventFilter.isRecurringOnlyreferenceTime.base:start|endoffset.direction:before|afteroffset.value: int>= 0offset.unit:minutes|hours|days|weeksexecution.runOncePerEventexecution.fireForEveryOccurrenceOfRecurringEventexecution.skipPastexecution.pastDueGraceMinutes:0..60execution.schedulingWindowDays:1..730
Bedingungen
CreateConditionDto
field: erforderliche Enumerationoperator: erforderliche Enumerationvalue: erforderliche Zeichenfolge, maximal 1000 ZeichengroupId: optionale ZeichenfolgelogicOperator: erforderliche EnumerationAND|OR|NOTorder: optionale Nummer
Aktuelle Bedingungsfelder:
event.titleevent.descriptionevent.locationevent.notesevent.durationevent.is_all_dayevent.colorevent.statusevent.calendar.idevent.calendar.namewebhook.data
Zu den aktuellen Betreibern gehören:
contains,not_contains,matches,not_matchesequals,not_equalsstarts_with,ends_withis_empty,is_not_emptygreater_than,less_thangreater_than_or_equal,less_than_or_equalis_true,is_falsein,not_in,in_list,not_in_list
Aktionen
CreateActionDto
actionType: erforderliche EnumerationactionConfig: optionales Objektorder: optionale Nummer
Aktuelle Aktionstypen:
set_event_coloradd_event_tagsend_notificationupdate_event_titleupdate_event_descriptioncancel_eventmove_to_calendarcreate_taskwebhook
Beispielanrufe
Erstellen Sie eine Regel
curl -X POST "$PRIMECAL_API/api/automation/rules" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Highlight school pickups",
"triggerType": "event.created",
"conditionLogic": "AND",
"conditions": [
{
"field": "event.title",
"operator": "contains",
"value": "pickup",
"logicOperator": "AND"
}
],
"actions": [
{
"actionType": "set_event_color",
"actionConfig": { "color": "#f59e0b" }
}
]
}'
Führen Sie jetzt eine Regel aus
curl -X POST "$PRIMECAL_API/api/automation/rules/14/execute" \
-H "Authorization: Bearer $TOKEN"
Lösen Sie eine Webhook-Regel aus
curl -X POST "$PRIMECAL_API/api/automation/webhook/$WEBHOOK_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"source": "school-system",
"message": "Late pickup today"
}
}'
Lesen Sie intelligente Werte
curl "$PRIMECAL_API/api/automation/smart-values/event.created" \
-H "Authorization: Bearer $TOKEN"
Hinweise zu Reaktion und Verhalten
DELETE /api/automation/rules/:idgibt204 No Contentzurück.POST /api/automation/rules/:id/executegibt eine Nachricht und eine aktualisierte Ausführungsanzahl zurück.POST /api/automation/rules/:id/webhook/regenerategibt den neuenwebhookTokenzurück.POST /api/automation/rules/:id/webhook/rotate-secretgibt die neuenwebhookSecretundgraceUntilzurück.- Bei der Ausführung des öffentlichen Webhooks werden bei der Auswertung der Regel der Rohtext und die Header verwendet.
Best Practices
- Halten Sie die Aktionen eng und deterministisch. Regeln mit zu vielen Nebenwirkungen lassen sich nur schwer debuggen.
- Verwenden Sie intelligente Werte und den von
GET /api/automation/smart-values/:triggerTypezurückgegebenen Katalog anstelle von hartcodierten Token. - Bevorzugen Sie bei der Fehlerbehebung
GET /api/automation/rules/:id/audit-logsund/stats, bevor Sie die Regel selbst bearbeiten. - Webhook-Tokens neu generieren, wenn eine URL verloren geht. Rotieren Sie Webhook-Geheimnisse, wenn das Signaturgeheimnis verloren geht.
- Behandeln Sie beim Erstellen der Benutzeroberfläche relative Zeitauslöser als erstklassigen Untertyp, da ihre Konfiguration weitaus umfangreicher ist als die grundlegender Ereignisauslöser.