Geotrackable.com

Configuración de la aplicación Android

En la pestaña Sincronización de Android, guarde solo el origen del sitio como punto de conexión. No agregue /api.

https://Geotrackable.com

Inicie sesión enviando las credenciales de la cuenta local a /api/auth/login?useCookies=false&useSessionCookies=false y luego envíe el token bearer devuelto en el encabezado Authorization.

Respuestas esperadas

Las rutas protegidas devuelven HTTP 401 hasta que el cliente envía un token bearer. Abrir en el navegador una ruta que solo acepta POST devuelve HTTP 405 porque el navegador envía GET.

Cada ciclo de sincronización sin conexión debe enviar primero y recibir después.

Una ruta de API desconocida devuelve HTTP 404. Una ruta conocida llamada con el verbo incorrecto normalmente devuelve HTTP 405 y puede incluir un encabezado Allow. La ruta /api/account, que solo permite eliminación, no tiene intencionalmente un endpoint GET, por lo que GET /api/account devuelve un 404 con instrucciones; use /api/auth/manage/info para leer la cuenta.

Compruebe el host, inicie sesión y confirme el token antes de llamar rutas privadas.

La ruta de información de la cuenta actual viene de la API de identidad del framework. La ruta de cuenta separada solo sirve para eliminación permanente.

Comprobación de estado

Esta ruta es anónima y es la forma más rápida de confirmar que el host de API de producción responde.

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

Registro

Cree una cuenta local con correo electrónico, contraseña y nombre de usuario de perfil público antes de solicitar un token bearer. Los nombres de usuario solo pueden contener letras minúsculas, números y guiones bajos.

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!"
  }'

Inicio de sesión bearer

Use credenciales de cuenta local con cookies deshabilitadas cuando un script, una app o un cliente de API necesite un token 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..."
}

Cuenta actual y perfil

No existe un endpoint de perfil GET /api/account. Use el endpoint manage-info de identidad para los metadatos de la cuenta con sesión iniciada y las páginas de perfil del sitio web para la vista pública del perfil.

GET /api/account no es una ruta de lectura publicada.

GET /api/auth/manage/info devuelve detalles de identidad con sesión iniciada.

DELETE /api/account elimina permanentemente la cuenta actual.

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

Comience con estas rutas al comprobar una conexión de Android o de un cliente de API.

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

Geotrackable usa el lenguaje de Ubicaciones en el sitio web, mientras que los nombres de ruta de la API siguen usando por debajo los contratos compartidos de notas.

Ubicaciones públicas dentro de los límites del mapa

Use límites cuando su cliente ya tiene una vista de mapa y necesita notas de ubicación públicas visibles para esa área.

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"
  }
]

Crear una ubicación personal

Un solicitante con sesión iniciada puede crear ubicaciones privadas o públicas. Las ubicaciones públicas requieren una cuenta autenticada, no almacenamiento local anónimo.

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
  }'

Envíe primero los cambios locales y luego reciba la vista del servidor para el usuario y el área pública actual.

Ambas rutas de sincronización requieren autenticación bearer. Las ubicaciones privadas anónimas pueden permanecer locales en el dispositivo, pero la API de sincronización del servidor no las acepta.

Solicitud de envío

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"
      }
    ]
  }'

Cada nota debe hacer referencia a una categoría que ya sea visible para la cuenta con sesión iniciada o que esté incluida en el mismo envío. Mantenga el mismo categoryId en ambos registros cuando los cree juntos sin conexión.

Solicitud de recepción

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": []
}

Resuelva los conflictos de envío antes de recibir datos

Un envío válido puede devolver HTTP 200 con una colección conflicts. Este es un resultado de sincronización por entidad, no un fallo de transporte. Cada conflicto incluye entityId, entityType, un motivo legible, un code estable y una action concreta.

{
  "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."
}

No repita silenciosamente una entidad rechazada. stale_update requiere recibir los datos y decidir cómo combinarlos; team_membership_required requiere actualizar la membresía; online_team_management_required traslada el cambio a las API de administración de equipos en línea; entity_ownership_conflict significa que la copia del servidor prevalece para esta cuenta.

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

Los códigos secretos y las cargas QR privadas son credenciales sensibles. Las rutas normales de lectura no los devuelven después de la creación.

La propiedad secretCode de POST /api/trackables es opcional. Omítala cuando quiera que Geotrackable genere un código secreto único del sistema o envíe un valor personalizado permitido cuando un elemento físico ya tenga un código que necesite conservar.

Exploración y búsqueda pública

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"
  }'

