餐饮团购-查询商品模版
收藏
我的收藏用于创建商品前查询商品模板信息。
使用限制
无
接口说明
查询商品模板,创建商品时的属性列表需与该接口保持一致,否则无法识别。根据商品类目及商品类型获取商品模版信息。
基本信息
HTTP URL | ||||
HTTP Method | GET | |||
申请权限 | 商品查询 | |||
权限要求 |
|
请求头
参数 | 描述 | 必须 |
Content-Type | application/json | 是 |
access-token | 是 |
请求参数
Query 请求
参数名称 | 参数类型 | 是否必传 | 参数描述 |
product_type | string | TRUE | 商品类型 |
category_id | string | TRUE | 三级类目id, 可通过类目查询接口获取 |
请求示例
https://open.douyin.com/goodlife/v1/goods/template/get/?product_type=1&category_id=1001001
响应参数
参数名称 | 参数类型 | 是否必传 | 参数描述 |
| struct | TRUE | 响应信息 |
| int | TRUE | 错误码 |
| string | TRUE | 错误描述 |
| list | TRUE | 商品属性列表 |
| string | TRUE | 属性描述 |
| bool | TRUE | 是否列表 |
| bool | TRUE | 是否必填 |
| string | TRUE | 属性key |
| string | TRUE | 属性名称 |
| string | TRUE | 属性类型 |
| string | TRUE | 属性样例 |
| list | TRUE | SKU属性列表 |
| string | TRUE | 属性描述 |
| bool | TRUE | 是否列表 |
| bool | TRUE | 是否必填 |
| string | TRUE | 属性key |
| string | TRUE | 属性名称 |
| string | TRUE | 属性类型 |
| string | TRUE | 属性样例 |
| struct | TRUE | 响应额外信息 |
| int | TRUE | 错误码 |
| string | TRUE | (弃用)错误描述 |
| int | TRUE | (弃用)子错误码 |
| string | TRUE | (弃用)子错误描述 |
| int | TRUE | (弃用)时间戳 |
| string | TRUE | 请求日志ID |
响应示例
正常示例
{ "data": { "product_attrs": [ { "desc": "", "is_multi": false, "is_required": true, "key": "appointment", "name": "预约信息", "value_demo": "", "value_type": "APPOINTMENT" }, { "desc": "", "is_multi": false, "is_required": true, "key": "auto_renew", "name": "是否开启自动延期", "value_demo": "", "value_type": "BOOL" }, { "desc": "", "is_multi": false, "is_required": true, "key": "bring_out_meal", "name": "是否可以外带餐食", "value_demo": "", "value_type": "BOOL" }, { "desc": "", "is_multi": false, "is_required": true, "key": "can_no_use_date", "name": "不可使用日期", "value_demo": "", "value_type": "CAN_NO_USE_DATE" }, { "desc": "", "is_multi": false, "is_required": false, "key": "customer_reserved_info", "name": "留资规则", "value_demo": "", "value_type": "CUSTOMER_RESERVED_INFO" }, { "desc": "", "is_multi": true, "is_required": false, "key": "description_rich_text", "name": "其他说明信息", "value_demo": "", "value_type": "NOTE" }, { "desc": "", "is_multi": true, "is_required": false, "key": "detail_image_list", "name": "长图", "value_demo": "", "value_type": "IMAGE" }, { "desc": "", "is_multi": true, "is_required": false, "key": "dishes_image_list", "name": "菜品图", "value_demo": "", "value_type": "IMAGE" }, { "desc": "", "is_multi": false, "is_required": false, "key": "EntryType", "name": "入口类型", "value_demo": "1:H5 2:小程序 3:抖音 4:lynx", "value_type": "INT64" }, { "desc": "", "is_multi": true, "is_required": false, "key": "environment_image_list", "name": "环境图", "value_demo": "", "value_type": "IMAGE" }, { "desc": "", "is_multi": false, "is_required": true, "key": "free_pack", "name": "是否可以打包", "value_demo": "", "value_type": "BOOL" }, { "desc": "", "is_multi": true, "is_required": false, "key": "FrontCategoryTag", "name": "前台品类标签", "value_demo": "", "value_type": "STRING" }, { "desc": "", "is_multi": true, "is_required": true, "key": "image_list", "name": "封面图", "value_demo": "", "value_type": "IMAGE" }, { "desc": "", "is_multi": false, "is_required": false, "key": "IndustryType", "name": "商品行业类型", "value_demo": "", "value_type": "STRING" }, { "desc": "", "is_multi": false, "is_required": false, "key": "IsConfirmImme", "name": "是否立即确认", "value_demo": "", "value_type": "BOOL" }, { "desc": "", "is_multi": false, "is_required": false, "key": "MpResourceID", "name": "小程序资源id", "value_demo": "", "value_type": "STRING" }, { "desc": "", "is_multi": false, "is_required": false, "key": "MpSettleType", "name": "小程序分账类型", "value_demo": "1-包销 2-代销", "value_type": "INT64" }, { "desc": "", "is_multi": true, "is_required": true, "key": "Notification", "name": "使用规则", "value_demo": "", "value_type": "NOTIFICATION" }, { "desc": "", "is_multi": false, "is_required": true, "key": "private_room", "name": "是否可以使用包间", "value_demo": "", "value_type": "BOOL" }, { "desc": "", "is_multi": false, "is_required": false, "key": "real_name_info", "name": "实名信息", "value_demo": "", "value_type": "REAL_NAME_INFO" }, { "desc": "", "is_multi": false, "is_required": false, "key": "RecommendWord", "name": "推荐语", "value_demo": "", "value_type": "STRING" }, { "desc": "", "is_multi": false, "is_required": true, "key": "rec_person_num", "name": "建议使用人数", "value_demo": "", "value_type": "INT64" }, { "desc": "", "is_multi": false, "is_required": true, "key": "rec_person_num_max", "name": "最多使用人数", "value_demo": "", "value_type": "INT64" }, { "desc": "", "is_multi": false, "is_required": true, "key": "RefundPolicy", "name": "退款政策", "value_demo": "1-允许退款 2-不可退款 3-有条件退", "value_type": "INT64" }, { "desc": "", "is_multi": false, "is_required": true, "key": "refund_need_merchant_confirm", "name": "退款是否需商家审核", "value_demo": "", "value_type": "BOOL" }, { "desc": "", "is_multi": false, "is_required": true, "key": "release_source", "name": "商品发布渠道", "value_demo": "MERCHANT = 1 // 商家; BD = 2 // BD; FACILITATOR = 3 // 服务商;", "value_type": "INT64" }, { "desc": "", "is_multi": false, "is_required": true, "key": "show_channel", "name": "投放渠道", "value_demo": "1-不限制 2-仅直播间可见", "value_type": "INT64" }, { "desc": "", "is_multi": false, "is_required": false, "key": "SortWeight", "name": "排序权重", "value_demo": "", "value_type": "INT64" }, { "desc": "", "is_multi": false, "is_required": true, "key": "superimposed_discounts", "name": "可以享受店内其他优惠", "value_demo": "", "value_type": "BOOL" }, { "desc": "", "is_multi": false, "is_required": false, "key": "TagList", "name": "标签列表", "value_demo": "", "value_type": "STRING" }, { "desc": "", "is_multi": false, "is_required": false, "key": "trade_url", "name": "小程序提单页跳转", "value_demo": "", "value_type": "STRING" }, { "desc": "", "is_multi": false, "is_required": true, "key": "use_date", "name": "使用日期", "value_demo": "", "value_type": "USE_DATE" }, { "desc": "", "is_multi": false, "is_required": true, "key": "use_time", "name": "使用时间", "value_demo": "", "value_type": "USE_TIME" }, { "desc": "", "is_multi": false, "is_required": false, "key": "SubTitle", "name": "副标题", "value_demo": "可选标题:过期退;随时退;x日内可退;免预约;提前x日预约;多个副标题以|(英文半角)分隔,不要有空格", "value_type": "STRING" } ], "sku_attrs": [ { "desc": "", "is_multi": false, "is_required": true, "key": "code_source_type", "name": "券码生成方式", "value_demo": "1-抖音码 2-三方码 3-预导码", "value_type": "INT64" }, { "desc": "", "is_multi": true, "is_required": true, "key": "commodity", "name": "菜品搭配", "value_demo": "", "value_type": "COMMODITY" }, { "desc": "", "is_multi": false, "is_required": true, "key": "limit_rule", "name": "限制购买", "value_demo": "", "value_type": "LIMIT_RULE" }, { "desc": "", "is_multi": false, "is_required": false, "key": "market_price", "name": "市场价", "value_demo": "", "value_type": "INT64" }, { "desc": "", "is_multi": false, "is_required": true, "key": "settle_type", "name": "收款方式", "value_demo": "1-总店结算 2-分店结算", "value_type": "INT64" }, { "desc": "", "is_multi": false, "is_required": true, "key": "use_type", "name": "团购使用方式", "value_demo": "1-到店核销", "value_type": "INT64" } ], "error_code": 0, "description": "" }, "extra": { "log_id": "202205121547310102120681610A00B9B0", "now": 1657777319, "error_code": 0, "decription": "", "sub_error_code": 0, "sub_decription": "" } }
错误码
HTTP 状态码 | 错误码 | 错误消息 | 排查建议 |
200 | 2190002 | access_token无效 | 调用接口重新生成access_token |
200 | 2190004 | 应用申请接口权限 | |
200 | 2190008 | access_token过期,请刷新或重新授权 | 规范token刷新机制,检查是否有测试环境在同步刷新token |
200 | 2119001 | 参数不合法 | 更换参数 |
200 | 2119002 | 系统繁忙,请稍候再试 | 重试 |
200 | 2119003 | 请求太过频繁,请稍后再试 | 重试 |
200 | 2119005 | 应用未获商家授权 | 联系合作商家在商家后台发起授权,并在服务商后台同意授权 |
200 | 3000001 | 根据实际业务错误返回 | 对照接口文档规范参数并重试 |
200 | 4000001 | 补充参数 | |
200 | 4000002 | 对照接口文档规范参数并重试 | |
200 | 5000001 | 联系抖音处理 |
attr_key_value_map 的格式
根据「查询商品模板」查出的模板,可以看到该行业该类型下的商品对应的可传的相关属性,技术需要关心的字段主要是以下几个:
- 1.key - 属性主键,attr_key_value_map 的 key 是什么
- 2.is_required - 是否必传
- 3.is_multi - 是否列表,需要和 value_type 组合起来看。例如:
- a.value_type=STRING(表示字符串,具体参见下文),is_multi=true,则表示 value 是一个字符串列表(也就是 list)类型;
- b.value_type=IMAGE(表示图片控件,具 体参见下文),is_multi=true,则表示 value 是一个图片控件结构体列表(也就是 list)类型;
- 4.value_type - attr_key_value_map 的 value 类型,枚举可参见后文的表格。
attr_key_value_map 的类型是 map<string,string>,如果 value_type 为其他值类型需转换为 string
- 5.value_type 为整数/浮点数:转为十进制格式的 string
- 6.value_type 为布尔值:转为"true"或"false"
- 7.value_type 为结构体或结构体列表:需要使用 json 序列化
ID | 枚举值 | 含义 | 说明 | 结构定义(thrift 格式) |
2 | INT64 | 整数 | | i64 |
3 | BOOL | 布尔值 | | bool |
4 | STRING | 字符串 | | string |
6 | DOUBLE | 浮点数 | | double |
100 | IMAGE | 图片控件(ImageStruct) | url、名称 | struct ImageStruct { 1: optional string name 3: optional string url } |
101 | USE_TIME | 使用时间控件(UseTimeStruct) | 全天/仅指定时间可用;时间段(比如12:-14:) | enum UseTimeTypeEnum { ALL_DAY = 1 // 全天可用 SPECIFIC_TIME = 2 // 仅指定时间可用 } struct TimePeriodStruct { 2: required string use_start_time // 开始时 间 00:00:00 3: required string use_end_time // 结束时间 00:00:00 4: optional bool end_time_is_next_day // 是否跨天 } struct UseTimeStruct { 1: required UseTimeTypeEnum use_time_type // 1全天可用,2仅指定时间可用 2: optional list time_period_list // 时间段 } |
103 | USE_DATE | 可使用日期(UseDateStruct) | 指定日期/指定天数;购买后多少天有效;可用开始时间;可用结束时间; | enum UseDateTypeEnum { SPECIFIC_DATE = 1 // 指定日期 RELATIVE_DATE = 2 // 指定天数 } struct UseDateStruct { 1: required UseDateTypeEnum use_date_type // 1指定日期 2指定天数; 2: optional i32 day_duration // 购买后X天有效,use_date_type=2时有效 3: optional string use_start_date // yyyy-MM-dd 开始日期,use_date_type=1时有效 4: optional string use_end_date // yyyy-MM-dd 结束日期,use_date_type=1时有效 } |
104 | CAN_NO_USE_DATE | 不可使用日期(CanNoUseDateStruct) | 开关;指定周几不可用;指定节假日不可用;指定日期不可用;节假日具体日期 | enum HolidayEnum { NEW_YEAR = 1 // 元旦 SPRING_FESTIVAL = 2 // 春节 TOMB_SWEEPING_DAY = 3 // 清明 MAY_DAY = 4 // 劳动节 DRAGON_BOAT_FESTIVAL = 5 // 端午节 MID_AUTUMN_FESTIVAL = 6 // 中秋节 NATIONAL_DAY = 7 // 国庆节 VALENTINE_DAY = 8 // 情人节 CHRISTMAS = 9 // 圣诞节 } enum DayOfWeekEnum { MONDAY = 1 TUESDAY = 2 WEDNESDAY = 3 THURSDAY = 4 FRIDAY = 5 SATURDAY = 6 SUNDAY = 7 } struct CanNoUseDateStruct { 1: required bool enable // 开关,启用需要为true 2: optional list < DayOfWeekEnum &rt days_of_week // 指定周几不可用 3: optional list < HolidayEnum &rt holidays // 指定节假日不可用 4: optional list < string &rt date_list // yy-MM-dd 指定日期,不可用 5: optional map < HolidayEnum, string &rt holiday_dates // 节假日不可用具体日期,例如:"holiday_dates":{"1":"2021.01.01-2021.01.03","7":"2021.10.01-2021.10.07"} } |
105 | APPOINTMENT | 预约控件(AppointmentStruct) | 是否需要预约;提前X天;提前X小时;第三方预约入口;第三方已预约订单查看入口;需预约日期类型(1-指定周期、2-指定日期);需周几;需预约日期 | enum AheadTimeTypeEnum { DAY = 1 HOUR = 2 MINUTE = 3 } struct AppointmentStruct { 1: optional bool need_appointment // 是否需要预约 2: optional i32 ahead_day_num // 需要提前X天电话预约 3: optional string external_link // 第三方提供预约入口,需要过机审。 4: optional string order_appointment_time_url // 第三方提供的查看已预约订单入口,需要过机审 5: optional AheadTimeTypeEnum ahead_time_type // 提前预约时间类型, need_appointment = true时该字段必填 6: optional i32 ahead_hour_num // 需要提前X小时电话预约 7: optional i32 ahead_minute_num // 需要提前X分钟电话预约 } |
106 | NOTE | 富文本控件(NoteStruct) | 类型(文本/图片);内容 | enum OtherNoteTypeEnum { TEXT = 1 // 文本 IMG = 2 // 图片 } struct NoteStruct { 1: optional OtherNoteTypeEnum note_type 2: optional string content } |
107 | LIMIT_USE_RULE | 限制使用规则控件(LimitUseRuleStruct) | 是否限制、每人单次消费最多使用代金劵张数 | struct LimitUseRuleStruct { 1: required bool is_limit_use // 是否限用 2: optional i32 use_num_per_consume // 每人单次消费最多使用代金劵张数 } |
108 | CUSTOMER_RESERVED_INFO | 用户留资规则控件(CustomerReservedInfoStruct) | 是否留资;可以留电话;可以留姓名;可以留身份证;手机号是否必传;是否每张券都要留资;留资原因 | struct CustomerReservedInfoStruct { 1: required bool allow //是否留资 2: optional bool allow_tel //可以留电话 3: optional bool allow_name // 可以留姓名 4: optional bool allow_identity // 可以留身份证 5: optional bool require_for_tel //手机号是否必传 【默认非必传】 10: optional bool need_for_all // 是否每张券都需要留资 } |
109 | REAL_NAME_INFO | 实名信息控件(RealNameInfoStruct) | 是否实名;场景 | enum RealNameInfoSceneEnum { NAME_AND_TEL = 3 // 出行人姓名与手机号码 ONLY_ONE_INFO = 2 // 仅填写一位游客信息 EVERY_ONE_INFO = 1 // 每张门票都要填写用户信息 } struct RealNameInfoStruct { 1: required bool enable 2: required RealNameInfoSceneEnum scene // 场景(1/2/3) } |
111 | HIGHLIGHT | 商品亮点标签控件(HighlightStruct) | Content、Priority | struct HighlightStruct{ 1: required string Content 2: required i64 Priority } |
114 | NOTIFICATION | 使用规则控件(NotificationStruct) | 标题;内容 | struct NotificationStruct { 1: required string title, 2: required string content, } |
117 | DATE_RULE | 使用日期规则控件(DateRuleStruct) | 指定周几不可用;指定日期不可用;是否节日不可用 | struct UnavailableDateStruct{ 1: optional list < string &rt date_list // yyyy-MM-dd 指定日期,不可用 2: optional list < i64 &rt weekday_list // 1-7对应周一至周日 3: optional bool not_available_on_holidays // 节假日不可用 } struct DateRuleStruct{ 1: optional UnavailableDateStruct unavailable_date } |
121 | COMMODITY | 商品搭配控件(ItemGroupStruct) | 商品组名 总数 选几 菜品 - 菜名 - 单价 - 总数 - 单位 | struct ItemStruct { 1: required string name // 菜名 2: required i64 price // 价格 3: required i32 count // 总数 4: optional string unit // 单位 } struct ItemGroupStruct { 1: required string group_name // 商品组名 2: optional i32 total_count // 总数 3: required i32 option_count // 选几 4: required list item_list // 菜品 } |
122 | LIMIT_RULE | 限制购买规则控件(LimitRuleStruct) | 是否限购;每人最多购买X张 | struct LimitRuleStruct { 1: required bool is_limit // 是否限购 2: optional i32 total_buy_num // 每人最多购买X张 } |
123 | PREORDER_RULE | 预约规则(PreOrderRuleStruct) | time_type必须传2 其中: time_type传了1 必须传soonest_order_time或latest_order_time(即传其中之一即可); time_type传了2 必须传soonest_order_sec_offset或latest_order_sec_offset(即传其中之一即可); same_day_order_time生效需要can_full_day_order传false | struct PreOrderRuleStruct { 1: required i64 time_type // 1-绝对时间 2-提前时间 2: optional i64 soonest_order_time // 最早预约时间 3: optional i64 soonest_order_sec_offset // 最早预约提前时间(单位:秒) 4: optional i64 latest_order_time // 最晚预约时间 5: optional i64 latest_order_sec_offset // 最晚预约提前时间(单位:秒) 6: optional string start_time // 开始销售时间 e.g.: 08:00:00 7: optional string end_time // 结束销售时间 e.g.: 19:00:00 8: optional bool can_full_day_order // 当日是否全天可约 9: optional i64 same_day_order_time // 当日预约提前时间(单位:秒). i.e. 20:00点前预约,值为 72000 } |
126 | CUSTOM_POLICY | 自定义规则控件(CustomPolicyStruct) | 自定义规则控件 | struct CustomPolicyStruct { 1: required i64 policy_rule_type // 规则类型 2: optional string policy_value // 规则值 3: optional NoteStruct note //规则描述 } |
127 | CHARGE_POLICY | 费用控件(ChargePolicyStruct) | 加早、加床费用,支持添加费用类型,填写名称、单位和价格,价格支持选择免费 | struct ChargePolicyItem { 1: required string item // 费用项名称 3: required i64 qty //数量 4: required string unit //单位 5: required i64 amount // 金额(分) } |
130 | limit_buy_rule | 限购规则(LimitBuyRuleStruct) | | enum SubjectTypeEnum { UID = 1, // UID CONTACT_TEL = 2, // 联系人手机号 IDCARD = 3, // 身份证 DEVICEID = 4, // 设备ID CONSUMER_TEL = 5, // 消费者手机号(游玩类) } enum RangeTypeEnum { USE_DATE = 1, // 使用日期 ORDER_DATE = 2, // 下单日期 LIFE_LONG = 3, // 终身 ORDER = 4, // 订单 } struct LimitRuleItem { 1: required SubjectTypeEnum subject_type // 限购主体 2: required RangeTypeEnum range_type // 限购范围 3: required i32 limit_num // 限购数量 4: required string unit // 限购单位 } // 限制购买规则 struct LimitBuyRuleStruct { 1: required bool enable_limit, // 是否启用限制购买 2: optional list<limitruleitem> rule_list // 限购规则 } |
133 | APPLICATION_SCOPE | 适用范围(ApplicationScopeStruct) | | enum ApplicationScopeTypeEnum { ALL = 1, // 全场适用 ONLY_SPECIAL = 2, // 仅特殊消费适用 EXCLUDE_SPECIAL = 3, // 排除特殊消费 } struct ApplicationScopeStruct { 1: required ApplicationScopeTypeEnum application_scope_type, // 适用范围类型 2: optional string special_consumption_desc, // 特殊消费描述 } |
136 | SALE_SPECS | 销售规格(SaleSpecsStruct) | | /******销售规格*****/ struct SaleSpecsStruct { 1: required list<salespec> sale_specs } struct SaleSpec { 1: optional string spec_key 2: required string spec_name 3: required string spec_value 4: optional i32 sequence } |
139 | ORDER_SETTLE_RULE | 结算规则(OrderSettleRuleStruct) | | enum OrderSettleTypeEnum { BY_ORDER = 1, // 整单结算 BY_TIMES = 2, // 按使用次数结算 } type OrderSettleRuleStruct struct { 1: required OrderSettleTypeEnum order_settle_type // 结算类型 } |
174 | ATTACH_ITEM_DETAIL | 附赠项目 | | // 附赠项目 struct AttachItemDetailStruct { 1: optional list<AttachItem> attach_item_list // 附赠项目明细列表 } struct AttachItem { 1: string item_name // 项目名称 2: i32 item_count // 项目份数 3: i32 item_total_price // 总价值 } |