Documentation ¶
Index ¶
- Variables
- func RegisterAPIServer(s grpc.ServiceRegistrar, srv APIServer)
- type APIClient
- type APIServer
- type API_SubscribeStreamClient
- type API_SubscribeStreamServer
- type BulkPublishMessageEntry
- func (*BulkPublishMessageEntry) Descriptor() ([]byte, []int)deprecated
- func (x *BulkPublishMessageEntry) GetContentType() string
- func (x *BulkPublishMessageEntry) GetEntryId() string
- func (x *BulkPublishMessageEntry) GetEvent() []byte
- func (x *BulkPublishMessageEntry) GetMetadata() map[string]string
- func (*BulkPublishMessageEntry) ProtoMessage()
- func (x *BulkPublishMessageEntry) ProtoReflect() protoreflect.Message
- func (x *BulkPublishMessageEntry) Reset()
- func (x *BulkPublishMessageEntry) String() string
- type BulkPublishRequest
- func (*BulkPublishRequest) Descriptor() ([]byte, []int)deprecated
- func (x *BulkPublishRequest) GetEntries() []*BulkPublishMessageEntry
- func (x *BulkPublishRequest) GetMetadata() map[string]string
- func (x *BulkPublishRequest) GetPubsubName() string
- func (x *BulkPublishRequest) GetTopic() string
- func (*BulkPublishRequest) ProtoMessage()
- func (x *BulkPublishRequest) ProtoReflect() protoreflect.Message
- func (x *BulkPublishRequest) Reset()
- func (x *BulkPublishRequest) String() string
- type BulkPublishResponse
- func (*BulkPublishResponse) Descriptor() ([]byte, []int)deprecated
- func (x *BulkPublishResponse) GetFailedEntries() []*BulkPublishResponseFailedEntry
- func (*BulkPublishResponse) ProtoMessage()
- func (x *BulkPublishResponse) ProtoReflect() protoreflect.Message
- func (x *BulkPublishResponse) Reset()
- func (x *BulkPublishResponse) String() string
- type BulkPublishResponseFailedEntry
- func (*BulkPublishResponseFailedEntry) Descriptor() ([]byte, []int)deprecated
- func (x *BulkPublishResponseFailedEntry) GetEntryId() string
- func (x *BulkPublishResponseFailedEntry) GetError() string
- func (*BulkPublishResponseFailedEntry) ProtoMessage()
- func (x *BulkPublishResponseFailedEntry) ProtoReflect() protoreflect.Message
- func (x *BulkPublishResponseFailedEntry) Reset()
- func (x *BulkPublishResponseFailedEntry) String() string
- type CloudEvent
- func (*CloudEvent) Descriptor() ([]byte, []int)deprecated
- func (x *CloudEvent) GetData() []byte
- func (x *CloudEvent) GetDataContentType() string
- func (x *CloudEvent) GetExtensions() map[string]*_struct.Value
- func (x *CloudEvent) GetId() string
- func (x *CloudEvent) GetSource() string
- func (x *CloudEvent) GetSpecVersion() string
- func (x *CloudEvent) GetTimestamp() int64
- func (x *CloudEvent) GetType() string
- func (*CloudEvent) ProtoMessage()
- func (x *CloudEvent) ProtoReflect() protoreflect.Message
- func (x *CloudEvent) Reset()
- func (x *CloudEvent) String() string
- type PublishEventRequest
- func (*PublishEventRequest) Descriptor() ([]byte, []int)deprecated
- func (x *PublishEventRequest) GetContentType() string
- func (x *PublishEventRequest) GetData() []byte
- func (x *PublishEventRequest) GetMetadata() map[string]string
- func (x *PublishEventRequest) GetPubsubName() string
- func (x *PublishEventRequest) GetTopic() string
- func (*PublishEventRequest) ProtoMessage()
- func (x *PublishEventRequest) ProtoReflect() protoreflect.Message
- func (x *PublishEventRequest) Reset()
- func (x *PublishEventRequest) String() string
- type PublishEventResponse
- type SubscribeConfig
- func (*SubscribeConfig) Descriptor() ([]byte, []int)deprecated
- func (x *SubscribeConfig) GetEnableBulk() bool
- func (x *SubscribeConfig) GetMaxBulkEventAwaitMs() int32
- func (x *SubscribeConfig) GetMaxBulkEventCount() int32
- func (x *SubscribeConfig) GetMetadata() map[string]string
- func (x *SubscribeConfig) GetPubsubName() string
- func (x *SubscribeConfig) GetTopic() string
- func (*SubscribeConfig) ProtoMessage()
- func (x *SubscribeConfig) ProtoReflect() protoreflect.Message
- func (x *SubscribeConfig) Reset()
- func (x *SubscribeConfig) String() string
- type SubscribeEntry
- func (*SubscribeEntry) Descriptor() ([]byte, []int)deprecated
- func (x *SubscribeEntry) GetEvents() *CloudEvent
- func (x *SubscribeEntry) GetTopic() string
- func (*SubscribeEntry) ProtoMessage()
- func (x *SubscribeEntry) ProtoReflect() protoreflect.Message
- func (x *SubscribeEntry) Reset()
- func (x *SubscribeEntry) String() string
- type SubscribeRequest
- func (*SubscribeRequest) Descriptor() ([]byte, []int)deprecated
- func (x *SubscribeRequest) GetConfigs() []*SubscribeConfig
- func (*SubscribeRequest) ProtoMessage()
- func (x *SubscribeRequest) ProtoReflect() protoreflect.Message
- func (x *SubscribeRequest) Reset()
- func (x *SubscribeRequest) String() string
- type SubscribeResponse
- func (*SubscribeResponse) Descriptor() ([]byte, []int)deprecated
- func (x *SubscribeResponse) GetEntries() []*SubscribeEntry
- func (*SubscribeResponse) ProtoMessage()
- func (x *SubscribeResponse) ProtoReflect() protoreflect.Message
- func (x *SubscribeResponse) Reset()
- func (x *SubscribeResponse) String() string
- type UnimplementedAPIServer
- type UnsafeAPIServer
Constants ¶
This section is empty.
Variables ¶
var API_ServiceDesc = grpc.ServiceDesc{ ServiceName: "api.v1.API", HandlerType: (*APIServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "PublishEvent", Handler: _API_PublishEvent_Handler, }, }, Streams: []grpc.StreamDesc{ { StreamName: "SubscribeStream", Handler: _API_SubscribeStream_Handler, ServerStreams: true, }, }, Metadata: "api/v1/api.proto", }
API_ServiceDesc is the grpc.ServiceDesc for API service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)
var File_api_v1_api_proto protoreflect.FileDescriptor
var File_api_v1_cloudevent_proto protoreflect.FileDescriptor
var File_api_v1_pubsub_proto protoreflect.FileDescriptor
Functions ¶
func RegisterAPIServer ¶
func RegisterAPIServer(s grpc.ServiceRegistrar, srv APIServer)
Types ¶
type APIClient ¶
type APIClient interface { PublishEvent(ctx context.Context, in *PublishEventRequest, opts ...grpc.CallOption) (*PublishEventResponse, error) SubscribeStream(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (API_SubscribeStreamClient, error) }
APIClient is the client API for API service.
For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
func NewAPIClient ¶
func NewAPIClient(cc grpc.ClientConnInterface) APIClient
type APIServer ¶
type APIServer interface { PublishEvent(context.Context, *PublishEventRequest) (*PublishEventResponse, error) SubscribeStream(*SubscribeRequest, API_SubscribeStreamServer) error // contains filtered or unexported methods }
APIServer is the server API for API service. All implementations must embed UnimplementedAPIServer for forward compatibility
type API_SubscribeStreamClient ¶
type API_SubscribeStreamClient interface { Recv() (*SubscribeResponse, error) grpc.ClientStream }
type API_SubscribeStreamServer ¶
type API_SubscribeStreamServer interface { Send(*SubscribeResponse) error grpc.ServerStream }
type BulkPublishMessageEntry ¶
type BulkPublishMessageEntry struct { EntryId string `protobuf:"bytes,1,opt,name=entry_id,json=entryId,proto3" json:"entry_id,omitempty"` Event []byte `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` ContentType string `protobuf:"bytes,3,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` Metadata map[string]string `` /* 157-byte string literal not displayed */ // contains filtered or unexported fields }
func (*BulkPublishMessageEntry) Descriptor
deprecated
func (*BulkPublishMessageEntry) Descriptor() ([]byte, []int)
Deprecated: Use BulkPublishMessageEntry.ProtoReflect.Descriptor instead.
func (*BulkPublishMessageEntry) GetContentType ¶
func (x *BulkPublishMessageEntry) GetContentType() string
func (*BulkPublishMessageEntry) GetEntryId ¶
func (x *BulkPublishMessageEntry) GetEntryId() string
func (*BulkPublishMessageEntry) GetEvent ¶
func (x *BulkPublishMessageEntry) GetEvent() []byte
func (*BulkPublishMessageEntry) GetMetadata ¶
func (x *BulkPublishMessageEntry) GetMetadata() map[string]string
func (*BulkPublishMessageEntry) ProtoMessage ¶
func (*BulkPublishMessageEntry) ProtoMessage()
func (*BulkPublishMessageEntry) ProtoReflect ¶
func (x *BulkPublishMessageEntry) ProtoReflect() protoreflect.Message
func (*BulkPublishMessageEntry) Reset ¶
func (x *BulkPublishMessageEntry) Reset()
func (*BulkPublishMessageEntry) String ¶
func (x *BulkPublishMessageEntry) String() string
type BulkPublishRequest ¶
type BulkPublishRequest struct { Entries []*BulkPublishMessageEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` PubsubName string `protobuf:"bytes,2,opt,name=pubsub_name,json=pubsubName,proto3" json:"pubsub_name,omitempty"` Topic string `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` Metadata map[string]string `` /* 157-byte string literal not displayed */ // contains filtered or unexported fields }
func (*BulkPublishRequest) Descriptor
deprecated
func (*BulkPublishRequest) Descriptor() ([]byte, []int)
Deprecated: Use BulkPublishRequest.ProtoReflect.Descriptor instead.
func (*BulkPublishRequest) GetEntries ¶
func (x *BulkPublishRequest) GetEntries() []*BulkPublishMessageEntry
func (*BulkPublishRequest) GetMetadata ¶
func (x *BulkPublishRequest) GetMetadata() map[string]string
func (*BulkPublishRequest) GetPubsubName ¶
func (x *BulkPublishRequest) GetPubsubName() string
func (*BulkPublishRequest) GetTopic ¶
func (x *BulkPublishRequest) GetTopic() string
func (*BulkPublishRequest) ProtoMessage ¶
func (*BulkPublishRequest) ProtoMessage()
func (*BulkPublishRequest) ProtoReflect ¶
func (x *BulkPublishRequest) ProtoReflect() protoreflect.Message
func (*BulkPublishRequest) Reset ¶
func (x *BulkPublishRequest) Reset()
func (*BulkPublishRequest) String ¶
func (x *BulkPublishRequest) String() string
type BulkPublishResponse ¶
type BulkPublishResponse struct { FailedEntries []*BulkPublishResponseFailedEntry `protobuf:"bytes,1,rep,name=failed_entries,json=failedEntries,proto3" json:"failed_entries,omitempty"` // contains filtered or unexported fields }
func (*BulkPublishResponse) Descriptor
deprecated
func (*BulkPublishResponse) Descriptor() ([]byte, []int)
Deprecated: Use BulkPublishResponse.ProtoReflect.Descriptor instead.
func (*BulkPublishResponse) GetFailedEntries ¶
func (x *BulkPublishResponse) GetFailedEntries() []*BulkPublishResponseFailedEntry
func (*BulkPublishResponse) ProtoMessage ¶
func (*BulkPublishResponse) ProtoMessage()
func (*BulkPublishResponse) ProtoReflect ¶
func (x *BulkPublishResponse) ProtoReflect() protoreflect.Message
func (*BulkPublishResponse) Reset ¶
func (x *BulkPublishResponse) Reset()
func (*BulkPublishResponse) String ¶
func (x *BulkPublishResponse) String() string
type BulkPublishResponseFailedEntry ¶
type BulkPublishResponseFailedEntry struct { EntryId string `protobuf:"bytes,1,opt,name=entry_id,json=entryId,proto3" json:"entry_id,omitempty"` Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` // contains filtered or unexported fields }
func (*BulkPublishResponseFailedEntry) Descriptor
deprecated
func (*BulkPublishResponseFailedEntry) Descriptor() ([]byte, []int)
Deprecated: Use BulkPublishResponseFailedEntry.ProtoReflect.Descriptor instead.
func (*BulkPublishResponseFailedEntry) GetEntryId ¶
func (x *BulkPublishResponseFailedEntry) GetEntryId() string
func (*BulkPublishResponseFailedEntry) GetError ¶
func (x *BulkPublishResponseFailedEntry) GetError() string
func (*BulkPublishResponseFailedEntry) ProtoMessage ¶
func (*BulkPublishResponseFailedEntry) ProtoMessage()
func (*BulkPublishResponseFailedEntry) ProtoReflect ¶
func (x *BulkPublishResponseFailedEntry) ProtoReflect() protoreflect.Message
func (*BulkPublishResponseFailedEntry) Reset ¶
func (x *BulkPublishResponseFailedEntry) Reset()
func (*BulkPublishResponseFailedEntry) String ¶
func (x *BulkPublishResponseFailedEntry) String() string
type CloudEvent ¶
type CloudEvent struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` Source string `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` SpecVersion string `protobuf:"bytes,4,opt,name=spec_version,json=specVersion,proto3" json:"spec_version,omitempty"` Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` DataContentType string `protobuf:"bytes,6,opt,name=data_content_type,json=dataContentType,proto3" json:"data_content_type,omitempty"` Timestamp int64 `protobuf:"varint,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Extensions map[string]*_struct.Value `` /* 161-byte string literal not displayed */ // contains filtered or unexported fields }
func (*CloudEvent) Descriptor
deprecated
func (*CloudEvent) Descriptor() ([]byte, []int)
Deprecated: Use CloudEvent.ProtoReflect.Descriptor instead.
func (*CloudEvent) GetData ¶
func (x *CloudEvent) GetData() []byte
func (*CloudEvent) GetDataContentType ¶
func (x *CloudEvent) GetDataContentType() string
func (*CloudEvent) GetExtensions ¶
func (x *CloudEvent) GetExtensions() map[string]*_struct.Value
func (*CloudEvent) GetId ¶
func (x *CloudEvent) GetId() string
func (*CloudEvent) GetSource ¶
func (x *CloudEvent) GetSource() string
func (*CloudEvent) GetSpecVersion ¶
func (x *CloudEvent) GetSpecVersion() string
func (*CloudEvent) GetTimestamp ¶
func (x *CloudEvent) GetTimestamp() int64
func (*CloudEvent) GetType ¶
func (x *CloudEvent) GetType() string
func (*CloudEvent) ProtoMessage ¶
func (*CloudEvent) ProtoMessage()
func (*CloudEvent) ProtoReflect ¶
func (x *CloudEvent) ProtoReflect() protoreflect.Message
func (*CloudEvent) Reset ¶
func (x *CloudEvent) Reset()
func (*CloudEvent) String ¶
func (x *CloudEvent) String() string
type PublishEventRequest ¶
type PublishEventRequest struct { Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` PubsubName string `protobuf:"bytes,2,opt,name=pubsub_name,json=pubsubName,proto3" json:"pubsub_name,omitempty"` Topic string `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` Metadata map[string]string `` /* 157-byte string literal not displayed */ ContentType string `protobuf:"bytes,5,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` // contains filtered or unexported fields }
func (*PublishEventRequest) Descriptor
deprecated
func (*PublishEventRequest) Descriptor() ([]byte, []int)
Deprecated: Use PublishEventRequest.ProtoReflect.Descriptor instead.
func (*PublishEventRequest) GetContentType ¶
func (x *PublishEventRequest) GetContentType() string
func (*PublishEventRequest) GetData ¶
func (x *PublishEventRequest) GetData() []byte
func (*PublishEventRequest) GetMetadata ¶
func (x *PublishEventRequest) GetMetadata() map[string]string
func (*PublishEventRequest) GetPubsubName ¶
func (x *PublishEventRequest) GetPubsubName() string
func (*PublishEventRequest) GetTopic ¶
func (x *PublishEventRequest) GetTopic() string
func (*PublishEventRequest) ProtoMessage ¶
func (*PublishEventRequest) ProtoMessage()
func (*PublishEventRequest) ProtoReflect ¶
func (x *PublishEventRequest) ProtoReflect() protoreflect.Message
func (*PublishEventRequest) Reset ¶
func (x *PublishEventRequest) Reset()
func (*PublishEventRequest) String ¶
func (x *PublishEventRequest) String() string
type PublishEventResponse ¶
type PublishEventResponse struct {
// contains filtered or unexported fields
}
func (*PublishEventResponse) Descriptor
deprecated
func (*PublishEventResponse) Descriptor() ([]byte, []int)
Deprecated: Use PublishEventResponse.ProtoReflect.Descriptor instead.
func (*PublishEventResponse) ProtoMessage ¶
func (*PublishEventResponse) ProtoMessage()
func (*PublishEventResponse) ProtoReflect ¶
func (x *PublishEventResponse) ProtoReflect() protoreflect.Message
func (*PublishEventResponse) Reset ¶
func (x *PublishEventResponse) Reset()
func (*PublishEventResponse) String ¶
func (x *PublishEventResponse) String() string
type SubscribeConfig ¶
type SubscribeConfig struct { PubsubName string `protobuf:"bytes,1,opt,name=pubsub_name,json=pubsubName,proto3" json:"pubsub_name,omitempty"` Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` EnableBulk bool `protobuf:"varint,3,opt,name=enable_bulk,json=enableBulk,proto3" json:"enable_bulk,omitempty"` MaxBulkEventCount int32 `protobuf:"varint,4,opt,name=max_bulk_event_count,json=maxBulkEventCount,proto3" json:"max_bulk_event_count,omitempty"` MaxBulkEventAwaitMs int32 `protobuf:"varint,5,opt,name=max_bulk_event_await_ms,json=maxBulkEventAwaitMs,proto3" json:"max_bulk_event_await_ms,omitempty"` //ms Metadata map[string]string `` /* 157-byte string literal not displayed */ // contains filtered or unexported fields }
func (*SubscribeConfig) Descriptor
deprecated
func (*SubscribeConfig) Descriptor() ([]byte, []int)
Deprecated: Use SubscribeConfig.ProtoReflect.Descriptor instead.
func (*SubscribeConfig) GetEnableBulk ¶
func (x *SubscribeConfig) GetEnableBulk() bool
func (*SubscribeConfig) GetMaxBulkEventAwaitMs ¶
func (x *SubscribeConfig) GetMaxBulkEventAwaitMs() int32
func (*SubscribeConfig) GetMaxBulkEventCount ¶
func (x *SubscribeConfig) GetMaxBulkEventCount() int32
func (*SubscribeConfig) GetMetadata ¶
func (x *SubscribeConfig) GetMetadata() map[string]string
func (*SubscribeConfig) GetPubsubName ¶
func (x *SubscribeConfig) GetPubsubName() string
func (*SubscribeConfig) GetTopic ¶
func (x *SubscribeConfig) GetTopic() string
func (*SubscribeConfig) ProtoMessage ¶
func (*SubscribeConfig) ProtoMessage()
func (*SubscribeConfig) ProtoReflect ¶
func (x *SubscribeConfig) ProtoReflect() protoreflect.Message
func (*SubscribeConfig) Reset ¶
func (x *SubscribeConfig) Reset()
func (*SubscribeConfig) String ¶
func (x *SubscribeConfig) String() string
type SubscribeEntry ¶
type SubscribeEntry struct { Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` Events *CloudEvent `protobuf:"bytes,2,opt,name=events,proto3" json:"events,omitempty"` // contains filtered or unexported fields }
func (*SubscribeEntry) Descriptor
deprecated
func (*SubscribeEntry) Descriptor() ([]byte, []int)
Deprecated: Use SubscribeEntry.ProtoReflect.Descriptor instead.
func (*SubscribeEntry) GetEvents ¶
func (x *SubscribeEntry) GetEvents() *CloudEvent
func (*SubscribeEntry) GetTopic ¶
func (x *SubscribeEntry) GetTopic() string
func (*SubscribeEntry) ProtoMessage ¶
func (*SubscribeEntry) ProtoMessage()
func (*SubscribeEntry) ProtoReflect ¶
func (x *SubscribeEntry) ProtoReflect() protoreflect.Message
func (*SubscribeEntry) Reset ¶
func (x *SubscribeEntry) Reset()
func (*SubscribeEntry) String ¶
func (x *SubscribeEntry) String() string
type SubscribeRequest ¶
type SubscribeRequest struct { Configs []*SubscribeConfig `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs,omitempty"` // contains filtered or unexported fields }
func (*SubscribeRequest) Descriptor
deprecated
func (*SubscribeRequest) Descriptor() ([]byte, []int)
Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead.
func (*SubscribeRequest) GetConfigs ¶
func (x *SubscribeRequest) GetConfigs() []*SubscribeConfig
func (*SubscribeRequest) ProtoMessage ¶
func (*SubscribeRequest) ProtoMessage()
func (*SubscribeRequest) ProtoReflect ¶
func (x *SubscribeRequest) ProtoReflect() protoreflect.Message
func (*SubscribeRequest) Reset ¶
func (x *SubscribeRequest) Reset()
func (*SubscribeRequest) String ¶
func (x *SubscribeRequest) String() string
type SubscribeResponse ¶
type SubscribeResponse struct { Entries []*SubscribeEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` // contains filtered or unexported fields }
func (*SubscribeResponse) Descriptor
deprecated
func (*SubscribeResponse) Descriptor() ([]byte, []int)
Deprecated: Use SubscribeResponse.ProtoReflect.Descriptor instead.
func (*SubscribeResponse) GetEntries ¶
func (x *SubscribeResponse) GetEntries() []*SubscribeEntry
func (*SubscribeResponse) ProtoMessage ¶
func (*SubscribeResponse) ProtoMessage()
func (*SubscribeResponse) ProtoReflect ¶
func (x *SubscribeResponse) ProtoReflect() protoreflect.Message
func (*SubscribeResponse) Reset ¶
func (x *SubscribeResponse) Reset()
func (*SubscribeResponse) String ¶
func (x *SubscribeResponse) String() string
type UnimplementedAPIServer ¶
type UnimplementedAPIServer struct { }
UnimplementedAPIServer must be embedded to have forward compatible implementations.
func (UnimplementedAPIServer) PublishEvent ¶
func (UnimplementedAPIServer) PublishEvent(context.Context, *PublishEventRequest) (*PublishEventResponse, error)
func (UnimplementedAPIServer) SubscribeStream ¶
func (UnimplementedAPIServer) SubscribeStream(*SubscribeRequest, API_SubscribeStreamServer) error
type UnsafeAPIServer ¶
type UnsafeAPIServer interface {
// contains filtered or unexported methods
}
UnsafeAPIServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to APIServer will result in compilation errors.