DELETE /api/account
承载者
从 API 中删除帐户
示例
curl -X DELETE "https://locationnotes.com/api/account" \
-H "Authorization: Bearer <access token>"
HTTP API 接口
当您需要网站和 Android 应用程序背后的真实 HTTP 路由、查询参数、身份验证规则以及复制粘贴示例时,请使用此页面。 公共站点、经过身份验证的网站流和 Android 客户端都与同一域上的同一 API 表面进行通信。
需要端点背后的产品模型吗? 什么是用户?, 什么是团队?, 什么是笔记?, 和 什么是可追踪?, 和 什么是外部链接?, 和 什么是图像? 和 什么是支持请求? 解释这些路由所作用的对象。 对于逐步可跟踪序列,请使用 经过身份验证的可跟踪 API 流, 匿名可追踪 API 流, 和 可跟踪错误参考 页。
本页上的所有示例均假定当前生产主机:
https://locationnotes.com
请求和响应使用JSON。 GUIDs 是跨笔记、类别、团队和设备的主要标识符。
专用、同步和团队端点需要
Authorization: Bearer <access token>
除非该路由在下面被标记为公开。
公共和管理阅读可以通过
contentLanguage=en-US
或其他支持的内容语言来过滤返回的 note/category 内容。
网站登录页面和外部提供商设置记录在 认证 页。当呼叫者还没有LocationNotes帐户时,请先注册。 想要持有者令牌的 API 客户端应使用身份 API 登录路由并关闭 cookie,这与 Android 应用程序使用的模式相同。
POST /api/auth/register
匿名
{
"email": "tester@example.com",
"userName": "field_tester",
"password": "StrongP@ssw0rd!"
}
成功的注册调用会创建帐户并保留公开个人资料用户名,但不会取代登录。用户名只能包含小写字母、数字和下划线。当客户端需要用于私有、同步、团队或管理路由的访问令牌时,接下来调用 bearer 登录路由。
POST /api/auth/login?useCookies=false&useSessionCookies=false
匿名
{
"email": "tester@example.com",
"password": "StrongP@ssw0rd!"
}
{
"tokenType": "Bearer",
"accessToken": "eyJhbGciOi..."
}
curl -X POST "https://locationnotes.com/api/auth/login?useCookies=false&useSessionCookies=false" \
-H "Content-Type: application/json" \
-d '{
"email": "tester@example.com",
"password": "StrongP@ssw0rd!"
}'
下面的完整路由清单还列出了 /api/auth. 下当前框架管理的身份路由 如果您需要完整的交互式网站流程、提供商回调、帐户安全页面或提供商链接行为,请使用 认证页面.
将此端点用于公共地图窗口和按区域浏览体验。这是主页地图使用的路线。
GET /api/notes/public/bounds
匿名
minLatitude, minLongitude, maxLatitude, maxLongitudecontentLanguage这些公共地图读取包括正常的公共笔记和仅在它们仍然没有关联的可追踪项时使用 VisibleOnceAssociatedTrackableAccessed 的笔记。一旦附加了可追踪项,笔记就会退出匿名公共地图发现,直到查看者解锁页面级路线上的关联可追踪项之一。
curl "https://locationnotes.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",
"ownerUserId": "a7cfd28f-c17f-4cf7-8913-47fa10fd0d1f",
"categoryId": "4de6bb76-f25d-4c73-b8e3-81b9ca3bf08f",
"title": "Dock gate closed",
"body": "Security redirected vehicles to the south entrance.",
"contentLanguage": "en-US",
"latitude": 41.8818,
"longitude": -87.6231,
"visibility": "Public",
"isDeleted": false,
"updatedUtc": "2026-03-13T20:10:00Z",
"clientMutationId": "web-demo-public-1",
"teamId": null
}
]
当客户端已经知道中心点并需要距离限制的结果集而不是矩形地图窗口时,请使用此端点。
GET /api/notes/public/nearby
匿名
latitude, longituderadiusKm (默认 5), contentLanguage此处适用与边界端点相同的可见性规则:通常包含公共笔记,并且仅包含 VisibleOnceAssociatedTrackableAccessed 笔记,直到它们获得第一个关联的可跟踪为止。
curl "https://locationnotes.com/api/notes/public/nearby?latitude=41.8818&longitude=-87.6231&radiusKm=8&contentLanguage=en-US"
这些路线返回公共资料和公共团队页面上发布的地图和笔记条。它们使用与页面本身相同的笔记访问规则,并接受附近的中心点或完整的地图边界。
GET /api/public/profiles/{userName}/notes/nearby
匿名或不记名
GET /api/public/teams/{teamName}/notes/nearby
匿名或不记名
所需的查询字符串: latitude, longitude 或完整地图边界 minLatitude, minLongitude, maxLatitude, maxLongitude.
可选查询字符串: radiusKm (默认 5), contentLanguage, includeAllLanguages
网站通常将当前路线语言发送为 contentLanguage,因此 /en-US 和 /tlh 公共页面默认情况下不会在同一地图或地带中混合创作笔记语言。
仅当客户端有意构建多语言浏览界面而不是镜像网站页面时,才设置 includeAllLanguages=true。
curl "https://locationnotes.com/api/public/profiles/michael-kappel/notes/nearby?minLatitude=41.87&minLongitude=-87.64&maxLatitude=41.89&maxLongitude=-87.62&contentLanguage=en-US"
同步客户端应首先推送本地脏数据,然后拉取当前区域中的用户、活跃团队和公共笔记的服务器更改。 两条同步路由都需要承载身份验证。
POST /api/sync/push
承载者
{
"deviceId": "5dd06ca7-34a5-4f2e-812d-3f1ef3e48290",
"notes": [
{
"noteId": "ef90c4ca-88a9-4a9b-b3a8-36e2649c5dcb",
"ownerUserId": "a7cfd28f-c17f-4cf7-8913-47fa10fd0d1f",
"categoryId": "4de6bb76-f25d-4c73-b8e3-81b9ca3bf08f",
"title": "Offline inspection",
"body": "Saved while disconnected.",
"contentLanguage": "en-US",
"latitude": null,
"longitude": null,
"visibility": "Private",
"externalLinkUrl": "https://example.com/offline-inspection",
"externalLinkDescription": "",
"applyExternalLinkChanges": true,
"isDeleted": false,
"updatedUtc": "2026-03-13T20:12:00Z",
"clientMutationId": "android-offline-42",
"teamId": null
}
],
"categories": []
}
{
"appliedNoteIds": [
"ef90c4ca-88a9-4a9b-b3a8-36e2649c5dcb"
],
"appliedCategoryIds": [],
"conflicts": []
}
POST /api/sync/pull
承载者
{
"lastSyncUtc": "2026-03-13T19:45:00Z",
"publicArea": {
"minLatitude": 41.78,
"minLongitude": -87.75,
"maxLatitude": 41.96,
"maxLongitude": -87.54
}
}
{
"serverSyncUtc": "2026-03-13T20:13:02Z",
"userNotes": [],
"userCategories": [],
"teamCategories": [],
"publicNotes": [],
"teamNotes": []
}
同步端点拒绝匿名请求。如果服务器阻止较旧的 Android beta 版本,请检查
GET /api/system/status
最低兼容版本和 beta 页面 URL。
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
GET /api/notes/mine
承载者
可选查询字符串: contentLanguage 和完整的地图边界 minLatitude, minLongitude, maxLatitude, maxLongitude.
注意读取有效负载现在包括 lastActivityUtc 因此客户端可以与持久性/update时间戳分开显示最近的活动。
POST /api/notes/mine
承载者
{
"categoryId": "4de6bb76-f25d-4c73-b8e3-81b9ca3bf08f",
"title": "Category-only feedback",
"body": "This note stays off the map on purpose.",
"contentLanguage": "en-US",
"externalLinkUrl": "https://example.com/field-guide",
"externalLinkDescription": "",
"latitude": null,
"longitude": null,
"visibility": "VisibleOnceAssociatedTrackableAccessed",
"commentPolicy": "LoggedInUsers"
}
可见性接受 Private、Public 和 VisibleOnceAssociatedTrackableAccessed。关联可追踪模式的行为类似于公共,直到笔记具有一个或多个关联可追踪。此后,公开发现和笔记页访问要求查看者已经解锁这些关联的可跟踪项之一。
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
承载者
{
"body": "I found it too."
}
{
"trackableSecretCodes": "LN4C8R2Z",
"selectedActiveTrackableIds": [
"f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31"
],
"activeTrackableAttachMode": "Self"
}
这些笔记页面路由遵循笔记访问规则,包括私人笔记和由关联可跟踪访问控制的笔记。如果调用者可以打开笔记页面,API 可以返回该笔记的笔记和可见可跟踪项。附加可跟踪项需要笔记所有者或团队管理员。
GET /api/categories/mine
承载者
GET /api/categories/mine/tree
承载者
GET /api/categories/mine/tree/sections
承载者
GET /api/categories/mine/tree/children?parentCategoryId={categoryId}
承载者
使用这些更轻的辅助路径来实现延迟加载的类别选择器和侧边栏树。树/sections按contentLanguage对根类别进行分组。 tree/children 返回一个父节点的直接子节点,并包含 childCategoryCount,以便客户端可以决定是否在加载孙子节点之前显示扩展可供性。
[
{
"contentLanguage": "en-US",
"rootCategories": [
{
"categoryId": "68cb4c9b-d9bd-4bde-8c6a-a03a4c70b283",
"name": "Field Reports",
"contentLanguage": "en-US",
"parentCategoryId": null,
"childCategoryCount": 2
}
]
}
]
[
{
"categoryId": "c4b2e65f-5cf2-4ab6-8577-a89dfb51407f",
"name": "Dock checks",
"contentLanguage": "en-US",
"parentCategoryId": "68cb4c9b-d9bd-4bde-8c6a-a03a4c70b283",
"childCategoryCount": 0
}
]
POST /api/categories/mine
承载者
POST /api/categories/mine/{categoryId}/move
承载者
{
"name": "Field Reports",
"contentLanguage": "en-US",
"parentCategoryId": null
}
GET /api/notes/mine/gpx
承载者
GET /api/notes/mine/gpx 仅导出映射的个人笔记,并将坐标保存为 GPX 1.1 航路点。
POST /api/notes/mine/gpx
承载者
POST /api/notes/mine/gpx 接受具有文件、可见性和可选 contentLanguage 的多部分表单数据。导入仅读取航路点条目,创建法线映射笔记,并且绝不会覆盖现有笔记。
重复检查保留在选定的个人范围内。具有相同笔记文本的匹配标题加坐标将被报告为重复项。匹配的标题加坐标与不同的笔记文本将被跳过以避免覆盖。
curl "https://locationnotes.com/api/notes/mine/gpx" \
-H "Authorization: Bearer <access token>"
curl -X POST "https://locationnotes.com/api/notes/mine/gpx" \
-H "Authorization: Bearer <access token>" \
-F "file=@waypoints.gpx;type=application/gpx+xml" \
-F "visibility=Private" \
-F "contentLanguage=en-US"
什么是导入和导出? 介绍 GPX 航点交换与完整的 JSON 和便携式 ZIP 帐户导出有何不同。
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
GET /api/teamsGET /api/teams/{teamId}/notesGET /api/teams/{teamId}/categoriesGET /api/teams/{teamId}/categories/treeGET /api/teams/{teamId}/invite-links团队和团队笔记读取模型包括 lastActivityUtc. 公共修剪优先选择最近活动的记录。
GET /api/teams/{teamId}/categories/tree/sections
承载者
GET /api/teams/{teamId}/categories/tree/children?parentCategoryId={categoryId}
承载者
这些路线使用与个人工作区树助手相同的部分和子节点形状,但数据保留在选定的团队范围内,并且仍然需要有效的团队成员资格。
使用 DELETE /api/teams/{teamId}/notes/{noteId} 当笔记应该离开团队工作空间但继续存在于所有者时,并使用 DELETE /api/teams/{teamId}/notes/{noteId}/delete 当团队笔记本身应该被永久删除时。
{
"name": "Beta Testers",
"title": "Beta Testers",
"description": "Public beta release gate for Android validation.",
"externalLinkUrl": "https://example.com/beta-program",
"externalLinkDescription": "",
"joinPolicy": "RequestsAllowed",
"pageVisibility": "Public",
"defaultNoteVisibility": "Public",
"contentLanguage": "en-US"
}
POST /api/teams/{teamId}/notes
承载者
{
"categoryId": "68cb4c9b-d9bd-4bde-8c6a-a03a4c70b283",
"title": "Shared dock inspection",
"body": "Visible to the team until we publish it.",
"contentLanguage": "en-US",
"externalLinkUrl": "https://example.com/shared-briefing",
"externalLinkDescription": "",
"latitude": 41.8818,
"longitude": -87.6231,
"visibility": "Private",
"commentPolicy": "TeamMembers"
}
GET /api/teams/{teamId}/notes/gpx
承载者
POST /api/teams/{teamId}/notes/gpx
承载者
GET /api/teams/{teamId}/notes/gpx 和 POST /api/teams/{teamId}/notes/gpx 在所选团队范围内应用相同的 GPX 规则。重复和覆盖检查仅与该团队的笔记进行比较。
curl "https://locationnotes.com/api/teams/{teamId}/notes/gpx" \
-H "Authorization: Bearer <access token>"
curl -X POST "https://locationnotes.com/api/teams/{teamId}/notes/gpx" \
-H "Authorization: Bearer <access token>" \
-F "file=@team-waypoints.gpx;type=application/gpx+xml" \
-F "visibility=Public" \
-F "contentLanguage=en-US"
POST /api/teams/{teamId}/memberships/requestPOST /api/teams/{teamId}/memberships/invitePOST /api/teams/{teamId}/memberships/{membershipId}/acceptPOST /api/teams/{teamId}/memberships/{membershipId}/refusePOST /api/teams/{teamId}/memberships/{membershipId}/approvePOST /api/teams/{teamId}/memberships/{membershipId}/denyPOST /api/teams/{teamId}/memberships/{membershipId}/promote-adminDELETE /api/teams/{teamId}/memberships/{membershipId}POST /api/teams/invite-links/{teamSlug}/{inviteCode}/join{
"isSingleUse": false
}
{
"inviteLinkId": "9a4726dc-4fb1-4c16-b7b3-5d48ea68fdce",
"teamId": "0f4ddf5d-f3dc-4417-b96d-8e212d24235e",
"teamName": "Invite Team",
"teamSlug": "invite-team",
"code": "8K4V9T",
"createdByDisplayName": "invite-admin",
"createdByCurrentUser": true,
"inviterIsCurrentlyAdmin": true,
"isSingleUse": false,
"createdUtc": "2026-03-18T21:15:00Z"
}
{
"teamSlug": "invite-team",
"membershipStatus": "RequestingMembership"
}
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。 秘密短代码和仅扫描 QR URLs 仅从下面的创建端点返回。它们再也不会从阅读、查找、评论或详细路由中返回。
| 格式 | 示例 | 查找规则 |
|---|---|---|
| 公共代码令牌 | LN-7K4V9T |
全球唯一的短公共代币。对于公共查找和公共链接来说是安全的。 |
| 公众进入路线 | GET /trackable/LN-7K4V9T |
做空公开股票URL。相同的基本路由用于公共代码、短秘密代码和长仅扫描 QR 令牌。 |
| 本地化的公共可追踪页面 | GET /en-US/trackables/LN-7K4V9T |
共享 URL 解析代码后到达特定语言呈现的公共页面。 |
| 秘密进入路线 | GET /trackable/LN4C8R2Z |
持有该物品的人的简短基于占有的条目URL。它使用与公共和长扫描表单相同的<code>/trackable/{code}</code>基本路线。 |
| 系统短密码 | LN4C8R2Z |
在所有可追踪对象中具有全球唯一性,并且针对公共代码也是唯一的。用于手动基于占有的输入。 |
| 备用系统前缀 | GT8M2Q7V |
在使用 <code>GT</code> 前缀的姐妹部署上生成相同的短秘密模式。 |
| 带上你自己的密码 | ITEM42X |
高级外部标识符。在所有可跟踪项中必须保持唯一,并且不得以 <code>LN</code> 或 <code>GT</code> 开头。 |
| 私人扫描路线 | https://locationnotes.com/trackable/AB4D5QW2...<100 chars total>... |
在所有可追踪项中都是唯一的,旨在通过 QR 扫描而不是手动输入。 |
生成的公共代码令牌和生成的短秘密主体使用相同的防污字符系列。类型化查找将 O 视为 0,将 I 或 L 视为 1,将 S 视为 5,将 U 视为 V。对于系统短密代码,该规范化适用于文字前缀之后生成的正文。公共代码使用相同的配置前缀,并在生成的正文之前带有破折号,因此它们在视觉上与短秘密代码不同。
公共列表的读取次数受到网站公共数据暴露限制的限制,目前默认为 500。
可跟踪和可跟踪组读取模型包括 lastActivityUtc,因此仪表板和 API 客户端可以明确显示最近的活动。
GET /api/trackables/publicGET /api/trackables/mineGET /api/trackables/{trackableId}POST /api/trackables/{trackableId}/watchDELETE /api/trackables/{trackableId}/watchGET /api/trackables/{trackableId}/journeyPOST /api/trackables/{trackableId}/journey-stopsDELETE /api/trackables/{trackableId}/journey-stops/{journeyStopId}GET /api/trackables/public 和网站的公共可追踪浏览页面保持多语言状态,因此公共旅程和物流数据不会被路线语言隐藏。
当您想要围绕相同的公共可跟踪数据进行本地化 Chrome 时,请切换网站语言。
POST /api/trackables
承载者
{
"name": "Promo coin",
"description": "Launch event inventory item",
"externalLinkUrl": "https://example.com/promo-coin",
"externalLinkDescription": "",
"teamId": null,
"visibility": "AlwaysVisibleToEveryone",
"activateImmediately": false,
"secretCode": ""
}
{
"trackableId": "f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31",
"heading": "Unactivated Trackable",
"description": "Please activate this trackable item",
"items": [
{
"trackableId": "f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31",
"name": "Unactivated Trackable",
"publicCode": "LN-7K4V9T",
"secretCode": "LN4C8R2Z",
"scanUrl": "https://locationnotes.com/trackable/ABCD...<100 characters total>...",
"qrPayload": "ABCD...<100 characters total>..."
}
]
}
{
"name": "Marketing token",
"description": "Bring-your-own identifier",
"teamId": null,
"visibility": "VisibleOnceAccessed",
"activateImmediately": true,
"secretCode": "TAG42"
}
服务器接受调用者提供的密码,这些密码不以 LN、GT 或 GC 开头,并且与任何现有的密码或公共代码不匹配。返回的公共代码仍然是系统生成的。
POST /api/trackables/groups
承载者
{
"name": "Gnomes in this hunt",
"description": "Seasonal hunt inventory",
"defaultTrackableTitle": "",
"defaultTrackableDescription": "",
"defaultExternalLinkUrl": "https://example.com/hunt-rules",
"defaultExternalLinkDescription": "",
"trackableCount": 12,
"teamId": null,
"visibility": "AlwaysVisibleToEveryone",
"activateImmediately": false,
"watchGroupActivityWhenCreated": true
}
群组限制为 100 个可追踪对象。未激活的项目将回退到组默认值,直到激活。一旦激活,他们必须使用自己的标题和描述。
当未激活的批次应在创建者的监视列表上启动时,可跟踪组创建也可以接受 watchGroupActivityWhenCreated。
POST /api/trackables/lookup 在规范化上面列出的常见污迹字符替换后,匹配公共代码令牌或短密码。GET /trackable/{code} 是向用户和 API 客户端显示的简短网站入口路径。它接受公共代码、短密码或长 QR 令牌,然后路由到正确的流。GET /api/trackables/active 列出客户端当前活动的密码会话(如果存在)。GET /api/trackables/active/{trackableId} 返回活动着陆有效负载,包括激活要求和分组项目(如果可用)。POST /api/trackables/active/{trackableId}/message 更新记住的状态文本。DELETE /api/trackables/active/{trackableId} 结束该客户端上记住的密码会话。秘密代码查找和仅扫描 QR 访问创建活动客户端会话,而不是返回秘密值。该活动会话允许稍后的笔记流附加可跟踪项,而无需重新输入代码。
当调用者经过身份验证时,相同的“访问一次可见”查找还将可跟踪链接到该帐户,以便以后登录的设备可以重新打开可跟踪、其组页面和正常的后续路由,而无需重新输入密码。
该网站特意对所有三种形式使用相同的直接输入基本路线:/trackable/{publicCode}、/trackable/{secretCode} 和 /trackable/{qrToken}。
本地化的/{lang}/trackable/{code}路线是自动选择语言后渲染的单项落地,但仍然不应该显示为可共享或打印的URL。
公共代码查找解析后,呈现的公共页面位于 /{lang}/trackable/{publicCode}。
即使配置的短代码长度稍后发生变化,共享入口路由仍然有效,因为服务器解析代码值而不是依赖于硬编码的网站路径变化。
所有者范围的网站可跟踪路线故意不属于公共 URL 系统的一部分。
这种区别也适用于笔记页面:公共代码用于打开公共可跟踪页面,而笔记附件则需要现有的短秘密代码或已经处于活动状态的浏览器会话。
GET /api/trackables/lookup?code=LN4C8R2Z
{
"found": true,
"trackableId": "f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31",
"isPublicCodeMatch": false,
"usesSecretAccess": true,
"redirectUrl": "/en-US/trackables/active/f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31"
}
GET /trackable/LN-7K4V9T
GET /en-US/trackables/LN-7K4V9T
GET /trackable/ABCD...<100 characters total>...
POST /api/trackables/{trackableId}/activate
承载者
{
"name": "",
"description": "",
"useGroupDefaultTitle": true,
"useGroupDefaultDescription": true,
"externalLinkUrl": "",
"externalLinkDescription": "",
"useGroupDefaultExternalLink": true,
"teamId": "optional-team-guid"
}
如果提供 teamId,则可跟踪对象将成为团队所有,团队管理员可以管理它,并且激活成员在留在该团队时保持控制。如果没有 teamId,可追踪设备将变为个人所有。
当激活分组项目时,所有者可以保存明确的项目标题和描述,也可以有意将组的当前默认标题和描述复制到项目中。
DELETE /api/trackables/{trackableId}/group 删除当前组关联。POST /api/trackables/{trackableId}/group 与 { "trackableGroupId": "..." } 将分离的可跟踪对象与新组关联起来。POST /api/trackables/groups/{trackableGroupId}/watch 开始监视该组的可见成员。来自同一组的现有成员项目监视仍然可以折叠到组监视中,并且每个用户都会对所有者或监视重叠进行重复数据删除。DELETE /api/trackables/groups/{trackableGroupId}/watch 停止监视该组。可追踪对象一次只能属于一个组。服务器强制执行分离优先规则。只有原始激活者可以重新附加分离的可跟踪对象,并且目标组还必须由该用户或符合条件的团队管理员控制。
{
"trackableGroupId": "4bdffcab-bb51-4fd8-8c15-59f7b2d72c3f"
}
GET /api/trackables/{trackableId}/commentsPOST /api/trackables/{trackableId}/commentsPUT /api/trackables/{trackableId}/comments/{commentId}DELETE /api/trackables/{trackableId}/comments/{commentId}未激活的可追踪项无法接收评论或旅程停靠点。
经过身份验证的用户可以直接发表评论。匿名调用者也可以发帖,但每个匿名写入都必须来自该浏览器的活动可跟踪会话,或者重新发送该特定可跟踪的确切的短密码或私有 QR 令牌。
只有登录的评论作者才能编辑自己的评论。可追踪的所有者和当前团队管理员可以删除评论或旅程停靠点,但他们仍然无法重写其他人的话。
{
"body": "Starting the route now.",
"accessCode": "LN4C8R2Z"
}
行程提要现在是不可变的停靠历史记录。笔记支持的停靠点会在附加笔记时对位置进行快照,并且可以保存直接地图报告,而无需先创建笔记。
如果链接的笔记后来移动到不同的坐标,可追踪的旅程仍会保留原始的快照停止点,因此物流历史不会默默地重写自己。
匿名直接报告遵循与匿名评论相同的规则:调用者必须使用该浏览器的活动可跟踪会话或在写入请求上重新发送短密码或私有 QR 令牌。
{
"latitude": 41.8819,
"longitude": -87.6278,
"accessCode": "LN4C8R2Z"
}
GET /api/trackables/{trackableId}/journey 返回标签第一位置的事实。每个点都带有 coordinateId、locationLabel 和 currentNotesAtCoordinate,因此客户端可以在该坐标处显示当前可见的笔记,而无需将停靠点视为拥有一个已保存的笔记。
旅程响应不再将外出合同拆分为城市、stateOrProvince 和国家/地区字段。改为读取 locationLabel 加上坐标。
[
{
"journeyStopId": "8a274ad6-5dd4-45c4-969a-c13cc1b8d92c",
"coordinateId": "565c42dd-2e12-49b4-a16b-c89ff4502b8e",
"latitude": 41.8819,
"longitude": -87.6278,
"associatedUtc": "2026-04-05T18:30:00Z",
"isLocationOnly": false,
"isAnonymous": false,
"canDelete": false,
"canConvertToNote": false,
"locationLabel": "Chicago, Illinois, United States",
"creatorDisplayText": "Jordan",
"creatorProfileUserName": "jordan",
"currentNotesAtCoordinate": [
{
"noteId": "4d6c5df3-3c53-4d0e-8e72-7d98a0f8a9f3",
"title": "Lobby drop",
"contentLanguage": "en-US",
"thumbnailUrl": "/api/images/notes/4d6c5df3-3c53-4d0e-8e72-7d98a0f8a9f3/thumbnail"
}
]
}
]
即使某些底层笔记是私人的,可追踪的旅程页面也可能会显示地图位置。在这些情况下,未经授权的查看者可以接收位置点,但无法接收受保护的笔记内容。
授权查看者直接从预加载的旅程有效负载和地图图钉弹出窗口接收笔记标题、描述和笔记链接。
删除一个帐户不会自动删除该帐户曾经接触过的每个可追踪项。可以保留共享的或团队拥有的可跟踪项,同时仅删除已删除用户的可移除个人活动。
查看“删除数据”页面和帐户删除 API 部分以了解当前保留边界。
可追踪的 API 具有完整的登录所有权工作流程和更轻的匿名秘密支持报告工作流程。 当您需要有序调用序列、决策点和复制粘贴示例而不是路由目录时,请使用下面的专用页面。
笔记、团队、可跟踪、可跟踪组和同步 APIs 上提供外部链接支持。客户端可以首先调用验证端点,但创建和更新路由仍会在保存之前重新验证链接服务器端。
POST /api/external-links/verify
承载者
在自定义客户端中显示描述字段之前调用此方法。成功的响应会返回规范化的 URL、页面标题中建议的描述以及针对审核问题的支持 URL。当目标站点本身返回 HTTP 错误时,失败的响应将返回 HTTP 400,并包含详细消息、支持 URL 和 upstreamStatusCode。
{
"url": "https://example.com/hunt-rules"
}
{
"normalizedUrl": "https://example.com/hunt-rules",
"suggestedDescription": "Example Domain",
"supportUrl": "/zh-SG/support"
}
{
"title": "Request rejected.",
"status": 400,
"detail": "The external page returned HTTP 405 Method Not Allowed during verification.",
"supportUrl": "/zh-SG/support",
"upstreamStatusCode": 405
}
使用 externalLinkUrl 加上 externalLinkDescription 创建和更新笔记、团队和同步有效负载。当同步笔记有效负载上的 ApplyExternalLinkChanges 为 true 时,服务器会在保存之前重新验证链接。
CreateNoteRequest.ExternalLinkUrlCreateNoteRequest.ExternalLinkDescriptionCreateTeamRequest.ExternalLinkUrlCreateTeamRequest.ExternalLinkDescriptionUpdateTeamSettingsRequest.ExternalLinkUrlUpdateTeamSettingsRequest.ExternalLinkDescriptionNoteDto.ExternalLinkUrlNoteDto.ExternalLinkDescriptionNoteDto.ApplyExternalLinkChanges可跟踪创建和更新有效负载使用 externalLinkUrl、externalLinkDescription 和 externalLinkAppendPublicTrackableCode。可跟踪组的创建和更新使用 defaultExternalLinkUrl、defaultExternalLinkDescription 和 defaultExternalLinkAppendPublicTrackableCode。当所有者有意希望从组的默认值开始时,激活仍然接受 useGroupDefaultStatusMessage 以及 useGroupDefaultTitle、useGroupDefaultDescription 和 useGroupDefaultExternalLink。
TrackableGroupCreateInputModel.Name 接受请求中的字母、数字、空格和大写字母。服务器以带下划线的小写形式单独存储页面 slug,并在创建后保持该 slug 固定。
当选择加入存储的可跟踪或可跟踪组默认链接时,仅当从特定可跟踪页面开始单击时,LocationNotes 才会附加 LN={publicCode}。组页面仍然单独使用存储的 URL,因为那里的上下文中没有单独的可跟踪代码。
当应在同一请求中创建第一个跟踪位置时,激活还可以接受可选的 initialJourneyStopLatitude 和 initialJourneyStopLongitude 值。
TrackableCreateInputModel.ExternalLinkUrlTrackableCreateInputModel.ExternalLinkDescriptionTrackableCreateInputModel.ExternalLinkAppendPublicTrackableCodeTrackableActivationInputModel.StatusMessageTrackableGroupCreateInputModel.DefaultExternalLinkUrlTrackableGroupCreateInputModel.DefaultExternalLinkDescriptionTrackableGroupCreateInputModel.DefaultExternalLinkAppendPublicTrackableCodeTrackableGroupCreateInputModel.DefaultStatusMessageTrackableGroupCreateInputModel.WatchGroupActivityWhenCreatedTrackableActivationInputModel.UseGroupDefaultTitleTrackableActivationInputModel.UseGroupDefaultDescriptionTrackableActivationInputModel.UseGroupDefaultStatusMessageTrackableActivationInputModel.ExternalLinkUrlTrackableActivationInputModel.ExternalLinkDescriptionTrackableActivationInputModel.UseGroupDefaultExternalLinkTrackableActivationInputModel.InitialJourneyStopLatitudeTrackableActivationInputModel.InitialJourneyStopLongitude图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
客户端还应该记住,上传的内容在保存之前会经过筛选,不会保留原始文件,并且服务器仅存储调整大小的 JPEG 变体。网站和 Android 应用程序都使用相同的 API 合约和文件路由。
GET /api/images/profiles/{userId}
匿名或不记名
GET /api/images/notes/{noteId}
匿名或不记名
GET /api/images/teams/{teamId}
匿名或不记名
GET /api/images/trackables/{trackableId}
匿名或不记名
GET /api/images/trackable-groups/{trackableGroupId}
匿名或不记名
使用这些读物来填充画廊。每个项目包括图像 GUID、原始尺寸以及缩略图、小、中和大存储副本的相对 URLs。
originalWidth和originalHeight描述上传的源图像以供参考。实际的可下载文件仍然是由thumbnailUrl、smallUrl、mediumUrl和largeUrl链接的调整大小的存储变体。
curl "https://locationnotes.com/api/images/notes/4d6c5df3-3c53-4d0e-8e72-7d98a0f8a9f3"
[
{
"contentImageId": "f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1",
"targetType": 1,
"noteId": "4d6c5df3-3c53-4d0e-8e72-7d98a0f8a9f3",
"originalWidth": 1600,
"originalHeight": 1200,
"createdUtc": "2026-03-18T21:15:00Z",
"thumbnailUrl": "/Images/Thumbnail/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-64.jpg",
"smallUrl": "/Images/Small/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-306.jpg",
"mediumUrl": "/Images/Medium/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-612.jpg",
"largeUrl": "/Images/Large/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-1024.jpg"
}
]
GET /api/images/{contentImageId}/{variant}
匿名或不记名
有效的变体值为缩略图、小、中和大。响应返回图像/jpeg.
/Images/{Variant}/{guid}-{size}.jpg 下的网站文件 URLs 在提供图像字节之前强制执行相同的父级可见性规则,因此直接图像链接仍受连接的个人资料、笔记、团队、可跟踪或可跟踪组权限的保护。
curl -L "https://locationnotes.com/api/images/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1/large" --output note-large.jpg
POST /api/images/profiles
承载者
POST /api/images/notes/{noteId}
承载者
POST /api/images/teams/{teamId}
承载者
POST /api/images/trackables/{trackableId}
承载者
POST /api/images/trackable-groups/{trackableGroupId}
承载者
发送一个名为 file. 的多部分文件字段。调用者必须已经拥有目标的父管理权限,这意味着团队页面的团队管理员访问权限以及其他父类型的正常编辑/management权限。上传的内容在保存之前会经过筛选,然后仅存储为调整大小的 JPEG 副本。
curl -X POST "https://locationnotes.com/api/images/trackables/721f5205-ed2c-43e8-8ecd-1502d5bb7b56" \
-H "Authorization: Bearer <access token>" \
-F "file=@tracker.jpg"
{
"image": {
"contentImageId": "f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1",
"targetType": 3,
"trackableId": "721f5205-ed2c-43e8-8ecd-1502d5bb7b56",
"originalWidth": 1600,
"originalHeight": 1200,
"createdUtc": "2026-03-18T21:15:00Z",
"thumbnailUrl": "/Images/Thumbnail/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-64.jpg",
"smallUrl": "/Images/Small/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-306.jpg",
"mediumUrl": "/Images/Medium/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-612.jpg",
"largeUrl": "/Images/Large/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1-1024.jpg"
}
}
DELETE /api/images/{contentImageId}
承载者
删除需要与上传相同的家长管理权限。删除成功后,内容图像行和所有存储的调整大小的变体将一起删除。
API 客户端必须在此处发送 HTTP DELETE 谓词。直接在浏览器地址栏中打开此 URL 会发送 GET,这会返回 405 Method Not allowed,因为此路由不是下载页面。
网站删除按钮使用 /{culture}/images/{contentImageId}/delete 处的本地化网站表单路由,因此浏览器图库删除可保持防伪保护。
curl -X DELETE "https://locationnotes.com/api/images/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1" \
-H "Authorization: Bearer <access token>"
什么是图像? 解释了这些路由背后的可见性、审核、报告、调整大小、导出和删除规则。
使用这些路由来报告不当内容、跟踪系统错误以及支持网站支持请求流程的相同支持票证记录。 匿名呼叫者可以提交报告,但只有登录的报告者可以稍后通过 API 跟踪状态更新和超级管理员解决方案。
POST /api/compliance/reports
匿名或不记名
如果调用者通过网站 cookie 或不记名令牌进行身份验证,则创建的报告将附加到该帐户,因此它会显示在 GET /api/compliance/reports/mine. 下
{
"pageType": 2,
"contentType": 5,
"pageTitle": "Reported note title",
"pageUrl": "/en-US/Note/2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a#note-page-title",
"pageReference": "2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a",
"contentLabel": "Note Page title and content",
"contentReference": "2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a:page-content",
"contentPreview": "Title: Reported note title\n\nContent: Reported note body",
"reportTitle": "Needs review",
"reportExplanation": "This title is not appropriate for a public note."
}
POST /api/compliance/errors
匿名或不记名
如果 API 路由已失败并出现意外的 500,并在问题详细信息 JSON 中返回 ticketNumber,请在此处发布该票证,而不是创建第二个错误日志行。当呼叫者想要超级管理员跟进时,包括userExplanation并设置trackInSupportTickets。
{
"ticketNumber": "ERR-1M7Q4D9K2X5R8V6N",
"userExplanation": "Android app hit this right after I tapped refresh twice.",
"trackInSupportTickets": true,
"clientContext": {
"platform": "Android",
"screen": "My Journeys",
"appVersion": "1.0.0-beta.20260318.1"
}
}
当故障仅发生在 Android 应用程序内部且尚无服务器票证时,请创建一个新的错误票证,其中包含描述应用程序所在位置的标记。
{
"pageMarkerType": "Android screen",
"pageMarker": "My Journeys",
"requestCulture": "en-US",
"requestUrl": "https://locationnotes.com/api/trackables/active/721f5205-ed2c-43e8-8ecd-1502d5bb7b56?includeHistory=true",
"httpMethod": "GET",
"responseStatusCode": 503,
"exceptionType": "Java.Lang.IllegalStateException",
"exceptionMessage": "Journey list render failed.",
"stackTrace": "at com.locationnotes.trackables.MyJourneysFragment.render(MyJourneysFragment.kt:42)",
"userExplanation": "This happened right after scanning a QR code.",
"trackInSupportTickets": true,
"clientContext": {
"platform": "Android",
"deviceModel": "Pixel 9",
"osVersion": "Android 17",
"appVersion": "1.0.0-beta.20260318.1"
}
}
{
"ticketNumber": "ERR-1M7Q4D9K2X5R8V6N",
"usedExistingTicket": false,
"explanationSaved": true,
"trackedInSupportTickets": true,
"trackedContentReportId": "d91f6e1c-b8e2-4e38-9e96-f2de0cc4f0e2"
}
使用 pageMarkerType 值,例如 URL、Android 屏幕或 Android 后台任务。对于服务器生成的票证,请保留原始的 URL 标记并将返回的 ticketNumber 发送回此处,以便记录的 API URL 保持附加到同一张票证。
GET /api/compliance/reports/mine
承载者
GET /api/compliance/reports/{contentReportId}
承载者
这些路由仅返回调用者自己的报告,除非调用者是超级管理员。使用它们来显示“已报告”、“正在审阅”或“已解决”以及内容报告和跟踪的系统错误的任何最终解决说明。
{
"contentReportId": "3ab419ab-4b71-4d43-b52c-303d6039f01f",
"reporterUserId": "6d650c55-b235-4370-8572-e4b772cd1aea",
"pageType": 2,
"pageTypeLabel": "Note Page",
"contentType": 5,
"contentTypeLabel": "Title and content",
"status": 2,
"statusLabel": "Resolved",
"pageTitle": "Reported note title",
"pageUrl": "/en-US/Note/2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a#note-page-title",
"pageReference": "2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a",
"contentLabel": "Note Page title and content",
"contentReference": "2f4a9f80-b7db-4f4b-9d34-0c2cb8777d9a:page-content",
"contentPreview": "Title: Reported note title\n\nContent: Reported note body",
"reportTitle": "Needs review",
"reportExplanation": "This title is not appropriate for a public note.",
"resolutionText": "Reviewed and recorded for moderation follow-up.",
"reporterDisplayName": "site-compliance-reporter",
"reviewerDisplayName": "site-compliance-admin",
"createdUtc": "2026-03-18T18:00:00Z",
"reviewedUtc": "2026-03-18T18:10:00Z"
}
GET /api/compliance/reports
承载+超级管理员
PUT /api/compliance/reports/{contentReportId}
承载+超级管理员
管理列表包括报告链接、页面元数据、违规内容元数据、报告者身份(如果可用)以及任何先前的审核笔记。更新写入当前审阅状态和可见分辨率文本。
{
"status": 1,
"resolutionText": "Review opened and queued for follow-up."
}
将状态设置为 2,并在关闭已解决的报告时包含非空 resolutionText。
pageType: 0 个人资料页, 1 团队页面, 2 笔记页, 3 可追踪页面, 4 可追踪的群组页面, 5 系统错误, 6 支持页面contentType: 0 标题, 1 描述, 2 评论, 3 身体, 4 生物, 5 标题和内容, 6 错误详情, 7 图像, 8 支持请求status: 0 报道, 1 审查, 2 已解决网站页面级报告现在使用 5 个,因此一个报告按钮可以同时覆盖可见标题和可见描述 /body。评论级报告仍然使用特定于评论的内容类型。
网站一般支持请求通过同一 COMPLIANCE.ContentReports 存储创建支持页面和支持请求票证,即使浏览器表单使用支持页面而不是此原始 API 路由。
跟踪的网站、API 和 Android 应用程序错误存储在 LOG.Errors 中。启用 trackInSupportTickets 后,链接的支持票证也会出现在 COMPLIANCE.ContentReports 中,因此超级管理员审核和报告者状态遵循相同的工作流程。
GET /api/system/status
匿名
将此用于运行状况检查、Android 兼容性门控、当前 beta 页面 URL 以及当前请求的已解析映射 /privacy 状态。
GET /api/system/beta-android
匿名
返回暂存的 Android beta 元数据,包括显示版本、版本代码、最低兼容版本和发行说明。
GET /api/system/ip-location
匿名
返回当前请求的尽力而为的基于 IP 的位置,以进行地图居中和故障排除。
当客户端 IP 是私有、本地或其他不受信任的 IP 时,响应保持 HTTP 200 并解释失败
failureReason
而不是抛出传输错误。
GET /api/system/coordinate-locality
匿名
将纬度 /longitude 对反向地理编码为城市、州 /province 和国家/地区标签,以用于停止规划器和地图选择流程。
无效坐标返回非抛出有效负载
resolved=false
和
failureReason=invalid-coordinates.
/maps/tiles/{z}/{x}/{y}.png.专用网络、本地网络和其他未解析的 IP 请求有意采用更严格的路径,因此即使登录首选项不同,本地主机或办公室网络测试也可以合法地显示 no_3rd_parties 和 hosted_maps。
curl "https://locationnotes.com/api/system/status"
{
"status": "online",
"utcNow": "2026-03-13T21:15:00Z",
"androidMinimumCompatibleDisplayVersion": "1.0.0-beta.20260313.2",
"androidMinimumCompatibleVersionCode": "2026031302",
"androidCompatibilityMessage": "The API changed after older beta builds were published. Update to the latest beta before syncing or using live team management.",
"androidBetaPageUrl": "https://locationnotes.com/zh-SG/account/beta",
"requestedExperienceMode": "latest_and_greatest",
"effectiveExperienceMode": "no_3rd_parties",
"usesSavedExperienceModePreference": false,
"usesVisitorExperienceModePreferenceCookie": false,
"thirdPartyBrowserCallsAllowed": false,
"requestedMapSource": "openstreetmap",
"preferredMapSource": "hosted_maps",
"fallbackMapSource": "hosted_maps",
"usesSavedMapPreference": false,
"usesVisitorMapPreferenceCookie": false,
"googleMapsAllowed": false,
"googleMapsConfigured": false,
"openStreetMapAllowed": false,
"openStreetMapConfigured": true,
"hostedMapsConfigured": true,
"hostedMapsForcedByPrivacy": true,
"hostedMapTileUrlTemplate": "/maps/tiles/{z}/{x}/{y}.png"
}
curl "https://locationnotes.com/api/system/ip-location"
{
"resolved": true,
"clientIpAddress": "50.77.187.28",
"lookupIpAddress": "50.77.187.28",
"usedDevelopmentFallbackIp": false,
"sourceKind": "IpAddress",
"coordinateSourceProvider": "IpInfoDb",
"localitySourceProvider": "IpInfoDb",
"latitude": 41.8758,
"longitude": -87.6206,
"city": "Chicago",
"stateOrProvince": "Illinois",
"country": "United States of America",
"isApproximate": true,
"accuracyRadiusKm": null,
"failureReason": ""
}
curl "https://locationnotes.com/api/system/coordinate-locality?latitude=41.8818&longitude=-87.6231"
{
"resolved": true,
"sourceKind": "Coordinates",
"coordinateSourceProvider": "StopPlanner",
"localitySourceProvider": "HostedMapPostGIS",
"latitude": 41.8818,
"longitude": -87.6231,
"city": "Chicago",
"stateOrProvince": "Illinois",
"country": "United States",
"isApproximate": false,
"accuracyRadiusKm": null,
"failureReason": ""
}
本节是当前 LocationNotes API 表面的详尽动词和路径清单,包括 /api/auth. 下框架管理的身份路由。上面的详细部分解释了主要工作流程;该清单是路由级别的事实来源,应与实时端点表保持一致。
POST /api/auth/register 匿名POST /api/auth/login 匿名POST /api/auth/refresh 匿名GET /api/auth/confirmEmail 匿名POST /api/auth/resendConfirmationEmail 匿名POST /api/auth/forgotPassword 匿名POST /api/auth/resetPassword 匿名GET /api/auth/manage/info 承载者POST /api/auth/manage/info 承载者POST /api/auth/manage/2fa 承载者DELETE /api/account 承载者GET /api/system/status 匿名GET /api/system/beta-android 匿名GET /api/system/ip-location 匿名GET /api/system/coordinate-locality 匿名POST /api/sync/push 承载者POST /api/sync/pull 承载者POST /api/external-links/verify 承载者GET /api/notes/public/bounds 匿名GET /api/notes/public/nearby 匿名GET /api/notes/mine 承载者POST /api/notes/mine 承载者GET /api/notes/mine/gpx 承载者POST /api/notes/mine/gpx 承载者POST /api/notes/mine/{noteId}/move 承载者DELETE /api/notes/mine/{noteId} 承载者GET /api/public/profiles/{userName}/notes/nearby 匿名或不记名GET /api/public/teams/{teamName}/notes/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/categories/mine 承载者GET /api/categories/mine/tree 承载者GET /api/categories/mine/tree/sections 承载者GET /api/categories/mine/tree/children 承载者POST /api/categories/mine 承载者POST /api/categories/mine/{categoryId}/move 承载者DELETE /api/categories/mine/{categoryId} 承载者GET /api/teams 承载者POST /api/teams 承载者PUT /api/teams/{teamId}/settings 承载者GET /api/teams/{teamId}/notes 承载者GET /api/teams/{teamId}/notes/gpx 承载者DELETE /api/teams/{teamId}/notes/{noteId} 承载者POST /api/teams/{teamId}/notes 承载者POST /api/teams/{teamId}/notes/gpx 承载者POST /api/teams/{teamId}/notes/{noteId}/move 承载者DELETE /api/teams/{teamId}/notes/{noteId}/delete 承载者GET /api/teams/{teamId}/categories 承载者GET /api/teams/{teamId}/categories/tree 承载者GET /api/teams/{teamId}/categories/tree/sections 承载者GET /api/teams/{teamId}/categories/tree/children 承载者POST /api/teams/{teamId}/categories 承载者POST /api/teams/{teamId}/categories/{categoryId}/move 承载者DELETE /api/teams/{teamId}/categories/{categoryId} 承载者POST /api/teams/{teamId}/memberships/request 承载者POST /api/teams/{teamId}/memberships/invite 承载者POST /api/teams/{teamId}/memberships/{membershipId}/accept 承载者POST /api/teams/{teamId}/memberships/{membershipId}/refuse 承载者POST /api/teams/{teamId}/memberships/{membershipId}/approve 承载者POST /api/teams/{teamId}/memberships/{membershipId}/deny 承载者POST /api/teams/{teamId}/memberships/{membershipId}/promote-admin 承载者DELETE /api/teams/{teamId}/memberships/{membershipId} 承载者GET /api/teams/{teamId}/invite-links 承载者POST /api/teams/{teamId}/invite-links 承载者DELETE /api/teams/{teamId}/invite-links/{inviteLinkId} 承载者POST /api/teams/invite-links/{teamSlug}/{inviteCode}/join 承载者DELETE /api/teams/{teamId} 承载者GET /api/trackables/public 匿名或不记名GET /api/trackables/mine 承载者GET /api/trackables/{trackableId} 匿名或不记名GET /api/trackables/{trackableId}/journey 匿名或不记名POST /api/trackables 承载者POST /api/trackables/groups 承载者POST /api/trackables/{trackableId}/activate 承载者POST /api/trackables/{trackableId}/watch 承载者DELETE /api/trackables/{trackableId}/watch 承载者DELETE /api/trackables/{trackableId}/group 承载者POST /api/trackables/{trackableId}/group 承载者POST /api/trackables/groups/{trackableGroupId}/watch 承载者DELETE /api/trackables/groups/{trackableGroupId}/watch 承载者GET /api/trackables/lookup 匿名POST /api/trackables/lookup 匿名GET /api/trackables/active 匿名GET /api/trackables/active/{trackableId} 匿名POST /api/trackables/active/{trackableId}/message 匿名DELETE /api/trackables/active/{trackableId} 匿名GET /api/trackables/{trackableId}/comments 匿名或不记名POST /api/trackables/{trackableId}/comments 匿名或不记名PUT /api/trackables/{trackableId}/comments/{commentId} 承载者DELETE /api/trackables/{trackableId}/comments/{commentId} 承载者POST /api/trackables/{trackableId}/journey-stops 匿名或不记名DELETE /api/trackables/{trackableId}/journey-stops/{journeyStopId} 承载者GET /api/images/profiles/{userId} 匿名或不记名GET /api/images/notes/{noteId} 匿名或不记名GET /api/images/teams/{teamId} 匿名或不记名GET /api/images/trackables/{trackableId} 匿名或不记名GET /api/images/trackable-groups/{trackableGroupId} 匿名或不记名GET /api/images/{contentImageId}/{variant} 匿名或不记名POST /api/images/profiles 承载者POST /api/images/notes/{noteId} 承载者POST /api/images/teams/{teamId} 承载者POST /api/images/trackables/{trackableId} 承载者POST /api/images/trackable-groups/{trackableGroupId} 承载者DELETE /api/images/{contentImageId} 承载者POST /api/compliance/reports 匿名或不记名POST /api/compliance/errors 匿名或不记名GET /api/compliance/reports/mine 承载者GET /api/compliance/reports/{contentReportId} 承载者GET /api/compliance/reports 承载+超级管理员PUT /api/compliance/reports/{contentReportId} 承载+超级管理员本节是当前 LocationNotes API 表面的详尽动词和路径清单,包括 /api/auth. 下框架管理的身份路由。上面的详细部分解释了主要工作流程;该清单是路由级别的事实来源,应与实时端点表保持一致。
DELETE /api/account
承载者
从 API 中删除帐户
curl -X DELETE "https://locationnotes.com/api/account" \
-H "Authorization: Bearer <access token>"
GET /api/auth/confirmEmail
匿名
身份认证与账户安全
curl "https://locationnotes.com/api/auth/confirmEmail?userId=3a856446-bd89-4b42-b44d-279d237fb5b7&code=CONFIRMATION-CODE"
POST /api/auth/forgotPassword
匿名
身份认证与账户安全
curl -X POST "https://locationnotes.com/api/auth/forgotPassword" \
-H "Content-Type: application/json" \
-d '{ "email": "api-user@example.com" }'
POST /api/auth/login
匿名
身份认证与账户安全
curl -X POST "https://locationnotes.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!" }'
POST /api/auth/manage/2fa
承载者
身份认证与账户安全
curl -X POST "https://locationnotes.com/api/auth/manage/2fa" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/auth/manage/info
承载者
身份认证与账户安全
curl "https://locationnotes.com/api/auth/manage/info" \
-H "Authorization: Bearer <access token>"
POST /api/auth/manage/info
承载者
身份认证与账户安全
curl -X POST "https://locationnotes.com/api/auth/manage/info" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/auth/refresh
匿名
身份认证与账户安全
curl -X POST "https://locationnotes.com/api/auth/refresh" \
-H "Content-Type: application/json" \
-d '{ "refreshToken": "<refresh token>" }'
POST /api/auth/register
匿名
身份认证与账户安全
curl -X POST "https://locationnotes.com/api/auth/register" \
-H "Content-Type: application/json" \
-d '{ "email": "api-user@example.com", "password": "Use-a-strong-password-123!" }'
POST /api/auth/resendConfirmationEmail
匿名
身份认证与账户安全
curl -X POST "https://locationnotes.com/api/auth/resendConfirmationEmail" \
-H "Content-Type: application/json" \
-d '{ "email": "api-user@example.com" }'
POST /api/auth/resetPassword
匿名
身份认证与账户安全
curl -X POST "https://locationnotes.com/api/auth/resetPassword" \
-H "Content-Type: application/json" \
-d '{ "email": "api-user@example.com", "resetCode": "RESET-CODE", "newPassword": "Use-a-strong-password-123!" }'
GET /api/categories/mine
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl "https://locationnotes.com/api/categories/mine" \
-H "Authorization: Bearer <access token>"
POST /api/categories/mine
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl -X POST "https://locationnotes.com/api/categories/mine" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/categories/mine/tree
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl "https://locationnotes.com/api/categories/mine/tree" \
-H "Authorization: Bearer <access token>"
GET /api/categories/mine/tree/children
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl "https://locationnotes.com/api/categories/mine/tree/children" \
-H "Authorization: Bearer <access token>"
GET /api/categories/mine/tree/sections
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl "https://locationnotes.com/api/categories/mine/tree/sections" \
-H "Authorization: Bearer <access token>"
DELETE /api/categories/mine/{categoryId}
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl -X DELETE "https://locationnotes.com/api/categories/mine/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
POST /api/categories/mine/{categoryId}/move
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl -X POST "https://locationnotes.com/api/categories/mine/3a856446-bd89-4b42-b44d-279d237fb5b7/move" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/compliance/errors
匿名
合规报告
curl -X POST "https://locationnotes.com/api/compliance/errors" \
-H "Content-Type: application/json" \
-d '{ "message": "Client error detail", "url": "/api/example" }'
GET /api/compliance/reports
承载者
合规报告
curl "https://locationnotes.com/api/compliance/reports" \
-H "Authorization: Bearer <access token>"
POST /api/compliance/reports
匿名
合规报告
curl -X POST "https://locationnotes.com/api/compliance/reports" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/compliance/reports/mine
承载者
合规报告
curl "https://locationnotes.com/api/compliance/reports/mine" \
-H "Authorization: Bearer <access token>"
GET /api/compliance/reports/{contentReportId}
承载者
合规报告
curl "https://locationnotes.com/api/compliance/reports/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
PUT /api/compliance/reports/{contentReportId}
承载者
合规报告
curl -X PUT "https://locationnotes.com/api/compliance/reports/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/external-links/verify
承载者
笔记、团队、可跟踪、可跟踪组和同步 APIs 上提供外部链接支持。客户端可以首先调用验证端点,但创建和更新路由仍会在保存之前重新验证链接服务器端。
curl -X POST "https://locationnotes.com/api/external-links/verify" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com/resource" }'
GET /api/images/notes/{noteId}
匿名
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl "https://locationnotes.com/api/images/notes/3a856446-bd89-4b42-b44d-279d237fb5b7"
POST /api/images/notes/{noteId}
承载者
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl -X POST "https://locationnotes.com/api/images/notes/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>" \
-F "files=@example.jpg"
POST /api/images/profiles
承载者
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl -X POST "https://locationnotes.com/api/images/profiles" \
-H "Authorization: Bearer <access token>" \
-F "files=@example.jpg"
GET /api/images/profiles/{userId}
匿名
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl "https://locationnotes.com/api/images/profiles/3a856446-bd89-4b42-b44d-279d237fb5b7"
GET /api/images/teams/{teamId}
匿名
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl "https://locationnotes.com/api/images/teams/3a856446-bd89-4b42-b44d-279d237fb5b7"
POST /api/images/teams/{teamId}
承载者
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl -X POST "https://locationnotes.com/api/images/teams/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>" \
-F "files=@example.jpg"
GET /api/images/trackable-groups/{trackableGroupId}
匿名
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl "https://locationnotes.com/api/images/trackable-groups/3a856446-bd89-4b42-b44d-279d237fb5b7"
POST /api/images/trackable-groups/{trackableGroupId}
承载者
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl -X POST "https://locationnotes.com/api/images/trackable-groups/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>" \
-F "files=@example.jpg"
GET /api/images/trackables/{trackableId}
匿名
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl "https://locationnotes.com/api/images/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7"
POST /api/images/trackables/{trackableId}
承载者
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl -X POST "https://locationnotes.com/api/images/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>" \
-F "files=@example.jpg"
DELETE /api/images/{contentImageId}
承载者
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl -X DELETE "https://locationnotes.com/api/images/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
GET /api/images/{contentImageId}/{variant}
匿名
图像可见性始终跟随父项。如果呼叫者可以打开连接的个人资料、笔记、团队、可跟踪或可跟踪组页面,则呼叫者也可以打开其图像。如果父项目不可访问,则图像列表读取不返回任何项目,并且直接图像下载返回 404。
curl "https://locationnotes.com/api/images/3a856446-bd89-4b42-b44d-279d237fb5b7/thumbnail"
GET /api/notes/mine
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl "https://locationnotes.com/api/notes/mine" \
-H "Authorization: Bearer <access token>"
POST /api/notes/mine
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl -X POST "https://locationnotes.com/api/notes/mine" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/notes/mine/gpx
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl "https://locationnotes.com/api/notes/mine/gpx" \
-H "Authorization: Bearer <access token>"
POST /api/notes/mine/gpx
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl -X POST "https://locationnotes.com/api/notes/mine/gpx" \
-H "Authorization: Bearer <access token>" \
-F "file=@waypoints.gpx"
DELETE /api/notes/mine/{noteId}
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl -X DELETE "https://locationnotes.com/api/notes/mine/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
POST /api/notes/mine/{noteId}/move
承载者
这些路由返回登录的网站工作区和个人 Android 同步状态。全部都需要不记名身份验证。
curl -X POST "https://locationnotes.com/api/notes/mine/3a856446-bd89-4b42-b44d-279d237fb5b7/move" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/notes/public/bounds
匿名
将此端点用于公共地图窗口和按区域浏览体验。这是主页地图使用的路线。
curl "https://locationnotes.com/api/notes/public/bounds?minLatitude=41.78&minLongitude=-87.75&maxLatitude=41.96&maxLongitude=-87.54&contentLanguage=en-US"
GET /api/notes/public/nearby
匿名
当客户端已经知道中心点并需要距离限制的结果集而不是矩形地图窗口时,请使用此端点。
curl "https://locationnotes.com/api/notes/public/nearby?latitude=41.8818&longitude=-87.6231&radiusKm=8&contentLanguage=en-US"
GET /api/public/notes/{noteId}
匿名
这些路线返回公共资料和公共团队页面上发布的地图和笔记条。它们使用与页面本身相同的笔记访问规则,并接受附近的中心点或完整的地图边界。
curl "https://locationnotes.com/api/public/notes/3a856446-bd89-4b42-b44d-279d237fb5b7"
GET /api/public/notes/{noteId}/comments
匿名
这些路线返回公共资料和公共团队页面上发布的地图和笔记条。它们使用与页面本身相同的笔记访问规则,并接受附近的中心点或完整的地图边界。
curl "https://locationnotes.com/api/public/notes/3a856446-bd89-4b42-b44d-279d237fb5b7/comments"
POST /api/public/notes/{noteId}/comments
承载者
这些路线返回公共资料和公共团队页面上发布的地图和笔记条。它们使用与页面本身相同的笔记访问规则,并接受附近的中心点或完整的地图边界。
curl -X POST "https://locationnotes.com/api/public/notes/3a856446-bd89-4b42-b44d-279d237fb5b7/comments" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/public/notes/{noteId}/trackables
匿名
这些路线返回公共资料和公共团队页面上发布的地图和笔记条。它们使用与页面本身相同的笔记访问规则,并接受附近的中心点或完整的地图边界。
curl "https://locationnotes.com/api/public/notes/3a856446-bd89-4b42-b44d-279d237fb5b7/trackables"
POST /api/public/notes/{noteId}/trackables
承载者
这些路线返回公共资料和公共团队页面上发布的地图和笔记条。它们使用与页面本身相同的笔记访问规则,并接受附近的中心点或完整的地图边界。
curl -X POST "https://locationnotes.com/api/public/notes/3a856446-bd89-4b42-b44d-279d237fb5b7/trackables" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/public/profiles/{userName}/notes/nearby
匿名
这些路线返回公共资料和公共团队页面上发布的地图和笔记条。它们使用与页面本身相同的笔记访问规则,并接受附近的中心点或完整的地图边界。
curl "https://locationnotes.com/api/public/profiles/field-user/notes/nearby?latitude=41.8818&longitude=-87.6231&radiusKm=8&contentLanguage=en-US"
GET /api/public/teams/{teamName}/notes/nearby
匿名
这些路线返回公共资料和公共团队页面上发布的地图和笔记条。它们使用与页面本身相同的笔记访问规则,并接受附近的中心点或完整的地图边界。
curl "https://locationnotes.com/api/public/teams/field-team/notes/nearby?latitude=41.8818&longitude=-87.6231&radiusKm=8&contentLanguage=en-US"
POST /api/sync/pull
承载者
同步客户端应首先推送本地脏数据,然后拉取当前区域中的用户、活跃团队和公共笔记的服务器更改。
curl -X POST "https://locationnotes.com/api/sync/pull" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/sync/push
承载者
同步客户端应首先推送本地脏数据,然后拉取当前区域中的用户、活跃团队和公共笔记的服务器更改。
curl -X POST "https://locationnotes.com/api/sync/push" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/system/beta-android
匿名
系统和测试版元数据
curl "https://locationnotes.com/api/system/beta-android"
GET /api/system/coordinate-locality
匿名
系统和测试版元数据
curl "https://locationnotes.com/api/system/coordinate-locality?latitude=41.8818&longitude=-87.6231"
GET /api/system/ip-location
匿名
系统和测试版元数据
curl "https://locationnotes.com/api/system/ip-location"
GET /api/system/status
匿名
系统和测试版元数据
curl "https://locationnotes.com/api/system/status"
GET /api/teams
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl "https://locationnotes.com/api/teams" \
-H "Authorization: Bearer <access token>"
POST /api/teams
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/teams/invite-links/{teamSlug}/{inviteCode}/join
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/invite-links/field-team/INVITE-CODE/join" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
DELETE /api/teams/{teamId}
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X DELETE "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
GET /api/teams/{teamId}/categories
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/categories" \
-H "Authorization: Bearer <access token>"
POST /api/teams/{teamId}/categories
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/categories" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/teams/{teamId}/categories/tree
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/categories/tree" \
-H "Authorization: Bearer <access token>"
GET /api/teams/{teamId}/categories/tree/children
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/categories/tree/children" \
-H "Authorization: Bearer <access token>"
GET /api/teams/{teamId}/categories/tree/sections
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/categories/tree/sections" \
-H "Authorization: Bearer <access token>"
DELETE /api/teams/{teamId}/categories/{categoryId}
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X DELETE "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/categories/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
POST /api/teams/{teamId}/categories/{categoryId}/move
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/categories/3a856446-bd89-4b42-b44d-279d237fb5b7/move" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/teams/{teamId}/invite-links
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/invite-links" \
-H "Authorization: Bearer <access token>"
POST /api/teams/{teamId}/invite-links
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/invite-links" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
DELETE /api/teams/{teamId}/invite-links/{inviteLinkId}
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X DELETE "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/invite-links/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
POST /api/teams/{teamId}/memberships/invite
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/memberships/invite" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/teams/{teamId}/memberships/request
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/memberships/request" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
DELETE /api/teams/{teamId}/memberships/{membershipId}
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X DELETE "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/memberships/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
POST /api/teams/{teamId}/memberships/{membershipId}/accept
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/memberships/3a856446-bd89-4b42-b44d-279d237fb5b7/accept" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/teams/{teamId}/memberships/{membershipId}/approve
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/memberships/3a856446-bd89-4b42-b44d-279d237fb5b7/approve" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/teams/{teamId}/memberships/{membershipId}/deny
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/memberships/3a856446-bd89-4b42-b44d-279d237fb5b7/deny" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/teams/{teamId}/memberships/{membershipId}/promote-admin
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/memberships/3a856446-bd89-4b42-b44d-279d237fb5b7/promote-admin" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/teams/{teamId}/memberships/{membershipId}/refuse
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/memberships/3a856446-bd89-4b42-b44d-279d237fb5b7/refuse" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/teams/{teamId}/notes
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/notes" \
-H "Authorization: Bearer <access token>"
POST /api/teams/{teamId}/notes
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/notes" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/teams/{teamId}/notes/gpx
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/notes/gpx" \
-H "Authorization: Bearer <access token>"
POST /api/teams/{teamId}/notes/gpx
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/notes/gpx" \
-H "Authorization: Bearer <access token>" \
-F "file=@waypoints.gpx"
DELETE /api/teams/{teamId}/notes/{noteId}
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X DELETE "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/notes/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
DELETE /api/teams/{teamId}/notes/{noteId}/delete
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X DELETE "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/notes/3a856446-bd89-4b42-b44d-279d237fb5b7/delete" \
-H "Authorization: Bearer <access token>"
POST /api/teams/{teamId}/notes/{noteId}/move
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X POST "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/notes/3a856446-bd89-4b42-b44d-279d237fb5b7/move" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
PUT /api/teams/{teamId}/settings
承载者
团队路线涵盖成员资格、邀请、设置、团队笔记和团队类别。所有这些都需要承载身份验证,并且服务器对每个路由强制执行 admin/member 权限。
curl -X PUT "https://locationnotes.com/api/teams/3a856446-bd89-4b42-b44d-279d237fb5b7/settings" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/trackables
承载者
基础 URL 和约定
curl -X POST "https://locationnotes.com/api/trackables" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/trackables/active
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl "https://locationnotes.com/api/trackables/active"
DELETE /api/trackables/active/{trackableId}
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X DELETE "https://locationnotes.com/api/trackables/active/3a856446-bd89-4b42-b44d-279d237fb5b7"
GET /api/trackables/active/{trackableId}
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl "https://locationnotes.com/api/trackables/active/3a856446-bd89-4b42-b44d-279d237fb5b7"
POST /api/trackables/active/{trackableId}/message
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X POST "https://locationnotes.com/api/trackables/active/3a856446-bd89-4b42-b44d-279d237fb5b7/message" \
-H "Content-Type: application/json" \
-d '{}'
POST /api/trackables/groups
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X POST "https://locationnotes.com/api/trackables/groups" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
DELETE /api/trackables/groups/{trackableGroupId}/watch
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X DELETE "https://locationnotes.com/api/trackables/groups/3a856446-bd89-4b42-b44d-279d237fb5b7/watch" \
-H "Authorization: Bearer <access token>"
POST /api/trackables/groups/{trackableGroupId}/watch
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X POST "https://locationnotes.com/api/trackables/groups/3a856446-bd89-4b42-b44d-279d237fb5b7/watch" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/trackables/lookup
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl "https://locationnotes.com/api/trackables/lookup?code=GT-EXAMPLE"
POST /api/trackables/lookup
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X POST "https://locationnotes.com/api/trackables/lookup" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/trackables/mine
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl "https://locationnotes.com/api/trackables/mine" \
-H "Authorization: Bearer <access token>"
GET /api/trackables/public
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl "https://locationnotes.com/api/trackables/public?contentLanguage=en-US"
GET /api/trackables/{trackableId}
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7"
POST /api/trackables/{trackableId}/activate
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X POST "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/activate" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/trackables/{trackableId}/comments
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/comments"
POST /api/trackables/{trackableId}/comments
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X POST "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/comments" \
-H "Content-Type: application/json" \
-d '{}'
DELETE /api/trackables/{trackableId}/comments/{commentId}
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X DELETE "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/comments/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
PUT /api/trackables/{trackableId}/comments/{commentId}
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X PUT "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/comments/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
DELETE /api/trackables/{trackableId}/group
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X DELETE "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/group" \
-H "Authorization: Bearer <access token>"
POST /api/trackables/{trackableId}/group
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X POST "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/group" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
GET /api/trackables/{trackableId}/journey
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/journey"
POST /api/trackables/{trackableId}/journey-stops
匿名
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X POST "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/journey-stops" \
-H "Content-Type: application/json" \
-d '{}'
DELETE /api/trackables/{trackableId}/journey-stops/{journeyStopId}
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X DELETE "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/journey-stops/3a856446-bd89-4b42-b44d-279d237fb5b7" \
-H "Authorization: Bearer <access token>"
DELETE /api/trackables/{trackableId}/watch
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X DELETE "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/watch" \
-H "Authorization: Bearer <access token>"
POST /api/trackables/{trackableId}/watch
承载者
Trackables 支持公共代码浏览、密码或仅扫描 QR 访问、创建过程中的一次性秘密显示、浏览器端活动会话、评论和分组库存工作流程。
curl -X POST "https://locationnotes.com/api/trackables/3a856446-bd89-4b42-b44d-279d237fb5b7/watch" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{}'
经过身份验证的客户端可以通过API永久删除当前帐户和同步的个人数据。阅读 删除数据 如果您需要团队拥有的数据和导出的完整保留规则,请先查看页面。
可追踪的清理并不是全有或全无。服务器会尽可能删除已删除用户的个人可追踪活动,但不会仅仅因为一个帐户被删除而删除共享可追踪、团队拥有的可追踪或其他用户的历史记录。 如果团队拥有的可追踪对象对团队仍然很重要,那么它仍然属于该团队。如果另一个人的活动仍附加到可追踪项,则该可追踪项将保留在系统中。
DELETE /api/account
承载者
curl -X DELETE "https://locationnotes.com/api/account" \
-H "Authorization: Bearer <access token>"
{
"deletedAccount": true,
"notesDeleted": 14,
"categoriesDeleted": 6,
"linkedProvidersDeleted": 2
}
验证、权限和查找失败返回标准 HTTP 状态代码。许多工作区路由返回 RFC 7807 样式的问题详细信息 JSON,其中包含标题、详细信息和状态。
{
"title": "Forbidden",
"code": "trackable_access_code_required",
"detail": "Sign in, keep this trackable active on this browser, or provide this trackable's secret code or QR access code before posting comments or location reports.",
"status": 403
}
400 用于验证或业务规则拒绝401 缺少或无效的身份验证403 对于没有访问权限的经过身份验证的用户404 缺少笔记、类别、团队、会员资格或邀请链接
可跟踪的写入路由还添加了稳定的代码属性,因此 API 客户端可以区分以下情况
trackable_access_code_required,
trackable_access_code_invalid,
trackable_activation_required,
和
trackable_already_activated
无需解析英文文本。完整的映射记录在
可跟踪错误参考页面.
外部链接规则、验证、成人内容筛选、退出页面行为、可跟踪组默认值、导出和删除均记录在 什么是外部链接? 页。
有关请求和响应示例,包括 externalLinkUrl、externalLinkDescription、externalLinkAppendPublicTrackableCode、defaultExternalLinkUrl、defaultExternalLinkDescription、defaultExternalLinkAppendPublicTrackableCode、useGroupDefaultExternalLink 和验证端点,请参阅 API 文档.