Base URL at mga kombensiyon
Batayang URL
Ipinapalagay ng lahat ng mga halimbawa sa page na ito ang kasalukuyang production host:
https://locationnotes.com
Pormat
Ang mga kahilingan at tugon ay gumagamit ng JSON. Ang mga GUID ay ang mga pangunahing identifier sa mga tala, kategorya, team, at device.
Awtorisasyon
Ang mga pribado, pag-sync, at mga endpoint ng koponan ay nangangailangan ng isang
Authorization: Bearer <access token>
header maliban kung ang ruta ay minarkahan ng publiko sa ibaba.
Wika
Maaaring pumasa ang pampubliko at mga pagbabasa ng pamamahala
contentLanguage=en-US
o isa pang sinusuportahang wika ng nilalaman upang i-filter ang ibinalik na nilalaman ng tala/kategorya.
Authentication at mga token ng maydala
Nakadokumento sa
Pagpapatunay
pahina. Magrehistro muna kapag ang tumatawag ay wala pang LocationNotes account.
Dapat gamitin ng mga kliyenteng API na may dalang token ang pagkakakilanlan na API na ruta sa pag-log in na naka-off ang cookies, na parehong pattern na ginagamit ng Android app.
POST /api/auth/register
Hindi nakikilala
Katawan ng kahilingan sa pagpaparehistro
{
"email": "tester@example.com",
"password": "StrongP@ssw0rd!"
}
Magrehistro ng pag-uugali
Ang isang matagumpay na tawag sa pagpaparehistro ay lumilikha ng account ngunit hindi pinapalitan ang pag-login. Susunod na tawagan ang ruta ng pag-login ng maydala kapag kailangan ng kliyente ng access token para sa pribado, pag-sync, koponan, o pamahalaan ang mga ruta.
POST /api/auth/login?useCookies=false&useSessionCookies=false
Hindi nakikilala
Humiling ng katawan
{
"email": "tester@example.com",
"password": "StrongP@ssw0rd!"
}
Sipi ng tugon
{
"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!"
}'
Inililista din ng kumpletong imbentaryo ng ruta sa ibaba ang kasalukuyang mga ruta ng pagkakakilanlan na pinamamahalaan ng framework sa ilalim ng /api/auth.
Kung kailangan mo ang buong interactive na daloy ng website, mga callback ng provider, mga page sa seguridad ng account, o pag-uugali sa pag-link ng provider, gamitin ang
Pahina ng pagpapatunay.
Mga pampublikong tala sa mga hangganan ng mapa
Gamitin ang endpoint na ito para sa mga pampublikong window ng mapa at mga karanasan sa pagba-browse ayon sa lugar. Ito ang rutang ginagamit ng mapa ng homepage.
GET /api/notes/public/bounds
Hindi nakikilala
- Kinakailangang query string:
minLatitude, minLongitude, maxLatitude, maxLongitude
- Opsyonal na string ng query:
contentLanguage
- Ang mga tugon ay nililimitahan ng limitasyon sa pagkakalantad ng pampublikong-data ng site, na kasalukuyang 500 bilang default, at inayos muna ng kamakailang aktibidad.
Kasama sa mga pampublikong babasahin na ito ang mga normal na Pampublikong tala at tala gamit ang VisibleOnceAssociatedTrackableAccessed lamang habang wala pa silang nauugnay na trackable. Kapag na-attach na ang isang trackable, mawawala ang tala sa anonymous na pagtuklas ng pampublikong mapa hanggang sa ma-unlock ng viewer ang isa sa mga nauugnay na trackable sa isang page-level na ruta.
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
}
]
Mga pampublikong tala malapit sa isang punto
Gamitin ang endpoint na ito kapag alam na ng kliyente ang isang sentrong punto at gusto ng isang resulta na limitado sa distansya sa halip na isang parihaba na window ng mapa.
GET /api/notes/public/nearby
Hindi nakikilala
- Kinakailangang query string:
latitude, longitude
- Opsyonal na string ng query:
radiusKm (paunang halaga 5), contentLanguage
- Ang mga kalapit na resulta ay nililimitahan ng limitasyon sa pagkakalantad ng pampublikong-data ng site, na kasalukuyang 500 bilang default.
Nalalapat dito ang parehong panuntunan sa visibility bilang endpoint ng mga hangganan: Karaniwang kasama ang mga pampublikong tala, at ang VisibleOnceAssociatedTrackableAccessed na mga tala ay kasama lamang hanggang sa makuha nila ang kanilang unang nauugnay na masusubaybayan.
curl "https://locationnotes.com/api/notes/public/nearby?latitude=41.8818&longitude=-87.6231&radiusKm=8&contentLanguage=en-US"
Mga stream ng tala ng pampublikong profile at page ng team
Ang mga rutang ito pabalik sa naka-publish na mapa at note strip sa pampublikong profile at mga pahina ng pampublikong koponan. Ginagamit nila ang parehong mga panuntunan sa pag-access ng tala gaya ng mismong page at tinatanggap nila ang alinman sa malapit na center point o buong hangganan ng mapa.
GET /api/public/profiles/{userName}/notes/nearby
Anonymous o Tagadala
GET /api/public/teams/{teamName}/notes/nearby
Anonymous o Tagadala
Kinakailangang query string: latitude, longitude o buong mapa na may hangganan minLatitude, minLongitude, maxLatitude, maxLongitude.
Opsyonal na string ng query: radiusKm (paunang halaga 5), contentLanguage, includeAllLanguages
Karaniwang ipinapadala ng website ang kasalukuyang wika ng ruta bilang contentLanguage kaya ang /en-US at /tlh na mga pampublikong pahina ay hindi naghahalo ng mga authored note na wika sa parehong mapa o strip bilang default.
Itakda lamang ang includeAllLanguages=true kapag ang kliyente ay sadyang gumagawa ng multilinggwal na browse surface sa halip na i-mirror ang pahina ng website.
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"
Offline na ikot ng pag-sync
Dapat munang itulak ng mga kliyente sa pag-sync ang lokal na maruming data, pagkatapos ay hilahin ang mga pagbabago sa server para sa user, mga aktibong team, at pampublikong tala sa kasalukuyang lugar.
Ang parehong mga ruta ng pag-sync ay nangangailangan ng pagpapatunay ng maydala.
POST /api/sync/push
Tagadala
{
"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
Tagadala
{
"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": []
}
Tinatanggihan ng mga endpoint ng pag-sync ang mga hindi kilalang kahilingan. Kung bina-block ng server ang isang mas lumang Android beta build, tingnan
GET /api/system/status
para sa minimum na katugmang bersyon at beta-page na URL.
Mga personal na tala at kategorya
Ang mga rutang ito pabalik sa naka-sign-in na workspace ng website at estado ng personal na pag-sync ng Android. Lahat ay nangangailangan ng pagpapatunay ng maydala.
Basahin ang mga personal na tala
GET /api/notes/mine
Tagadala
Opsyonal na string ng query: contentLanguage at buong mapa na may hangganan minLatitude, minLongitude, maxLatitude, maxLongitude.
Kasama na ngayon ang mga nabasang payload ng tala lastActivityUtc upang maipakita ng mga kliyente ang pinakabagong aktibidad nang hiwalay mula sa pagtitiyaga/pag-update ng mga timestamp.
Gumawa ng tala
POST /api/notes/mine
Tagadala
{
"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"
}
tumatanggap ang visibility ng Pribado, Pampubliko, at VisibleOnceAssociatedTrackableAccessed. Ang nauugnay na trackable na mode ay kumikilos tulad ng Pampubliko hanggang sa ang tala ay may isa o higit pang nauugnay na trackable. Pagkatapos noon, kailangan ng pampublikong pagtuklas at pag-access sa page ng tala na na-unlock na ng manonood ang isa sa mga nauugnay na trackable na iyon.
- Wala pang nauugnay na trackable: ang tala ay kumikilos tulad ng isang pampublikong tala.
- Pagkatapos ng unang pag-uugnay: ang tala ay mawawala sa anonymous na pampublikong pagtuklas at normal na pampublikong pag-access sa pahina ng tala.
- Naka-unlock na viewer: ang isang taong nag-unlock na ng isang nauugnay na trackable ay maaaring magbukas ng page ng tala at gamitin ang mga nakakonektang pampublikong tala-page na ruta ng API.
- May-ari o awtorisadong miyembro ng koponan: pinapanatili ang normal na pag-access sa tala at mga karapatan sa pamamahala.
Tandaan ang mga nabasa at aksyon sa pahina
GET /api/public/notes/{noteId}
Anonymous o Tagadala
GET /api/public/notes/{noteId}/comments
Anonymous o Tagadala
POST /api/public/notes/{noteId}/comments
Tagadala
GET /api/public/notes/{noteId}/trackables
Anonymous o Tagadala
POST /api/public/notes/{noteId}/trackables
Tagadala
{
"body": "I found it too."
}
{
"trackableSecretCodes": "LN4C8R2Z",
"selectedActiveTrackableIds": [
"f3a8f841-20db-4f1e-a3f8-9f14bc0b3c31"
],
"activeTrackableAttachMode": "Self"
}
Ang mga ruta ng tala-page na ito ay gumagalang sa mga panuntunan sa pag-access ng tala, kabilang ang mga pribadong tala at tala na may gate ng nauugnay na nasusubaybayang access. Kung mabubuksan ng tumatawag ang pahina ng tala, maaaring magbalik ang API ng mga komento at nakikitang trackable para sa talang iyon. Ang pag-attach ng mga trackable ay nangangailangan ng may-ari ng tala o isang admin ng team.
- Bago umiral ang unang nauugnay na trackable, ang mga rutang ito ay kumikilos tulad ng mga karaniwang ruta ng pampublikong tala-page.
- Pagkatapos magkaroon ng kahit isang asosasyon, ang mga tumatawag na walang access sa isang nauugnay na trackable ay dapat umasa ng 404 mula sa mga pampublikong ruta ng page ng tala kahit na umiiral pa rin ang tala.
- Ang parehong tala ay maaari pa ring magbalik ng 200 para sa may-ari, awtorisadong miyembro ng team, o mga manonood na nag-unlock na ng isang nauugnay na masusubaybayan.
Basahin ang mga kategorya
GET /api/categories/mine
Tagadala
GET /api/categories/mine/tree
Tagadala
Mga katulong sa puno ng workspace
GET /api/categories/mine/tree/sections
Tagadala
GET /api/categories/mine/tree/children?parentCategoryId={categoryId}
Tagadala
Gamitin ang mas magaan na mga ruta ng katulong para sa mga nakakatamad na tagapili ng kategorya at mga sidebar tree. pinapangkat ng puno/mga seksyon ang mga kategorya ng ugat ayon sa nilalamanLanguage. tree/children ay nagbabalik ng mga direktang child node para sa isang magulang at kasama ang childCategoryCount upang makapagpasya ang kliyente kung magpapakita ng pinalawak na affordance bago i-load ang mga apo.
[
{
"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
}
]
Lumikha o maglipat ng mga kategorya
POST /api/categories/mine
Tagadala
POST /api/categories/mine/{categoryId}/move
Tagadala
{
"name": "Field Reports",
"contentLanguage": "en-US",
"parentCategoryId": null
}
Personal na GPX waypoint handoff
GET /api/notes/mine/gpx
Tagadala
GET /api/notes/mine/gpx exports lang nakamapang personal na mga tala na may mga naka-save na coordinate bilang GPX 1.1 waypoint.
POST /api/notes/mine/gpx
Tagadala
Tumatanggap ang POST /api/notes/mine/gpx ng multipart form data na may file, visibility, at opsyonal na contentLanguage. Ang pag-import ay nagbabasa lamang ng mga entry sa waypoint, gumagawa ng mga normal na naka-map na tala, at hindi kailanman nag-o-overwrite sa isang umiiral nang tala.
Ang mga duplicate na pagsusuri ay mananatili sa loob ng napiling personal na saklaw. Ang katugmang pamagat at mga coordinate na may parehong teksto ng tala ay iniuulat bilang mga duplicate. Ang katugmang pamagat at mga coordinate na may iba't ibang teksto ng tala ay nilalaktawan upang maiwasan ang pag-overwrite.
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"
Ano ang Import at Export?
sumasaklaw sa kung paano naiiba ang GPX waypoint exchange mula sa buong JSON at portable ZIP na pag-export ng account.
Mga endpoint ng koponan
Sinasaklaw ng mga ruta ng koponan ang membership, mga imbitasyon, mga setting, mga tala ng koponan, at mga kategorya ng koponan. Lahat ay nangangailangan ng pagpapatunay ng maydala at ipinapatupad ng server ang mga pahintulot ng admin/miyembro sa bawat ruta.
Mga karaniwang babasahin
GET /api/teams
GET /api/teams/{teamId}/notes
GET /api/teams/{teamId}/categories
GET /api/teams/{teamId}/categories/tree
GET /api/teams/{teamId}/invite-links
Kasama sa mga modelo ng pagbabasa ng team at team-note lastActivityUtc. Mas pinipili ng public trimming ang pinakakamakailang aktibong talaan muna.
Mga katulong sa puno ng kategorya ng pangkat
GET /api/teams/{teamId}/categories/tree/sections
Tagadala
GET /api/teams/{teamId}/categories/tree/children?parentCategoryId={categoryId}
Tagadala
Ang mga rutang ito ay gumagamit ng parehong seksyon at mga child-node na hugis bilang mga personal workspace tree helper, ngunit ang data ay nananatili sa loob ng napiling saklaw ng team at nangangailangan pa rin ng aktibong miyembro ng team.
Gamitin DELETE /api/teams/{teamId}/notes/{noteId} kapag ang tala ay dapat umalis sa workspace ng koponan ngunit patuloy na umiiral para sa may-ari, at gamitin DELETE /api/teams/{teamId}/notes/{noteId}/delete kapag ang tala ng koponan mismo ay dapat na permanenteng tanggalin.
Lumikha ng isang koponan
{
"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"
}
Gumawa ng tala ng koponan
POST /api/teams/{teamId}/notes
Tagadala
{
"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"
}
Handoff ng waypoint ng Team GPX
GET /api/teams/{teamId}/notes/gpx
Tagadala
POST /api/teams/{teamId}/notes/gpx
Tagadala
GET /api/teams/{teamId}/notes/gpx at POST /api/teams/{teamId}/notes/gpx ilapat ang parehong mga panuntunan ng GPX sa loob ng napiling saklaw ng team. Ang mga duplicate at overwrite na mga tseke ay naghahambing lamang sa mga tala ng pangkat na iyon.
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"
Membership at mag-imbita ng mga operasyon
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}
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"
}
Mga nasusubaybayang endpoint
Sinusuportahan ng mga trackable ang pagba-browse sa public-code, lihim na code o pag-scan-only na QR na pag-access, isang beses na lihim na pagbubunyag sa panahon ng paggawa, mga aktibong session sa gilid ng browser, komento, at mga workflow ng nakagrupong imbentaryo.
Ibinabalik lamang ang mga lihim na maiikling code at scan-only na QR URL mula sa paggawa ng mga endpoint sa ibaba. Hindi na sila ibinalik muli mula sa mga rutang binasa, paghahanap, komento, o detalye.
Mahahalagang masusubaybayang panuntunan:
- Ang mga pampublikong code ay maiikling pampublikong token na nananatiling natatangi sa buong mundo sa lahat ng trackable.
- Ang mga pampublikong code at maiikling lihim na code ay walang banggaan laban sa isa't isa, kaya ang isang maikling code ay hindi maaaring mangahulugan ng parehong bagay.
- Ang mga maiikling sikretong code at mga scan-only na QR URL ay mga kredensyal sa pag-access na nakabatay sa pagmamay-ari.
- Isipin ang mga trackable at trackable na grupo bilang Nakikita Kapag Na-access o Laging Nakikita ng Lahat. Maaaring i-save ang naka-sign-in na lihim na pag-access sa account para sa mga device sa ibang pagkakataon.
- Ang mga form sa pag-attach ng tala sa website ay tumatanggap ng isang trackable code sa isang pagkakataon at naka-attach lamang mula sa isang umiiral na maikling tugmang lihim na code.
- Kung ang isang panlabas na code ay hindi pa nakarehistro, gawin muna ang trackable. Ang manu-manong tala-attachment na entry ay hindi awtomatikong nagrerehistro ng mga bagong third-party na code.
- Ang pag-activate ay hinuhulaan mula sa OwnerUserId; walang hiwalay na persisted activation flag.
- Ang mga hindi na-activate na trackable ay hindi maaaring ilakip sa mga tala at hindi maaaring tumanggap ng mga komento.
- Ang isang trackable ay maaaring kabilang sa isang grupo lamang sa isang pagkakataon, at ang pagpapalit ng mga grupo ay nangangailangan ng pag-alis muna, pagkatapos ay muling ilakip.
Mga format at halimbawa ng pagkakakilanlan
| Pormat |
Halimbawa |
Panuntunan sa paghahanap |
| Pampublikong code na token |
LN-7K4V9T |
Pambihirang natatanging maikling pampublikong token. Ligtas para sa pampublikong paghahanap at pampublikong mga link. |
| Ruta ng pampublikong pagpasok |
GET /trackable/LN-7K4V9T |
Maikling pampublikong bahagi URL. Ang parehong base na ruta ay ginagamit para sa mga pampublikong code, maiikling sikretong code, at mahabang scan-only na mga QR na token. |
| Na-localize ang pampublikong masusubaybayang pahina |
GET /en-US/trackables/LN-7K4V9T |
Naabot ng pampublikong page na na-render na partikular sa wika pagkatapos malutas ng URL ang code. |
| Lihim na ruta ng pagpasok |
GET /trackable/LN4C8R2Z |
Maikling entry na nakabatay sa pagmamay-ari na URL para sa isang taong may hawak ng item. Gumagamit ito ng parehong <code>/trackable/{code}</code> base na ruta gaya ng pampubliko at mahabang scan form. |
| Maikling sikretong code ng system |
LN4C8R2Z |
Natatangi sa buong mundo sa lahat ng trackable at natatangi din laban sa mga pampublikong code. Inilaan para sa manu-manong pagpasok na nakabatay sa pagmamay-ari. |
| Kahaliling prefix ng system |
GT8M2Q7V |
Parehong nabuong short-secret pattern sa mga sister deployment na gumagamit ng <code>GT</code> prefix. |
| Dalhin-iyong-sariling sikretong code |
ITEM42X |
Advanced na panlabas na identifier. Dapat manatiling natatangi sa lahat ng trackable at hindi dapat magsimula sa <code>LN</code> o <code>GT</code>. |
| Pribadong ruta ng pag-scan |
https://locationnotes.com/trackable/AB4D5QW2...<100 chars total>... |
Natatangi sa lahat ng trackable at nilayon na magmula sa QR scanning sa halip na manu-manong pagpasok. |
Ang mga nabuong public-code na token at nabuong mga short-secret na katawan ay gumagamit ng parehong pamilya ng character na lumalaban sa buhangin. Itinuturing ng na-type na lookup ang O bilang 0, I o L bilang 1, S tulad ng 5, at U tulad ng V. Para sa mga short-secret code ng system, nalalapat ang normalisasyong iyon sa nabuong katawan pagkatapos ng literal na prefix. Ginagamit ng mga pampublikong code ang parehong naka-configure na prefix na may gitling bago ang nabuong katawan, kaya nakikitang naiiba ang mga ito sa mga maiikling sikretong code.
Listahan at mga detalyeng binabasa
Ang mga pampublikong listahan na nabasa ay nililimitahan ng limitasyon sa pagkakalantad ng pampublikong data ng site, na kasalukuyang 500 bilang default.
Kasama sa mga trackable at trackable-group read model ang lastActivityUtc upang ang mga dashboard at API na kliyente ay maaaring magpakita ng kamakailang aktibidad nang tahasan.
GET /api/trackables/public
GET /api/trackables/mine
GET /api/trackables/{trackableId}
POST /api/trackables/{trackableId}/watch
DELETE /api/trackables/{trackableId}/watch
GET /api/trackables/{trackableId}/journey
POST /api/trackables/{trackableId}/journey-stops
DELETE /api/trackables/{trackableId}/journey-stops/{journeyStopId}
GET /api/trackables/public at ang mga pampublikong trackable browse page ng website ay mananatiling multilinggwal upang ang pampublikong paglalakbay at data ng logistik ay hindi nakatago sa pamamagitan ng wika ng ruta.
Ilipat ang wika ng website kapag gusto mong i-localize ang chrome sa parehong pampublikong nasusubaybayang data.
Lumikha ng isang masusubaybayan
POST /api/trackables
Tagadala
{
"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>..."
}
]
}
Dalhin ang sarili mong sikretong code
{
"name": "Marketing token",
"description": "Bring-your-own identifier",
"teamId": null,
"visibility": "VisibleOnceAccessed",
"activateImmediately": true,
"secretCode": "TAG42"
}
Tumatanggap ang server ng mga lihim na code na ibinigay ng tumatawag na hindi nagsisimula sa LN, GT, o GC at hindi tumutugma sa anumang umiiral na lihim o pampublikong code. Ang ibinalik na pampublikong code ay binuo pa rin ng system.
Gumawa ng grupo
POST /api/trackables/groups
Tagadala
{
"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
}
Limitado ang mga grupo sa 100 trackable. Ang mga hindi na-activate na item ay bumabalik sa mga default ng grupo hanggang sa pag-activate. Kapag na-activate na, dapat nilang gamitin ang kanilang sariling pamagat at paglalarawan.
Ang paggawa ng trackable-group ay maaari ding tumanggap ng watchGroupActivityWhenCreated kapag ang isang hindi na-activate na batch ay dapat magsimula sa listahan ng panonood ng gumawa.
Lookup at aktibong session
POST /api/trackables/lookup tumutugma sa isang pampublikong code na token o maikling sikretong code pagkatapos na gawing normal ang mga karaniwang palitan na may bahid na character na nakalista sa itaas.
GET /trackable/{code} ay ang maikling ruta ng pagpasok sa website na ipinapakita sa mga user at mga kliyente ng API. Tumatanggap ito ng pampublikong code, isang maikling sikretong code, o ang mahabang QR token at pagkatapos ay ruta sa tamang daloy.
GET /api/trackables/active naglilista ng kasalukuyang aktibong secret-code session ng kliyente kapag mayroon.
GET /api/trackables/active/{trackableId} ibinabalik ang aktibong landing payload, kabilang ang mga kinakailangan sa pag-activate at mga nakagrupong item kapag available.
POST /api/trackables/active/{trackableId}/message ina-update ang naaalalang teksto ng katayuan.
DELETE /api/trackables/active/{trackableId} tinatapos ang naaalalang secret-code session sa client na iyon.
Ang mga lihim na paghahanap ng code at pag-scan-only sa QR na mga pagbisita ay lumikha ng isang aktibong session ng kliyente sa halip na ibalik ang lihim na halaga. Ang aktibong session na iyon ang nagbibigay-daan sa mga daloy ng tala sa ibang pagkakataon na ilakip ang nasusubaybayan nang hindi muling ipinapasok ang code.
Kapag na-authenticate ang tumatawag, ang kaparehong Visible Once Accessed lookup ay nagli-link din sa nasusubaybayan sa account na iyon upang ang mga naka-sign in na device sa ibang pagkakataon ay maaaring muling buksan ang trackable, pahina ng pangkat nito, at normal na mga follow-up na ruta nang hindi muling ipinapasok ang lihim.
Ang website ay sadyang gumagamit ng parehong direktang entry base na ruta para sa lahat ng tatlong form: /trackable/{publicCode}, /trackable/{secretCode}, at /trackable/{qrToken}.
Ang naka-localize na ruta ng /{lang}/trackable/{code} ay ang na-render na solong-item na landing pagkatapos ng awtomatikong pagpili ng wika, ngunit hindi pa rin ito dapat ipakita bilang naibabahagi o naka-print na URL.
Pagkatapos malutas ang isang pampublikong-code lookup, ang nai-render na pampublikong pahina ay makikita sa /{lang}/trackable/{publicCode}.
Ang ibinahaging ruta ng pagpasok ay mananatiling wasto kahit na magbago ang mga naka-configure na haba ng short-code sa ibang pagkakataon, dahil niresolba ng server ang halaga ng code sa halip na depende sa mga variation ng path ng website na na-hardcode.
Sinasadyang hindi bahagi ng pampublikong URL na sistema ang mga rutang nasusubaybayan ng website na nasasakupan ng may-ari.
Nalalapat din ang pagkakaibang iyon sa mga pahina ng tala: ang isang pampublikong code ay para sa pagbubukas ng pampublikong pahina na nasusubaybayan, habang ang attachment ng tala ay umaasa ng isang umiiral nang maikling sikretong code o isang aktibong session ng browser.
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>...
I-activate sa sarili o team
POST /api/trackables/{trackableId}/activate
Tagadala
{
"name": "",
"description": "",
"useGroupDefaultTitle": true,
"useGroupDefaultDescription": true,
"externalLinkUrl": "",
"externalLinkDescription": "",
"useGroupDefaultExternalLink": true,
"teamId": "optional-team-guid"
}
Kung ibibigay ang teamId, magiging pagmamay-ari ng team ang trackable, mapapamahalaan ito ng mga admin ng team, at patuloy na makontrol ng nag-a-activate na miyembro habang nananatili sila sa team na iyon. Kung walang teamId, magiging personal na pagmamay-ari ang trackable.
Kapag na-activate ang isang nakapangkat na item, maaaring mag-save ang may-ari ng isang tahasang pamagat at paglalarawan ng item o sadyang kopyahin ang kasalukuyang default na pamagat at paglalarawan ng pangkat sa item.
Tanggalin at muling ikabit ang mga pangkat
DELETE /api/trackables/{trackableId}/group inaalis ang kasalukuyang samahan ng grupo.
POST /api/trackables/{trackableId}/group kasama { "trackableGroupId": "..." } iniuugnay ang isang hiwalay na nasusubaybayan sa isang bagong pangkat.
POST /api/trackables/groups/{trackableGroupId}/watch nagsisimulang subaybayan ang mga nakikitang miyembro ng grupo. Ang mga kasalukuyang member-item na relo mula sa parehong pangkat na iyon ay maaari pa ring bumagsak sa pangkat na relo, at ang overlap ng may-ari o relo ay na-deduplicate bawat user.
DELETE /api/trackables/groups/{trackableGroupId}/watch huminto sa pagsubaybay sa grupo.
Ang isang trackable ay maaari lamang mapabilang sa isang grupo sa bawat pagkakataon. Ipinapatupad ng server ang panuntunang detach-first. Ang orihinal na activator lang ang makakapag-attach muli ng isang hiwalay na trackable, at ang patutunguhang pangkat ay dapat ding kontrolin ng user na iyon o ng isang karapat-dapat na admin ng team.
{
"trackableGroupId": "4bdffcab-bb51-4fd8-8c15-59f7b2d72c3f"
}
Mga nasusubaybayang komento
GET /api/trackables/{trackableId}/comments
POST /api/trackables/{trackableId}/comments
PUT /api/trackables/{trackableId}/comments/{commentId}
DELETE /api/trackables/{trackableId}/comments/{commentId}
Ang mga hindi na-activate na trackable ay hindi makakatanggap ng mga komento o mga paghinto sa paglalakbay.
Maaaring direktang mag-post ng mga komento ang mga napatotohanang user. Ang mga anonymous na tumatawag ay maaari ding mag-post, ngunit ang bawat anonymous na pagsusulat ay dapat magmula sa aktibong trackable session ng browser na iyon o muling ipadala ang eksaktong maikling secret code o pribadong QR token para sa partikular na trackable na iyon.
Tanging ang naka-sign-in na may-akda ng komento ang maaaring mag-edit ng kanilang sariling komento. Ang mga masusubaybayang may-ari at kasalukuyang admin ng team ay maaaring magtanggal ng mga komento o mga paghinto ng paglalakbay, ngunit hindi pa rin nila maisusulat na muli ang mga salita ng ibang tao.
{
"body": "Starting the route now.",
"accessCode": "LN4C8R2Z"
}
Direktang paghinto ng paglalakbay
Ang journey feed ay isa na ngayong hindi nababagong kasaysayan ng paghinto. Pinipigilan ng note-backed na snapshot ang lokasyon kapag naka-attach ang tala, at maaaring i-save ang mga direktang ulat sa mapa nang hindi muna gumagawa ng tala.
Kung lumilipat sa ibang coordinate ang isang naka-link na tala sa ibang pagkakataon, pinapanatili pa rin ng trackable na paglalakbay ang orihinal na snapped stop upang hindi tahimik na muling isulat ang kasaysayan ng logistik sa sarili nito.
Sinusunod ng mga anonymous na direktang ulat ang parehong panuntunan gaya ng mga anonymous na komento: dapat gamitin ng tumatawag ang aktibong trackable session ng browser na iyon o muling ipadala ang maikling secret code o pribadong QR token sa kahilingan sa pagsulat.
{
"latitude": 41.8819,
"longitude": -87.6278,
"accessCode": "LN4C8R2Z"
}
GET /api/trackables/{trackableId}/journey nagbabalik ng label-first place facts. Ang bawat punto ay nagdadala ng coordinateId, locationLabel, at currentNotesAtCoordinate upang maipakita ng mga kliyente ang kasalukuyang nakikitang tala sa coordinate na iyon nang hindi tinatrato ang stop na parang nagmamay-ari ito ng isang naka-save na tala.
Hindi na hinahati ng mga tugon sa paglalakbay ang kontrata sa labas sa lungsod, estadoOLalawigan, at bansa. Basahin na lang ang locationLabel kasama ang mga coordinate.
[
{
"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"
}
]
}
]
Visibility at pagsisiwalat ng paglalakbay
Maaaring magpakita ang mga nasusubaybayang pahina ng paglalakbay ng mga nakamapang lokasyon kahit na pribado ang ilang pinagbabatayan na tala. Sa mga sitwasyong iyon, matatanggap ng mga hindi awtorisadong manonood ang punto ng lokasyon ngunit hindi ang protektadong nilalaman ng tala.
Ang mga awtorisadong manonood ay tumatanggap ng pamagat ng tala, paglalarawan, at link ng tala nang direkta mula sa na-preload na payload ng paglalakbay at mga popup ng pin ng mapa.
Pagtanggal at pagpapanatili
Ang pagtanggal ng isang account ay hindi awtomatikong nagtatanggal ng bawat trackable na account na hinawakan kailanman. Maaaring manatili ang mga trackable na ibinahagi o pagmamay-ari ng team habang ang naaalis lang na personal na aktibidad ng natanggal na user ang inaalis.
Suriin ang pahina ng Tanggalin ang Data at ang seksyong API na tanggalin ang account para sa kasalukuyang mga hangganan ng pagpapanatili.
Mga nasusubaybayang gabay sa daloy
Ang nasusubaybayang API ay parehong may ganap na naka-sign-in na workflow ng pagmamay-ari at isang mas magaan na anonymous na sikretong-backed na daloy ng pag-uulat.
Gamitin ang mga nakalaang pahina sa ibaba kapag kailangan mo ng ordered call sequence, decision point, at copy-paste na mga halimbawa sa halip na isang catalog ng ruta.
Napatunayang daloy
Mula sa paghahanap ng nahanap na item sa pamamagitan ng lihim na pag-access sa browser, pag-sign in, pag-activate, pag-link ng tala, direktang pag-log sa paglalakbay, pag-moderate, at mga pagsasaalang-alang sa pag-export/pagtanggal.
Buksan ang authenticated trackable na gabay sa daloy ng API
Error sa paghahanap
Kasama na ngayon sa mga nasusubaybayang tugon sa mga detalye ng problema ang isang stable na field ng code na nababasa ng machine. Gamitin ang pahina ng sangguniang error upang imapa ang mga pagkabigo sa mga malamang na sanhi at pag-aayos.
Buksan ang nasusubaybayang API error reference
Suporta sa panlabas na link na API
Available ang suporta sa external-link sa note, team, trackable, trackable-group, at sync API. Maaaring tawagan muna ng mga kliyente ang verify na endpoint, ngunit ang paggawa at pag-update ng mga ruta ay muling pinapatunayan ang link sa gilid ng server bago i-save.
I-verify ang isang link
POST /api/external-links/verify
Tagadala
Tawagan ito bago ipakita ang field ng paglalarawan sa isang custom na kliyente. Ang isang matagumpay na tugon ay nagbabalik ng isang normalized na URL, ang iminungkahing paglalarawan mula sa pamagat ng page, at isang suportang URL para sa mga isyu sa pagsusuri. Ang mga nabigong tugon ay nagbabalik ng HTTP 400 na may kasamang mensahe ng detalye, isang suportang URL, at isang upstreamStatusCode kapag ang patutunguhang site mismo ay nagbalik ng HTTP na error.
{
"url": "https://example.com/hunt-rules"
}
{
"normalizedUrl": "https://example.com/hunt-rules",
"suggestedDescription": "Example Domain",
"supportUrl": "/fil-PH/support"
}
{
"title": "Request rejected.",
"status": 400,
"detail": "The external page returned HTTP 405 Method Not Allowed during verification.",
"supportUrl": "/fil-PH/support",
"upstreamStatusCode": 405
}
Mga field ng tala, koponan, at pag-sync
Gumagamit ng externalLinkUrl at externalLinkDescription ang paggawa at pag-update ng mga payload ng tala, team, at pag-sync. Kapag totoo ang ApplyExternalLinkChanges sa mga payload ng tala sa pag-sync, ire-validate ng server ang link bago i-save.
CreateNoteRequest.ExternalLinkUrl
CreateNoteRequest.ExternalLinkDescription
CreateTeamRequest.ExternalLinkUrl
CreateTeamRequest.ExternalLinkDescription
UpdateTeamSettingsRequest.ExternalLinkUrl
UpdateTeamSettingsRequest.ExternalLinkDescription
NoteDto.ExternalLinkUrl
NoteDto.ExternalLinkDescription
NoteDto.ApplyExternalLinkChanges
Mga field na nasusubaybayan at pangkat
Ang nasusubaybayang paggawa at pag-update ng mga payload ay gumagamit ng externalLinkUrl, externalLinkDescription, at externalLinkAppendPublicTrackableCode. Ang paggawa at pag-update ng trackable-group ay gumagamit ng defaultExternalLinkUrl, defaultExternalLinkDescription, at defaultExternalLinkAppendPublicTrackableCode. Tinatanggap pa rin ng activation ang useGroupDefaultStatusMessage kasama ng useGroupDefaultTitle, useGroupDefaultDescription, at useGroupDefaultExternalLink kapag sinasadya ng may-ari na magsimula sa mga default ng grupo.
TrackableGroupCreateInputModel.Name ay tumatanggap ng mga titik, numero, puwang, at malalaking titik sa mga kahilingan. Iniimbak ng server ang page slug nang hiwalay sa lowercase na may mga underscore at pinananatiling maayos ang slug na iyon pagkatapos gawin.
Kapag nag-opt in ang isang naka-imbak na trackable o trackable-group na default na link, idinaragdag ng LocationNotes ang LN={publicCode} lamang kapag nagsimula ang pag-click mula sa isang partikular na page na nasusubaybayan. Ginagamit pa rin ng mga page ng pangkat ang nakaimbak na URL nang mag-isa dahil walang indibidwal na trackable code ang nasa konteksto doon.
Ang pag-activate ay maaari ding tumanggap ng opsyonal na initialJourneyStopLatitude at initialJourneyStopLongitude na mga halaga kapag ang unang sinusubaybayang lokasyon ay dapat gawin sa parehong kahilingan.
TrackableCreateInputModel.ExternalLinkUrl
TrackableCreateInputModel.ExternalLinkDescription
TrackableCreateInputModel.ExternalLinkAppendPublicTrackableCode
TrackableActivationInputModel.StatusMessage
TrackableGroupCreateInputModel.DefaultExternalLinkUrl
TrackableGroupCreateInputModel.DefaultExternalLinkDescription
TrackableGroupCreateInputModel.DefaultExternalLinkAppendPublicTrackableCode
TrackableGroupCreateInputModel.DefaultStatusMessage
TrackableGroupCreateInputModel.WatchGroupActivityWhenCreated
TrackableActivationInputModel.UseGroupDefaultTitle
TrackableActivationInputModel.UseGroupDefaultDescription
TrackableActivationInputModel.UseGroupDefaultStatusMessage
TrackableActivationInputModel.ExternalLinkUrl
TrackableActivationInputModel.ExternalLinkDescription
TrackableActivationInputModel.UseGroupDefaultExternalLink
TrackableActivationInputModel.InitialJourneyStopLatitude
TrackableActivationInputModel.InitialJourneyStopLongitude
Pag-uugali ng server
- Dapat ituring ng mga kliyente ang externalLinkDescription bilang hindi magagamit hanggang sa magtagumpay ang pag-verify.
- Kung iiwan ng kliyente na blangko ang paglalarawan, gagamitin ng server ang na-verify na pamagat ng pahina o "walang pamagat na natagpuan sa panlabas na pahina."
- Maaaring mabigo ang mga tinanggihang destinasyon dahil di-wasto ang format na URL, lokal o pribado ang host, hindi maabot ang page, hindi nagtagumpay ang page, o nakita ang mga signal ng adult-content.
- Ang mga pampublikong page ay nagre-render ng mga naka-save na external na link sa pamamagitan ng isang LocationNotes na exit page sa halip na ipadala ang bisita nang diretso sa third-party na destinasyon.
Mga endpoint ng larawan
Palaging sumusunod ang visibility ng larawan sa pangunahing item. Kung mabubuksan ng tumatawag ang nakakonektang profile, tala, team, trackable, o trackable-group page, mabubuksan din ng tumatawag ang mga larawan nito. Kung ang pangunahing item ay hindi naa-access, ang listahan ng larawan ay nagbabasa na hindi ibinalik ang mga item at ang direktang pag-download ng imahe ay nagbabalik ng 404.
Dapat ding tandaan ng mga kliyente na ang mga pag-upload ay sini-screen bago i-save, ang mga orihinal ay hindi pinapanatili, at ang server ay nag-iimbak lamang ng mga resize na JPEG na variant. Parehong ginagamit ng website at Android app ang parehong mga kontrata at ruta ng file ng API na ito.
Maglista ng mga larawan ayon sa magulang
GET /api/images/profiles/{userId}
Anonymous o Tagadala
GET /api/images/notes/{noteId}
Anonymous o Tagadala
GET /api/images/teams/{teamId}
Anonymous o Tagadala
GET /api/images/trackables/{trackableId}
Anonymous o Tagadala
GET /api/images/trackable-groups/{trackableGroupId}
Anonymous o Tagadala
Gamitin ang mga babasahin na ito upang punan ang mga gallery. Kasama sa bawat item ang GUID ng larawan, mga orihinal na dimensyon, at ang mga kaugnay na URL para sa thumbnail, maliit, katamtaman, at malalaking nakaimbak na mga kopya.
inilalarawan ng originalWidth at originalHeight ang na-upload na pinagmulang larawan para sa sanggunian. Ang aktwal na nada-download na mga file ay ang mga naka-resize na variant pa rin na naka-link ng thumbnailUrl, smallUrl, mediumUrl, at 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"
}
]
I-download ang mga nakaimbak na byte
GET /api/images/{contentImageId}/{variant}
Anonymous o Tagadala
Ang mga wastong value ng variant ay thumbnail, maliit, katamtaman, at malaki. Ang mga tugon ay nagbabalik ng larawan/jpeg.
Ang mga URL ng file ng website sa ilalim ng /Images/{Variant}/{guid}-{size}.jpg ay nagpapatupad ng parehong panuntunan sa pagiging visible ng magulang bago ihatid ang mga byte ng larawan, kaya ang mga direktang link ng larawan ay protektado pa rin ng mga pahintulot ng konektadong profile, tala, koponan, nasusubaybayan, o nasusubaybayan-grupo.
curl -L "https://locationnotes.com/api/images/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1/large" --output note-large.jpg
Mag-upload ng mga larawan
POST /api/images/profiles
Tagadala
POST /api/images/notes/{noteId}
Tagadala
POST /api/images/teams/{teamId}
Tagadala
POST /api/images/trackables/{trackableId}
Tagadala
POST /api/images/trackable-groups/{trackableGroupId}
Tagadala
Magpadala ng isang multipart file field na pinangalanang file. Dapat ay mayroon nang pahintulot sa pamamahala ng magulang ang tumatawag para sa target, na nangangahulugang access ng admin ng koponan para sa mga page ng koponan at ang normal na pahintulot sa pag-edit/pamamahala para sa iba pang mga uri ng magulang. Ang mga pag-upload ay sini-screen bago i-save, pagkatapos ay iniimbak bilang mga binagong JPEG na kopya lamang.
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"
}
}
Tanggalin ang mga larawan
DELETE /api/images/{contentImageId}
Tagadala
Ang pagtanggal ay nangangailangan ng parehong pahintulot sa pamamahala ng magulang na kinakailangan sa pag-upload. Kapag nagtagumpay ang isang pagtanggal, ang row ng content-image at lahat ng naka-store na variant ay aalisin nang magkasama.
Dapat ipadala ng mga kliyente ng API ang HTTP DELETE verb dito. Ang pagbubukas ng URL na ito nang direkta sa isang browser address bar ay nagpapadala ng GET sa halip, na nagbabalik ng 405 Method Not Allowed dahil ang rutang ito ay hindi isang download page.
Ginagamit ng mga button sa pagtanggal ng website ang naka-localize na ruta ng form ng website sa /{culture}/images/{contentImageId}/delete kaya ang mga browser gallery ay nagtatanggal ng proteksyon laban sa pamemeke.
curl -X DELETE "https://locationnotes.com/api/images/f1d52aa2-4d59-49bf-8d21-7d0b4e9e57f1" \
-H "Authorization: Bearer <access token>"
Ano ang isang Imahe? ipinapaliwanag ang visibility, moderation, pag-uulat, pagbabago ng laki, pag-export, at mga panuntunan sa pagtanggal sa likod ng mga rutang ito.
Pag-uulat ng pagsunod
Gamitin ang mga rutang ito para sa mga ulat ng hindi naaangkop na nilalaman, mga sinusubaybayang error sa system, at parehong mga talaan ng tiket ng suporta na sumusuporta sa daloy ng kahilingan sa suporta sa website.
Maaaring magsumite ng mga ulat ang mga hindi kilalang tumatawag, ngunit ang mga naka-sign-in na reporter lang ang makakasubaybay sa mga update sa status at mga resolusyon ng super-admin sa pamamagitan ng API.
Magsumite ng ulat
POST /api/compliance/reports
Anonymous o Tagadala
Kung ang tumatawag ay na-authenticate sa pamamagitan ng cookie ng website o may dalang token, ang ginawang ulat ay naka-attach sa account na iyon upang lumabas ito sa ilalim ng 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."
}
Subaybayan ang isang API ticket o mag-ulat ng error sa app
POST /api/compliance/errors
Anonymous o Tagadala
Kung nabigo na ang isang API na ruta na may hindi inaasahang 500 at nagbalik ng ticketNumber sa mga detalye ng problema JSON, i-post ang ticket na iyon dito sa halip na gumawa ng pangalawang error log row. Isama ang UserExplanation at itakda ang trackInSupportTickets kapag gusto ng tumatawag ng super-admin na follow-up.
{
"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"
}
}
Kapag nangyari ang kabiguan sa loob lang ng Android app at wala pang server ticket, gumawa ng bagong error ticket na may marker na naglalarawan kung nasaan ang app.
{
"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"
}
Gumamit ng mga value ng pageMarkerType gaya ng URL, Android screen, o Android background task. Para sa mga ticket na binuo ng server, panatilihin ang orihinal na URL marker at ipadala ang ibinalik na ticketNumber dito upang ang naka-log na API URL ay manatiling nakadikit sa parehong tiket.
Nabasa ang status ng reporter
GET /api/compliance/reports/mine
Tagadala
GET /api/compliance/reports/{contentReportId}
Tagadala
Ang mga rutang ito ay nagbabalik lamang ng sariling mga ulat ng tumatawag maliban kung ang tumatawag ay isang super-admin. Gamitin ang mga ito upang ipakita ang Naiulat, Pagsusuri, o Nalutas kasama ang anumang tala ng huling resolusyon para sa parehong mga ulat sa nilalaman at mga sinusubaybayang error sa system.
{
"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"
}
Super-admin na pagsusuri
GET /api/compliance/reports
Tagadala + SuperAdmin
PUT /api/compliance/reports/{contentReportId}
Tagadala + SuperAdmin
Kasama sa listahan ng admin ang link ng ulat, metadata ng page, metadata ng nakakasakit na nilalaman, pagkakakilanlan ng reporter kapag available, at anumang nakaraang tala sa pagsusuri. Isinulat ng mga update ang kasalukuyang estado ng pagsusuri at text ng nakikitang resolution.
{
"status": 1,
"resolutionText": "Review opened and queued for follow-up."
}
Itakda ang status sa 2 at isama ang isang hindi walang laman na resolutionText kapag isinasara ang isang ulat bilang nalutas.
Mga halaga ng enum
pageType: 0 pahina ng profile, 1 pahina ng pangkat, 2 pahina ng tala, 3 nasusubaybayan na pahina, 4 masusubaybayang pahina ng pangkat, 5 error sa system, 6 pahina ng suporta
contentType: 0 pamagat, 1 paglalarawan, 2 komento, 3 katawan, 4 talambuhay, 5 pamagat at nilalaman, 6 mga detalye ng error, 7 larawan, 8 kahilingan sa suporta
status: 0 iniulat, 1 nagrereview, 2 naresolba
Gumagamit na ngayon ang mga ulat sa antas ng pahina ng website ng 5 upang masakop ng isang button ng ulat ang parehong nakikitang pamagat at ang nakikitang paglalarawan/katawan nang magkasama. Ginagamit pa rin ng mga ulat sa antas ng komento ang mga uri ng content na tukoy sa komento.
Ang mga kahilingan sa pangkalahatang suporta sa website ay gumagawa ng Pahina ng Suporta kasama ang mga tiket sa paghiling ng Suporta sa pamamagitan ng parehong COMPLIANCE.ContentReports store, kahit na ginagamit ng form ng browser ang page ng Suporta sa halip na ang raw na rutang ito ng API.
Ang sinusubaybayang website, API, at mga error sa Android app ay iniimbak sa LOG.Errors. Kapag naka-enable ang trackInSupportTickets, lalabas din ang naka-link na ticket ng suporta sa COMPLIANCE.ContentReports kaya sinusunod ng super-admin review at reporter status ang parehong workflow.
System at beta metadata
GET /api/system/status
Hindi nakikilala
Gamitin ito para sa mga pagsusuri sa kalusugan, Android compatibility gating, ang kasalukuyang beta-page na URL, at ang naresolbang estado ng mapa/privacy para sa kasalukuyang kahilingan.
GET /api/system/beta-android
Hindi nakikilala
Ibinabalik ang naka-stage na Android beta metadata, kasama ang display version, version code, minimum compatible na bersyon, at release note.
GET /api/system/ip-location
Hindi nakikilala
Ibinabalik ang pinakamahusay na pagsisikap na IP-based na lokasyon ng kasalukuyang kahilingan para sa pagsentro ng mapa at pag-troubleshoot.
Kapag ang client IP ay pribado, lokal, o kung hindi man ay hindi pinagkakatiwalaan, ang tugon ay mananatiling HTTP 200 at ipinapaliwanag ang kabiguan sa
failureReason
sa halip na maghagis ng error sa transportasyon.
GET /api/system/coordinate-locality
Hindi nakikilala
Reverse-geocodes ang isang pares ng latitude/longitude sa mga label ng lungsod, estado/lalawigan, at bansa para sa mga daloy ng stop-planner at pagpili ng mapa.
Ang mga di-wastong coordinate ay nagbabalik ng isang hindi ibinabato na payload na may
resolved=false
at
failureReason=invalid-coordinates.
- requestedExperienceMode versus effectiveExperienceMode ay nagsasabi sa iyo kung ang naka-sign-in na kagustuhan ay nakaligtas sa mga panuntunan sa privacy sa oras ng kahilingan o pinilit na ibaba sa no_3rd_parties.
- requestedMapSource, preferredMapSource, at fallbackMapSource sabihin sa iyo kung aling provider ang hiningi ng user, aling provider ang gustong subukan muna ng server, at aling provider ang susunod na mag-load kung nabigo ang gustong source.
- sasabihin sa iyo ng thirdPartyBrowserCallsAllowed, googleMapsAllowed, at openStreetMapAllowed kung ang kahilingang ito ay maaaring tumawag sa mga provider sa gilid ng browser.
- hostedMapsForcedByPrivacy at hostedMapTileUrlTemplate ay nagsasabi sa iyo kapag ang kahilingan ay pinilit sa parehong pinagmulan na naka-host na mga tile, na kasalukuyang nagre-render sa pamamagitan ng
/maps/tiles/{z}/{x}/{y}.png.
Ang pribadong network, local-network, at kung hindi man ay hindi naresolba na mga kahilingan sa IP ay sadyang tumahak sa mas mahigpit na landas, kaya ang isang localhost o office-network na pagsubok ay maaaring lehitimong magpakita ng no_3rd_parties at hosted_maps kahit na iba ang kagustuhan sa naka-sign in.
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/fil-PH/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": ""
}
Kumpletuhin ang imbentaryo ng ruta
Ang seksyong ito ay ang kumpletong checklist ng verb-and-path para sa kasalukuyang LocationNotes API surface, kabilang ang mga ruta ng pagkakakilanlan na pinamamahalaan ng framework sa ilalim ng /api/auth. Ipinapaliwanag ng mga detalyadong seksyon sa itaas ang mga pangunahing daloy ng trabaho; ang imbentaryo na ito ang pinagmumulan ng katotohanan sa antas ng ruta na dapat manatiling nakahanay sa live na talahanayan ng endpoint.
Tanggalin ang account mula sa API
Maaaring permanenteng tanggalin ng mga na-authenticate na kliyente ang kasalukuyang account at naka-sync ng personal na data sa pamamagitan ng API. Basahin ang
Tanggalin ang Data
page muna kung kailangan mo ng buong panuntunan sa pagpapanatili para sa data at pag-export na pagmamay-ari ng team.
Ang nasusubaybayang paglilinis ay hindi lahat-o-wala. Inaalis ng server ang personal na nasusubaybayang aktibidad ng tinanggal na user kung saan maaari, ngunit hindi nito inaalis ang mga nakabahaging trackable, mga trackable na pagmamay-ari ng team, o kasaysayan ng ibang mga user dahil lang sa natanggal ang isang account.
Kung mahalaga pa rin sa team ang trackable na pagmamay-ari ng team, mananatili ito sa team na iyon. Kung naka-attach pa rin sa isang trackable ang aktibidad ng ibang tao, mananatili sa system ang trackable na iyon.
DELETE /api/account
Tagadala
curl -X DELETE "https://locationnotes.com/api/account" \
-H "Authorization: Bearer <access token>"
{
"deletedAccount": true,
"notesDeleted": 14,
"categoriesDeleted": 6,
"linkedProvidersDeleted": 2
}
Mga error at detalye ng problema
Ang mga pagkabigo sa pagpapatunay, pahintulot, at paghahanap ay nagbabalik ng mga karaniwang HTTP status code. Maraming mga ruta ng workspace ang nagbabalik ng RFC 7807 style na mga detalye ng problema JSON na may pamagat, detalye, at status.
{
"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 para sa pagpapatunay o pagtanggi sa panuntunan ng negosyo
401 para sa nawawala o di-wastong pagpapatunay
403 para sa mga napatunayang user na walang access
404 para sa mga nawawalang tala, kategorya, koponan, membership, o link ng imbitasyon
Ang mga nasusubaybayang ruta ng pagsulat ay nagdaragdag din ng isang matatag na pag-aari ng code upang makilala ng mga kliyente ng API ang mga kaso tulad ng
trackable_access_code_required,
trackable_access_code_invalid,
trackable_activation_required,
at
trackable_already_activated
nang walang pag-parse ng tekstong Ingles. Ang buong pagmamapa ay nakadokumento sa
nasusubaybayang pahina ng sanggunian ng error.