La búsqueda por secreto y QR puede crear una sesión activa al estilo del navegador. Conserve el almacén de cookies de la respuesta para llamadas posteriores de la sesión activa, proteja ese archivo como una credencial y elimínelo cuando ya no necesite la sesión.

Crear un rastreable

La solicitud recomendada omite secretCode. Un valor omitido, null, vacío o compuesto solo por espacios pide al servidor que genere el código. Un valor no vacío solicita ese código personalizado exacto después de las comprobaciones de normalización y disponibilidad.

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
  }'

Solicitar un código secreto específico

Envíe secretCode solo cuando el elemento ya tenga un identificador personalizado. Si el valor normalizado está disponible, el servidor lo respeta y devuelve HTTP 201. El código público generado es independiente y Geotrackable sigue asignándolo.

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"
  }'

Los códigos personalizados no pueden superar los 32 caracteres y deben estar disponibles en todo el espacio de nombres de códigos públicos y secretos de rastreables. Los códigos que comienzan por GT, LN, TB, GK o GC están reservados para identificadores emitidos por el sistema o por el sitio de origen y no se pueden adoptar como códigos secretos personalizados de Geotrackable.

La respuesta de creación muestra los secretos una sola vez

Guarde de inmediato los valores secretCode y scanUrl devueltos. Las rutas posteriores de lista, detalle, búsqueda, comentario y recorrido no vuelven a revelar intencionalmente esas credenciales.

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>"
    }
  ]
}

Acceso secreto activo

Después de que un navegador introduce un código secreto válido o una carga de escaneo, las rutas de sesión activa muestran lo que ese navegador puede volver a abrir actualmente.

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"
  }'

Cuando el código solicitado ya está en uso

Una colisión de código personalizado devuelve HTTP 409 con el código trackable_secret_code_taken. La solicitud no ha creado ningún rastreable. No siga reintentando el mismo valor: omita secretCode para recibir un código generado o elija otro código personalizado permitido.

{
  "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"
}

Recuperación ante prefijos reservados

Los valores personalizados reservados o no válidos devuelven una respuesta de problema con una action y un enlace a la documentación. La alternativa segura siempre es quitar secretCode de la solicitud de creación.

Registrar una parada del recorrido

Una parada directa del recorrido es la actualización ligera de ruta cuando no se necesita una nota de ubicación completa.

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"
  }'

Comentar en un rastreable

Los solicitantes con sesión iniciada pueden comentar con su identidad bearer. Los solicitantes anónimos también pueden comentar en un rastreable activado cuando este cliente tiene la sesión activa respaldada por el secreto o envía el accessCode de ese elemento exacto.

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": ""
  }'

Sobre rastreables

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

crear un equipo

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"
  }'

Crear un enlace de invitación

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>"

Sobre equipos

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

Imagenes

Las lecturas de listas pueden ser anónimas cuando la página principal es segura para el público. Las rutas de carga y eliminación requieren autenticación 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"

Verificación de enlace externo

Verifique un enlace externo antes de guardarlo en una ubicación, equipo, rastreable o grupo de rastreables.

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"
  }'

Reportes de contenido y errores

Use reportes para inquietudes sobre contenido de páginas públicas y errores para diagnósticos del cliente que soporte podría necesitar revisar.

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."
  }'

Eliminar cuenta desde la API

Los clientes autenticados pueden eliminar permanentemente la cuenta actual y los datos personales sincronizados mediante la API. Lea primero la página Eliminar datos cuando necesite pasos de exportación o reglas de retención de rastreables compartidos.

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

Eliminar datos

Los errores incluyen la siguiente acción útil

Las respuestas de problema de la API identifican el error con un code estable, explican el detail específico de la solicitud y proporcionan una action que los clientes pueden mostrar o seguir. Use requestId cuando soporte necesite correlacionar la solicitud con los diagnósticos del servidor.

Lea la carga de error y la referencia de recuperación

Iniciar sesión

Procese el código de máquina, conserve el identificador de solicitud y siga la acción en lugar de analizar texto en inglés.

Los errores de la API usan application/problem+json y un objeto de detalles del problema con formato RFC. Los textos legibles title y detail pueden mejorar con el tiempo o localizarse; code es el valor estable para la lógica del programa.

Formato de la respuesta de problema

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"
}

Para qué sirve cada campo

Los errores de validación incluyen nombres de campo

Los errores de validación HTTP 400 agregan un objeto errors. Cada clave es la propiedad JSON o el área de la solicitud que necesita corrección, y cada valor es una matriz porque un campo puede infringir más de una regla.

