TARDIS Discovery Event API

Discovery service for event-driven specifications managed by TARDIS, providing inventory and metadata for AsyncAPI-style event APIs across the Open Telekom Integration Platform.

TARDIS Discovery Event API is one of 20 APIs that Deutsche Telekom publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Event-Driven, API Discovery, Internal Developer Platform, and TARDIS. The published artifact set on APIs.io includes an OpenAPI specification.

OpenAPI Specification

controlplane-discovery-event-openapi.yml Raw ↑
# Copyright 2025 Deutsche Telekom IT GmbH
#
# SPDX-License-Identifier: Apache-2.0

openapi: 3.0.3
info:
  title: Event Api
  description: >
    API of the TARDIS control plane for the eventing domain. With this API, you
    can manage your EventExposures and EventSubscriptions, and browse
    registered EventTypes.


    This is a **read-only** API. You can only read the resources.

    For creating and updating resources, you may use the Rover-API.


    **Important:**

    - You may use this API by subscribing to it by using the usual process.

    You **do not** need to add `scopes` as the default scope is set to
    `tardis:user:read`.

    If you require more permissions, please contact the TARDIS team.


    - This is a Team-API and may be used by any team using TARDIS.

    In the future, you can simply use your Team-credentials to access this API.
  contact:
    name: TARDIS
    url: https://developer.telekom.de/docs/src/tardis_customer_handbook/support/
    email: [email protected]
  version: 2.0.0
  x-api-category: TARDIS
servers:
  - url: https://api.telekom.de/event/v2
security:
  - OAuth2:
      - tardis:admin:all
tags:
  - name: EventType
    description: |
      An EventType is a registry entry representing a known event type. It
      serves as the canonical reference that both EventExposures and
      EventSubscriptions point to. EventTypes are identified by a dot-separated
      identifier (e.g. "de.telekom.eni.quickstart.v1").
  - name: EventExposure
    description: |
      With an EventExposure you declare that your application publishes events
      of a specific type. This makes the events available for subscription by
      other applications. Each exposure is scoped to a zone and can define
      visibility, approval strategy, and publisher-side scopes with filtering.
  - name: EventSubscription
    description: |
      An EventSubscription declares that your application wants to receive
      events of a specific type. You can configure the delivery mechanism
      (callback or server-sent events), payload format, and subscriber-side
      filtering criteria.
