Geotrackable.com

Pag-setup ng Android app

Sa tab na Sync ng Android, ang origin lang ng site ang i-save bilang endpoint. Huwag idagdag ang /api.

https://Geotrackable.com

Mag-sign in sa pamamagitan ng pag-post ng local account credentials sa /api/auth/login?useCookies=false&useSessionCookies=false, pagkatapos ay ipadala ang ibinalik na bearer token sa Authorization header.

Mga inaasahang tugon

Nagbabalik ang mga protektadong route ng HTTP 401 hanggang magpadala ang client ng bearer token. Ang pagbukas ng POST-only route sa browser ay nagbabalik ng HTTP 405 dahil GET ang ipinapadala ng browser.

Sa bawat offline sync cycle, dapat mauna ang push at sumunod ang pull.

Nagbabalik ng HTTP 404 ang hindi kilalang API path. Karaniwang nagbabalik ng HTTP 405 ang kilalang path na tinawag gamit ang maling verb at maaari itong magkaroon ng Allow header. Sadyang walang GET endpoint ang delete-only na /api/account path, kaya nagbabalik ang GET /api/account ng 404 na may magagamit na tagubilin; gamitin ang /api/auth/manage/info para basahin ang account.

Suriin ang host, mag-sign in, at tiyakin ang token bago tumawag ng mga private route.

Ang route para sa kasalukuyang account information ay galing sa framework identity API. Ang hiwalay na account route ay para lang sa permanenteng pagbura.

Pagsuri ng status

Anonymous ang route na ito at ito ang pinakamabilis na paraan para tiyaking naaabot ang production API host.

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

Pagpaparehistro

Gumawa ng lokal na account gamit ang email, password, at pampublikong profile user name bago humiling ng bearer token. Ang mga user name ay maaaring maglaman lamang ng maliliit na titik, numero, at underscore.

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

Pag-login gamit ang bearer token

Gumamit ng local account credentials na naka-disable ang cookies kapag kailangan ng script, app, o API client ng bearer token.

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

Kasalukuyang account at profile

Walang GET /api/account profile endpoint. Gamitin ang identity manage-info endpoint para sa signed-in account metadata, at gamitin ang website profile pages para sa public profile display.

GET /api/account ay hindi published read route.

GET /api/auth/manage/info nagbabalik ng signed-in identity details.

DELETE /api/account permanenteng binubura ang kasalukuyang account.

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

Magsimula sa mga route na ito kapag sinusuri ang Android o API-client connection.

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

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

Gumagamit ang Geotrackable ng salitang Locations sa website, habang ginagamit pa rin ng mga API route name ang shared notes contracts sa ilalim.

Public locations sa loob ng map bounds

Gamitin ang bounds kapag mayroon nang map viewport ang client at kailangan nito ng nakikitang public location notes para sa lugar na iyon.

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

Gumawa ng personal location

Makakagawa ng private o public locations ang caller na naka-sign in. Kailangan ng authenticated account ang public locations, hindi anonymous local-only storage.

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

I-push muna ang local changes, pagkatapos ay i-pull ang server view para sa user at kasalukuyang public area.

Kailangan ng bearer auth ang parehong sync route. Maaaring manatiling local sa device ang anonymous private locations, pero hindi tinatanggap ang mga ito ng server sync API.

Kahilingan sa push

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

Dapat tumukoy ang bawat note sa category na nakikita na ng naka-sign-in na account o sa category na kasama sa parehong push. Panatilihing magkapareho ang categoryId sa dalawang record kapag magkasama silang ginagawa offline.

Kahilingan sa pull

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

Ayusin ang mga push conflict bago mag-pull

Maaaring magbalik ang valid na push ng HTTP 200 na may conflicts collection. Resulta ito ng synchronization para sa bawat entity, hindi transport failure. Kasama sa bawat conflict ang entityId, entityType, paliwanag na madaling basahin, stable na code, at kongkretong action.

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

