v1alpha1

package
v0.17.4 Latest Latest
Warning

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

Go to latest
Published: Sep 14, 2020 License: Apache-2.0 Imports: 14 Imported by: 230

Documentation

Overview

Package v1alpha1 is the v1alpha1 version of the API. +k8s:deepcopy-gen=package +groupName=duck.knative.dev

Index

Constants

This section is empty.

Variables

View Source
var (
	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
	AddToScheme   = SchemeBuilder.AddToScheme
)
View Source
var SchemeGroupVersion = schema.GroupVersion{Group: "duck.knative.dev", Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects

Functions

func Kind added in v0.16.0

func Kind(kind string) schema.GroupKind

Kind takes an unqualified kind and returns back a Group qualified GroupKind

Types

type Channelable added in v0.7.0

type Channelable struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec is the part where the Channelable fulfills the Subscribable contract.
	Spec ChannelableSpec `json:"spec,omitempty"`

	Status ChannelableStatus `json:"status,omitempty"`
}

Channelable is a skeleton type wrapping Subscribable and Addressable in the manner we expect resource writers defining compatible resources to embed it. We will typically use this type to deserialize Channelable ObjectReferences and access their subscription and address data. This is not a real resource.

func (*Channelable) DeepCopy added in v0.7.0

func (in *Channelable) DeepCopy() *Channelable

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

func (*Channelable) DeepCopyInto added in v0.7.0

func (in *Channelable) DeepCopyInto(out *Channelable)

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

func (*Channelable) DeepCopyObject added in v0.7.0

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

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

func (*Channelable) GetFullType added in v0.11.0

func (s *Channelable) GetFullType() duck.Populatable

GetFullType implements duck.Implementable

func (*Channelable) GetListType added in v0.7.0

func (c *Channelable) GetListType() runtime.Object

GetListType implements apis.Listable

func (*Channelable) Populate added in v0.7.0

func (c *Channelable) Populate()

Populate implements duck.Populatable

type ChannelableCombined added in v0.13.0

type ChannelableCombined struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec is the part where the Channelable fulfills the Subscribable contract.
	Spec ChannelableCombinedSpec `json:"spec,omitempty"`

	Status ChannelableCombinedStatus `json:"status,omitempty"`
}

ChannelableCombined is a skeleton type wrapping Subscribable and Addressable of v1alpha1, v1beta1 and v1 duck types. This is not to be used by resource writers and is only used by Subscription Controller to synthesize patches and read the Status of the Channelable Resources. This is not a real resource.

func (*ChannelableCombined) DeepCopy added in v0.13.0

func (in *ChannelableCombined) DeepCopy() *ChannelableCombined

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

func (*ChannelableCombined) DeepCopyInto added in v0.13.0

func (in *ChannelableCombined) DeepCopyInto(out *ChannelableCombined)

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

func (*ChannelableCombined) DeepCopyObject added in v0.13.0

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

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

func (*ChannelableCombined) GetFullType added in v0.13.0

func (s *ChannelableCombined) GetFullType() duck.Populatable

GetFullType implements duck.Implementable

func (*ChannelableCombined) GetListType added in v0.13.0

func (c *ChannelableCombined) GetListType() runtime.Object

GetListType implements apis.Listable

func (*ChannelableCombined) Populate added in v0.13.0

func (c *ChannelableCombined) Populate()

Populate implements duck.Populatable

type ChannelableCombinedList added in v0.13.0

type ChannelableCombinedList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []ChannelableCombined `json:"items"`
}

ChannelableList is a list of Channelable resources.

func (*ChannelableCombinedList) DeepCopy added in v0.13.0

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

func (*ChannelableCombinedList) DeepCopyInto added in v0.13.0

func (in *ChannelableCombinedList) DeepCopyInto(out *ChannelableCombinedList)

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

func (*ChannelableCombinedList) DeepCopyObject added in v0.13.0

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

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

type ChannelableCombinedSpec added in v0.13.0