paths:
  # ──────────────────────────────────────────────
  #  EventType
  # ──────────────────────────────────────────────
  /eventtypes:
    get:
      tags:
        - EventType
      summary: Find all EventTypes
      description: |
        Find all registered EventTypes without any restrictions. 
        This operation is global and not scoped to a specific application or team.
      operationId: getAllEventTypes
      parameters:
        - $ref: 'common.yaml#/components/parameters/Limit'
        - $ref: 'common.yaml#/components/parameters/Offset'
        - $ref: 'common.yaml#/components/parameters/Sort'
      responses:
        '200':
          description: OK
          headers:
            X-Total-Count:
              $ref: 'common.yaml#/components/headers/XTotalCount'
            X-Result-Count:
              $ref: 'common.yaml#/components/headers/XResultCount'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventTypeListResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
             - tardis:user:obfuscated
  /eventtypes/{eventTypeId}:
    get:
      tags:
        - EventType
      summary: Find an existing EventType
      description: Find an existing EventType by its complete identifier
      operationId: getEventType
      parameters:
        - name: eventTypeId
          description: >
            The complete identifier of the EventType (e.g.
            "de-telekom-eni-quickstart-v1--1-0-0")
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventTypeResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '404':
          $ref: 'common.yaml#/components/responses/NotFound'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
            - tardis:user:obfuscated
  /eventtypes/{eventTypeId}/status:
    get:
      tags:
        - EventType
      summary: Find an existing EventType and return its status
      description: Find an existing EventType and return its status
      operationId: getEventTypeStatus
      parameters:
        - name: eventTypeId
          description: >
            The complete identifier of the EventType (e.g.
            "de-telekom-eni-quickstart-v1--1-0-0")
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: 'common.yaml#/components/schemas/ResourceStatusResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '404':
          $ref: 'common.yaml#/components/responses/NotFound'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
            - tardis:user:obfuscated
  /eventtypes/{eventTypeName}/active:
    get:
      tags:
        - EventType
      summary: Find the active EventType for a given name
      description: >
        Returns the currently active EventType for the given resource name.
        This operation is global and not scoped to a specific application or team.
      operationId: getActiveEventType
      parameters:
        - name: eventTypeName
          description: >
            The resource name of the EventType (dot-separated identifier
            converted to hyphens, e.g. "de-telekom-eni-quickstart-v1")
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventTypeResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '404':
          $ref: 'common.yaml#/components/responses/NotFound'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
            - tardis:user:obfuscated
  # ──────────────────────────────────────────────
  #  EventExposure
  # ──────────────────────────────────────────────
  /applications/{applicationId}/eventexposures:
    get:
      tags:
        - EventExposure
      summary: Find all EventExposures
      description: Find all EventExposures of this application
      operationId: getAllEventExposures
      parameters:
        - $ref: 'common.yaml#/components/parameters/ApplicationId'
        - $ref: 'common.yaml#/components/parameters/Limit'
        - $ref: 'common.yaml#/components/parameters/Offset'
        - $ref: 'common.yaml#/components/parameters/Sort'
      responses:
        '200':
          description: OK
          headers:
            X-Total-Count:
              $ref: 'common.yaml#/components/headers/XTotalCount'
            X-Result-Count:
              $ref: 'common.yaml#/components/headers/XResultCount'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventExposureListResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
             - tardis:user:obfuscated
  /applications/{applicationId}/eventexposures/{eventExposureName}:
    get:
      tags:
        - EventExposure
      summary: Find an existing EventExposure
      description: Find an existing EventExposure
      operationId: getEventExposure
      parameters:
        - $ref: 'common.yaml#/components/parameters/ApplicationId'
        - name: eventExposureName
          description: The name of the EventExposure
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventExposureResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '404':
          $ref: 'common.yaml#/components/responses/NotFound'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
             - tardis:user:obfuscated
  /applications/{applicationId}/eventexposures/{eventExposureName}/status:
    get:
      tags:
        - EventExposure
      summary: Find an existing EventExposure and return its status
      description: Find an existing EventExposure and return its status
      operationId: getEventExposureStatus
      parameters:
        - $ref: 'common.yaml#/components/parameters/ApplicationId'
        - name: eventExposureName
          description: The name of the EventExposure
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: 'common.yaml#/components/schemas/ResourceStatusResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '404':
          $ref: 'common.yaml#/components/responses/NotFound'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
            - tardis:user:obfuscated
  /applications/{applicationId}/eventexposures/{eventExposureName}/eventsubscriptions:
    get:
      tags:
        - EventExposure
      summary: Find all EventSubscriptions of this EventExposure
      description: Find all EventSubscriptions that subscribe to this EventExposure
      operationId: getAllExposureEventSubscriptions
      parameters:
        - $ref: 'common.yaml#/components/parameters/ApplicationId'
        - name: eventExposureName
          description: The name of the EventExposure
          in: path
          required: true
          schema:
            type: string
        - $ref: 'common.yaml#/components/parameters/Limit'
        - $ref: 'common.yaml#/components/parameters/Offset'
        - $ref: 'common.yaml#/components/parameters/Sort'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscriptionListResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
            - tardis:user:obfuscated
  # ──────────────────────────────────────────────
  #  EventSubscription
  # ──────────────────────────────────────────────
  /applications/{applicationId}/eventsubscriptions:
    get:
      tags:
        - EventSubscription
      summary: Find all EventSubscriptions
      description: Find all EventSubscriptions of this application
      operationId: getAllEventSubscriptions
      parameters:
        - $ref: 'common.yaml#/components/parameters/ApplicationId'
        - $ref: 'common.yaml#/components/parameters/Limit'
        - $ref: 'common.yaml#/components/parameters/Offset'
        - $ref: 'common.yaml#/components/parameters/Sort'
      responses:
        '200':
          description: OK
          headers:
            X-Total-Count:
              $ref: 'common.yaml#/components/headers/XTotalCount'
            X-Result-Count:
              $ref: 'common.yaml#/components/headers/XResultCount'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscriptionListResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
             - tardis:user:obfuscated
  /applications/{applicationId}/eventsubscriptions/{eventSubscriptionName}:
    get:
      tags:
        - EventSubscription
      summary: Find an existing EventSubscription
      description: Find an existing EventSubscription
      operationId: getEventSubscription
      parameters:
        - $ref: 'common.yaml#/components/parameters/ApplicationId'
        - name: eventSubscriptionName
          description: The name of the EventSubscription
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscriptionResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '404':
          $ref: 'common.yaml#/components/responses/NotFound'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
             - tardis:user:obfuscated
  /applications/{applicationId}/eventsubscriptions/{eventSubscriptionName}/status:
    get:
      tags:
        - EventSubscription
      summary: Find an existing EventSubscription and return its status
      description: Find an existing EventSubscription and return its status
      operationId: getEventSubscriptionStatus
      parameters:
        - $ref: 'common.yaml#/components/parameters/ApplicationId'
        - name: eventSubscriptionName
          description: The name of the EventSubscription
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: 'common.yaml#/components/schemas/ResourceStatusResponse'
        '400':
          $ref: 'common.yaml#/components/responses/BadRequest'
        '401':
          $ref: 'common.yaml#/components/responses/Unauthorized'
        '403':
          $ref: 'common.yaml#/components/responses/Forbidden'
        '404':
          $ref: 'common.yaml#/components/responses/NotFound'
        '415':
          $ref: 'common.yaml#/components/responses/UnsupportedMediaType'
        '500':
          $ref: 'common.yaml#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:supervisor:read
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
            - tardis:user:all
            - tardis:user:read
            - tardis:user:obfuscated
