Geotrackable.com

Налаштування застосунку Android

На вкладці синхронізації Android збережіть як кінцеву точку лише адресу сайту. Не додавайте /api.

https://Geotrackable.com

Увійдіть, надіславши облікові дані локального облікового запису до /api/auth/login?useCookies=false&useSessionCookies=false, а потім передавайте отриманий bearer-токен у заголовку Authorization.

Очікувані відповіді

Захищені маршрути повертають HTTP 401, доки клієнт не надішле bearer-токен. Відкриття в браузері маршруту лише для POST повертає HTTP 405, оскільки браузер надсилає GET.

Кожен цикл автономної синхронізації має спочатку виконувати push, а потім pull.

Невідомий шлях API повертає HTTP 404. Виклик відомого шляху неправильним HTTP-методом зазвичай повертає HTTP 405 і може містити заголовок Allow. Шлях /api/account призначений лише для видалення й навмисно не має кінцевої точки GET, тому GET /api/account повертає 404 із порадою щодо дій; для читання даних облікового запису використовуйте /api/auth/manage/info.

Перевірте хост, увійдіть і підтвердьте токен перед викликом приватних маршрутів.

Маршрут інформації про поточний обліковий запис походить з identity API фреймворку. Окремий маршрут account використовується лише для остаточного видалення.

Перевірка стану

Цей маршрут анонімний і є найшвидшим способом підтвердити, що робочий хост API доступний.

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

Реєстрація

Створіть локальний обліковий запис з електронною поштою, паролем та ім’ям користувача публічного профілю, перш ніж запитувати bearer-токен. Імена користувачів можуть містити лише малі літери, цифри та підкреслення.

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

Bearer-вхід

Використовуйте облікові дані локального облікового запису з вимкненими cookie, коли скрипту, застосунку або API-клієнту потрібен bearer-токен.

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

Поточний обліковий запис і профіль

Кінцевої точки профілю GET /api/account немає. Використовуйте кінцеву точку identity manage-info для метаданих облікового запису користувача, який увійшов, а сторінки профілю сайту - для публічного відображення профілю.

GET /api/account не є опублікованим маршрутом читання.

GET /api/auth/manage/info повертає дані ідентичності користувача, який увійшов.

DELETE /api/account остаточно видаляє поточний обліковий запис.

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

Починайте з цих маршрутів, коли перевіряєте підключення Android або API-клієнта.

Метод Маршрут
GET /api/system/status
POST /api/auth/register
POST /api/auth/login?useCookies=false&useSessionCookies=false
GET /api/auth/manage/info
POST /api/sync/push
POST /api/sync/pull
GET /api/notes/public/bounds
GET /api/notes/public/nearby
GET /api/categories/mine
GET /api/notes/mine
GET /api/trackables/public
POST /api/trackables/lookup
GET /api/trackables/active
DELETE /api/account

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

На сайті Geotrackable використовується термінологія Локацій, тоді як назви маршрутів API все ще спираються на спільні контракти notes.

Публічні локації в межах мапи

Використовуйте межі, коли клієнт уже має область перегляду мапи й потребує видимих публічних нотаток локацій для цієї ділянки.

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

Створити особисту локацію

Користувач, який увійшов, може створювати приватні або публічні локації. Публічні локації потребують автентифікованого облікового запису, а не анонімного локального сховища.

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

Спочатку надішліть локальні зміни, а потім отримайте серверне представлення для користувача й поточної публічної області.

Обидва маршрути синхронізації потребують bearer-автентифікації. Анонімні приватні локації можуть залишатися локально на пристрої, але server sync API їх не приймає.

Запит 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"
      }
    ]
  }'

Кожна нотатка має посилатися на категорію, уже видиму обліковому запису, що ввійшов, або на категорію з того самого надсилання. Під час спільного офлайн-створення зберігайте однаковий categoryId в обох записах.

Запит 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": []
}

Вирішіть конфлікти надсилання перед отриманням даних

Правильне надсилання може повернути HTTP 200 із колекцією conflicts. Це результат синхронізації окремої сутності, а не збій передавання. Кожен конфлікт містить entityId, entityType, зрозумілий людині reason, стабільний code і конкретний action.

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

Не надсилайте відхилену сутність повторно в прихованому циклі. stale_update вимагає отримати дані й вирішити, як їх об’єднати; team_membership_required вимагає оновити членство; online_team_management_required переносить зміну до онлайн-API команди; entity_ownership_conflict означає, що для цього облікового запису перевагу має копія сервера.

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