type ChannelableCombinedSpec struct {
	// SubscribableTypeSpec is for the v1alpha1 spec compatibility.
	SubscribableTypeSpec `json:",inline"`

	// SubscribableSpec is for the v1beta1 spec compatibility.
	eventingduckv1beta1.SubscribableSpec `json:",inline"`

	// DeliverySpec contains options controlling the event delivery
	// for the v1beta1 spec compatibility.
	// +optional
	Delivery *eventingduckv1beta1.DeliverySpec `json:"delivery,omitempty"`

	// SubscribableSpecv1 is for the v1 spec compatibility.
	SubscribableSpecv1 eventingduckv1.SubscribableSpec `json:",inline"`

	// DeliverySpecv1 contains options controlling the event delivery
	// for the v1 spec compatibility.
	// +optional
	Deliveryv1 *eventingduckv1.DeliverySpec `json:"deliveryv1,omitempty"`
}

ChannelableSpec contains Spec of the Channelable object

func (*ChannelableCombinedSpec) DeepCopy added in v0.13.0

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

func (*ChannelableCombinedSpec) DeepCopyInto added in v0.13.0

func (in *ChannelableCombinedSpec) DeepCopyInto(out *ChannelableCombinedSpec)

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

type ChannelableCombinedStatus added in v0.13.0

type ChannelableCombinedStatus struct {
	// inherits duck/v1 Status, which currently provides:
	// * ObservedGeneration - the 'Generation' of the Service that was last processed by the controller.
	// * Conditions - the latest available observations of a resource's current state.
	duckv1.Status `json:",inline"`
	// AddressStatus is the part where the Channelable fulfills the Addressable contract.
	v1alpha1.AddressStatus `json:",inline"`
	// SubscribableTypeStatus is the v1alpha1 part of the Subscribers status
	SubscribableTypeStatus `json:",inline"`
	// SubscribableStatus is the v1beta1 part of the Subscribers status.
	eventingduckv1beta1.SubscribableStatus `json:",inline"`
	// SubscribableStatusv1 is the v1 part of the Subscribers status.
	SubscribableStatusv1 eventingduckv1.SubscribableStatus `json:",inline"`
	// ErrorChannel is set by the channel when it supports native error handling via a channel
	// +optional
	ErrorChannel *corev1.ObjectReference `json:"errorChannel,omitempty"`
}

ChannelableStatus contains the Status of a Channelable object.

func (*ChannelableCombinedStatus) DeepCopy added in v0.13.0

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

func (*ChannelableCombinedStatus) DeepCopyInto added in v0.13.0

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

type ChannelableList added in v0.7.0

type ChannelableList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []Channelable `json:"items"`
}

ChannelableList is a list of Channelable resources.

func (*ChannelableList) DeepCopy added in v0.7.0

func (in *ChannelableList) DeepCopy() *ChannelableList

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

func (*ChannelableList) DeepCopyInto added in v0.7.0

func (in *ChannelableList) DeepCopyInto(out *ChannelableList)

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

func (*ChannelableList) DeepCopyObject added in v0.7.0

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

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

type ChannelableSpec added in v0.7.0

type ChannelableSpec struct {
	SubscribableTypeSpec `json:",inline"`

	// DeliverySpec contains options controlling the event delivery
	// +optional
	Delivery *eventingduckv1beta1.DeliverySpec `json:"delivery,omitempty"`
}

ChannelableSpec contains Spec of the Channelable object

func (*ChannelableSpec) DeepCopy added in v0.7.0

func (in *ChannelableSpec) DeepCopy() *ChannelableSpec

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

func (*ChannelableSpec) DeepCopyInto added in v0.7.0

func (in *ChannelableSpec) DeepCopyInto(out *ChannelableSpec)

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

type ChannelableStatus added in v0.7.0

