openapi: 3.0.3
info:
  version: ''
  title: Event Manager
  description: >
    This section describes **what the eGain server does** when knowledge base
    events occur: it **sends** (POSTs) event payloads to the webhook URL you
    configure (e.g. in the eGain Admin console). You do not call this API; the
    server calls your endpoint.


    The documentation below is a reference for the request bodies the server
    delivers to your webhook and how your endpoint should respond.
servers:
  - url: https://api.egain.cloud/knowledge/eventmgr/v4
    description: Production Server
paths:
  /webhook:
    servers:
      - url: https://example.com
        description: Example webhook URL (configure your URL in eGain Admin console).
    put:
      summary: Asynchronous Knowledge Events
      operationId: knowledge_asynchronous_events
      description: >
        **You do not call this URL.** This page is a **reference** for **your
        webhook endpoint**: it documents the request 

        bodies the **eGain server** sends **to the URL you configure** (e.g. in
        the eGain Admin console). When knowledge 

        events occur, the server **PUTs** to your webhook; the callbacks below
        define each event type and the payload your 

        endpoint will receive.<br><br>

        Webhook registration is done outside this API (e.g. via the eGain Admin
        console). Any "Try it" or request sample 

        below is for illustration only — in practice the **server** PUTs to
        **your** webhook URL, not the other way around.<br><br>

        __Your webhook response:__ Your endpoint should return **204 No
        Content** on successful processing so that the 

        server does not retry.<br><br>

        __Note:__ When the server puts event details to your callback URL:

        <ul>
          <li>Read timeout happens if your callback takes more than 10 seconds.</li>
          <li>Only response codes <strong>429</strong>, <strong>502</strong>, or <strong>503</strong> (or read timeout) 
          trigger a retry; the server retries with a 30 second interval for a maximum of 3 times.</li>
          <li>Any other response code is ignored; the server does not retry and considers the delivery complete.</li>
          <li>Events provide at-least-once delivery guarantee. The same event may be delivered more than once.</li>
          <li>Implement idempotent processing using the notificationId for deduplication.</li>
          <li>Events may be delivered out of order.</li>
          <li>New event types may be added in the future. Your endpoint should ignore event types it does not recognize.</li>
          <li>Existing event payloads may gain new fields in the future. Existing attributes will not be renamed or removed, 
          so changes remain backwards compatible. Your endpoint should tolerate (ignore) unknown fields rather than failing on them.</li>
        </ul>
      servers:
        - url: https://example.com
          description: Example webhook host (configure your URL in eGain Admin console).
      x-hideTryItPanel: true
      x-hideReplay: true
      responses:
        '204':
          description: >-
            Your endpoint should return 204 No Content on success so the server
            does not retry.
        '429':
          description: >-
            Too Many Requests. If your endpoint returns this, the server retries
            with a 30 second interval, up to 3 times.
        '502':
          description: >-
            Bad Gateway. If your endpoint returns this, the server retries with
            a 30 second interval, up to 3 times.
        '503':
          description: >-
            Service Unavailable. If your endpoint returns this, the server
            retries with a 30 second interval, up to 3 times.
        4XX:
          $ref: '#/components/responses/4xx_client_error'
        5XX:
          $ref: '#/components/responses/other_codes_ignored'
      callbacks:
        article_type_created:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Type Created
              operationId: article_type_created
              description: >
                ## Event name

                article_type_created


                ## Description

                Event generated when a new Article Type is created in the
                knowledge base.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Type Created:
                        $ref: '#/components/examples/ArticleTypeCreated'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_type_updated:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Type Updated
              operationId: article_type_updated
              description: >
                ## Event name

                article_type_updated


                ## Description

                Event generated when an Article Type is updated in the knowledge
                base.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Type Updated:
                        $ref: '#/components/examples/ArticleTypeUpdated'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_type_deleted:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Type Deleted
              operationId: article_type_deleted
              description: >
                ## Event name

                article_type_deleted


                ## Description

                Event generated when an Article Type is deleted from the
                knowledge base.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Type Deleted:
                        $ref: '#/components/examples/ArticleTypeDeleted'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        installation_name_added:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Installation Name Added
              operationId: installation_name_added
              description: |
                ## Event name
                installation_name_added

                ## Description
                Event generated when a new Installation Name is added.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Installation Name Added:
                        $ref: '#/components/examples/InstallationNameAdded'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        installation_name_updated:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Installation Name Updated
              operationId: installation_name_updated
              description: |
                ## Event name
                installation_name_updated

                ## Description
                Event generated when an Installation Name is updated.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Installation Name Updated:
                        $ref: '#/components/examples/InstallationNameUpdated'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_availability_date_reached:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Availability Date Reached
              operationId: article_availability_date_reached
              description: >
                ## Event name

                article_availability_date_reached


                ## Description

                Event generated when an article's availability date is reached
                and the article becomes available in portals.

                __Dev Note:__ This fires when a scheduled article's availability
                date is reached; distinct from article_published which fires
                when the article is published (and may include
                availability/expiration dates in the payload).
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Availability Date Reached:
                        $ref: '#/components/examples/ArticleAvailabilityDateReached'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_expiration_date_reached:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Expiration Date Reached
              operationId: article_expiration_date_reached
              description: >
                ## Event name

                article_expiration_date_reached


                ## Description

                Event generated when an article expires.

                __Dev Note:__ This fires when an article's expiration date is
                reached; the same payload shape as
                article_availability_date_reached but for expiration.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Expiration Date Reached:
                        $ref: '#/components/examples/ArticleExpirationDateReached'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_created:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Created
              operationId: article_created
              description: >
                ## Event name

                article_created


                ## Description

                Event generated when a new article is created in the Knowledge
                Base.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Created:
                        $ref: '#/components/examples/ArticleCreated'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_published:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Published
              operationId: article_published
              description: |
                ## Event name
                article_published

                ## Description
                Event generated when an article is published.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Published:
                        $ref: '#/components/examples/ArticlePublished'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_moved:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Moved
              operationId: article_moved
              description: |
                ## Event name
                article_moved

                ## Description
                Event generated when an article is moved to a different folder.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Moved:
                        $ref: '#/components/examples/ArticleMoved'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_deleted:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Deleted
              operationId: article_deleted
              description: >
                ## Event name

                article_deleted


                ## Description

                Event generated when an article is deleted from the Knowledge
                Base.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Deleted:
                        $ref: '#/components/examples/ArticleDeleted'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_stage_updated:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Stage Updated
              operationId: article_stage_updated
              description: >
                ## Event name

                article_stage_updated


                ## Description

                Event generated when an article's stage is changed; that is, the
                article moves from one stage to another in its lifecycle.

                __Dev Note:__ The payload may include a `changes` array
                describing what attributes changed (e.g. content, topic
                associations).
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Stage Updated:
                        $ref: '#/components/examples/ArticleStageUpdated'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_copied:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Copied
              operationId: article_copied
              description: |
                ## Event name
                article_copied

                ## Description
                Event generated when an article is copied.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Copied:
                        $ref: '#/components/examples/ArticleCopied'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_checked_out:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Checked Out
              operationId: article_checked_out
              description: |
                ## Event name
                article_checked_out

                ## Description
                Event generated when an article is checked out for editing.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Checked Out:
                        $ref: '#/components/examples/ArticleCheckedOut'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_checked_in:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Checked In
              operationId: article_checked_in
              description: >
                ## Event name

                article_checked_in


                ## Description

                Event generated when an article is checked in after
                modification.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Checked In:
                        $ref: '#/components/examples/ArticleCheckedIn'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        article_modified:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Article Modified
              operationId: article_modified
              description: |
                ## Event name
                article_modified

                ## Description
                Event generated when an article is modified.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Article Modified:
                        $ref: '#/components/examples/ArticleModified'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        topic_created:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Topic Created
              operationId: topic_created
              description: >
                ## Event name

                topic_created


                ## Description

                Event generated when a new topic is created in the knowledge
                base.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Topic Created:
                        $ref: '#/components/examples/TopicCreated'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        topic_updated:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Topic Updated
              operationId: topic_updated
              description: |
                ## Event name
                topic_updated

                ## Description
                Event generated when a topic is updated in the knowledge base.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Topic Updated:
                        $ref: '#/components/examples/TopicUpdated'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        topic_moved:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Topic Moved
              operationId: topic_moved
              description: >
                ## Event name

                topic_moved


                ## Description

                Event generated when a topic is moved to a different parent
                topic.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Topic Moved:
                        $ref: '#/components/examples/TopicMoved'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        topic_copied:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Topic Copied
              operationId: topic_copied
              description: |
                ## Event name
                topic_copied

                ## Description
                Event generated when a topic is copied in the knowledge base.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Topic Copied:
                        $ref: '#/components/examples/TopicCopied'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        topic_deleted:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Topic Deleted
              operationId: topic_deleted
              description: |
                ## Event name
                topic_deleted

                ## Description
                Event generated when a topic is deleted from the knowledge base.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Topic Deleted:
                        $ref: '#/components/examples/TopicDeleted'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
        portal_updated:
          '{customerCallbackUrl}':
            parameters:
              - name: customerCallbackUrl
                in: path
                required: true
                schema:
                  type: string
                description: >-
                  Customer webhook URL (configured out-of-band, e.g. via Admin
                  console).
            put:
              summary: Portal Updated
              operationId: portal_updated
              description: |
                ## Event name
                portal_updated

                ## Description
                Event generated when a portal is updated in the knowledge base.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/KnowledgeSubscriptionEventAsync'
                    examples:
                      Portal Updated:
                        $ref: '#/components/examples/PortalUpdated'
              responses:
                '204':
                  $ref: '#/components/responses/204_no_content'
                '429':
                  description: >-
                    Too Many Requests. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '502':
                  description: >-
                    Bad Gateway. If your endpoint returns this, the server
                    retries with a 30 second interval, up to 3 times.
                '503':
                  description: >-
                    Service Unavailable. If your endpoint returns this, the
                    server retries with a 30 second interval, up to 3 times.
                4XX:
                  $ref: '#/components/responses/4xx_client_error'
                5XX:
                  $ref: '#/components/responses/other_codes_ignored'
