Geotrackable.com

Android 应用设置

在 Android 的“同步”选项卡中,只将站点源地址保存为端点。不要添加 /api。

https://Geotrackable.com

将本地账户凭据 POST 到 /api/auth/login?useCookies=false&useSessionCookies=false 以登录,然后在 Authorization 标头中发送返回的 bearer 令牌。

预期响应

在客户端发送 bearer 令牌之前,受保护路由会返回 HTTP 401。在浏览器中打开仅限 POST 的路由会返回 HTTP 405,因为浏览器发送的是 GET。

每个离线同步周期都必须先推送,再拉取。

未知的 API 路径会返回 HTTP 404。使用错误 HTTP 方法调用已知路径通常会返回 HTTP 405,并可能包含 Allow 标头。仅用于删除的 /api/account 路径特意不提供 GET 端点,因此 GET /api/account 会返回含操作建议的 404;读取账户信息请使用 /api/auth/manage/info。

调用私有路由前,请检查主机、登录并确认令牌。

当前账户信息路由来自框架身份 API。单独的 account 路由仅用于永久删除。

健康检查

此路由允许匿名访问,是确认生产 API 主机可达的最快方式。

curl "https://Geotrackable.com/api/system/status"
{
  "status": "online",
  "utcNow": "2026-06-20T12:00:00Z",
  "androidBetaPageUrl": "https://Geotrackable.com/en-US/Account/Beta"
}

注册

在请求 bearer 令牌之前,请使用电子邮件、密码和公开个人资料用户名创建本地帐户。用户名只能包含小写字母、数字和下划线。

curl -X POST "https://Geotrackable.com/api/auth/register" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "tester@example.com",
    "userName": "trail_tester",
    "password": "StrongP@ssw0rd!"
  }'

Bearer 登录

当脚本、应用或 API 客户端需要 bearer 令牌时,请使用本地账户凭据并禁用 cookie。

curl -X POST "https://Geotrackable.com/api/auth/login?useCookies=false&useSessionCookies=false" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "tester@example.com",
    "password": "StrongP@ssw0rd!"
  }'
{
  "tokenType": "Bearer",
  "accessToken": "eyJhbGciOi..."
}

当前账户和个人资料

没有 GET /api/account 个人资料端点。请使用身份 manage-info 端点读取已登录账户元数据,并使用网站个人资料页面显示公开资料。

GET /api/account 不是已发布的读取路由。

GET /api/auth/manage/info 返回已登录的身份详细信息。

DELETE /api/account 永久删除当前账户。

curl "https://Geotrackable.com/api/auth/manage/info" \
  -H "Authorization: Bearer <access token>"

检查 Android 或 API 客户端连接时,请从这些路由开始。

方法 路由
GET /api/system/status
POST /api/auth/register
POST /api/auth/login?useCookies=false&useSessionCookies=false
GET /api/auth/manage/info
POST /api/sync/push
POST /api/sync/pull
GET /api/notes/public/bounds
GET /api/notes/public/nearby
GET /api/categories/mine
GET /api/notes/mine
GET /api/trackables/public
POST /api/trackables/lookup
GET /api/trackables/active
DELETE /api/account

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

Geotrackable 网站使用 Locations 术语,而 API 路由名称底层仍使用共享 notes 合同。

地图边界内的公共位置

当客户端已有地图视口并需要该区域内可见的公共位置笔记时,请使用边界查询。

curl "https://Geotrackable.com/api/notes/public/bounds?minLatitude=41.78&minLongitude=-87.75&maxLatitude=41.96&maxLongitude=-87.54&contentLanguage=en-US"
[
  {
    "noteId": "4d6c5df3-3c53-4d0e-8e72-7d98a0f8a9f3",
    "title": "Trailhead parking",
    "body": "Small public lot near the north entrance.",
    "contentLanguage": "en-US",
    "latitude": 41.8818,
    "longitude": -87.6231,
    "visibility": "Public",
    "updatedUtc": "2026-06-20T12:00:00Z"
  }
]

创建个人位置

已登录调用方可以创建私有或公共位置。公共位置需要经过身份验证的账户,不能只使用匿名本地存储。

curl -X POST "https://Geotrackable.com/api/notes/mine" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "categoryId": "4de6bb76-f25d-4c73-b8e3-81b9ca3bf08f",
    "title": "Cache hide approach",
    "body": "Use the east footpath after rain.",
    "contentLanguage": "en-US",
    "latitude": 41.8818,
    "longitude": -87.6231,
    "visibility": "Private",
    "commentPolicy": "Disabled"
  }'
curl -X POST "https://Geotrackable.com/api/categories/mine" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Weekend route checks",
    "contentLanguage": "en-US",
    "parentCategoryId": null
  }'

请先推送本地更改,然后拉取该用户和当前公共区域的服务器视图。

两个同步路由都需要 bearer 身份验证。匿名私有位置可以保留在设备本地,但服务器同步 API 不会接受它们。

推送请求

curl -X POST "https://Geotrackable.com/api/sync/push" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "deviceId": "5dd06ca7-34a5-4f2e-812d-3f1ef3e48290",
    "notes": [
      {
        "noteId": "ef90c4ca-88a9-4a9b-b3a8-36e2649c5dcb",
        "ownerUserId": "a7cfd28f-c17f-4cf7-8913-47fa10fd0d1f",
        "categoryId": "ca90c4ca-88a9-4a9b-b3a8-36e2649c5dcb",
        "title": "Offline field stop",
        "body": "Saved while disconnected.",
        "contentLanguage": "en-US",
        "latitude": 41.8818,
        "longitude": -87.6231,
        "visibility": 0,
        "isDeleted": false,
        "updatedUtc": "2026-06-20T12:05:00Z",
        "clientMutationId": "android-offline-42",
        "teamId": null
      }
    ],
    "categories": [
      {
        "categoryId": "ca90c4ca-88a9-4a9b-b3a8-36e2649c5dcb",
        "ownerUserId": "a7cfd28f-c17f-4cf7-8913-47fa10fd0d1f",
        "name": "Offline field notes",
        "contentLanguage": "en-US",
        "teamId": null,
        "parentCategoryId": null,
        "sortOrder": 0,
        "isDeleted": false,
        "updatedUtc": "2026-06-20T12:04:00Z"
      }
    ]
  }'

每条位置笔记都必须引用登录账户已可见的类别,或同一次推送中包含的类别。离线同时创建两者时,请确保两条记录中的 categoryId 完全相同。

拉取请求

curl -X POST "https://Geotrackable.com/api/sync/pull" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "lastSyncUtc": "2026-06-20T11:30:00Z",
    "publicArea": {
      "minLatitude": 41.78,
      "minLongitude": -87.75,
      "maxLatitude": 41.96,
      "maxLongitude": -87.54
    }
  }'
{
  "serverSyncUtc": "2026-06-20T12:06:00Z",
  "userNotes": [],
  "userCategories": [],
  "teamCategories": [],
  "publicNotes": [],
  "teamNotes": []
}

拉取前先解决推送冲突

有效的推送可能返回 HTTP 200,并带有 conflicts 集合。这是逐实体的同步结果,而非传输故障。每项冲突都包含 entityId、entityType、易读的 reason、稳定的 code 和具体的 action。

{
  "entityId": "ef90c4ca-88a9-4a9b-b3a8-36e2649c5dcb",
  "entityType": "Note",
  "reason": "Incoming note update is stale.",
  "code": "stale_update",
  "action": "Pull the current server copy, merge or discard the local edit, and then push a newer update."
}

不要静默循环提交被拒绝的实体。stale_update 要求先拉取并决定如何合并;team_membership_required 要求刷新成员资格;online_team_management_required 表示应改用在线团队 API 进行更改;entity_ownership_conflict 表示对于此账户应以服务器副本为准。

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

秘密代码和私有 QR 载荷是敏感凭据。创建后,普通读取路由不会再返回它们。

POST /api/trackables 中的 secretCode 属性是可选的。需要 Geotrackable 生成唯一的系统秘密代码时请省略它;如果实体物品已有需要保留的代码,则可发送允许的自定义值。

公共浏览和查找

curl "https://Geotrackable.com/api/trackables/public?contentLanguage=en-US"
curl -X POST "https://Geotrackable.com/api/trackables/lookup" \
  -c geotrackable.cookies \
  -H "Content-Type: application/json" \
  -d '{
    "code": "GT7F3K9"
  }'

使用秘密代码或 QR 查找可以创建浏览器式活动会话。请保留响应 Cookie 容器以供后续活动会话调用使用,像保护凭据一样保护该文件,并在不再需要会话时将其删除。

创建可追踪物

建议的请求应省略 secretCode。省略、null、空字符串或仅含空白的值都会要求服务器生成代码。非空值则表示请求在规范化和可用性检查后采用该确切自定义代码。

