Skip to main content

Rover Domain

The Rover domain is the primary user-facing entry point for the Control Plane. Users define their API exposures, subscriptions, and event configurations in a declarative Rover file, and the operator translates them into resources across multiple other domains.

Custom Resources​

AgentSpecification​

AgentSpecification is the Schema for the agentspecifications API

Group: rover.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

AgentSpecificationSpec​

Appears in: AgentSpecification, McpSpecification

FieldTypeDefaultValidation
basepathstring—Required, maxLength: 200, pattern: ^/.*$
categorystringotherRequired
descriptionstring—Optional
hashstring—Required
namestring—Required
scopesstring[]—Optional
specificationstring—Required
versionstring—Required, pattern: ^\d+.*$

AgentSpecificationStatus​

Appears in: AgentSpecification

FieldTypeDefaultValidation
agentCardAgentCard—Optional
conditionsCondition[]—Optional

AgentCard​

Appears in: AgentSpecificationStatus, ApiSpecificationStatus, EventSpecificationStatus, FileSpecificationStatus, McpSpecificationStatus, RoverStatus

AgentCard reference

FieldTypeDefaultValidation
namestring—Required
namespacestring—Required
uidstring—Optional

Condition​

Appears in: AgentSpecificationStatus, ApiChangelogStatus, ApiSpecificationStatus, EventSpecificationStatus, FileSpecificationStatus, McpSpecificationStatus, RoverStatus

FieldTypeDefaultValidation
lastTransitionTimestring—Required, Format: date-time
messagestring—Required, maxLength: 32768
observedGenerationinteger—Optional, Format: int64, minimum: 0
reasonstring—Required, minLength: 1, maxLength: 1024, pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
statusstring—Required, Enum: True \| False \| Unknown
typestring—Required, maxLength: 316, pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

ApiChangelog​

ApiChangelog is the Schema for the apichangelogs API The ApiChangelog name is the normalized basePath with major version removed Example: basePath "/eni/my-api/v1" → changelog name "eni-my-api"

Group: rover.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

ApiChangelogSpec​

Appears in: ApiChangelog, Roadmap

ApiChangelogSpec defines the desired state of ApiChangelog

FieldTypeDefaultValidation
contentsstring—Required
hashstring—Required
specificationRefSpecificationRef—Required

SpecificationRef​

Appears in: ApiChangelogSpec

SpecificationRef is a reference to the ApiSpecification this changelog describes The referenced specification may or may not exist yet

FieldTypeDefaultValidation
apiVersionstring—Optional
kindstring—Optional
namestring—Required
namespacestring—Required
uidstring—Optional

ApiChangelogStatus​

Appears in: ApiChangelog, Roadmap

ApiChangelogStatus defines the observed state of ApiChangelog

FieldTypeDefaultValidation
conditionsCondition[]—Optional

ApiSpecification​

ApiSpecification is the Schema for the apispecifications API

Group: rover.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

ApiSpecificationSpec​

Appears in: ApiSpecification

FieldTypeDefaultValidation
basepathstring—Required, maxLength: 200, pattern: ^/.*$
categorystringotherRequired
hashstring—Required
lintLint—Optional
scopesstring[]—Optional
specificationstring—Required
versionstring—Required, pattern: ^\d+.*$
xvendorbooleanfalseOptional

Lint​

Appears in: ApiSpecificationSpec

Lint contains the result of the OAS linting performed by rover-server.

FieldTypeDefaultValidation
dashboardUrlstring—Optional
messagestring—Optional
passedboolean—Required

ApiSpecificationStatus​

Appears in: ApiSpecification

FieldTypeDefaultValidation
apiAgentCard—Optional
conditionsCondition[]—Optional

EventSpecification​

EventSpecification is the Schema for the eventspecifications API. It defines an event type's metadata and creates the corresponding EventType singleton in the event domain, analogous to how ApiSpecification creates Api resources.

Group: rover.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

EventSpecificationSpec​

Appears in: EventSpecification

