API de Geotrackable
La API de Geotrackable está disponible en este mismo dominio de producción para la aplicación Android y otros clientes autorizados.
Con estos ejemplos puede verificar el host en vivo, obtener un token bearer, leer datos públicos del mapa, sincronizar ubicaciones con sesión iniciada y trabajar con rastreables sin adivinar nombres de rutas desde la interfaz del sitio web.
Abrir estado en vivo Cargas de error y recuperación Solicitud de un código secreto de rastreable Por qué GET /api/account devolvió 404
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
GTestá reservado para códigos emitidos por el sistema de Geotrackable. Omita secretCode y permita que este host emita uno.LNpertenece a rastreables de LocationNotes; resuelva el elemento en su sitio de origen en lugar de adoptar aquí su código.TBpertenece a rastreables de Geocaching.com; use el flujo de seguimiento del sitio de origen.GKpertenece a rastreables de GeoKrety.org; use el flujo de seguimiento del sitio de origen.GCes un identificador de geocaché de Geocaching.com, no un código secreto de Geotrackable.
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": ""
}'
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>"
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
}
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.
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
type- Un URI estable para este contrato de detalles del problema. Use code, no type ni texto para personas, para distinguir el error exacto en la lógica del cliente.
title- Un resumen breve y legible adecuado como encabezado. No base la lógica del cliente en este texto.
status- El estado HTTP repetido en el cuerpo para que los diagnósticos capturados sigan siendo comprensibles.
detail- Una explicación específica de la solicitud que indica qué falló sin repetir credenciales ni tokens privados.
instance- La ruta de solicitud asociada con esta incidencia. Las rutas de entrada del sitio web que contienen secretos pueden aparecer ocultas.
code- El identificador estable legible por máquinas que los clientes deben usar para decidir.
action- El paso concreto para recuperarse: corregir un campo, autenticarse, esperar, reducir la carga o elegir otro valor.
requestId- Un valor de correlación que se puede incluir de forma segura en una solicitud de soporte. Consérvelo junto con el estado, el código, el método y la plantilla de ruta.
documentation- Una ubicación de ayuda para la familia del error o el código exacto.
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.