Секретні коди й приватні QR-навантаження є чутливими обліковими даними. Звичайні маршрути читання не повертають їх після створення.

Властивість secretCode у POST /api/trackables необов’язкова. Пропустіть її, якщо хочете, щоб Geotrackable згенерував унікальний системний секретний код, або надішліть дозволене користувацьке значення, якщо фізичний предмет уже має код, який потрібно зберегти.

Публічний перегляд і пошук

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

Пошук за секретним кодом або QR може створити активний сеанс на зразок браузерного. Збережіть сховище файлів cookie з відповіді для подальших викликів активного сеансу, захищайте цей файл як облікові дані та видаліть його, коли сеанс більше не потрібен.

Створити трекер

У рекомендованому запиті secretCode пропущено. Пропущене значення, null, порожній рядок або лише пробіли вказують серверу згенерувати код. Непорожнє значення запитує саме цей користувацький код після нормалізації та перевірки доступності.

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

Запит певного секретного коду

Надсилайте secretCode лише тоді, коли предмет уже має користувацький ідентифікатор. Якщо нормалізоване значення вільне, сервер приймає його й повертає HTTP 201. Згенерований публічний код є окремим і все одно призначається Geotrackable.

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

Користувацькі коди мають містити не більше 32 символів і бути вільними в усьому просторі публічних і секретних кодів трекерів. Коди, що починаються з GT, LN, TB, GK або GC, зарезервовано для системних ідентифікаторів або ідентифікаторів сайтів походження; їх не можна використовувати як користувацькі секретні коди Geotrackable.

Відповідь на створення — одноразове розкриття

Негайно збережіть повернуті secretCode і scanUrl. Подальші маршрути списку, відомостей, пошуку, коментарів і подорожі навмисно не розкривають ці облікові дані знову.

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

Активний секретний доступ

Після введення браузером дійсного секретного коду або сканованого навантаження маршрути активної сесії показують, що цей браузер зараз може відкрити повторно.

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

Коли запитаний код уже зайнятий

Конфлікт користувацького коду повертає HTTP 409 із code trackable_secret_code_taken. Цей запит не створив трекер. Не повторюйте запит із тим самим значенням: пропустіть secretCode, щоб отримати згенерований код, або виберіть інший дозволений користувацький код.

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

Дії для зарезервованого префікса

Зарезервовані або недійсні користувацькі значення повертають відповідь про проблему з action і посиланням на документацію. Безпечний запасний варіант — завжди вилучити secretCode із запиту на створення.

Записати зупинку подорожі

Пряма зупинка подорожі - це легке оновлення маршруту, коли повна нотатка локації не потрібна.

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

Коментувати трекер

Виклики від користувачів, які ввійшли, можуть додавати коментарі зі своєю ідентичністю Bearer. Анонімні виклики також можуть коментувати активований трекер, якщо клієнт має активний сеанс, підтверджений секретним кодом, або надсилає accessCode саме цього предмета.

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

Про трековані об’єкти

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

Створіть команду

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

Створити посилання-запрошення

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

Про команди

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

Зображення

Читання списків може бути анонімним, коли батьківська сторінка безпечна для публічного доступу. Маршрути завантаження й видалення потребують bearer-автентифікації.

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

Перевірка зовнішнього посилання

Перевірте зовнішнє посилання перед збереженням його в локації, команді, трекері або групі трекерів.

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

Звіти про вміст і помилки

Використовуйте звіти для питань щодо вмісту публічних сторінок і помилок клієнтської діагностики, які може знадобитися переглянути підтримці.

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

Видалити обліковий запис через API

Автентифіковані клієнти можуть остаточно видалити поточний обліковий запис і синхронізовані персональні дані через API. Спочатку прочитайте сторінку Видалити дані, якщо потрібні кроки експорту або правила збереження спільних трекерів.

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

Видалити дані

Помилки містять наступну корисну дію

Відповіді API про проблеми позначають помилку стабільним code, пояснюють обставини конкретного запиту в detail і надають action, який клієнт може показати або виконати. Надайте requestId, коли підтримці потрібно зіставити запит із діагностикою сервера.

Прочитайте дані помилки й довідку з відновлення

Увійти

Обробляйте машинний code, зберігайте requestId і виконуйте action замість розбору англійського тексту.

