TARDIS Rover API

Control-plane API for the TARDIS (Telekom API Reference Documentation & Integration Service) internal developer platform. Manages Rovers, ApiSpecifications, ApiRoadmaps, FileSpecifications, and EventSpecifications for application teams onboarding APIs to the Open Telekom Integration Platform.

TARDIS Rover 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 API Gateway, Internal Developer Platform, TARDIS, and Open Telekom Integration Platform. The published artifact set on APIs.io includes API documentation and an OpenAPI specification.

OpenAPI Specification

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

openapi: 3.0.3
info:
  title: Rover Api
  description: >-
    API of the TARDIS control plane. With this API, you can manage your Rovers,
    ApiSpecifications, ApiRoadmaps, FileSpecifications and EventSpecifications.
  contact:
    name: TARDIS
    url: https://developer.telekom.de/docs/src/tardis_customer_handbook/support/
    email: [email protected]
  version: 3.0.0
  x-api-category: Infrastructure
servers:
  - url: https://{host}/rover/v3
    description: API where access must be approved. Supports more access-scopes.
    variables:
      host:
        default: api.telekom.de
        description: >-
          The Stargate host, see
          [docs](https://developer.telekom.de/docs/src/tardis_customer_handbook/StarGate_Environment_Overview/#stargate-and-iris)
  - url: https://{host}/rover/api
    description: >-
      Team-API that every team may use automatically, but supports only
      team-access. This API is also used by rover-ctl.
    variables:
      host:
        default: api.telekom.de
        description: >-
          The Stargate host, see
          [docs](https://developer.telekom.de/docs/src/tardis_customer_handbook/StarGate_Environment_Overview/#stargate-and-iris)
security:
  - OAuth2:
      - tardis:admin:all
tags:
  - name: ApiSpecification
    description: Manage ApiSpecifications
  - name: EventSpecification
    description: Manage EventSpecifications
  - name: Changelog
    description: Manage Changelogs
  - name: Rover
    description: Manage Rovers
  - name: ApiRoadmap
    description: Manage ApiRoadmaps
paths:
  /rovers:
    get:
      tags:
        - Rover
      summary: Find all Rovers
      description: Find all Rovers of a Team
      operationId: getAllRovers
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Cursor'
        - $ref: '#/components/parameters/Sort'
      responses:
        '200':
          description: OK
          headers:
            X-Total-Count:
              $ref: '#/components/headers/XTotalCount'
            X-Result-Count:
              $ref: '#/components/headers/XResultCount'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoverListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/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
    post:
      tags:
        - Rover
      summary: Create a Rover
      description: >-
        Create a Rover. Creating and updating resources is asynchronous, which
        is why the status is given as an answer to a POST/PUT request, since it
        is possible that the resource to be created has not yet been processed
        at the time the response is created. If the status after creation is in
        state "Processing", the resource must be queried with GET to see whether
        it was created successfully or whether errors/warnings are written in
        the status. If the creation/update is incorrect, the processing status
        will be set to blocked. Otherwise to "failed". Status 201 means, that we
        accepted the request and there are no syntactic or semantic errors, but
        there can occur failures in the after processing. That will be shown in
        the status if you request the appropriate resource.
      operationId: createRover
      deprecated: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoverCreateRequest'
      responses:
        '202':
          description: ACCEPTED
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoverResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:hub:all
            - tardis:team:all
            - tardis:user:all
  /rovers/info:
    get:
      tags:
        - Rover
      summary: Read info of all applications of a Team
      description: Read info of all applications of a Team
      operationId: getApplicationsInfo
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Cursor'
        - $ref: '#/components/parameters/Sort'
        - name: names
          description: Filter by application names
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - $ref: '#/components/parameters/ShallowInfo'
      responses:
        '200':
          description: OK
          headers:
            X-Total-Count:
              $ref: '#/components/headers/XTotalCount'
            X-Result-Count:
              $ref: '#/components/headers/XResultCount'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoverInfoResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/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
  /rovers/{roverId}:
    get:
      tags:
        - Rover
      summary: Find an existing Rover
      description: Find an existing Rover
      operationId: getRover
      parameters:
        - $ref: '#/components/parameters/RoverId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoverResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/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
    put:
      tags:
        - Rover
      summary: Update an existing Rover
      description: >-
        Update an existing Rover. Creating and updating resources is
        asynchronous, which is why the status is given as an answer to a
        POST/PUT request, since it is possible that the resource to be created
        has not yet been processed at the time the response is created. If the
        status after creation is in state "Processing", the resource must be
        queried with GET to see whether it was created successfully or whether
        errors/warnings are written in the status. If the creation/update is
        incorrect, the processing status will be set to blocked. Otherwise to
        "failed". Status 201 means, that we accepted the request and there are
        no syntactic or semantic errors, but there can occur failures in the
        after processing. That will be shown in the status if you request the
        appropriate resource.
      operationId: updateRover
      parameters:
        - $ref: '#/components/parameters/RoverId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoverUpdateRequest'
      responses:
        '202':
          description: ACCEPTED
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoverResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:hub:all
            - tardis:team:all
            - tardis:user:all
    delete:
      tags:
        - Rover
      summary: Delete a Rover
      description: >
        **Important:** The deletion is done asynchronously to ensure that the
        resource was actually deleted, use this or the GET resource until you
        receive a 404 response.  

        Delete Rover - will remove your API / Subscriptions / Exposures
      operationId: deleteRover
      parameters:
        - $ref: '#/components/parameters/RoverId'
      responses:
        '204':
          description: DELETED
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:hub:all
            - tardis:team:all
            - tardis:user:all
  /rovers/{roverId}/info:
    get:
      tags:
        - Rover
      summary: Read info of a specific application
      description: Read info of a specific application
      operationId: getApplicationInfo
      parameters:
        - $ref: '#/components/parameters/RoverId'
        - $ref: '#/components/parameters/ShallowInfo'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoverInfoResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/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
  /rovers/{roverId}/secret:
    patch:
      tags:
        - Rover
      summary: Rotate the clientSecret for an Application
      description: >
        Initiates a secret rotation for the Application. The rotation is
        handled by the admission webhook which decides whether to perform a
        graceful rotation (old secret remains valid during a grace period) or a
        non-graceful rotation based on the zone configuration.
      operationId: resetRoverSecret
      parameters:
        - $ref: '#/components/parameters/RoverId'
      responses:
        '202':
          description: Accepted - secret rotation initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoverSecretRotationAcceptedResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Conflict - a secret rotation is already in progress
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:hub:all
            - tardis:team:all
            - tardis:user:all
  /rovers/{roverId}/secret/status:
    get:
      tags:
        - Rover
      summary: Get the secret rotation status for an Application
      description: >
        Returns the current secret rotation status for an Application,
        including whether a graceful rotation is in progress, whether it has
        converged, and the relevant expiry timestamps.
      operationId: getRoverSecretRotationStatus
      parameters:
        - $ref: '#/components/parameters/RoverId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoverSecretRotationStatusResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:hub:all
            - tardis:team:all
            - tardis:user:all
            - tardis:user:read
  /rovers/{roverId}/status:
    get:
      tags:
        - Rover
      summary: Find an existing Rover and return its status
      description: Find an existing Rover and return its status
      operationId: getRoverStatus
      parameters:
        - $ref: '#/components/parameters/RoverId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceStatusResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/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
  /apispecifications:
    get:
      tags:
        - ApiSpecification
      summary: Find all ApiSpecifications
      description: Find all API Specifications of a Team
      operationId: getAllApiSpecifications
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Cursor'
        - $ref: '#/components/parameters/Sort'
      responses:
        '200':
          description: OK
          headers:
            X-Total-Count:
              $ref: '#/components/headers/XTotalCount'
            X-Result-Count:
              $ref: '#/components/headers/XResultCount'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSpecificationListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/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
    post:
      tags:
        - ApiSpecification
      summary: Create an ApiSpecification
      description: >-
        Create an ApiSpecification. Creating and updating resources is
        asynchronous, which is why the status is given as an answer to a
        POST/PUT request, since it is possible that the resource to be created
        has not yet been processed at the time the response is created. If the
        status after creation is in state "Processing", the resource must be
        queried with GET to see whether it was created successfully or whether
        errors/warnings are written in the status. If the creation/update is
        incorrect, the processing status will be set to blocked. Otherwise to
        "failed". Status 201 means, that we accepted the request and there are
        no syntactic or semantic errors, but there can occur failures in the
        after processing. That will be shown in the status if you request the
        appropriate resource.
      operationId: createApiSpecification
      deprecated: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiSpecificationCreateRequest'
      responses:
        '202':
          description: ACCEPTED
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSpecificationResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:hub:all
            - tardis:team:all
            - tardis:user:all
  /apispecifications/{apiSpecificationId}/status:
    get:
      tags:
        - ApiSpecification
      summary: Find an existing ApiSpecification and return its status
      description: Find an existing ApiSpecification and return its status
      operationId: getApiSpecificationStatus
      parameters:
        - $ref: '#/components/parameters/ApiSpecificationId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceStatusResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:admin:read
            - tardis:admin:obfuscated
            - tardis:hub:all
            - tardis:hub:read
            - tardis:hub:obfuscated
            - tardis:team:all
            - tardis:team:read
            - tardis:team:obfuscated
  /apispecifications/{apiSpecificationId}:
    get:
      tags:
        - ApiSpecification
      summary: Find an existing ApiSpecification
      description: Find an existing ApiSpecification
      operationId: getApiSpecifications
      parameters:
        - $ref: '#/components/parameters/ApiSpecificationId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSpecificationResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/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
    put:
      tags:
        - ApiSpecification
      summary: Update an existing ApiSpecification
      description: >-
        Update an existing ApiSpecification. Creating and updating resources is
        asynchronous, which is why the status is given as an answer to a
        POST/PUT request, since it is possible that the resource to be created
        has not yet been processed at the time the response is created. If the
        status after creation is in state "Processing", the resource must be
        queried with GET to see whether it was created successfully or whether
        errors/warnings are written in the status. If the creation/update is
        incorrect, the processing status will be set to blocked. Otherwise to
        "failed". Status 201 means, that we accepted the request and there are
        no syntactic or semantic errors, but there can occur failures in the
        after processing. That will be shown in the status if you request the
        appropriate resource.
      operationId: updateApiSpecification
      parameters:
        - $ref: '#/components/parameters/ApiSpecificationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiSpecificationUpdateRequest'
      responses:
        '202':
          description: ACCEPTED
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSpecificationResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:hub:all
            - tardis:team:all
            - tardis:user:all
    delete:
      tags:
        - ApiSpecification
      summary: Delete an ApiSpecification
      description: >
        **Important:** The deletion is done asynchronously to ensure that the
        resource was actually deleted, use this or the GET resource until you
        receive a 404 response.  

        Delete an ApiSpecification
      operationId: deleteApiSpecification
      parameters:
        - $ref: '#/components/parameters/ApiSpecificationId'
      responses:
        '204':
          description: DELETED
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:hub:all
            - tardis:team:all
            - tardis:user:all
  /eventspecifications:
    get:
      tags:
        - EventSpecification
      summary: Find all EventSpecifications
      description: Find all EventSpecifications of a Team
      operationId: getAllEventSpecifications
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Cursor'
        - $ref: '#/components/parameters/Sort'
      responses:
        '200':
          description: OK
          headers:
            X-Total-Count:
              $ref: '#/components/headers/XTotalCount'
            X-Result-Count:
              $ref: '#/components/headers/XResultCount'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSpecificationListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/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
    post:
      tags:
        - EventSpecification
      summary: Create an EventSpecification
      description: >-
        Create an EventSpecification. Creating and updating resources is
        asynchronous, which is why the status is given as an answer to a
        POST/PUT request, since it is possible that the resource to be created
        has not yet been processed at the time the response is created. If the
        status after creation is in state "Processing", the resource must be
        queried with GET to see whether it was created successfully or whether
        errors/warnings are written in the status. If the creation/update is
        incorrect, the processing status will be set to blocked. Otherwise to
        "failed". Status 201 means, that we accepted the request and there are
        no syntactic or semantic errors, but there can occur failures in the
        after processing. That will be shown in the status if you request the
        appropriate resource.
      operationId: createEventSpecification
      deprecated: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventSpecificationCreateRequest'
      responses:
        '202':
          description: ACCEPTED
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSpecificationResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - OAuth2:
            - tardis:admin:all
            - tardis:hub:all
            - tardis:team:all
            - tardis:user:all
  /eventspecifications/{eventSpecificationId}:
    get:
      tags:
        - EventSpecification
      summary: Find an existing EventSpecification
      description: Find an existing EventSpecification
      operationId: getEventSpecification
      parameters:
        - name: eventSpecificationId
          description: The unique id of this resource
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSpecificationResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/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
    put:
      tags:
        - EventSpecification
      summary: Update an existing EventSpecification
      description: >-
        Update an existing EventSpecification. Creating and updating resources
        is asynchronous, which is why the status is given as an answer to a
        POST/PUT request, since it is possible that the resource to be created
        has not yet been processed at the time the response is created. If the
        status after creation is in state "Processing", the resource must be
        queried with GET to see whether it was created successfully or whether
        errors/warnings are written in the status. If the creation/update is
        incorrect, the processing status will be set to blocked. Otherwise to
        "failed". Status 201 means, that we accepted the request and there are
        no syntactic or semantic errors, but there can occur failures in the
        after processing. That will be shown in the status if you request the
        appropriate resource.
      operationId: updateEventSpecification
      parameters:
        - name: eventSpecificationId
          description: The unique id of this resource
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/s

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