Oracle Database · AsyncAPI Specification

Oracle Transactional Event Queues (TxEventQ) API

Version 25.4.0

Oracle Transactional Event Queues provide Kafka-compatible event streaming and message queuing capabilities built into Oracle Database. TxEventQ enables event-driven architectures with transactional guarantees, supporting publish-subscribe patterns, consumer groups, partitioned topics, and exactly-once message delivery semantics. Accessible through ORDS REST endpoints and native Kafka protocol compatibility.

View Spec View on GitHub CloudDatabaseEnterpriseOracleREST APISQLAsyncAPIWebhooksEvents

Channels

database/txeventq/topics/{topicName}
publish produceMessage
Produce a message to a topic
A TxEventQ topic represents an ordered, partitioned event stream stored in Oracle Database. Topics support multiple producers and consumer groups with exactly-once delivery semantics backed by database transactions.
database/txeventq/topics
subscribe listTopics
List all TxEventQ topics
Topic management channel for listing all available TxEventQ topics
database/txeventq/clusters/{clusterId}/topics
publish createTopic
Create a new topic
Cluster-scoped topic management channel
database/txeventq/clusters/{clusterId}/consumer-groups/{consumerGroupId}
publish createConsumerGroup
Create a consumer group
Consumer group management channel
database/txeventq/consumers/{groupName}/instances/{instanceId}/records
subscribe fetchMessages
Fetch messages from consumer instance
Message consumption endpoint for fetching messages from a consumer instance
database/txeventq/topics/{topicName}/partitions
subscribe getPartitions
Get topic partitions
Topic partition information channel

Messages

ProduceMessage
Produce Message
A message to be published to a TxEventQ topic
ConsumeMessage
Consumed Message
A message consumed from a TxEventQ topic
TopicList
Topic List
List of available TxEventQ topics
CreateTopicRequest
Create Topic Request
Request to create a new TxEventQ topic
CreateConsumerGroupRequest
Create Consumer Group Request
Request to create a new consumer group
FetchedMessages
Fetched Messages
Messages fetched from a consumer instance
PartitionList
Partition List
List of partitions for a topic

Servers

https
ords https://{host}:{port}/ords/{schema}
ORDS REST endpoint for TxEventQ management and message operations
kafka
kafka {host}:{port}
Kafka-compatible protocol endpoint for native Kafka client connectivity. Oracle TxEventQ supports the Apache Kafka protocol, allowing standard Kafka producers and consumers to interact with Oracle Database event queues.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Oracle Transactional Event Queues (TxEventQ) API
  description: >-
    Oracle Transactional Event Queues provide Kafka-compatible event streaming
    and message queuing capabilities built into Oracle Database. TxEventQ enables
    event-driven architectures with transactional guarantees, supporting
    publish-subscribe patterns, consumer groups, partitioned topics, and exactly-once
    message delivery semantics. Accessible through ORDS REST endpoints and native
    Kafka protocol compatibility.
  version: 25.4.0
  contact:
    name: Oracle Support
    url: https://support.oracle.com
    email: [email protected]
  license:
    name: Oracle Technology Network License
    url: https://www.oracle.com/downloads/licenses/standard-license.html
  termsOfService: https://www.oracle.com/legal/terms.html
  externalDocs:
    description: Oracle Transactional Event Queues Documentation
    url: https://docs.oracle.com/en/database/oracle/oracle-database/23/adque/
servers:
  ords:
    url: https://{host}:{port}/ords/{schema}
    protocol: https
    description: ORDS REST endpoint for TxEventQ management and message operations
    variables:
      host:
        default: localhost
        description: ORDS server hostname
      port:
        default: '8443'
        description: ORDS server port
      schema:
        default: myschema
        description: Database schema
  kafka:
    url: '{host}:{port}'
    protocol: kafka
    description: >-
      Kafka-compatible protocol endpoint for native Kafka client connectivity.
      Oracle TxEventQ supports the Apache Kafka protocol, allowing standard
      Kafka producers and consumers to interact with Oracle Database event queues.
    variables:
      host:
        default: localhost
        description: Kafka protocol endpoint hostname
      port:
        default: '9092'
        description: Kafka protocol endpoint port