type ChannelableStatus struct {
	// inherits duck/v1 Status, which currently provides:
	// * ObservedGeneration - the 'Generation' of the Service that was last processed by the controller.
	// * Conditions - the latest available observations of a resource's current state.
	duckv1.Status `json:",inline"`
	// AddressStatus is the part where the Channelable fulfills the Addressable contract.
	v1alpha1.AddressStatus `json:",inline"`
	// Subscribers is populated with the statuses of each of the Channelable's subscribers.
	SubscribableTypeStatus `json:",inline"`
	// ErrorChannel is set by the channel when it supports native error handling via a channel
	// +optional
	ErrorChannel *corev1.ObjectReference `json:"errorChannel,omitempty"`
}

ChannelableStatus contains the Status of a Channelable object.

func (*ChannelableStatus) DeepCopy added in v0.7.0

func (in *ChannelableStatus) DeepCopy() *ChannelableStatus

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

func (*ChannelableStatus) DeepCopyInto added in v0.7.0

func (in *ChannelableStatus) DeepCopyInto(out *ChannelableStatus)

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

type Resource added in v0.8.0

type Resource struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
}

Resource is a skeleton type wrapping all Kubernetes resources. It is typically used to watch arbitrary other resources (such as any Source or Addressable). This is not a real resource.

func (*Resource) DeepCopy added in v0.8.0

func (in *Resource) DeepCopy() *Resource

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

func (*Resource) DeepCopyInto added in v0.8.0

func (in *Resource) DeepCopyInto(out *Resource)

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

func (*Resource) DeepCopyObject added in v0.8.0

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

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

func (*Resource) GetListType added in v0.8.0

func (*Resource) GetListType() runtime.Object

GetListType implements apis.Listable.

type ResourceList added in v0.8.0

type ResourceList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []Resource `json:"items"`
}

ResourceList is a list of KResource resources

func (*ResourceList) DeepCopy added in v0.8.0

func (in *ResourceList) DeepCopy() *ResourceList

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

func (*ResourceList) DeepCopyInto added in v0.8.0

func (in *ResourceList) DeepCopyInto(out *ResourceList)

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

func (*ResourceList) DeepCopyObject added in v0.8.0

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

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

type Subscribable

type Subscribable struct {
	// This is the list of subscriptions for this subscribable.
	// +patchMergeKey=uid
	// +patchStrategy=merge
	Subscribers []SubscriberSpec `json:"subscribers,omitempty" patchStrategy:"merge" patchMergeKey:"uid"`
}

Subscribable is the schema for the subscribable portion of the spec section of the resource.

func (*Subscribable) DeepCopy

func (in *Subscribable) DeepCopy() *Subscribable

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

func (*Subscribable) DeepCopyInto

func (in *Subscribable) DeepCopyInto(out *Subscribable)

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

func (*Subscribable) GetFullType

func (s *Subscribable) GetFullType() duck.Populatable

GetFullType implements duck.Implementable

type SubscribableStatus added in v0.7.0

type SubscribableStatus struct {
	// This is the list of subscription's statuses for this channel.
	// +patchMergeKey=uid
	// +patchStrategy=merge
	Subscribers []duckv1beta1.SubscriberStatus `json:"subscribers,omitempty" patchStrategy:"merge" patchMergeKey:"uid"`

	// This is the list of subscription's statuses for this channel.
	// +patchMergeKey=uid
	// +patchStrategy=merge
	Subscribersv1 []duckv1.SubscriberStatus `json:"subscribersv1,omitempty" patchStrategy:"merge" patchMergeKey:"uid"`
}

SubscribableStatus is the schema for the subscribable's status portion of the status section of the resource.

func (*SubscribableStatus) DeepCopy added in v0.7.0

func (in *SubscribableStatus) DeepCopy() *SubscribableStatus

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

func (*SubscribableStatus) DeepCopyInto added in v0.7.0

func (in *SubscribableStatus) DeepCopyInto(out *SubscribableStatus)

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

type SubscribableType added in v0.7.0

