开发文档

概述

开发者可以通过 WeGene API 开发出极具创意的基因相关的应用, 也可以在已有的应用中整合用户的基因组信息.无需等待实验室漫长的检测过程, 就能让用户受益于知晓自己的基因组数据, 例如:更加个性化的减肥方案、更加安全有效的非处方药物服用建议、基于血缘关系的社交网络等等.

WeGene API 使用 OAuth 2.0 标准, 让用户根据自己的需求授权第三方应用访问其基因组数据及相关的解读结果。所有的用户信息和数据都会在安全的 SSL 协议加密后传输, 确保用户信息不会被未经授权的个人或组织获得。

WeGene API 是一项免费服务,了解更多关于申请 WeGene API的信息请访问:申请 WeGene API。在完成申请后, 开发者会得到:

  • Client ID: 应用识别码;
  • Client secret: 应用的秘钥, 应妥善保存;

文档目录

获得授权

用户信息

遗传信息

  • POST /genotypes 获取指定位点基因型
  • POST /genome 获取全部基因组信息

运动基因

健康风险

祖源信息

健康报告

与 API 认证

  1. 你如何获得一个用户的数据? 使用 OAuth 2.0, 向用户的许可对他们的数据.如果他们接受, 你会得到一个授权码
  2. 使用授权码更换令牌
  3. 使用令牌, 访问我们的 API 数据

询问用户的许可, 获得一个授权码

在你的应用中发送 https://api.wegene.com/authorize/ 给用户, 带上以下参数:

redirect_uri 重定向 URI, 请与设置中的一致, 列如: https://exampleapp.com/receive_code/.
response_type code
client_id 我们提供给你的 Client id
scope 一个向用户申请的权限列表, 多个权限使用空格分隔, 具体参数见后面的表格

我们建议您使用一个带我们品牌的按钮, 以便用户识别登录, 但你也可以使用 GET 链接

<a href="https://api.wegene.com/authorize/?redirect_uri=https://exampleapp.com/receive_code/&response_type=code&client_id=your_client_id&scope=basic rs123">与 WeGene 链接</a>

如果 Scope 数量很多, 请使用 POST 方式单独提交 Scope 参数, 同时取消 GET 查询中的 Scope 参数

当用户点击该链接, 会跳转到 WeGene 网站, 要求他们给你访问他们的数据.如果他们接受, 他们的浏览器重定向到您的 redirect_uricode=ZZZ. 这是你的授权码, 而且有效期只有 5 分钟.

交换身份验证代码的令牌

发送 POST 请求到 /token/, 与下面这些参数:

curl https://api.wegene.com/token/
	-d client_id=xxx \
	-d client_secret=yyy \
	-d grant_type=authorization_code \
	-d code=zzz \
	-d "redirect_uri=https://localhost/receive_code/"
	-d "scope=basic%20rs3094315%20rs3094316"

如果成功, 你会接收到一个 JSON 响应, 像下面这样:

{"access_token":"89822b93d2",
	"token_type":"bearer",
	"expires_in": 86400,
	"refresh_token":"33c53cd7bb",
	"scope":"basic rs3094315 rs3094316"}

否则你会接收到一个错误响应. 这里有一个错误代码列表

{"error":"invalid_request", "error_message":"No such code: zzz"}

刷新 Token

访问令牌 1 天后到期, 如果你在之后需要访问用户数据, 你可以使用最后的 refresh_token 请求另一个令牌. 使用刷新标记意味着你不必通过授权页面重新让用户授权一次. 请求新的令牌将作废旧 refresh_token. refresh token 的有效期为 7 天, 超出这个时间意味着只能让用户通过网页重新授权.

curl https://api.wegene.com/token/ \
	-d client_id=xxx \
	-d client_secret=yyy \
	-d grant_type=refresh_token \
	-d refresh_token=c4480ba4119 \
	-d "redirect_uri=https://localhost/receive_code/" \
	-d "scope=basic%20rs3094315%20rs3094316"

访问 API 节点

API 请求使用 OAuth 2.0 bearer tokens 经过 SSL, 附带 Authorization 头.
如果接收到非 200 的错误, 参见错误代码列表.

