api

package
v0.45.0 Latest Latest
Warning

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

Go to latest
Published: Jul 25, 2022 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Overview

Code generated by ogen, DO NOT EDIT.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client implements OAS client.

func NewClient

func NewClient(serverURL string, opts ...Option) (*Client, error)

NewClient initializes new Client defined by OAS.

func (*Client) NullableStrings

func (c *Client) NullableStrings(ctx context.Context, request string) (res NullableStringsOK, err error)

NullableStrings invokes nullableStrings operation.

Nullable strings.

POST /nullableStrings

func (*Client) ObjectsWithConflictingArrayProperty

func (c *Client) ObjectsWithConflictingArrayProperty(ctx context.Context, request ObjectsWithConflictingArrayPropertyReq) (res ObjectsWithConflictingArrayPropertyOK, err error)

ObjectsWithConflictingArrayProperty invokes objectsWithConflictingArrayProperty operation.

Objects with conflicting array property.

POST /objectsWithConflictingArrayProperty

func (*Client) ObjectsWithConflictingProperties

func (c *Client) ObjectsWithConflictingProperties(ctx context.Context, request ObjectsWithConflictingPropertiesReq) (res ObjectsWithConflictingPropertiesOK, err error)

ObjectsWithConflictingProperties invokes objectsWithConflictingProperties operation.

Objects with conflicting properties.

POST /objectsWithConflictingProperties

func (*Client) ReferencedAllof

func (c *Client) ReferencedAllof(ctx context.Context, request ReferencedAllofReq) (res ReferencedAllofOK, err error)

ReferencedAllof invokes referencedAllof operation.

Referenced allOf.

POST /referencedAllof

func (*Client) ReferencedAllofOptional

func (c *Client) ReferencedAllofOptional(ctx context.Context, request ReferencedAllofOptionalReq) (res ReferencedAllofOptionalOK, err error)

ReferencedAllofOptional invokes referencedAllofOptional operation.

Referenced allOf, but requestBody is not required.

POST /referencedAllofOptional

func (*Client) SimpleInteger

func (c *Client) SimpleInteger(ctx context.Context, request int) (res SimpleIntegerOK, err error)

SimpleInteger invokes simpleInteger operation.

Simple integers with validation.

POST /simpleInteger

func (*Client) SimpleObjects

func (c *Client) SimpleObjects(ctx context.Context, request SimpleObjectsReq) (res SimpleObjectsOK, err error)

SimpleObjects invokes simpleObjects operation.

Simple objects.

POST /simpleObjects

type ErrorHandler

type ErrorHandler func(ctx context.Context, w http.ResponseWriter, r *http.Request, err error)

ErrorHandler is error handler.

type Handler

type Handler interface {
	// NullableStrings implements nullableStrings operation.
	//
	// Nullable strings.
	//
	// POST /nullableStrings
	NullableStrings(ctx context.Context, req string) (NullableStringsOK, error)
	// ObjectsWithConflictingArrayProperty implements objectsWithConflictingArrayProperty operation.
	//
	// Objects with conflicting array property.
	//
	// POST /objectsWithConflictingArrayProperty
	ObjectsWithConflictingArrayProperty(ctx context.Context, req ObjectsWithConflictingArrayPropertyReq) (ObjectsWithConflictingArrayPropertyOK, error)
	// ObjectsWithConflictingProperties implements objectsWithConflictingProperties operation.
	//
	// Objects with conflicting properties.
	//
	// POST /objectsWithConflictingProperties
	ObjectsWithConflictingProperties(ctx context.Context, req ObjectsWithConflictingPropertiesReq) (ObjectsWithConflictingPropertiesOK, error)
	// ReferencedAllof implements referencedAllof operation.
	//
	// Referenced allOf.
	//
	// POST /referencedAllof
	ReferencedAllof(ctx context.Context, req ReferencedAllofReq) (ReferencedAllofOK, error)
	// ReferencedAllofOptional implements referencedAllofOptional operation.
	//
	// Referenced allOf, but requestBody is not required.
	//
	// POST /referencedAllofOptional
	ReferencedAllofOptional(ctx context.Context, req ReferencedAllofOptionalReq) (ReferencedAllofOptionalOK, error)
	// SimpleInteger implements simpleInteger operation.
	//
	// Simple integers with validation.
	//
	// POST /simpleInteger
	SimpleInteger(ctx context.Context, req int) (SimpleIntegerOK, error)
	// SimpleObjects implements simpleObjects operation.
	//
	// Simple objects.
	//
	// POST /simpleObjects
	SimpleObjects(ctx context.Context, req SimpleObjectsReq) (SimpleObjectsOK, error)
}