Huwag tahimik na ulit-ulitin ang rejected entity. Nangangailangan ang stale_update ng pull at desisyon sa pag-merge; nangangailangan ang team_membership_required ng refreshed membership; inililipat ng online_team_management_required ang pagbabago sa online team APIs; nangangahulugan ang entity_ownership_conflict na ang server copy ang masusunod para sa account na ito.

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

Sensitive credentials ang secret codes at private QR payloads. Hindi na ibinabalik ng normal read routes ang mga ito pagkatapos ng paggawa.

Optional ang secretCode property sa POST /api/trackables. Alisin ito kapag gusto mong gumawa ang Geotrackable ng natatanging system secret code, o magpadala ng pinapayagang custom value kapag mayroon nang code ang pisikal na item na kailangan mong panatilihin.

Public browse at lookup

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

Maaaring gumawa ng browser-style active session ang secret at QR lookup. Panatilihin ang cookie jar ng response para sa mga susunod na active-session call, protektahan ang file na iyon na parang credential, at burahin ito kapag hindi na kailangan ang session.

Gumawa ng trackable

Walang secretCode ang inirerekomendang request. Kapag inalis, null, empty, o puro whitespace ang value, hinihiling nito sa server na gumawa ng code. Kapag hindi empty ang value, kahilingan ito para sa eksaktong custom code na iyon pagkatapos ng normalization at availability checks.

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

Humiling ng partikular na secret code

Ipadala lang ang secretCode kapag mayroon nang custom identifier ang item. Kung available ang normalized value, gagamitin ito ng server at magbabalik ng HTTP 201. Hiwalay ang generated public code at Geotrackable pa rin ang nagtatalaga nito.

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

Hindi dapat lumampas sa 32 character ang custom codes at dapat available ang mga ito sa buong namespace ng public at secret trackable codes. Ang mga code na nagsisimula sa GT, LN, TB, GK, o GC ay nakalaan para sa mga identifier na inilabas ng system o ng pinagmulang site at hindi maaaring gamitin bilang custom na Geotrackable secret codes.

Isang beses lang ipinapakita ang secrets sa creation response

I-save agad ang ibinalik na secretCode at scanUrl. Sadyang hindi na muling inilalantad ng mga susunod na list, detail, lookup, comment, at journey route ang credentials na iyon.

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

Aktibong secret access

Pagkatapos magpasok ang browser ng valid secret code o scan payload, ipinapakita ng active-session routes kung ano ang kasalukuyang mabubuksan muli ng browser na iyon.

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

Kapag ginagamit na ang hiniling na code

Kapag ginagamit na ang custom code, nagbabalik ang server ng HTTP 409 na may code na trackable_secret_code_taken. Walang nalikhang trackable ang request. Huwag paulit-ulit na subukan ang parehong value: alisin ang secretCode para makatanggap ng generated code, o pumili ng ibang pinapayagang custom code.

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

Pag-recover mula sa reserved prefix

Nagbabalik ang reserved o invalid na custom values ng problem response na may action at link sa dokumentasyon. Ang palaging ligtas na fallback ay alisin ang secretCode sa create request.

Mag-log ng journey stop

Ang direct journey stop ay magaan na route update kapag hindi kailangan ang buong location note.

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

Magkomento sa trackable

Maaaring mag-comment ang mga naka-sign-in na caller gamit ang kanilang bearer identity. Maaari ring mag-comment ang anonymous na caller sa activated trackable kapag may active secret-backed session ang client na ito o ipinapadala nito ang accessCode para sa eksaktong item na iyon.

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

Tungkol sa Trackables

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

Lumikha ng isang koponan

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

Gumawa ng invite link

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

Tungkol sa Mga Koponan

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

Mga imahe

Maaaring anonymous ang list reads kapag public-safe ang parent page. Kailangan ng bearer auth para sa upload at delete routes.

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

Pag-verify ng external link

I-verify ang external link bago ito i-store sa location, team, trackable, o trackable group.

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

Content at error reports

Gamitin ang reports para sa public-page content concerns at errors para sa client-side diagnostics na maaaring kailangang suriin ng support.

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

Burahin ang account mula sa API

Maaaring permanenteng burahin ng authenticated clients ang kasalukuyang account at synced personal data sa pamamagitan ng API. Basahin muna ang Delete Data page kapag kailangan mo ng export steps o shared trackable retention rules.

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

Tanggalin ang data

Kasama sa mga error ang susunod na kapaki-pakinabang na action

Tinutukoy ng mga API problem response ang failure gamit ang stable na code, ipinapaliwanag ang detail na partikular sa request, at nagbibigay ng action na maaaring ipakita o sundin ng mga client. Gamitin ang requestId kapag kailangang itugma ng support ang request sa server diagnostics.

Basahin ang error payload at gabay sa pag-recover

Mag-sign in

Iproseso ang machine code, panatilihin ang request ID, at sundin ang action sa halip na suriin ang English na text.

Gumagamit ang mga API failure ng application/problem+json at RFC-style na problem-details object. Maaaring pagandahin o i-localize sa paglipas ng panahon ang title at detail na madaling basahin; ang code ang stable na value para sa program logic.

Anyo ng problem response

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

Gamit ng bawat field

Kasama sa validation errors ang mga field name

Nagdaragdag ng errors object ang mga HTTP 400 validation failure. Ang bawat key ay ang JSON property o bahagi ng request na kailangang itama, at array ang bawat value dahil maaaring lumabag ang isang field sa higit sa isang rule.

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

Maling JSON at content type

Request validation failure ang invalid na JSON. Panatilihin ang requestId, ayusin ang syntax, at ipadala muli ang body na may Content-Type: application/json. Sa halip, nangangailangan ang mga file-upload endpoint ng multipart/form-data at ng files o file part na may field name na partikular sa route.

Maaari pa ring lumabag sa business rule ang body na tama ang syntax. Gamitin ang errors para sa mga problema sa field, code para sa program logic, detail para sa konteksto, at action para sa susunod na hakbang. Huwag ipakita sa mga user ang raw server exception o stack trace.

