OpenMetadata Events API

The `Events` are changes to metadata and are sent when entities are created, modified, or updated. External systems can subscribe to events using event subscription API over Webhooks, Slack, or Microsoft Teams.

OpenAPI Specification

openmetadata-events-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: OpenMetadata APIs Agent Executions Events API
  description: Common types and API definition for OpenMetadata
  contact:
    name: OpenMetadata
    url: https://open-metadata.org
    email: openmetadata-dev@googlegroups.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: '1.13'
servers:
- url: /api
  description: Current Host
- url: http://localhost:8585/api
  description: Endpoint URL
security:
- BearerAuth: []
tags:
- name: Events
  description: The `Events` are changes to metadata and are sent when entities are created, modified, or updated. External systems can subscribe to events using event subscription API over Webhooks, Slack, or Microsoft Teams.
paths:
  /v1/events:
    get:
      tags:
      - Events
      summary: Get change events
      description: Get a list of change events matching event types, entity type, from a given date
      operationId: listChangeEvents
      parameters:
      - name: entityCreated
        in: query
        description: List of comma separated entities requested for `entityCreated` event. When set to `*` all entities will be returned
        schema:
          type: string
          example: table,dashboard,...
      - name: entityUpdated
        in: query
        description: List of comma separated entities requested for `entityUpdated` event. When set to `*` all entities will be returned
        schema:
          type: string
          example: table,dashboard,...
      - name: entityRestored
        in: query
        description: List of comma separated entities requested for `entityRestored` event. When set to `*` all entities will be returned
        schema:
          type: string
          example: table,dashboard,...
      - name: entityDeleted
        in: query
        description: List of comma separated entities requested for `entityCreated` event. When set to `*` all entities will be returned
        schema:
          type: string
          example: table,dashboard,...
      - name: timestamp
        in: query
        description: Events starting from this unix timestamp in milliseconds
        required: true
        schema:
          type: integer
          format: int64
          example: 1426349294842
      responses:
        '200':
          description: Entity events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventList'
        '404':
          description: Entity for instance {id} is not found
  /v1/events/subscriptions/{id}/processedEvents:
    get:
      tags:
      - Events
      summary: Check If the Publisher Processed All Events
      description: Return a boolean 'true' or 'false' to indicate if the publisher processed all events
      operationId: checkIfThePublisherProcessedALlEvents
      parameters:
      - name: id
        in: path
        description: Id of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: List of Event Subscription versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityHistory'
  /v1/events/subscriptions:
    get:
      tags:
      - Events
      summary: List all available Event Subscriptions
      description: Get a list of All available Event Subscriptions
      operationId: listEventSubscriptions
      parameters:
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,filteringRules
      - name: limit
        in: query
        description: 'Limit the number event subscriptions returned. (1 to 1000000, default = 10) '
        schema:
          maximum: 1000000
          minimum: 0
          type: integer
          format: int32
          default: 10
      - name: alertType
        in: query
        description: alertType filter. Notification / Observability
        schema:
          type: string
      - name: notificationTemplate
        in: query
        description: Filter subscriptions by notification template ID. Returns only subscriptions using the specified template.
        schema:
          type: string
          format: uuid
      - name: before
        in: query
        description: Returns list of event subscriptions before this cursor
        schema:
          type: string
      - name: after
        in: query
        description: Returns list of event subscriptions after this cursor
        schema:
          type: string
      responses:
        '200':
          description: List of Event Subscriptions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscriptionList'
    put:
      tags:
      - Events
      summary: Updated an existing or create a new Event Subscription
      description: Updated an existing or create a new Event Subscription
      operationId: createOrUpdateEventSubscription
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEventSubscription'
      responses:
        '200':
          description: create Event Subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateEventSubscription'
        '400':
          description: Bad request
    post:
      tags:
      - Events
      summary: Create a new Event Subscription
      description: Create a new Event Subscription
      operationId: createEventSubscription
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEventSubscription'
      responses:
        '200':
          description: Event Subscription Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateEventSubscription'
        '400':
          description: Bad request
  /v1/events/subscriptions/{id}:
    get:
      tags:
      - Events
      summary: Get a event Subscription by ID
      description: Get a event Subscription by given Id
      operationId: getEventSubscriptionByID
      parameters:
      - name: id
        in: path
        description: Id of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,filteringRules
      responses:
        '200':
          description: Entity events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscription'
        '404':
          description: Entity for instance {id} is not found
    delete:
      tags:
      - Events
      summary: Delete an Event Subscription by Id
      description: Delete an Event Subscription
      operationId: deleteEventSubscription
      parameters:
      - name: id
        in: path
        description: Id of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Entity events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscription'
        '404':
          description: Entity for instance {id} is not found
    patch:
      tags:
      - Events
      summary: Update an Event Subscriptions
      description: Update an existing Event Subscriptions using JsonPatch.
      externalDocs:
        description: JsonPatch RFC
        url: https://tools.ietf.org/html/rfc6902
      operationId: patchEventSubscription_1
      parameters:
      - name: id
        in: path
        description: Id of the event Subscription
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: JsonPatch with array of operations
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/JsonPatch'
            example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v1/events/subscriptions/async/{id}:
    delete:
      tags:
      - Events
      summary: Asynchronously delete an Event Subscription by Id
      description: Asynchronously delete an Event Subscription
      operationId: deleteEventSubscriptionAsync
      parameters:
      - name: id
        in: path
        description: Id of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Entity events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscription'
        '404':
          description: Entity for instance {id} is not found
  /v1/events/subscriptions/name/{name}:
    delete:
      tags:
      - Events
      summary: Delete an Event Subscription by name
      description: Delete an Event Subscription by given `name`.
      operationId: deleteEventSubscriptionByName
      parameters:
      - name: name
        in: path
        description: Name of the Event Subscription
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
        '404':
          description: Entity for instance {name} is not found
  /v1/events/subscriptions/id/{eventSubscriptionId}/destinations:
    get:
      tags:
      - Events
      summary: Get the destinations for a specific Event Subscription
      description: Retrieve the status of all destinations associated with the given Event Subscription ID
      operationId: getAllDestinationForEventSubscription
      parameters:
      - name: eventSubscriptionId
        in: path
        description: ID of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Returns the destinations for the Event Subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionDestination'
        '404':
          description: Event Subscription for instance {eventSubscriptionId} is not found
  /v1/events/subscriptions/name/{eventSubscriptionName}/destinations:
    get:
      tags:
      - Events
      summary: Get the destinations for a specific Event Subscription by its name
      description: Retrieve the status of all destinations associated with the given Event Subscription's fully qualified name (FQN)
      operationId: getAllDestinationForEventSubscriptionByName
      parameters:
      - name: eventSubscriptionName
        in: path
        description: Name of the Event Subscription
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the destinations for the Event Subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionDestination'
        '404':
          description: Event Subscription with the name {fqn} is not found
  /v1/events/subscriptions/listAllFailedEvents:
    get:
      tags:
      - Events
      summary: Get all failed events
      description: Retrieve all failed events, optionally filtered by source, and apply a limit.
      operationId: getAllFailedEvents
      parameters:
      - name: limit
        in: query
        description: Maximum number of failed events to retrieve
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 15
      - name: paginationOffset
        in: query
        description: Offset for pagination (starting point for records)
        schema:
          type: integer
          format: int64
          default: 0
      - name: source
        in: query
        description: Source of the failed events
        schema:
          type: string
      responses:
        '200':
          description: Failed events retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeEvent'
        '500':
          description: Internal server error
  /v1/events/subscriptions/id/{subscriptionId}/diagnosticInfo:
    get:
      tags:
      - Events
      summary: Get event subscription diagnostic info
      description: Retrieve diagnostic information for a given event subscription ID, including current and latest offsets, unprocessed events count, and more.
      operationId: getEventSubscriptionDiagnosticInfoById
      parameters:
      - name: limit
        in: query
        description: Maximum number of unprocessed events returned
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 15
      - name: paginationOffset
        in: query
        description: Offset for pagination (starting point for records)
        schema:
          type: integer
          format: int64
          default: 0
      - name: subscriptionId
        in: path
        description: UUID of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      - name: listCountOnly
        in: query
        description: Return only count if true
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Event subscription diagnostic info retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscriptionDiagnosticInfo'
        '404':
          description: Event subscription not found
        '500':
          description: Internal server error
  /v1/events/subscriptions/name/{subscriptionName}/diagnosticInfo:
    get:
      tags:
      - Events
      summary: Get event subscription diagnostic info by name
      description: Retrieve diagnostic information for a given event subscription name, including current and latest offsets, unprocessed events count, and more.
      operationId: getEventSubscriptionDiagnosticInfoByName
      parameters:
      - name: limit
        in: query
        description: Maximum number of unprocessed events returned
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 15
      - name: paginationOffset
        in: query
        description: Offset for pagination (starting point for records)
        schema:
          type: integer
          format: int64
          default: 0
      - name: subscriptionName
        in: path
        description: Name of the Event Subscription
        required: true
        schema:
          type: string
      - name: listCountOnly
        in: query
        description: Return only count if true
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Event subscription diagnostic info retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscriptionDiagnosticInfo'
        '404':
          description: Event subscription not found
        '500':
          description: Internal server error
  /v1/events/subscriptions/id/{subscriptionId}/eventsRecord:
    get:
      tags:
      - Events
      summary: Get event subscription events record
      description: Retrieve the total count, pending count, failed count, and successful count of events for a given event subscription ID.
      operationId: getEventSubscriptionEventsRecordById
      parameters:
      - name: subscriptionId
        in: path
        description: UUID of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Event subscription events record retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventsRecord'
        '404':
          description: Event subscription not found
        '500':
          description: Internal server error
  /v1/events/subscriptions/name/{subscriptionName}/eventsRecord:
    get:
      tags:
      - Events
      summary: Get event subscription events record by name
      description: Retrieve the total count, pending count, failed count, and successful count of events for a given event subscription name.
      operationId: getEventSubscriptionEventsRecordByName
      parameters:
      - name: subscriptionName
        in: path
        description: Name of the Event Subscription
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Event subscription events record retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventsRecord'
        '404':
          description: Event subscription not found
        '500':
          description: Internal server error
  /v1/events/subscriptions/{eventSubscriptionId}/status/{destinationId}:
    get:
      tags:
      - Events
      summary: Get Event Subscription status by Id
      description: Get a event Subscription status by given Name
      operationId: getEventSubscriptionStatusById
      parameters:
      - name: eventSubscriptionId
        in: path
        description: Name of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      - name: destinationId
        in: path
        description: Destination Id
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Return the current status of the Event Subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionStatus'
        '404':
          description: Entity for instance {id} is not found
  /v1/events/subscriptions/name/{eventSubscriptionName}/status/{destinationId}:
    get:
      tags:
      - Events
      summary: Get Event Subscription status
      description: Get a event Subscription status by given Name
      operationId: getEventSubscriptionStatus
      parameters:
      - name: eventSubscriptionName
        in: path
        description: Name of the Event Subscription
        required: true
        schema:
          type: string
      - name: destinationId
        in: path
        description: Destination Id
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Return the current status of the Event Subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionStatus'
        '404':
          description: Entity for instance {id} is not found
  /v1/events/subscriptions/{id}/versions/{version}:
    get:
      tags:
      - Events
      summary: Get a version of the Event Subscription
      description: Get a version of the Event Subscription by given `Id`
      operationId: getSpecificEventSubscriptionVersion
      parameters:
      - name: id
        in: path
        description: Id of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      - name: version
        in: path
        description: Event Subscription version number in the form `major`.`minor`
        required: true
        schema:
          type: string
          example: 0.1 or 1.1
      responses:
        '200':
          description: Get specific version of Event Subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscription'
        '404':
          description: Event Subscription for instance {id} and version {version} is not found
  /v1/events/subscriptions/id/{id}/listEvents:
    get:
      tags:
      - Events
      summary: Retrieve events based on various filters
      description: Retrieve failed, successfully sent, or unprocessed change events, identified by alert ID, with an optional limit. If status is not provided, retrieves data from all statuses in ascending timestamp.
      operationId: getEvents
      parameters:
      - name: status
        in: query
        description: Status of events to retrieve (failed, successful)
        schema:
          type: string
          enum:
          - failed
          - successful
      - name: id
        in: path
        description: ID of the alert or destination
        required: true
        schema:
          type: string
          format: uuid
      - name: limit
        in: query
        description: Maximum number of events to retrieve
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 15
      - name: paginationOffset
        in: query
        description: Offset for pagination (starting point for records)
        schema:
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: Events retrieved successfully
        '404':
          description: Entity not found
        '400':
          description: Invalid request parameters
        '500':
          description: Internal server error
  /v1/events/subscriptions/name/{eventSubscriptionName}:
    get:
      tags:
      - Events
      summary: Get an Event Subscription by name
      description: Get an Event Subscription by name.
      operationId: getEventSubscriptionByName
      parameters:
      - name: eventSubscriptionName
        in: path
        description: Name of the Event Subscription
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,filteringRules
      responses:
        '200':
          description: Event Subscription with request name is returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscription'
        '404':
          description: Event Subscription for instance {eventSubscriptionName} is not found
  /v1/events/subscriptions/id/{id}/failedEvents:
    get:
      tags:
      - Events
      summary: Get failed events for a subscription by id
      description: Retrieve failed events for a given subscription id.
      operationId: getFailedEventsBySubscriptionId
      parameters:
      - name: id
        in: path
        description: Id of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      - name: limit
        in: query
        description: Maximum number of failed events to retrieve
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 15
      - name: paginationOffset
        in: query
        description: Offset for pagination (starting point for records)
        schema:
          type: integer
          format: int64
          default: 0
      - name: source
        in: query
        description: Source of the failed events
        schema:
          type: string
      responses:
        '200':
          description: Failed events retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeEvent'
        '404':
          description: Event subscription not found
        '500':
          description: Internal server error
  /v1/events/subscriptions/name/{eventSubscriptionName}/failedEvents:
    get:
      tags:
      - Events
      summary: Get failed events for a subscription by name
      description: Retrieve failed events for a given subscription name.
      operationId: getFailedEventsBySubscriptionName
      parameters:
      - name: eventSubscriptionName
        in: path
        description: Name of the Event Subscription
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Maximum number of failed events to retrieve
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 15
      - name: paginationOffset
        in: query
        description: Offset for pagination (starting point for records)
        schema:
          type: integer
          format: int64
          default: 0
      - name: source
        in: query
        description: Source of the failed events
        schema:
          type: string
      responses:
        '200':
          description: Failed events retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeEvent'
        '404':
          description: Event subscription not found
        '500':
          description: Internal server error
  /v1/events/subscriptions/id/{id}/listSuccessfullySentChangeEvents:
    get:
      tags:
      - Events
      summary: Get successfully sent change events for an alert
      description: Retrieve successfully sent change events for a specific alert, identified by its ID, with an optional limit.
      operationId: getSuccessfullySentChangeEventsForAlert
      parameters:
      - name: id
        in: path
        description: ID of the alert to retrieve change events for
        required: true
        schema:
          type: string
          format: uuid
      - name: limit
        in: query
        description: Maximum number of change events to retrieve
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 15
      - name: paginationOffset
        in: query
        description: Offset for pagination (starting point for records)
        schema:
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: Successfully sent change events retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeEvent'
        '404':
          description: Alert not found
        '500':
          description: Internal server error
  /v1/events/subscriptions/name/{eventSubscriptionName}/listSuccessfullySentChangeEvents:
    get:
      tags:
      - Events
      summary: Get successfully sent change events for an alert by name
      description: Retrieve successfully sent change events for a specific alert, identified by its name, with an optional limit.
      operationId: getSuccessfullySentChangeEventsForAlertByName
      parameters:
      - name: eventSubscriptionName
        in: path
        description: Name of the alert to retrieve change events for
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Maximum number of change events to retrieve
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 15
      - name: paginationOffset
        in: query
        description: Offset for pagination (starting point for records)
        schema:
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: Successfully sent change events retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeEvent'
        '404':
          description: Alert not found
        '500':
          description: Internal server error
  /v1/events/subscriptions/{alertType}/resources:
    get:
      tags:
      - Events
      summary: Get list of Event Subscriptions Resources used in filtering Event Subscription
      description: Get list of EventSubscription functions used in filtering conditions in Event Subscription
      operationId: listEventSubscriptionResources
      parameters:
      - name: alertType
        in: path
        description: AlertType
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultListFilterResourceDescriptor'
  /v1/events/subscriptions/{id}/versions:
    get:
      tags:
      - Events
      summary: List Event Subscription versions
      description: Get a list of all the versions of an Event Subscription identified by `Id`
      operationId: listAllEventSubscriptionVersion
      parameters:
      - name: id
        in: path
        description: Id of the Event Subscription
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: List of Event Subscription versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityHistory'
  /v1/events/subscriptions/name/{fqn}:
    patch:
      tags:
      - Events
      summary: Update an Event Subscriptions by name.
      description: Update an existing Event Subscriptions using JsonPatch.
      externalDocs:
        description: JsonPatch RFC
        url: https://tools.ietf.org/html/rfc6902
      operationId: patchEventSubscription
      parameters:
      - name: fqn
        in: path
        description: Name of the event Subscription
        required: true
        schema:
          type: string
      requestBody:
        description: JsonPatch with array of operations
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/JsonPatch'
            example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v1/events/subscriptions/testDestination:
    post:
      tags:
      - Events
      summary: Send a test message alert to external destinations.
      description: Send a test message alert to external destinations of the alert.
      operationId: testDestination
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventSubscriptionDestinationTestRequest'
      responses:
        '200':
          description: Test message sent successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
  /v1/events/subscriptions/name/{eventSubscriptionName}/syncOffset:
    put:
      tags:
      - Events
      summary: Sync Offset for a specific Event Subscription by its name
      description: Sync Offset for a specific Event Subscription by its name
      operationId: syncOffsetForEventSubscriptionByName
      parameters:
      - name: eventSubscriptionName
        in: path
        description: Name of the Event Subscription
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the destinations for the Event Subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionDestination'
        '404':
          description: Event Subscription with the name {fqn} is not found
components:
  schemas:
    TagLabelRecognizerMetadata:
      required:
      - recognizerId
      - recognizerName
      - score
      type: object
      properties:
        recognizerId:
          type: string
          format: uuid
        recognizerName:
          type: string
        score:
          type: number
          format: double
        target:
          type: string
          enum:
          - content
          - column_name
        patterns:
          type: array
          items:
            $ref: '#/components/schemas/PatternMatch'
    ResultListFilterResourceDescriptor:
      required:
      - data
      type: object
      prop

# --- truncated at 32 KB (56 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-events-api-openapi.yml