Handler handles operations described by OpenAPI v3 specification.

type Location

type Location struct {
	Lat float64 "json:\"lat\""
	Lon float64 "json:\"lon\""
}

Ref: #/components/schemas/Location

func (*Location) Decode

func (s *Location) Decode(d *jx.Decoder) error

Decode decodes Location from json.

func (*Location) DecodeURI

func (s *Location) DecodeURI(d uri.Decoder) error

DecodeURI decodes Location from URI form.

func (Location) Encode

func (s Location) Encode(e *jx.Encoder)

Encode implements json.Marshaler.

func (Location) EncodeURI

func (s Location) EncodeURI(e uri.Encoder) error

EncodeURI encodes Location as URI form.

func (Location) MarshalJSON

func (s Location) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (*Location) SetFake

func (s *Location) SetFake()

SetFake set fake values.

func (*Location) UnmarshalJSON

func (s *Location) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

func (Location) Validate

func (s Location) Validate() error

type NullableStringsOK

type NullableStringsOK struct{}

NullableStringsOK is response for NullableStrings operation.

type ObjectsWithConflictingArrayPropertyOK

type ObjectsWithConflictingArrayPropertyOK struct{}

ObjectsWithConflictingArrayPropertyOK is response for ObjectsWithConflictingArrayProperty operation.

type ObjectsWithConflictingArrayPropertyReq

type ObjectsWithConflictingArrayPropertyReq struct {
	// Merged property.
	Foo []int "json:\"foo\""
	Bar int   "json:\"bar\""
}

Merged schema.

func (*ObjectsWithConflictingArrayPropertyReq) Decode

Decode decodes ObjectsWithConflictingArrayPropertyReq from json.

func (ObjectsWithConflictingArrayPropertyReq) Encode

Encode implements json.Marshaler.

func (ObjectsWithConflictingArrayPropertyReq) MarshalJSON

func (s ObjectsWithConflictingArrayPropertyReq) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (*ObjectsWithConflictingArrayPropertyReq) SetFake

SetFake set fake values.

func (*ObjectsWithConflictingArrayPropertyReq) UnmarshalJSON

func (s *ObjectsWithConflictingArrayPropertyReq) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

func (ObjectsWithConflictingArrayPropertyReq) Validate

type ObjectsWithConflictingPropertiesOK

type ObjectsWithConflictingPropertiesOK struct{}

ObjectsWithConflictingPropertiesOK is response for ObjectsWithConflictingProperties operation.

type ObjectsWithConflictingPropertiesReq

type ObjectsWithConflictingPropertiesReq struct {
	// Merged property.
	Foo string "json:\"foo\""
	Bar OptInt "json:\"bar\""
}

Merged schema.

func (*ObjectsWithConflictingPropertiesReq) Decode

Decode decodes ObjectsWithConflictingPropertiesReq from json.

func (ObjectsWithConflictingPropertiesReq) Encode

Encode implements json.Marshaler.

func (ObjectsWithConflictingPropertiesReq) MarshalJSON

func (s ObjectsWithConflictingPropertiesReq) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (*ObjectsWithConflictingPropertiesReq) SetFake

SetFake set fake values.

func (*ObjectsWithConflictingPropertiesReq) UnmarshalJSON

func (s *ObjectsWithConflictingPropertiesReq) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

func (ObjectsWithConflictingPropertiesReq) Validate

type OptBool

type OptBool struct {
	Value bool
	Set   bool
}

OptBool is optional bool.

func NewOptBool

func NewOptBool(v bool) OptBool

NewOptBool returns new OptBool with value set to v.

func (*OptBool) Decode

func (o *OptBool) Decode(d *jx.Decoder) error

Decode decodes bool from json.

func (OptBool) Encode

func (o OptBool) Encode(e *jx.Encoder)

Encode encodes bool as json.

func (OptBool) Get

func (o OptBool) Get() (v bool, ok bool)

Get returns value and boolean that denotes whether value was set.

func (OptBool) IsSet

func (o OptBool) IsSet() bool

IsSet returns true if OptBool was set.

func (OptBool) MarshalJSON

func (s OptBool) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (OptBool) Or

func (o OptBool) Or(d bool) bool

Or returns value if set, or given parameter if does not.

func (*OptBool) Reset

func (o *OptBool) Reset()

Reset unsets value.

func (*OptBool) SetFake

func (s *OptBool) SetFake()

SetFake set fake values.

func (*OptBool) SetTo

func (o *OptBool) SetTo(v bool)