curl -X POST "https://Geotrackable.com/api/trackables" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Scout trail coin",
    "description": "Move this coin along family-friendly trails.",
    "visibility": "AlwaysVisibleToEveryone",
    "activateImmediately": true
  }'

请求指定的秘密代码

仅当物品已有自定义标识符时才发送 secretCode。如果规范化后的值可用,服务器会采用它并返回 HTTP 201。生成的公开代码与之分开,仍由 Geotrackable 分配。

curl -X POST "https://Geotrackable.com/api/trackables" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Existing event tag",
    "description": "Uses the identifier already printed on the tag.",
    "visibility": "VisibleOnceAccessed",
    "activateImmediately": true,
    "secretCode": "TAG42"
  }'

自定义代码不得超过 32 个字符,并且在公开与秘密 Trackable 代码的整个命名空间中必须可用。以 GT、LN、TB、GK 或 GC 开头的代码保留给系统签发或来源站点标识符,不能用作 Geotrackable 自定义秘密代码。

创建响应是唯一一次显示机密信息的机会

立即保存返回的 secretCode 和 scanUrl。后续的列表、详情、查找、评论和旅程路由特意不会再次显示这些凭据。

HTTP/1.1 201 Created
{
  "trackableId": "13a2c0b1-582f-4a7b-92aa-16922f7bdb63",
  "heading": "Scout trail coin",
  "items": [
    {
      "trackableId": "13a2c0b1-582f-4a7b-92aa-16922f7bdb63",
      "name": "Scout trail coin",
      "publicCode": "GT-7F3K9Q",
      "secretCode": "GT8M2Q7V",
      "scanUrl": "https://geotrackable.com/trackable/<private-qr-token>",
      "qrPayload": "<private-qr-token>"
    }
  ]
}

活动秘密访问

浏览器输入有效秘密代码或扫描载荷后,活动会话路由会显示该浏览器当前可以重新打开的内容。

curl "https://Geotrackable.com/api/trackables/active" \
  -b geotrackable.cookies
curl -X POST "https://Geotrackable.com/api/trackables/active/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/message" \
  -b geotrackable.cookies \
  -H "Content-Type: application/json" \
  -d '{
    "statusMessage": "Live hunt in progress"
  }'

当请求的代码已被占用时

自定义代码冲突会返回 HTTP 409,code 为 trackable_secret_code_taken。此请求尚未创建 Trackable。请勿继续重试相同的值:省略 secretCode 以获取生成的代码,或选择另一个允许的自定义代码。

{
  "type": "/en-US/api-docs#errors-and-problem-details",
  "title": "Requested secret code is unavailable.",
  "status": 409,
  "detail": "That secret code is already in use by another Geotrackable identifier. Supplying a secret code is optional: omit it to receive a unique system-generated code, or choose a different code.",
  "instance": "/api/trackables",
  "code": "trackable_secret_code_taken",
  "field": "secretCode",
  "action": "Omit secretCode to receive a unique system-generated code, or submit a different allowed secretCode.",
  "requestId": "0HN7EXAMPLE:00000001",
  "documentation": "/en-US/api-docs#errors-and-problem-details"
}

保留前缀的处理方法

保留或无效的自定义值会返回包含 action 和文档链接的问题响应。安全的后备做法始终是从创建请求中移除 secretCode。

记录旅程停靠点

当不需要完整位置笔记时,直接旅程停靠点就是轻量级路线更新。

curl -X POST "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/journey-stops" \
  -H "Content-Type: application/json" \
  -d '{
    "latitude": 41.8818,
    "longitude": -87.6231,
    "accessCode": "GT-SECRET-OR-SCAN-PAYLOAD"
  }'

评论可追踪物

登录的调用方可使用其 Bearer 身份发表评论。匿名调用方也可在客户端拥有由秘密代码支持的活动会话,或发送此物品对应的 accessCode 时,对已激活的 Trackable 发表评论。

curl -X POST "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/comments" \
  -b geotrackable.cookies \
  -H "Content-Type: application/json" \
  -d '{
    "body": "Found near the overlook and moved west.",
    "accessCode": ""
  }'

关于可追踪

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

创建团队

curl -X POST "https://Geotrackable.com/api/teams" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "trail-club",
    "title": "Trail Club",
    "description": "Weekend route and trackable group.",
    "joinPolicy": "RequestsAllowed",
    "pageVisibility": "Public",
    "defaultNoteVisibility": "Public",
    "contentLanguage": "en-US"
  }'

创建邀请链接

curl -X POST "https://Geotrackable.com/api/teams/73edb511-cd8c-4888-8c45-3a04b3d6da11/invite-links" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "isSingleUse": false
  }'
curl -X POST "https://Geotrackable.com/api/teams/invite-links/trail-club/INVITE-CODE/join" \
  -H "Authorization: Bearer <access token>"

关于团队

媒体和支持路由遵循其关联页面或内容的可见性。

图片

当父页面可安全公开时,列表读取可以匿名进行。上传和删除路由需要 bearer 身份验证。

curl "https://Geotrackable.com/api/images/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63"
curl -X POST "https://Geotrackable.com/api/images/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>" \
  -F "files=@trail-coin.jpg"

外部链接验证

在将外部链接保存到位置、团队、可追踪物或可追踪物组之前,请先验证该链接。

curl -X POST "https://Geotrackable.com/api/external-links/verify" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/trail-guide"
  }'

内容和错误报告

对于公共页面内容问题,请使用报告;对于支持人员可能需要查看的客户端诊断,请提交错误。

curl -X POST "https://Geotrackable.com/api/compliance/reports" \
  -H "Content-Type: application/json" \
  -d '{
    "pageType": "Trackable",
    "contentType": "Trackable",
    "pageTitle": "Scout trail coin",
    "pageUrl": "https://Geotrackable.com/trackable/GT7F3K9",
    "pageReference": "GT7F3K9",
    "contentLabel": "Trackable page",
    "contentReference": "13a2c0b1-582f-4a7b-92aa-16922f7bdb63",
    "contentPreview": "Move this coin along family-friendly trails.",
    "reportTitle": "Outdated public link",
    "reportExplanation": "The linked trail guide now points somewhere unexpected."
  }'

从 API 删除账户

已认证客户端可以通过 API 永久删除当前账户和已同步的个人数据。需要导出步骤或共享可追踪物保留规则时,请先阅读删除数据页面。

curl -X DELETE "https://Geotrackable.com/api/account" \
  -H "Authorization: Bearer <access token>"
{
  "deletedAccount": true,
  "notesDeleted": 14,
  "categoriesDeleted": 6,
  "linkedProvidersDeleted": 2
}

删除数据

错误信息包含下一项有用操作

API 问题响应使用稳定的 code 标识故障,通过 detail 说明本次请求的问题,并提供客户端可显示或执行的 action。支持人员需要将请求与服务器诊断信息关联时,请提供 requestId。

阅读错误负载与恢复参考

登录

请处理机器可读的 code、保留 requestId,并遵循 action,而不要解析英文文本。

API 故障使用 application/problem+json 和 RFC 风格的问题详情对象。易读的 title 和 detail 文本可能随时间改进或进行本地化;code 才是供程序逻辑使用的稳定值。

问题响应结构

Content-Type: application/problem+json
{
  "type": "/en-US/api-docs#errors-and-problem-details",
  "title": "Trackable access is required.",
  "status": 403,
  "detail": "This request needs access to this specific trackable.",
  "instance": "/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/comments",
  "code": "trackable_access_code_required",
  "action": "Sign in, keep this trackable active in this client, or provide its secret code or private QR access value.",
  "requestId": "0HN7EXAMPLE:00000002",
  "documentation": "/en-US/api-docs#errors-and-problem-details"
}

各字段的用途

验证错误包含字段名称

HTTP 400 验证失败会附带 errors 对象。每个键都是需要更正的 JSON 属性或请求区域;每个值都是数组,因为一个字段可能违反多项规则。

{
  "type": "/en-US/api-docs#errors-and-problem-details",
  "title": "Request validation failed.",
  "status": 400,
  "detail": "One or more request fields are invalid. Correct every field listed in errors and submit the request again.",
  "instance": "/api/trackables",
  "code": "validation_failed",
  "action": "Correct every field listed in errors and submit the request again.",
  "requestId": "0HN7EXAMPLE:00000003",
  "documentation": "/en-US/api-docs#errors-and-problem-details",
  "errors": {
    "name": ["Name cannot be longer than 160 characters."],
    "secretCode": ["Secret code cannot be longer than 32 characters."]
  }
}

格式错误的 JSON 与内容类型