defaultContentType: application/json
channels:
  database/txeventq/topics/{topicName}:
    description: >-
      A TxEventQ topic represents an ordered, partitioned event stream stored
      in Oracle Database. Topics support multiple producers and consumer groups
      with exactly-once delivery semantics backed by database transactions.
    parameters:
      topicName:
        description: The name of the TxEventQ topic
        schema:
          type: string
    publish:
      operationId: produceMessage
      summary: Produce a message to a topic
      description: >-
        Publishes a message to the specified TxEventQ topic. Messages are
        durably stored in Oracle Database with transactional guarantees.
        Supports key-based partitioning for ordered delivery within partitions.
      message:
        $ref: '#/components/messages/ProduceMessage'
      bindings:
        kafka:
          groupId:
            type: string
    subscribe:
      operationId: consumeMessages
      summary: Consume messages from a topic
      description: >-
        Subscribes to messages from the specified TxEventQ topic via a
        consumer group. Supports at-least-once and exactly-once delivery
        semantics. Consumer instances within a group share partition assignments.
      message:
        $ref: '#/components/messages/ConsumeMessage'
      bindings:
        kafka:
          groupId:
            type: string
            description: Consumer group identifier

  database/txeventq/topics:
    description: Topic management channel for listing all available TxEventQ topics
    subscribe:
      operationId: listTopics
      summary: List all TxEventQ topics
      description: Returns a list of all available TxEventQ topics in the schema.
      message:
        $ref: '#/components/messages/TopicList'

  database/txeventq/clusters/{clusterId}/topics:
    description: Cluster-scoped topic management channel
    parameters:
      clusterId:
        description: The TxEventQ cluster identifier
        schema:
          type: string
    publish:
      operationId: createTopic
      summary: Create a new topic
      description: >-
        Creates a new TxEventQ topic in the specified cluster with the given
        configuration including partition count, retention policy, and replication settings.
      message:
        $ref: '#/components/messages/CreateTopicRequest'

  database/txeventq/clusters/{clusterId}/consumer-groups/{consumerGroupId}:
    description: Consumer group management channel
    parameters:
      clusterId:
        description: The TxEventQ cluster identifier
        schema:
          type: string
      consumerGroupId:
        description: The consumer group identifier
        schema:
          type: string
    publish:
      operationId: createConsumerGroup
      summary: Create a consumer group
      description: >-
        Creates a new consumer group within the specified cluster.
        Consumer groups enable parallel processing of topic messages
        with automatic partition assignment.
      message:
        $ref: '#/components/messages/CreateConsumerGroupRequest'

  database/txeventq/consumers/{groupName}/instances/{instanceId}/records:
    description: Message consumption endpoint for fetching messages from a consumer instance
    parameters:
      groupName:
        description: The consumer group name
        schema:
          type: string
      instanceId:
        description: The consumer instance identifier
        schema:
          type: string
    subscribe:
      operationId: fetchMessages
      summary: Fetch messages from consumer instance
      description: >-
        Retrieves available messages for a specific consumer instance
        within a consumer group. Returns messages from assigned partitions
        with offset tracking.
      message:
        $ref: '#/components/messages/FetchedMessages'

  database/txeventq/topics/{topicName}/partitions:
    description: Topic partition information channel
    parameters:
      topicName:
        description: The name of the TxEventQ topic
        schema:
          type: string
    subscribe:
      operationId: getPartitions
      summary: Get topic partitions
      description: Returns partition information for the specified topic.
      message:
        $ref: '#/components/messages/PartitionList'