EventSpecificationSpec defines the desired state of EventSpecification.

FieldTypeDefaultValidation
categorystringotherOptional, pattern: ^[a-z]+$
descriptionstring—Optional
specificationstring—Optional
typestring—Required, minLength: 1, maxLength: 253, pattern: ^[a-z0-9]+([.-][a-z0-9]+)*$
versionstring—Required, pattern: ^\d+.*$

EventSpecificationStatus​

Appears in: EventSpecification

EventSpecificationStatus defines the observed state of EventSpecification.

FieldTypeDefaultValidation
conditionsCondition[]—Optional
eventTypeAgentCard—Optional

FileSpecification​

FileSpecification is the Schema for the filespecifications API. It defines a file type's metadata and creates the corresponding file-domain FileType, analogous to how ApiSpecification creates Api resources and EventSpecification creates EventType resources.

Group: rover.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

FileSpecificationSpec​

Appears in: FileSpecification

FileSpecificationSpec defines the desired state of FileSpecification.

FieldTypeDefaultValidation
descriptionstring—Optional
specificationstring—Optional
storageTypestringsftpOptional, Enum: sftp
typestring—Required, minLength: 1, maxLength: 253
versionstring—Required, pattern: ^\d+.*$

FileSpecificationStatus​

Appears in: FileSpecification

FileSpecificationStatus defines the observed state of FileSpecification.

FieldTypeDefaultValidation
conditionsCondition[]—Optional
fileTypeAgentCard—Optional

McpSpecification​

McpSpecification is the Schema for the mcpspecifications API

Group: rover.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

McpSpecificationStatus​

Appears in: McpSpecification

FieldTypeDefaultValidation
conditionsCondition[]—Optional
mcpServerAgentCard—Optional

Roadmap​

Roadmap is the Schema for the roadmaps API The Roadmap name is the normalized basePath with major version removed Example: basePath "/eni/my-api/v1" → roadmap name "eni-my-api"

Group: rover.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

Rover​

Rover is the Schema for the rovers API Rover resources define API exposures and subscriptions for applications

Group: rover.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

RoverSpec​

Appears in: Rover

Spec defines the desired state of the Rover resource

FieldTypeDefaultValidation
authenticationAuthentication—Optional
clientSecretstring—Optional
exposuresExposures[]—Optional, maxItems: 150
externalIdsExternalId[]—Optional, maxItems: 16
ipRestrictionsIpRestrictions—Optional
permissionsPermissions[]—Optional, maxItems: 150
subscriptionsSubscriptions[]—Optional, maxItems: 150
zonestring—Required, minLength: 1

Authentication​

Appears in: RoverSpec

Authentication defines the authentication configuration for this application

FieldTypeDefaultValidation
m2mM2M—Optional

M2M​

Appears in: Authentication

M2M defines machine-to-machine authentication settings for the application

FieldTypeDefaultValidation
tokenRequeststringclient_secret_basicOptional, Enum: client_secret_basic \| client_secret_post

Exposures​

Appears in: RoverSpec

Exposures is a list of APIs and Events that this Rover exposes to consumers

FieldTypeDefaultValidation
agenticAgentic—Optional
apiApi—Optional
eventEvent—Optional
fileFile—Optional

Agentic​

Appears in: Exposures

Agentic defines an Agentic(MCP or agent) server exposure configuration

FieldTypeDefaultValidation
approvalApproval—Required
basePathstring—Required, pattern: ^/[a-z0-9-/]+$
securitySecurity—Optional
trafficTraffic—Optional
transformationTransformation—Optional
upstreamsUpstreams[]—Required, minItems: 1, maxItems: 12
variantstringMCPRequired, Enum: MCP \| TELECONTEXTMCP \| AGENT
visibilitystringEnterpriseRequired, Enum: World \| Zone \| Enterprise

Approval​

Appears in: Agentic, Api, Event, File

Approval defines the approval workflow for subscriptions to this MCP server

