operations

package
v2.0.2 Latest Latest
Warning

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

Go to latest
Published: Aug 15, 2025 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SupportedOptionRetries              = "retries"
	SupportedOptionTimeout              = "timeout"
	SupportedOptionAcceptHeaderOverride = "acceptHeaderOverride"
	SupportedOptionURLOverride          = "urlOverride"
)

Variables

View Source
var ErrUnsupportedOption = errors.New("unsupported option")

Functions

This section is empty.

Types

type AddPermissionsResponse

type AddPermissionsResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Permissions added successfully. Returns all permissions currently assigned to the key.
	V2KeysAddPermissionsResponseBody *components.V2KeysAddPermissionsResponseBody
}

func (*AddPermissionsResponse) GetHTTPMeta

func (*AddPermissionsResponse) GetV2KeysAddPermissionsResponseBody

func (o *AddPermissionsResponse) GetV2KeysAddPermissionsResponseBody() *components.V2KeysAddPermissionsResponseBody

type AddRolesResponse

type AddRolesResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Roles added successfully. Returns all roles currently assigned to the key.
	V2KeysAddRolesResponseBody *components.V2KeysAddRolesResponseBody
}

func (*AddRolesResponse) GetHTTPMeta

func (o *AddRolesResponse) GetHTTPMeta() components.HTTPMetadata

func (*AddRolesResponse) GetV2KeysAddRolesResponseBody

func (o *AddRolesResponse) GetV2KeysAddRolesResponseBody() *components.V2KeysAddRolesResponseBody

type CreateAPIResponse

type CreateAPIResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// API namespace created successfully. The response contains the unique API ID for referencing this namespace in key operations.
	//
	V2ApisCreateAPIResponseBody *components.V2ApisCreateAPIResponseBody
}

func (*CreateAPIResponse) GetHTTPMeta

func (o *CreateAPIResponse) GetHTTPMeta() components.HTTPMetadata

func (*CreateAPIResponse) GetV2ApisCreateAPIResponseBody

func (o *CreateAPIResponse) GetV2ApisCreateAPIResponseBody() *components.V2ApisCreateAPIResponseBody

type CreateKeyResponse

type CreateKeyResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Successfully created a new API key. The response includes both the keyId (for reference in your system) and the full key string. IMPORTANT: This is the only time the complete key is available - it cannot be retrieved later. You must securely provide this key to your end user immediately.
	V2KeysCreateKeyResponseBody *components.V2KeysCreateKeyResponseBody
}

func (*CreateKeyResponse) GetHTTPMeta

func (o *CreateKeyResponse) GetHTTPMeta() components.HTTPMetadata

func (*CreateKeyResponse) GetV2KeysCreateKeyResponseBody

func (o *CreateKeyResponse) GetV2KeysCreateKeyResponseBody() *components.V2KeysCreateKeyResponseBody

type CreatePermissionResponse

type CreatePermissionResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Permission created successfully
	V2PermissionsCreatePermissionResponseBody *components.V2PermissionsCreatePermissionResponseBody
}

func (*CreatePermissionResponse) GetHTTPMeta

func (*CreatePermissionResponse) GetV2PermissionsCreatePermissionResponseBody

func (o *CreatePermissionResponse) GetV2PermissionsCreatePermissionResponseBody() *components.V2PermissionsCreatePermissionResponseBody

type CreateRoleResponse

type CreateRoleResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Role created successfully
	V2PermissionsCreateRoleResponseBody *components.V2PermissionsCreateRoleResponseBody
}

func (*CreateRoleResponse) GetHTTPMeta

func (o *CreateRoleResponse) GetHTTPMeta() components.HTTPMetadata

func (*CreateRoleResponse) GetV2PermissionsCreateRoleResponseBody

func (o *CreateRoleResponse) GetV2PermissionsCreateRoleResponseBody() *components.V2PermissionsCreateRoleResponseBody

type DeleteAPIResponse

type DeleteAPIResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// API namespace deleted successfully. All associated keys are immediately invalidated and will fail verification with `code=NOT_FOUND`.
	V2ApisDeleteAPIResponseBody *components.V2ApisDeleteAPIResponseBody
}

func (*DeleteAPIResponse) GetHTTPMeta

func (o *DeleteAPIResponse) GetHTTPMeta() components.HTTPMetadata

func (*DeleteAPIResponse) GetV2ApisDeleteAPIResponseBody

func (o *DeleteAPIResponse) GetV2ApisDeleteAPIResponseBody() *components.V2ApisDeleteAPIResponseBody

type DeleteKeyResponse

type DeleteKeyResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Key deleted successfully. Verification fails immediately with up to 30-second edge propagation.
	//
	V2KeysDeleteKeyResponseBody *components.V2KeysDeleteKeyResponseBody
}

func (*DeleteKeyResponse) GetHTTPMeta

func (o *DeleteKeyResponse) GetHTTPMeta() components.HTTPMetadata

func (*DeleteKeyResponse) GetV2KeysDeleteKeyResponseBody

func (o *DeleteKeyResponse) GetV2KeysDeleteKeyResponseBody() *components.V2KeysDeleteKeyResponseBody

type DeletePermissionResponse

type DeletePermissionResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Permission deleted successfully
	V2PermissionsDeletePermissionResponseBody *components.V2PermissionsDeletePermissionResponseBody
}

func (*DeletePermissionResponse) GetHTTPMeta

func (*DeletePermissionResponse) GetV2PermissionsDeletePermissionResponseBody

func (o *DeletePermissionResponse) GetV2PermissionsDeletePermissionResponseBody() *components.V2PermissionsDeletePermissionResponseBody

type DeleteRoleResponse

type DeleteRoleResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Role deleted successfully
	V2PermissionsDeleteRoleResponseBody *components.V2PermissionsDeleteRoleResponseBody
}

func (*DeleteRoleResponse) GetHTTPMeta

func (o *DeleteRoleResponse) GetHTTPMeta() components.HTTPMetadata

func (*DeleteRoleResponse) GetV2PermissionsDeleteRoleResponseBody

func (o *DeleteRoleResponse) GetV2PermissionsDeleteRoleResponseBody() *components.V2PermissionsDeleteRoleResponseBody

type GetAPIResponse

type GetAPIResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// API information retrieved successfully. Contains the unique API ID and human-readable name.
	V2ApisGetAPIResponseBody *components.V2ApisGetAPIResponseBody
}

func (*GetAPIResponse) GetHTTPMeta

func (o *GetAPIResponse) GetHTTPMeta() components.HTTPMetadata

func (*GetAPIResponse) GetV2ApisGetAPIResponseBody

func (o *GetAPIResponse) GetV2ApisGetAPIResponseBody() *components.V2ApisGetAPIResponseBody

type GetKeyResponse

type GetKeyResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Successfully retrieved key information. When `decrypt: true`, includes plaintext key value for recoverable keys.
	//
	V2KeysGetKeyResponseBody *components.V2KeysGetKeyResponseBody
}

func (*GetKeyResponse) GetHTTPMeta

func (o *GetKeyResponse) GetHTTPMeta() components.HTTPMetadata

func (*GetKeyResponse) GetV2KeysGetKeyResponseBody

func (o *GetKeyResponse) GetV2KeysGetKeyResponseBody() *components.V2KeysGetKeyResponseBody

type GetPermissionResponse

type GetPermissionResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Permission retrieved successfully
	V2PermissionsGetPermissionResponseBody *components.V2PermissionsGetPermissionResponseBody
}

func (*GetPermissionResponse) GetHTTPMeta

func (*GetPermissionResponse) GetV2PermissionsGetPermissionResponseBody

func (o *GetPermissionResponse) GetV2PermissionsGetPermissionResponseBody() *components.V2PermissionsGetPermissionResponseBody

type GetRoleResponse

type GetRoleResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Role retrieved successfully
	V2PermissionsGetRoleResponseBody *components.V2PermissionsGetRoleResponseBody
}

func (*GetRoleResponse) GetHTTPMeta

func (o *GetRoleResponse) GetHTTPMeta() components.HTTPMetadata

func (*GetRoleResponse) GetV2PermissionsGetRoleResponseBody

func (o *GetRoleResponse) GetV2PermissionsGetRoleResponseBody() *components.V2PermissionsGetRoleResponseBody

type IdentitiesCreateIdentityResponse

type IdentitiesCreateIdentityResponse struct {
	HTTPMeta                               components.HTTPMetadata `json:"-"`
	V2IdentitiesCreateIdentityResponseBody *components.V2IdentitiesCreateIdentityResponseBody
}

func (*IdentitiesCreateIdentityResponse) GetHTTPMeta

func (*IdentitiesCreateIdentityResponse) GetV2IdentitiesCreateIdentityResponseBody

func (o *IdentitiesCreateIdentityResponse) GetV2IdentitiesCreateIdentityResponseBody() *components.V2IdentitiesCreateIdentityResponseBody

type IdentitiesGetIdentityResponse

type IdentitiesGetIdentityResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Successfully retrieved the identity information
	V2IdentitiesGetIdentityResponseBody *components.V2IdentitiesGetIdentityResponseBody
}