curl https://api.wegene.com/user/ -H "Authorization: Bearer 4517670cac10ae754b0d5191821700ff"

目前已经提供 XML 格式的返回数据, 如需使用, 请在 POST 请求中附带 output=xml 参数

API 节点

节点 Scope 要求 示例
GET /user/ basic

获取用户的 id, 与账户下的所有基因数据列表

profiles 下的 id 是基因数据的唯一识别码

如果 scope 中声明了 email 则结果中会出现 email

如果 scope 中声明了 names 则结果中会出现每个基因 Profile 的名字

sex 的值: 1 表示男性, 2 表示女性, 其他表示用户未设定

curl https://api.wegene.com/user/ -H "..."
# JSON response:
{
	"id": 4,
	"profiles": [
		{
			"format": "23andme",
			"id": "54a2ef12515b472e6fd8bed644af87bc",
			"sex": 1
		},
		{
			"format": "sports",
			"id": "8862bfd9f3e3a997313310b1d9fc5b57",
			"sex": 1
		}
	]
}
POST /genotypes/profile_id rsXX 每个请求的基因位点

profile_id 是基因数据的唯一识别码, 可以在 /users 下获取到

本接口返回的基因数据格式为 碱基对, 如 AA DD, 如果该位点没有数据则返回 --__, 如果数据报告中没有该位点, 则不会返回该位点的数据

本接口返回的所有基因型均为该位点的正链基因型。

locations 为请求的位点, 多个以 空格 分隔, 需以 POST 方式输入

compress 为压缩选项, 设置为 true 即启用, 需以 POST 方式输入, 如果启用此选项将会返回 JSON 内容经过 GZIP 压缩并 BASE64 编码后的文本, 不会直接返回 JSON 内容

curl https://api.wegene.com/genotypes/54a2ef12515b... -d "locations=..."
# JSON response:
{
	"I3002517": "TT",
	"I5012679": "CC",
	"I5012680": "GG",
	"RS1051730": "CT",
	"RS111033199": "GG",
	"RS1805137": "TT",
	"RS28936415": "GG",
	"RS4565946": "CC"
}
POST /athletigen/profile_id athletigen

profile_id 是基因数据的唯一识别码, 可以在 /users 下获取到

report_id 是每个运动基因项目数据的唯一识别码, 可以在下方列表中获取到

返回的数据中 description 表示项目名称, score 表示该项目用户的得分
rank 表示根据得分该用户在这个项目上的强弱情况。

curl https://api.wegene.com/athletigen/54a2ef12515b... -d "report_id=1487"
# JSON response:
{
  "description" : "耐力",
  "caseid" : "1487",
  "score" : "70.2386703491",
  "rank" : "较强",
  "genotypes" : [
    {
      "tsummary" : "对耐力表现有较大帮助",
      "rsid" : "RS1799945",
      "genotype" : "CG",
      "gene" : "ITMP"
    },
    {
      "tsummary" : "对耐力表现有帮助",
      "rsid" : "RS1815739",
      "genotype" : "CT"
    },
    {
      "tsummary" : "对耐力表现有帮助",
      "rsid" : "RS5219",
      "genotype" : "CT"
    }
  ]
}
POST /risk/profile_id risk

profile_id 是基因数据的唯一识别码, 可以在 /users 下获取到

report_id 是每个疾病风险项目数据的唯一识别码, 可以在下方列表中获取到

返回的数据中 description 表示项目名称, risk 表示该项目用户的患病风险是平均人群的几倍
percent 表示根据风险该用户在这个项目所有用户中的百分比排名。

