svcv1alpha1connect

package
v0.2.0-rc.1 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	// KargoServiceGetVersionInfoProcedure is the fully-qualified name of the KargoService's
	// GetVersionInfo RPC.
	KargoServiceGetVersionInfoProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/GetVersionInfo"
	// KargoServiceGetConfigProcedure is the fully-qualified name of the KargoService's GetConfig RPC.
	KargoServiceGetConfigProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/GetConfig"
	// KargoServiceGetPublicConfigProcedure is the fully-qualified name of the KargoService's
	// GetPublicConfig RPC.
	KargoServiceGetPublicConfigProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/GetPublicConfig"
	// KargoServiceAdminLoginProcedure is the fully-qualified name of the KargoService's AdminLogin RPC.
	KargoServiceAdminLoginProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/AdminLogin"
	// KargoServiceCreateResourceProcedure is the fully-qualified name of the KargoService's
	// CreateResource RPC.
	KargoServiceCreateResourceProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/CreateResource"
	// KargoServiceCreateOrUpdateResourceProcedure is the fully-qualified name of the KargoService's
	// CreateOrUpdateResource RPC.
	KargoServiceCreateOrUpdateResourceProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/CreateOrUpdateResource"
	// KargoServiceUpdateResourceProcedure is the fully-qualified name of the KargoService's
	// UpdateResource RPC.
	KargoServiceUpdateResourceProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/UpdateResource"
	// KargoServiceDeleteResourceProcedure is the fully-qualified name of the KargoService's
	// DeleteResource RPC.
	KargoServiceDeleteResourceProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/DeleteResource"
	// KargoServiceCreateStageProcedure is the fully-qualified name of the KargoService's CreateStage
	// RPC.
	KargoServiceCreateStageProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/CreateStage"
	// KargoServiceListStagesProcedure is the fully-qualified name of the KargoService's ListStages RPC.
	KargoServiceListStagesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListStages"
	// KargoServiceGetStageProcedure is the fully-qualified name of the KargoService's GetStage RPC.
	KargoServiceGetStageProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/GetStage"
	// KargoServiceWatchStagesProcedure is the fully-qualified name of the KargoService's WatchStages
	// RPC.
	KargoServiceWatchStagesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/WatchStages"
	// KargoServiceUpdateStageProcedure is the fully-qualified name of the KargoService's UpdateStage
	// RPC.
	KargoServiceUpdateStageProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/UpdateStage"
	// KargoServiceDeleteStageProcedure is the fully-qualified name of the KargoService's DeleteStage
	// RPC.
	KargoServiceDeleteStageProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/DeleteStage"
	// KargoServicePromoteStageProcedure is the fully-qualified name of the KargoService's PromoteStage
	// RPC.
	KargoServicePromoteStageProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/PromoteStage"
	// KargoServicePromoteSubscribersProcedure is the fully-qualified name of the KargoService's
	// PromoteSubscribers RPC.
	KargoServicePromoteSubscribersProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/PromoteSubscribers"
	// KargoServiceRefreshStageProcedure is the fully-qualified name of the KargoService's RefreshStage
	// RPC.
	KargoServiceRefreshStageProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/RefreshStage"
	// KargoServiceListPromotionsProcedure is the fully-qualified name of the KargoService's
	// ListPromotions RPC.
	KargoServiceListPromotionsProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListPromotions"
	// KargoServiceWatchPromotionsProcedure is the fully-qualified name of the KargoService's
	// WatchPromotions RPC.
	KargoServiceWatchPromotionsProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/WatchPromotions"
	// KargoServiceGetPromotionProcedure is the fully-qualified name of the KargoService's GetPromotion
	// RPC.
	KargoServiceGetPromotionProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/GetPromotion"
	// KargoServiceWatchPromotionProcedure is the fully-qualified name of the KargoService's
	// WatchPromotion RPC.
	KargoServiceWatchPromotionProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/WatchPromotion"
	// KargoServiceSetAutoPromotionForStageProcedure is the fully-qualified name of the KargoService's
	// SetAutoPromotionForStage RPC.
	KargoServiceSetAutoPromotionForStageProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/SetAutoPromotionForStage"
	// KargoServiceCreatePromotionPolicyProcedure is the fully-qualified name of the KargoService's
	// CreatePromotionPolicy RPC.
	KargoServiceCreatePromotionPolicyProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/CreatePromotionPolicy"
	// KargoServiceListPromotionPoliciesProcedure is the fully-qualified name of the KargoService's
	// ListPromotionPolicies RPC.
	KargoServiceListPromotionPoliciesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListPromotionPolicies"
	// KargoServiceGetPromotionPolicyProcedure is the fully-qualified name of the KargoService's
	// GetPromotionPolicy RPC.
	KargoServiceGetPromotionPolicyProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/GetPromotionPolicy"
	// KargoServiceUpdatePromotionPolicyProcedure is the fully-qualified name of the KargoService's
	// UpdatePromotionPolicy RPC.
	KargoServiceUpdatePromotionPolicyProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/UpdatePromotionPolicy"
	// KargoServiceDeletePromotionPolicyProcedure is the fully-qualified name of the KargoService's
	// DeletePromotionPolicy RPC.
	KargoServiceDeletePromotionPolicyProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/DeletePromotionPolicy"
	// KargoServiceCreateProjectProcedure is the fully-qualified name of the KargoService's
	// CreateProject RPC.
	KargoServiceCreateProjectProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/CreateProject"
	// KargoServiceListProjectsProcedure is the fully-qualified name of the KargoService's ListProjects
	// RPC.
	KargoServiceListProjectsProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListProjects"
	// KargoServiceDeleteProjectProcedure is the fully-qualified name of the KargoService's
	// DeleteProject RPC.
	KargoServiceDeleteProjectProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/DeleteProject"
	// KargoServiceQueryFreightProcedure is the fully-qualified name of the KargoService's QueryFreight
	// RPC.
	KargoServiceQueryFreightProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/QueryFreight"
	// KargoServiceListWarehousesProcedure is the fully-qualified name of the KargoService's
	// ListWarehouses RPC.
	KargoServiceListWarehousesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListWarehouses"
	// KargoServiceGetWarehouseProcedure is the fully-qualified name of the KargoService's GetWarehouse
	// RPC.
	KargoServiceGetWarehouseProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/GetWarehouse"
	// KargoServiceCreateWarehouseProcedure is the fully-qualified name of the KargoService's
	// CreateWarehouse RPC.
	KargoServiceCreateWarehouseProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/CreateWarehouse"
	// KargoServiceUpdateWarehouseProcedure is the fully-qualified name of the KargoService's
	// UpdateWarehouse RPC.
	KargoServiceUpdateWarehouseProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/UpdateWarehouse"
	// KargoServiceDeleteWarehouseProcedure is the fully-qualified name of the KargoService's
	// DeleteWarehouse RPC.
	KargoServiceDeleteWarehouseProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/DeleteWarehouse"
	// KargoServiceRefreshWarehouseProcedure is the fully-qualified name of the KargoService's
	// RefreshWarehouse RPC.
	KargoServiceRefreshWarehouseProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/RefreshWarehouse"
)