SetTo sets value to v.

func (*OptBool) UnmarshalJSON

func (s *OptBool) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

type OptInt

type OptInt struct {
	Value int
	Set   bool
}

OptInt is optional int.

func NewOptInt

func NewOptInt(v int) OptInt

NewOptInt returns new OptInt with value set to v.

func (*OptInt) Decode

func (o *OptInt) Decode(d *jx.Decoder) error

Decode decodes int from json.

func (OptInt) Encode

func (o OptInt) Encode(e *jx.Encoder)

Encode encodes int as json.

func (OptInt) Get

func (o OptInt) Get() (v int, ok bool)

Get returns value and boolean that denotes whether value was set.

func (OptInt) IsSet

func (o OptInt) IsSet() bool

IsSet returns true if OptInt was set.

func (OptInt) MarshalJSON

func (s OptInt) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (OptInt) Or

func (o OptInt) Or(d int) int

Or returns value if set, or given parameter if does not.

func (*OptInt) Reset

func (o *OptInt) Reset()

Reset unsets value.

func (*OptInt) SetFake

func (s *OptInt) SetFake()

SetFake set fake values.

func (*OptInt) SetTo

func (o *OptInt) SetTo(v int)

SetTo sets value to v.

func (*OptInt) UnmarshalJSON

func (s *OptInt) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

type OptRobot

type OptRobot struct {
	Value Robot
	Set   bool
}

OptRobot is optional Robot.

func NewOptRobot

func NewOptRobot(v Robot) OptRobot

NewOptRobot returns new OptRobot with value set to v.

func (*OptRobot) Decode

func (o *OptRobot) Decode(d *jx.Decoder) error

Decode decodes Robot from json.

func (OptRobot) Encode

func (o OptRobot) Encode(e *jx.Encoder)

Encode encodes Robot as json.

func (OptRobot) Get

func (o OptRobot) Get() (v Robot, ok bool)

Get returns value and boolean that denotes whether value was set.

func (OptRobot) IsSet

func (o OptRobot) IsSet() bool

IsSet returns true if OptRobot was set.

func (OptRobot) MarshalJSON

func (s OptRobot) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (OptRobot) Or

func (o OptRobot) Or(d Robot) Robot

Or returns value if set, or given parameter if does not.

func (*OptRobot) Reset

func (o *OptRobot) Reset()

Reset unsets value.

func (*OptRobot) SetFake

func (s *OptRobot) SetFake()

SetFake set fake values.

func (*OptRobot) SetTo

func (o *OptRobot) SetTo(v Robot)

SetTo sets value to v.

func (*OptRobot) UnmarshalJSON

func (s *OptRobot) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

type OptString

type OptString struct {
	Value string
	Set   bool
}

OptString is optional string.

func NewOptString

func NewOptString(v string) OptString

NewOptString returns new OptString with value set to v.

func (*OptString) Decode

func (o *OptString) Decode(d *jx.Decoder) error

Decode decodes string from json.

func (OptString) Encode

func (o OptString) Encode(e *jx.Encoder)

Encode encodes string as json.

func (OptString) Get

func (o OptString) Get() (v string, ok bool)

Get returns value and boolean that denotes whether value was set.

func (OptString) IsSet

func (o OptString) IsSet() bool

IsSet returns true if OptString was set.

func (OptString) MarshalJSON

func (s OptString) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (OptString) Or

func (o OptString) Or(d string) string

Or returns value if set, or given parameter if does not.

func (*OptString) Reset

func (o *OptString) Reset()

Reset unsets value.

func (*OptString) SetFake

func (s *OptString) SetFake()

SetFake set fake values.

func (*OptString) SetTo

func (o *OptString) SetTo(v string)

SetTo sets value to v.

func (*OptString) UnmarshalJSON

func (s *OptString) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

type Option

type Option interface {
	// contains filtered or unexported methods
}

func WithClient

func WithClient(client ht.Client) Option

WithClient specifies http client to use.

func WithErrorHandler

func WithErrorHandler(h ErrorHandler) Option

WithErrorHandler specifies error handler to use.

func WithMaxMultipartMemory

func WithMaxMultipartMemory(max int64) Option

WithMaxMultipartMemory specifies limit of memory for storing file parts. File parts which can't be stored in memory will be stored on disk in temporary files.

func WithMeterProvider

func WithMeterProvider(provider metric.MeterProvider) Option

WithMeterProvider specifies a meter provider to use for creating a meter.

If none is specified, the metric.NewNoopMeterProvider is used.

func WithNotFound

func WithNotFound(notFound http.HandlerFunc) Option

