Skip to main content

Usuarios y Autenticación

Peticiones GET

Obtener los colaboradores de un cliente

Request

  • Método: GET
  • Ruta: URL BASE + users/{client_id}/collaborator-list/
  • Content-Type: application/json
  • Header: Authorization: Token XXXXXXXXXXXXXXXXX

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
[
{
"username": "usuario1",
"user_type": "Global",
"client": 1,
"first_name": "Usuario",
"last_name": "Uno",
"email": "usuario1@test.com",
"is_staff": false
},
{
"username": "usuario2",
"user_type": "Local",
"client": 1,
"first_name": "Usuario",
"last_name": "Dos",
"email": "usuario2@test.com",
"is_staff": true
}
]
Respuesta Vacía
  • Status: 200
Respuesta
[]

Obtener las últimas 10 interacciones de un usuario

Request

  • Método: GET
  • Ruta: URL BASE + interactionslog/{username}/list/
  • Content-Type: application/json
  • Header: Authorization: Token XXXXXXXXXXXXXXXXX

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
[
{
"id": 2,
"interactionType": "Tipo de Interacción",
"date": "14/2/2022",
"data": "Información sobre la interacción",
"user": "usuario1"
},
{
"id": 1,
"interactionType": "Tipo de Interacción",
"date": "13/2/2022",
"data": "Información sobre la interacción",
"user": "usuario1"
}
]
Respuesta Vacía
  • Status: 200
Respuesta
[]

Obtener las últimas 10 interacciones de un usuario y sus insignias conseguidas

Request

  • Método: GET
  • Ruta: URL BASE + profile/{username}/list/
  • Content-Type: application/json
  • Header: Authorization: Token XXXXXXXXXXXXXXXXX

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
{
"interactions": [
{
"id": 2,
"interactionType": "Tipo de Interacción",
"date": "14/2/2022",
"data": "Información sobre la interacción",
"user": "usuario1"
},
{
"id": 1,
"interactionType": "Tipo de Interacción",
"date": "13/2/2022",
"data": "Información sobre la interacción",
"user": "usuario1"
}
],
"awards": [
{
"id": 1,
"badge_id": 1,
"badge": "Insignia 1",
"date": "1/2/2022",
"description": "Descripción de la primera insignia",
"image": "path/to/image",
"image2x": "path/to/image"
},
{
"id": "",
"badge_id": 2,
"badge": "Insignia 2",
"date": "",
"description": "Descripción de la segunda insignia",
"image": "path/to/image",
"image2x": "path/to/image"
}
]
}
Respuesta Vacía
  • Status: 200
Respuesta
{
"interactions": [],
"awards": []
}

Obtener la cantidad de interacciones de un usuario

En este endpoint las interacciones del usuario se obtienen a través del token.

Request

  • Método: GET
  • Ruta: URL BASE + profile/interactions/
  • Content-Type: application/json
  • Header: Authorization: Token XXXXXXXXXXXXXXXXX

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
{
"interactions_count": 0
}
Respuesta Fallida
  • Status: 401
Respuesta
{
"detail": "Token Inválido"
}

Peticiones PUT

Cambiar del estado inactivo a estado activo de un usuario

Request

  • Método: PUT
  • Ruta: URL BASE + users/{username}/first_login/
  • Content-Type: application/json
  • Header: Authorization: Token XXXXXXXXXXXXXXXXX

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
{
"message": "Usuario [username] activado exitosamente"
}
Respuesta Fallida
  • Status: 404
Respuesta
{
"error": "Usuario no encontrado"
}

Sumar interacciones a un colaborador

Request

  • Método: PUT
  • Ruta: URL BASE + users/{username}/interactions/
  • Content-Type: application/json
  • Header: Authorization: Token XXXXXXXXXXXXXXXXX
Payload
{
"interactions": 10
}

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
{
"message": "Interacciones sumadas al usuario [username] exitosamente"
}
Respuesta Fallida
  • Status: 400
Respuesta
{
"error": "Body incorrecto"
}
  • Status: 404
Respuesta
{
"error": "Usuario no encontrado"
}

Peticiones POST

Login de Usuario

Request

  • Método: POST
  • Ruta: URL BASE + login/
  • Content-Type: application/json
