Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 64 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,42 +46,74 @@ spec:
slack: "#api-support"
url: "https://example.com/support"
status:
observedGeneration: 1
conditions:
- lastTransitionTime: "2026-01-14T17:02:07Z"
message: Discovered PlanPolicy toystore-plans targeting HTTPRoute toystore
reason: Found
status: "True"
type: PlanPolicyDiscovered
- lastTransitionTime: "2026-01-14T17:02:08Z"
message: Discovered AuthPolicy toystore targeting HTTPRoute toystore
reason: Found
status: "True"
type: AuthPolicyDiscovered
- lastTransitionTime: "2026-01-14T17:02:07Z"
message: HTTPRoute toystore/toystore accepted
reason: HTTPRouteAccepted
status: "True"
type: Ready
discoveredAuthScheme:
authentication:
api-key-users:
apiKey:
allNamespaces: true
selector:
matchLabels:
app: toystore
credentials:
authorizationHeader:
prefix: APIKEY
metrics: false
priority: 0
discoveredPlans:
- tier: gold
limits:
custom:
- limit: 10000
window: "3600s"
- tier: silver
limits:
daily: 1000
weekly: 7000
monthly: 10000
- tier: bronze
limits:
daily: 100
weekly: 700
monthly: 1000
- limits:
daily: 100
tier: gold
- limits:
daily: 50
tier: silver
- limits:
daily: 10
tier: bronze
observedGeneration: 1
openapi:
lastSyncTime: "2026-01-14T17:02:07Z"
raw: |
openapi: 3.0.0
---
openapi: "3.0.2"
info:
title: Toystore API
version: 1.0.0
...
lastSyncTime: "2025-12-09T10:00:00Z"
conditions:
- type: Ready
status: "True"
reason: APIProductReady
message: APIProduct is ready
lastTransitionTime: "2025-12-09T10:00:00Z"
- type: PlanPolicyDiscovered
status: "True"
reason: PlanPolicyFound
message: Successfully discovered plan policies from HTTPRoute
lastTransitionTime: "2025-12-09T10:00:00Z"
title: "Pet Store API"
version: "1.0.0"
servers:
- url: https://toplevel.example.io/v1
paths:
/cat:
get:
operationId: "getCat"
responses:
405:
description: "invalid input"
post:
operationId: "postCat"
responses:
405:
description: "invalid input"
/dog:
get:
operationId: "getDog"
responses:
405:
description: "invalid input"
```

#### APIProduct Spec Fields
Expand Down
5 changes: 3 additions & 2 deletions docs/references/apiproduct.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ The APIProduct CRD is part of the Developer Portal extension for Kuadrant. It re
|----------------------|----------------------------------------|---------------------------------------------------------------------------------------------------|
| `observedGeneration` | Integer | ObservedGeneration reflects the generation of the most recently observed spec |
| `conditions` | [][ConditionSpec](#conditionspec) | Represents the observations of the APIProduct's current state |
| `discoveredPlans` | [][DiscoveredPlan](#discoveredplan) | List of PlanPolicies discovered from the HTTPRoute |
| `discoveredPlans` | [][PlanSpec](#planspec) | List of PlanPolicies discovered from the HTTPRoute |
| `discoveredAuthScheme` | [AuthSchemeSpec](https://github.com/Kuadrant/kuadrant-operator/blob/main/doc/reference/authpolicy.md#authscheme) | Authentication scheme discovered from the HTTPRoute's AuthPolicy |
| `openapi` | [OpenAPIStatus](#openapistatus) | OpenAPI specification fetched from the API and its sync status |

### ConditionSpec
Expand All @@ -74,7 +75,7 @@ Standard Kubernetes condition type with the following fields:
| `lastTransitionTime` | Timestamp | Last time the condition transitioned from one status to another |
| `observedGeneration` | Integer | The .metadata.generation that the condition was set based upon |

### DiscoveredPlan
### PlanSpec

| **Field** | **Type** | **Required** | **Description** |
|------------------|----------|:------------:|--------------------------------------------------------------------|
Expand Down