FieldTypeDefaultValidation
strategystringSimpleRequired, Enum: Auto \| Simple \| FourEyes
trustedTeamsTrustedTeam[]—Optional, minItems: 0, maxItems: 10

TrustedTeam​

Appears in: Approval

TrustedTeams identifies teams that are trusted for approving this API Per default your own team is trusted

FieldTypeDefaultValidation
groupstring—Required, minLength: 1
teamstring—Required, minLength: 1

Security​

Appears in: Agentic, Api

Security defines optional security configuration

FieldTypeDefaultValidation
m2mRoverM2M—Optional

RoverM2M​

Appears in: Security

M2M defines machine-to-machine authentication configuration

FieldTypeDefaultValidation
basicBasic—Optional
claimsClaims—Optional
externalIDPExternalIDP—Optional
scopesstring[]—Optional, maxItems: 100

Basic​

Appears in: RoverM2M, ExternalIDP, RoverM2M2

Basic defines basic authentication configuration

FieldTypeDefaultValidation
passwordstring—Required, minLength: 1, maxLength: 256
usernamestring—Required, minLength: 1, maxLength: 256

Claims​

Appears in: RoverM2M

Claims defines token claims that must be present in the token reaching the upstream. Only valid on the platform-managed LMS token.

FieldTypeDefaultValidation
audAud—Optional

Aud​

Appears in: Claims

Aud defines the audience claim

FieldTypeDefaultValidation
valuestring—Optional, minLength: 1, maxLength: 256
valueFromstring—Optional, Enum: ProviderClientId \| ConsumerClientId \| BasePath

ExternalIDP​

Appears in: RoverM2M

ExternalIDP defines external identity provider configuration

FieldTypeDefaultValidation
basicBasic—Optional
clientClient—Optional
grantTypestring—Required, Enum: client_credentials \| authorization_code \| password \| refresh_token
tokenEndpointstring—Required, Format: uri, maxLength: 2048
tokenRequeststring—Required, Enum: client_secret_basic \| client_secret_post

Client​

Appears in: ExternalIDP, RoverM2M2

Client defines client credentials for the OAuth2 token request

FieldTypeDefaultValidation
clientIdstring—Optional, maxLength: 256
clientKeystring—Optional, maxLength: 8192
clientSecretstring—Optional, maxLength: 512
refreshTokenstring—Optional

Traffic​

Appears in: Agentic, Api

Traffic defines optional traffic management configuration

FieldTypeDefaultValidation
circuitBreakerCircuitBreaker—Optional
failoverFailover—Optional
loadBalancingLoadBalancing—Optional
rateLimitRateLimit—Optional

CircuitBreaker​

Appears in: Traffic, RoverTraffic

CircuitBreaker defines the Kong circuit breaker configuration

FieldTypeDefaultValidation
enabledbooleanfalseOptional

Failover​

Appears in: Traffic

Failover defines disaster recovery configuration for this API

FieldTypeDefaultValidation
zonesstring[]—Optional, maxItems: 10

LoadBalancing​

Appears in: Traffic

LoadBalancing defines how traffic is distributed among multiple upstream servers

FieldTypeDefaultValidation
strategystringRoundRobinOptional, Enum: RoundRobin \| LeastConnections

RateLimit​

Appears in: Traffic

RateLimit defines request rate limiting for this API

FieldTypeDefaultValidation
consumersConsumers—Optional
providerProvider—Optional

Consumers​

Appears in: RateLimit

Consumers defines rate limits applied to API consumers (clients)

FieldTypeDefaultValidation
defaultDefault—Optional
overridesOverrides[]—Optional, maxItems: 10

Default​

Appears in: Consumers

Default defines the rate limit applied to all consumers not specifically overridden

FieldTypeDefaultValidation
limitsLimits—Required

Limits​

Appears in: Default, Overrides, Provider

Limits defines the actual rate limit values for different time windows

FieldTypeDefaultValidation
hourinteger—Optional, minimum: 0
minuteinteger—Optional, minimum: 0
secondinteger—Optional, minimum: 0

