The APIProduct CRD is part of the Developer Portal extension for Kuadrant. It references an HTTPRoute and adds product catalog information, enabling APIs to be published to a developer portal (Backstage) where they can be discovered and consumed. While HTTPRoute defines the technical routing configuration, APIProduct adds the business and organizational context needed for API consumption: human-readable names, descriptions, documentation links, contact information, versioning, and approval workflows.
apiVersion:devportal.kuadrant.io/v1alpha1kind:APIProductmetadata:name:payment-apinamespace:payment-servicesspec:targetRef:group:gateway.networking.k8s.iokind:HTTPRoutename:payment-routedisplayName:Payment Processing APIdescription:|Secure API for processing payments, managing transactions,and handling refunds. Supports multiple payment methodsincluding credit cards, digital wallets, and bank transfers.version:v2approvalMode:automaticpublishStatus:Publishedtags:-payments-fintech-transactionscontact:team:Payment Platform Teamemail:payment-api@example.comslack:"#payment-support"url:https://wiki.example.com/teams/payment-platformdocumentation:docsURL:https://docs.example.com/apis/paymentopenAPISpecURL:https://api.example.com/specs/payment-v2.yamlswaggerUI:https://api.example.com/docs/paymentgitRepository:https://github.com/example/payment-apitechdocsRef:url:https://github.com/example/payment-api/tree/main/docs
Relationship to HTTPRoute, AuthPolicy, PlanPolicy¶
APIProduct must reference an existing HTTPRoute via targetRef. The HTTPRoute defines the actual traffic routing and path matching, while APIProduct adds product catalog metadata, documentation, and plan discovery.
AuthPolicy is applied to the same HTTPRoute that the APIProduct references. This enforces authentication (such as API key validation) for requests to the API. When a developer requests access to an APIProduct, an APIKey resource is created, which generates a Kubernetes Secret. The AuthPolicy validates incoming requests against these secrets.
PlanPolicy is an extension that can target the same HTTPRoute as the APIProduct. It defines tiered access plans with different rate limits. The APIProduct controller automatically discovers PlanPolicies attached to the same HTTPRoute and surfaces the plan information in the status.discoveredPlans field. This allows the developer portal to display available plans to users requesting API access.