Saltar al contenido principal

Compartir-lotes-campos

Ver en Git


Compartir

APIs usuarios

Compartir

Objeto ResourceShareIntention

{
"email": "",
"resource_id": 123,
"role_id": 2-5,
"user_id": 123 //opcional
}

Cada objeto representa la intencion de compartir un recurso a un usuario.

POST /api/sharing

Se envía un objeto ResourceShareIntention por cada acción de compartir que se queira ejecutar. Se verificará que el usuario que hace la consulta tenga permisos sobre todos los recursos solicitados.

De los emails provistos, se busca el usuario destino que corresponda priorizando según el criterio:

  1. usuario dentro del mismo espacio del que comparte (o personal-personal)
  2. usuario interno de espacio NO AISLADO
  3. usuario personal
  4. usuario externo de espacio NO AISLADO (ordenados cronológicamente)
  5. usuario de espacio aislado (internos primero luego cronológicamente)

En caso que el email no exista y no se corresponda con el dominio de un espacio activo, se crea el usuario y se envía email de invitación.

En caso que no se pueda compartir a un email, se indican en la respuesta.

Body application/json:

// Para compartir lotes
{
"fields": [ResourceShareIntention, ...] // sin user_id
}
// Para compartir campos
{
"farms": [ResourceShareIntention, ...] // sin user_id
}
Permiso validado:
  • En caso de solicitar fields, se valida el permiso 28
  • En caso de solicitar farms, se valida el permiso 35
Respuesta:

El endpoint responde con el detalle de los usuarios a los que pudo compartir y a los que no

{
"info": "ok",
"data": {
"resource_type": "fields",
"shared": [ResourceShareIntention, ...], // con user_id
"not_shared": [ResourceShareIntention, ...], // sin user_id
}
}
  • info: "ok" o "partial"
  • data
    • resource_type: "fields" o "farms" segun lo solicitado
    • shared: [ResourceShareIntention, ...] con user_id indicando los que se pudieron compartir
    • not_shared: [ResourceShareIntention, ...] sin user_id indicando los que no se pudieron compartir
Errores posibles:

En caso de error, se responde con un body application/json que tiene una key code indicando el error:

  • code
    • "SHARING_ERROR": No se puede compartir a ninguno de los solicitados
    • -11: el usuario no tiene permisos para compartir sobre al menos 1 recurso

Dejar de Compartir

Objeto ResourceSharingCancellationIntention

{
"resource_id": 123,
"user_id": 123
}

Cada objeto representa la intencion de dejar de compartir un recurso a un usuario.

DELETE /api/sharing

Se envía un objeto ResourceSharingCancellationIntention por cada acción de dejar de compartir que se queira ejecutar.

Body application/json:

// Para dejar de compartir lotes
{
"fields": [ResourceSharingCancellationIntention, ...]
}
// Para dejar de compartir campos
{
"farms": [ResourceSharingCancellationIntention, ...]
}
Permiso validado:
  • En caso de solicitar fields, se valida el permiso 28
  • En caso de solicitar farms, se valida el permiso 35
Respuesta:

El endpoint responde con los recursos que se dejaron de compartir

{
"info": "ok",
"data": {
"resource_type": "fields",
"cancelled": [ResourceSharingCancellationIntention, ...]
}
}
  • info: "ok" o "partial"
  • data
    • resource_type: "fields" o "farms" segun lo solicitado
    • cancelled: [ResourceSharingCancellationIntention, ...] indicando los que se dejaron de compartir
Errores posibles:

En caso de error, se responde con un body application/json que tiene una key code indicando el error:

  • code
    • "SHARING_ERROR": No se puede dejar de compartir a ninguno de los solicitados
    • -11: el usuario no tiene permisos para dejar de compartir sobre al menos 1 recurso