These constants are the fully-qualified names of the RPCs defined in this package. They're exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route.

Note that these are different from the fully-qualified method names used by google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to reflection-formatted method names, remove the leading slash and convert the remaining slash to a period.

View Source
const (
	// KargoServiceName is the fully-qualified name of the KargoService service.
	KargoServiceName = "akuity.io.kargo.service.v1alpha1.KargoService"
)

Variables

This section is empty.

Functions

func NewKargoServiceHandler

func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOption) (string, http.Handler)

NewKargoServiceHandler builds an HTTP handler from the service implementation. It returns the path on which to mount the handler and the handler itself.

By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf and JSON codecs. They also support gzip compression.

Types

type KargoServiceClient

type KargoServiceClient interface {
	GetVersionInfo(context.Context, *connect.Request[v1alpha1.GetVersionInfoRequest]) (*connect.Response[v1alpha1.GetVersionInfoResponse], error)
	GetConfig(context.Context, *connect.Request[v1alpha1.GetConfigRequest]) (*connect.Response[v1alpha1.GetConfigResponse], error)
	GetPublicConfig(context.Context, *connect.Request[v1alpha1.GetPublicConfigRequest]) (*connect.Response[v1alpha1.GetPublicConfigResponse], error)
	AdminLogin(context.Context, *connect.Request[v1alpha1.AdminLoginRequest]) (*connect.Response[v1alpha1.AdminLoginResponse], error)
	// TODO(devholic): Add ApplyResource API
	// rpc ApplyResource(ApplyResourceRequest) returns (ApplyResourceRequest);
	CreateResource(context.Context, *connect.Request[v1alpha1.CreateResourceRequest]) (*connect.Response[v1alpha1.CreateResourceResponse], error)
	CreateOrUpdateResource(context.Context, *connect.Request[v1alpha1.CreateOrUpdateResourceRequest]) (*connect.Response[v1alpha1.CreateOrUpdateResourceResponse], error)
	UpdateResource(context.Context, *connect.Request[v1alpha1.UpdateResourceRequest]) (*connect.Response[v1alpha1.UpdateResourceResponse], error)
	DeleteResource(context.Context, *connect.Request[v1alpha1.DeleteResourceRequest]) (*connect.Response[v1alpha1.DeleteResourceResponse], error)
	CreateStage(context.Context, *connect.Request[v1alpha1.CreateStageRequest]) (*connect.Response[v1alpha1.CreateStageResponse], error)
	ListStages(context.Context, *connect.Request[v1alpha1.ListStagesRequest]) (*connect.Response[v1alpha1.ListStagesResponse], error)
	GetStage(context.Context, *connect.Request[v1alpha1.GetStageRequest]) (*connect.Response[v1alpha1.GetStageResponse], error)
	WatchStages(context.Context, *connect.Request[v1alpha1.WatchStagesRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchStagesResponse], error)
	UpdateStage(context.Context, *connect.Request[v1alpha1.UpdateStageRequest]) (*connect.Response[v1alpha1.UpdateStageResponse], error)
	DeleteStage(context.Context, *connect.Request[v1alpha1.DeleteStageRequest]) (*connect.Response[v1alpha1.DeleteStageResponse], error)
	PromoteStage(context.Context, *connect.Request[v1alpha1.PromoteStageRequest]) (*connect.Response[v1alpha1.PromoteStageResponse], error)
	PromoteSubscribers(context.Context, *connect.Request[v1alpha1.PromoteSubscribersRequest]) (*connect.Response[v1alpha1.PromoteSubscribersResponse], error)
	RefreshStage(context.Context, *connect.Request[v1alpha1.RefreshStageRequest]) (*connect.Response[v1alpha1.RefreshStageResponse], error)
	// Promotion APIs
	ListPromotions(context.Context, *connect.Request[v1alpha1.ListPromotionsRequest]) (*connect.Response[v1alpha1.ListPromotionsResponse], error)
	WatchPromotions(context.Context, *connect.Request[v1alpha1.WatchPromotionsRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchPromotionsResponse], error)
	GetPromotion(context.Context, *connect.Request[v1alpha1.GetPromotionRequest]) (*connect.Response[v1alpha1.GetPromotionResponse], error)
	WatchPromotion(context.Context, *connect.Request[v1alpha1.WatchPromotionRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchPromotionResponse], error)
	SetAutoPromotionForStage(context.Context, *connect.Request[v1alpha1.SetAutoPromotionForStageRequest]) (*connect.Response[v1alpha1.SetAutoPromotionForStageResponse], error)
	CreatePromotionPolicy(context.Context, *connect.Request[v1alpha1.CreatePromotionPolicyRequest]) (*connect.Response[v1alpha1.CreatePromotionPolicyResponse], error)
	ListPromotionPolicies(context.Context, *connect.Request[v1alpha1.ListPromotionPoliciesRequest]) (*connect.Response[v1alpha1.ListPromotionPoliciesResponse], error)
	GetPromotionPolicy(context.Context, *connect.Request[v1alpha1.GetPromotionPolicyRequest]) (*connect.Response[v1alpha1.GetPromotionPolicyResponse], error)
	UpdatePromotionPolicy(context.Context, *connect.Request[v1alpha1.UpdatePromotionPolicyRequest]) (*connect.Response[v1alpha1.UpdatePromotionPolicyResponse], error)
	DeletePromotionPolicy(context.Context, *connect.Request[v1alpha1.DeletePromotionPolicyRequest]) (*connect.Response[v1alpha1.DeletePromotionPolicyResponse], error)
	CreateProject(context.Context, *connect.Request[v1alpha1.CreateProjectRequest]) (*connect.Response[v1alpha1.CreateProjectResponse], error)
	ListProjects(context.Context, *connect.Request[v1alpha1.ListProjectsRequest]) (*connect.Response[v1alpha1.ListProjectsResponse], error)
	DeleteProject(context.Context, *connect.Request[v1alpha1.DeleteProjectRequest]) (*connect.Response[v1alpha1.DeleteProjectResponse], error)
	QueryFreight(context.Context, *connect.Request[v1alpha1.QueryFreightRequest]) (*connect.Response[v1alpha1.QueryFreightResponse], error)
	ListWarehouses(context.Context, *connect.Request[v1alpha1.ListWarehousesRequest]) (*connect.Response[v1alpha1.ListWarehousesResponse], error)
	GetWarehouse(context.Context, *connect.Request[v1alpha1.GetWarehouseRequest]) (*connect.Response[v1alpha1.GetWarehouseResponse], error)
	CreateWarehouse(context.Context, *connect.Request[v1alpha1.CreateWarehouseRequest]) (*connect.Response[v1alpha1.CreateWarehouseResponse], error)
	UpdateWarehouse(context.Context, *connect.Request[v1alpha1.UpdateWarehouseRequest]) (*connect.Response[v1alpha1.UpdateWarehouseResponse], error)
	DeleteWarehouse(context.Context, *connect.Request[v1alpha1.DeleteWarehouseRequest]) (*connect.Response[v1alpha1.DeleteWarehouseResponse], error)
	RefreshWarehouse(context.Context, *connect.Request[v1alpha1.RefreshWarehouseRequest]) (*connect.Response[v1alpha1.RefreshWarehouseResponse], error)
}