curl https://api.wegene.com/risk/54a2ef12515b... -d "report_id=88"
# JSON response:
{
  "description" : "痛风",
  "caseid" : 88,
  "risk" : 0.31,
  "percent" : "0.0173"
  "genotypes" : [
    {
      "rsid" : "RS6855911",
      "genotype" : "AG",
      "gene" : "IMDB"
    },
    {
      "rsid" : "RS1165205",
      "genotype" : "AA"
    },
    {
      "rsid" : "RS2231142",
      "genotype" : "GG"
    },
    {
      "rsid" : "RS16890979",
      "genotype" : "CT"
    },
    {
      "rsid" : "RS12498742",
      "genotype" : "AG"
    },
    {
      "rsid" : "RS150414818",
      "genotype" : "--"
    }
  ],
}
POST /health/carrier/profile_id (遗传性疾病)
POST /health/drug/profile_id (药物反应)
POST /health/traits/profile_id (遗传特征)
POST /health/metabolism/profile_id (营养代谢)
health

profile_id 是基因数据的唯一识别码, 可以在 /users 下获取到

report_id 是每个风险数据的唯一识别码, 可以在下方列表中获取到

返回的数据中 mag 表示研究价值, odds 表示该疾病每 10 万人出现的数量
rank 表示在营养代谢类项目中用户的代谢能力

curl https://api.wegene.com/risk/54a2ef12515b... -d "report_id=80"
# JSON response:
{
	"description": "外周动脉病变",
	"mag": "2.50",
	"odds": 6000,
	"result": {
		"genotypes": [
			{
				"gene": "CHRNA3",
				"genotype": "CT",
				"genotypeid": 2826,
				"mag": "2.00",
				"orientation": "minus",
				"repute": "good",
				"rsid": "RS1051730",
				"snpid": 3650,
				"summary": "1.3x increased risk of lung cancer",
				"tsummary": "外周动脉病变的风险正常"
			}
		],
		"mag": "2.50",
		"odds": 6000
	},
	"sex": "全部"
}
POST /ancestry/profile_id ancestry

profile_id 是基因数据的唯一识别码, 可以在 /users 下获取到

curl https://api.wegene.com/ancestry/54a2ef12515b... 
# JSON response:
{
	"data_hash" : "54a2ef12515b472e6fd8bed644af87bc",
	"block" : {
		"else_asia" : "0.000050",
		"southeast_asia" : "0.000020",
		"chinese_nation" : "0.999789",
		"african" : "0.000010",
		"northeast_asia_america" : "0.000040",
		"europe" : "0.000090"
	},
		"area" : {
		"uygur" : "0.000010",
		"russian" : "0.000010",
		"iranian" : "0.000010",
		....
	},
	"update_time" : "1448265986"
}
POST /haplogroups/result/profile_id haplogroups

profile_id 是基因数据的唯一识别码, 可以在 /users 下获取到

curl https://api.wegene.com/haplogroups/result/54a2ef12515b... 
# JSON response:
{
	"y":"O2a2b2",
	"mt":"F1a"
}

项目编号 (report_id) 列表