无效 JSON 属于请求验证失败。请保留 requestId、修正语法,并使用 Content-Type: application/json 重新发送正文。文件上传端点则要求 multipart/form-data,以及名称为 files 或 file(以具体路由为准)的部分。

即使请求正文语法有效,也可能不符合业务规则。字段级问题请读取 errors,程序逻辑请读取 code,上下文请读取 detail,下一步请读取 action。不要向用户显示原始服务器异常或堆栈跟踪。

状态 含义 恢复方法 重试指南
400 Bad Request JSON、查询值、字段约束或业务规则拒绝了该请求。 存在 errors 时请先读取它;否则读取 code、detail 和 action。修正请求后再重新发送。 请勿重试未作更改的请求。
401 Unauthorized 受保护的路由未收到可用的 Bearer 令牌。登录失败也会返回 401,但不会透露某个电子邮件地址是否存在。 获取或刷新令牌,确认 Bearer 方案和主机,然后将预期调用重试一次。 仅在身份验证状态改变后重试;重复未更改的尝试不会有帮助。
403 Forbidden 调用方身份已知,但缺少所需的所有权、团队角色、活动 Trackable 会话或由秘密代码支持的访问权限。 请按照 action 操作:使用符合条件的账户、请求访问权限、激活物品,或提供针对该 Trackable 的访问凭据。 在访问状态改变之前,请勿重试。
404 Not Found 未找到路由或资源。当调用方不应得知私密资源是否存在时,系统可能会特意将其显示为不存在。 确认请求方法、路由、GUID、公开代码和当前列表状态。刷新客户端中的过期数据。 请勿循环重试。仅在更正标识符或刷新状态后重试。
405 Method Not Allowed 路径存在,但使用了错误的 HTTP 方法,例如浏览器以 GET 打开仅支持 POST 的路由。 使用本文档所示的请求方法;响应提供 Allow 标头时,请检查该标头。 仅使用正确的请求方法和请求结构重试。
409 Conflict 请求有效,但与当前服务器状态冲突;其中包括所请求的 Trackable 秘密代码已被占用。 重新加载当前状态或更改冲突值。创建 Trackable 时,可以省略 secretCode 以生成代码,或选择另一个自定义代码。 请勿使用相同的创建值重试;只有在更改请求或状态后才可重试。
413 Content Too Large 请求正文或上传的文件集超过允许的大小。 减少图像数量或大小;如果工作流程允许,请拆分上传,并将元数据请求与媒体上传分开。 仅使用更小的负载重试。
415 Unsupported Media Type 正文编码与端点要求不匹配。 JSON 端点请使用 application/json,图像或 GPX 上传端点请使用 multipart/form-data。让 HTTP 库生成 multipart 边界。 仅在更正 Content-Type 和正文编码后重试。
429 Too Many Requests 客户端已超过请求限制,或在短时间内发送请求过快。 如果存在 Retry-After,请按其指示等待;同时降低并发量、缓存公开读取结果并合并重复请求。 按 Retry-After 指示等待;如果没有该标头,请使用带随机抖动和重试次数上限的指数退避。
500 Internal Server Error Geotrackable 已记录意外故障。响应不会暴露堆栈跟踪或内部机密。 如果响应中有 requestId 和 ticketNumber,请将其保留;然后联系支持团队,并提供时间、请求方法、路由模板、status 和 code。 延迟后可重试安全的读取操作。如果创建操作或其他非幂等写入的提交状态未知,请勿盲目重复执行。

谨慎重试写入操作

GET 请求通常可以安全重试。即使客户端在收到响应前超时,POST 也可能已经创建数据。再次创建 Trackable 前,请刷新 GET /api/trackables/mine 并核对结果,以免网络超时导致重复创建实体物品。

对于 429 或暂时性的 500,请使用带随机抖动且有上限的指数退避。当 action 指明必须更改请求本身时,应停止重试。绝不要把 400、403、404、405、409、413 或 415 变成自动重试循环。

在不泄露凭据的前提下保留有用诊断信息

绝不要记录 Authorization 标头、Bearer 或刷新令牌、密码、Cookie、secretCode、accessCode、QR 负载、私密扫描 URL 或原始 /trackable/{code} 入口路径。在遥测、崩溃报告、屏幕截图和支持附件中使用这些信息前,必须将其遮盖。

可安全记录的诊断字段包括 requestId、ticketNumber、HTTP status、稳定的 code、请求方法、路由模板、客户端版本和时间戳。如果完整请求正文可能包含位置文本、精确坐标、联系信息或 Trackable 凭据,请勿复制它。

POST /api/trackables -> 409
code=trackable_secret_code_taken
requestId=0HN7EXAMPLE:00000001
secretCode=[REDACTED]

已发布的 Geotrackable API 路由

此表从正在运行的 Geotrackable 端点表生成,使发布的文档与主机保持一致。

方法 路由 访问
DELETE /api/account 需要授权
GET /api/auth/confirmEmail 匿名
POST /api/auth/forgotPassword 匿名
POST /api/auth/login 匿名
POST /api/auth/manage/2fa 需要授权
GET /api/auth/manage/info 需要授权
POST /api/auth/manage/info 需要授权
POST /api/auth/refresh 匿名
POST /api/auth/register 匿名
POST /api/auth/resendConfirmationEmail 匿名
POST /api/auth/resetPassword 匿名
GET /api/categories/mine 需要授权
POST /api/categories/mine 需要授权
GET /api/categories/mine/tree 需要授权
GET /api/categories/mine/tree/children 需要授权
GET /api/categories/mine/tree/sections 需要授权
DELETE /api/categories/mine/{categoryId} 需要授权
POST /api/categories/mine/{categoryId}/move 需要授权
POST /api/compliance/errors 匿名
GET /api/compliance/reports 需要授权
POST /api/compliance/reports 匿名
GET /api/compliance/reports/mine 需要授权
GET /api/compliance/reports/{contentReportId} 需要授权
PUT /api/compliance/reports/{contentReportId} 需要授权
POST /api/external-links/verify 需要授权
GET /api/images/notes/{noteId} 匿名
POST /api/images/notes/{noteId} 需要授权
POST /api/images/profiles 需要授权
GET /api/images/profiles/{userId} 匿名
GET /api/images/teams/{teamId} 匿名
POST /api/images/teams/{teamId} 需要授权
GET /api/images/trackable-groups/{trackableGroupId} 匿名
POST /api/images/trackable-groups/{trackableGroupId} 需要授权
GET /api/images/trackables/{trackableId} 匿名
POST /api/images/trackables/{trackableId} 需要授权
DELETE /api/images/{contentImageId} 需要授权
GET /api/images/{contentImageId}/{variant} 匿名
GET /api/locations/mine/gpx 需要授权
POST /api/locations/mine/gpx 需要授权
GET /api/notes/mine 需要授权
POST /api/notes/mine 需要授权
GET /api/notes/mine/gpx 需要授权
POST /api/notes/mine/gpx 需要授权
DELETE /api/notes/mine/{noteId} 需要授权
POST /api/notes/mine/{noteId}/move 需要授权
GET /api/notes/public/bounds 匿名
GET /api/notes/public/nearby 匿名
GET /api/public/notes/{noteId} 匿名
GET /api/public/notes/{noteId}/comments 匿名
POST /api/public/notes/{noteId}/comments 需要授权
GET /api/public/notes/{noteId}/trackables 匿名
POST /api/public/notes/{noteId}/trackables 需要授权
GET /api/public/profiles/{userName}/notes/nearby 匿名
GET /api/public/teams/{teamName}/notes/nearby 匿名
POST /api/sync/pull 需要授权
POST /api/sync/push 需要授权
GET /api/system/beta-android 匿名
GET /api/system/coordinate-locality 匿名
GET /api/system/ip-location 匿名
GET /api/system/status 匿名
GET /api/teams 需要授权
POST /api/teams 需要授权
POST /api/teams/invite-links/{teamSlug}/{inviteCode}/join 需要授权
DELETE /api/teams/{teamId} 需要授权
GET /api/teams/{teamId}/categories 需要授权
POST /api/teams/{teamId}/categories 需要授权
GET /api/teams/{teamId}/categories/tree 需要授权
GET /api/teams/{teamId}/categories/tree/children 需要授权
GET /api/teams/{teamId}/categories/tree/sections 需要授权
DELETE /api/teams/{teamId}/categories/{categoryId} 需要授权
POST /api/teams/{teamId}/categories/{categoryId}/move 需要授权
GET /api/teams/{teamId}/invite-links 需要授权
POST /api/teams/{teamId}/invite-links 需要授权
DELETE /api/teams/{teamId}/invite-links/{inviteLinkId} 需要授权
GET /api/teams/{teamId}/locations/gpx 需要授权
POST /api/teams/{teamId}/locations/gpx 需要授权
POST /api/teams/{teamId}/memberships/invite 需要授权
POST /api/teams/{teamId}/memberships/request 需要授权
DELETE /api/teams/{teamId}/memberships/{membershipId} 需要授权
POST /api/teams/{teamId}/memberships/{membershipId}/accept 需要授权
POST /api/teams/{teamId}/memberships/{membershipId}/approve 需要授权
POST /api/teams/{teamId}/memberships/{membershipId}/deny 需要授权
POST /api/teams/{teamId}/memberships/{membershipId}/promote-admin 需要授权
POST /api/teams/{teamId}/memberships/{membershipId}/refuse 需要授权
GET /api/teams/{teamId}/notes 需要授权
POST /api/teams/{teamId}/notes 需要授权
GET /api/teams/{teamId}/notes/gpx 需要授权
POST /api/teams/{teamId}/notes/gpx 需要授权
DELETE /api/teams/{teamId}/notes/{noteId} 需要授权
DELETE /api/teams/{teamId}/notes/{noteId}/delete 需要授权
POST /api/teams/{teamId}/notes/{noteId}/move 需要授权
PUT /api/teams/{teamId}/settings 需要授权
POST /api/trackables 需要授权
GET /api/trackables/active 匿名
GET /api/trackables/active-indicator 匿名
DELETE /api/trackables/active/{trackableId} 匿名
GET /api/trackables/active/{trackableId} 匿名
POST /api/trackables/active/{trackableId}/deactivate 匿名
POST /api/trackables/active/{trackableId}/message 匿名
POST /api/trackables/groups 需要授权
DELETE /api/trackables/groups/{trackableGroupId}/watch 需要授权
POST /api/trackables/groups/{trackableGroupId}/watch 需要授权
POST /api/trackables/legacy-lookup 匿名
GET /api/trackables/lookup 匿名
POST /api/trackables/lookup 匿名
GET /api/trackables/mine 需要授权
GET /api/trackables/public 匿名
GET /api/trackables/{trackableId} 匿名
POST /api/trackables/{trackableId}/activate 需要授权
GET /api/trackables/{trackableId}/comments 匿名
POST /api/trackables/{trackableId}/comments 匿名
DELETE /api/trackables/{trackableId}/comments/{commentId} 需要授权
PUT /api/trackables/{trackableId}/comments/{commentId} 需要授权
DELETE /api/trackables/{trackableId}/group 需要授权
POST /api/trackables/{trackableId}/group 需要授权
GET /api/trackables/{trackableId}/journey 匿名
POST /api/trackables/{trackableId}/journey-stops 匿名
DELETE /api/trackables/{trackableId}/journey-stops/{journeyStopId} 需要授权
DELETE /api/trackables/{trackableId}/watch 需要授权
POST /api/trackables/{trackableId}/watch 需要授权