KargoServiceClient is a client for the akuity.io.kargo.service.v1alpha1.KargoService service.

func NewKargoServiceClient

func NewKargoServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) KargoServiceClient

NewKargoServiceClient constructs a client for the akuity.io.kargo.service.v1alpha1.KargoService service. By default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or connect.WithGRPCWeb() options.

The URL supplied here should be the base URL for the Connect or gRPC server (for example, http://api.acme.com or https://acme.com/grpc).

type KargoServiceHandler

type KargoServiceHandler interface {
	GetVersionInfo(context.Context, *connect.Request[v1alpha1.GetVersionInfoRequest]) (*connect.Response[v1alpha1.GetVersionInfoResponse], error)
	GetConfig(context.Context, *connect.Request[v1alpha1.GetConfigRequest]) (*connect.Response[v1alpha1.GetConfigResponse], error)
	GetPublicConfig(context.Context, *connect.Request[v1alpha1.GetPublicConfigRequest]) (*connect.Response[v1alpha1.GetPublicConfigResponse], error)
	AdminLogin(context.Context, *connect.Request[v1alpha1.AdminLoginRequest]) (*connect.Response[v1alpha1.AdminLoginResponse], error)
	// TODO(devholic): Add ApplyResource API
	// rpc ApplyResource(ApplyResourceRequest) returns (ApplyResourceRequest);
	CreateResource(context.Context, *connect.Request[v1alpha1.CreateResourceRequest]) (*connect.Response[v1alpha1.CreateResourceResponse], error)
	CreateOrUpdateResource(context.Context, *connect.Request[v1alpha1.CreateOrUpdateResourceRequest]) (*connect.Response[v1alpha1.CreateOrUpdateResourceResponse], error)
	UpdateResource(context.Context, *connect.Request[v1alpha1.UpdateResourceRequest]) (*connect.Response[v1alpha1.UpdateResourceResponse], error)
	DeleteResource(context.Context, *connect.Request[v1alpha1.DeleteResourceRequest]) (*connect.Response[v1alpha1.DeleteResourceResponse], error)
	CreateStage(context.Context, *connect.Request[v1alpha1.CreateStageRequest]) (*connect.Response[v1alpha1.CreateStageResponse], error)
	ListStages(context.Context, *connect.Request[v1alpha1.ListStagesRequest]) (*connect.Response[v1alpha1.ListStagesResponse], error)
	GetStage(context.Context, *connect.Request[v1alpha1.GetStageRequest]) (*connect.Response[v1alpha1.GetStageResponse], error)
	WatchStages(context.Context, *connect.Request[v1alpha1.WatchStagesRequest], *connect.ServerStream[v1alpha1.WatchStagesResponse]) error
	UpdateStage(context.Context, *connect.Request[v1alpha1.UpdateStageRequest]) (*connect.Response[v1alpha1.UpdateStageResponse], error)
	DeleteStage(context.Context, *connect.Request[v1alpha1.DeleteStageRequest]) (*connect.Response[v1alpha1.DeleteStageResponse], error)
	PromoteStage(context.Context, *connect.Request[v1alpha1.PromoteStageRequest]) (*connect.Response[v1alpha1.PromoteStageResponse], error)
	PromoteSubscribers(context.Context, *connect.Request[v1alpha1.PromoteSubscribersRequest]) (*connect.Response[v1alpha1.PromoteSubscribersResponse], error)
	RefreshStage(context.Context, *connect.Request[v1alpha1.RefreshStageRequest]) (*connect.Response[v1alpha1.RefreshStageResponse], error)
	// Promotion APIs
	ListPromotions(context.Context, *connect.Request[v1alpha1.ListPromotionsRequest]) (*connect.Response[v1alpha1.ListPromotionsResponse], error)
	WatchPromotions(context.Context, *connect.Request[v1alpha1.WatchPromotionsRequest], *connect.ServerStream[v1alpha1.WatchPromotionsResponse]) error
	GetPromotion(context.Context, *connect.Request[v1alpha1.GetPromotionRequest]) (*connect.Response[v1alpha1.GetPromotionResponse], error)
	WatchPromotion(context.Context, *connect.Request[v1alpha1.WatchPromotionRequest], *connect.ServerStream[v1alpha1.WatchPromotionResponse]) error
	SetAutoPromotionForStage(context.Context, *connect.Request[v1alpha1.SetAutoPromotionForStageRequest]) (*connect.Response[v1alpha1.SetAutoPromotionForStageResponse], error)
	CreatePromotionPolicy(context.Context, *connect.Request[v1alpha1.CreatePromotionPolicyRequest]) (*connect.Response[v1alpha1.CreatePromotionPolicyResponse], error)
	ListPromotionPolicies(context.Context, *connect.Request[v1alpha1.ListPromotionPoliciesRequest]) (*connect.Response[v1alpha1.ListPromotionPoliciesResponse], error)
	GetPromotionPolicy(context.Context, *connect.Request[v1alpha1.GetPromotionPolicyRequest]) (*connect.Response[v1alpha1.GetPromotionPolicyResponse], error)
	UpdatePromotionPolicy(context.Context, *connect.Request[v1alpha1.UpdatePromotionPolicyRequest]) (*connect.Response[v1alpha1.UpdatePromotionPolicyResponse], error)
	DeletePromotionPolicy(context.Context, *connect.Request[v1alpha1.DeletePromotionPolicyRequest]) (*connect.Response[v1alpha1.DeletePromotionPolicyResponse], error)
	CreateProject(context.Context, *connect.Request[v1alpha1.CreateProjectRequest]) (*connect.Response[v1alpha1.CreateProjectResponse], error)
	ListProjects(context.Context, *connect.Request[v1alpha1.ListProjectsRequest]) (*connect.Response[v1alpha1.ListProjectsResponse], error)
	DeleteProject(context.Context, *connect.Request[v1alpha1.DeleteProjectRequest]) (*connect.Response[v1alpha1.DeleteProjectResponse], error)
	QueryFreight(context.Context, *connect.Request[v1alpha1.QueryFreightRequest]) (*connect.Response[v1alpha1.QueryFreightResponse], error)
	ListWarehouses(context.Context, *connect.Request[v1alpha1.ListWarehousesRequest]) (*connect.Response[v1alpha1.ListWarehousesResponse], error)
	GetWarehouse(context.Context, *connect.Request[v1alpha1.GetWarehouseRequest]) (*connect.Response[v1alpha1.GetWarehouseResponse], error)
	CreateWarehouse(context.Context, *connect.Request[v1alpha1.CreateWarehouseRequest]) (*connect.Response[v1alpha1.CreateWarehouseResponse], error)
	UpdateWarehouse(context.Context, *connect.Request[v1alpha1.UpdateWarehouseRequest]) (*connect.Response[v1alpha1.UpdateWarehouseResponse], error)
	DeleteWarehouse(context.Context, *connect.Request[v1alpha1.DeleteWarehouseRequest]) (*connect.Response[v1alpha1.DeleteWarehouseResponse], error)
	RefreshWarehouse(context.Context, *connect.Request[v1alpha1.RefreshWarehouseRequest]) (*connect.Response[v1alpha1.RefreshWarehouseResponse], error)
}

KargoServiceHandler is an implementation of the akuity.io.kargo.service.v1alpha1.KargoService service.

type UnimplementedKargoServiceHandler

type UnimplementedKargoServiceHandler struct{}

UnimplementedKargoServiceHandler returns CodeUnimplemented from all methods.

func (UnimplementedKargoServiceHandler) GetWarehouse added in v0.2.0

Jump to

Keyboard shortcuts

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