Помилки API використовують application/problem+json і об’єкт відомостей про проблему у стилі RFC. Зрозумілі людині тексти title і detail можуть із часом змінюватися або локалізуватися; стабільним значенням для програмної логіки є code.

Структура відповіді про проблему

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

Призначення кожного поля

Помилки перевірки містять назви полів

Помилки перевірки HTTP 400 додають об’єкт errors. Кожен ключ — це властивість JSON або частина запиту, яку треба виправити, а кожне значення є масивом, оскільки одне поле може порушувати кілька правил.

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

Неправильний JSON і тип вмісту

Недійсний JSON є помилкою перевірки запиту. Збережіть requestId, виправте синтаксис і знову надішліть тіло з Content-Type: application/json. Кінцеві точки завантаження файлів натомість вимагають multipart/form-data та частину files або file з назвою поля, визначеною для конкретного маршруту.

Навіть синтаксично правильне тіло запиту може порушувати бізнес-правило. Для проблем окремих полів використовуйте errors, для програмної логіки — code, для контексту — detail, а для наступного кроку — action. Не показуйте користувачам необроблені винятки сервера чи трасування стека.

Стан Що це означає Відновлення Поради щодо повторних спроб
400 Bad Request JSON, значення запиту, обмеження полів або бізнес-правило відхилили запит. Якщо є errors, прочитайте їх; інакше прочитайте code, detail і action. Виправте запит, перш ніж надсилати його знову. Не повторюйте запит без змін.
401 Unauthorized Захищений маршрут не отримав придатного токена Bearer. Помилки входу також повертають 401, не розкриваючи, чи існує вказана електронна адреса. Отримайте або оновіть токен, перевірте схему Bearer і хост, а потім один раз повторіть потрібний виклик. Повторюйте запит лише після зміни автентифікації; незмінені повторні спроби не допоможуть.
403 Forbidden Виклик належить відомому користувачу, але йому бракує потрібного права власності, ролі в команді, активного сеансу трекера або доступу, підтвердженого секретним кодом. Виконайте action: скористайтеся відповідним обліковим записом, запросіть доступ, активуйте предмет або надайте доступ саме до цього трекера. Не повторюйте запит, доки не зміниться стан доступу.
404 Not Found Маршрут або ресурс не знайдено. Приватні ресурси можуть навмисно виглядати відсутніми, якщо виклик не повинен дізнаватися про їх існування. Перевірте метод, маршрут, GUID, публічний код і поточний стан списку. Оновіть застарілі дані клієнта. Не запускайте цикл повторів. Повторюйте запит лише після виправлення ідентифікатора або оновлення стану.
405 Method Not Allowed Шлях існує, але використано неправильний HTTP-метод, наприклад маршрут лише для POST відкрито в браузері через GET. Використовуйте метод, указаний у цій документації, і перевіряйте заголовок відповіді Allow, коли його надано. Повторюйте запит лише з правильним методом і структурою запиту.
409 Conflict Запит правильний, але конфліктує з поточним станом сервера; зокрема, запитаний секретний код трекера вже зайнятий. Перезавантажте поточний стан або змініть конфліктне значення. Під час створення трекера пропустіть secretCode, щоб його було згенеровано, або виберіть інший користувацький код. Не повторюйте створення з тим самим значенням; повторюйте лише після зміни запиту або стану.
413 Content Too Large Тіло запиту або набір завантажених файлів перевищує дозволений розмір. Зменште кількість або розмір зображень, розділіть завантаження, якщо це дозволяє робочий процес, і надсилайте запити метаданих окремо від медіафайлів. Повторюйте запит лише з меншим корисним навантаженням.
415 Unsupported Media Type Кодування тіла не відповідає вимогам кінцевої точки. Для кінцевих точок JSON використовуйте application/json, а для завантаження зображень або GPX — multipart/form-data. Дозвольте HTTP-бібліотеці згенерувати межі multipart. Повторюйте запит лише після виправлення Content-Type і кодування тіла.
429 Too Many Requests Клієнт перевищив ліміт запитів або надсилає серії запитів надто швидко. Дотримуйтеся Retry-After, якщо його надано, зменште паралельність, кешуйте публічні читання й об’єднуйте однакові запити. Зачекайте відповідно до Retry-After; якщо його немає, використовуйте експоненційну затримку з випадковим розкидом та обмеженням кількості спроб.
500 Internal Server Error Geotrackable зареєстрував неочікувану помилку. Відповідь не розкриває трасування стека чи внутрішні секрети. Збережіть requestId і ticketNumber, якщо вони є, а потім зверніться до підтримки, указавши час, метод, шаблон маршруту, status і code. Повторюйте безпечне читання після затримки. Не повторюйте наосліп створення чи інший неідемпотентний запис, якщо стан його фіксації невідомий.

Повторюйте записи обдумано

GET-запити зазвичай безпечно повторювати. POST може створити дані, навіть якщо на клієнті сплив час очікування до отримання відповіді. Перш ніж знову створювати трекер, оновіть GET /api/trackables/mine і звірте результат, щоб через мережевий тайм-аут не створити дублікати фізичних предметів.

Для 429 або тимчасової 500 використовуйте обмежену експоненційну затримку з випадковим розкидом. Зупиніться, якщо action вказує, що треба змінити сам запит. Ніколи не перетворюйте 400, 403, 404, 405, 409, 413 або 415 на цикл автоматичних повторів.

Зберігайте корисність діагностики без витоку облікових даних

Ніколи не записуйте до журналів заголовки Authorization, токени Bearer чи оновлення, паролі, файли cookie, secretCode, accessCode, QR-дані, приватні URL-адреси сканування або необроблені вхідні шляхи /trackable/{code}. Приховуйте їх перед передаванням у телеметрію, звіти про збої, знімки екрана й додатки до звернень у підтримку.

До безпечних діагностичних полів належать requestId, ticketNumber, HTTP status, стабільний code, метод, шаблон маршруту, версія клієнта й позначка часу. Не копіюйте повне тіло запиту, якщо воно може містити текст про місце, точні координати, контактні дані або облікові дані трекера.

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

Опубліковані маршрути API Geotrackable

Ця таблиця створюється з активної таблиці кінцевих точок Geotrackable, щоб опублікована документація відповідала хосту.

