Skip to main content

Approval Domain

The Approval domain provides configurable approval workflows for API and event subscriptions. It supports multiple approval strategies, tracks state through a finite state machine, and integrates with the Notification domain to keep all parties informed.

Custom Resources

Approval

Approval is the Schema for the approvals API

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

ApprovalSpec

Appears in: Approval

ApprovalSpec defines the desired state of Approval

FieldTypeDefaultValidation
actionstringunknownRequired
approvedRequestApprovedRequestOptional
deciderDeciderOptional
decisionsDecisions[]
Required
requesterRequesterRequired
statestringPendingRequired, Enum: Pending \| Semigranted \| Granted \| Rejected \| Suspended
strategystringAutoRequired, Enum: Auto \| Simple \| FourEyes
targetApplicationRefRequired

ApprovedRequest

Appears in: ApprovalSpec, ApprovalStatus, ApprovalRequestStatus

ApprovedRequest contains the reference to the request that was approved with this approval

FieldTypeDefaultValidation
namestringRequired
namespacestringRequired
uidstringOptional

Decider

Appears in: ApprovalSpec, ApprovalRequestSpec

Decider contains the information about the entity that owns the requested object

FieldTypeDefaultValidation
applicationRefApplicationRefOptional
teamEmailstringOptional
teamNamestringOptional

ApplicationRef

Appears in: Decider, Requester, ApprovalSpec, ApprovalRequestSpec

ApplicationRef is a reference to the application that decides on the approval request

FieldTypeDefaultValidation
apiVersionstringOptional
kindstringOptional
namestringRequired
namespacestringRequired
uidstringOptional

Decisions

Appears in: ApprovalSpec, ApprovalRequestSpec

Decisions contains information about who or what changed this approval

FieldTypeDefaultValidation
commentstringOptional
emailstringOptional
namestringRequired
resultingStatestringRequired, Enum: Pending \| Semigranted \| Granted \| Rejected \| Suspended \| Expired
timestampstringOptional, Format: date-time

Requester

Appears in: ApprovalSpec, ApprovalRequestSpec

Requester contains the information about the entity that is requesting access

FieldTypeDefaultValidation
applicationRefApplicationRefOptional
propertiesobjectOptional
reasonstringRequired
teamEmailstringRequired
teamNamestringRequired

ApprovalStatus

Appears in: Approval

ApprovalStatus defines the observed state of Approval

FieldTypeDefaultValidation
availableTransitionsAvailableTransition[]Optional
conditionsCondition[]Optional
lastStatestringPendingOptional, Enum: Pending \| Semigranted \| Granted \| Rejected \| Suspended
notificationRefsApprovedRequest[]Optional

AvailableTransition

Appears in: ApprovalStatus, ApprovalRequestStatus

FieldTypeDefaultValidation
actionstringRequired
tostringRequired

Condition

Appears in: ApprovalStatus, ApprovalRequestStatus

FieldTypeDefaultValidation
lastTransitionTimestringRequired, Format: date-time
messagestringRequired, maxLength: 32768
observedGenerationintegerOptional, Format: int64, minimum: 0
reasonstringRequired, minLength: 1, maxLength: 1024, pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
statusstringRequired, Enum: True \| False \| Unknown
typestringRequired, 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])$

ApprovalRequest

ApprovalRequest is the Schema for the approvalrequests API

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

ApprovalRequestSpec

Appears in: ApprovalRequest

ApprovalRequestSpec defines the desired state of ApprovalRequest

FieldTypeDefaultValidation
actionstringunknownRequired
deciderDeciderOptional
decisionsDecisions[]
Required
requesterRequesterRequired
statestringPendingRequired, Enum: Pending \| Granted \| Semigranted \| Rejected
strategystringAutoRequired, Enum: Auto \| Simple \| FourEyes
targetApplicationRefRequired

ApprovalRequestStatus

Appears in: ApprovalRequest

ApprovalRequestStatus defines the observed state of ApprovalRequest

FieldTypeDefaultValidation
approvalApprovedRequestRequired
availableTransitionsAvailableTransition[]Optional
conditionsCondition[]Optional
lastStatestringPendingOptional, Enum: Pending \| Granted \| Semigranted \| Rejected
notificationRefsApprovedRequest[]Optional

Approval Strategies

Auto

The subscription is approved immediately. No human intervention is required.

Created ──▶ Granted

Simple

A single approver from the provider team must grant the request.

Created ──▶ Pending ──▶ Granted
└──▶ Rejected

FourEyes

Two separate approvers from the provider team must independently grant the request (dual-control principle).

Created ──▶ Pending ──▶ SemiGranted ──▶ Granted
└──▶ Rejected

Trusted Teams

API and event providers can designate specific teams as trusted. When a trusted team subscribes, the approval is granted automatically regardless of the configured strategy. This is useful for pre-authorized internal services.

Notifications

The Approval domain creates Notification resources at key points in the lifecycle:

  • Request created — Provider team is notified of a new subscription request
  • State changed — Both parties are notified when an approval is granted, rejected, or suspended

Domain Interactions

  • API domain — ApiSubscription resources trigger approval creation.
  • Event domain — EventSubscription resources trigger approval creation.
  • Notification domain — Approval lifecycle events create notifications.