Skip to main content

API Domain

The API domain manages the full lifecycle of APIs within the Control Plane — from registration through exposure to subscription. It acts as an abstraction layer above the Gateway domain, handling the business logic of who can access which APIs and under what conditions.

Custom Resources​

Api​

Api is the Schema for the apis API

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

ApiSpec​

Appears in: Api

ApiSpec defines the desired state of Api

FieldTypeDefaultValidation
basePathstring—Required
categorystring—Required
oauth2Scopesstring[]—Optional
specificationstring—Optional
versionstring—Required
xVendorboolean—Required

ApiStatus​

Appears in: Api

ApiStatus defines the observed state of Api

FieldTypeDefaultValidation
activeboolean—Required
conditionsCondition[]—Optional

Condition​

Appears in: ApiStatus, ApiCategoryStatus, ApiExposureStatus, ApiSubscriptionStatus, RemoteApiSubscriptionStatus

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])$

ApiCategory​

ApiCategory is the Schema for the apicategories API

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

ApiCategorySpec​

Appears in: ApiCategory

spec defines the desired state of ApiCategory

FieldTypeDefaultValidation
activeboolean—Optional
allowTeamsAllowTeams—Optional
descriptionstring—Optional, maxLength: 256
labelValuestring—Required, minLength: 1, maxLength: 20
lintingLinting—Optional
mustHaveGroupPrefixbooleantrueOptional

AllowTeams​

Appears in: ApiCategorySpec

FieldTypeDefaultValidation
categoriesstring[]—Optional
namesstring[]—Optional

Linting​

Appears in: ApiCategorySpec

Linting configures OAS specification linting for APIs in this category.

FieldTypeDefaultValidation
modestringBlockOptional, Enum: Block \| Warn \| None
rulesetstring—Required
whitelistedBasepathsstring[]—Optional

ApiCategoryStatus​

Appears in: ApiCategory

status defines the observed state of ApiCategory

FieldTypeDefaultValidation
conditionsCondition[]—Optional

ApiExposure​

ApiExposure is the Schema for the apiexposures API

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

ApiExposureSpec​

Appears in: ApiExposure

ApiExposureSpec defines the desired state of ApiExposure

FieldTypeDefaultValidation
apiBasePathstring—Required
approvalApproval—Required
securitySecurity—Optional
trafficTraffic—Required
transformationTransformation—Optional
upstreamsUpstream[]—Required
visibilitystring—Required, Enum: World \| Zone \| Enterprise
zoneZones—Required

Approval​

Appears in: ApiExposureSpec

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

Security​

Appears in: ApiExposureSpec

Security defines the security configuration for the Rover Security is optional, but if provided, exactly one of m2m or h2m must be set

FieldTypeDefaultValidation
m2mM2M—Optional

M2M​

Appears in: Security

M2M defines machine-to-machine authentication configuration

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

Basic​

Appears in: M2M, ExternalIDP, ApiSubscriptionM2M

Basic defines basic authentication configuration

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

Claims​

Appears in: M2M

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: M2M

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
tokenRequeststring—Required, Enum: client_secret_basic \| client_secret_post

Client​

Appears in: ExternalIDP, ApiSubscriptionM2M

Client defines client credentials for the OAuth2 token request

FieldTypeDefaultValidation
clientIdstring—Required, minLength: 1
clientKeystring—Optional
clientSecretstring—Optional
refreshTokenstring—Optional

Traffic​

Appears in: ApiExposureSpec

FieldTypeDefaultValidation
circuitBreakerCircuitBreaker—Optional
failoverFailover—Optional
rateLimitRateLimit—Optional

CircuitBreaker​

Appears in: Traffic, ApiSubscriptionTraffic

CircuitBreaker defines the Kong circuit breaker configuration

FieldTypeDefaultValidation
enabledboolean—Optional

Failover​

Appears in: Traffic

Failover defines the failover configuration for the API exposure.