Overrides​

Appears in: Consumers

Overrides defines consumer-specific rate limits

FieldTypeDefaultValidation
consumerstring—Required, minLength: 1
limitsLimits—Required

Provider​

Appears in: RateLimit

Provider defines rate limits applied by the API provider (owner)

FieldTypeDefaultValidation
limitsLimits—Optional
optionsRateLimitOptions—Optional

RateLimitOptions​

Appears in: Provider

RateLimitOptions defines additional configuration options for rate limiting

FieldTypeDefaultValidation
faultTolerantbooleantrueOptional
hideClientHeadersbooleanfalseOptional

Transformation​

Appears in: Agentic, Api, RoverAgentic, RoverApi

Transformation defines optional request/response transformations

FieldTypeDefaultValidation
requestRequest—Optional

Request​

Appears in: Transformation

Request defines transformations applied to incoming API requests

FieldTypeDefaultValidation
headersHeaders—Optional

Headers​

Appears in: Request

Headers defines HTTP header modifications for requests

FieldTypeDefaultValidation
addstring[]—Optional, minItems: 1, maxItems: 5
removestring[]—Optional, minItems: 1, maxItems: 5

Upstreams​

Appears in: Agentic, Api

Upstreams defines the backend MCP server endpoints

FieldTypeDefaultValidation
urlstring—Required, Format: uri
weightinteger1Optional, minimum: 1, maximum: 100

Api​

Appears in: Exposures

Api defines an API-based service exposure configuration

FieldTypeDefaultValidation
approvalApproval—Required
basePathstring—Required, pattern: ^/.*$
securitySecurity—Optional
trafficTraffic—Optional
transformationTransformation—Optional
upstreamsUpstreams[]—Required, minItems: 1, maxItems: 12
visibilitystringEnterpriseRequired, Enum: World \| Zone \| Enterprise

Event​

Appears in: Exposures

Event defines an Event-based service exposure configuration

FieldTypeDefaultValidation
additionalPublisherIdsstring[]—Optional
approvalApproval—Required
eventTypestring—Required, minLength: 1, pattern: ^[a-z0-9]+([.-][a-z0-9]+)*$
scopesScopes[]—Optional
visibilitystringEnterpriseRequired, Enum: World \| Zone \| Enterprise

Scopes​

Appears in: Event

Scopes defines named scopes with optional publisher-side trigger filtering

FieldTypeDefaultValidation
namestring—Required, minLength: 1
triggerTrigger—Required

Trigger​

Appears in: Scopes, RoverEvent

Trigger defines publisher-side filtering criteria for this scope. Every scope must define a trigger.

FieldTypeDefaultValidation
responseFilterResponseFilter—Optional
selectionFilterSelectionFilter—Optional

ResponseFilter​

Appears in: Trigger

ResponseFilter controls payload shaping (which fields to return).

FieldTypeDefaultValidation
modestringIncludeOptional, Enum: Include \| Exclude
pathsstring[]—Optional

SelectionFilter​

Appears in: Trigger

SelectionFilter controls event matching (which events to deliver).

FieldTypeDefaultValidation
attributesmap<string, string>—Optional
expressionobject—Optional

File​

Appears in: Exposures

File defines a File-based (SFTP) service exposure configuration

FieldTypeDefaultValidation
approvalApproval—Required
fileTypestring—Required, minLength: 1
sftpSftp—Optional
variantstringSFTPRequired, Enum: SFTP
visibilitystringEnterpriseRequired, Enum: World \| Zone \| Enterprise

Sftp​

Appears in: File, RoverFile

SFTP configures provider-side SFTP access for this file exposure.

FieldTypeDefaultValidation
publicKeysPublicKeys[]—Required, minItems: 1

PublicKeys​

Appears in: Sftp

PublicKeys contains SSH public keys for the SFTP user of the FileType.

FieldTypeDefaultValidation
keystring—Required, minLength: 1
labelstring—Optional, minLength: 1