{
  "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 mal formado y tipo de contenido

Un JSON no válido es un error de validación de la solicitud. Conserve requestId, corrija la sintaxis y vuelva a enviar el cuerpo con Content-Type: application/json. Los endpoints de carga de archivos requieren en cambio multipart/form-data y una parte files o file con el nombre de campo específico de la ruta.

Un cuerpo sintácticamente válido aún puede incumplir una regla de negocio. Use errors para problemas por campo, code para la lógica del programa, detail para el contexto y action para el siguiente paso. No muestre a los usuarios una excepción sin procesar ni un seguimiento de pila del servidor.

Estado Qué significa Recuperación Guía de reintentos
400 Bad Request El JSON, los valores de consulta, las restricciones de los campos o una regla de negocio rechazaron la solicitud. Lea errors cuando esté presente; de lo contrario, lea code, detail y action. Corrija la solicitud antes de volver a enviarla. No reintente la solicitud sin cambios.
401 Unauthorized Una ruta protegida no recibió un token bearer utilizable. Los errores de inicio de sesión también usan 401 sin revelar si existe una dirección de correo electrónico. Obtenga o actualice un token, confirme el esquema Bearer y el host y, después, repita una vez la llamada prevista. Reintente solo después de cambiar la autenticación; repetir intentos sin cambios no servirá.
403 Forbidden Se conoce al solicitante, pero no tiene la propiedad, el rol de equipo, la sesión activa de rastreable o el acceso respaldado por secreto requeridos. Siga action: use una cuenta apta, solicite acceso, active el elemento o proporcione acceso para ese rastreable exacto. No reintente hasta que cambie el estado de acceso.
404 Not Found No se encontró la ruta o el recurso. Los recursos privados pueden parecer ausentes intencionalmente cuando el solicitante no debe saber que existen. Confirme el método, la ruta, el GUID, el código público y el estado actual de la lista. Actualice los datos obsoletos del cliente. No cree un bucle. Reintente solo después de corregir el identificador o actualizar el estado.
405 Method Not Allowed La ruta existe, pero el verbo HTTP es incorrecto, como al abrir con un GET del navegador una ruta que solo admite POST. Use el método que muestra esta documentación e inspeccione el encabezado Allow de la respuesta cuando se proporcione. Reintente solo con el método y el formato de solicitud correctos.
409 Conflict La solicitud es válida, pero entra en conflicto con el estado actual del servidor, incluido un código secreto de rastreable solicitado que ya está en uso. Vuelva a cargar el estado actual o cambie el valor en conflicto. Para crear un rastreable, omita secretCode para generarlo o elija otro código personalizado. No reintente el mismo valor de creación; reintente solo después de cambiar la solicitud o el estado.
413 Content Too Large El cuerpo de la solicitud o el conjunto de archivos cargados supera el tamaño aceptado. Reduzca la cantidad o el tamaño de las imágenes, divida la carga cuando el flujo de trabajo lo permita y mantenga separadas las solicitudes de metadatos y las de contenido multimedia. Reintente solo con una carga más pequeña.
415 Unsupported Media Type La codificación del cuerpo no coincide con el endpoint. Use application/json para los endpoints JSON y multipart/form-data para los endpoints de carga de imágenes o GPX. Permita que la biblioteca HTTP genere los límites multipart. Reintente solo después de corregir Content-Type y la codificación del cuerpo.
429 Too Many Requests El cliente superó un límite de solicitudes o está enviando ráfagas con demasiada rapidez. Respete Retry-After cuando esté presente, reduzca la concurrencia, almacene en caché las lecturas públicas y combine las solicitudes duplicadas. Espere el tiempo indicado por Retry-After; si no está presente, use espera exponencial con variación aleatoria y un límite de reintentos.
500 Internal Server Error Geotrackable registró un error inesperado. La respuesta no expone seguimientos de pila ni secretos internos. Conserve requestId y ticketNumber cuando estén presentes y, después, contacte con soporte indicando la hora, el método, la plantilla de ruta, el estado y el código. Reintente las lecturas seguras después de una espera. No repita a ciegas una creación u otra escritura no idempotente cuando se desconozca si se confirmó.

Reintente las escrituras de forma deliberada

Normalmente es seguro reintentar las solicitudes GET. Una solicitud POST puede crear datos incluso si el cliente agota el tiempo de espera antes de recibir la respuesta. Antes de repetir la creación de un rastreable, actualice GET /api/trackables/mine y concilie el resultado para que un tiempo de espera de red no cree elementos físicos duplicados.

Para un 429 o un 500 transitorio, use espera exponencial limitada con variación aleatoria. Deténgase cuando action indique que debe cambiar la propia solicitud. Nunca convierta un 400, 403, 404, 405, 409, 413 o 415 en un bucle de reintentos automáticos.

Mantenga los diagnósticos útiles sin filtrar credenciales

Nunca registre encabezados Authorization, tokens bearer o de actualización, contraseñas, cookies, secretCode, accessCode, cargas QR, URL privadas de escaneo ni rutas de entrada /trackable/{code} sin redactar. Ocúltelos antes de incluirlos en telemetría, informes de fallos, capturas de pantalla y archivos adjuntos para soporte.

Los campos de diagnóstico seguros incluyen requestId, ticketNumber, el estado HTTP, el code estable, el método, la plantilla de ruta, la versión del cliente y una marca de tiempo. No copie el cuerpo completo de la solicitud cuando pueda contener texto de ubicación, coordenadas exactas, datos de contacto o una credencial de rastreable.

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

Rutas publicadas de la API de Geotrackable

Esta tabla se genera a partir de los puntos de conexión activos de Geotrackable para que la documentación publicada permanezca alineada con el host.

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

DELETE /api/account

Los clientes autenticados pueden eliminar permanentemente la cuenta actual y los datos personales sincronizados mediante la API. Lea primero la página Eliminar datos cuando necesite pasos de exportación o reglas de retención de rastreables compartidos.

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

Respuesta correcta

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.

Errores comunes y recuperación

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"

Respuesta correcta

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.

Errores comunes y recuperación

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" }'

Respuesta correcta

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.

Errores comunes y recuperación

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!" }'

Respuesta correcta

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

Errores comunes y recuperación

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 }'