Katayuan Ang ibig sabihin nito Pag-recover Gabay sa muling pagsubok
400 Bad Request Tinanggihan ang request dahil sa JSON, query values, field constraints, o isang business rule. Basahin ang errors kapag mayroon; kung wala, basahin ang code, detail, at action. Itama ang request bago ito ipadala muli. Huwag subukang muli ang request na walang pagbabago.
401 Unauthorized Hindi nakatanggap ang protected route ng magagamit na bearer token. Gumagamit din ng 401 ang mga pagkabigo sa pag-login nang hindi isinisiwalat kung may umiiral na email. Kumuha o mag-refresh ng token, tiyakin ang Bearer scheme at host, at pagkatapos ay ulitin nang isang beses ang nilalayong call. Subukan lang ulit pagkatapos magbago ang authentication; hindi makatutulong ang paulit-ulit na pagtatangka na walang pagbabago.
403 Forbidden Kilala ang caller ngunit wala itong kinakailangang ownership, team role, active trackable session, o secret-backed access. Sundin ang action: gumamit ng eligible na account, humiling ng access, i-activate ang item, o magbigay ng access para sa eksaktong trackable na iyon. Huwag subukang muli hangga't hindi nagbabago ang access state.
404 Not Found Hindi nakita ang route o resource. Maaaring sadyang magmukhang wala ang private resources kapag hindi dapat malaman ng caller na umiiral ang mga ito. Tiyakin ang method, route, GUID, public code, at kasalukuyang state ng listahan. I-refresh ang lumang client data. Huwag gumawa ng loop. Subukan lang ulit pagkatapos itama ang identifier o i-refresh ang state.
405 Method Not Allowed Umiiral ang path ngunit mali ang HTTP verb, gaya ng pagbukas gamit ang browser GET sa route na POST lang. Gamitin ang method na ipinapakita sa dokumentasyong ito at tingnan ang Allow response header kapag mayroon. Subukan lang ulit gamit ang tamang method at anyo ng request.
409 Conflict Valid ang request ngunit may conflict ito sa kasalukuyang server state, kabilang ang hiniling na trackable secret code na ginagamit na. I-reload ang kasalukuyang state o baguhin ang value na may conflict. Para gumawa ng trackable, alisin ang secretCode upang mag-generate ng code o pumili ng ibang custom code. Huwag subukang muli ang parehong create value; subukan lang ulit pagkatapos baguhin ang request o state.
413 Content Too Large Lumampas sa tinatanggap na laki ang request body o set ng mga in-upload na file. Bawasan ang dami o laki ng mga image, hatiin ang upload kapag pinapayagan ng workflow, at ihiwalay ang metadata requests sa media. Subukan lang ulit gamit ang mas maliit na payload.
415 Unsupported Media Type Hindi tumutugma sa endpoint ang body encoding. Gamitin ang application/json para sa JSON endpoints at multipart/form-data para sa image o GPX upload endpoints. Hayaan ang HTTP library na gumawa ng multipart boundaries. Subukan lang ulit pagkatapos itama ang Content-Type at body encoding.
429 Too Many Requests Lumampas ang client sa request limit o napakabilis nitong nagpapadala nang maramihan. Sundin ang Retry-After kapag mayroon, bawasan ang concurrency, i-cache ang public reads, at pagsamahin ang magkakaparehong requests. Maghintay ayon sa Retry-After; kung wala ito, gumamit ng exponential backoff na may jitter at limitasyon sa muling pagsubok.
500 Internal Server Error Naitala ng Geotrackable ang hindi inaasahang failure. Hindi inilalantad ng response ang stack traces o internal secrets. Panatilihin ang requestId at ticketNumber kapag mayroon, pagkatapos ay makipag-ugnayan sa support kasama ang oras, method, route template, status, at code. Subukang muli ang safe reads pagkatapos ng paghihintay. Huwag basta ulitin ang create o ibang non-idempotent write kapag hindi alam kung na-commit ito.

Maingat na ulitin ang writes

Karaniwang ligtas subukang muli ang mga GET request. Maaaring lumikha ng data ang POST kahit mag-timeout ang client bago matanggap ang response. Bago ulitin ang paggawa ng trackable, i-refresh ang GET /api/trackables/mine at itugma ang resulta upang hindi lumikha ng magkaparehong pisikal na item ang network timeout.

Para sa 429 o pansamantalang 500, gumamit ng bounded exponential backoff na may jitter. Huminto kapag sinasabi ng action na kailangang baguhin ang mismong request. Huwag kailanman gawing automatic retry loop ang 400, 403, 404, 405, 409, 413, o 415.

Panatilihing kapaki-pakinabang ang diagnostics nang hindi naglalantad ng credentials

Huwag kailanman i-log ang Authorization headers, bearer o refresh tokens, passwords, cookies, secretCode, accessCode, QR payloads, private scan URLs, o raw na /trackable/{code} entry paths. I-redact ang mga ito bago ilagay sa telemetry, crash reports, screenshots, at support attachments.

Kabilang sa mga ligtas na diagnostic field ang requestId, ticketNumber, HTTP status, stable na code, method, route template, client version, at timestamp. Huwag kopyahin ang buong request body kapag maaari itong maglaman ng location text, eksaktong coordinates, contact details, o trackable credential.

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

Mga inilathalang Geotrackable API route

Ginagawa ang talahanayang ito mula sa tumatakbong endpoint table ng Geotrackable upang manatiling tugma sa host ang inilathalang dokumentasyon.

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

