抖音开放平台Logo
开发者文档
控制台
用于创建商品前查询商品模板信息。​

使用限制

无​

接口说明

查询商品模板,创建商品时的属性列表需与该接口保持一致,否则无法识别。根据商品类目及商品类型获取商品模版信息。​

基本信息

HTTP URL​
HTTP Method​
GET​
申请权限​
商品查询​
权限要求​
    需要申请权限 ,路径:抖音开放平台-开发者平台/服务商平台>控制台>应用详情>解决方案​
    需要商家授权,路径:抖音来客>店铺管理>第三方应用授权​

请求头

参数
描述
必须
Content-Type​
application/json​
是​
access-token​
根据这个地址获取的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

响应参数

参数名称
参数类型
是否必传
参数描述
    data
struct
TRUE
响应信息
    error_code​
int​
TRUE​
错误码​
    description​
string​
TRUE​
错误描述​
    product_attrs​
list​
TRUE​
商品属性列表​
    desc​
string​
TRUE​
属性描述​
    is_multi​
bool​
TRUE​
是否列表​
    is_required​
bool​
TRUE​
是否必填​
    key​
string​
TRUE​
属性key​
    name​
string​
TRUE​
属性名称​
    value_type​
string​
TRUE​
属性类型​
    value_demo​
string​
TRUE​
属性样例​
    sku_attrs​
list​
TRUE​
SKU属性列表​
    desc​
string​
TRUE​
属性描述​
    is_multi​
bool​
TRUE​
是否列表​
    is_required​
bool​
TRUE​
是否必填​
    key​
string​
TRUE​
属性key​
    name​
string​
TRUE​
属性名称​
    value_type​
string​
TRUE​
属性类型​
    value_demo​
string​
TRUE​
属性样例​
    extra
struct
TRUE
响应额外信息
    error_code​
int​
TRUE​
错误码​
    description​
string​
TRUE​
(弃用)错误描述​
    sub_error_code​
int​
TRUE​
(弃用)子错误码​
    sub_description​
string​
TRUE​
(弃用)子错误描述​
    now​
int​
TRUE​
(弃用)时间戳​
    logid​
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​
应用未获得该能力, 请去https://open.douyin.com/申请
应用申请接口权限​
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 // 总价值​
}​