monetizeapi

package
v0.10.0-rc15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 11, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package monetizeapi defines the Custom Resource Definitions for the Obol Stack monetize subsystem.

The Go types in this package are the single source of truth for the CRD OpenAPI schemas embedded under internal/embed/infrastructure/base/templates/*-crd.yaml.

Edit a field or marker here, then run `just generate` to regenerate the CRD YAML manifests + zz_generated_deepcopy.go from kubebuilder markers. CI fails if the working tree is dirty after that command runs (see .github/workflows/lint-test.yaml::generate-check).

+kubebuilder:object:generate=true +groupName=obol.org +versionName=v1alpha1

Index

Constants

View Source
const (
	Group   = "obol.org"
	Version = "v1alpha1"

	ServiceOfferKind        = "ServiceOffer"
	RegistrationRequestKind = "RegistrationRequest"
	PurchaseRequestKind     = "PurchaseRequest"
	AgentKind               = "Agent"
	AgentIdentityKind       = "AgentIdentity"

	ServiceOfferResource        = "serviceoffers"
	RegistrationRequestResource = "registrationrequests"
	PurchaseRequestResource     = "purchaserequests"
	AgentResource               = "agents"
	AgentIdentityResource       = "agentidentities"

	// Default identity used for the operator's public ERC-8004 registration
	// file. The registration file can contain multiple per-chain registrations.
	AgentIdentityDefaultNamespace = "x402"
	AgentIdentityDefaultName      = "default"

	AgentRuntimeHermes = "hermes"

	AgentPhasePending      = "Pending"
	AgentPhaseProvisioning = "Provisioning"
	AgentPhaseReady        = "Ready"
	AgentPhaseFailed       = "Failed"
)
View Source
const DefaultDrainGracePeriod = time.Hour

DefaultDrainGracePeriod is the grace period applied to a draining ServiceOffer when spec.drainGracePeriod is unset. Buyers using the offer can complete in-flight payments and migrate to alternative providers within this window before the HTTPRoute is torn down.

Variables

View Source
var (
	ServiceOfferGVR        = schema.GroupVersionResource{Group: Group, Version: Version, Resource: ServiceOfferResource}
	RegistrationRequestGVR = schema.GroupVersionResource{Group: Group, Version: Version, Resource: RegistrationRequestResource}
	PurchaseRequestGVR     = schema.GroupVersionResource{Group: Group, Version: Version, Resource: PurchaseRequestResource}
	AgentGVR               = schema.GroupVersionResource{Group: Group, Version: Version, Resource: AgentResource}
	AgentIdentityGVR       = schema.GroupVersionResource{Group: Group, Version: Version, Resource: AgentIdentityResource}

	ServiceGVR        = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "services"}
	SecretGVR         = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "secrets"}
	ConfigMapGVR      = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "configmaps"}
	DeploymentGVR     = schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "deployments"}
	MiddlewareGVR     = schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "middlewares"}
	HTTPRouteGVR      = schema.GroupVersionResource{Group: "gateway.networking.k8s.io", Version: "v1", Resource: "httproutes"}
	ReferenceGrantGVR = schema.GroupVersionResource{Group: "gateway.networking.k8s.io", Version: "v1beta1", Resource: "referencegrants"}
	// Used by the agent reconciler when provisioning per-namespace
	// runtime primitives. Keeping them next to the existing GVRs avoids
	// scattering schema.GroupVersionResource literals across the package.
	NamespaceGVR      = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "namespaces"}
	ServiceAccountGVR = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "serviceaccounts"}
	PVCGVR            = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumeclaims"}
)

Functions

func AgentIdentityAgentIDForChain added in v0.10.0

func AgentIdentityAgentIDForChain(status AgentIdentityStatus, chain string) string

func HasAgentIdentityRegistrations added in v0.10.0

func HasAgentIdentityRegistrations(status AgentIdentityStatus) bool

Types

type Agent added in v0.10.0

type Agent struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec              AgentSpec   `json:"spec,omitempty"`
	Status            AgentStatus `json:"status,omitempty"`
}

Agent is the declarative spec for an Obol Stack agent (Hermes today, OpenClaw later). Decouples agent lifecycle from selling: `obol sell agent <name>` references an existing Agent rather than provisioning one inline. Internal manager agents with RBAC can also create Agent resources to spawn sub-agents.

func (*Agent) DeepCopy added in v0.10.0

func (in *Agent) DeepCopy() *Agent

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Agent.

func (*Agent) DeepCopyInto added in v0.10.0

func (in *Agent) DeepCopyInto(out *Agent)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Agent) DeepCopyObject added in v0.10.0

func (in *Agent) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Agent) EffectiveModel added in v0.10.0

func (a *Agent) EffectiveModel() string

EffectiveModel returns the model the controller should use right now: the user-pinned spec.model when set, falling back to the previously resolved status.pinnedModel. Returns "" if neither is set, signalling "first reconcile, pick top-of-rank from LiteLLM and write back to status".

func (*Agent) EffectiveRuntime added in v0.10.0

func (a *Agent) EffectiveRuntime() string

func (*Agent) IsReady added in v0.10.0

func (a *Agent) IsReady() bool

type AgentIdentity added in v0.10.0

type AgentIdentity struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec              AgentIdentitySpec   `json:"spec,omitempty"`
	Status            AgentIdentityStatus `json:"status,omitempty"`
}

AgentIdentity is the durable, on-chain identity an operator controls in the ERC-8004 Identity Registry. A single AgentIdentity outlives ServiceOffers: deleting the last ServiceOffer that references it does not delete the NFT, the published registration document, or the recorded agentId; instead the renderer publishes a tombstone (active:false, x402Support:false) so external observers still see the historical record.

func (*AgentIdentity) DeepCopy added in v0.10.0

func (in *AgentIdentity) DeepCopy() *AgentIdentity

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentIdentity.

func (*AgentIdentity) DeepCopyInto added in v0.10.0

func (in *AgentIdentity) DeepCopyInto(out *AgentIdentity)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentIdentity) DeepCopyObject added in v0.10.0

func (in *AgentIdentity) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AgentIdentityList added in v0.10.0

type AgentIdentityList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []AgentIdentity `json:"items"`
}

AgentIdentityList is the list form for kubectl/list operations.

func (*AgentIdentityList) DeepCopy added in v0.10.0

func (in *AgentIdentityList) DeepCopy() *AgentIdentityList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentIdentityList.

func (*AgentIdentityList) DeepCopyInto added in v0.10.0

func (in *AgentIdentityList) DeepCopyInto(out *AgentIdentityList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentIdentityList) DeepCopyObject added in v0.10.0

func (in *AgentIdentityList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AgentIdentityRegistration added in v0.10.0

type AgentIdentityRegistration struct {
	// ERC-8004 registration chain alias.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MaxLength=64
	Chain string `json:"chain"`
	// On-chain ERC-721 tokenId on the given chain.
	// +kubebuilder:validation:Required
	AgentID string `json:"agentId"`
}

func (*AgentIdentityRegistration) DeepCopy added in v0.10.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentIdentityRegistration.

func (*AgentIdentityRegistration) DeepCopyInto added in v0.10.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentIdentitySpec added in v0.10.0

type AgentIdentitySpec struct {
}

func (*AgentIdentitySpec) DeepCopy added in v0.10.0

func (in *AgentIdentitySpec) DeepCopy() *AgentIdentitySpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentIdentitySpec.

func (*AgentIdentitySpec) DeepCopyInto added in v0.10.0

func (in *AgentIdentitySpec) DeepCopyInto(out *AgentIdentitySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentIdentityStatus added in v0.10.0

type AgentIdentityStatus struct {
	// Per-chain ERC-8004 registrations for this identity document.
	Registrations []AgentIdentityRegistration `json:"registrations,omitempty"`
}

func UpsertAgentIdentityRegistration added in v0.10.0

func UpsertAgentIdentityRegistration(status AgentIdentityStatus, chain, agentID string) AgentIdentityStatus

func (*AgentIdentityStatus) DeepCopy added in v0.10.0

func (in *AgentIdentityStatus) DeepCopy() *AgentIdentityStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentIdentityStatus.

func (*AgentIdentityStatus) DeepCopyInto added in v0.10.0

func (in *AgentIdentityStatus) DeepCopyInto(out *AgentIdentityStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentList added in v0.10.0

type AgentList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Agent `json:"items"`
}

AgentList is the list form for kubectl/list operations.

func (*AgentList) DeepCopy added in v0.10.0

func (in *AgentList) DeepCopy() *AgentList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentList.

func (*AgentList) DeepCopyInto added in v0.10.0

func (in *AgentList) DeepCopyInto(out *AgentList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentList) DeepCopyObject added in v0.10.0

func (in *AgentList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AgentSpec added in v0.10.0

type AgentSpec struct {
	// Agent runtime (only hermes today; openclaw planned).
	// +kubebuilder:default=hermes
	// +kubebuilder:validation:Enum=hermes
	Runtime string `json:"runtime,omitempty"`
	// LiteLLM model name to pin. Empty = controller picks cluster
	// top-of-rank on first deploy and writes status.pinnedModel.
	// +kubebuilder:validation:MaxLength=256
	Model string `json:"model,omitempty"`
	// Allow-listed skills written to the per-agent skills dir on first
	// reconcile. Agent can edit afterwards; this is a seed, not a sandbox.
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:items:Pattern=`^[a-z0-9][a-z0-9-]*$`
	// +kubebuilder:validation:items:MaxLength=64
	Skills []string `json:"skills,omitempty"`
	// Operator-supplied objective text. Substituted into the SOUL.md
	// template by the seeder on first write. Agent owns SOUL.md after that.
	// +kubebuilder:validation:MaxLength=4096
	Objective string      `json:"objective,omitempty"`
	Wallet    AgentWallet `json:"wallet,omitempty"`
}

func (*AgentSpec) DeepCopy added in v0.10.0

func (in *AgentSpec) DeepCopy() *AgentSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentSpec.

func (*AgentSpec) DeepCopyInto added in v0.10.0

func (in *AgentSpec) DeepCopyInto(out *AgentSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentStatus added in v0.10.0

type AgentStatus struct {
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// Pending | Provisioning | Ready | Failed
	Phase string `json:"phase,omitempty"`
	// Actual model the agent is using (= spec.model when set, otherwise
	// the auto-picked top-of-rank).
	PinnedModel string `json:"pinnedModel,omitempty"`
	// Agent's signing address when wallet.create=true. Empty otherwise.
	// +kubebuilder:validation:Pattern=`^(0x[0-9a-fA-F]{40})?$`
	WalletAddress string `json:"walletAddress,omitempty"`
	// Cluster-internal URL for the agent runtime (e.g.
	// http://hermes.agent-quant.svc.cluster.local:8642).
	Endpoint   string      `json:"endpoint,omitempty"`
	Conditions []Condition `json:"conditions,omitempty"`
}

func (*AgentStatus) DeepCopy added in v0.10.0

func (in *AgentStatus) DeepCopy() *AgentStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentStatus.

func (*AgentStatus) DeepCopyInto added in v0.10.0

func (in *AgentStatus) DeepCopyInto(out *AgentStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentWallet added in v0.10.0

type AgentWallet struct {
	// Provision a per-namespace remote-signer keystore. Address is
	// published in status.walletAddress.
	// +kubebuilder:default=false
	Create bool `json:"create,omitempty"`
}

func (*AgentWallet) DeepCopy added in v0.10.0

func (in *AgentWallet) DeepCopy() *AgentWallet

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentWallet.

func (*AgentWallet) DeepCopyInto added in v0.10.0

func (in *AgentWallet) DeepCopyInto(out *AgentWallet)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Condition

type Condition struct {
	// Condition type.
	// +kubebuilder:validation:Required
	Type string `json:"type"`
	// Status of the condition.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=True;False;Unknown
	Status string `json:"status"`
	// Machine-readable reason for the condition.
	Reason string `json:"reason,omitempty"`
	// Human-readable message with details.
	Message string `json:"message,omitempty"`
	// Last time the condition transitioned.
	LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"`
}

func (*Condition) DeepCopy added in v0.10.0

func (in *Condition) DeepCopy() *Condition

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Condition.

func (*Condition) DeepCopyInto added in v0.10.0

func (in *Condition) DeepCopyInto(out *Condition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PreSignedAuth

type PreSignedAuth struct {
	ID string `json:"id,omitempty"`
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Schemaless
	Payment     map[string]interface{} `json:"payment,omitempty"`
	Signature   string                 `json:"signature,omitempty"`
	From        string                 `json:"from,omitempty"`
	To          string                 `json:"to,omitempty"`
	Value       string                 `json:"value,omitempty"`
	ValidAfter  string                 `json:"validAfter,omitempty"`
	ValidBefore string                 `json:"validBefore,omitempty"`
	Nonce       string                 `json:"nonce,omitempty"`
}

PreSignedAuth carries a pre-signed x402 payment authorization. The Payment map is opaque (forwarded verbatim to the buyer sidecar / x402 facilitator) which can't be deep-copied by controller-gen; DeepCopy methods for this type are hand-written in deepcopy_manual.go.

func (*PreSignedAuth) DeepCopy added in v0.10.0

func (in *PreSignedAuth) DeepCopy() *PreSignedAuth

DeepCopy returns a deep copy of the receiver.

func (*PreSignedAuth) DeepCopyInto added in v0.10.0

func (in *PreSignedAuth) DeepCopyInto(out *PreSignedAuth)

DeepCopyInto copies the receiver into out. The Payment map is shallow-copied; values inside the map are JSON-serializable scalars / maps / slices passed through to the buyer sidecar, so a shallow copy is sufficient for the controller's deep-copy contract (no internal pointer aliasing into caller-owned mutable structures).

type PurchaseAutoRefill

type PurchaseAutoRefill struct {
	// +kubebuilder:default=false
	Enabled bool `json:"enabled,omitempty"`
	// Refill when remaining < threshold.
	// +kubebuilder:validation:Minimum=0
	Threshold int `json:"threshold,omitempty"`
	// Number of auths to sign on refill.
	// +kubebuilder:validation:Minimum=1
	Count int `json:"count,omitempty"`
	// Cap total auths ever signed.
	MaxTotal int `json:"maxTotal,omitempty"`
	// Max micro-USDC spend per day.
	MaxSpendPerDay string `json:"maxSpendPerDay,omitempty"`
}

PurchaseAutoRefill drives the agent-managed auto-refill policy for a PurchaseRequest. The reconciler reads MaxTotal + MaxSpendPerDay as budget caps before signing more auths; without these fields populated the agent will not auto-refill beyond the initial Count.

func (*PurchaseAutoRefill) DeepCopy added in v0.10.0

func (in *PurchaseAutoRefill) DeepCopy() *PurchaseAutoRefill

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchaseAutoRefill.

func (*PurchaseAutoRefill) DeepCopyInto added in v0.10.0

func (in *PurchaseAutoRefill) DeepCopyInto(out *PurchaseAutoRefill)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PurchasePayment

type PurchasePayment struct {
	// +kubebuilder:validation:Required
	Network string `json:"network"`
	// +kubebuilder:validation:Required
	PayTo string `json:"payTo"`
	// Atomic token units per request.
	// +kubebuilder:validation:Required
	Price string `json:"price"`
	// ERC-20 contract address.
	// +kubebuilder:validation:Required
	Asset string `json:"asset"`
	// Human-friendly token symbol (e.g. USDC, OBOL).
	AssetSymbol string `json:"assetSymbol,omitempty"`
	// Token decimals in atomic units.
	AssetDecimals int64 `json:"assetDecimals,omitempty"`
	// x402 transfer method used for this asset.
	AssetTransferMethod string `json:"assetTransferMethod,omitempty"`
	// EIP-712 domain name used for signing.
	EIP712Name string `json:"eip712Name,omitempty"`
	// EIP-712 domain version used for signing.
	EIP712Version string `json:"eip712Version,omitempty"`
}

func (*PurchasePayment) DeepCopy added in v0.10.0

func (in *PurchasePayment) DeepCopy() *PurchasePayment

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchasePayment.

func (*PurchasePayment) DeepCopyInto added in v0.10.0

func (in *PurchasePayment) DeepCopyInto(out *PurchasePayment)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PurchaseRequest

type PurchaseRequest struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec              PurchaseRequestSpec   `json:"spec,omitempty"`
	Status            PurchaseRequestStatus `json:"status,omitempty"`
}

PurchaseRequest is the buyer-side request for pre-signed x402 auths against a remote inference endpoint.

func (*PurchaseRequest) DeepCopy added in v0.10.0

func (in *PurchaseRequest) DeepCopy() *PurchaseRequest

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchaseRequest.

func (*PurchaseRequest) DeepCopyInto added in v0.10.0

func (in *PurchaseRequest) DeepCopyInto(out *PurchaseRequest)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PurchaseRequest) DeepCopyObject added in v0.10.0

func (in *PurchaseRequest) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*PurchaseRequest) EffectiveBuyerNamespace

func (pr *PurchaseRequest) EffectiveBuyerNamespace() string

type PurchaseRequestList added in v0.10.0

type PurchaseRequestList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []PurchaseRequest `json:"items"`
}

PurchaseRequestList is the list form for kubectl/list operations.

func (*PurchaseRequestList) DeepCopy added in v0.10.0

func (in *PurchaseRequestList) DeepCopy() *PurchaseRequestList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchaseRequestList.

func (*PurchaseRequestList) DeepCopyInto added in v0.10.0

func (in *PurchaseRequestList) DeepCopyInto(out *PurchaseRequestList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PurchaseRequestList) DeepCopyObject added in v0.10.0

func (in *PurchaseRequestList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type PurchaseRequestSpec

type PurchaseRequestSpec struct {
	// Full URL to the x402-gated inference endpoint.
	// +kubebuilder:validation:Required
	Endpoint string `json:"endpoint"`
	// Remote model ID (used as paid/<model> in LiteLLM).
	// +kubebuilder:validation:Required
	Model string `json:"model"`
	// Number of pre-signed auths to create.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=2500
	Count int `json:"count"`
	// Pre-signed x402 payments (legacy ERC-3009 auths still supported).
	PreSignedAuths []PreSignedAuth    `json:"preSignedAuths,omitempty"`
	AutoRefill     PurchaseAutoRefill `json:"autoRefill,omitempty"`
	// +kubebuilder:validation:Required
	Payment PurchasePayment `json:"payment"`
}

func (*PurchaseRequestSpec) DeepCopy added in v0.10.0

func (in *PurchaseRequestSpec) DeepCopy() *PurchaseRequestSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchaseRequestSpec.

func (*PurchaseRequestSpec) DeepCopyInto added in v0.10.0

func (in *PurchaseRequestSpec) DeepCopyInto(out *PurchaseRequestSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PurchaseRequestStatus

type PurchaseRequestStatus struct {
	ObservedGeneration int64       `json:"observedGeneration,omitempty"`
	Conditions         []Condition `json:"conditions,omitempty"`
	// LiteLLM model name (paid/<model>).
	PublicModel string `json:"publicModel,omitempty"`
	Remaining   int    `json:"remaining,omitempty"`
	Spent       int    `json:"spent,omitempty"`
	TotalSigned int    `json:"totalSigned,omitempty"`
	TotalSpent  string `json:"totalSpent,omitempty"`
	// +kubebuilder:validation:Format=date-time
	ProbedAt      string `json:"probedAt,omitempty"`
	ProbedPrice   string `json:"probedPrice,omitempty"`
	WalletBalance string `json:"walletBalance,omitempty"`
	SignerAddress string `json:"signerAddress,omitempty"`
}

func (*PurchaseRequestStatus) DeepCopy added in v0.10.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchaseRequestStatus.

func (*PurchaseRequestStatus) DeepCopyInto added in v0.10.0

func (in *PurchaseRequestStatus) DeepCopyInto(out *PurchaseRequestStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegistrationRequest

type RegistrationRequest struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec              RegistrationRequestSpec   `json:"spec,omitempty"`
	Status            RegistrationRequestStatus `json:"status,omitempty"`
}

RegistrationRequest isolates ERC-8004 publication and on-chain side effects from the main ServiceOffer reconciliation loop. ServiceOffer remains the source of truth.

func (*RegistrationRequest) DeepCopy added in v0.10.0

func (in *RegistrationRequest) DeepCopy() *RegistrationRequest

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistrationRequest.

func (*RegistrationRequest) DeepCopyInto added in v0.10.0

func (in *RegistrationRequest) DeepCopyInto(out *RegistrationRequest)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RegistrationRequest) DeepCopyObject added in v0.10.0

func (in *RegistrationRequest) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RegistrationRequestList added in v0.10.0

type RegistrationRequestList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []RegistrationRequest `json:"items"`
}

RegistrationRequestList is the list form for kubectl/list operations.

func (*RegistrationRequestList) DeepCopy added in v0.10.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistrationRequestList.

func (*RegistrationRequestList) DeepCopyInto added in v0.10.0

func (in *RegistrationRequestList) DeepCopyInto(out *RegistrationRequestList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RegistrationRequestList) DeepCopyObject added in v0.10.0

func (in *RegistrationRequestList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RegistrationRequestSpec

type RegistrationRequestSpec struct {
	// +kubebuilder:validation:Required
	ServiceOfferName string `json:"serviceOfferName"`
	// +kubebuilder:validation:Required
	ServiceOfferNamespace string `json:"serviceOfferNamespace"`
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=Active;Tombstoned
	DesiredState string `json:"desiredState"`
	// ERC-8004 registration chain alias for this request.
	Chain string `json:"chain,omitempty"`
}

func (*RegistrationRequestSpec) DeepCopy added in v0.10.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistrationRequestSpec.

func (*RegistrationRequestSpec) DeepCopyInto added in v0.10.0

func (in *RegistrationRequestSpec) DeepCopyInto(out *RegistrationRequestSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RegistrationRequestStatus

type RegistrationRequestStatus struct {
	Phase                       string `json:"phase,omitempty"`
	Message                     string `json:"message,omitempty"`
	PublishedURL                string `json:"publishedUrl,omitempty"`
	AgentID                     string `json:"agentId,omitempty"`
	RegistrationTxHash          string `json:"registrationTxHash,omitempty"`
	RegistrationOwner           string `json:"registrationOwner,omitempty"`
	RegistrationURI             string `json:"registrationUri,omitempty"`
	RegistrationSearchFromBlock int64  `json:"registrationSearchFromBlock,omitempty"`
	MetadataSynced              bool   `json:"metadataSynced,omitempty"`
}

func (*RegistrationRequestStatus) DeepCopy added in v0.10.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistrationRequestStatus.

func (*RegistrationRequestStatus) DeepCopyInto added in v0.10.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOffer

type ServiceOffer struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec              ServiceOfferSpec   `json:"spec,omitempty"`
	Status            ServiceOfferStatus `json:"status,omitempty"`
}

ServiceOffer declares a compute service that can be exposed publicly, gated with x402 payments, and optionally registered on an ERC-8004 service registry. Field names align with x402 and ERC-8004 standards.

func (*ServiceOffer) DeepCopy added in v0.10.0

func (in *ServiceOffer) DeepCopy() *ServiceOffer

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOffer.

func (*ServiceOffer) DeepCopyInto added in v0.10.0

func (in *ServiceOffer) DeepCopyInto(out *ServiceOffer)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ServiceOffer) DeepCopyObject added in v0.10.0

func (in *ServiceOffer) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ServiceOffer) DrainEndsAt added in v0.10.0

func (o *ServiceOffer) DrainEndsAt() time.Time

DrainEndsAt returns DrainAt + DrainGracePeriod. When DrainAt is nil the zero time is returned (caller should gate on IsDraining first). When DrainGracePeriod is nil the default grace period is applied; a zero grace period is honored as "drain ends at DrainAt", i.e. tear down on the next reconcile (the --force/--now path).

func (*ServiceOffer) DrainExpired added in v0.10.0

func (o *ServiceOffer) DrainExpired(now time.Time) bool

DrainExpired reports whether the drain grace period has elapsed. Returns false when the offer is not draining at all. Callers should use this rather than IsDraining when deciding whether to tear down the HTTPRoute or filter the offer from the live x402 verifier rules.

func (*ServiceOffer) EffectiveHealthPath

func (o *ServiceOffer) EffectiveHealthPath() string

func (*ServiceOffer) EffectiveNamespace

func (o *ServiceOffer) EffectiveNamespace() string

func (*ServiceOffer) EffectivePath

func (o *ServiceOffer) EffectivePath() string

func (*ServiceOffer) EffectivePort

func (o *ServiceOffer) EffectivePort() int64

func (*ServiceOffer) IsAgent added in v0.10.0

func (o *ServiceOffer) IsAgent() bool

IsAgent reports whether the offer references an Agent CR for its upstream. Type=="agent" is the only signal — Ref must also be non-empty for a usable offer, but admission validation enforces that.

func (*ServiceOffer) IsDraining added in v0.10.0

func (o *ServiceOffer) IsDraining() bool

IsDraining reports whether spec.drainAt has been set. Drained offers transition through three phases: pre-drain (DrainAt nil), draining (DrainAt set, now < DrainEndsAt), and drain-expired (DrainAt set, now >= DrainEndsAt). The controller keeps the route up during "draining" and tears it down once "drain-expired" is reached.

func (*ServiceOffer) IsInference

func (o *ServiceOffer) IsInference() bool

type ServiceOfferAgent added in v0.10.0

type ServiceOfferAgent struct {
	Ref ServiceOfferAgentRef `json:"ref,omitempty"`
}

ServiceOfferAgent is populated when Spec.Type == "agent". The controller resolves Ref → Agent CR, derives Upstream from Agent.status.endpoint, and surfaces the agent's model + skills in the 402 response's extra block so buyers see what they're paying for.

func (*ServiceOfferAgent) DeepCopy added in v0.10.0

func (in *ServiceOfferAgent) DeepCopy() *ServiceOfferAgent

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferAgent.

func (*ServiceOfferAgent) DeepCopyInto added in v0.10.0

func (in *ServiceOfferAgent) DeepCopyInto(out *ServiceOfferAgent)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferAgentRef added in v0.10.0

type ServiceOfferAgentRef struct {
	// +kubebuilder:validation:Required
	Name string `json:"name"`
	// +kubebuilder:validation:Required
	Namespace string `json:"namespace"`
}

func (*ServiceOfferAgentRef) DeepCopy added in v0.10.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferAgentRef.

func (*ServiceOfferAgentRef) DeepCopyInto added in v0.10.0

func (in *ServiceOfferAgentRef) DeepCopyInto(out *ServiceOfferAgentRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferAgentResolution added in v0.10.0

type ServiceOfferAgentResolution struct {
	Model    string   `json:"model,omitempty"`
	Skills   []string `json:"skills,omitempty"`
	Runtime  string   `json:"runtime,omitempty"`
	Endpoint string   `json:"endpoint,omitempty"`
}

ServiceOfferAgentResolution is the controller's resolved view of an agent-type offer's referenced Agent. Populated only when Spec.Type == "agent" and the Agent CR is Ready. Read by the route source when building RouteRules so the 402 extra block surfaces what's actually running.

func (*ServiceOfferAgentResolution) DeepCopy added in v0.10.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferAgentResolution.

func (*ServiceOfferAgentResolution) DeepCopyInto added in v0.10.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferAsset added in v0.9.0

type ServiceOfferAsset struct {
	// ERC-20 contract address.
	// +kubebuilder:validation:Pattern=`^0x[0-9a-fA-F]{40}$`
	Address string `json:"address,omitempty"`
	// Human-friendly token symbol (e.g. USDC, OBOL).
	Symbol string `json:"symbol,omitempty"`
	// Token decimals in atomic units.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=255
	Decimals int64 `json:"decimals,omitempty"`
	// x402 transfer method for the asset.
	// +kubebuilder:validation:Enum=eip3009;permit2
	TransferMethod string `json:"transferMethod,omitempty"`
	// EIP-712 domain name used by the token.
	EIP712Name string `json:"eip712Name,omitempty"`
	// EIP-712 domain version used by the token.
	EIP712Version string `json:"eip712Version,omitempty"`
}

func (*ServiceOfferAsset) DeepCopy added in v0.10.0

func (in *ServiceOfferAsset) DeepCopy() *ServiceOfferAsset

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferAsset.

func (*ServiceOfferAsset) DeepCopyInto added in v0.10.0

func (in *ServiceOfferAsset) DeepCopyInto(out *ServiceOfferAsset)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferList added in v0.10.0

type ServiceOfferList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ServiceOffer `json:"items"`
}

ServiceOfferList is the list form for kubectl/list operations.

func (*ServiceOfferList) DeepCopy added in v0.10.0

func (in *ServiceOfferList) DeepCopy() *ServiceOfferList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferList.

func (*ServiceOfferList) DeepCopyInto added in v0.10.0

func (in *ServiceOfferList) DeepCopyInto(out *ServiceOfferList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ServiceOfferList) DeepCopyObject added in v0.10.0

func (in *ServiceOfferList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ServiceOfferModel

type ServiceOfferModel struct {
	// Model identifier (e.g. qwen3.5:35b).
	// +kubebuilder:validation:Required
	Name string `json:"name"`
	// Runtime serving the model.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=ollama;vllm;tgi
	Runtime string `json:"runtime"`
}

func (*ServiceOfferModel) DeepCopy added in v0.10.0

func (in *ServiceOfferModel) DeepCopy() *ServiceOfferModel

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferModel.

func (*ServiceOfferModel) DeepCopyInto added in v0.10.0

func (in *ServiceOfferModel) DeepCopyInto(out *ServiceOfferModel)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferPayment

type ServiceOfferPayment struct {
	// x402 payment scheme.
	// +kubebuilder:default="exact"
	// +kubebuilder:validation:Enum=exact
	Scheme string `json:"scheme,omitempty"`
	// Chain identifier for payments (human-friendly). Reconciler resolves
	// to CAIP-2 format (e.g., "base-sepolia" → "eip155:84532").
	// +kubebuilder:validation:Required
	Network string `json:"network"`
	// USDC recipient wallet address (x402: payTo).
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^0x[0-9a-fA-F]{40}$`
	PayTo string `json:"payTo"`
	// Payment validity window in seconds (x402: maxTimeoutSeconds).
	// +kubebuilder:default=300
	MaxTimeoutSeconds int64 `json:"maxTimeoutSeconds,omitempty"`
	// Optional token metadata override for x402 settlement. When omitted,
	// the verifier uses the chain default asset.
	Asset ServiceOfferAsset `json:"asset,omitempty"`
	// Pricing table with per-unit prices in USDC (human-readable decimals).
	// Which fields are applicable depends on the workload type.
	// +kubebuilder:validation:Required
	Price ServiceOfferPriceTable `json:"price"`
}

func (*ServiceOfferPayment) DeepCopy added in v0.10.0

func (in *ServiceOfferPayment) DeepCopy() *ServiceOfferPayment

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferPayment.

func (*ServiceOfferPayment) DeepCopyInto added in v0.10.0

func (in *ServiceOfferPayment) DeepCopyInto(out *ServiceOfferPayment)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferPriceTable

type ServiceOfferPriceTable struct {
	// Flat per-request price in USDC. Applicable to all types.
	PerRequest string `json:"perRequest,omitempty"`
	// Per-million-tokens price in USDC. Inference only.
	PerMTok string `json:"perMTok,omitempty"`
	// Per-compute-hour price in USDC. Fine-tuning only.
	PerHour string `json:"perHour,omitempty"`
	// Per-training-epoch price in USDC. Fine-tuning only.
	PerEpoch string `json:"perEpoch,omitempty"`
}

func (*ServiceOfferPriceTable) DeepCopy added in v0.10.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferPriceTable.

func (*ServiceOfferPriceTable) DeepCopyInto added in v0.10.0

func (in *ServiceOfferPriceTable) DeepCopyInto(out *ServiceOfferPriceTable)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferRegistration

type ServiceOfferRegistration struct {
	// If true, register on ERC-8004 after routing is live.
	// +kubebuilder:default=false
	Enabled bool `json:"enabled,omitempty"`
	// Agent name (ERC-8004: AgentRegistration.name).
	Name string `json:"name,omitempty"`
	// Agent description (ERC-8004: AgentRegistration.description).
	Description string `json:"description,omitempty"`
	// Agent icon URL (ERC-8004: AgentRegistration.image).
	Image string `json:"image,omitempty"`
	// Service endpoints (ERC-8004: AgentRegistration.services[]).
	Services []ServiceOfferService `json:"services,omitempty"`
	// Trust verification methods (ERC-8004: AgentRegistration.supportedTrust[]).
	// Valid values: reputation, crypto-economic, tee-attestation.
	SupportedTrust []string `json:"supportedTrust,omitempty"`
	// OASF skills for discovery (e.g.
	// natural_language_processing/text_generation). Mapped to an OASF
	// service entry in the registration JSON.
	Skills []string `json:"skills,omitempty"`
	// OASF domains for discovery (e.g. technology/artificial_intelligence).
	// Mapped to an OASF service entry in the registration JSON.
	Domains []string `json:"domains,omitempty"`
	// Additional registration metadata published into the generated
	// agent-registration.json for discovery and ranking.
	Metadata map[string]string `json:"metadata,omitempty"`
}

func (*ServiceOfferRegistration) DeepCopy added in v0.10.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferRegistration.

func (*ServiceOfferRegistration) DeepCopyInto added in v0.10.0

func (in *ServiceOfferRegistration) DeepCopyInto(out *ServiceOfferRegistration)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferService

type ServiceOfferService struct {
	// Service type: web, A2A, MCP, OASF, ENS, DID, email.
	// +kubebuilder:validation:Required
	Name string `json:"name"`
	// Service URL. Auto-filled from tunnel URL if empty.
	// +kubebuilder:validation:Required
	Endpoint string `json:"endpoint"`
	// Protocol version (SHOULD per ERC-8004 spec).
	Version string `json:"version,omitempty"`
}

func (*ServiceOfferService) DeepCopy added in v0.10.0

func (in *ServiceOfferService) DeepCopy() *ServiceOfferService

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferService.

func (*ServiceOfferService) DeepCopyInto added in v0.10.0

func (in *ServiceOfferService) DeepCopyInto(out *ServiceOfferService)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferSpec

type ServiceOfferSpec struct {
	// Service type. 'inference' enables model management; 'http' for any HTTP
	// service; 'agent' references an Agent CR via spec.agent.ref and the
	// controller derives upstream + model + skills from the agent's status.
	// +kubebuilder:default="http"
	// +kubebuilder:validation:Enum=inference;fine-tuning;http;agent
	Type string `json:"type,omitempty"`

	// Required when type='agent'. The controller resolves spec.agent.ref to
	// the referenced Agent CR, derives upstream from Agent.status.endpoint,
	// and surfaces the agent's pinned model + skills in the 402 response.
	Agent ServiceOfferAgent `json:"agent,omitempty"`

	// LLM model metadata. Required when the upstream serves an LLM.
	Model ServiceOfferModel `json:"model,omitempty"`

	// In-cluster service that handles the actual workload.
	Upstream ServiceOfferUpstream `json:"upstream,omitempty"`

	// +kubebuilder:validation:Required
	Payment ServiceOfferPayment `json:"payment"`

	// URL path prefix for the HTTPRoute, defaults to /services/<name>.
	// +kubebuilder:validation:Pattern=`^/[a-zA-Z0-9/_.-]*$`
	Path string `json:"path,omitempty"`

	// Optional provenance metadata for the service. Tracks how the model or
	// service was produced (e.g. autoresearch experiment data). Included in
	// the ERC-8004 registration document when present.
	Provenance map[string]string `json:"provenance,omitempty"`

	// ERC-8004 registration metadata. Field names align with the
	// AgentRegistration document schema (ERC-8004 spec).
	Registration ServiceOfferRegistration `json:"registration,omitempty"`

	// DrainAt marks the offer as draining when non-nil. While the offer
	// is in the drain window, discovery surfaces (/skill.md and
	// /.well-known/agent-registration.json) advertise the offer with
	// available=false and drainEndsAt set, so buyers can migrate before
	// the route is torn down. The route + payment gate stay up until
	// DrainEndsAt() so in-flight payments can complete. Replaces the
	// legacy obol.org/paused annotation.
	DrainAt *metav1.Time `json:"drainAt,omitempty"`

	// DrainGracePeriod is how long after DrainAt the HTTPRoute remains
	// up. Defaults to DefaultDrainGracePeriod when nil. A zero duration
	// is honored as "tear down immediately on the next reconcile" (the
	// equivalent of `obol sell stop --force`).
	DrainGracePeriod *metav1.Duration `json:"drainGracePeriod,omitempty"`
}

func (*ServiceOfferSpec) DeepCopy added in v0.10.0

func (in *ServiceOfferSpec) DeepCopy() *ServiceOfferSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferSpec.

func (*ServiceOfferSpec) DeepCopyInto added in v0.10.0

func (in *ServiceOfferSpec) DeepCopyInto(out *ServiceOfferSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferStatus

type ServiceOfferStatus struct {
	// Condition types: ModelReady, UpstreamHealthy, PaymentGateReady,
	// RoutePublished, Registered, Ready.
	Conditions []Condition `json:"conditions,omitempty"`
	// The public endpoint URL once the route is published.
	Endpoint string `json:"endpoint,omitempty"`
	// ERC-8004 agent NFT token ID after on-chain registration.
	AgentID string `json:"agentId,omitempty"`
	// Transaction hash of the ERC-8004 registration.
	RegistrationTxHash string `json:"registrationTxHash,omitempty"`
	// The generation observed by the controller.
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// Controller's resolved view of an agent-type offer's referenced Agent.
	// Populated only when type=agent and the Agent is Ready.
	AgentResolution *ServiceOfferAgentResolution `json:"agentResolution,omitempty"`
}

func (*ServiceOfferStatus) DeepCopy added in v0.10.0

func (in *ServiceOfferStatus) DeepCopy() *ServiceOfferStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferStatus.

func (*ServiceOfferStatus) DeepCopyInto added in v0.10.0

func (in *ServiceOfferStatus) DeepCopyInto(out *ServiceOfferStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOfferUpstream

type ServiceOfferUpstream struct {
	// Kubernetes Service name.
	// +kubebuilder:validation:Required
	Service string `json:"service"`
	// Namespace of the upstream Service.
	// +kubebuilder:validation:Required
	Namespace string `json:"namespace"`
	// Port on the upstream Service.
	// +kubebuilder:validation:Required
	// +kubebuilder:default=11434
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	Port int64 `json:"port"`
	// HTTP path used for health probes against the upstream.
	// +kubebuilder:default="/health"
	HealthPath string `json:"healthPath,omitempty"`
}

func (*ServiceOfferUpstream) DeepCopy added in v0.10.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferUpstream.

func (*ServiceOfferUpstream) DeepCopyInto added in v0.10.0

func (in *ServiceOfferUpstream) DeepCopyInto(out *ServiceOfferUpstream)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL