Endpoints del servidor - TeamSecurityFirst/GeoGuardianWiki GitHub Wiki

Este documento lista los diferentes endpoints que forman la api rest del servidor de la app Geoguardian.

Para cada uno se comenta la URL, el método HTTP necesario y los campos para cada llamada.

Estado del API

Estado

  • Descripción: Devuelve un 200 si el servidor es accesible
  • URL: /api/status/
  • Autenticación: No
  • Método : GET

Usuarios

Login
  • Logea a un usuario y recupera su Token
  • URL: /api/user/login
  • Autenticación: No
  • Método : POST
  • Params:
    • username
    • password
Logout
  • Hace logout del usuario indicado (elimina su token)
  • URL: /api/user/logout
  • Autenticación: Si
  • Método : POST
  • Params:
    • username
Register
  • Registra a un usuario comprobando que existe en Firebase
  • URL: /api/user/register
  • Autenticación: No
  • Método : POST
  • Params:
    • username
    • firebase_id
    • email
Route
  • Iniciar una ruta
  • URL: /api/user/route/<geo_id>
  • Autenticación: Yes
  • Método : POST
  • Params:
    • profile

Followers

Obtener followers
  • Recupera todos ids de los seguidores del usuario indicado
  • URL: /api/user/followers
  • Autenticación: Si
  • Método : GET
Añadir o modificar follower
  • Añade o modifica un seguidor al usuario indicado. Por defecto, lo añade como activo.
  • URL: /api/user/followers
  • Autenticación: Si
  • Método : POST
  • Params:
    • token
    • active (opcional)
Eliminar follower
  • Elimina el seguidor del usuario indicado.
  • URL: /api/user/followers/<follower_id>
  • Autenticación: Si
  • Método : DELETE

Followings

Obtener followings
  • Recupera todos ids de los seguidos del usuario indicado
  • URL: /api/user/following
  • Autenticación: Si
  • Método : GET
Añadir o modificar following
  • Añade o modifica un seguido al usuario indicado. Por defecto, lo añade como activo.
  • URL: /api/user/following
  • Autenticación: Si
  • Método : POST
  • Params:
    • token
    • active (opcional)
Modifiación following (mediante ID)
  • Modifica el estado "activo/inactivo" de un following, pasándole su identificador.
  • URL: /api/user/following/<following_id>
  • Autenticación: Si
  • Método : POST
  • Params:
    • active
Eliminar following
  • Elimina el seguido del usuario indicado.
  • URL: /api/user/following/<following_id>
  • Autenticación: Si
  • Método : DELETE

Geofences

Obtener todas las geofences del usuario
  • Devuelve los datos de las geofences del usuario que las solicita
  • URL: /api/user/geofences/
  • Autenticación: Si
  • Método : GET
Crear una geofence
  • Crea una geofence con los datos especificados y devuelve los datos con id correspondiente
  • URL: /api/user/geofence/
  • Autenticación: Si
  • Método : POST
  • Params:
    • name
    • latitude
    • longitude
    • radius
    • geotype
Actualizer una geofence
  • Actualiza una geofence existente
  • URL: /api/user/geofence/
  • Autenticación: Si
  • Método : PUT
  • Params:
    • geoid
    • name
    • latitude
    • longitude
    • radius
    • geotype
Eliminar una geofence
  • Actualiza una geofence existente
  • URL: /api/user/geofence/
  • Autenticación: Si
  • Método : DELETE
  • Params:
    • geoid

Position

Obtener última posicion
  • Recupera la última posicion (latitud/longitud) del usuario
  • URL: /api/user/position
  • Autenticación: Si
  • Método : GET
Actualizar posicion
  • Actualiza la útlima posición del usuario indicado.
  • URL: /api/user/position
  • Autenticación: Si
  • Método : POST
  • Params:
    • altitude
    • longitude

Obtener posición de los followings

  • Recupera la última posición de los seguidos del usuario.
  • URL: /api/user/following/position
  • Autenticación: Si
  • Método : GET

Rutas

Activar ruta
  • Iniciar una ruta
  • URL: /api/user/route/<geo_id>
  • Autenticación: Yes
  • Método : POST
  • Params:
    • profile
Desactivar ruta
  • Desactivar una ruta
  • URL: /api/user/route/<geo_id>
  • Autenticación: Yes
  • Método : DELETE

Sincronización Telegram

Generación del Telegram Token
  • Descripción: Para iniciar la sincronización con Telegram es necesario generar un Token que se asociará a un usuario. Posteriormente, el cliente debe enviar un /start con este Token al Bot de Telegram para que lo reconozca.
  • URL: /api/telegram/token/
  • Autenticación: Sí
  • Método : POST
  • Params: Ninguno
Eliminar el Telegram Token
  • Descripción: Se elimina el telegram token del usuario indicado.
  • URL: /api/telegram/token/
  • Autenticación: Sí
  • Método : DELETE
Gancho del Telegram Bot
  • Descripción: URL únicamente destinada a escuchar las peticiones del Telegram bot que informarán cuando se haya recibido un /start de un usuario, para pasar a su sincronización.
  • URL: /api/telegram/sync/
  • Autenticación: No
  • Método : POST
  • Body: Es necesario pasar un JSON con la información necesaria, el formato es el siguiente (el campo de relevancia es el CHAT_ID):
{
  "message": {
    "message_id": 85,
    "from": {
        "id": <CHAT_ID>, 
        "is_bot": "False", 
        "first_name": <NAME>, 
        "username": <USERNAME>, 
        "language_code": "es"
    },
    "chat": {
        "id": <CHAT_ID>,
        "first_name": <NAME>, 
        "username": <USERNAME>, 
        "type": "private"
    },
    "date": 1587904182,
    "text": "/start <TOKEN>",
    "entities":
        [{
            "offset": 0,
            "length": 6,
            "type": "bot_command"
        }]
  }
}

Sincronización SMS

Generación del SMS Token
  • Descripción: Para iniciar la sincronización con SMS es necesario generar un Token que se asociará a un usuario/número. Se debe enviar el número de teléfono a sincronizar.
  • URL: /api/sms/token/
  • Autenticación: Sí
  • Método : POST
  • Params:
    • number (número teléfono, con prefijo)
Activación del número de teléfono
  • Descripción: Para activar finalmente un número de télefono, el cliente enviará al servidor el token que ha recibido previamente por SMS.
  • URL: /api/sms/sync/
  • Autenticación: Sí
  • Método : POST
  • Params:
    • token

Geobreaks

Informar de geobreak
  • Descripción: Se indica si un usuario ha entrado/salido de alguna de sus geofences y se notifica el movimiento a sus seguidores si corresponde.
  • URL: /api/user/geobreak/
  • Autenticación: Sí
  • Metodo: POST
  • Body: Incluir en el cuerpo de la petición un JSON con siguiente formato:
    • Si action = False: Salida de geofence.
    • Si action = True: Entrada en geofence.
[
    {
        "geofence_id": 3,
        "action": "False"
    },
    {
        "geofence_id": 4,
        "action": "True"
    }
]

Pruebas

Ejemplo con autenticación

  • Descripción: Devuelve un mensaje si la petición ha sido correcta
  • URL: /api/example-auth
  • Autenticación: Si
  • Método : GET
⚠️ **GitHub.com Fallback** ⚠️