func (*IdentitiesGetIdentityResponse) GetHTTPMeta

func (*IdentitiesGetIdentityResponse) GetV2IdentitiesGetIdentityResponseBody

func (o *IdentitiesGetIdentityResponse) GetV2IdentitiesGetIdentityResponseBody() *components.V2IdentitiesGetIdentityResponseBody

type IdentitiesListIdentitiesResponse

type IdentitiesListIdentitiesResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Successfully retrieved the list of identities
	V2IdentitiesListIdentitiesResponseBody *components.V2IdentitiesListIdentitiesResponseBody

	Next func() (*IdentitiesListIdentitiesResponse, error)
}

func (*IdentitiesListIdentitiesResponse) GetHTTPMeta

func (*IdentitiesListIdentitiesResponse) GetV2IdentitiesListIdentitiesResponseBody

func (o *IdentitiesListIdentitiesResponse) GetV2IdentitiesListIdentitiesResponseBody() *components.V2IdentitiesListIdentitiesResponseBody

type ListKeysResponse

type ListKeysResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Successfully retrieved paginated keys. Use the pagination cursor for additional results when `hasMore: true`.
	//
	V2ApisListKeysResponseBody *components.V2ApisListKeysResponseBody
}

func (*ListKeysResponse) GetHTTPMeta

func (o *ListKeysResponse) GetHTTPMeta() components.HTTPMetadata

func (*ListKeysResponse) GetV2ApisListKeysResponseBody

func (o *ListKeysResponse) GetV2ApisListKeysResponseBody() *components.V2ApisListKeysResponseBody

type ListPermissionsResponse

type ListPermissionsResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Permissions retrieved successfully
	V2PermissionsListPermissionsResponseBody *components.V2PermissionsListPermissionsResponseBody
}

func (*ListPermissionsResponse) GetHTTPMeta

func (*ListPermissionsResponse) GetV2PermissionsListPermissionsResponseBody

func (o *ListPermissionsResponse) GetV2PermissionsListPermissionsResponseBody() *components.V2PermissionsListPermissionsResponseBody

type ListRolesResponse

type ListRolesResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Roles retrieved successfully
	V2PermissionsListRolesResponseBody *components.V2PermissionsListRolesResponseBody
}

func (*ListRolesResponse) GetHTTPMeta

func (o *ListRolesResponse) GetHTTPMeta() components.HTTPMetadata

func (*ListRolesResponse) GetV2PermissionsListRolesResponseBody

func (o *ListRolesResponse) GetV2PermissionsListRolesResponseBody() *components.V2PermissionsListRolesResponseBody

type Option

type Option func(*Options, ...string) error

func WithOperationTimeout

func WithOperationTimeout(timeout time.Duration) Option

WithOperationTimeout allows setting the request timeout applied for an operation.

func WithRetries

func WithRetries(config retry.Config) Option

WithRetries allows customizing the default retry configuration.

func WithServerURL

func WithServerURL(serverURL string) Option

WithServerURL allows providing an alternative server URL.

func WithSetHeaders

func WithSetHeaders(hdrs map[string]string) Option

WithSetHeaders takes a map of headers that will applied to a request. If the request contains headers that are in the map then they will be overwritten.

func WithTemplatedServerURL

func WithTemplatedServerURL(serverURL string, params map[string]string) Option

WithTemplatedServerURL allows providing an alternative server URL with templated parameters.

func WithURLOverride

func WithURLOverride(urlOverride string) Option

WithURLOverride allows overriding the URL.

type Options

type Options struct {
	ServerURL   *string
	Retries     *retry.Config
	Timeout     *time.Duration
	URLOverride *string
	SetHeaders  map[string]string
}

type RatelimitDeleteOverrideResponse

type RatelimitDeleteOverrideResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Override successfully deleted. Affected identifiers now use default limits.
	V2RatelimitDeleteOverrideResponseBody *components.V2RatelimitDeleteOverrideResponseBody
}

func (*RatelimitDeleteOverrideResponse) GetHTTPMeta

func (*RatelimitDeleteOverrideResponse) GetV2RatelimitDeleteOverrideResponseBody

func (o *RatelimitDeleteOverrideResponse) GetV2RatelimitDeleteOverrideResponseBody() *components.V2RatelimitDeleteOverrideResponseBody

type RatelimitGetOverrideResponse

type RatelimitGetOverrideResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Override found and returned successfully.
	V2RatelimitGetOverrideResponseBody *components.V2RatelimitGetOverrideResponseBody
}

