inputs

package
v0.20240223.1130721 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2024 License: MPL-2.0 Imports: 10 Imported by: 1

README

github.com/hashicorp/go-azure-sdk/resource-manager/streamanalytics/2020-03-01/inputs Documentation

The inputs SDK allows for interaction with the Azure Resource Manager Service streamanalytics (API Version 2020-03-01).

This readme covers example usages, but further information on using this SDK can be found in the project root.

Import Path

import "github.com/hashicorp/go-azure-sdk/resource-manager/streamanalytics/2020-03-01/inputs"

Client Initialization

client := inputs.NewInputsClientWithBaseURI("https://management.azure.com")
client.Client.Authorizer = authorizer

Example Usage: InputsClient.CreateOrReplace

ctx := context.TODO()
id := inputs.NewInputID("12345678-1234-9876-4563-123456789012", "example-resource-group", "streamingJobValue", "inputValue")

payload := inputs.Input{
	// ...
}


read, err := client.CreateOrReplace(ctx, id, payload, inputs.DefaultCreateOrReplaceOperationOptions())
if err != nil {
	// handle the error
}
if model := read.Model; model != nil {
	// do something with the model/response object
}

Example Usage: InputsClient.Delete

ctx := context.TODO()
id := inputs.NewInputID("12345678-1234-9876-4563-123456789012", "example-resource-group", "streamingJobValue", "inputValue")

read, err := client.Delete(ctx, id)
if err != nil {
	// handle the error
}
if model := read.Model; model != nil {
	// do something with the model/response object
}

Example Usage: InputsClient.Get

ctx := context.TODO()
id := inputs.NewInputID("12345678-1234-9876-4563-123456789012", "example-resource-group", "streamingJobValue", "inputValue")

read, err := client.Get(ctx, id)
if err != nil {
	// handle the error
}
if model := read.Model; model != nil {
	// do something with the model/response object
}

Example Usage: InputsClient.ListByStreamingJob

ctx := context.TODO()
id := inputs.NewStreamingJobID("12345678-1234-9876-4563-123456789012", "example-resource-group", "streamingJobValue")

// alternatively `client.ListByStreamingJob(ctx, id, inputs.DefaultListByStreamingJobOperationOptions())` can be used to do batched pagination
items, err := client.ListByStreamingJobComplete(ctx, id, inputs.DefaultListByStreamingJobOperationOptions())
if err != nil {
	// handle the error
}
for _, item := range items {
	// do something
}

Example Usage: InputsClient.Test

ctx := context.TODO()
id := inputs.NewInputID("12345678-1234-9876-4563-123456789012", "example-resource-group", "streamingJobValue", "inputValue")

payload := inputs.Input{
	// ...
}


if err := client.TestThenPoll(ctx, id, payload); err != nil {
	// handle the error
}

Example Usage: InputsClient.Update

ctx := context.TODO()
id := inputs.NewInputID("12345678-1234-9876-4563-123456789012", "example-resource-group", "streamingJobValue", "inputValue")

payload := inputs.Input{
	// ...
}