ExternalId​

Appears in: RoverSpec

ExternalIds carries business identifiers (e.g. PSI, ICTO) attached to this Rover. Each entry is tagged with a scheme. Format and presence are validated per-zone via the zone's ExternalIdPolicies.

FieldTypeDefaultValidation
idstring—Required, minLength: 1, maxLength: 128
schemestring—Required, minLength: 1, maxLength: 32, pattern: ^[a-z][a-z0-9]*$

IpRestrictions​

Appears in: RoverSpec

IpRestrictions defines IP-based access restrictions for the entire Application

FieldTypeDefaultValidation
allowstring[]—Optional, minItems: 0, maxItems: 10
denystring[]—Optional, minItems: 0, maxItems: 10

Permissions​

Appears in: RoverSpec

Permissions defines role-based access control permissions for this application

FieldTypeDefaultValidation
actionsstring[]—Optional, minItems: 1, maxItems: 75
entriesEntry[]—Optional, minItems: 1, maxItems: 75
resourcestring—Optional, maxLength: 256
rolestring—Optional, maxLength: 256

Entry​

Appears in: Permissions

Entries lists role-resource-action tuples (used in resource-oriented and role-oriented formats)

FieldTypeDefaultValidation
actionsstring[]—Required, minItems: 1, maxItems: 75
resourcestring—Optional
rolestring—Optional

Subscriptions​

Appears in: RoverSpec

Subscriptions is a list of APIs and Events that this Rover consumes from providers

FieldTypeDefaultValidation
agenticRoverAgentic—Optional
apiRoverApi—Optional
eventRoverEvent—Optional
fileRoverFile—Optional

RoverAgentic​

Appears in: Subscriptions

Agentic defines an Agentic(MCP or agent) server subscription configuration

FieldTypeDefaultValidation
basePathstring—Required, pattern: ^/[a-z0-9-/]+$
securityRoverSecurity—Optional
trafficRoverTraffic—Optional
transformationTransformation—Optional

RoverSecurity​

Appears in: RoverAgentic, RoverApi

Security defines optional security configuration

FieldTypeDefaultValidation
m2mRoverM2M2—Optional

RoverM2M2​

Appears in: RoverSecurity

M2M defines machine-to-machine authentication configuration

FieldTypeDefaultValidation
basicBasic—Optional
clientClient—Optional
scopesstring[]—Optional, maxItems: 100

RoverTraffic​

Appears in: RoverAgentic, RoverApi

Traffic defines optional traffic management configuration

FieldTypeDefaultValidation
failoverCircuitBreaker—Optional

RoverApi​

Appears in: Subscriptions

Api defines an API-based service subscription configuration

FieldTypeDefaultValidation
basePathstring—Required, pattern: ^/.*$
organizationstring—Optional
securityRoverSecurity—Optional
trafficRoverTraffic—Optional
transformationTransformation—Optional

RoverEvent​

Appears in: Subscriptions

Event defines an Event-based service subscription configuration

FieldTypeDefaultValidation
deliveryDelivery—Required
eventTypestring—Required, minLength: 1, pattern: ^[a-z0-9]+([.-][a-z0-9]+)*$
scopesstring[]—Optional
triggerTrigger—Optional

Delivery​

Appears in: RoverEvent

Delivery configures how events are delivered to the subscriber

FieldTypeDefaultValidation
callbackstring—Optional, Format: uri
circuitBreakerOptOutboolean—Optional
enforceGetHttpRequestMethodForHealthCheckboolean—Optional
eventRetentionTimestring—Optional, Format: duration
payloadstringDataRequired, Enum: Data \| DataRef
redeliveriesPerSecondinteger—Optional
retryableStatusCodesinteger[]—Optional
typestringCallbackRequired, Enum: Callback \| ServerSentEvent

RoverFile​

Appears in: Subscriptions

File defines a File-based (SFTP) service subscription configuration

FieldTypeDefaultValidation
fileTypestring—Required, minLength: 1
sftpSftp—Optional

RoverStatus​

Appears in: Rover

Status contains the observed state of the Rover resource

FieldTypeDefaultValidation
aiExposuresAgentCard[]—Optional
aiSubscriptionsAgentCard[]—Optional
apiExposuresAgentCard[]—Optional
apiSubscriptionsAgentCard[]—Optional
applicationAgentCard—Optional
conditionsCondition[]—Optional
eventExposuresAgentCard[]—Optional
eventSubscriptionsAgentCard[]—Optional
fileExposuresAgentCard[]—Optional
fileSubscriptionsAgentCard[]—Optional
permissionSetsAgentCard[]—Optional

Entry Points​

Users interact with the Rover domain through three paths:

PathDescription
Rover-CTLCommand-line tool. Reads a local Rover file and sends it to the Rover Server.
Rover ServerREST API. Validates the configuration, uploads specifications to the File Manager, obfuscates secrets through the Secret Manager, and creates the Rover resource in Kubernetes.
Direct kubectlApply a Rover resource directly to the Kubernetes API (for advanced users or automation).

Resource Names and Labels​

The Rover Server accepts resource names between 2 and 90 characters. Names longer than 63 characters retain their full resource name, while the cp.ei.telekom.de/application label is shortened to fit Kubernetes' 63-character label-value limit. The shortened value retains the beginning and end of the name, with a deterministic hash in the middle.

The server also normalizes the environment, team, and group labels to lowercase, replaces spaces, underscores, and slashes with hyphens, trims leading and trailing hyphens, and shortens values exceeding the label-value limit.

Domain Interactions​

  • Application domain — Creates Application resources.
  • API domain — Creates Api, ApiExposure, and ApiSubscription resources.
  • Event domain — Creates EventExposure and EventSubscription resources.
  • File domain (SFTP) — Creates the SFTP user (shared space) from a FileSpecification and registers producer/consumer SSH public keys for fileType exposures and subscriptions. Gated behind the file feature flag.
  • Gateway domain — Configures traffic management settings.
  • Identity domain — Configures authentication settings.
  • Approval domain — Integrates approval requirements for exposures.

File Types (SFTP)​

Rover can configure an external SFTP file-transfer service without changing the customer-facing Rover file:

  • A FileSpecification defines a spec.type (e.g. dds-rc1-provider-file), its spec.version, and a description. It can also include an optional YANL schema in spec.specification; Rover Server stores that document in File Manager and returns it through the FileSpecification API. Its metadata name must be the normalized type (lowercase, dots replaced by hyphens).
  • Apply FileSpecifications through Rover-CTL like other Rover resources; Rover Server persists the resource and the Rover controller creates the matching file-domain FileType.
  • A fileType exposure (producer) or subscription (consumer) with variant: sftp and one or more publicKeys registers those SSH keys on the matching SFTP user.

apiVersion​

ApiRoadmap, ApiChangelog, and FileSpecification accept both tcp.ei.telekom.de/v1 and rover.ei.telekom.de/v1 API versions. Existing manifests using tcp.ei.telekom.de/v1 remain supported.

apiVersion: rover.ei.telekom.de/v1
kind: FileSpecification
metadata:
name: invoice-monthly
spec:
type: invoice.monthly
version: 1.0.0
description: Monthly invoice exports
specification:
type: object
properties:
invoiceId:
type: string
warning

Rover-CTL resolves handlers by the apiVersion/kind pair. A file with an unknown combination is skipped silently — apply logs Handler not found. Ignoring... and still exits with code 0.

Validation rules enforced by the Rover webhook:

  • fileType exposures/subscriptions are only allowed on the cetus and canis zones.
  • variant: sftp is optional.
  • At least one public key is required; both the key label and key value must be unique per fileType.

Because file transfer happens directly over SFTP, a Rover that only exposes/subscribes to file types yields a logical Application (needsClient and needsConsumer are false). If the same Rover also has an API or event subscription, a client is still required.