Respuesta correcta

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.

Errores comunes y recuperación

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>"

Respuesta correcta

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.

Errores comunes y recuperación

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!" }'

Respuesta correcta

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.

Errores comunes y recuperación

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>" }'

Respuesta correcta

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.

Errores comunes y recuperación

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!" }'

Respuesta correcta

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

Errores comunes y recuperación

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" }'

Respuesta correcta

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.

Errores comunes y recuperación

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!" }'

Respuesta correcta

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.

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación 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 }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación 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 }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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." }'

Respuesta correcta

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.

Errores comunes y recuperación

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

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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." }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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" }'

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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.

Errores comunes y recuperación

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

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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.

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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.

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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.

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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.

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de medios y soporte siguen la visibilidad de la página o del contenido al que están asociadas.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación 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" }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación 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": "" }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación 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": [] }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las lecturas públicas del mapa son anónimas; las escrituras de ubicaciones y categorías personales requieren autenticación bearer.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Envíe primero los cambios locales y luego reciba la vista del servidor para el usuario y el área pública actual.

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 } }'

Respuesta correcta

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

Errores comunes y recuperación

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

Envíe primero los cambios locales y luego reciba la vista del servidor para el usuario y el área pública actual.

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": [] }'

Respuesta correcta

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

Errores comunes y recuperación

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

Esta ruta es anónima y es la forma más rápida de confirmar que el host de API de producción responde.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Esta ruta es anónima y es la forma más rápida de confirmar que el host de API de producción responde.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Esta ruta es anónima y es la forma más rápida de confirmar que el host de API de producción responde.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Esta ruta es anónima y es la forma más rápida de confirmar que el host de API de producción responde.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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" }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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}

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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 }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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 }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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 }'

Respuesta correcta

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

Errores comunes y recuperación

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}

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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>"

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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}

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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" }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

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>"

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las API de equipos administran ubicaciones compartidas, categorías, enlaces de invitación, decisiones de membresía y el alcance de rastreables propiedad del equipo.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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 }'

Respuesta correcta

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.

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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" }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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 }'

Respuesta correcta

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.

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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.

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

# 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 '{}'

Respuesta correcta

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.

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

# 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 '{}'

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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.

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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.

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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 }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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": "" }'

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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." }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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" }'

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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": "" }'

Respuesta correcta

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

Errores comunes y recuperación

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}

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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>"

Respuesta correcta

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

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

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

Respuesta correcta

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.

Errores comunes y recuperación

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

Las rutas de rastreables cubren exploración pública, propiedad privada, acceso secreto recordado, comentarios y paradas del recorrido.

# 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 '{}'

Respuesta correcta

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.

Errores comunes y recuperación

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.

Soporte