read, err := client.Update(ctx, id, payload, inputs.DefaultUpdateOperationOptions())
if err != nil {
	// handle the error
}
if model := read.Model; model != nil {
	// do something with the model/response object
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PossibleValuesForAuthenticationMode

func PossibleValuesForAuthenticationMode() []string

func PossibleValuesForCompressionType

func PossibleValuesForCompressionType() []string

func PossibleValuesForEncoding

func PossibleValuesForEncoding() []string

func PossibleValuesForEventSerializationType

func PossibleValuesForEventSerializationType() []string

func PossibleValuesForJsonOutputSerializationFormat

func PossibleValuesForJsonOutputSerializationFormat() []string

func PossibleValuesForRefreshType

func PossibleValuesForRefreshType() []string

func ValidateInputID

func ValidateInputID(input interface{}, key string) (warnings []string, errors []error)

ValidateInputID checks that 'input' can be parsed as a Input ID

func ValidateStreamingJobID

func ValidateStreamingJobID(input interface{}, key string) (warnings []string, errors []error)

ValidateStreamingJobID checks that 'input' can be parsed as a Streaming Job ID

Types

type AuthenticationMode

type AuthenticationMode string
const (
	AuthenticationModeConnectionString AuthenticationMode = "ConnectionString"
	AuthenticationModeMsi              AuthenticationMode = "Msi"
	AuthenticationModeUserToken        AuthenticationMode = "UserToken"
)

func (*AuthenticationMode) UnmarshalJSON added in v0.20240208.1095436

func (s *AuthenticationMode) UnmarshalJSON(bytes []byte) error

type AvroSerialization

type AvroSerialization struct {
	Properties *interface{} `json:"properties,omitempty"`
}

func (AvroSerialization) MarshalJSON

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

type AzureSqlReferenceInputDataSource

type AzureSqlReferenceInputDataSource struct {
	Properties *AzureSqlReferenceInputDataSourceProperties `json:"properties,omitempty"`
}

func (AzureSqlReferenceInputDataSource) MarshalJSON

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

type AzureSqlReferenceInputDataSourceProperties

type AzureSqlReferenceInputDataSourceProperties struct {
	Database           *string      `json:"database,omitempty"`
	DeltaSnapshotQuery *string      `json:"deltaSnapshotQuery,omitempty"`
	FullSnapshotQuery  *string      `json:"fullSnapshotQuery,omitempty"`
	Password           *string      `json:"password,omitempty"`
	RefreshRate        *string      `json:"refreshRate,omitempty"`
	RefreshType        *RefreshType `json:"refreshType,omitempty"`
	Server             *string      `json:"server,omitempty"`
	Table              *string      `json:"table,omitempty"`
	User               *string      `json:"user,omitempty"`
}

type BlobDataSourceProperties

type BlobDataSourceProperties struct {
	AuthenticationMode *AuthenticationMode `json:"authenticationMode,omitempty"`
	Container          *string             `json:"container,omitempty"`
	DateFormat         *string             `json:"dateFormat,omitempty"`
	PathPattern        *string             `json:"pathPattern,omitempty"`
	StorageAccounts    *[]StorageAccount   `json:"storageAccounts,omitempty"`
	TimeFormat         *string             `json:"timeFormat,omitempty"`
}

type BlobReferenceInputDataSource

type BlobReferenceInputDataSource struct {
	Properties *BlobDataSourceProperties `json:"properties,omitempty"`
}

func (BlobReferenceInputDataSource) MarshalJSON

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

type BlobStreamInputDataSource

type BlobStreamInputDataSource struct {
	Properties *BlobStreamInputDataSourceProperties `json:"properties,omitempty"`
}

func (BlobStreamInputDataSource) MarshalJSON

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

type BlobStreamInputDataSourceProperties

type BlobStreamInputDataSourceProperties struct {
	AuthenticationMode   *AuthenticationMode `json:"authenticationMode,omitempty"`
	Container            *string             `json:"container,omitempty"`
	DateFormat           *string             `json:"dateFormat,omitempty"`
	PathPattern          *string             `json:"pathPattern,omitempty"`
	SourcePartitionCount *int64              `json:"sourcePartitionCount,omitempty"`
	StorageAccounts      *[]StorageAccount   `json:"storageAccounts,omitempty"`
	TimeFormat           *string             `json:"timeFormat,omitempty"`
}

type Compression

type Compression struct {
	Type CompressionType `json:"type"`
}

type CompressionType

type CompressionType string
const (
	CompressionTypeDeflate CompressionType = "Deflate"
	CompressionTypeGZip    CompressionType = "GZip"
	CompressionTypeNone    CompressionType = "None"
)

func (*CompressionType) UnmarshalJSON added in v0.20240208.1095436

func (s *CompressionType) UnmarshalJSON(bytes []byte) error

type CreateOrReplaceOperationOptions

type CreateOrReplaceOperationOptions struct {
	IfMatch     *string
	IfNoneMatch *string
}

func DefaultCreateOrReplaceOperationOptions

func DefaultCreateOrReplaceOperationOptions() CreateOrReplaceOperationOptions

func (CreateOrReplaceOperationOptions) ToHeaders added in v0.20240208.1095436

func (CreateOrReplaceOperationOptions) ToOData added in v0.20240208.1095436

func (CreateOrReplaceOperationOptions) ToQuery added in v0.20240208.1095436

type CreateOrReplaceOperationResponse

type CreateOrReplaceOperationResponse struct {
	HttpResponse *http.Response
	OData        *odata.OData
	Model        *Input
}

type CsvSerialization

type CsvSerialization struct {
	Properties *CsvSerializationProperties `json:"properties,omitempty"`
}

func (CsvSerialization) MarshalJSON

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

type CsvSerializationProperties

type CsvSerializationProperties struct {
	Encoding       *Encoding `json:"encoding,omitempty"`
	FieldDelimiter *string   `json:"fieldDelimiter,omitempty"`
}

type DeleteOperationResponse

type DeleteOperationResponse struct {
	HttpResponse *http.Response
	OData        *odata.OData
}

type DiagnosticCondition

type DiagnosticCondition struct {
	Code    *string `json:"code,omitempty"`
	Message *string `json:"message,omitempty"`
	Since   *string `json:"since,omitempty"`
}

type Diagnostics

type Diagnostics struct {
	Conditions *[]DiagnosticCondition `json:"conditions,omitempty"`
}

type Encoding

type Encoding string
const (
	EncodingUTFEight Encoding = "UTF8"
)

func (*Encoding) UnmarshalJSON added in v0.20240208.1095436

func (s *Encoding) UnmarshalJSON(bytes []byte) error

type ErrorResponse

type ErrorResponse struct {
	Code    *string `json:"code,omitempty"`
	Message *string `json:"message,omitempty"`
}

type EventHubStreamInputDataSource

type EventHubStreamInputDataSource struct {
	Properties *EventHubStreamInputDataSourceProperties `json:"properties,omitempty"`
}

func (EventHubStreamInputDataSource) MarshalJSON

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

type EventHubStreamInputDataSourceProperties

type EventHubStreamInputDataSourceProperties struct {
	AuthenticationMode     *AuthenticationMode `json:"authenticationMode,omitempty"`
	ConsumerGroupName      *string             `json:"consumerGroupName,omitempty"`
	EventHubName           *string             `json:"eventHubName,omitempty"`
	ServiceBusNamespace    *string             `json:"serviceBusNamespace,omitempty"`
	SharedAccessPolicyKey  *string             `json:"sharedAccessPolicyKey,omitempty"`
	SharedAccessPolicyName *string             `json:"sharedAccessPolicyName,omitempty"`
}

type EventHubV2StreamInputDataSource

type EventHubV2StreamInputDataSource struct {
	Properties *EventHubStreamInputDataSourceProperties `json:"properties,omitempty"`
}

func (EventHubV2StreamInputDataSource) MarshalJSON

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

type EventSerializationType

type EventSerializationType string
const (
	EventSerializationTypeAvro    EventSerializationType = "Avro"
	EventSerializationTypeCsv     EventSerializationType = "Csv"
	EventSerializationTypeJson    EventSerializationType = "Json"
	EventSerializationTypeParquet EventSerializationType = "Parquet"
)

func (*EventSerializationType) UnmarshalJSON added in v0.20240208.1095436

func (s *EventSerializationType) UnmarshalJSON(bytes []byte) error

type FileReferenceInputDataSource

type FileReferenceInputDataSource struct {
	Properties *FileReferenceInputDataSourceProperties `json:"properties,omitempty"`
}

func (FileReferenceInputDataSource) MarshalJSON

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

type FileReferenceInputDataSourceProperties

type FileReferenceInputDataSourceProperties struct {
	Path *string `json:"path,omitempty"`
}

type GatewayMessageBusSourceProperties

type GatewayMessageBusSourceProperties struct {
	Topic *string `json:"topic,omitempty"`
}

type GatewayMessageBusStreamInputDataSource

type GatewayMessageBusStreamInputDataSource struct {
	Properties *GatewayMessageBusSourceProperties `json:"properties,omitempty"`
}

func (GatewayMessageBusStreamInputDataSource) MarshalJSON

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

type GetOperationResponse

type GetOperationResponse struct {
	HttpResponse *http.Response
	OData        *odata.OData
	Model        *Input
}

type Input

type Input struct {
	Id         *string         `json:"id,omitempty"`
	Name       *string         `json:"name,omitempty"`
	Properties InputProperties `json:"properties"`
	Type       *string         `json:"type,omitempty"`
}

func (*Input) UnmarshalJSON

func (s *Input) UnmarshalJSON(bytes []byte) error

type InputId

type InputId struct {
	SubscriptionId    string
	ResourceGroupName string
	StreamingJobName  string
	InputName         string
}

InputId is a struct representing the Resource ID for a Input

func NewInputID

func NewInputID(subscriptionId string, resourceGroupName string, streamingJobName string, inputName string) InputId

NewInputID returns a new InputId struct

func ParseInputID

func ParseInputID(input string) (*InputId, error)

ParseInputID parses 'input' into a InputId

func ParseInputIDInsensitively

func ParseInputIDInsensitively(input string) (*InputId, error)

ParseInputIDInsensitively parses 'input' case-insensitively into a InputId note: this method should only be used for API response data and not user input

func (*InputId) FromParseResult

func (id *InputId) FromParseResult(input resourceids.ParseResult) error

func (InputId) ID

func (id InputId) ID() string

ID returns the formatted Input ID

func (InputId) Segments

func (id InputId) Segments() []resourceids.Segment

Segments returns a slice of Resource ID Segments which comprise this Input ID

func (InputId) String

func (id InputId) String() string

String returns a human-readable description of this Input ID

type InputOperationPredicate

type InputOperationPredicate struct {
	Id   *string
	Name *string
	Type *string
}

func (InputOperationPredicate) Matches

func (p InputOperationPredicate) Matches(input Input) bool

type InputProperties

type InputProperties interface {
}

type InputsClient

type InputsClient struct {
	Client *resourcemanager.Client
}

func NewInputsClientWithBaseURI

func NewInputsClientWithBaseURI(sdkApi sdkEnv.Api) (*InputsClient, error)

func (InputsClient) CreateOrReplace

func (c InputsClient) CreateOrReplace(ctx context.Context, id InputId, input Input, options CreateOrReplaceOperationOptions) (result CreateOrReplaceOperationResponse, err error)

CreateOrReplace ...

func (InputsClient) Delete

func (c InputsClient) Delete(ctx context.Context, id InputId) (result DeleteOperationResponse, err error)

Delete ...

func (InputsClient) Get

func (c InputsClient) Get(ctx context.Context, id InputId) (result GetOperationResponse, err error)

Get ...

func (InputsClient) ListByStreamingJob

ListByStreamingJob ...

func (InputsClient) ListByStreamingJobComplete

ListByStreamingJobComplete retrieves all the results into a single object

func (InputsClient) ListByStreamingJobCompleteMatchingPredicate

func (c InputsClient) ListByStreamingJobCompleteMatchingPredicate(ctx context.Context, id StreamingJobId, options ListByStreamingJobOperationOptions, predicate InputOperationPredicate) (result ListByStreamingJobCompleteResult, err error)

ListByStreamingJobCompleteMatchingPredicate retrieves all the results and then applies the predicate

func (InputsClient) Update

func (c InputsClient) Update(ctx context.Context, id InputId, input Input, options UpdateOperationOptions) (result UpdateOperationResponse, err error)

Update ...

type IoTHubStreamInputDataSource

type IoTHubStreamInputDataSource struct {
	Properties *IoTHubStreamInputDataSourceProperties `json:"properties,omitempty"`
}

func (IoTHubStreamInputDataSource) MarshalJSON

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

type IoTHubStreamInputDataSourceProperties

type IoTHubStreamInputDataSourceProperties struct {
	ConsumerGroupName      *string `json:"consumerGroupName,omitempty"`
	Endpoint               *string `json:"endpoint,omitempty"`
	IotHubNamespace        *string `json:"iotHubNamespace,omitempty"`
	SharedAccessPolicyKey  *string `json:"sharedAccessPolicyKey,omitempty"`
	SharedAccessPolicyName *string `json:"sharedAccessPolicyName,omitempty"`
}

type JsonOutputSerializationFormat

type JsonOutputSerializationFormat string
const (
	JsonOutputSerializationFormatArray         JsonOutputSerializationFormat = "Array"
	JsonOutputSerializationFormatLineSeparated JsonOutputSerializationFormat = "LineSeparated"
)

func (*JsonOutputSerializationFormat) UnmarshalJSON added in v0.20240208.1095436

func (s *JsonOutputSerializationFormat) UnmarshalJSON(bytes []byte) error

type JsonSerialization

type JsonSerialization struct {
	Properties *JsonSerializationProperties `json:"properties,omitempty"`
}

func (JsonSerialization) MarshalJSON

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

type JsonSerializationProperties

type JsonSerializationProperties struct {
	Encoding *Encoding                      `json:"encoding,omitempty"`
	Format   *JsonOutputSerializationFormat `json:"format,omitempty"`
}

type ListByStreamingJobCompleteResult

type ListByStreamingJobCompleteResult struct {
	LatestHttpResponse *http.Response
	Items              []Input
}

type ListByStreamingJobOperationOptions

type ListByStreamingJobOperationOptions struct {
	Select *string
}

func DefaultListByStreamingJobOperationOptions

func DefaultListByStreamingJobOperationOptions() ListByStreamingJobOperationOptions

func (ListByStreamingJobOperationOptions) ToHeaders added in v0.20240208.1095436

func (ListByStreamingJobOperationOptions) ToOData added in v0.20240208.1095436

func (ListByStreamingJobOperationOptions) ToQuery added in v0.20240208.1095436

type ListByStreamingJobOperationResponse

type ListByStreamingJobOperationResponse struct {
	HttpResponse *http.Response
	OData        *odata.OData
	Model        *[]Input
}

type ParquetSerialization

type ParquetSerialization struct {
	Properties *interface{} `json:"properties,omitempty"`
}

func (ParquetSerialization) MarshalJSON

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

type RawInputPropertiesImpl

type RawInputPropertiesImpl struct {
	Type   string
	Values map[string]interface{}
}

RawInputPropertiesImpl is returned when the Discriminated Value doesn't match any of the defined types NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) and is used only for Deserialization (e.g. this cannot be used as a Request Payload).

type RawReferenceInputDataSourceImpl

type RawReferenceInputDataSourceImpl struct {
	Type   string
	Values map[string]interface{}
}

RawReferenceInputDataSourceImpl is returned when the Discriminated Value doesn't match any of the defined types NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) and is used only for Deserialization (e.g. this cannot be used as a Request Payload).

type RawSerializationImpl

type RawSerializationImpl struct {
	Type   string
	Values map[string]interface{}
}

RawSerializationImpl is returned when the Discriminated Value doesn't match any of the defined types NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) and is used only for Deserialization (e.g. this cannot be used as a Request Payload).

type RawStreamInputDataSourceImpl

type RawStreamInputDataSourceImpl struct {
	Type   string
	Values map[string]interface{}
}

RawStreamInputDataSourceImpl is returned when the Discriminated Value doesn't match any of the defined types NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) and is used only for Deserialization (e.g. this cannot be used as a Request Payload).

type ReferenceInputDataSource

type ReferenceInputDataSource interface {
}

type ReferenceInputProperties

type ReferenceInputProperties struct {
	Datasource ReferenceInputDataSource `json:"datasource"`

	// Fields inherited from InputProperties
	Compression   *Compression  `json:"compression,omitempty"`
	Diagnostics   *Diagnostics  `json:"diagnostics,omitempty"`
	Etag          *string       `json:"etag,omitempty"`
	PartitionKey  *string       `json:"partitionKey,omitempty"`
	Serialization Serialization `json:"serialization"`
}

func (ReferenceInputProperties) MarshalJSON

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

func (*ReferenceInputProperties) UnmarshalJSON

func (s *ReferenceInputProperties) UnmarshalJSON(bytes []byte) error

type RefreshType

type RefreshType string
const (
	RefreshTypeRefreshPeriodicallyWithDelta RefreshType = "RefreshPeriodicallyWithDelta"
	RefreshTypeRefreshPeriodicallyWithFull  RefreshType = "RefreshPeriodicallyWithFull"
	RefreshTypeStatic                       RefreshType = "Static"
)

func (*RefreshType) UnmarshalJSON added in v0.20240208.1095436

func (s *RefreshType) UnmarshalJSON(bytes []byte) error

type ResourceTestStatus

type ResourceTestStatus struct {
	Error  *ErrorResponse `json:"error,omitempty"`
	Status *string        `json:"status,omitempty"`
}

type Serialization

type Serialization interface {
}

type StorageAccount

type StorageAccount struct {
	AccountKey  *string `json:"accountKey,omitempty"`
	AccountName *string `json:"accountName,omitempty"`
}

type StreamInputDataSource

type StreamInputDataSource interface {
}

type StreamInputProperties

type StreamInputProperties struct {
	Datasource StreamInputDataSource `json:"datasource"`

	// Fields inherited from InputProperties
	Compression   *Compression  `json:"compression,omitempty"`
	Diagnostics   *Diagnostics  `json:"diagnostics,omitempty"`
	Etag          *string       `json:"etag,omitempty"`
	PartitionKey  *string       `json:"partitionKey,omitempty"`
	Serialization Serialization `json:"serialization"`
}

func (StreamInputProperties) MarshalJSON

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

func (*StreamInputProperties) UnmarshalJSON

func (s *StreamInputProperties) UnmarshalJSON(bytes []byte) error

type StreamingJobId

type StreamingJobId struct {
	SubscriptionId    string
	ResourceGroupName string
	StreamingJobName  string
}

StreamingJobId is a struct representing the Resource ID for a Streaming Job

func NewStreamingJobID

func NewStreamingJobID(subscriptionId string, resourceGroupName string, streamingJobName string) StreamingJobId

NewStreamingJobID returns a new StreamingJobId struct

func ParseStreamingJobID

func ParseStreamingJobID(input string) (*StreamingJobId, error)

ParseStreamingJobID parses 'input' into a StreamingJobId

func ParseStreamingJobIDInsensitively

func ParseStreamingJobIDInsensitively(input string) (*StreamingJobId, error)

ParseStreamingJobIDInsensitively parses 'input' case-insensitively into a StreamingJobId note: this method should only be used for API response data and not user input

func (*StreamingJobId) FromParseResult

func (id *StreamingJobId) FromParseResult(input resourceids.ParseResult) error

func (StreamingJobId) ID

func (id StreamingJobId) ID() string

ID returns the formatted Streaming Job ID

func (StreamingJobId) Segments

func (id StreamingJobId) Segments() []resourceids.Segment

Segments returns a slice of Resource ID Segments which comprise this Streaming Job ID

func (StreamingJobId) String

func (id StreamingJobId) String() string

String returns a human-readable description of this Streaming Job ID

type UpdateOperationOptions

type UpdateOperationOptions struct {
	IfMatch *string
}

func DefaultUpdateOperationOptions

func DefaultUpdateOperationOptions() UpdateOperationOptions

func (UpdateOperationOptions) ToHeaders added in v0.20240208.1095436

func (o UpdateOperationOptions) ToHeaders() *client.Headers

func (UpdateOperationOptions) ToOData added in v0.20240208.1095436

func (o UpdateOperationOptions) ToOData() *odata.Query

func (UpdateOperationOptions) ToQuery added in v0.20240208.1095436

type UpdateOperationResponse

type UpdateOperationResponse struct {
	HttpResponse *http.Response
	OData        *odata.OData
	Model        *Input
}

Jump to

Keyboard shortcuts

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