WithNotFound specifies Not Found handler to use.

func WithTracerProvider

func WithTracerProvider(provider trace.TracerProvider) Option

WithTracerProvider specifies a tracer provider to use for creating a tracer.

If none is specified, the global provider is used.

type ReferencedAllofApplicationJSON

type ReferencedAllofApplicationJSON Robot

func (*ReferencedAllofApplicationJSON) Decode

Decode decodes ReferencedAllofApplicationJSON from json.

func (ReferencedAllofApplicationJSON) Encode

Encode encodes ReferencedAllofApplicationJSON as json.

func (ReferencedAllofApplicationJSON) MarshalJSON

func (s ReferencedAllofApplicationJSON) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (*ReferencedAllofApplicationJSON) SetFake

func (s *ReferencedAllofApplicationJSON) SetFake()

SetFake set fake values.

func (*ReferencedAllofApplicationJSON) UnmarshalJSON

func (s *ReferencedAllofApplicationJSON) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

func (ReferencedAllofApplicationJSON) Validate

type ReferencedAllofMultipartFormData

type ReferencedAllofMultipartFormData Robot

func (*ReferencedAllofMultipartFormData) Decode

Decode decodes ReferencedAllofMultipartFormData from json.

func (ReferencedAllofMultipartFormData) Encode

Encode encodes ReferencedAllofMultipartFormData as json.

func (ReferencedAllofMultipartFormData) MarshalJSON

func (s ReferencedAllofMultipartFormData) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (*ReferencedAllofMultipartFormData) SetFake

func (s *ReferencedAllofMultipartFormData) SetFake()

SetFake set fake values.

func (*ReferencedAllofMultipartFormData) UnmarshalJSON

func (s *ReferencedAllofMultipartFormData) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

func (ReferencedAllofMultipartFormData) Validate

type ReferencedAllofOK

type ReferencedAllofOK struct{}

ReferencedAllofOK is response for ReferencedAllof operation.

type ReferencedAllofOptionalApplicationJSON

type ReferencedAllofOptionalApplicationJSON OptRobot

func (*ReferencedAllofOptionalApplicationJSON) Decode

Decode decodes ReferencedAllofOptionalApplicationJSON from json.

func (ReferencedAllofOptionalApplicationJSON) Encode

Encode encodes ReferencedAllofOptionalApplicationJSON as json.

func (ReferencedAllofOptionalApplicationJSON) MarshalJSON

func (s ReferencedAllofOptionalApplicationJSON) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (*ReferencedAllofOptionalApplicationJSON) SetFake

SetFake set fake values.

func (*ReferencedAllofOptionalApplicationJSON) UnmarshalJSON

func (s *ReferencedAllofOptionalApplicationJSON) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

func (ReferencedAllofOptionalApplicationJSON) Validate

type ReferencedAllofOptionalMultipartFormData

type ReferencedAllofOptionalMultipartFormData OptRobot

func (*ReferencedAllofOptionalMultipartFormData) Decode

Decode decodes ReferencedAllofOptionalMultipartFormData from json.

func (ReferencedAllofOptionalMultipartFormData) Encode

Encode encodes ReferencedAllofOptionalMultipartFormData as json.

func (ReferencedAllofOptionalMultipartFormData) MarshalJSON

MarshalJSON implements stdjson.Marshaler.

func (*ReferencedAllofOptionalMultipartFormData) SetFake

SetFake set fake values.

func (*ReferencedAllofOptionalMultipartFormData) UnmarshalJSON

func (s *ReferencedAllofOptionalMultipartFormData) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

func (ReferencedAllofOptionalMultipartFormData) Validate

type ReferencedAllofOptionalOK

type ReferencedAllofOptionalOK struct{}

ReferencedAllofOptionalOK is response for ReferencedAllofOptional operation.

type ReferencedAllofOptionalReq

type ReferencedAllofOptionalReq interface {
	// contains filtered or unexported methods
}

type ReferencedAllofReq

type ReferencedAllofReq interface {
	// contains filtered or unexported methods
}

type Robot

type Robot struct {
	State    RobotState "json:\"state\""
	ID       uuid.UUID  "json:\"id\""
	Location Location   "json:\"location\""
}

Merged schema. Ref: #/components/schemas/Robot

func (*Robot) Decode

func (s *Robot) Decode(d *jx.Decoder) error

Decode decodes Robot from json.

func (Robot) Encode

func (s Robot) Encode(e *jx.Encoder)

Encode implements json.Marshaler.

func (Robot) MarshalJSON

func (s Robot) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (*Robot) SetFake