components:
  messages:
    ProduceMessage:
      name: ProduceMessage
      title: Produce Message
      summary: A message to be published to a TxEventQ topic
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ProduceMessagePayload'

    ConsumeMessage:
      name: ConsumeMessage
      title: Consumed Message
      summary: A message consumed from a TxEventQ topic
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ConsumedMessagePayload'

    TopicList:
      name: TopicList
      title: Topic List
      summary: List of available TxEventQ topics
      contentType: application/json
      payload:
        $ref: '#/components/schemas/TopicListPayload'

    CreateTopicRequest:
      name: CreateTopicRequest
      title: Create Topic Request
      summary: Request to create a new TxEventQ topic
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CreateTopicPayload'

    CreateConsumerGroupRequest:
      name: CreateConsumerGroupRequest
      title: Create Consumer Group Request
      summary: Request to create a new consumer group
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CreateConsumerGroupPayload'

    FetchedMessages:
      name: FetchedMessages
      title: Fetched Messages
      summary: Messages fetched from a consumer instance
      contentType: application/json
      payload:
        $ref: '#/components/schemas/FetchedMessagesPayload'

    PartitionList:
      name: PartitionList
      title: Partition List
      summary: List of partitions for a topic
      contentType: application/json
      payload:
        $ref: '#/components/schemas/PartitionListPayload'

  schemas:
    ProduceMessagePayload:
      type: object
      properties:
        key:
          type: string
          description: >-
            Message key used for partition assignment. Messages with the same
            key are guaranteed to be delivered to the same partition in order.
        value:
          description: The message payload content
        headers:
          type: object
          additionalProperties:
            type: string
          description: Optional message headers for metadata
        partition:
          type: integer
          description: Optional explicit partition number
        timestamp:
          type: string
          format: date-time
          description: Message timestamp (defaults to current time)
      required:
        - value

    ConsumedMessagePayload:
      type: object
      properties:
        key:
          type: string
          description: Message key
        value:
          description: The message payload content
        headers:
          type: object
          additionalProperties:
            type: string
        topic:
          type: string
          description: Source topic name
        partition:
          type: integer
          description: Partition number the message was consumed from
        offset:
          type: integer
          format: int64
          description: Message offset within the partition
        timestamp:
          type: string
          format: date-time
          description: Message timestamp
        timestampType:
          type: string
          enum:
            - CREATE_TIME
            - LOG_APPEND_TIME

    TopicListPayload:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/TopicSummary'

    TopicSummary:
      type: object
      properties:
        name:
          type: string
          description: Topic name
        partitionCount:
          type: integer
          description: Number of partitions
        replicationFactor:
          type: integer
          description: Replication factor
        retentionMs:
          type: integer
          format: int64
          description: Message retention period in milliseconds

    CreateTopicPayload:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: Topic name
        partitionCount:
          type: integer
          description: Number of partitions
          default: 1
        retentionMs:
          type: integer
          format: int64
          description: Message retention time in milliseconds
          default: 604800000
        config:
          type: object
          additionalProperties:
            type: string
          description: Additional topic configuration properties

    CreateConsumerGroupPayload:
      type: object
      required:
        - groupId
      properties:
        groupId:
          type: string
          description: Consumer group identifier
        autoOffsetReset:
          type: string
          enum:
            - earliest
            - latest
          default: latest
          description: Where to start consuming if no committed offset exists
        enableAutoCommit:
          type: boolean
          default: true
          description: Whether offsets are automatically committed

    FetchedMessagesPayload:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ConsumedMessagePayload'
        count:
          type: integer
          description: Number of messages returned

    PartitionListPayload:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/PartitionInfo'

    PartitionInfo:
      type: object
      properties:
        partitionId:
          type: integer
          description: Partition identifier
        leader:
          type: string
          description: Leader node for this partition
        beginOffset:
          type: integer
          format: int64
          description: Earliest available offset
        endOffset:
          type: integer
          format: int64
          description: Latest offset (next offset to be assigned)

    ConsumerLag:
      type: object
      properties:
        topic:
          type: string
        partition:
          type: integer
        currentOffset:
          type: integer
          format: int64
          description: Current consumer offset
        logEndOffset:
          type: integer
          format: int64
          description: Latest offset in the partition
        lag:
          type: integer
          format: int64
          description: Number of messages behind