type SubscribableType struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// SubscribableTypeSpec is the part where Subscribable object is
	// configured as to be compatible with Subscribable contract.
	Spec SubscribableTypeSpec `json:"spec"`

	// SubscribableTypeStatus is the part where SubscribableStatus object is
	// configured as to be compatible with Subscribable contract.
	Status SubscribableTypeStatus `json:"status"`
}

SubscribableType is a skeleton type wrapping Subscribable in the manner we expect resource writers defining compatible resources to embed it. We will typically use this type to deserialize SubscribableType ObjectReferences and access the Subscription data. This is not a real resource.

func (*SubscribableType) ConvertFrom added in v0.14.0

func (sink *SubscribableType) ConvertFrom(ctx context.Context, obj apis.Convertible) error

ConvertFrom implements apis.Convertible. Converts obj v1beta1.Subscribable into v1alpha1.SubscribableType

func (*SubscribableType) ConvertTo added in v0.14.0

func (source *SubscribableType) ConvertTo(ctx context.Context, obj apis.Convertible) error

ConvertTo implements apis.Convertible

func (*SubscribableType) DeepCopy added in v0.7.0

func (in *SubscribableType) DeepCopy() *SubscribableType

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

func (*SubscribableType) DeepCopyInto added in v0.7.0

func (in *SubscribableType) DeepCopyInto(out *SubscribableType)

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

func (*SubscribableType) DeepCopyObject added in v0.7.0

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

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

func (*SubscribableType) GetListType added in v0.7.0

func (c *SubscribableType) GetListType() runtime.Object

GetListType implements apis.Listable

func (*SubscribableType) Populate added in v0.7.0

func (c *SubscribableType) Populate()

Populate implements duck.Populatable

type SubscribableTypeList added in v0.7.0

type SubscribableTypeList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []SubscribableType `json:"items"`
}

SubscribableTypeList is a list of SubscribableType resources

func (*SubscribableTypeList) DeepCopy added in v0.7.0

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

func (*SubscribableTypeList) DeepCopyInto added in v0.7.0

func (in *SubscribableTypeList) DeepCopyInto(out *SubscribableTypeList)

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

func (*SubscribableTypeList) DeepCopyObject added in v0.7.0

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

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

type SubscribableTypeSpec added in v0.7.0

type SubscribableTypeSpec struct {
	Subscribable *Subscribable `json:"subscribable,omitempty"`
}

SubscribableTypeSpec shows how we expect folks to embed Subscribable in their Spec field.

func (*SubscribableTypeSpec) ConvertFrom added in v0.14.0

func (sink *SubscribableTypeSpec) ConvertFrom(ctx context.Context, obj apis.Convertible) error

ConvertFrom implements apis.Convertible

func (*SubscribableTypeSpec) ConvertTo added in v0.14.0

func (source *SubscribableTypeSpec) ConvertTo(ctx context.Context, obj apis.Convertible) error

ConvertTo implements apis.Convertible

func (*SubscribableTypeSpec) DeepCopy added in v0.7.0

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

func (*SubscribableTypeSpec) DeepCopyInto added in v0.7.0

func (in *SubscribableTypeSpec) DeepCopyInto(out *SubscribableTypeSpec)

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

type SubscribableTypeStatus added in v0.7.0

type SubscribableTypeStatus struct {
	SubscribableStatus *SubscribableStatus `json:"subscribableStatus,omitempty"`
}

SubscribableTypeStatus shows how we expect folks to embed Subscribable in their Status field.

func (*SubscribableTypeStatus) AddSubscriberToSubscribableStatus added in v0.9.0

func (s *SubscribableTypeStatus) AddSubscriberToSubscribableStatus(subscriberStatus duckv1beta1.SubscriberStatus)

AddSubscriberToSubscribableStatus method is a Helper method for type SubscribableTypeStatus, if Subscribable Status needs to be appended with Subscribers, use this function, so that the value is reflected in both the duplicate fields residing in SubscribableTypeStatus

func (*SubscribableTypeStatus) AddSubscriberV1ToSubscribableStatus added in v0.17.0