# ════════════════════════════════════════════════
#  Components — Event-specific schemas only
# ════════════════════════════════════════════════
components:
  schemas:
    # ── Event-domain enums ─────────────────────
    # Renamed from Visibility → EventVisibility (PascalCase values differ from stargate's UPPERCASE)
    EventVisibility:
      enum:
        - World
        - Zone
        - Enterprise
      type: string
      description: |
        Defines who can see and subscribe to an exposed event.
        Maps to EventExposureSpec.Visibility in the EventExposure CR.
    # Renamed from ApprovalStrategy → EventApprovalStrategy (PascalCase values differ from stargate's UPPERCASE)
    EventApprovalStrategy:
      enum:
        - Auto
        - Simple
        - FourEyes
      type: string
      description: |
        Defines the approval mode for event subscriptions.
        Maps to EventExposureSpec.Approval.Strategy in the EventExposure CR.
    DeliveryType:
      enum:
        - Callback
        - ServerSentEvent
      type: string
      description: |
        Defines how events are delivered to subscribers.
        Maps to EventSubscriptionSpec.Delivery.Type in the EventSubscription CR.
    PayloadType:
      enum:
        - Data
        - DataRef
      type: string
      description: |
        Defines the event payload format.
        Maps to EventSubscriptionSpec.Delivery.Payload in the EventSubscription CR.
    ResponseFilterMode:
      enum:
        - Include
        - Exclude
      type: string
      description: Controls whether the response filter includes or excludes the specified fields.
    # ── Event-domain models ────────────────────
    EventApproval:
      type: object
      description: |
        Configures how subscriptions to this event are approved.
        Maps to EventExposureSpec.Approval in the EventExposure CR.
      properties:
        strategy:
          $ref: '#/components/schemas/EventApprovalStrategy'
          description: Defines the approval mode. Defaults to Auto.
        trustedTeams:
          type: array
          description: >
            Teams that are trusted for auto-approval of subscriptions.
            By default your own team is trusted.
          items:
            type: string
          maxItems: 10
          example:
            - eni--hyperion
    ResponseFilter:
      type: object
      description: Controls which fields are included or excluded from the event payload.
      properties:
        paths:
          type: array
          description: JSON paths to include or exclude from the event payload.
          items:
            type: string
          example:
            - $.data.orderId
            - $.data.status
        mode:
          $ref: '#/components/schemas/ResponseFilterMode'
    SelectionFilter:
      type: object
      description: Defines criteria for selecting which events are delivered.
      properties:
        attributes:
          type: object
          description: >
            Simple key-value equality matches on CloudEvents attributes.
            All entries are AND-ed together.
          additionalProperties:
            type: string
          example:
            source: de.telekom.eni.quickstart
            type: de.telekom.eni.quickstart.v1
        expression:
          type: object
          description: >
            Arbitrary JSON filter expression tree using logical operators
            (and, or) and comparisons (eq, ge, gt, le, lt, ne). Passed
            through to the configuration backend without structural validation.
          additionalProperties: true
    EventTrigger:
      type: object
      description: |
        Defines filtering criteria for event delivery.
        Maps to EventTrigger in the EventExposure/EventSubscription CR.
      properties:
        responseFilter:
          $ref: '#/components/schemas/ResponseFilter'
        selectionFilter:
          $ref: '#/components/schemas/SelectionFilter'
    EventScope:
      type: object
      description: |
        A named scope with publisher-side trigger filtering.
        Scopes allow publishers to partition their events and apply filters.
        Maps to EventExposureSpec.Scopes[] in the EventExposure CR.
      required:
        - name
        - trigger
      properties:
        name:
          type: string
          description: Unique identifier for this scope.
          minLength: 1
          example: high-priority
        trigger:
          $ref: '#/components/schemas/EventTrigger'
    Delivery:
      type: object
      description: |
        Configures how events are delivered to the subscriber.
        Maps to EventSubscriptionSpec.Delivery in the EventSubscription CR.
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/DeliveryType'
        payload:
          $ref: '#/components/schemas/PayloadType'
        callback:
          type: string
          format: uri
          description: >
            URL where events are delivered. Required when type is "Callback",
            must not be set for "ServerSentEvent".
          example: https://myapp.example.com/events/callback
        eventRetentionTime:
          type: string
          description: How long events are retained for this subscriber.
          example: 7d
        circuitBreakerOptOut:
          type: boolean
          description: Disables the circuit breaker for this subscription.
          default: false
        retryableStatusCodes:
          type: array
          description: HTTP status codes that should trigger a retry.
          items:
            type: integer
          example:
            - 502
            - 503
            - 504
        redeliveriesPerSecond:
          type: integer
          description: Limits the rate of event redeliveries.
          example: 10
        enforceGetHttpRequestMethodForHealthCheck:
          type: boolean
          description: Forces GET for health check probes instead of HEAD.
          default: false
    EventSubscriptionApproval:
      type: object
      readOnly: true
      description: Approval status of the event subscription.
      properties:
        status:
          type: string
          example: granted
        comment:
          type: string
          example: trusted team
        decider:
          type: string
          example: [email protected]
        timestamp:
          type: string
          format: date-time
          example: '2022-09-28T16:05:46.384Z'
    # ── EventType ──────────────────────────────
    EventType:
      type: object
      description: |
        Registry entry for a known event type. Serves as the canonical reference
        that both EventExposure and EventSubscription point to.
        Maps to EventTypeSpec in the EventType CR.
      properties:
        type:
          type: string
          description: >
            Dot-separated event type identifier (e.g. "de.telekom.eni.quickstart.v1").
            The last segment must be a version prefix matching the major version.
          pattern: '^[a-z0-9]+(\.[a-z0-9]+)*$'
          minLength: 1
          maxLength: 253
          example: de.telekom.eni.quickstart.v1
        version:
          type: string
          description: >
            Version of the event type specification (e.g. "1.0.0"). The major
            version must match the version suffix in the type field.
          pattern: '^\d+.*$'
          example: 1.0.0
        description:
          type: string
          description: Human-readable summary of this event type.
          example: Quickstart events for the ENI platform
        specification:
          type: string
          description: >
            File ID reference from the file manager for the optional JSON schema
            that describes the event payload.
    EventTypeResponse:
      type: object
      readOnly: true
      required:
        - name
        - type
        - version
      allOf:
        - $ref: '#/components/schemas/EventType'
        - properties:
            id:
              type: string
              readOnly: true
              description: >
                The complete resource identifier of the EventType
              example: eni--hyperion--de-telekom-eni-quickstart-v1
            name:
              type: string
              readOnly: true
              description: >
                Resource name (dot-to-hyphen conversion of type, e.g.
                "de-telekom-eni-quickstart-v1").
              example: de-telekom-eni-quickstart-v1
            active:
              type: boolean
              readOnly: true
              description: >
                Whether this EventType is the active singleton for its type
                string. When multiple EventTypes exist for the same type, only
                the oldest non-deleted one is active.
            status:
              $ref: 'common.yaml#/components/schemas/Status'
    EventTypeListResponse:
      properties:
        paging:
          $ref: 'common.yaml#/components/schemas/Paging'
        _links:
          $ref: 'common.yaml#/components/schemas/Links'
        items:
          type: array
          items:
            $ref: '#/components/schemas/EventTypeResponse'
    # ── EventExposure ──────────────────────────
    EventExposure:
      type: object
      description: |
        Declaration that an application publishes events of a specific type.
        Maps to EventExposureSpec in the EventExposure CR.
      properties:
        eventType:
          type: string
          description: >
            Dot-separated event type identifier (e.g. "de.telekom.eni.quickstart.v1").
            References the EventType CR.
          minLength: 1
          example: de.telekom.eni.quickstart.v1
        visibility:
          $ref: '#/components/schemas/EventVisibility'
        approval:
          $ref: '#/components/schemas/EventApproval'
        scopes:
          type: array
          description: >
            Named scopes with optional publisher-side trigger filtering.
            Maps to EventExposureSpec.Scopes in the EventExposure CR.
          items:
            $ref: '#/components/schemas/EventScope'
        additionalPublisherIds:
          type: array
          description: >
            A

# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/deutsche-telekom/refs/heads/main/openapi/controlplane-discovery-event-openapi.yml