FieldTypeDefaultValidation
zonesZones[]—Optional

Zones​

Appears in: Failover, ApiExposureSpec, ApiExposureStatus, Requestor, ApiSubscriptionSpec, ApiSubscriptionStatus, RemoteApiSubscriptionStatus

Zones defines the list of zones that are eligible for failover. If empty, the Provider failover feature is disabled.

FieldTypeDefaultValidation
namestring—Required
namespacestring—Required
uidstring—Optional

RateLimit​

Appears in: Traffic

RateLimit defines request rate limiting for this API

FieldTypeDefaultValidation
providerProvider—Optional
subscriberRateLimitSubscriberRateLimit—Optional

Provider​

Appears in: RateLimit

Provider defines request rate limiting for this API

FieldTypeDefaultValidation
limitsLimits—Required
optionsRateLimitOptions—Optional

Limits​

Appears in: Provider, Default, Overrides

Limits defines the actual rate limit values for different time windows

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

RateLimitOptions​

Appears in: Provider

RateLimitOptions defines additional configuration options for rate limiting

FieldTypeDefaultValidation
faultTolerantbooleantrueOptional
hideClientHeadersbooleanfalseOptional

SubscriberRateLimit​

Appears in: RateLimit

SubscriberRateLimit defines request rate limiting for this API per subscriber

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

Default​

Appears in: SubscriberRateLimit

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

FieldTypeDefaultValidation
limitsLimits—Required

Overrides​

Appears in: SubscriberRateLimit

Overrides defines consumer-specific rate limits, keyed by consumer identifier

FieldTypeDefaultValidation
limitsLimits—Required
subscriberstring—Required, minLength: 1

Transformation​

Appears in: ApiExposureSpec

Transformation defines request/response transformations for an API This is shared object for both subscriptions and exposures

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

Upstream​

Appears in: ApiExposureSpec

FieldTypeDefaultValidation
urlstring—Required
weightinteger—Optional

ApiExposureStatus​

Appears in: ApiExposure

ApiExposureStatus defines the observed state of ApiExposure

FieldTypeDefaultValidation
activeboolean—Required
conditionsCondition[]—Optional
failoverRoutesZones[]—Optional
proxyRoutesZones[]—Optional
routeZones—Optional

ApiSubscription​

ApiSubscription is the Schema for the apisubscriptions API

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

ApiSubscriptionSpec​

Appears in: ApiSubscription

ApiSubscriptionSpec defines the desired state of ApiSubscription

FieldTypeDefaultValidation
apiBasePathstring—Required
organizationstring—Optional
requestorRequestor—Required
securitySubscriberSecurity—Optional
trafficApiSubscriptionTraffic—Required
zoneZones—Required

Requestor​

Appears in: ApiSubscriptionSpec

FieldTypeDefaultValidation
applicationZones—Required

SubscriberSecurity​

Appears in: ApiSubscriptionSpec, RemoteApiSubscriptionSpec

SubscriberSecurity defines the security configuration for the Rover SubscriberSecurity is optional, but if provided, exactly one of m2m or h2m must be set

FieldTypeDefaultValidation
m2mApiSubscriptionM2M—Optional

ApiSubscriptionM2M​

Appears in: SubscriberSecurity

M2M defines machine-to-machine authentication configuration

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

ApiSubscriptionTraffic​

Appears in: ApiSubscriptionSpec

FieldTypeDefaultValidation
failoverCircuitBreaker—Optional

ApiSubscriptionStatus​

Appears in: ApiSubscription

ApiSubscriptionStatus defines the observed state of ApiSubscription

FieldTypeDefaultValidation
activeScopesstring[]—Optional
approvalZones—Optional
approvalRequestZones—Optional
conditionsCondition[]—Optional
consumeRouteZones—Optional
failoverConsumeRoutesZones[]—Optional
failoverRoutesZones[]—Optional
gatewayUrlstring—Optional
idpIssuerstring—Optional
remoteApiSubscriptionZones—Optional
routeZones—Optional