Payload
{
"email": "usuario1@email.com",
"password": "contraseña",
"token_firebase": "XXXXXXXXXX"
}

El atributo token_firebase es opcional, puede ir en el payload o no.

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
{
"data": {
"user": {
"username": "usuario1",
"user_type": "Tipo de Usuario",
"first_name": "Nombre",
"last_name": "Apellido",
"gender": "Género",
"department": 1,
"first_login": false,
"client": 1,
"office": {
"id": 1,
"name": "Oficina 1",
"country": {
"country": "País 1",
"code": "Código 1"
}
},
"awards": [
{
"id": 1,
"badge_id": 1,
"badge": "Insignia 1",
"description": "30 interacciones",
"image": "path/to/image1",
"image2x": "path/to/image1",
"date": "14/2/2022"
},
{
"id": "",
"badge_id": 2,
"badge": "Insignia 2",
"description": "60 interacciones",
"image": "path/to/image2",
"image2x": "path/to/image1",
"date": ""
}
],
"token_firebase": "XXXXXXXXXXXXXXXX"
},
"feelingstype": [
{
"id": 1,
"feel": "Feliz"
},
{
"id": 2,
"feel": "Entusiasmado"
},
{
"id": 3,
"feel": "Relajado"
},
{
"id": 4,
"feel": "Alegre"
},
{
"id": 5,
"feel": "Contento"
},
{
"id": 6,
"feel": "Orgulloso"
},
{
"id": 7,
"feel": "Sorprendido"
},
{
"id": 8,
"feel": "Apenado"
},
{
"id": 9,
"feel": "Cansado"
},
{
"id": 10,
"feel": "Molesto"
},
{
"id": 11,
"feel": "Confundido"
},
{
"id": 12,
"feel": "Triste"
}
],
"phrase_day": {
"phrase": "Frase del día",
"date": "14/2/2022",
"office": 1
}
},
"time_expire": "1296000",
"key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

El atributo key es usado para el campo Authorization del header de las peticiones. time_expire indica el tiempo restante para la expiración del token, que por defecto dura 1296000 segundos (15 días).

Respuesta Vacía
  • Status: 200
Respuesta
{
"data": {
"user": {
"username": "usuario1",
"user_type": "",
"first_name": "Nombre",
"last_name": "Apellido",
"gender": "",
"department": null,
"first_login": true,
"client": null,
"office": {
"id": 1,
"name": "Oficina 1",
"country": {
"country": "País 1",
"code": ""
}
},
"awards": [],
"token_firebase": null
},
"feelingstype": [
{
"id": 1,
"feel": "Feliz"
},
{
"id": 2,
"feel": "Entusiasmado"
},
{
"id": 3,
"feel": "Relajado"
},
{
"id": 4,
"feel": "Alegre"
},
{
"id": 5,
"feel": "Contento"
},
{
"id": 6,
"feel": "Orgulloso"
},
{
"id": 7,
"feel": "Sorprendido"
},
{
"id": 8,
"feel": "Apenado"
},
{
"id": 9,
"feel": "Cansado"
},
{
"id": 10,
"feel": "Molesto"
},
{
"id": 11,
"feel": "Confundido"
},
{
"id": 12,
"feel": "Triste"
}
],
"phrase_day": {
"phrase": "",
"date": null,
"office": null
}
},
"time_expire": "1296000",
"key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

En este caso se muestran todos los campos que pueden ser vacíos.

Respuesta Fallida
  • Status: 400
Respuesta
{
"non_field_errors": [
"No puede iniciar sesión con las credenciales proporcionadas."
]
}

Login de Usuario con API Key

Request

  • Método: POST
  • Ruta: URL BASE + apikey-login/
  • Content-Type: application/json
Payload
{
"email": "usuario1@email.com",
"api-key": "XXXXXXXXXX"
}

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
{
"time_expire": "1296000",
"key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

El atributo key es usado para el campo Authorization del header de las peticiones. time_expire indica el tiempo restante para la expiración del token, que por defecto dura 1296000 segundos (15 días).

Respuesta Fallida
  • Status: 400
Respuesta
{
"error": "Mensaje de error que puede ser: Cliente desactivado, Usuario inactivo o API Key faltante"
}
  • Status: 401
Respuesta
{
"error": "API Key no válido"
}
  • Status: 404
Respuesta
{
"error": "Usuario no encontrado"
}

Login de Usuario con MS Teams

Request

  • Método: POST
  • Ruta: URL BASE + msteams-login/
  • Content-Type: application/json
Payload
{
"email": "usuario1@email.com",
"ms-token": "XXXXXXXXXX"
}

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
{
"data": {
"user": {
"username": "usuario1",
"user_type": "Tipo de Usuario",
"first_name": "Nombre",
"last_name": "Apellido",
"gender": "Género",
"department": 1,
"first_login": false,
"client": 1,
"office": {
"id": 1,
"name": "Oficina 1",
"country": {
"country": "País 1",
"code": "Código 1"
}
},
"awards": [
{
"id": 1,
"badge_id": 1,
"badge": "Insignia 1",
"description": "30 interacciones",
"image": "path/to/image1",
"image2x": "path/to/image1",
"date": "14/2/2022"
},
{
"id": "",
"badge_id": 2,
"badge": "Insignia 2",
"description": "60 interacciones",
"image": "path/to/image2",
"image2x": "path/to/image1",
"date": ""
}
],
"token_firebase": "XXXXXXXXXXXXXXXX"
},
"feelingstype": [
{
"id": 1,
"feel": "Feliz"
},
{
"id": 2,
"feel": "Entusiasmado"
},
{
"id": 3,
"feel": "Relajado"
},
{
"id": 4,
"feel": "Alegre"
},
{
"id": 5,
"feel": "Contento"
},
{
"id": 6,
"feel": "Orgulloso"
},
{
"id": 7,
"feel": "Sorprendido"
},
{
"id": 8,
"feel": "Apenado"
},
{
"id": 9,
"feel": "Cansado"
},
{
"id": 10,
"feel": "Molesto"
},
{
"id": 11,
"feel": "Confundido"
},
{
"id": 12,
"feel": "Triste"
}
],
"phrase_day": {
"phrase": "Frase del día",
"date": "14/2/2022",
"office": 1
}
},
"time_expire": "1296000",
"key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

El atributo key es usado para el campo Authorization del header de las peticiones. time_expire indica el tiempo restante para la expiración del token, que por defecto dura 1296000 segundos (15 días).

Respuesta Fallida
  • Status: 400
Respuesta
{
"error": "Mensaje de error que puede ser: Cliente desactivado, Usuario inactivo o Token de Microsoft faltante"
}
  • Status: 401
Respuesta
{
"error": "Error de Autenticación Microsoft"
}
  • Status: 404
Respuesta
{
"error": "Usuario no encontrado"
}

Cambio de Contraseña

Request

  • Método: POST
  • Ruta: URL BASE + auth/password/change/
  • Content-Type: application/json
  • Header: Authorization: Token XXXXXXXXXXXXXXXXX
Payload
{
"new_password1": "contraseña1",
"new_password2": "contraseña1"
}

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
{
"message": "Contraseña fue cambiada correctamente."
}
Respuesta Fallida
  • Status: 400
Respuesta
{
"error": "Mensaje de error"
}

Cierre de Sesión

Request

  • Método: POST
  • Ruta: URL BASE + auth/logout/
  • Content-Type: application/json
  • Header: Authorization: Token XXXXXXXXXXXXXXXXX

Response

Respuesta Éxitosa
  • Status: 200
Respuesta
{
"detail": "Sesión cerrada con éxito."
}
Respuesta Fallida
  • Status: 401
Respuesta
{
"detail": "Token inválido."
}

Restaurar contraseña a través de Email

Request

  • Método: POST
  • Ruta: URL BASE + password-recover/
  • Content-Type: application/json
Payload
{
"email": "user@email.com"
}

Response

Respuesta Éxitosa

Si la respuesta es exitosa, se enviará un correo con un botón cuyo link de redirección es de la siguiente forma: {URL_BASE}/password-recover/?token={token}.

  • Status: 200
Respuesta
{
"message": "Correo enviado a user@email.com"
}
Respuesta Fallida

En caso de que el correo no exista en el sistema se recibe un 404.

  • Status: 404
Respuesta
{
"error": "Correo no existente"
}

Si el payload no tiene ningún correo se recibe un error 400.

  • Status: 400
Respuesta
{
"error": "Falta el correo en la petición"
}