func (*RatelimitGetOverrideResponse) GetHTTPMeta

func (*RatelimitGetOverrideResponse) GetV2RatelimitGetOverrideResponseBody

func (o *RatelimitGetOverrideResponse) GetV2RatelimitGetOverrideResponseBody() *components.V2RatelimitGetOverrideResponseBody

type RatelimitLimitResponse

type RatelimitLimitResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Rate limit check completed. Always returns HTTP 200 - check the `success` field to determine if the request is allowed.
	//
	V2RatelimitLimitResponseBody *components.V2RatelimitLimitResponseBody
}

func (*RatelimitLimitResponse) GetHTTPMeta

func (*RatelimitLimitResponse) GetV2RatelimitLimitResponseBody

func (o *RatelimitLimitResponse) GetV2RatelimitLimitResponseBody() *components.V2RatelimitLimitResponseBody

type RatelimitListOverridesResponse

type RatelimitListOverridesResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Overrides retrieved successfully. Includes pagination metadata if more results are available.
	V2RatelimitListOverridesResponseBody *components.V2RatelimitListOverridesResponseBody
}

func (*RatelimitListOverridesResponse) GetHTTPMeta

func (*RatelimitListOverridesResponse) GetV2RatelimitListOverridesResponseBody

func (o *RatelimitListOverridesResponse) GetV2RatelimitListOverridesResponseBody() *components.V2RatelimitListOverridesResponseBody

type RatelimitSetOverrideResponse

type RatelimitSetOverrideResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Override successfully created or updated and is now active.
	V2RatelimitSetOverrideResponseBody *components.V2RatelimitSetOverrideResponseBody
}

func (*RatelimitSetOverrideResponse) GetHTTPMeta

func (*RatelimitSetOverrideResponse) GetV2RatelimitSetOverrideResponseBody

func (o *RatelimitSetOverrideResponse) GetV2RatelimitSetOverrideResponseBody() *components.V2RatelimitSetOverrideResponseBody

type RemovePermissionsResponse

type RemovePermissionsResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Permissions removed successfully. Returns all permissions currently assigned to the key.
	V2KeysRemovePermissionsResponseBody *components.V2KeysRemovePermissionsResponseBody
}

func (*RemovePermissionsResponse) GetHTTPMeta

func (*RemovePermissionsResponse) GetV2KeysRemovePermissionsResponseBody

func (o *RemovePermissionsResponse) GetV2KeysRemovePermissionsResponseBody() *components.V2KeysRemovePermissionsResponseBody

type RemoveRolesResponse

type RemoveRolesResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Roles removed successfully. Returns all roles currently assigned to the key.
	V2KeysRemoveRolesResponseBody *components.V2KeysRemoveRolesResponseBody
}

func (*RemoveRolesResponse) GetHTTPMeta

func (o *RemoveRolesResponse) GetHTTPMeta() components.HTTPMetadata

func (*RemoveRolesResponse) GetV2KeysRemoveRolesResponseBody

func (o *RemoveRolesResponse) GetV2KeysRemoveRolesResponseBody() *components.V2KeysRemoveRolesResponseBody

type RerollKeyResponse added in v2.0.2

type RerollKeyResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Key rerolled successfully.
	V2KeysRerollKeyResponseBody *components.V2KeysRerollKeyResponseBody
}

func (*RerollKeyResponse) GetHTTPMeta added in v2.0.2

func (o *RerollKeyResponse) GetHTTPMeta() components.HTTPMetadata

func (*RerollKeyResponse) GetV2KeysRerollKeyResponseBody added in v2.0.2

func (o *RerollKeyResponse) GetV2KeysRerollKeyResponseBody() *components.V2KeysRerollKeyResponseBody

type SetPermissionsResponse

type SetPermissionsResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Permissions set successfully. Returns all permissions currently assigned to the key.
	V2KeysSetPermissionsResponseBody *components.V2KeysSetPermissionsResponseBody
}

func (*SetPermissionsResponse) GetHTTPMeta

func (*SetPermissionsResponse) GetV2KeysSetPermissionsResponseBody

func (o *SetPermissionsResponse) GetV2KeysSetPermissionsResponseBody() *components.V2KeysSetPermissionsResponseBody

type SetRolesResponse

type SetRolesResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Roles set successfully. Returns all roles currently assigned to the key.
	V2KeysSetRolesResponseBody *components.V2KeysSetRolesResponseBody
}

func (*SetRolesResponse) GetHTTPMeta

func (o *SetRolesResponse) GetHTTPMeta() components.HTTPMetadata