components:
  securitySchemes:
    oAuthClient:
      type: oauth2
      description: Authenticate as a client (Server to Server).
      flows:
        clientCredentials:
          tokenUrl: >-
            https://login.egain.cloud/global/f51302dd-7036-41b5-b619-e1a52a67c780/oauth2/v2.0/token
          scopes:
            https://api.egain.cloud/auth/.default: Default scope
      x-defaultClientId: 7bbc9ba6-0465-46f0-91f4-d2742cdc0ef8
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  responses:
    4xx_client_error:
      description: >-
        Any other 4xx client error. The server does not retry; the response is
        ignored.
    other_codes_ignored:
      description: >-
        Any other response code (e.g. other 5xx). The server does not retry; the
        response is ignored.
    204_no_content:
      description: No Content
  schemas:
    Metadata:
      type: object
      title: Metadata
      required:
        - notificationId
        - payloadVersion
        - timestamp
        - tenantId
      properties:
        notificationId:
          type: string
          format: uuid
          description: >
            Unique identifier for this notification - UUID. Use this for
            deduplication 

            to ensure idempotent processing. The same notificationId indicates 

            a duplicate delivery of the same event.
          example: 550e8400-e29b-41d4-a716-446655440000
        payloadVersion:
          type: string
          description: Version of the payload structure.
          example: v20
        timestamp:
          type: string
          format: date-time
          description: Timestamp when the event notification was generated.
          example: '2026-02-11T10:30:00.123Z'
        tenantId:
          type: string
          description: Tenant identifier for multi-tenant deployments.
          example: tenant-123
    ArticleTypeInfo:
      title: Article Type
      type: object
      properties:
        articleCategoryId:
          description: Specifies the article category ID.
          type: integer
          format: int32
          minimum: 0
          maximum: 7
        typeName:
          description: Indicates the article type name.
          type: string
          minLength: 1
          maxLength: 255
          pattern: ^[\w\W]+$
        useStructuredAuthoring:
          description: >-
            Indicates whether structured authoring is enabled for this article
            type, requiring content to be created using predefined fields
          type: boolean
        useForCertifiedAnswers:
          description: >-
            Indicates whether articles of this type can be designated as
            Certified Answers
          type: boolean
        articleTypeId:
          description: The ID of the Article Type.
          type: string
          minLength: 15
          maxLength: 20
          pattern: ^[0-9]+$
          example: '932100000002020'
        imageURL:
          description: The URL of an image to be associated with the Article Type
          type: string
          minLength: 1
          maxLength: 2000
          pattern: ^(?:https?:\/\/|\/\/|\/|\.\.?\/|[a-zA-Z0-9])[\w\-\.\/%\?=#&:]*$
        description:
          description: Description of Article Type
          type: string
          minLength: 0
          maxLength: 2000
          pattern: ^[\w\W]*$
        isSearchable:
          description: >-
            Indicates whether articles of this type are included in portal
            search results
          type: boolean
        isBrowsable:
          description: >-
            Indicates whether articles of this type are displayed in portal
            browsing areas such as topics and lists
          type: boolean
    ArticleTypeCreatedUpdated:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - article_type_created
                - article_type_updated
        - $ref: '#/components/schemas/ArticleTypeInfo'
        - type: object
          properties:
            departmentId:
              type: string
              description: ID of the department this event belongs to.
              example: '999'
    ArticleTypeDeleted:
      type: object
      title: ArticleTypeDeleted
      description: Payload for article type deleted events.
      required:
        - eventType
      properties:
        eventType:
          type: string
          enum:
            - article_type_deleted
        articleTypeId:
          type: string
          minLength: 15
          maxLength: 20
          pattern: ^[0-9]+$
          description: Unique identifier of the deleted article type.
          example: '999900000002020'
        departmentId:
          type: string
          description: ID of the department this event belongs to.
          example: '999'
    InstallationName:
      type: object
      title: InstallationName
      description: Payload for installation name added or updated events.
      required:
        - eventType
      properties:
        eventType:
          type: string
          enum:
            - installation_name_added
            - installation_name_updated
        id:
          type: integer
          format: int64
          description: Unique identifier of the installation.
          example: 2025
        name:
          type: string
          description: Name of the installation.
          example: auth
        isRemote:
          type: boolean
          description: Indicates whether the installation is remote.
          example: true
    ArticleEventBase:
      type: object
      title: ArticleEventBase
      description: Base schema containing common properties for article events.
      properties:
        articleId:
          type: string
          description: Unique identifier of the article.
          example: auth-130556
        departmentId:
          type: string
          description: ID of the department this event belongs to.
          pattern: ^[1-9]\d*$
          minLength: 3
          maxLength: 10
          example: '999'
        portalIds:
          type: array
          items:
            type: string
          description: List of portal IDs.
          example:
            - PZ-1000
            - auth-1064
        languageCodes:
          type: array
          items:
            type: string
          description: List of language codes.
          example:
            - en-US
            - es-ES
            - fr-FR
            - en-GB
        parentFolderId:
          type: string
          minLength: 15
          maxLength: 20
          pattern: ^[0-9]+$
          description: Unique identifier of the parent folder (numeric ID).
          example: '999900000000001'
    ArticleAvailableOrExpired:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - article_availability_date_reached
                - article_expiration_date_reached
        - $ref: '#/components/schemas/ArticleEventBase'
        - type: object
          properties:
            reachedDate:
              type: string
              format: date-time
              description: Date when the availability or expiration was reached.
              example: '2026-01-19T14:15:52.880Z'
            versionId:
              type: string
              description: >-
                The ID of the article version that reached availability or
                expiration date.
              example: DEV1-5001
            articleEditionIds:
              type: array
              items:
                type: string
              description: List of article edition IDs.
              example:
                - DEV1-7001
                - DEV1-7002
    Change:
      type: object
      title: Change
      description: Represents a single change made to an article, topic, or portal.
      properties:
        changeType:
          type: string
          description: >-
            Type of change performed. Possible values include "update",
            "association", "dissociation".
          example: update
        attribute:
          type: string
          description: The attribute that was changed.
          example: content
        values:
          type: array
          items:
            type: string
          description: The values associated with the change (for certain change types).
          example:
            - auth-5714
    Changes:
      type: object
      title: Changes
      description: >-
        Object containing the list of changes made to an article, topic, or
        portal.
      properties:
        change:
          type: array
          description: Array of change items.
          items:
            $ref: '#/components/schemas/Change'
    ArticleCreated:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - article_created
        - $ref: '#/components/schemas/ArticleEventBase'
        - type: object
          properties:
            changes:
              $ref: '#/components/schemas/Changes'
    ArticleModifiedCheckedInPublished:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - article_published
                - article_checked_in
                - article_modified
        - $ref: '#/components/schemas/ArticleEventBase'
        - type: object
          properties:
            availabilityDate:
              type: string
              format: date-time
              description: Date when a scheduled article becomes available.
              example: '2026-01-19T14:00:00.000Z'
            expirationDate:
              type: string
              format: date-time
              description: Date when an article expires.
              example: '2026-02-19T14:00:00.000Z'
            changes:
              $ref: '#/components/schemas/Changes'
    ArticleCopiedMoved:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - article_moved
                - article_copied
        - $ref: '#/components/schemas/ArticleEventBase'
        - type: object
          properties:
            sourceParentFolderId:
              type: string
              minLength: 15
              maxLength: 20
              pattern: ^[0-9]+$
              description: The source parent folder ID before the move or copy.
              example: '999900000001009'
            destinationParentFolderId:
              type: string
              minLength: 15
              maxLength: 20
              pattern: ^[0-9]+$
              description: The destination parent folder ID after the move or copy.
              example: '999900000001010'
            sourceParentTopicId:
              type: string
              description: The source parent topic ID before the move or copy.
              example: ERTG-1007
            destinationParentTopicId:
              type: string
              description: The destination parent topic ID after the move or copy.
              example: ERTG-1008
    ArticleDeletedOrCheckedOut:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - article_deleted
                - article_checked_out
        - $ref: '#/components/schemas/ArticleEventBase'
    ArticleStageUpdated:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - article_stage_updated
        - $ref: '#/components/schemas/ArticleEventBase'
        - type: object
          properties:
            previousStage:
              type: string
              description: The previous stage of the article.
              example: Legal Review
            currentStage:
              type: string
              description: The current stage of the article.
              example: staging
            workflowMilestone:
              type: string
              enum:
                - authoring
                - staging
                - publish
              description: Represents article's milestone in its review workflow.
              example: staging
            changes:
              $ref: '#/components/schemas/Changes'
    TopicEventBase:
      type: object
      title: TopicEventBase
      description: Base schema containing common properties for topic events.
      properties:
        topicId:
          type: string
          description: Unique identifier of the topic.
          example: auth-5711
        departmentId:
          type: string
          description: ID of the department this event belongs to.
          example: '999'
        parentTopicId:
          type: string
          description: Identifier of the parent topic.
          example: '-1'
        portalIds:
          type: array
          items:
            type: string
          description: List of portal IDs.
          example:
            - PZ-1000
            - auth-1050
        languageCodes:
          type: array
          items:
            type: string
          description: List of language codes.
          example:
            - en-US
            - es-ES
            - tr-TR
            - fr-FR
            - en-GB
    TopicCreatedDeleted:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - topic_created
                - topic_deleted
        - $ref: '#/components/schemas/TopicEventBase'
    TopicUpdated:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - topic_updated
        - $ref: '#/components/schemas/TopicEventBase'
        - type: object
          properties:
            changes:
              $ref: '#/components/schemas/Changes'
    TopicMovedCopied:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - topic_moved
                - topic_copied
        - $ref: '#/components/schemas/TopicEventBase'
        - type: object
          properties:
            sourceParentTopicId:
              type: string
              description: The source parent topic ID before the move or copy.
              example: auth-5716
    PortalUpdated:
      type: object
      title: PortalUpdated
      description: Payload for portal updated events.
      required:
        - eventType
      properties:
        eventType:
          type: string
          enum:
            - portal_updated
        portalId:
          type: string
          description: Unique identifier of the portal.
          example: auth-1050
        departmentId:
          type: string
          description: ID of the department this event belongs to.
          example: '999'
        languageCodes:
          type: array
          items:
            type: string
          description: List of language codes.
          example:
            - en-US
            - es-ES
            - tr-TR
            - fr-FR
            - en-GB
        changes:
          $ref: '#/components/schemas/Changes'
    ArticleCopied:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - article_copied
        - $ref: '#/components/schemas/ArticleEventBase'
        - type: object
          properties:
            sourceParentTopicId:
              type: string
              description: The source parent topic ID before the copy.
              example: auth-5716
            destinationParentTopicId:
              type: string
              description: The destination parent topic ID after the copy.
              example: auth-5717
            sourceParentFolderId:
              type: string
              minLength: 15
              maxLength: 20
              pattern: ^[0-9]+$
              description: The source parent folder long ID before the copy.
              example: '999900000000001'
            destinationParentFolderId:
              type: string
              minLength: 15
              maxLength: 20
              pattern: ^[0-9]+$
              description: The destination parent folder long ID after the copy.
              example: '999900000000002'
    ArticleCheckOut:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - article_check_out
        - $ref: '#/components/schemas/ArticleEventBase'
    ArticleCheckInModified:
      allOf:
        - type: object
          required:
            - eventType
          properties:
            eventType:
              type: string
              enum:
                - article_check_in
                - article_modified
        - $ref: '#/components/schemas/ArticleEventBase'
        - type: object
          properties:
            availabilityDate:
              type: string
              format: date-time
              description: Date when a scheduled article becomes available.
              example: '2026-03-06T19:12:00.000Z'
            expirationDate:
              type: string
              format: date-time
              description: Date when an article expires.
              example: '2026-03-06T19:16:29.000Z'
            changes:
              $ref: '#/components/schemas/Changes'
    EventPayload:
      oneOf:
        - $ref: '#/components/schemas/ArticleTypeCreatedUpdated'
        - $ref: '#/components/schemas/ArticleTypeDeleted'
        - $ref: '#/components/schemas/InstallationName'
        - $ref: '#/components/schemas/ArticleAvailableOrExpired'
        - $ref: '#/components/schemas/ArticleModifiedCheckedInPublished'
        - $ref: '#/components/schemas/ArticleCreated'
        - $ref: '#/components/schemas/ArticleCopiedMoved'
        - $ref: '#/components/schemas/ArticleDeletedOrCheckedOut'
        - $ref: '#/components/schemas/ArticleStageUpdated'
        - $ref: '#/components/schemas/ArticleCopied'
        - $ref: '#/components/schemas/ArticleCheckOut'
        - $ref: '#/components/schemas/ArticleCheckInModified'
        - $ref: '#/components/schemas/TopicCreatedDeleted'
        - $ref: '#/components/schemas/TopicUpdated'
        - $ref: '#/components/schemas/TopicMovedCopied'
        - $ref: '#/components/schemas/PortalUpdated'
      discriminator:
        propertyName: eventType
        mapping:
          article_type_created: '#/components/schemas/ArticleTypeCreatedUpdated'
          article_type_updated: '#/components/schemas/ArticleTypeCreatedUpdated'
          article_type_deleted: '#/components/schemas/ArticleTypeDeleted'
          installation_name_added: '#/components/schemas/InstallationName'
          installation_name_updated: '#/components/schemas/InstallationName'
          article_availability_date_reached: '#/components/schemas/ArticleAvailableOrExpired'
          article_expiration_date_reached: '#/components/schemas/ArticleAvailableOrExpired'
          article_created: '#/components/schemas/ArticleCreated'
          article_published: '#/components/schemas/ArticleModifiedCheckedInPublished'
          article_moved: '#/components/schemas/ArticleCopiedMoved'
          article_deleted: '#/components/schemas/ArticleDeletedOrCheckedOut'
          article_stage_updated: '#/components/schemas/ArticleStageUpdated'
          article_copied: '#/components/schemas/ArticleCopiedMoved'
          article_checked_out: '#/components/schemas/ArticleDeletedOrCheckedOut'
          article_checked_in: '#/components/schemas/ArticleModifiedCheckedInPublished'
          article_modified: '#/components/schemas/ArticleModifiedCheckedInPublished'
          topic_created: '#/components/schemas/TopicCreatedDeleted'
          topic_updated: '#/components/schemas/TopicUpdated'
          topic_moved: '#/components/schemas/TopicMovedCopied'
          topic_copied: '#/components/schemas/TopicMovedCopied'
          topic_deleted: '#/components/schemas/TopicCreatedDeleted'
          portal_updated: '#/components/schemas/PortalUpdated'
    Message:
      type: object
      title: Message
      required:
        - id
        - eventTimestamp
        - payload
      properties:
        id:
          type: string
          description: Message identifier within this notification batch.
          example: '1000'
        eventTimestamp:
          type: string
          format: date-time
          description: Timestamp when the event occurred.
          example: '2026-02-11T10:30:00.123Z'
        payload:
          $ref: '#/components/schemas/EventPayload'
    KnowledgeSubscriptionEventAsync:
      type: object
      title: KnowledgeSubscriptionEvent
      required:
        - metadata
        - messages
      properties:
        metadata:
          $ref: '#/components/schemas/Metadata'
        messages:
          type: array
          description: Messages for the event.
          minItems: 1
          maxItems: 250
          items:
            $ref: '#/components/schemas/Message'
  examples:
    ArticleTypeCreated:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440000
          payloadVersion: v20
          timestamp: '2026-02-11T10:30:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1000'
            eventTimestamp: '2026-02-11T10:30:00.123Z'
            payload:
              eventType: article_type_created
              articleTypeId: '999900000002020'
              typeName: FAQ
              departmentId: '999'
    ArticleTypeUpdated:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440001
          payloadVersion: v20
          timestamp: '2026-02-11T10:35:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1001'
            eventTimestamp: '2026-02-11T10:35:00.123Z'
            payload:
              eventType: article_type_updated
              articleTypeId: '999900000002020'
              departmentId: '999'
    ArticleTypeDeleted:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440002
          payloadVersion: v20
          timestamp: '2026-02-11T10:40:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1002'
            eventTimestamp: '2026-02-11T10:40:00.123Z'
            payload:
              eventType: article_type_deleted
              articleTypeId: '999900000002020'
              departmentId: '999'
    InstallationNameAdded:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440003
          payloadVersion: v20
          timestamp: '2026-02-11T10:45:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1003'
            eventTimestamp: '2026-02-11T10:45:00.123Z'
            payload:
              eventType: installation_name_added
              id: 2025
              name: auth
              isRemote: true
    InstallationNameUpdated:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440004
          payloadVersion: v20
          timestamp: '2026-02-11T10:50:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1004'
            eventTimestamp: '2026-02-11T10:50:00.123Z'
            payload:
              eventType: installation_name_updated
              id: 2025
              name: auth
              isRemote: true
    ArticleAvailabilityDateReached:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440005
          payloadVersion: v20
          timestamp: '2026-02-11T10:55:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1005'
            eventTimestamp: '2026-02-11T10:55:00.123Z'
            payload:
              eventType: article_availability_date_reached
              articleId: DEV1-21670
              departmentId: '999'
              portalIds:
                - DEV1-1009
                - PZ-1001
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
              parentFolderId: '999900000001005'
              reachedDate: '2026-01-19T14:15:52.880Z'
              versionId: DEV1-5001
              articleEditionIds:
                - DEV1-7001
                - DEV1-7002
    ArticleExpirationDateReached:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440006
          payloadVersion: v20
          timestamp: '2026-02-11T11:00:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1006'
            eventTimestamp: '2026-02-11T11:00:00.123Z'
            payload:
              eventType: article_expiration_date_reached
              articleId: DEV1-21670
              departmentId: '999'
              portalIds:
                - DEV1-1009
                - PZ-1001
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
              parentFolderId: '999900000001006'
              reachedDate: '2026-01-19T14:15:52.880Z'
              versionId: DEV1-5001
              articleEditionIds:
                - DEV1-7001
                - DEV1-7002
    ArticleCreated:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440007
          payloadVersion: v20
          timestamp: '2026-02-11T11:05:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1007'
            eventTimestamp: '2026-02-11T11:05:00.123Z'
            payload:
              eventType: article_created
              articleId: auth-130556
              departmentId: '999'
              portalIds:
                - PZ-1000
                - auth-1064
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
              parentFolderId: '999900000001007'
              changes:
                change:
                  - changeType: update
                    attribute: content
                  - changeType: association
                    attribute: topic
                    values:
                      - auth-5714
    ArticlePublished:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440008
          payloadVersion: v20
          timestamp: '2026-02-11T11:10:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1008'
            eventTimestamp: '2026-02-11T11:10:00.123Z'
            payload:
              eventType: article_published
              articleId: auth-130556
              departmentId: '999'
              portalIds:
                - PZ-1000
                - auth-1064
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
              parentFolderId: '999900000001008'
              availabilityDate: '2026-01-19T14:00:00.000Z'
              expirationDate: '2026-02-19T14:00:00.000Z'
              changes:
                change:
                  - changeType: update
                    attribute: content
                  - changeType: association
                    attribute: topic
                    values:
                      - auth-5714
    ArticleMoved:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440009
          payloadVersion: v20
          timestamp: '2026-02-11T11:15:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1009'
            eventTimestamp: '2026-02-11T11:15:00.123Z'
            payload:
              eventType: article_moved
              articleId: auth-130556
              departmentId: '999'
              portalIds:
                - PZ-1000
                - auth-1064
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
              sourceParentFolderId: '999900000001009'
              destinationParentFolderId: '999900000001010'
              sourceParentTopicId: ERTG-1007
              destinationParentTopicId: ERTG-1008
    ArticleDeleted:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440010
          payloadVersion: v20
          timestamp: '2026-02-11T11:20:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1010'
            eventTimestamp: '2026-02-11T11:20:00.123Z'
            payload:
              eventType: article_deleted
              articleId: auth-130552
              departmentId: '999'
              portalIds:
                - PZ-1000
                - auth-1050
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
              parentFolderId: '999900000001010'
    ArticleStageUpdated:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440011
          payloadVersion: v20
          timestamp: '2026-02-11T11:25:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1011'
            eventTimestamp: '2026-02-11T11:25:00.123Z'
            payload:
              eventType: article_stage_updated
              articleId: auth-130556
              departmentId: '999'
              portalIds:
                - PZ-1000
                - auth-1064
              languageCodes:
                - en-US
              parentFolderId: '999900000001011'
              previousStage: authoring
              currentStage: staging
              changes:
                change:
                  - changeType: update
                    attribute: content
                  - changeType: association
                    attribute: topic
                    values:
                      - auth-5714
    ArticleCopied:
      value:
        metadata:
          notificationId: d741ff6c-17a2-473b-b0c5-306a6d617717
          payloadVersion: v20
          timestamp: '2026-03-06T19:01:25.875Z'
          tenantId: tenant-123
        messages:
          - id: '1135'
            eventTimestamp: '2026-03-06T19:01:18.250Z'
            payload:
              eventType: article_copied
              articleId: auth-22128
              departmentId: '999'
              portalIds:
                - auth-1009
                - PZ-1001
              languageCodes:
                - en-US
                - fr-FR
                - en-GB
              sourceParentTopicId: auth-3529
              destinationParentTopicId: auth-3528
              sourceParentFolderId: '999900000001135'
              destinationParentFolderId: '999900000001136'
    ArticleCheckedOut:
      value:
        metadata:
          notificationId: 57826919-0743-4d7a-bb38-ffb5d35a35dd
          payloadVersion: v20
          timestamp: '2026-03-06T18:53:54.227Z'
          tenantId: tenant-123
        messages:
          - id: '1130'
            eventTimestamp: '2026-03-06T18:53:40.180Z'
            payload:
              eventType: article_checked_out
              articleId: auth-22127
              departmentId: '999'
              portalIds:
                - auth-1011
                - PZ-1001
              languageCodes:
                - en-US
                - fr-FR
              parentFolderId: '999900000001130'
    ArticleCheckedIn:
      value:
        metadata:
          notificationId: dc6d4a71-859d-4874-a5d1-5bcf2eafeadb
          payloadVersion: v20
          timestamp: '2026-03-06T19:10:57.077Z'
          tenantId: tenant-123
        messages:
          - id: '1139'
            eventTimestamp: '2026-03-06T19:10:48.906Z'
            payload:
              eventType: article_checked_in
              articleId: auth-22126
              departmentId: '999'
              portalIds:
                - auth-1011
                - PZ-1001
              languageCodes:
                - en-US
                - fr-FR
              parentFolderId: '999900000001139'
              changes:
                change:
                  - changeType: update
                    attribute: content
                  - changeType: association
                    attribute: topic
                    values:
                      - auth-3531
              availabilityDate: '2026-03-06T19:12:00.000Z'
              expirationDate: '2026-03-06T19:16:29.000Z'
    ArticleModified:
      value:
        metadata:
          notificationId: dc6d4a71-859d-4874-a5d1-5bcf2eafeadc
          payloadVersion: v20
          timestamp: '2026-03-06T19:10:57.077Z'
          tenantId: tenant-123
        messages:
          - id: '1140'
            eventTimestamp: '2026-03-06T19:10:48.906Z'
            payload:
              eventType: article_modified
              articleId: auth-22126
              departmentId: '999'
              portalIds:
                - auth-1011
                - PZ-1001
              languageCodes:
                - en-US
                - ja-JA
              parentFolderId: '999900000001140'
              changes:
                change:
                  - changeType: update
                    attribute: content
              availabilityDate: '2026-03-06T19:12:00.000Z'
              expirationDate: '2026-03-06T19:16:29.000Z'
    TopicCreated:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440012
          payloadVersion: v20
          timestamp: '2026-02-11T11:30:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1012'
            eventTimestamp: '2026-02-11T11:30:00.123Z'
            payload:
              eventType: topic_created
              topicId: auth-5711
              departmentId: '999'
              parentTopicId: '-1'
              portalIds:
                - PZ-1000
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
    TopicUpdated:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440013
          payloadVersion: v20
          timestamp: '2026-02-11T11:35:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1013'
            eventTimestamp: '2026-02-11T11:35:00.123Z'
            payload:
              eventType: topic_updated
              topicId: auth-5712
              departmentId: '999'
              parentTopicId: '-1'
              portalIds:
                - auth-1050
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
              changes:
                change:
                  - changeType: association
                    attribute: article
                    values:
                      - auth-130547
                  - changeType: dissociation
                    attribute: article
                    values:
                      - auth-130541
    TopicMoved:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440014
          payloadVersion: v20
          timestamp: '2026-02-11T11:40:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1014'
            eventTimestamp: '2026-02-11T11:40:00.123Z'
            payload:
              eventType: topic_moved
              topicId: auth-5718
              departmentId: '999'
              parentTopicId: auth-5717
              portalIds:
                - auth-1050
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
              sourceParentTopicId: auth-5716
    TopicCopied:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440015
          payloadVersion: v20
          timestamp: '2026-02-11T11:45:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1015'
            eventTimestamp: '2026-02-11T11:45:00.123Z'
            payload:
              eventType: topic_copied
              topicId: auth-5711
              departmentId: '999'
              parentTopicId: '-1'
              portalIds:
                - PZ-1000
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
              sourceParentTopicId: auth-5710
    TopicDeleted:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440016
          payloadVersion: v20
          timestamp: '2026-02-11T11:50:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1016'
            eventTimestamp: '2026-02-11T11:50:00.123Z'
            payload:
              eventType: topic_deleted
              topicId: auth-5711
              departmentId: '999'
              parentTopicId: '-1'
              portalIds:
                - PZ-1000
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
    PortalUpdated:
      value:
        metadata:
          notificationId: 550e8400-e29b-41d4-a716-446655440017
          payloadVersion: v20
          timestamp: '2026-02-11T11:55:00.123Z'
          tenantId: tenant-123
        messages:
          - id: '1017'
            eventTimestamp: '2026-02-11T11:55:00.123Z'
            payload:
              eventType: portal_updated
              portalId: auth-1050
              departmentId: '999'
              languageCodes:
                - en-US
                - es-ES
                - tr-TR
                - fr-FR
                - en-GB
              changes:
                change:
                  - changeType: association
                    attribute: topic
                    values:
                      - auth-5712