DELETE /api/account

Maaaring permanenteng burahin ng authenticated clients ang kasalukuyang account at synced personal data sa pamamagitan ng API. Basahin muna ang Delete Data page kapag kailangan mo ng export steps o shared trackable retention rules.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/auth/confirmEmail

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

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/auth/forgotPassword

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

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/auth/login

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

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/auth/manage/2fa

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

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/auth/manage/info

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

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/auth/manage/info

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

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/auth/refresh

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

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/auth/register

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

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/auth/resendConfirmationEmail

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

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/auth/resetPassword

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

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/categories/mine

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/categories/mine

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/categories/mine/tree

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/categories/mine/tree/children

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/categories/mine/tree/sections

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

DELETE /api/categories/mine/{categoryId}

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/compliance/errors

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/compliance/reports

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/compliance/reports

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/compliance/reports/mine

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/compliance/reports/{contentReportId}

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

PUT /api/compliance/reports/{contentReportId}

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/external-links/verify

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/images/notes/{noteId}

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/images/notes/{noteId}

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/images/profiles

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/images/profiles/{userId}

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/images/teams/{teamId}

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/images/teams/{teamId}

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/images/trackables/{trackableId}

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/images/trackables/{trackableId}

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

DELETE /api/images/{contentImageId}

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Sinusunod ng media at support routes ang visibility ng page o content na pinagkakabitan ng mga ito.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/locations/mine/gpx

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/locations/mine/gpx

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/notes/mine

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/notes/mine

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/notes/mine/gpx

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/notes/mine/gpx

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

DELETE /api/notes/mine/{noteId}

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/notes/public/bounds

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/notes/public/nearby

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/public/notes/{noteId}

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Anonymous ang public map reads; kailangan ng bearer auth para magsulat ng personal location at category.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/sync/pull

I-push muna ang local changes, pagkatapos ay i-pull ang server view para sa user at kasalukuyang public area.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/sync/push

I-push muna ang local changes, pagkatapos ay i-pull ang server view para sa user at kasalukuyang public area.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/system/beta-android

Anonymous ang route na ito at ito ang pinakamabilis na paraan para tiyaking naaabot ang production API host.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/system/coordinate-locality

Anonymous ang route na ito at ito ang pinakamabilis na paraan para tiyaking naaabot ang production API host.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/system/ip-location

Anonymous ang route na ito at ito ang pinakamabilis na paraan para tiyaking naaabot ang production API host.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/system/status

Anonymous ang route na ito at ito ang pinakamabilis na paraan para tiyaking naaabot ang production API host.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/teams

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/teams

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

DELETE /api/teams/{teamId}

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/teams/{teamId}/categories

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/teams/{teamId}/categories

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/teams/{teamId}/notes

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/teams/{teamId}/notes

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

PUT /api/teams/{teamId}/settings

Pinamamahalaan ng Team APIs ang shared locations, categories, invite links, membership decisions, at team-owned trackable scope.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/trackables

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/trackables/active

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/trackables/active-indicator

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

DELETE /api/trackables/active/{trackableId}

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/trackables/active/{trackableId}

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/trackables/groups

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/trackables/legacy-lookup

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/trackables/lookup

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/trackables/lookup

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/trackables/mine

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/trackables/public

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/trackables/{trackableId}

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/trackables/{trackableId}/activate

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/trackables/{trackableId}/comments

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/trackables/{trackableId}/comments

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

DELETE /api/trackables/{trackableId}/group

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/trackables/{trackableId}/group

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

GET /api/trackables/{trackableId}/journey

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

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

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

DELETE /api/trackables/{trackableId}/watch

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

POST /api/trackables/{trackableId}/watch

Saklaw ng trackable routes ang public browsing, private ownership, remembered secret access, comments, at journey stops.

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

Matagumpay na response

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

Mga karaniwang failure at paraan ng pag-recover

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

Suporta