func (*SetRolesResponse) GetV2KeysSetRolesResponseBody

func (o *SetRolesResponse) GetV2KeysSetRolesResponseBody() *components.V2KeysSetRolesResponseBody

type UpdateCreditsResponse

type UpdateCreditsResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Credits updated successfully. Response includes updated remaining credits and refill settings.
	//
	V2KeysUpdateCreditsResponseBody *components.V2KeysUpdateCreditsResponseBody
}

func (*UpdateCreditsResponse) GetHTTPMeta

func (*UpdateCreditsResponse) GetV2KeysUpdateCreditsResponseBody

func (o *UpdateCreditsResponse) GetV2KeysUpdateCreditsResponseBody() *components.V2KeysUpdateCreditsResponseBody

type UpdateKeyResponse

type UpdateKeyResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Key updated successfully. Changes take effect immediately with up to 30-second edge propagation.
	//
	V2KeysUpdateKeyResponseBody *components.V2KeysUpdateKeyResponseBody
}

func (*UpdateKeyResponse) GetHTTPMeta

func (o *UpdateKeyResponse) GetHTTPMeta() components.HTTPMetadata

func (*UpdateKeyResponse) GetV2KeysUpdateKeyResponseBody

func (o *UpdateKeyResponse) GetV2KeysUpdateKeyResponseBody() *components.V2KeysUpdateKeyResponseBody

type V2IdentitiesDeleteIdentityResponse

type V2IdentitiesDeleteIdentityResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Identity successfully deleted
	V2IdentitiesDeleteIdentityResponseBody *components.V2IdentitiesDeleteIdentityResponseBody
}

func (*V2IdentitiesDeleteIdentityResponse) GetHTTPMeta

func (*V2IdentitiesDeleteIdentityResponse) GetV2IdentitiesDeleteIdentityResponseBody

func (o *V2IdentitiesDeleteIdentityResponse) GetV2IdentitiesDeleteIdentityResponseBody() *components.V2IdentitiesDeleteIdentityResponseBody

type V2IdentitiesUpdateIdentityResponse

type V2IdentitiesUpdateIdentityResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Identity successfully updated
	V2IdentitiesUpdateIdentityResponseBody *components.V2IdentitiesUpdateIdentityResponseBody
}

func (*V2IdentitiesUpdateIdentityResponse) GetHTTPMeta

func (*V2IdentitiesUpdateIdentityResponse) GetV2IdentitiesUpdateIdentityResponseBody

func (o *V2IdentitiesUpdateIdentityResponse) GetV2IdentitiesUpdateIdentityResponseBody() *components.V2IdentitiesUpdateIdentityResponseBody

type VerifyKeyResponse

type VerifyKeyResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Key verification process completed. This endpoint always returns HTTP 200 regardless of whether the key passed or failed verification. You must check the `valid` field in the response data to determine the actual verification result.
	//
	// When verification succeeds, the response includes comprehensive information about the key including its current status, remaining credits, expiration time, associated permissions and roles, metadata, and any rate limiting information. This data enables your application to make informed authorization decisions and provide appropriate user experiences.
	//
	// When verification fails, the response indicates the specific reason through the `code` field while setting `valid` to false. The failure codes help you handle different scenarios appropriately, such as directing users to renew expired keys, upgrade for more credits, or contact support for disabled keys.
	//
	// The response also includes identity information when the key is associated with an identity, providing additional context about the key holder and any identity-specific rate limits or metadata that may apply to the verification.
	//
	V2KeysVerifyKeyResponseBody *components.V2KeysVerifyKeyResponseBody
}

func (*VerifyKeyResponse) GetHTTPMeta

func (o *VerifyKeyResponse) GetHTTPMeta() components.HTTPMetadata

func (*VerifyKeyResponse) GetV2KeysVerifyKeyResponseBody

func (o *VerifyKeyResponse) GetV2KeysVerifyKeyResponseBody() *components.V2KeysVerifyKeyResponseBody

type WhoamiResponse

type WhoamiResponse struct {
	HTTPMeta components.HTTPMetadata `json:"-"`
	// Successfully retrieved key information.
	//
	V2KeysWhoamiResponseBody *components.V2KeysWhoamiResponseBody
}

func (*WhoamiResponse) GetHTTPMeta

func (o *WhoamiResponse) GetHTTPMeta() components.HTTPMetadata

func (*WhoamiResponse) GetV2KeysWhoamiResponseBody

func (o *WhoamiResponse) GetV2KeysWhoamiResponseBody() *components.V2KeysWhoamiResponseBody

Jump to

Keyboard shortcuts

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