RemoteApiSubscription​

RemoteApiSubscription is the Schema for the remoteapisubscriptions API

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

RemoteApiSubscriptionSpec​

Appears in: RemoteApiSubscription

RemoteApiSubscriptionSpec defines the desired state of RemoteApiSubscription

FieldTypeDefaultValidation
apiBasePathstring—Required
requesterRequester—Required
securitySubscriberSecurity—Optional
sourceOrganizationstring—Optional
targetOrganizationstring—Required

Requester​

Appears in: RemoteApiSubscriptionSpec

Requester is the entity that is requesting the subscription

FieldTypeDefaultValidation
applicationstring—Required
teamTeam—Required

Team​

Appears in: Requester

Team is the team that is requesting the subscription

FieldTypeDefaultValidation
emailstring—Required
namestring—Required

RemoteApiSubscriptionStatus​

Appears in: RemoteApiSubscription

RemoteApiSubscriptionStatus defines the observed state of RemoteApiSubscription

FieldTypeDefaultValidation
apiSubscriptionZones—Optional
applicationZones—Optional
approvalRemoteApiSubscriptionApproval—Optional
approvalRequestRemoteApiSubscriptionApproval—Optional
conditionsCondition[]—Optional
gatewayUrlstring—Required
routeZones—Optional

RemoteApiSubscriptionApproval​

Appears in: RemoteApiSubscriptionStatus

FieldTypeDefaultValidation
approvalStatestring—Required
messagestring—Required

Reconciliation Flow​

Rover file applied
│
├──▶ Api created (registered)
├──▶ ApiExposure created (gateway route configured)
│
└──▶ ApiSubscription created (by subscribing team)
│
├──▶ Approval created (if strategy ≠ auto)
├──▶ Approval granted
└──▶ Gateway ConsumeRoute created (access granted)

Route Provisioning​

When an ApiExposure is reconciled, the API operator provisions the gateway routes that make the API reachable — including across zone boundaries. It decides which routes to create based on where the API's subscribers live:

Route createdWhenCreated from
Primary routeAlways — one per exposure, in the provider's zoneApiExposure.Spec.Upstreams
Proxy routeFor each zone that has a subscriber but is not the provider's zoneThe subscriber's zone + the provider zone's gateway URL
Secondary routeFor each provider failover zone (failover.zones)A copy of the provider's upstreams, placed in the backup zone

A matching ConsumeRoute is then created for each approved subscription to grant the consumer access to the correct route (primary or proxy, depending on the consumer's zone).

For the meaning of each route type and how they forward traffic, see Gateway Domain: Route Types & Cross-Zone Meshing.

Subscription Readiness​

An ApiSubscription reports Ready=False / PreconditionNotMet while the exposure is missing the required primary, provider-failover, or proxy route reference. This also clears a previously successful readiness condition.

After provisioning, local and remote subscriptions check condition-bearing resources created or updated during reconciliation for explicit Ready=False conditions. This includes the primary and any subscriber-failover ConsumeRoutes, and, where applicable, the ApprovalRequest, RemoteApiSubscription, and locally created proxy Route. An explicit child Ready=False keeps the subscription at Ready=False / SubResourceNotReady. Missing or unknown Ready conditions and child ObservedGeneration are not checked. Child status changes trigger reconciliation. Once the check passes, the subscription reports Ready=True / Provisioned.

Domain Interactions​

  • Rover domain — Creates Api, ApiExposure, and ApiSubscription resources.
  • Gateway domain — The API operator creates Route (primary, proxy, secondary) and ConsumeRoute resources on the gateway.
  • Admin domain — Zones provide the gateway URLs and identity issuers used to wire up cross-zone proxy and failover routes.
  • Approval domain — Subscriptions trigger approval workflows.
  • File Manager — OpenAPI specifications are stored and retrieved for API metadata.