DELETE /api/account

已认证客户端可以通过 API 永久删除当前账户和已同步的个人数据。需要导出步骤或共享可追踪物保留规则时,请先阅读删除数据页面。

curl -X DELETE "https://Geotrackable.com/api/account" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns deletion counts after the signed-in account and eligible personal data were permanently removed. A successful response signs the current session out.

常见故障与恢复方法

401 requires a valid bearer token. 400 explains why deletion cannot complete. Account deletion is destructive: do not automatically retry after an unknown timeout; check sign-in state first.

GET /api/auth/confirmEmail

Complete email confirmation with the user ID and URL-encoded confirmation code from the confirmation link.

curl "https://Geotrackable.com/api/auth/confirmEmail?userId=13a2c0b1-582f-4a7b-92aa-16922f7bdb63&code=URL_ENCODED_CONFIRMATION_CODE"

成功响应

HTTP 200 means the identity operation completed. Read the returned identity payload when the operation provides one; password and confirmation operations can intentionally return an empty success body.

常见故障与恢复方法

400 includes field-level identity validation guidance; 401 means the bearer token or credentials are unusable. Follow action and do not retry unchanged credentials in a loop.

POST /api/auth/forgotPassword

Start an email-based account recovery or confirmation workflow. The response deliberately does not reveal whether the email address exists.

curl -X POST "https://Geotrackable.com/api/auth/forgotPassword" \
  -H "Content-Type: application/json" \
  -d '{ "email": "api-user@example.com" }'

成功响应

HTTP 200 means the identity operation completed. Read the returned identity payload when the operation provides one; password and confirmation operations can intentionally return an empty success body.

常见故障与恢复方法

400 includes field-level identity validation guidance; 401 means the bearer token or credentials are unusable. Follow action and do not retry unchanged credentials in a loop.

POST /api/auth/login

Exchange local account credentials, and a two-factor value when required, for bearer and refresh tokens. API clients must keep cookies disabled.

curl -X POST "https://Geotrackable.com/api/auth/login?useCookies=false&useSessionCookies=false" \
  -H "Content-Type: application/json" \
  -d '{ "email": "api-user@example.com", "password": "Use-a-strong-password-123!" }'

成功响应

HTTP 200 returns tokenType, accessToken, expiration data, and the signed-in user summary. Store credentials in platform-secure storage and never log them.

常见故障与恢复方法

400 covers malformed JSON or missing fields. 401 authentication_failed deliberately does not reveal whether the email exists; verify credentials or use the password-reset flow before retrying. A 401 two_factor_required response keeps requiresTwoFactor true and tells the client to repeat login with either twoFactorCode or twoFactorRecoveryCode.

POST /api/auth/manage/2fa

Enable, disable, reset, or inspect two-factor authentication for the signed-in account. Authenticator and recovery values are sensitive credentials.

curl -X POST "https://Geotrackable.com/api/auth/manage/2fa" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "enable": true, "twoFactorCode": "123456", "resetSharedKey": false, "resetRecoveryCodes": false, "forgetMachine": false }'

成功响应

HTTP 200 means the identity operation completed. Read the returned identity payload when the operation provides one; password and confirmation operations can intentionally return an empty success body.

常见故障与恢复方法

400 includes field-level identity validation guidance; 401 means the bearer token or credentials are unusable. Follow action and do not retry unchanged credentials in a loop.

GET /api/auth/manage/info

Read the signed-in account email and confirmation state, or update the email/password with the current password when required.

curl "https://Geotrackable.com/api/auth/manage/info" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 means the identity operation completed. Read the returned identity payload when the operation provides one; password and confirmation operations can intentionally return an empty success body.

常见故障与恢复方法

400 includes field-level identity validation guidance; 401 means the bearer token or credentials are unusable. Follow action and do not retry unchanged credentials in a loop.

POST /api/auth/manage/info

Read the signed-in account email and confirmation state, or update the email/password with the current password when required.

curl -X POST "https://Geotrackable.com/api/auth/manage/info" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "newEmail": "new-api-user@example.com", "oldPassword": "Use-a-strong-password-123!" }'

成功响应

HTTP 200 means the identity operation completed. Read the returned identity payload when the operation provides one; password and confirmation operations can intentionally return an empty success body.

常见故障与恢复方法

400 includes field-level identity validation guidance; 401 means the bearer token or credentials are unusable. Follow action and do not retry unchanged credentials in a loop.

POST /api/auth/refresh

Exchange a still-usable refresh token for a new access-token response without resending the account password.

curl -X POST "https://Geotrackable.com/api/auth/refresh" \
  -H "Content-Type: application/json" \
  -d '{ "refreshToken": "<refresh token from login>" }'

成功响应

HTTP 200 means the identity operation completed. Read the returned identity payload when the operation provides one; password and confirmation operations can intentionally return an empty success body.

常见故障与恢复方法

400 includes field-level identity validation guidance; 401 means the bearer token or credentials are unusable. Follow action and do not retry unchanged credentials in a loop.

POST /api/auth/register

Create a local account with an email address, public user name, and strong password. Registration does not return a bearer token; sign in next.

curl -X POST "https://Geotrackable.com/api/auth/register" \
  -H "Content-Type: application/json" \
  -d '{ "email": "api-user@example.com", "userName": "api_trail_user", "password": "Use-a-strong-password-123!" }'

成功响应

HTTP 200 means the local account was created. The response has no bearer token; call the login route next.

常见故障与恢复方法

400 validation_failed identifies malformed JSON or email, password, and userName field errors. Correct the listed errors; duplicate values require a different email or public user name.

POST /api/auth/resendConfirmationEmail

Start an email-based account recovery or confirmation workflow. The response deliberately does not reveal whether the email address exists.

curl -X POST "https://Geotrackable.com/api/auth/resendConfirmationEmail" \
  -H "Content-Type: application/json" \
  -d '{ "email": "api-user@example.com" }'

成功响应

HTTP 200 means the identity operation completed. Read the returned identity payload when the operation provides one; password and confirmation operations can intentionally return an empty success body.

