// 三青鸟SDK通信协议——接口定义

syntax = "proto3";

// 包名
package sanqingniaopb;

// 引入请求参数消息定义
import "message_params.proto";
// 引入响应参数消息定义
import "message_reply.proto";

// 生成的go文件包名
option go_package = ".;sanqingniaopb";
// 生成的C#文件命名空间
option csharp_namespace = "Sixelp.SanQingNiaoPb";
// 生成Java文件的包名
option java_multiple_files = true;
option java_package = "com.sixelp.sanqingniaopb";

// SanQingNiaoApi 三青鸟API接口
service SanQingNiaoApi {

	/******************************** 版本信息相关接口 ****************************************/

	// GetVersion 获取版本信息
	//
	// 权限：
	// 1.任意激活状态可调用
	rpc GetVersion(GetVersionParams) returns (GetVersionReply) {}

	// GetLatestVersion 获取最新版本
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc GetLatestVersion(GetLatestVersionParams) returns (GetLatestVersionReply) {}

	/******************************** 高级配置相关接口 ****************************************/

	// AdvancedConfigGet 高级配置-获取
	//
	// 权限：
	// 1.任意激活状态可调用
	// 说明：
	// 1.所有配置项均由SDK进行持久化储存，外部无需储存
	rpc AdvancedConfigGet(AdvancedConfigGetParams) returns (AdvancedConfigGetReply) {}

	// AdvancedConfigSet 高级配置-修改
	//
	// 权限：
	// 1.任意激活状态可调用
	// 说明：
	// 1.所有配置项均由SDK进行持久化储存，外部无需储存
	rpc AdvancedConfigSet(AdvancedConfigSetParams) returns (AdvancedConfigSetReply) {}

	/******************************** 相机管理相关接口 ****************************************/

	// CameraEnum 相机-枚举设备
	//
	// 权限：
	// 1.任意激活状态可调用
	rpc CameraEnum(CameraEnumParams) returns (CameraEnumReply) {}

	// CameraChange 相机-设备切换
	//
	// 权限：
	// 1.任意激活状态可调用
	rpc CameraChange(CameraChangeParams) returns (CameraChangeReply) {}

	// CameraFrame 相机-图像帧
	//
	// 权限：
	// 1.任意激活状态可调用
	rpc CameraFrame(CameraFrameParams) returns (CameraFrameReply) {}

	// CameraDetectRangeGet 相机-识别区域获取
	//
	// 权限：
	// 1.任意激活状态可调用
	rpc CameraDetectRangeGet(CameraDetectRangeGetParams) returns (CameraDetectRangeGetReply) {}

	// CameraDetectRangeSet 相机-识别区域修改
	//
	// 权限：
	// 1.任意激活状态可调用
	rpc CameraDetectRangeSet(CameraDetectRangeSetParams) returns (CameraDetectRangeSetReply) {}

	/******************************** 设备管理相关接口 ****************************************/

	// DeviceGetInfo 设备-获取信息
	//
	// 权限：
	// 1.任意激活状态可调用
	// 说明：
	// 1.状态码ErrPciNetCardDisabled(1000): 需要启用PCI网卡后重启应用
	// 2.状态码ErrNetwork(1004): 需要联网后重启应用
	// 3.状态码ErrDeviceNotActivate(1500): 需要激活或免费试用
	// 4.状态码ErrDeviceActivateExpire(1501): 测试激活码已过期，需要重新激活
	// 5.状态码ErrDeviceSystemTime(1503): 设备系统时间异常，请调整后重启应用
	rpc DeviceGetInfo(DeviceGetInfoParams) returns (DeviceGetInfoReply) {}

	// DeviceFreeTrial 设备-免费试用
	//
	// 权限：
	// 1.任意激活状态可调用
	// 2.每台设备仅有一次试用机会
	// 3.使用正式激活码激活后的设备将无法再免费试用
	// 说明：
	// 1.在版本`v1.5.0.0+`支持该接口
	rpc DeviceFreeTrial(DeviceFreeTrialParams) returns (DeviceFreeTrialReply) {}

	// DeviceActivate 设备-激活
	//
	// 权限：
	// 1.任意激活状态可调用
	rpc DeviceActivate(DeviceActivateParams) returns (DeviceActivateReply) {}

	// DeviceShopChange 设备-门店修改
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc DeviceShopChange(DeviceShopChangeParams) returns (DeviceShopChangeReply) {}

	/******************************** 智能识别相关接口 ****************************************/

	// AiPushWeight 智能识别-推送重量信息
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc AiPushWeight(AiPushWeightParams) returns (AiPushWeightReply) {}

	// AiImageDetectIgnoreSet 智能识别-图像检测过滤设置
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc AiImageDetectIgnoreSet(AiImageDetectIgnoreSetParams) returns (AiImageDetectIgnoreSetReply) {}

	// AiListenResult 智能识别-监听识别结果
	//
	// 权限：
	// 1.仅已激活状态可调用
	// 2.AiListenResult 和 AiRegisterResultCallback 接口二选一使用即可
	rpc AiListenResult(AiListenResultParams) returns (stream AiListenResultReply) {}

	// AiRegisterResultCallback 智能识别-注册识别结果回调
	//
	// 权限：
	// 1.仅已激活状态可调用
	// 2.AiListenResult 和 AiRegisterResultCallback 接口二选一使用即可
	rpc AiRegisterResultCallback(AiRegisterResultCallbackParams) returns (AiRegisterResultCallbackReply) {}

	// AiUnsafeMatching 智能识别-非安全单次AI识别
	//
	// 权限：
	// 1.仅已激活状态可调用
	// 说明：
	// 1.使用该接口需要自行实现识别触发逻辑，触发逻辑涉及场景较多，建议使用HTTP回调或gRPC长连接接口
	rpc AiUnsafeMatching(AiPushWeightParams) returns (AiListenResultReply) {}

	// AiLearning 智能识别-学习
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc AiLearning(AiLearningParams) returns (AiLearningReply) {}

	// AiFastLearning 智能识别-快速学习
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc AiFastLearning(AiFastLearningParams) returns (AiFastLearningReply) {}

	/******************************** 商品特征相关接口 ****************************************/

	// SkuFeatQueryImage 商品特征-查询已学习的图像
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc SkuFeatQueryImage(SkuFeatQueryImageParams) returns (SkuFeatQueryImageReply) {}

	// SkuFeatQuery 商品特征-查询特征信息
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc SkuFeatQuery(SkuFeatQueryParams) returns (SkuFeatQueryReply) {}

	// SkuFeatRemove 商品特征-移除指定商品的指定特征
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc SkuFeatRemove(SkuFeatRemoveParams) returns (SkuFeatRemoveReply) {}

	// SkuFeatClear 商品特征-清除指定商品的所有特征
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc SkuFeatClear(SkuFeatClearParams) returns (SkuFeatClearReply) {}

	/******************************** 学习数据相关接口 ****************************************/

	// LearnDataImport 学习数据-导入
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc LearnDataImport(LearnDataImportParams) returns (LearnDataImportReply) {}

	// LearnDataExport 学习数据-导出
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc LearnDataExport(LearnDataExportParams) returns (LearnDataExportReply) {}

	// LearnDataUpload 学习数据-上传
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc LearnDataUpload(LearnDataUploadParams) returns (LearnDataUploadReply) {}

	// LearnDataClear 学习数据-清空
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc LearnDataClear(LearnDataClearParams) returns (LearnDataClearReply) {}

	/******************************** 算法模型相关接口 ****************************************/

	// AlgoModelEnum 算法模型-枚举
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc AlgoModelEnum(AlgoModelEnumParams) returns (AlgoModelEnumReply) {}

	// AlgoModelChange 算法模型-切换
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc AlgoModelChange(AlgoModelChangeParams) returns (AlgoModelChangeReply) {}

	/******************************** 商品数据相关接口 ****************************************/

	// SkuDataImport 商品数据-导入
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc SkuDataImport(SkuDataImportParams) returns (SkuDataImportReply) {}

	// SkuDataDelete 商品数据-删除
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc SkuDataDelete(SkuDataDeleteParams) returns (SkuDataDeleteReply) {}

	// SkuDataIconMatch 商品数据-主图匹配
	//
	// 权限：
	// 1.仅已激活状态可调用
	rpc SkuDataIconMatch(SkuDataIconMatchParams) returns (SkuDataIconMatchReply) {}

	/******************************** 自动同步相关接口 ****************************************/

	// AutoSyncGetSelfInfo 自动同步-获取本机信息
	// 
	// 权限：
	// 1.仅已激活状态可调用
	rpc AutoSyncGetSelfInfo(AutoSyncGetSelfInfoParams) returns (AutoSyncGetSelfInfoReply) {}

	// AutoSyncGetGroupsInfo 自动同步-获取分组表信息
	// 
	// 权限：
	// 1.仅已激活状态可调用
	rpc AutoSyncGetGroupsInfo(AutoSyncGetGroupsInfoParams) returns (AutoSyncGetGroupsInfoReply) {}

	// AutoSyncRemoveDevice 自动同步-移除设备
	// 
	// 权限：
	// 1.仅已激活状态可调用
	rpc AutoSyncRemoveDevice(AutoSyncRemoveDeviceParams) returns (AutoSyncRemoveDeviceReply) {}

	// AutoSyncJoinGroup 自动同步-加入分组
	// 
	// 权限：
	// 1.仅已激活状态可调用
	rpc AutoSyncJoinGroup(AutoSyncJoinGroupParams) returns (AutoSyncJoinGroupReply) {}

	// AutoSyncExitGroup 自动同步-退出分组
	// 
	// 权限：
	// 1.仅已激活状态可调用
	rpc AutoSyncExitGroup(AutoSyncExitGroupParams) returns (AutoSyncExitGroupReply) {}

	// AutoSyncSetIntervalTime 自动同步-设置间隔时间
	// 
	// 权限：
	// 1.仅已激活状态可调用
	rpc AutoSyncSetIntervalTime(AutoSyncSetIntervalTimeParams) returns (AutoSyncSetIntervalTimeReply) {}

	// AutoSyncUpdateDataSyncRule 自动同步-更新数据同步规则
	// 
	// 权限：
	// 1.仅已激活状态可调用
	rpc AutoSyncUpdateDataSyncRule(AutoSyncUpdateDataSyncRuleParams) returns (AutoSyncUpdateDataSyncRuleReply) {}

	// AutoSyncCreateGroup 自动同步-创建分组
	// 
	// 权限：
	// 1.仅已激活状态可调用
	rpc AutoSyncCreateGroup(AutoSyncCreateGroupParams) returns (AutoSyncCreateGroupReply) {}

	// AutoSyncUpdateGroupName 自动同步-更新分组名称
	// 
	// 权限：
	// 1.仅已激活状态可调用
	rpc AutoSyncUpdateGroupName(AutoSyncUpdateGroupNameParams) returns (AutoSyncUpdateGroupNameReply) {}

}