Report ID 所属分类 名称
104 健康风险 高血压
66 健康风险 2型糖尿病
134 健康风险 高甘油三酯血症
70 健康风险 I型糖尿病
116 健康风险 骨关节炎
52 健康风险 酒精依赖
88 健康风险 痛风
80 健康风险 外周动脉病变
216 健康风险 心源性猝死
99 健康风险 斑秃
107 健康风险 偏头痛
140 健康风险 图雷特氏综合症
114 健康风险 发作性嗜睡病
76 健康风险 成神经细胞瘤
51 健康风险 硬皮病
77 健康风险 尼古丁依赖
109 健康风险 腹主动脉瘤
121 健康风险 脑中风
46 健康风险 睡眠脚动症
91 健康风险 肺癌
50 健康风险 原发性胆汁性肝硬化
243 健康风险 精神分裂症
88 健康风险 痛风
87 健康风险 冠心病
100 健康风险 强直性脊柱炎
92 健康风险 胆结石
75 健康风险 肾结石
101 健康风险 特应性皮炎
82 健康风险 睾丸癌
54 健康风险 大脑动脉瘤
104 健康风险 高血压
52 健康风险 酒精依赖
93 健康风险 类风湿关节炎
242 健康风险 抑郁症
131 健康风险 发育性阅读障碍
57 健康风险 过敏性鼻炎
98 健康风险 系统性红斑狼疮
110 健康风险 丛集性头痛
61 健康风险 男性不育症
134 健康风险 高甘油三酯血症
40 健康风险 前列腺癌
102 健康风险 慢性淋巴细胞白血病
65 健康风险 干燥综合征
94 健康风险 溃疡性结肠炎
45 健康风险 慢性肾脏病
69 健康风险 多发性硬化
62 健康风险 脑膜瘤
47 健康风险 帕金森
81 健康风险 特发性肺纤维化
68 健康风险 黑色素瘤
60 健康风险 肌萎缩侧索硬化症
83 健康风险 甲状腺癌
106 健康风险 甲状腺机能减退症
49 健康风险 胃癌
58 健康风险 瘢痕瘤
56 健康风险 白癜风
90 健康风险 牛皮癣
113 健康风险 男性乳腺癌
66 健康风险 2型糖尿病
96 健康风险 双相型障碍
128 健康风险 注意力缺陷多动障碍
59 健康风险 肾脏病
120 健康风险 选择性IgA缺陷
38 健康风险 老年痴呆
53 健康风险 哮喘
133 健康风险 桥本氏甲状腺炎
42 健康风险 老年性黄斑病变
95 健康风险 克罗恩病
129 健康风险 背痛
116 健康风险 骨关节炎
71 健康风险 贝赫切特综合征
39 健康风险 心房纤维性颤动
44 健康风险 结直肠癌
103 健康风险 掌腱膜挛缩症
1483 健康风险 乳糜泻
1485 健康风险 耳硬化症
86 健康风险 肥胖症
108 健康风险 进行性核上麻痹
89 健康风险 静脉血栓栓塞
70 健康风险 1型糖尿病
130 健康风险 唇裂和腭裂
79 健康风险 胰腺癌
67 健康风险 剥脱性青光眼
84 健康风险 迟发性运动障碍
132 健康风险 特发性震颤
115 健康风险 口腔和咽喉癌
85 健康风险 强迫症
136 健康风险 非酒精性脂肪性肝病
48 健康风险 食管癌
135 健康风险 骨髓增生性肿瘤
72 健康风险 慢性阻塞性肺疾病
74 健康风险 肾癌
117 健康风险 结节病
197 遗传性疾病 角膜缘带肌营养不良2D型
199 遗传性疾病 中链脂肪酸去氢酵素缺乏症(MCADD)
201 遗传性疾病 神经元蜡样质脂褐质沉积症(Neuronal Ceroid Lipofuscinoses)
206 遗传性疾病 四肢近端点状软骨发育不良(RCDP1)
178 遗传性疾病 先天性1A型糖基化障碍
207 遗传性疾病 萨拉病(Salla Disease)
213 遗传性疾病 尤塞氏综合症
172 遗传性疾病 体胼胝质伴周围神经疾病
214 遗传性疾病 脑肝肾综合征
208 遗传性疾病 镰刀型红血球疾病(Sickle Cell Anemia)
204 遗传性疾病 甲状腺肿-耳聋综合征(Pendred Syndrome)
202 遗传性疾病 尼曼-匹克病 A型(Niemann-Pick Disease Type A)
190 遗传性疾病 葡萄糖-6-磷酸脫氫酶缺乏症
187 遗传性疾病 家族性高胰岛素症
182 遗传性疾病 二氢嘧啶脱氢酶缺乏症
232 遗传性疾病 色盲
179 遗传性疾病 遗传性耳聋
223 遗传性疾病 血色素沉着病
176 遗传性疾病 布卢姆综合征
173 遗传性疾病 α-1抗胰蛋白酶缺乏
194 遗传性疾病 肝醣储积症B型
196 遗传性疾病 肥厚型心肌病
212 遗传性疾病 酪氨酸血症(Tyrosinemia Type I)
209 遗传性疾病 TTR心脏淀粉样变病(TTR-Related Cardiac Amyloidosis)
171 遗传性疾病 常染色体隐性痉挛性共济失调
195 遗传性疾病 遗传性果糖不能耐受症
180 遗传性疾病 囊性纤维化
191 遗传性疾病 竹叶综合症
203 遗传性疾病 奈梅亨断裂综合征(Nijmegen Breakage Syndrome)
192 遗传性疾病 高雪氏症
200 遗传性疾病 粘脂贮积症IV型(Mucolipidosis IV)
211 遗传性疾病 肌张力障碍(Torsion Dystonia)
181 遗传性疾病 D-双功能蛋白缺乏
205 遗传性疾病 苯丙酮尿症(Phenylketonuria)
177 遗传性疾病 海绵状脑病
193 遗传性疾病 肝醣储积症A型
189 遗传性疾病 范可尼贫血
186 遗传性疾病 家族性高胆固醇血症B形
198 遗传性疾病 枫糖尿症1B型(Maple Syrup Urine Disease Type 1B)
210 遗传性疾病 戴萨克斯症(Tay-Sachs Disease)
184 遗传性疾病 凝血因子XI缺陷症
188 遗传性疾病 家族性地中海热
258 遗传性疾病 Leigh综合征(加拿大法裔型)
174 遗传性疾病 常染色体隐性遗传多囊肾病
183 遗传性疾病 二氢硫辛酰胺脱氢酶缺乏症
185 遗传性疾病 家族性自主神经功能异常
175 遗传性疾病 地中海贫血
1481 药物反应 聚乙二醇干扰素α-2a、聚乙二醇干扰素α-2b和利巴韦林
1480 药物反应 第二代抗精神病药
1479 药物反应 美托洛尔
1478 药物反应 卡维地洛
1477 药物反应 伊立替康
1474 药物反应 他汀类药物
1472 药物反应 华法林-CYP4F2
1471 药物反应 他克莫司
1470 药物反应 阿米替林-CYP2D6
1469 药物反应 他莫昔芬
1465 药物反应 氯沙坦
1464 药物反应 塞来昔布
1463 药物反应 华法林-CYP2C9
1462 药物反应 乙醇
1461 药物反应 硝酸甘油
1440 遗传特征 深度睡眠
262 遗传特征 血型
246 遗传特征 睡眠时间
244 遗传特征 绝对音准
170 遗传特征 避错倾向
43 遗传特征 吃货评价
34 遗传特征 见光喷嚏
31 遗传特征 更年期
17 遗传特征 血糖水平
12 遗传特征 吸烟倾向
3 遗传特征 耳垢类型
1 遗传特征 酒精性脸红
256 营养代谢 维生素A营养需求
255 营养代谢 硒代谢能力
254 营养代谢 锌代谢能力
253 营养代谢 维生素B12营养需求
252 营养代谢 维生素D营养需求
251 营养代谢 铁营养需求
250 营养代谢 维生素E营养需求
249 营养代谢 酒精代谢能力
247 营养代谢 钙营养需求
225 营养代谢 叶酸营养需求
22 营养代谢 咖啡因代谢能力
5 营养代谢 乳糖代谢能力
1502 运动基因 腰椎间盘保护能力
1501 运动基因 跟腱保护能力
1500 运动基因 膝盖前交叉韧带保护能力
1499 运动基因 咖啡因敏感性
1498 运动基因 碳水化合物敏感性
1497 运动基因 饱和脂肪敏感性
1496 运动基因 碳水化合物摄入倾向
1495 运动基因 总热量摄入倾向
1494 运动基因 饮食对体重的影响
1493 运动基因 运动对体重的影响
1492 运动基因 运动时体温升高速度
1491 运动基因 肌肉耐劳度提升
1490 运动基因 运动积极性
1489 运动基因 最大摄氧量提升
1488 运动基因 运动后心率改善
1487 运动基因 耐力
1486 运动基因 爆发力

API 授权错误列表

错误 描述
invalid_request 请求缺少必需的参数, 或者包括一个不支持或不正确的参数
invalid_client 客户端身份验证失败 (如未知的客户, 客户 ID 被禁用等)
invalid_scope 请求超出事先声明的权限范围

实例及 SDK

语言 链接
PHP 实例 https://github.com/wegene-llc/wegene-api-php-example
Node.js SDK https://github.com/wegene-llc/node-wegene
Node.js OAuth Passport Strategy https://github.com/wegene-llc/passport-wegene
Python SDK https://github.com/wegene-llc/wegene-python-sdk