func (s *SubscribableTypeStatus) AddSubscriberV1ToSubscribableStatus(subscriberStatus duckv1.SubscriberStatus)

AddSubscriberToSubscribableStatus method is a Helper method for type SubscribableTypeStatus, if Subscribable Status needs to be appended with Subscribers, use this function, so that the value is reflected in both the duplicate fields residing in SubscribableTypeStatus

func (*SubscribableTypeStatus) ConvertFrom added in v0.14.0

func (sink *SubscribableTypeStatus) ConvertFrom(ctx context.Context, obj apis.Convertible) error

ConvertFrom implements apis.Convertible

func (*SubscribableTypeStatus) ConvertTo added in v0.14.0

func (source *SubscribableTypeStatus) ConvertTo(ctx context.Context, obj apis.Convertible) error

ConvertTo implements apis.Convertible

func (*SubscribableTypeStatus) DeepCopy added in v0.7.0

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

func (*SubscribableTypeStatus) DeepCopyInto added in v0.7.0

func (in *SubscribableTypeStatus) DeepCopyInto(out *SubscribableTypeStatus)

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

func (*SubscribableTypeStatus) GetSubscribableTypeStatus added in v0.9.0

func (s *SubscribableTypeStatus) GetSubscribableTypeStatus() *SubscribableStatus

GetSubscribableTypeStatus method Returns the Default SubscribableStatus in this case it's SubscribableStatus This is w.r.t https://github.com/knative/eventing/pull/1685#discussion_r314797276 Due to change in the API, we support reading of SubscribableTypeStatus#DeprecatedSubscribableStatus in a logical way where we read the V2 value first and if the value is absent then we read the V1 value, Having this function here makes it convinient to read the default value at runtime.

func (*SubscribableTypeStatus) SetSubscribableTypeStatus added in v0.9.0

func (s *SubscribableTypeStatus) SetSubscribableTypeStatus(subscriberStatus SubscribableStatus)

SetSubscribableTypeStatus method sets the SubscribableStatus Values in th SubscribableTypeStatus structs This helper function ensures that we set both the values (SubscribableStatus and DeprecatedSubscribableStatus)

type SubscriberSpec added in v0.7.0

type SubscriberSpec struct {
	// UID is used to understand the origin of the subscriber.
	// +optional
	UID types.UID `json:"uid,omitempty"`
	// Generation of the origin of the subscriber with uid:UID.
	// +optional
	Generation int64 `json:"generation,omitempty"`
	// +optional
	SubscriberURI *apis.URL `json:"subscriberURI,omitempty"`
	// +optional
	ReplyURI *apis.URL `json:"replyURI,omitempty"`
	// +optional
	DeadLetterSinkURI *apis.URL `json:"deadLetterSink,omitempty"`
	// +optional
	Delivery *duckv1beta1.DeliverySpec `json:"delivery,omitempty"`
	// +optional
	Deliveryv1 *duckv1.DeliverySpec `json:"deliveryv1,omitempty"`
}

SubscriberSpec defines a single subscriber to a Subscribable. Ref is a reference to the Subscription this SubscriberSpec was created for SubscriberURI is the endpoint for the subscriber ReplyURI is the endpoint for the reply At least one of SubscriberURI and ReplyURI must be present

func (*SubscriberSpec) ConvertFrom added in v0.14.0

func (sink *SubscriberSpec) ConvertFrom(ctx context.Context, obj apis.Convertible) error

ConvertFrom implements apis.Convertible

func (*SubscriberSpec) ConvertTo added in v0.14.0

func (source *SubscriberSpec) ConvertTo(ctx context.Context, obj apis.Convertible) error

ConvertTo implements apis.Convertible

func (*SubscriberSpec) DeepCopy added in v0.7.0

func (in *SubscriberSpec) DeepCopy() *SubscriberSpec

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

func (*SubscriberSpec) DeepCopyInto added in v0.7.0

func (in *SubscriberSpec) DeepCopyInto(out *SubscriberSpec)

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