> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Automatisierung aktualisieren

> Aktualisiert eine Automatisierung.

Vorhandene Gruppen werden standardmäßig mitgliedsweise zusammengeführt (RFC 7396): Nicht angegebene Mitglieder
behalten ihren gespeicherten Wert, explizite null-Werte löschen ihn. Listenmitgliedschaften
werden vollständig ersetzt, und jedes gesendete Element wird mit dem gespeicherten Element
desselben Typs zusammengeführt, wenn dieser Typ auf beiden Seiten genau einmal vorkommt.

<div id="permissions">
  ## Berechtigungen
</div>

Erfordert einen Service-Benutzer mit der Berechtigung `ManageOrgAutomations` auf Organisationsebene.

<div id="merge-semantics">
  ## Merge-Semantik
</div>

Bei der Standardsemantik `merge_patch` werden PATCH-Felder auf Mitgliedsebene zusammengeführt (nach RFC 7396): Nicht übermittelte Mitglieder behalten ihren gespeicherten Wert, explizite Nullwerte löschen sie, und leere Gruppen sind No-Ops. Metadaten werden pro Schlüssel zusammengeführt, wobei Nullwerte Schlüssel löschen. Listen werden vollständig ersetzt. Jedes gesendete Element wird jedoch mit dem gespeicherten Element desselben Typs zusammengeführt, sofern dieser Typ auf beiden Seiten genau einmal vorkommt.

Bei der Semantik `replace_groups` wird nichts zusammengeführt: Eine gesendete Objektgruppe ersetzt die gespeicherte Gruppe vollständig, und eine gesendete Liste `triggers` oder `actions` ersetzt die gespeicherte Liste vollständig ohne elementweise Zusammenführung. Übermitteln Sie jedes Mitglied erneut, das Sie beibehalten möchten – nicht übermittelte Mitglieder werden gelöscht oder auf ihren Standardwert zurückgesetzt. `metadata` wird ebenfalls vollständig ersetzt. Um einen Schlüssel zu entfernen, übermitteln Sie den Satz erneut, ohne diesen Schlüssel einzuschließen. Nullwerte für Metadaten werden mit einem Fehler 400 abgelehnt, anstatt Schlüssel zu löschen. Nicht übermittelte Felder der obersten Ebene bleiben unverändert.

Prüfen Sie vor der Nutzung eines der beiden Verhaltensweisen im Feld `update_semantics` des [Endpunkts für Ereignisschemas](/de/api-reference/v3/automations/get-organizations-automations-schemas), welche Semantik für Ihre Organisation aktiv ist. Behandeln Sie es als offene Enum und tolerieren Sie auch andere Werte als die beiden oben genannten.

<div id="webhook-triggers">
  ## Webhook-Auslöser
</div>

Durch erneutes Hinzufügen eines `webhook:incoming`-Auslösers wird ein neues Secret generiert und in der Aktualisierungsantwort zurückgegeben. Das Secret wird nur dann angezeigt. Speichern Sie es daher, sobald Sie es erhalten. Beim Ersetzen oder Beibehalten eines vorhandenen Webhook-Auslösers bleibt das vorhandene Secret erhalten.


## OpenAPI

````yaml de/v3-openapi.yaml PATCH /v3/organizations/{org_id}/automations/{automation_id}
openapi: 3.1.0
info:
  description: Devin v3 API mit Service-User-Authentifizierung und RBAC
  title: Devin API v3
  version: 3.0.0
servers: []
security:
  - bearerAuth: []
paths:
  /v3/organizations/{org_id}/automations/{automation_id}:
    patch:
      tags:
        - automations
      summary: Automatisierung aktualisieren
      description: >-
        Aktualisiert eine Automatisierung.


        Vorhandene Gruppen werden standardmäßig mitgliedsweise zusammengeführt
        (RFC 7396): Nicht angegebene Mitglieder

        behalten ihren gespeicherten Wert, explizite null-Werte löschen ihn.
        Listenmitgliedschaften

        werden vollständig ersetzt, und jedes gesendete Element wird mit dem
        gespeicherten Element

        desselben Typs zusammengeführt, wenn dieser Typ auf beiden Seiten genau
        einmal vorkommt.
      operationId: >-
        handle_update_automation_v3_organizations__org_id__automations__automation_id__patch
      parameters:
        - in: path
          name: automation_id
          required: true
          schema:
            title: Automation Id
            type: string
        - description: 'Organisations-ID (Präfix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutomationUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationResponse'
          description: Erfolgreiche Antwort
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Nicht autorisiert
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Zugriff verweigert
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Nicht gefunden
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Konflikt
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Nicht verarbeitbarer Inhalt
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Zu viele Anfragen
components:
  schemas:
    AutomationUpdateRequest:
      additionalProperties: false
      description: >-
        PATCH-Felder werden standardmäßig eigenschaftsweise zusammengeführt:
        Weggelassene Eigenschaften bleiben erhalten,

        ausdrückliche null-Werte löschen sie, und leere Gruppen haben keine
        Wirkung. Metadaten werden pro Schlüssel zusammengeführt,

        wobei null-Werte Schlüssel löschen. Listen werden vollständig ersetzt
        (Löschen = erneutes Senden

        der Liste ohne das Element), während jedes gesendete Element mit dem

        gespeicherten Element desselben Typs zusammengeführt wird, wenn dieser
        Typ auf beiden

        Seiten genau einmal vorkommt. Elementeigenschaften, die beim Erstellen
        erforderlich sind (``prompt``,

        ``setup_prompt``, die Slack-Konfigurationen für Überwachung/Triage,
        ``scan_id``), können

        weggelassen werden, wenn ein Gegenstück vorhanden ist – sie werden wie
        jede andere Eigenschaft übernommen;

        ausdrückliches null wird abgelehnt.
      properties:
        actions:
          anyOf:
            - items:
                discriminator:
                  mapping:
                    message_session:
                      $ref: >-
                        #/components/schemas/AutomationMessageSessionActionUpdate
                    monitor_session:
                      $ref: >-
                        #/components/schemas/AutomationMonitorSessionActionUpdate
                    start_session:
                      $ref: '#/components/schemas/AutomationStartSessionActionUpdate'
                  propertyName: type
                oneOf:
                  - $ref: '#/components/schemas/AutomationStartSessionActionUpdate'
                  - $ref: '#/components/schemas/AutomationMessageSessionActionUpdate'
                  - $ref: '#/components/schemas/AutomationMonitorSessionActionUpdate'
              type: array
            - type: 'null'
          title: Actions
        concurrency:
          anyOf:
            - $ref: '#/components/schemas/AutomationConcurrency'
            - type: 'null'
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
        limits:
          anyOf:
            - $ref: '#/components/schemas/AutomationLimits'
            - type: 'null'
        metadata:
          anyOf:
            - additionalProperties:
                anyOf:
                  - type: string
                  - type: 'null'
              type: object
            - type: 'null'
          title: Metadata
        name:
          anyOf:
            - maxLength: 500
              minLength: 1
              type: string
            - type: 'null'
          title: Name
        notifications:
          anyOf:
            - $ref: '#/components/schemas/AutomationNotifications'
            - type: 'null'
        run_as:
          anyOf:
            - description: >-
                Identität, unter der die gestarteten Sitzungen ausgeführt
                werden. organization: die Automatisierungsidentität der
                Organisation (der System User in der App) – Sitzungen verwenden
                Systemberechtigungen, daher können MCP-Server, die mit einer
                persönlichen (nutzerbezogenen) Verbindung installiert wurden,
                nicht ausgewählt werden. Wird eine Automatisierung auf
                organization umgestellt, werden sie aus ihrer Auswahl entfernt.
                creator: persönliche Automatisierung – wird mit den eigenen
                Berechtigungen des Erstellers ausgeführt und ist nur für den
                Ersteller und Organisationsadministratoren sichtbar; wird für
                von Service-Benutzern erstellte Automatisierungen abgelehnt.
                Beim Erstellen erforderlich; null bei Aktualisierung setzt auf
                organization zurück.
              discriminator:
                mapping:
                  creator:
                    $ref: '#/components/schemas/AutomationRunAsCreator'
                  organization:
                    $ref: '#/components/schemas/AutomationRunAsOrganization'
                propertyName: type
              oneOf:
                - $ref: '#/components/schemas/AutomationRunAsOrganization'
                - $ref: '#/components/schemas/AutomationRunAsCreator'
            - type: 'null'
          description: null setzt auf organization zurück.
          title: Run As
        security_profile:
          anyOf:
            - $ref: '#/components/schemas/AutomationSecurityProfileSelection'
            - type: 'null'
          description: >-
            Die eigene Sicherheitsprofilbindung der Automatisierung: Eine
            profile_id pinnt dieses Profil, {"profile_id": null} speichert eine
            ausdrückliche Abwahl und ausdrückliches null stellt die Vererbung
            von der Organisation/dem Enterprise wieder her. Erfordert die
            Berechtigung zur Verwaltung von Sicherheitsprofilen.
        session_settings:
          anyOf:
            - $ref: '#/components/schemas/AutomationSessionSettings-Input'
            - type: 'null'
        tools:
          anyOf:
            - $ref: '#/components/schemas/AutomationTools'
            - type: 'null'
        triggers:
          anyOf:
            - items:
                $ref: '#/components/schemas/AutomationTriggerRequest-Input'
              type: array
            - type: 'null'
          title: Triggers
      title: AutomationUpdateRequest
      type: object
    AutomationResponse:
      additionalProperties: false
      properties:
        actions:
          items:
            discriminator:
              mapping:
                message_session:
                  $ref: '#/components/schemas/AutomationMessageSessionAction'
                monitor_session:
                  $ref: '#/components/schemas/AutomationMonitorSessionAction'
                start_session:
                  $ref: '#/components/schemas/AutomationStartSessionAction-Output'
              propertyName: type
            oneOf:
              - $ref: '#/components/schemas/AutomationStartSessionAction-Output'
              - $ref: '#/components/schemas/AutomationMessageSessionAction'
              - $ref: '#/components/schemas/AutomationMonitorSessionAction'
          title: Actions
          type: array
        automation_id:
          title: Automation Id
          type: string
        concurrency:
          anyOf:
            - $ref: '#/components/schemas/AutomationConcurrency'
            - type: 'null'
        created_at:
          title: Created At
          type: integer
        created_by:
          $ref: '#/components/schemas/ActorResponse'
        enabled:
          title: Enabled
          type: boolean
        last_edited_by:
          anyOf:
            - $ref: '#/components/schemas/ActorResponse'
            - type: 'null'
        last_invocation:
          anyOf:
            - $ref: '#/components/schemas/AutomationLastInvocation'
            - type: 'null'
        limits:
          anyOf:
            - $ref: '#/components/schemas/AutomationLimits'
            - type: 'null'
        metadata:
          additionalProperties:
            type: string
          default: {}
          title: Metadata
          type: object
        name:
          title: Name
          type: string
        notifications:
          anyOf:
            - $ref: '#/components/schemas/AutomationNotifications'
            - type: 'null'
        run_as:
          description: >-
            Identität, unter der gestartete Sitzungen ausgeführt werden.
            organization: die Automatisierungsidentität der Organisation (der
            System User in der App) — Sitzungen verwenden Systemberechtigungen,
            daher können MCP-Server mit einer persönlichen (nutzerbezogenen)
            Verbindung nicht ausgewählt werden; beim Umschalten einer
            Automatisierung auf organization werden sie aus der Auswahl
            entfernt. creator: persönliche Automatisierung — wird mit den
            Berechtigungen des Erstellers ausgeführt und ist nur für den
            Ersteller und Organisationsadministratoren sichtbar; für
            Automatisierungen, die von Service-Benutzern erstellt wurden, nicht
            zulässig. Beim Erstellen erforderlich; null bei Updates setzt den
            Wert auf organization zurück.
          discriminator:
            mapping:
              creator:
                $ref: '#/components/schemas/AutomationRunAsCreator'
              organization:
                $ref: '#/components/schemas/AutomationRunAsOrganization'
            propertyName: type
          oneOf:
            - $ref: '#/components/schemas/AutomationRunAsOrganization'
            - $ref: '#/components/schemas/AutomationRunAsCreator'
          title: Run As
        security_profile:
          anyOf:
            - $ref: '#/components/schemas/AutomationSecurityProfileResponse'
            - type: 'null'
          description: >-
            Die Sicherheitsprofilbindung der Automatisierung und die ermittelten
            maßgeblichen Profile. null, wenn Sicherheitsprofile für die
            Organisation nicht aktiviert sind.
        session_settings:
          anyOf:
            - $ref: '#/components/schemas/AutomationSessionSettings-Output'
            - type: 'null'
        template_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Template Id
        tools:
          anyOf:
            - $ref: '#/components/schemas/AutomationTools'
            - type: 'null'
        triggers:
          items:
            $ref: '#/components/schemas/AutomationTriggerResponse'
          title: Triggers
          type: array
        updated_at:
          title: Updated At
          type: integer
      required:
        - automation_id
        - name
        - enabled
        - triggers
        - actions
        - created_by
        - created_at
        - updated_at
      title: AutomationResponse
      type: object
    ProblemDetail:
      description: >-
        RFC 9457 application/problem+json-Fehlertext für die v3-API.


        detail wird aus dem Legacy-Body {"detail": ...} aus Gründen der
        Abwärtskompatibilität beibehalten; die

        anderen Member sind additiv. errors enthält Validierungsfehler auf
        Feldebene

        (nur 422).
      properties:
        detail:
          anyOf:
            - type: string
            - type: 'null'
          description: Eine menschenlesbare Erklärung, die speziell für diesen Fall gilt.
          title: Detail
        errors:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          description: Validierungsfehler auf Feldebene (nur bei 422-Antworten).
          title: Errors
        instance:
          anyOf:
            - type: string
            - type: 'null'
          description: Eine URI-Referenz (der Anfragepfad) für diesen Fall.
          title: Instance
        status:
          description: Der HTTP-Statuscode.
          title: Status
          type: integer
        title:
          description: Eine kurze, menschenlesbare Zusammenfassung des Problemtyps.
          title: Title
          type: string
        type:
          default: about:blank
          description: Eine URI-Referenz, die den Problemtyp identifiziert.
          title: Type
          type: string
      required:
        - title
        - status
      title: ProblemDetail
      type: object
    AutomationMessageSessionActionUpdate:
      additionalProperties: false
      properties:
        auto_create:
          default: false
          description: >-
            Wenn true, erstellt der erste Trigger eine neue, langfristig
            laufende Sitzung im Besitz der Automatisierung, an die nachfolgende
            Trigger Nachrichten senden.
          title: Auto Create
          type: boolean
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Die Payload des auslösenden Ereignisses wird automatisch angehängt.
            Erforderlich beim Erstellen oder Hinzufügen dieser Action; bei einem
            Update mit Merge-Semantik auslassen, um den gespeicherten Wert
            beizubehalten (null ist ungültig).
          title: Prompt
        target_devin_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Muss zur Organisation gehören; zum Bearbeiten einer Automatisierung
            mit dieser Action ist Schreibzugriff auf die Zielsitzung
            erforderlich (ausgenommen sind Änderungen, die nur aktivieren oder
            deaktivieren). Erforderlich, sofern auto_create nicht true ist; dann
            wird es serverseitig gesetzt, sobald der erste Trigger die Sitzung
            erstellt. Vom Client bereitgestellte Werte werden ignoriert.
          title: Target Devin Id
        type:
          const: message_session
          default: message_session
          title: Type
          type: string
      title: AutomationMessageSessionActionUpdate
      type: object
    AutomationMonitorSessionActionUpdate:
      additionalProperties: false
      properties:
        setup_prompt:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Wird in den System-Prompt der Sitzung eingefügt. Verwendet dieselbe
            Referenz-Token-Grammatik wie prompt. Erforderlich beim Erstellen
            oder Hinzufügen dieser Action; bei einem Update mit Merge-Semantik
            auslassen, um den gespeicherten Wert beizubehalten (null ist
            ungültig).
          title: Setup Prompt
        slack_monitor_config:
          anyOf:
            - $ref: '#/components/schemas/AutomationSlackMonitorConfig'
            - type: 'null'
          description: >-
            Erfordert genau einen slack:message-Trigger im selben Channel.
            Erforderlich beim Erstellen oder Hinzufügen dieser Action; bei einem
            Update mit Merge-Semantik auslassen, um den gespeicherten Wert
            beizubehalten (null ist ungültig).
        type:
          const: monitor_session
          default: monitor_session
          title: Type
          type: string
      title: AutomationMonitorSessionActionUpdate
      type: object
    AutomationStartSessionActionUpdate:
      additionalProperties: false
      properties:
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Die maßgebliche Quelle: Klartext mit Inline-Referenz-Tokens
            (@{owner}/{repo}, @{path}, @playbook:{id}, @skills:{name}, !{macro},
            ${SECRET_NAME}). Tokens mit Typpräfix werden beim Speichern
            validiert; unbekannte IDs führen zu einem 400-Fehler. Die Payload
            des auslösenden Ereignisses wird automatisch angehängt. Beim
            Erstellen oder Hinzufügen dieser Aktion erforderlich; bei einem
            Update mit Merge-Semantik auslassen, um den gespeicherten Wert
            beizubehalten (null ist ungültig).
          title: Prompt
        session:
          $ref: '#/components/schemas/AutomationSessionConfig-Input'
          description: Konfiguration für die gestartete Sitzung.
        type:
          const: start_session
          default: start_session
          title: Type
          type: string
      title: AutomationStartSessionActionUpdate
      type: object
    AutomationConcurrency:
      additionalProperties: false
      properties:
        max_concurrent_runs:
          anyOf:
            - minimum: 1
              type: integer
            - type: 'null'
          description: >-
            Maximale Anzahl gleichzeitig ausgeführter Runs für diese
            Automatisierung; weitere ausgelöste Ereignisse warten in der
            Warteschlange. Ein Run wird nicht mehr auf das Limit angerechnet,
            sobald seine Sitzung abgeschlossen ist und auf weitere Anweisungen
            wartet, nicht erst, wenn die Sitzung beendet wird. null =
            unbegrenzt.
          title: Max Concurrent Runs
        max_queue_depth:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          description: >-
            Maximale Anzahl ausgelöster Ereignisse, die in der Warteschlange der
            Automatisierung auf ihre Ausführung warten; darüber hinausgehende
            Ereignisse werden verworfen. Erfordert, dass max_concurrent_runs
            festgelegt ist. null = unbegrenzt.
          title: Max Queue Depth
      title: AutomationConcurrency
      type: object
    AutomationLimits:
      additionalProperties: false
      properties:
        invocations:
          anyOf:
            - $ref: '#/components/schemas/AutomationInvocationLimits'
            - type: 'null'
          description: Begrenzt, wie häufig die Automatisierung selbst ausgelöst wird.
        max_acu_limit:
          anyOf:
            - maximum: 1000
              minimum: 1
              type: integer
            - type: 'null'
          description: Pro gestarteter Sitzung (gleicher Name wie in der Sitzungs-API).
          title: Max Acu Limit
      title: AutomationLimits
      type: object
    AutomationNotifications:
      additionalProperties: false
      properties:
        email:
          anyOf:
            - $ref: '#/components/schemas/AutomationEmailNotification'
            - type: 'null'
        slack:
          anyOf:
            - $ref: '#/components/schemas/AutomationSlackNotification'
            - type: 'null'
      title: AutomationNotifications
      type: object
    AutomationRunAsCreator:
      additionalProperties: false
      properties:
        type:
          const: creator
          default: creator
          title: Type
          type: string
      title: AutomationRunAsCreator
      type: object
    AutomationRunAsOrganization:
      additionalProperties: false
      properties:
        type:
          const: organization
          default: organization
          title: Type
          type: string
      title: AutomationRunAsOrganization
      type: object
    AutomationSecurityProfileSelection:
      additionalProperties: false
      description: Die eigene Sicherheitsprofilbindung der Automatisierung.
      properties:
        profile_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Sicherheitsprofil, das dieser Automatisierung zugeordnet werden
            soll. null dokumentiert eine explizite Abwahl (kein Profil, auch
            wenn die Organisation oder das Enterprise einen empfohlenen Standard
            hat). Das Schreiben dieses Felds erfordert die Berechtigung zur
            Verwaltung von Sicherheitsprofilen; eine Abwahl kann ein
            verbindliches Organisations-/Enterprise-Profil nicht umgehen.
          title: Profile Id
      title: AutomationSecurityProfileSelection
      type: object
    AutomationSessionSettings-Input:
      additionalProperties: false
      description: >-
        Wird auf jede Sitzung angewendet, die diese Automatisierung startet
        (einschließlich Überwachungssitzungen).
      properties:
        devin_mode:
          anyOf:
            - enum:
                - normal
                - fast
                - lite
                - ultra
                - fusion
              type: string
            - type: 'null'
          description: null = Organisationsstandard.
          title: Devin Mode
        net_policy:
          anyOf:
            - $ref: '#/components/schemas/AutomationNetPolicy'
            - type: 'null'
      title: AutomationSessionSettings
      type: object
    AutomationTools:
      additionalProperties: false
      properties:
        linear_enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          description: Zugriff auf Linear-Tools gewähren.
          title: Linear Enabled
        mcp_servers:
          default: []
          description: >-
            Für gestartete Sitzungen aktivierte Marketplace-Slugs (das Feld slug
            der Ressource mcp-servers, z. B. 'github', 'notion'). Server, die
            mit einer persönlichen (nutzerbezogenen) Verbindung installiert
            wurden, erfordern run_as=creator; ihre Auswahl mit
            run_as=organization wird abgelehnt, da die Serviceidentität der
            Automatisierung kein persönliches Token dafür hat. Wird run_as einer
            Automatisierung auf organization umgestellt, werden sie aus der
            gespeicherten Auswahl entfernt.
          items:
            type: string
          title: Mcp Servers
          type: array
        slack_channels:
          default: []
          description: Channels, in die die Slack-Tools der Sitzung Beiträge posten dürfen.
          items:
            $ref: '#/components/schemas/AutomationSlackChannel'
          title: Slack Channels
          type: array
        slack_dm_scope:
          anyOf:
            - enum:
                - org_members
                - workspace
              type: string
            - type: 'null'
          description: >-
            Erlaubt gestarteten Sitzungen, 1:1-Slack-Direktnachrichten in den
            verbundenen Workspaces der Organisation zu öffnen. 'org_members'
            (nur Enterprise-Konten) beschränkt DM-Ziele auf Mitglieder der
            Organisation; 'workspace' (nur Nicht-Enterprise-Konten) erlaubt
            jedes berechtigte Workspace-Mitglied. Weglassen oder null, um
            Direktnachrichten zu deaktivieren.
          title: Slack Dm Scope
      title: AutomationTools
      type: object
    AutomationTriggerRequest-Input:
      additionalProperties: false
      properties:
        conditions:
          anyOf:
            - $ref: '#/components/schemas/AutomationConditions-Input'
            - type: 'null'
          description: null entspricht jedem Ereignis.
        event_type:
          description: Trigger-Ereignistyp, z. B. 'github:pull_request'.
          enum:
            - github:issue_comment
            - github:issues
            - github:pull_request
            - github:pull_request_review
            - github:pull_request_review_comment
            - github:check_run
            - github:push
            - gitlab:merge_request
            - gitlab:note
            - gitlab:issue
            - gitlab:issue_note
            - gitlab:push
            - gitlab:pipeline
            - schedule:recurring
            - slack:message
            - slack:reaction_added
            - linear:create
            - linear:label_added
            - linear:assigned
            - linear:status_changed
            - linear:priority_changed
            - linear:moved
            - jira:issue_created
            - jira:label_added
            - jira:status_changed
            - jira:assigned
            - pylon:issue_created
            - pylon:issue_tag_added
            - pylon:issue_status_changed
            - incident_io:incident_created
            - incident_io:status_changed
            - incident_io:severity_changed
            - incident_io:follow_up_created
            - webhook:incoming
            - snapshot_build:completed
          title: Event Type
          type: string
        replies:
          default: []
          description: >-
            Woran die Sitzung dieses Triggers gebunden wird und wohin ihre
            Antwort gesendet wird. Nur Antworten des übereinstimmenden Triggers
            werden ausgeführt; alle Einträge werden unabhängig verarbeitet und
            dedupliziert.
          items:
            $ref: '#/components/schemas/AutomationReply'
          title: Replies
          type: array
      required:
        - event_type
      title: AutomationTriggerRequest
      type: object
    AutomationMessageSessionAction:
      additionalProperties: false
      properties:
        auto_create:
          default: false
          description: >-
            Wenn true, erstellt der erste Trigger eine neue, langfristig
            laufende Sitzung im Besitz der Automatisierung, an die nachfolgende
            Trigger Nachrichten senden.
          title: Auto Create
          type: boolean
        prompt:
          description: Die Payload des auslösenden Ereignisses wird automatisch angehängt.
          title: Prompt
          type: string
        target_devin_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Muss zur Organisation gehören; zum Bearbeiten einer Automatisierung
            mit dieser Action ist Schreibzugriff auf die Zielsitzung
            erforderlich (ausgenommen sind Änderungen, die nur aktivieren oder
            deaktivieren). Erforderlich, sofern auto_create nicht true ist; dann
            wird es serverseitig gesetzt, sobald der erste Trigger die Sitzung
            erstellt. Vom Client bereitgestellte Werte werden ignoriert.
          title: Target Devin Id
        type:
          const: message_session
          default: message_session
          title: Type
          type: string
      required:
        - prompt
      title: AutomationMessageSessionAction
      type: object
    AutomationMonitorSessionAction:
      additionalProperties: false
      properties:
        setup_prompt:
          description: >-
            Wird in den System-Prompt der Sitzung eingefügt. Verwendet dieselbe
            Referenz-Token-Grammatik wie prompt.
          title: Setup Prompt
          type: string
        slack_monitor_config:
          $ref: '#/components/schemas/AutomationSlackMonitorConfig'
          description: Erfordert genau einen slack:message-Trigger im selben Channel.
        type:
          const: monitor_session
          default: monitor_session
          title: Type
          type: string
      required:
        - setup_prompt
        - slack_monitor_config
      title: AutomationMonitorSessionAction
      type: object
    AutomationStartSessionAction-Output:
      additionalProperties: false
      properties:
        prompt:
          description: >-
            Die maßgebliche Quelle: Klartext mit Inline-Referenz-Tokens
            (@{owner}/{repo}, @{path}, @playbook:{id}, @skills:{name}, !{macro},
            ${SECRET_NAME}). Tokens mit Typpräfix werden beim Speichern
            validiert; unbekannte IDs führen zu einem 400-Fehler. Die Payload
            des auslösenden Ereignisses wird automatisch angehängt.
          title: Prompt
          type: string
        session:
          $ref: '#/components/schemas/AutomationSessionConfig-Output'
          description: Konfiguration für die gestartete Sitzung.
        type:
          const: start_session
          default: start_session
          title: Type
          type: string
      required:
        - prompt
      title: AutomationStartSessionAction
      type: object
    ActorResponse:
      description: >-
        Ein Nutzer- oder Service-Benutzer-Principal, der einer Action oder
        Ressource zugeordnet ist.
      properties:
        id:
          description: Nutzer-ID oder Service-Benutzer-ID.
          title: Id
          type: string
        name:
          anyOf:
            - type: string
            - type: 'null'
          description: Anzeigename, serverseitig ermittelt; bei Löschung null.
          title: Name
        type:
          description: Art des Principals.
          enum:
            - user
            - service_user
          title: Type
          type: string
      required:
        - type
        - id
      title: ActorResponse
      type: object
    AutomationLastInvocation:
      additionalProperties: false
      properties:
        fired_at:
          title: Fired At
          type: integer
        status:
          description: >-
            succeeded | failed | skipped — offene Enumeration; Clients müssen
            neue Werte tolerieren.
          title: Status
          type: string
      required:
        - fired_at
        - status
      title: AutomationLastInvocation
      type: object
    AutomationSecurityProfileResponse:
      additionalProperties: false
      properties:
        profile_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Profile Id
        selection:
          description: >-
            Die eigene Profilzuordnung der Automatisierung: inherit (keine
            Zuordnung), none (explizite Abwahl) oder profile (legt profile_id
            fest). Sitzungen ermitteln die vollständige Kette Enterprise ->
            Organisation -> Automatisierung: Die Netzwerkrichtlinie der
            Automatisierung kann die Richtlinien der maßgeblichen Profile nur
            weiter einschränken, und eine Abwahl kann ein verbindliches
            Organisations-/Enterprise-Profil nicht umgehen.
          enum:
            - inherit
            - none
            - profile
          title: Selection
          type: string
        warnings:
          default: []
          description: >-
            Nicht blockierende Konfigurationskonflikte, z. B. ein empfohlener
            MCP-Server, dessen Endpunkt-Hostname vom maßgeblichen Profil
            blockiert wird (gestartete Sitzungen können keine Verbindung zu
            diesem Server herstellen). Es werden nur Hostnamen von
            Remote-MCP-Endpunkten geprüft; eine leere Liste garantiert nicht,
            dass jedes MCP- oder Netzwerkziel funktioniert. Wird beim Lesen und
            Schreiben einzelner Automatisierungen ausgefüllt; in Listenantworten
            leer.
          items:
            type: string
          title: Warnings
          type: array
      required:
        - selection
      title: AutomationSecurityProfileResponse
      type: object
    AutomationSessionSettings-Output:
      additionalProperties: false
      description: >-
        Wird auf jede Sitzung angewendet, die diese Automatisierung startet
        (einschließlich Überwachungssitzungen).
      properties:
        devin_mode:
          anyOf:
            - enum:
                - normal
                - fast
                - lite
                - ultra
                - fusion
              type: string
            - type: 'null'
          description: null = Organisationsstandard.
          title: Devin Mode
        net_policy:
          anyOf:
            - $ref: '#/components/schemas/AutomationNetPolicy'
            - type: 'null'
      title: AutomationSessionSettings
      type: object
    AutomationTriggerResponse:
      additionalProperties: false
      properties:
        conditions:
          anyOf:
            - $ref: '#/components/schemas/AutomationConditions-Output'
            - type: 'null'
        event_type:
          title: Event Type
          type: string
        replies:
          default: []
          items:
            $ref: '#/components/schemas/AutomationReply'
          title: Replies
          type: array
        trigger_id:
          description: >-
            Wird neu generiert, wenn triggers ersetzt wird – über Bearbeitungen
            hinweg nicht stabil.
          title: Trigger Id
          type: string
        webhook:
          anyOf:
            - $ref: '#/components/schemas/AutomationWebhookResponse'
            - type: 'null'
          description: Nur bei webhook:incoming-Triggern.
      required:
        - trigger_id
        - event_type
      title: AutomationTriggerResponse
      type: object
    AutomationSlackMonitorConfig:
      additionalProperties: false
      properties:
        source_channel_id:
          title: Source Channel Id
          type: string
        team_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Team Id
      required:
        - source_channel_id
      title: AutomationSlackMonitorConfig
      type: object
    AutomationSessionConfig-Input:
      additionalProperties: false
      properties:
        bypass_approval:
          default: false
          description: >-
            Genehmigt die Erstellung von Unter-Sitzungen automatisch (die
            einzige Prüfung, die dieses Flag umgeht); jede künftig umgehbare
            Prüfung erfordert ein neues Feld.
          title: Bypass Approval
          type: boolean
        notifications:
          anyOf:
            - $ref: '#/components/schemas/AutomationSessionNotificationsConfig'
            - type: 'null'
          description: Benachrichtigungen zu Sitzungsinhalten (derzeit nur Slack).
        platform:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            VM-Plattform für die Sitzung. Bei null verwendet die Sitzung zum
            Zeitpunkt des Aufrufs die Standardplattform der Organisation.
          title: Platform
        playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Schreibgeschützt: aus dem ersten @playbook:-Token im Prompt
            abgeleitet.
          title: Playbook Id
        repos:
          default: []
          description: 'Schreibgeschützt: aus Repo-Tokens im Prompt abgeleitet.'
          items:
            type: string
          title: Repos
          type: array
        tags:
          default: []
          description: >-
            Sitzungs-Tags. Bei Enterprises mit erzwungener Tag-Kennzeichnung ist
            genau ein zulässiger Wert erforderlich.
          items:
            type: string
          title: Tags
          type: array
      title: AutomationSessionConfig
      type: object
    AutomationInvocationLimits:
      additionalProperties: false
      properties:
        max_per_window:
          minimum: 1
          title: Max Per Window
          type: integer
        window_seconds:
          minimum: 60
          title: Window Seconds
          type: integer
      required:
        - max_per_window
        - window_seconds
      title: AutomationInvocationLimits
      type: object
    AutomationEmailNotification:
      additionalProperties: false
      properties:
        recipients:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          description: >-
            null = der Ersteller der Automatisierung; erforderlich für
            Automatisierungen, die von Service-Benutzern erstellt wurden.
          title: Recipients
        when:
          enum:
            - always
            - dispatch_failed
            - dispatch_succeeded
          title: When
          type: string
      required:
        - when
      title: AutomationEmailNotification
      type: object
    AutomationSlackNotification:
      additionalProperties: false
      properties:
        channel_id:
          title: Channel Id
          type: string
        when:
          enum:
            - always
            - dispatch_failed
            - dispatch_succeeded
          title: When
          type: string
      required:
        - when
        - channel_id
      title: AutomationSlackNotification
      type: object
    AutomationNetPolicy:
      additionalProperties: false
      properties:
        allow:
          items:
            anyOf:
              - $ref: '#/components/schemas/AutomationHostnameDestination'
              - $ref: '#/components/schemas/AutomationIpv4Destination'
              - $ref: '#/components/schemas/AutomationIpv6Destination'
          title: Allow
          type: array
      required:
        - allow
      title: AutomationNetPolicy
      type: object
    AutomationSlackChannel:
      additionalProperties: false
      properties:
        channel_id:
          title: Channel Id
          type: string
        team_id:
          title: Team Id
          type: string
      required:
        - team_id
        - channel_id
      title: AutomationSlackChannel
      type: object
    AutomationConditions-Input:
      additionalProperties: false
      properties:
        any:
          description: ODER-Verknüpfung von UND-Gruppen (feste zweistufige DNF).
          items:
            $ref: '#/components/schemas/AutomationConditionGroup'
          title: Any
          type: array
      required:
        - any
      title: AutomationConditions
      type: object
    AutomationReply:
      additionalProperties: false
      properties:
        type:
          description: >-
            notify_thread: einseitiger Hinweis „session started“ im auslösenden
            Thread beim Versand (Slack-Trigger). attach_thread: zweiseitige
            Bindung an den auslösenden Thread beim Versand (Slack-Trigger).
            post_response: stellt die Antwort des Agenten im auslösenden Kontext
            zu.
          enum:
            - notify_thread
            - attach_thread
            - post_response
          title: Type
          type: string
      required:
        - type
      title: AutomationReply
      type: object
    AutomationSessionConfig-Output:
      additionalProperties: false
      properties:
        bypass_approval:
          default: false
          description: >-
            Genehmigt die Erstellung von Unter-Sitzungen automatisch (die
            einzige Prüfung, die dieses Flag umgeht); jede künftig umgehbare
            Prüfung erfordert ein neues Feld.
          title: Bypass Approval
          type: boolean
        notifications:
          anyOf:
            - $ref: '#/components/schemas/AutomationSessionNotificationsConfig'
            - type: 'null'
          description: Benachrichtigungen zu Sitzungsinhalten (derzeit nur Slack).
        platform:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            VM-Plattform für die Sitzung. Bei null verwendet die Sitzung zum
            Zeitpunkt des Aufrufs die Standardplattform der Organisation.
          title: Platform
        playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Schreibgeschützt: aus dem ersten @playbook:-Token im Prompt
            abgeleitet.
          title: Playbook Id
        repos:
          default: []
          description: 'Schreibgeschützt: aus Repo-Tokens im Prompt abgeleitet.'
          items:
            type: string
          title: Repos
          type: array
        tags:
          default: []
          description: >-
            Sitzungs-Tags. Bei Enterprises mit erzwungener Tag-Kennzeichnung ist
            genau ein zulässiger Wert erforderlich.
          items:
            type: string
          title: Tags
          type: array
      title: AutomationSessionConfig
      type: object
    AutomationConditions-Output:
      additionalProperties: false
      properties:
        any:
          description: ODER-Verknüpfung von UND-Gruppen (feste zweistufige DNF).
          items:
            $ref: '#/components/schemas/AutomationConditionGroup'
          title: Any
          type: array
      required:
        - any
      title: AutomationConditions
      type: object
    AutomationWebhookResponse:
      additionalProperties: false
      properties:
        secret:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Nur vorhanden, wenn neu generiert (beim Erstellen oder erneuten
            Hinzufügen); danach nie wieder abrufbar. Das Ersetzen von triggers
            bewahrt das vorhandene Secret.
          title: Secret
        url:
          description: >-
            Der Endpunkt, an den externe Systeme POST-Anfragen senden (Header
            X-Webhook-Secret).
          title: Url
          type: string
      required:
        - url
      title: AutomationWebhookResponse
      type: object
    AutomationSessionNotificationsConfig:
      additionalProperties: false
      description: >-
        Wohin die Inhalte der gestarteten Sitzung gehen, im Gegensatz zur

        ``notifications``-Gruppe auf Automatisierungsebene
        (Versandstatus-Pings).
      properties:
        slack:
          anyOf:
            - $ref: '#/components/schemas/AutomationSessionSlackConfig'
            - type: 'null'
          description: >-
            Weist der Sitzung ein Slack-Zuhause zu: bidirektional für
            post_updates/forward_thread und post_response, nachdem die erste
            Zustellung den Thread verknüpft hat.
      title: AutomationSessionNotificationsConfig
      type: object
    AutomationHostnameDestination:
      additionalProperties: false
      properties:
        hostname:
          title: Hostname
          type: string
      required:
        - hostname
      title: AutomationHostnameDestination
      type: object
    AutomationIpv4Destination:
      additionalProperties: false
      properties:
        ipv4:
          title: Ipv4
          type: string
      required:
        - ipv4
      title: AutomationIpv4Destination
      type: object
    AutomationIpv6Destination:
      additionalProperties: false
      properties:
        ipv6:
          title: Ipv6
          type: string
      required:
        - ipv6
      title: AutomationIpv6Destination
      type: object
    AutomationConditionGroup:
      additionalProperties: false
      properties:
        all:
          description: 'UND: Alle Bedingungen in der Gruppe müssen zutreffen.'
          items:
            discriminator:
              mapping:
                between:
                  $ref: '#/components/schemas/AutomationRangeCondition'
                contains:
                  $ref: '#/components/schemas/AutomationStringCondition'
                ends_with:
                  $ref: '#/components/schemas/AutomationStringCondition'
                eq:
                  $ref: '#/components/schemas/AutomationComparisonCondition'
                globs:
                  $ref: '#/components/schemas/AutomationGlobCondition'
                gt:
                  $ref: '#/components/schemas/AutomationNumericCondition'
                gte:
                  $ref: '#/components/schemas/AutomationNumericCondition'
                in:
                  $ref: '#/components/schemas/AutomationListCondition'
                is_empty:
                  $ref: '#/components/schemas/AutomationEmptyCondition'
                is_not_empty:
                  $ref: '#/components/schemas/AutomationEmptyCondition'
                lt:
                  $ref: '#/components/schemas/AutomationNumericCondition'
                lte:
                  $ref: '#/components/schemas/AutomationNumericCondition'
                matches:
                  $ref: '#/components/schemas/AutomationMatchCondition'
                neq:
                  $ref: '#/components/schemas/AutomationComparisonCondition'
                not_contains:
                  $ref: '#/components/schemas/AutomationStringCondition'
                not_ends_with:
                  $ref: '#/components/schemas/AutomationStringCondition'
                not_globs:
                  $ref: '#/components/schemas/AutomationGlobCondition'
                not_in:
                  $ref: '#/components/schemas/AutomationListCondition'
                not_matches:
                  $ref: '#/components/schemas/AutomationMatchCondition'
                not_starts_with:
                  $ref: '#/components/schemas/AutomationStringCondition'
                recurrence:
                  $ref: '#/components/schemas/AutomationRecurrenceCondition'
                starts_with:
                  $ref: '#/components/schemas/AutomationStringCondition'
              propertyName: operator
            oneOf:
              - $ref: '#/components/schemas/AutomationComparisonCondition'
              - $ref: '#/components/schemas/AutomationStringCondition'
              - $ref: '#/components/schemas/AutomationNumericCondition'
              - $ref: '#/components/schemas/AutomationEmptyCondition'
              - $ref: '#/components/schemas/AutomationRangeCondition'
              - $ref: '#/components/schemas/AutomationListCondition'
              - $ref: '#/components/schemas/AutomationMatchCondition'
              - $ref: '#/components/schemas/AutomationRecurrenceCondition'
              - $ref: '#/components/schemas/AutomationGlobCondition'
          title: All
          type: array
      required:
        - all
      title: AutomationConditionGroup
      type: object
    AutomationSessionSlackConfig:
      additionalProperties: false
      properties:
        channel_id:
          title: Channel Id
          type: string
        mode:
          description: >-
            post_updates: Die Sitzung kommuniziert in einem Thread im Channel
            (für Nicht-Slack-Trigger verfügbar). forward_thread: Dasselbe,
            zusätzlich wird ein Rücklink im auslösenden Thread gepostet
            (erfordert einen Slack-Trigger). post_response: Die endgültige
            Antwort der Sitzung wird als Nachricht auf oberster Ebene im Channel
            gepostet; anschließend wird ihr Thread für Antworten und
            Folgemeldungen verknüpft (für jeden Trigger verfügbar).
          enum:
            - post_updates
            - forward_thread
            - post_response
          title: Mode
          type: string
      required:
        - mode
        - channel_id
      title: AutomationSessionSlackConfig
      type: object
    AutomationRangeCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          const: between
          title: Operator
          type: string
        value:
          description: Inklusiver Bereich [low, high].
          maxItems: 2
          minItems: 2
          prefixItems:
            - anyOf:
                - type: integer
                - type: number
            - anyOf:
                - type: integer
                - type: number
          title: Value
          type: array
      required:
        - field
        - operator
        - value
      title: AutomationRangeCondition
      type: object
    AutomationStringCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - contains
            - not_contains
            - starts_with
            - not_starts_with
            - ends_with
            - not_ends_with
          title: Operator
          type: string
        value:
          title: Value
          type: string
      required:
        - field
        - operator
        - value
      title: AutomationStringCondition
      type: object
    AutomationComparisonCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - eq
            - neq
          title: Operator
          type: string
        value:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: boolean
          title: Value
      required:
        - field
        - operator
        - value
      title: AutomationComparisonCondition
      type: object
    AutomationGlobCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - globs
            - not_globs
          title: Operator
          type: string
        value:
          description: >-
            Glob-Muster; jeder geänderte Pfad wird abgeglichen (github:push,
            gitlab:push).
          items:
            type: string
          title: Value
          type: array
      required:
        - field
        - operator
        - value
      title: AutomationGlobCondition
      type: object
    AutomationNumericCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - gt
            - lt
            - gte
            - lte
          title: Operator
          type: string
        value:
          anyOf:
            - type: integer
            - type: number
          title: Value
      required:
        - field
        - operator
        - value
      title: AutomationNumericCondition
      type: object
    AutomationListCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - in
            - not_in
          title: Operator
          type: string
        value:
          items:
            type: string
          title: Value
          type: array
      required:
        - field
        - operator
        - value
      title: AutomationListCondition
      type: object
    AutomationEmptyCondition:
      additionalProperties: false
      description: >-
        Unärer Operator: Prüft, ob das Feld leer ist; `value` enthält keine
        Daten.
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - is_empty
            - is_not_empty
          title: Operator
          type: string
        value:
          title: Value
          type: 'null'
      required:
        - field
        - operator
      title: AutomationEmptyCondition
      type: object
    AutomationMatchCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - matches
            - not_matches
          title: Operator
          type: string
        value:
          description: Regulärer Ausdruck.
          title: Value
          type: string
      required:
        - field
        - operator
        - value
      title: AutomationMatchCondition
      type: object
    AutomationRecurrenceCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          const: recurrence
          title: Operator
          type: string
        value:
          description: >-
            iCalendar-RRULE für das Feld rrule von schedule:recurring, z. B.
            FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0
          title: Value
          type: string
      required:
        - field
        - operator
        - value
      title: AutomationRecurrenceCondition
      type: object
  securitySchemes:
    bearerAuth:
      description: 'Servicebenutzer-Anmeldedaten (Präfix: cog_)'
      scheme: bearer
      type: http

````