常见故障与恢复方法

400 includes field-level identity validation guidance; 401 means the bearer token or credentials are unusable. Follow action and do not retry unchanged credentials in a loop.

POST /api/auth/resetPassword

Complete password recovery with the exact reset code from email and a new strong password. Reset codes are credentials and must not be logged.

curl -X POST "https://Geotrackable.com/api/auth/resetPassword" \
  -H "Content-Type: application/json" \
  -d '{ "email": "api-user@example.com", "resetCode": "URL_ENCODED_RESET_CODE", "newPassword": "Use-a-new-strong-password-456!" }'

成功响应

HTTP 200 means the identity operation completed. Read the returned identity payload when the operation provides one; password and confirmation operations can intentionally return an empty success body.

常见故障与恢复方法

400 includes field-level identity validation guidance; 401 means the bearer token or credentials are unusable. Follow action and do not retry unchanged credentials in a loop.

GET /api/categories/mine

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/categories/mine" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the personal category list, management tree, sections, or requested children. Empty branches are successful.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

POST /api/categories/mine

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl -X POST "https://Geotrackable.com/api/categories/mine" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Trail research", "contentLanguage": "en-US", "parentCategoryId": null }'

成功响应

HTTP 200 returns the created or moved category, or acknowledges deletion after descendant rules are satisfied.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

GET /api/categories/mine/tree

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/categories/mine/tree" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the personal category list, management tree, sections, or requested children. Empty branches are successful.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

GET /api/categories/mine/tree/children

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/categories/mine/tree/children" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the personal category list, management tree, sections, or requested children. Empty branches are successful.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

GET /api/categories/mine/tree/sections

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/categories/mine/tree/sections" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the personal category list, management tree, sections, or requested children. Empty branches are successful.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

DELETE /api/categories/mine/{categoryId}

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl -X DELETE "https://Geotrackable.com/api/categories/mine/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the created or moved category, or acknowledges deletion after descendant rules are satisfied.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

POST /api/categories/mine/{categoryId}/move

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl -X POST "https://Geotrackable.com/api/categories/mine/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/move" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "parentCategoryId": null }'

成功响应

HTTP 200 returns the created or moved category, or acknowledges deletion after descendant rules are satisfied.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

POST /api/compliance/errors

媒体和支持路由遵循其关联页面或内容的可见性。

curl -X POST "https://Geotrackable.com/api/compliance/errors" \
  -H "Content-Type: application/json" \
  -d '{ "requestUrl": "/api/example", "httpMethod": "POST", "responseStatusCode": 500, "traceIdentifier": "0HN7EXAMPLE:00000004", "userExplanation": "The save failed after the map was updated." }'

成功响应

HTTP 200 or 201 returns an error ticket receipt. HTTP 200 means the request was attached to an existing ticket; HTTP 201 means a new ticket was created.

常见故障与恢复方法

400 explains missing report context or invalid workflow state; 401 protects personal/admin lists; 403 requires the appropriate reporter or SuperAdmin role; 404 means preserve the ID but refresh the report list.

GET /api/compliance/reports

媒体和支持路由遵循其关联页面或内容的可见性。

curl "https://Geotrackable.com/api/compliance/reports" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the report or report collection visible to the signed-in reporter or authorized administrator.

常见故障与恢复方法

400 explains missing report context or invalid workflow state; 401 protects personal/admin lists; 403 requires the appropriate reporter or SuperAdmin role; 404 means preserve the ID but refresh the report list.

POST /api/compliance/reports

媒体和支持路由遵循其关联页面或内容的可见性。

curl -X POST "https://Geotrackable.com/api/compliance/reports" \
  -H "Content-Type: application/json" \
  -d '{ "pageType": "Trackable", "contentType": "Trackable", "pageTitle": "Scout trail coin", "pageUrl": "/trackable/GT-EXAMPLE", "reportTitle": "Outdated public link", "reportExplanation": "The destination is no longer related to this trackable." }'

成功响应

HTTP 201 returns the content-report receipt and report identifier for later follow-up.

常见故障与恢复方法

400 explains missing report context or invalid workflow state; 401 protects personal/admin lists; 403 requires the appropriate reporter or SuperAdmin role; 404 means preserve the ID but refresh the report list.

GET /api/compliance/reports/mine

媒体和支持路由遵循其关联页面或内容的可见性。

curl "https://Geotrackable.com/api/compliance/reports/mine" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the report or report collection visible to the signed-in reporter or authorized administrator.

常见故障与恢复方法

400 explains missing report context or invalid workflow state; 401 protects personal/admin lists; 403 requires the appropriate reporter or SuperAdmin role; 404 means preserve the ID but refresh the report list.

