Compartir-entre-espacios.-14
title: Compartir entre espacios
Share Between Espacios API
Descripción: Esta API permite gestionar y controlar los permisos de acceso y compartición entre diferentes espacios dentro de Auravant. Los administradores de espacio pueden compartir y gestionar los permisos de otros espacios asociados, así como ver los espacios asociados a su propio entorno. Además, se permite la validación de posibles destinatarios para la compartición de recursos.
Funcionalidades
- Post - Agregar Espacio Permitido
Permite agregar un espacio a la lista de espacios asociados, asignándole permisos específicos.
- Delete - Eliminar Espacio Permitido(soft delete)
Permite eliminar un espacio de la lista de espacios asociados y revocar los permisos.
- Get - Validar Posibles Receptores
Permite validar si un email pertenece a un usuario que es parte de un espacio asociado.
- Get - Espacios Asociados
Permite obtener los espacios que están asociados al espacio actual, ya sea porque comparten recursos con él o porque él comparte con ellos.
Estructura del Código
Endpoints
-
/api/share_btw_spaces/possible_receptor Método:
GETParámetro:emailRespuesta: Lista de espacios asociados al email proporcionado. -
/api/share_btw_spaces/workspaces_permitted Método:
POSTParámetros:space(string): El espacio que se quiere compartir, formado por el subdominio y el tenant. Por ejemplo: aura2.auravant.com (subdominio + tenant).share_permissions(array): Un array de permisos asociados al espacio.
Respuesta: Confirmación de que el espacio ha sido agregado correctamente a la lista de espacios permitidos.
-
/api/share_btw_spaces/workspaces_permitted Método:
DELETEParámetros:id_workspace(integer): El ID del espacio que se quiere eliminar de la lista de espacios permitidos.
Respuesta: Confirmación de que el espacio y los permisos asociados han sido eliminados correctamente.
-
/api/share_btw_spaces/associated_workspaces Método:
GETParámetro:shared_with_me(boolean): Si se especifica comotrue, se devolverán los espacios que han compartido recursos contigo; de lo contrario, se devolverán los espacios que tú compartes.
Respuesta: Lista de espacios asociados.
Validaciones
-
Validación de Espacio: Se valida que el espacio proporcionado sea un subdominio y tenant válido, y que exista en la base de datos.
-
Validación de Email: Se valida que el email proporcionado sea correcto y pertenezca a un usuario registrado en el sistema.
Base de Datos
El sistema interactúa con varias tablas en la base de datos para gestionar los permisos de los espacios y las asociaciones entre ellos:
- compartir_entre_espacios: Relaciona los espacios que se comparten entre sí.
- escritorios: Información sobre los espacios.
- usuarios: Información de los usuarios registrados.
- lotes_compartidos y estancias_compartidas: Gestión de permisos asociados a recursos compartidos en los espacios.
Esquemas de Datos
El esquema para las peticiones POST y las validaciones incluye:
{
"type": "object",
"properties": {
"space": {"type": "string"},
"share_permissions": {
"type": "array",
"items": {"type": "integer", "enum": [2, 3, 4, 5]},
"minItems": 1
}
},
"required": ["space", "share_permissions"],
"additionalProperties": False
}
Seguridad y Límite de Peticiones
Se ha implementado un sistema de limitación de peticiones mediante el uso de Rate Limiting, para proteger la API contra abusos:
1 por segundo10 por minuto100 por hora
Uso
Para interactuar con la API, realiza las siguientes peticiones HTTP usando herramientas como Postman o cURL.
Ejemplo de POST
Agregar un espacio permitido:
POST /api/share_btw_spaces/workspaces_permitted
Content-Type: application/json
{
"space": "subdominio.tenant.com",
"share_permissions": [2, 3]
}
Ejemplo de DELETE
Eliminar un espacio de la lista de espacios permitidos:
DELETE /api/share_btw_spaces/workspaces_permitted?id_workspace=123
Ejemplo de GET
Consultar posibles receptores para compartir:
GET /api/share_btw_spaces/possible_receptor?email=user@example.com
Modificación en la API de Sharing
Se ha realizado una modificación en la API de sharing para aceptar el parámetro receptor_workspace_id en el cuerpo de la solicitud. Cuando se incluye este parámetro, la API buscará específicamente al usuario dentro del espacio indicado. Si el parámetro no está presente, la API continuará funcionando como lo hacía hasta ahora, buscando posibles receptores de manera general.
Hecho con amor por Gerito