func (s *Robot) SetFake()

SetFake set fake values.

func (*Robot) UnmarshalJSON

func (s *Robot) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

func (Robot) Validate

func (s Robot) Validate() error

type RobotState

type RobotState string
const (
	RobotStateOn  RobotState = "on"
	RobotStateOff RobotState = "off"
)

func (*RobotState) Decode

func (s *RobotState) Decode(d *jx.Decoder) error

Decode decodes RobotState from json.

func (RobotState) Encode

func (s RobotState) Encode(e *jx.Encoder)

Encode encodes RobotState as json.

func (RobotState) MarshalJSON

func (s RobotState) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (*RobotState) SetFake

func (s *RobotState) SetFake()

SetFake set fake values.

func (*RobotState) UnmarshalJSON

func (s *RobotState) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

func (RobotState) Validate

func (s RobotState) Validate() error

type Route

type Route struct {
	// contains filtered or unexported fields
}

Route is route object.

func (Route) Args

func (r Route) Args() []string

Args returns parsed arguments.

func (Route) OperationID

func (r Route) OperationID() string

OperationID returns OpenAPI operationId.

type Server

type Server struct {
	// contains filtered or unexported fields
}

Server implements http server based on OpenAPI v3 specification and calls Handler to handle requests.

func NewServer

func NewServer(h Handler, opts ...Option) (*Server, error)

func (*Server) FindRoute

func (s *Server) FindRoute(method, path string) (r Route, _ bool)

FindRoute finds Route for given method and path.

func (*Server) ServeHTTP

func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP serves http request as defined by OpenAPI v3 specification, calling handler that matches the path or returning not found error.

type SimpleIntegerOK

type SimpleIntegerOK struct{}

SimpleIntegerOK is response for SimpleInteger operation.

type SimpleObjectsOK

type SimpleObjectsOK struct{}

SimpleObjectsOK is response for SimpleObjects operation.

type SimpleObjectsReq

type SimpleObjectsReq struct {
	Foo OptString "json:\"foo\""
	Bar OptBool   "json:\"bar\""
}

Merged schema.

func (*SimpleObjectsReq) Decode

func (s *SimpleObjectsReq) Decode(d *jx.Decoder) error

Decode decodes SimpleObjectsReq from json.

func (SimpleObjectsReq) Encode

func (s SimpleObjectsReq) Encode(e *jx.Encoder)

Encode implements json.Marshaler.

func (SimpleObjectsReq) MarshalJSON

func (s SimpleObjectsReq) MarshalJSON() ([]byte, error)

MarshalJSON implements stdjson.Marshaler.

func (*SimpleObjectsReq) SetFake

func (s *SimpleObjectsReq) SetFake()

SetFake set fake values.

func (*SimpleObjectsReq) UnmarshalJSON

func (s *SimpleObjectsReq) UnmarshalJSON(data []byte) error

UnmarshalJSON implements stdjson.Unmarshaler.

type UnimplementedHandler

type UnimplementedHandler struct{}

UnimplementedHandler is no-op Handler which returns http.ErrNotImplemented.

func (UnimplementedHandler) NullableStrings

func (UnimplementedHandler) NullableStrings(ctx context.Context, req string) (r NullableStringsOK, _ error)

NullableStrings implements nullableStrings operation.

Nullable strings.

POST /nullableStrings

func (UnimplementedHandler) ObjectsWithConflictingArrayProperty

ObjectsWithConflictingArrayProperty implements objectsWithConflictingArrayProperty operation.

Objects with conflicting array property.

POST /objectsWithConflictingArrayProperty

func (UnimplementedHandler) ObjectsWithConflictingProperties

ObjectsWithConflictingProperties implements objectsWithConflictingProperties operation.

Objects with conflicting properties.

POST /objectsWithConflictingProperties

func (UnimplementedHandler) ReferencedAllof

ReferencedAllof implements referencedAllof operation.

Referenced allOf.

POST /referencedAllof

func (UnimplementedHandler) ReferencedAllofOptional

ReferencedAllofOptional implements referencedAllofOptional operation.

Referenced allOf, but requestBody is not required.

POST /referencedAllofOptional

func (UnimplementedHandler) SimpleInteger

func (UnimplementedHandler) SimpleInteger(ctx context.Context, req int) (r SimpleIntegerOK, _ error)

SimpleInteger implements simpleInteger operation.

Simple integers with validation.

POST /simpleInteger

func (UnimplementedHandler) SimpleObjects

SimpleObjects implements simpleObjects operation.

Simple objects.

POST /simpleObjects

Jump to

Keyboard shortcuts

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