GET /api/compliance/reports/{contentReportId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl "https://Geotrackable.com/api/compliance/reports/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the report or report collection visible to the signed-in reporter or authorized administrator.

常见故障与恢复方法

400 explains missing report context or invalid workflow state; 401 protects personal/admin lists; 403 requires the appropriate reporter or SuperAdmin role; 404 means preserve the ID but refresh the report list.

PUT /api/compliance/reports/{contentReportId}

媒体和支持路由遵循其关联页面或内容的可见性。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X PUT "https://Geotrackable.com/api/compliance/reports/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the report or report collection visible to the signed-in reporter or authorized administrator.

常见故障与恢复方法

400 explains missing report context or invalid workflow state; 401 protects personal/admin lists; 403 requires the appropriate reporter or SuperAdmin role; 404 means preserve the ID but refresh the report list.

POST /api/external-links/verify

媒体和支持路由遵循其关联页面或内容的可见性。

curl -X POST "https://Geotrackable.com/api/external-links/verify" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com/resource" }'

成功响应

HTTP 200 returns the normalized destination, verified page title, and safe metadata the editor can use before saving the link.

常见故障与恢复方法

400 includes detail, action, supportUrl, and upstreamStatusCode when available. Correct blocked, private-network, malformed, unreachable, or unsupported destinations before retrying verification.

GET /api/images/notes/{noteId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl "https://Geotrackable.com/api/images/notes/13a2c0b1-582f-4a7b-92aa-16922f7bdb63"

成功响应

HTTP 200 returns the visible managed image metadata for that profile, note, team, trackable, or group; an empty array is valid.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

POST /api/images/notes/{noteId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl -X POST "https://Geotrackable.com/api/images/notes/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>" \
  -F "files=@example.jpg"

成功响应

HTTP 200 returns managed image metadata and URLs after screening and JPEG variant processing. Use the returned URLs instead of assuming the original filename survives.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

POST /api/images/profiles

媒体和支持路由遵循其关联页面或内容的可见性。

curl -X POST "https://Geotrackable.com/api/images/profiles" \
  -H "Authorization: Bearer <access token>" \
  -F "files=@example.jpg"

成功响应

HTTP 200 returns managed image metadata and URLs after screening and JPEG variant processing. Use the returned URLs instead of assuming the original filename survives.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

GET /api/images/profiles/{userId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl "https://Geotrackable.com/api/images/profiles/13a2c0b1-582f-4a7b-92aa-16922f7bdb63"

成功响应

HTTP 200 returns the visible managed image metadata for that profile, note, team, trackable, or group; an empty array is valid.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

GET /api/images/teams/{teamId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl "https://Geotrackable.com/api/images/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63"

成功响应

HTTP 200 returns the visible managed image metadata for that profile, note, team, trackable, or group; an empty array is valid.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

POST /api/images/teams/{teamId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl -X POST "https://Geotrackable.com/api/images/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>" \
  -F "files=@example.jpg"

成功响应

HTTP 200 returns managed image metadata and URLs after screening and JPEG variant processing. Use the returned URLs instead of assuming the original filename survives.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

GET /api/images/trackable-groups/{trackableGroupId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl "https://Geotrackable.com/api/images/trackable-groups/13a2c0b1-582f-4a7b-92aa-16922f7bdb63"

成功响应

HTTP 200 returns the visible managed image metadata for that profile, note, team, trackable, or group; an empty array is valid.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

POST /api/images/trackable-groups/{trackableGroupId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl -X POST "https://Geotrackable.com/api/images/trackable-groups/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>" \
  -F "files=@example.jpg"

成功响应

HTTP 200 returns managed image metadata and URLs after screening and JPEG variant processing. Use the returned URLs instead of assuming the original filename survives.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

GET /api/images/trackables/{trackableId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl "https://Geotrackable.com/api/images/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63"

成功响应

HTTP 200 returns the visible managed image metadata for that profile, note, team, trackable, or group; an empty array is valid.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

POST /api/images/trackables/{trackableId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl -X POST "https://Geotrackable.com/api/images/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>" \
  -F "files=@example.jpg"

成功响应

HTTP 200 returns managed image metadata and URLs after screening and JPEG variant processing. Use the returned URLs instead of assuming the original filename survives.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

DELETE /api/images/{contentImageId}

媒体和支持路由遵循其关联页面或内容的可见性。

curl -X DELETE "https://Geotrackable.com/api/images/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 204 confirms the image and its managed variants were deleted; there is no response body.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

GET /api/images/{contentImageId}/{variant}

媒体和支持路由遵循其关联页面或内容的可见性。

curl "https://Geotrackable.com/api/images/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/thumbnail"

成功响应

HTTP 200 streams the requested visible JPEG variant with an image content type.

常见故障与恢复方法

400 image_variant_invalid lists the supported download variants and other 400 responses explain screening constraints; 401/403 require a valid owner or team-admin context; 404 means the content is missing or not visible; 500 image_variant_unavailable means metadata exists but the stored variant could not be served. 413 requires fewer or smaller files; 415 requires multipart/form-data for uploads.

GET /api/locations/mine/gpx

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/locations/mine/gpx" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 downloads GPX containing the eligible mapped waypoints in this scope.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

POST /api/locations/mine/gpx

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl -X POST "https://Geotrackable.com/api/locations/mine/gpx" \
  -H "Authorization: Bearer <access token>" \
  -F "file=@waypoints.gpx"

成功响应

HTTP 200 returns import counts and item-level results after the GPX waypoint file is processed.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

GET /api/notes/mine

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/notes/mine" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the visible note, comment, attachment, or map result. Empty collections are successful; a missing single resource returns 404.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

POST /api/notes/mine

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl -X POST "https://Geotrackable.com/api/notes/mine" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Trailhead", "body": "Parking and route notes.", "contentLanguage": "en-US", "latitude": 41.8818, "longitude": -87.6231, "visibility": "Private" }'

成功响应

HTTP 200 returns the saved note, comment, attachment, move result, or deletion acknowledgement for the requested scope.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

GET /api/notes/mine/gpx

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/notes/mine/gpx" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 downloads GPX containing the eligible mapped waypoints in this scope.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

POST /api/notes/mine/gpx

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl -X POST "https://Geotrackable.com/api/notes/mine/gpx" \
  -H "Authorization: Bearer <access token>" \
  -F "file=@waypoints.gpx"

成功响应

HTTP 200 returns import counts and item-level results after the GPX waypoint file is processed.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

DELETE /api/notes/mine/{noteId}

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl -X DELETE "https://Geotrackable.com/api/notes/mine/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the saved note, comment, attachment, move result, or deletion acknowledgement for the requested scope.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

POST /api/notes/mine/{noteId}/move

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/notes/mine/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/move" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the saved note, comment, attachment, move result, or deletion acknowledgement for the requested scope.

常见故障与恢复方法

400 identifies field, hierarchy, bounds, GPX, or move/delete rules; 401 requires a token; 403 requires ownership; 404 means refresh personal workspace state. Uploads can also return 413 or 415.

GET /api/notes/public/bounds

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/notes/public/bounds?minLatitude=41.78&minLongitude=-87.75&maxLatitude=41.96&maxLongitude=-87.54&contentLanguage=en-US"

成功响应

HTTP 200 returns the visible note, comment, attachment, or map result. Empty collections are successful; a missing single resource returns 404.

常见故障与恢复方法

400 identifies incomplete bounds, invalid coordinate ranges, or invalid comment/attachment input; 403 protects restricted writes; 404 can hide a private or missing page. Correct the query as directed by errors and action.

GET /api/notes/public/nearby

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/notes/public/nearby?latitude=41.8818&longitude=-87.6231&radiusKm=8&contentLanguage=en-US"

成功响应

HTTP 200 returns the visible note, comment, attachment, or map result. Empty collections are successful; a missing single resource returns 404.

常见故障与恢复方法

400 identifies incomplete bounds, invalid coordinate ranges, or invalid comment/attachment input; 403 protects restricted writes; 404 can hide a private or missing page. Correct the query as directed by errors and action.

GET /api/public/notes/{noteId}

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/public/notes/13a2c0b1-582f-4a7b-92aa-16922f7bdb63"

成功响应

HTTP 200 returns the visible note, comment, attachment, or map result. Empty collections are successful; a missing single resource returns 404.

常见故障与恢复方法

400 identifies incomplete bounds, invalid coordinate ranges, or invalid comment/attachment input; 403 protects restricted writes; 404 can hide a private or missing page. Correct the query as directed by errors and action.

GET /api/public/notes/{noteId}/comments

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/public/notes/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/comments"

成功响应

HTTP 200 returns the visible comment panel, policy, and current comments. An empty comment list is a successful result.

常见故障与恢复方法

400 trackable_activation_required means an eligible owner must activate first; 403 trackable_access_code_required or trackable_access_code_invalid requires this exact item's session or credential; 404 means refresh stale IDs.

POST /api/public/notes/{noteId}/comments

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl -X POST "https://Geotrackable.com/api/public/notes/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/comments" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "body": "Found near the overlook.", "accessCode": "" }'

成功响应

HTTP 200 returns the saved comment state. Anonymous writes require this client's active session or an accessCode for this exact activated trackable.

常见故障与恢复方法

400 trackable_activation_required means an eligible owner must activate first; 403 trackable_access_code_required or trackable_access_code_invalid requires this exact item's session or credential; 404 means refresh stale IDs.

GET /api/public/notes/{noteId}/trackables

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/public/notes/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/trackables"

成功响应

HTTP 200 returns the visible note, comment, attachment, or map result. Empty collections are successful; a missing single resource returns 404.

常见故障与恢复方法

400 identifies incomplete bounds, invalid coordinate ranges, or invalid comment/attachment input; 403 protects restricted writes; 404 can hide a private or missing page. Correct the query as directed by errors and action.

POST /api/public/notes/{noteId}/trackables

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl -X POST "https://Geotrackable.com/api/public/notes/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/trackables" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "trackableSecretCodes": "TAG42", "selectedActiveTrackableIds": [] }'

成功响应

HTTP 200 returns the saved note, comment, attachment, move result, or deletion acknowledgement for the requested scope.

常见故障与恢复方法

400 identifies incomplete bounds, invalid coordinate ranges, or invalid comment/attachment input; 403 protects restricted writes; 404 can hide a private or missing page. Correct the query as directed by errors and action.

GET /api/public/profiles/{userName}/notes/nearby

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/public/profiles/trail-guide/notes/nearby?latitude=41.8818&longitude=-87.6231&radiusKm=8&contentLanguage=en-US"

成功响应

HTTP 200 returns the visible note, comment, attachment, or map result. Empty collections are successful; a missing single resource returns 404.

常见故障与恢复方法

400 identifies incomplete bounds, invalid coordinate ranges, or invalid comment/attachment input; 403 protects restricted writes; 404 can hide a private or missing page. Correct the query as directed by errors and action.

GET /api/public/teams/{teamName}/notes/nearby

公共地图读取允许匿名访问;写入个人位置和类别需要 bearer 身份验证。

curl "https://Geotrackable.com/api/public/teams/trail-club/notes/nearby?latitude=41.8818&longitude=-87.6231&radiusKm=8&contentLanguage=en-US"

成功响应

HTTP 200 returns the visible note, comment, attachment, or map result. Empty collections are successful; a missing single resource returns 404.

常见故障与恢复方法

400 identifies incomplete bounds, invalid coordinate ranges, or invalid comment/attachment input; 403 protects restricted writes; 404 can hide a private or missing page. Correct the query as directed by errors and action.

POST /api/sync/pull

请先推送本地更改,然后拉取该用户和当前公共区域的服务器视图。

curl -X POST "https://Geotrackable.com/api/sync/pull" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "lastSyncUtc": "2026-06-20T11:30:00Z", "publicArea": { "minLatitude": 41.78, "minLongitude": -87.75, "maxLatitude": 41.96, "maxLongitude": -87.54 } }'

成功响应

HTTP 200 returns the current personal, public, and team synchronization view. Call this after push in each offline cycle.

常见故障与恢复方法

400 identifies malformed sync envelopes or a request rejected before processing; 401 requires a new bearer token. Per-entity reconciliation problems return HTTP 200 inside conflicts with code and action. Never retry push blindly after an unknown timeout.

POST /api/sync/push

请先推送本地更改,然后拉取该用户和当前公共区域的服务器视图。

curl -X POST "https://Geotrackable.com/api/sync/push" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "deviceId": "5dd06ca7-34a5-4f2e-812d-3f1ef3e48290", "notes": [], "categories": [] }'

成功响应

HTTP 200 acknowledges accepted client changes and reports synchronization results. Preserve client IDs so the following pull can reconcile the same records.

常见故障与恢复方法

400 identifies malformed sync envelopes or a request rejected before processing; 401 requires a new bearer token. Per-entity reconciliation problems return HTTP 200 inside conflicts with code and action. Never retry push blindly after an unknown timeout.

GET /api/system/beta-android

此路由允许匿名访问,是确认生产 API 主机可达的最快方式。

curl "https://Geotrackable.com/api/system/beta-android"

成功响应

HTTP 200 returns current Android beta release metadata and download guidance when a beta package is published.

常见故障与恢复方法

400 identifies missing or malformed query binding; 500 includes requestId for support. Optional Android beta data returns HTTP 200 with available:false. Coordinate range and location-provider failures return HTTP 200 with resolved:false plus failureMessage, action, and retryable.

GET /api/system/coordinate-locality

此路由允许匿名访问,是确认生产 API 主机可达的最快方式。

curl "https://Geotrackable.com/api/system/coordinate-locality?latitude=41.8818&longitude=-87.6231"

成功响应

HTTP 200 returns the best available locality facts. A successful response can contain partial or unavailable location fields when resolution is intentionally limited.

常见故障与恢复方法

400 identifies missing or malformed query binding; 500 includes requestId for support. Optional Android beta data returns HTTP 200 with available:false. Coordinate range and location-provider failures return HTTP 200 with resolved:false plus failureMessage, action, and retryable.

GET /api/system/ip-location

此路由允许匿名访问,是确认生产 API 主机可达的最快方式。

curl "https://Geotrackable.com/api/system/ip-location"

成功响应

HTTP 200 returns the best available locality facts. A successful response can contain partial or unavailable location fields when resolution is intentionally limited.

常见故障与恢复方法

400 identifies missing or malformed query binding; 500 includes requestId for support. Optional Android beta data returns HTTP 200 with available:false. Coordinate range and location-provider failures return HTTP 200 with resolved:false plus failureMessage, action, and retryable.

GET /api/system/status

此路由允许匿名访问,是确认生产 API 主机可达的最快方式。

curl "https://Geotrackable.com/api/system/status"

成功响应

HTTP 200 returns the service status, server UTC time, and Android beta-page URL. This confirms reachability, not authenticated access.

常见故障与恢复方法

A network, DNS, TLS, or 500 failure means the host check did not complete. Preserve requestId when returned and use bounded backoff; status does not return 401.

GET /api/teams

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl "https://Geotrackable.com/api/teams" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the team, workspace, membership, category, note, or invite-link data visible to the signed-in member.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X POST "https://Geotrackable.com/api/teams" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Trail Club", "title": "Trail Club", "description": "Shared field work.", "joinPolicy": "InviteOnly", "pageVisibility": "Public", "defaultNoteVisibility": "Public", "contentLanguage": "en-US" }'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/invite-links/{teamSlug}/{inviteCode}/join

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/teams/invite-links/trail-club/INVITE-CODE/join" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

DELETE /api/teams/{teamId}

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X DELETE "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

GET /api/teams/{teamId}/categories

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/categories" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the team, workspace, membership, category, note, or invite-link data visible to the signed-in member.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/categories

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/categories" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Team trail research", "contentLanguage": "en-US", "parentCategoryId": null }'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

GET /api/teams/{teamId}/categories/tree

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/categories/tree" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the team, workspace, membership, category, note, or invite-link data visible to the signed-in member.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

GET /api/teams/{teamId}/categories/tree/children

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/categories/tree/children" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the team, workspace, membership, category, note, or invite-link data visible to the signed-in member.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

GET /api/teams/{teamId}/categories/tree/sections

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/categories/tree/sections" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the team, workspace, membership, category, note, or invite-link data visible to the signed-in member.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

DELETE /api/teams/{teamId}/categories/{categoryId}

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X DELETE "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/categories/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/categories/{categoryId}/move

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/categories/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/move" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "parentCategoryId": null }'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

GET /api/teams/{teamId}/invite-links

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/invite-links" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the team, workspace, membership, category, note, or invite-link data visible to the signed-in member.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/invite-links

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/invite-links" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "isSingleUse": true }'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

DELETE /api/teams/{teamId}/invite-links/{inviteLinkId}

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X DELETE "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/invite-links/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

GET /api/teams/{teamId}/locations/gpx

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/locations/gpx" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 downloads GPX for mapped team waypoints visible to the member.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/locations/gpx

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/locations/gpx" \
  -H "Authorization: Bearer <access token>" \
  -F "file=@waypoints.gpx"

成功响应

HTTP 200 returns team GPX import counts and item-level results.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/memberships/invite

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/memberships/invite" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/memberships/request

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/memberships/request" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

DELETE /api/teams/{teamId}/memberships/{membershipId}

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X DELETE "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/memberships/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/memberships/{membershipId}/accept

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/memberships/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/accept" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/memberships/{membershipId}/approve

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/memberships/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/approve" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/memberships/{membershipId}/deny

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/memberships/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/deny" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/memberships/{membershipId}/promote-admin

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/memberships/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/promote-admin" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/memberships/{membershipId}/refuse

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/memberships/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/refuse" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

GET /api/teams/{teamId}/notes

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/notes" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the team, workspace, membership, category, note, or invite-link data visible to the signed-in member.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/notes

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/notes" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Team trailhead", "body": "Shared route notes.", "contentLanguage": "en-US", "latitude": 41.8818, "longitude": -87.6231, "visibility": "Public" }'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

GET /api/teams/{teamId}/notes/gpx

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/notes/gpx" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 downloads GPX for mapped team waypoints visible to the member.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/notes/gpx

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/notes/gpx" \
  -H "Authorization: Bearer <access token>" \
  -F "file=@waypoints.gpx"

成功响应

HTTP 200 returns team GPX import counts and item-level results.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

DELETE /api/teams/{teamId}/notes/{noteId}

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X DELETE "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/notes/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

DELETE /api/teams/{teamId}/notes/{noteId}/delete

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

curl -X DELETE "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/notes/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/delete" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/teams/{teamId}/notes/{noteId}/move

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/notes/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/move" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

PUT /api/teams/{teamId}/settings

团队 API 管理共享位置、类别、邀请链接、成员资格决定以及团队拥有的可追踪物范围。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X PUT "https://Geotrackable.com/api/teams/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/settings" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting team state or acknowledges the membership, workspace, invite, settings, or deletion operation.

常见故障与恢复方法

400 explains membership, invite, hierarchy, GPX, move, or deletion rules; 401 requires login; 403 requires the stated member/admin role; 404 means refresh team state before submitting another change.

POST /api/trackables

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X POST "https://Geotrackable.com/api/trackables" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Scout trail coin", "description": "Move this coin along family-friendly trails.", "visibility": "AlwaysVisibleToEveryone", "activateImmediately": true }'

成功响应

HTTP 201 returns the one-time reveal. Omit secretCode for a generated GT code; an available allowed custom value is honored. Save secretCode and scanUrl now because read routes do not reveal them later.

常见故障与恢复方法

400 validation_failed identifies invalid fields; 400 trackable_secret_code_reserved explains GT, LN, TB, GK, or GC prefixes; 409 trackable_secret_code_taken means omit secretCode for generation or choose another value; 401 requires login.

GET /api/trackables/active

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl "https://Geotrackable.com/api/trackables/active"

成功响应

HTTP 200 returns the active secret-backed trackables remembered by this client. An empty array is a successful result, not an authentication failure.

常见故障与恢复方法

404 means this client no longer has the requested active trackable session; revisit the private code or scan route. 400 covers invalid status text. This session uses cookies, so preserve the cookie jar across calls.

GET /api/trackables/active-indicator

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl "https://Geotrackable.com/api/trackables/active-indicator"

成功响应

HTTP 200 returns the trackable data visible in the caller's public, signed-in, or active-session access context.

常见故障与恢复方法

404 means this client no longer has the requested active trackable session; revisit the private code or scan route. 400 covers invalid status text. This session uses cookies, so preserve the cookie jar across calls.

DELETE /api/trackables/active/{trackableId}

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X DELETE "https://Geotrackable.com/api/trackables/active/13a2c0b1-582f-4a7b-92aa-16922f7bdb63"

成功响应

HTTP 200 ends this client's remembered secret-backed session for the item. It does not delete or deactivate the trackable.

常见故障与恢复方法

404 means this client no longer has the requested active trackable session; revisit the private code or scan route. 400 covers invalid status text. This session uses cookies, so preserve the cookie jar across calls.

GET /api/trackables/active/{trackableId}

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl "https://Geotrackable.com/api/trackables/active/13a2c0b1-582f-4a7b-92aa-16922f7bdb63"

成功响应

HTTP 200 returns the current active landing state or updated status message for the trackable while this client still has its secret-backed session.

常见故障与恢复方法

404 means this client no longer has the requested active trackable session; revisit the private code or scan route. 400 covers invalid status text. This session uses cookies, so preserve the cookie jar across calls.

POST /api/trackables/active/{trackableId}/deactivate

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/trackables/active/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/deactivate" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the current active landing state or updated status message for the trackable while this client still has its secret-backed session.

常见故障与恢复方法

404 means this client no longer has the requested active trackable session; revisit the private code or scan route. 400 covers invalid status text. This session uses cookies, so preserve the cookie jar across calls.

POST /api/trackables/active/{trackableId}/message

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X POST "https://Geotrackable.com/api/trackables/active/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/message" \
  -H "Content-Type: application/json" \
  -d '{ "statusMessage": "Live hunt in progress" }'

成功响应

HTTP 200 returns the current active landing state or updated status message for the trackable while this client still has its secret-backed session.

常见故障与恢复方法

404 means this client no longer has the requested active trackable session; revisit the private code or scan route. 400 covers invalid status text. This session uses cookies, so preserve the cookie jar across calls.

POST /api/trackables/groups

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X POST "https://Geotrackable.com/api/trackables/groups" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Trail event set", "description": "Event inventory", "trackableCount": 12, "visibility": "AlwaysVisibleToEveryone", "activateImmediately": false, "watchGroupActivityWhenCreated": true }'

成功响应

HTTP 201 returns the new group plus the one-time public, secret, and scan credentials for every generated member. Persist the reveal before leaving the response.

常见故障与恢复方法

400 explains invalid defaults, count, visibility, category, or team rules; 401 requires login; 403 means the caller cannot create in that team. Correct the request before retrying the batch.

DELETE /api/trackables/groups/{trackableGroupId}/watch

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X DELETE "https://Geotrackable.com/api/trackables/groups/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/watch" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the resulting trackable or group state after the signed-in account's watch preference changes. Repeating the desired final state should not create duplicate watches.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

POST /api/trackables/groups/{trackableGroupId}/watch

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/trackables/groups/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/watch" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting trackable or group state after the signed-in account's watch preference changes. Repeating the desired final state should not create duplicate watches.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

POST /api/trackables/legacy-lookup

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/trackables/legacy-lookup" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting trackable state after the requested ownership, grouping, or monitoring operation completes.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

GET /api/trackables/lookup

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl "https://Geotrackable.com/api/trackables/lookup?code=GT-EXAMPLE"

成功响应

HTTP 200 returns found, the resolved trackable ID, match type, and redirect guidance. An ordinary mistyped or unknown code is also HTTP 200 with found false so lookup UI can remain in place.

常见故障与恢复方法

An unknown or mistyped code is normally HTTP 200 with found false, not problem details. 400 is reserved for malformed input. Never log the submitted secret or QR value while diagnosing lookup.

POST /api/trackables/lookup

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X POST "https://Geotrackable.com/api/trackables/lookup" \
  -H "Content-Type: application/json" \
  -d '{ "code": "GT-EXAMPLE" }'

成功响应

HTTP 200 returns found, the resolved trackable ID, match type, and redirect guidance. An ordinary mistyped or unknown code is also HTTP 200 with found false so lookup UI can remain in place.

常见故障与恢复方法

An unknown or mistyped code is normally HTTP 200 with found false, not problem details. 400 is reserved for malformed input. Never log the submitted secret or QR value while diagnosing lookup.

GET /api/trackables/mine

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl "https://Geotrackable.com/api/trackables/mine" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the trackable data visible in the caller's public, signed-in, or active-session access context.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

GET /api/trackables/public

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl "https://Geotrackable.com/api/trackables/public?contentLanguage=en-US"

成功响应

HTTP 200 returns the trackable data visible in the caller's public, signed-in, or active-session access context.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

GET /api/trackables/{trackableId}

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63"

成功响应

HTTP 200 returns the trackable data visible in the caller's public, signed-in, or active-session access context.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

POST /api/trackables/{trackableId}/activate

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X POST "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/activate" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Activated trail coin", "description": "Ready to travel", "teamId": null }'

成功响应

HTTP 200 returns the activated trackable details after personal or team ownership and item-level metadata are established.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

GET /api/trackables/{trackableId}/comments

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/comments"

成功响应

HTTP 200 returns the visible comment panel, policy, and current comments. An empty comment list is a successful result.

常见故障与恢复方法

400 trackable_activation_required means an eligible owner must activate first; 403 trackable_access_code_required or trackable_access_code_invalid requires this exact item's session or credential; 404 means refresh stale IDs.

POST /api/trackables/{trackableId}/comments

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X POST "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/comments" \
  -H "Content-Type: application/json" \
  -d '{ "body": "Found near the overlook.", "accessCode": "" }'

成功响应

HTTP 200 returns the saved comment state. Anonymous writes require this client's active session or an accessCode for this exact activated trackable.

常见故障与恢复方法

400 trackable_activation_required means an eligible owner must activate first; 403 trackable_access_code_required or trackable_access_code_invalid requires this exact item's session or credential; 404 means refresh stale IDs.

DELETE /api/trackables/{trackableId}/comments/{commentId}

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X DELETE "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/comments/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the saved comment state. Anonymous writes require this client's active session or an accessCode for this exact activated trackable.

常见故障与恢复方法

400 trackable_activation_required means an eligible owner must activate first; 403 trackable_access_code_required or trackable_access_code_invalid requires this exact item's session or credential; 404 means refresh stale IDs.

PUT /api/trackables/{trackableId}/comments/{commentId}

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X PUT "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/comments/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "body": "Updated field note." }'

成功响应

HTTP 200 returns the saved comment state. Anonymous writes require this client's active session or an accessCode for this exact activated trackable.

常见故障与恢复方法

400 trackable_activation_required means an eligible owner must activate first; 403 trackable_access_code_required or trackable_access_code_invalid requires this exact item's session or credential; 404 means refresh stale IDs.

DELETE /api/trackables/{trackableId}/group

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X DELETE "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/group" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the resulting trackable state after the requested ownership, grouping, or monitoring operation completes.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

POST /api/trackables/{trackableId}/group

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X POST "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/group" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{ "trackableGroupId": "13a2c0b1-582f-4a7b-92aa-16922f7bdb63" }'

成功响应

HTTP 200 returns the resulting trackable state after the requested ownership, grouping, or monitoring operation completes.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

GET /api/trackables/{trackableId}/journey

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/journey"

成功响应

HTTP 200 returns the visible journey points in route order. An activated trackable with no reported stops returns an empty collection.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

POST /api/trackables/{trackableId}/journey-stops

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X POST "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/journey-stops" \
  -H "Content-Type: application/json" \
  -d '{ "latitude": 41.8818, "longitude": -87.6231, "accessCode": "" }'

成功响应

HTTP 200 returns the saved direct journey stop. The latitude and longitude become an immutable route-history point for the activated trackable.

常见故障与恢复方法

400 trackable_activation_required means an eligible owner must activate first; 403 trackable_access_code_required or trackable_access_code_invalid requires this exact item's session or credential; 404 means refresh stale IDs.

DELETE /api/trackables/{trackableId}/journey-stops/{journeyStopId}

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X DELETE "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/journey-stops/13a2c0b1-582f-4a7b-92aa-16922f7bdb63" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 confirms the authorized direct journey stop was removed. Refresh the journey before offering another action on that stop.

常见故障与恢复方法

400 trackable_activation_required means an eligible owner must activate first; 403 trackable_access_code_required or trackable_access_code_invalid requires this exact item's session or credential; 404 means refresh stale IDs.

DELETE /api/trackables/{trackableId}/watch

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

curl -X DELETE "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/watch" \
  -H "Authorization: Bearer <access token>"

成功响应

HTTP 200 returns the resulting trackable or group state after the signed-in account's watch preference changes. Repeating the desired final state should not create duplicate watches.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

POST /api/trackables/{trackableId}/watch

可追踪物路由涵盖公共浏览、私有所有权、已记住的秘密访问、评论和旅程停靠点。

# Request-body placeholder: replace {} with the fields required by this route before sending.
curl -X POST "https://Geotrackable.com/api/trackables/13a2c0b1-582f-4a7b-92aa-16922f7bdb63/watch" \
  -H "Authorization: Bearer <access token>" \
  -H "Content-Type: application/json" \
  -d '{}'

成功响应

HTTP 200 returns the resulting trackable or group state after the signed-in account's watch preference changes. Repeating the desired final state should not create duplicate watches.

常见故障与恢复方法

400 reports a trackable business rule; 401 applies to bearer-only management; 403 supplies the ownership, team-role, grouping, or access action; 404 means refresh the current trackable or group state.

支持