Метод Маршрут Доступ
DELETE /api/account Потрібна авторизація
GET /api/auth/confirmEmail Анонім
POST /api/auth/forgotPassword Анонім
POST /api/auth/login Анонім
POST /api/auth/manage/2fa Потрібна авторизація
GET /api/auth/manage/info Потрібна авторизація
POST /api/auth/manage/info Потрібна авторизація
POST /api/auth/refresh Анонім
POST /api/auth/register Анонім
POST /api/auth/resendConfirmationEmail Анонім
POST /api/auth/resetPassword Анонім
GET /api/categories/mine Потрібна авторизація
POST /api/categories/mine Потрібна авторизація
GET /api/categories/mine/tree Потрібна авторизація
GET /api/categories/mine/tree/children Потрібна авторизація
GET /api/categories/mine/tree/sections Потрібна авторизація
DELETE /api/categories/mine/{categoryId} Потрібна авторизація
POST /api/categories/mine/{categoryId}/move Потрібна авторизація
POST /api/compliance/errors Анонім
GET /api/compliance/reports Потрібна авторизація
POST /api/compliance/reports Анонім
GET /api/compliance/reports/mine Потрібна авторизація
GET /api/compliance/reports/{contentReportId} Потрібна авторизація
PUT /api/compliance/reports/{contentReportId} Потрібна авторизація
POST /api/external-links/verify Потрібна авторизація
GET /api/images/notes/{noteId} Анонім
POST /api/images/notes/{noteId} Потрібна авторизація
POST /api/images/profiles Потрібна авторизація
GET /api/images/profiles/{userId} Анонім
GET /api/images/teams/{teamId} Анонім
POST /api/images/teams/{teamId} Потрібна авторизація
GET /api/images/trackable-groups/{trackableGroupId} Анонім
POST /api/images/trackable-groups/{trackableGroupId} Потрібна авторизація
GET /api/images/trackables/{trackableId} Анонім
POST /api/images/trackables/{trackableId} Потрібна авторизація
DELETE /api/images/{contentImageId} Потрібна авторизація
GET /api/images/{contentImageId}/{variant} Анонім
GET /api/locations/mine/gpx Потрібна авторизація
POST /api/locations/mine/gpx Потрібна авторизація
GET /api/notes/mine Потрібна авторизація
POST /api/notes/mine Потрібна авторизація
GET /api/notes/mine/gpx Потрібна авторизація
POST /api/notes/mine/gpx Потрібна авторизація
DELETE /api/notes/mine/{noteId} Потрібна авторизація
POST /api/notes/mine/{noteId}/move Потрібна авторизація
GET /api/notes/public/bounds Анонім
GET /api/notes/public/nearby Анонім
GET /api/public/notes/{noteId} Анонім
GET /api/public/notes/{noteId}/comments Анонім
POST /api/public/notes/{noteId}/comments Потрібна авторизація
GET /api/public/notes/{noteId}/trackables Анонім
POST /api/public/notes/{noteId}/trackables Потрібна авторизація
GET /api/public/profiles/{userName}/notes/nearby Анонім
GET /api/public/teams/{teamName}/notes/nearby Анонім
POST /api/sync/pull Потрібна авторизація
POST /api/sync/push Потрібна авторизація
GET /api/system/beta-android Анонім
GET /api/system/coordinate-locality Анонім
GET /api/system/ip-location Анонім
GET /api/system/status Анонім
GET /api/teams Потрібна авторизація
POST /api/teams Потрібна авторизація
POST /api/teams/invite-links/{teamSlug}/{inviteCode}/join Потрібна авторизація
DELETE /api/teams/{teamId} Потрібна авторизація
GET /api/teams/{teamId}/categories Потрібна авторизація
POST /api/teams/{teamId}/categories Потрібна авторизація
GET /api/teams/{teamId}/categories/tree Потрібна авторизація
GET /api/teams/{teamId}/categories/tree/children Потрібна авторизація
GET /api/teams/{teamId}/categories/tree/sections Потрібна авторизація
DELETE /api/teams/{teamId}/categories/{categoryId} Потрібна авторизація
POST /api/teams/{teamId}/categories/{categoryId}/move Потрібна авторизація
GET /api/teams/{teamId}/invite-links Потрібна авторизація
POST /api/teams/{teamId}/invite-links Потрібна авторизація
DELETE /api/teams/{teamId}/invite-links/{inviteLinkId} Потрібна авторизація
GET /api/teams/{teamId}/locations/gpx Потрібна авторизація
POST /api/teams/{teamId}/locations/gpx Потрібна авторизація
POST /api/teams/{teamId}/memberships/invite Потрібна авторизація
POST /api/teams/{teamId}/memberships/request Потрібна авторизація
DELETE /api/teams/{teamId}/memberships/{membershipId} Потрібна авторизація
POST /api/teams/{teamId}/memberships/{membershipId}/accept Потрібна авторизація
POST /api/teams/{teamId}/memberships/{membershipId}/approve Потрібна авторизація
POST /api/teams/{teamId}/memberships/{membershipId}/deny Потрібна авторизація
POST /api/teams/{teamId}/memberships/{membershipId}/promote-admin Потрібна авторизація
POST /api/teams/{teamId}/memberships/{membershipId}/refuse Потрібна авторизація
GET /api/teams/{teamId}/notes Потрібна авторизація
POST /api/teams/{teamId}/notes Потрібна авторизація
GET /api/teams/{teamId}/notes/gpx Потрібна авторизація
POST /api/teams/{teamId}/notes/gpx Потрібна авторизація
DELETE /api/teams/{teamId}/notes/{noteId} Потрібна авторизація
DELETE /api/teams/{teamId}/notes/{noteId}/delete Потрібна авторизація
POST /api/teams/{teamId}/notes/{noteId}/move Потрібна авторизація
PUT /api/teams/{teamId}/settings Потрібна авторизація
POST /api/trackables Потрібна авторизація
GET /api/trackables/active Анонім
GET /api/trackables/active-indicator Анонім
DELETE /api/trackables/active/{trackableId} Анонім
GET /api/trackables/active/{trackableId} Анонім
POST /api/trackables/active/{trackableId}/deactivate Анонім
POST /api/trackables/active/{trackableId}/message Анонім
POST /api/trackables/groups Потрібна авторизація
DELETE /api/trackables/groups/{trackableGroupId}/watch Потрібна авторизація
POST /api/trackables/groups/{trackableGroupId}/watch Потрібна авторизація
POST /api/trackables/legacy-lookup Анонім
GET /api/trackables/lookup Анонім
POST /api/trackables/lookup Анонім
GET /api/trackables/mine Потрібна авторизація
GET /api/trackables/public Анонім
GET /api/trackables/{trackableId} Анонім
POST /api/trackables/{trackableId}/activate Потрібна авторизація
GET /api/trackables/{trackableId}/comments Анонім
POST /api/trackables/{trackableId}/comments Анонім
DELETE /api/trackables/{trackableId}/comments/{commentId} Потрібна авторизація
PUT /api/trackables/{trackableId}/comments/{commentId} Потрібна авторизація
DELETE /api/trackables/{trackableId}/group Потрібна авторизація
POST /api/trackables/{trackableId}/group Потрібна авторизація
GET /api/trackables/{trackableId}/journey Анонім
POST /api/trackables/{trackableId}/journey-stops Анонім
DELETE /api/trackables/{trackableId}/journey-stops/{journeyStopId} Потрібна авторизація
DELETE /api/trackables/{trackableId}/watch Потрібна авторизація
POST /api/trackables/{trackableId}/watch Потрібна авторизація

