Endpoint
POST /api/v1/pulse/theta/{provider_slug}/unlink
Overview
移除用户与健康设备账号之间的连接:撤销 access tokens,并删除已存储的凭据。
Request
要取消链接的 provider slug(例如 theta_garmin、theta_whoop)
curl -X POST http://localhost:18080/api/v1/pulse/theta/theta_garmin/unlink \
-H "Content-Type: application/json" \
-d '{"user_id": "user_123"}'
Response
{
"success": true,
"message": "Successfully unlinked provider",
"provider_slug": "theta_garmin",
"user_id": "user_123"
}
What Happens
当你取消链接一个 provider 时:
撤销访问(可选)
如果 provider 支持,则会在 provider API 侧撤销访问
移除链接关系
用户与 provider 的链接关系会被标记为已删除
该操作不可撤销。用户如需重新连接,需要再次完成 OAuth flow。
Example Usage
import aiohttp
async def unlink_provider(user_id: str, provider_slug: str):
url = f"http://localhost:18080/api/v1/pulse/theta/{provider_slug}/unlink"
data = {"user_id": user_id}
async with aiohttp.ClientSession() as session:
async with session.post(url, json=data) as resp:
result = await resp.json()
return result
# Unlink provider
result = await unlink_provider("user_123", "theta_garmin")
print(f"Unlinked: {result['success']}")
Error Responses
{
"success": true,
"message": "No credentials found",
"provider_slug": "theta_garmin",
"user_id": "user_123"
}
{
"error": {
"code": "PROVIDER_NOT_FOUND",
"message": "Provider 'theta_unknown' not found"
}
}
即使在 provider API 侧撤销访问失败,本地凭据仍会被删除。为彻底断开连接,用户也应在 provider 的网站或 app 中撤销访问授权。
取消链接后,该用户与该 provider 的所有定时同步任务会自动停止。