DELETE /api/account

Автентифіковані клієнти можуть остаточно видалити поточний обліковий запис і синхронізовані персональні дані через API. Спочатку прочитайте сторінку Видалити дані, якщо потрібні кроки експорту або правила збереження спільних трекерів.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/auth/confirmEmail

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

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/auth/forgotPassword

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

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/auth/login

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

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/auth/manage/2fa

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

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/auth/manage/info

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

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/auth/manage/info

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

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/auth/refresh

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

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/auth/register

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

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/auth/resendConfirmationEmail

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

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/auth/resetPassword

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

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/categories/mine

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/categories/mine

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/categories/mine/tree

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/categories/mine/tree/children

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/categories/mine/tree/sections

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

DELETE /api/categories/mine/{categoryId}

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/compliance/errors

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/compliance/reports

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/compliance/reports

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/compliance/reports/mine

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/compliance/reports/{contentReportId}

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

PUT /api/compliance/reports/{contentReportId}

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/external-links/verify

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/images/notes/{noteId}

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/images/notes/{noteId}

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/images/profiles

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/images/profiles/{userId}

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/images/teams/{teamId}

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/images/teams/{teamId}

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/images/trackables/{trackableId}

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/images/trackables/{trackableId}

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

DELETE /api/images/{contentImageId}

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути медіа й підтримки дотримуються видимості сторінки або вмісту, до якого вони прив'язані.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/locations/mine/gpx

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/locations/mine/gpx

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/notes/mine

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/notes/mine

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/notes/mine/gpx

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/notes/mine/gpx

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

DELETE /api/notes/mine/{noteId}

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/notes/public/bounds

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/notes/public/nearby

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/public/notes/{noteId}

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Публічні читання мапи анонімні; запис особистих локацій і категорій потребує bearer-автентифікації.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/sync/pull

Спочатку надішліть локальні зміни, а потім отримайте серверне представлення для користувача й поточної публічної області.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/sync/push

Спочатку надішліть локальні зміни, а потім отримайте серверне представлення для користувача й поточної публічної області.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/system/beta-android

Цей маршрут анонімний і є найшвидшим способом підтвердити, що робочий хост API доступний.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/system/coordinate-locality

Цей маршрут анонімний і є найшвидшим способом підтвердити, що робочий хост API доступний.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/system/ip-location

Цей маршрут анонімний і є найшвидшим способом підтвердити, що робочий хост API доступний.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/system/status

Цей маршрут анонімний і є найшвидшим способом підтвердити, що робочий хост API доступний.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/teams

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/teams

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

DELETE /api/teams/{teamId}

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/teams/{teamId}/categories

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/teams/{teamId}/categories

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/teams/{teamId}/notes

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/teams/{teamId}/notes

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

PUT /api/teams/{teamId}/settings

API команд керують спільними локаціями, категоріями, посиланнями-запрошеннями, рішеннями щодо членства та областю трекерів, що належать команді.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/trackables

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/trackables/active

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/trackables/active-indicator

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

DELETE /api/trackables/active/{trackableId}

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/trackables/active/{trackableId}

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/trackables/groups

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/trackables/legacy-lookup

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/trackables/lookup

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/trackables/lookup

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/trackables/mine

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/trackables/public

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/trackables/{trackableId}

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/trackables/{trackableId}/activate

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/trackables/{trackableId}/comments

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/trackables/{trackableId}/comments

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

DELETE /api/trackables/{trackableId}/group

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/trackables/{trackableId}/group

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

GET /api/trackables/{trackableId}/journey

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

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

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

DELETE /api/trackables/{trackableId}/watch

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

POST /api/trackables/{trackableId}/watch

Маршрути трекерів охоплюють публічний перегляд, приватне володіння, запам'ятаний секретний доступ, коментарі та зупинки подорожі.

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

Успішна відповідь

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

Поширені помилки та відновлення

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

Підтримка