# Administración de espacios de trabajo
## Generalidades
Los espacios de trabajo son una forma de organizar y coordinar equipos de trabajo y sus derechos sobre diversos activos o servicios.
La propietariedad de un espacio de trabajo corresponde a un usuario (perfil) o a una organización (NIC).
En el caso de las organizaciones, pueden crear y administrar espacios de trabajo únicamente los usuarios vinculados al panel de control del NIC.
En todos los casos, cada espacio de trabajo puede configurar un equipo (grupo de usuarios) con permisos de administración.
## End point
https://api.induxsoft.net/workspaces/
Todos los servicios de administración se utilizan a través del mismo end-point
## Crear objetos
### Espacio de trabajo
Solicitud
```
Method: POST
Content-Type: application/json;charset=utf-8
{
"ids":"Identificador de sesión válida (token)",
"operation":"create",
"owner":"NIC de la organización, si se omite se asume al usuario como propietario (omitible)",
"data":
{
"name":"Nombre del nuevo espacio de trabajo",
...Campos adicionales que se desee incluir ...
}
}
```
Respuesta exitosa
```
Content-Type: application/json;charset=utf-8
{
"success":true,
"data":
{
"id":"Identificador del nuevo espacio de trabajo",
... Todos los datos disponibles del espacio de trabajo ...
}
}
```
### Equipo
Solicitud
```
Method: POST
Content-Type: application/json;charset=utf-8
{
"ids":"Identificador de sesión válida (token)",
"operation":"create",
"owner":"NIC de la organización, si se omite se asume al usuario como propietario (omitible)",
"workspace":"id del espacio de trabajo al que pertencerá el equipo",
"data":
{
"name":"Nombre del nuevo equipo",
...Campos adicionales que se desee incluir ...
}
}
```
Respuesta exitosa
```
Content-Type: application/json;charset=utf-8
{
"success":true,
"data":
{
"id":"Identificador del nuevo equipo",
... Todos los datos disponibles del equipo ...
}
}
```
### Rol
Solicitud
```
Method: POST
Content-Type: application/json;charset=utf-8
{
"ids":"Identificador de sesión válida (token)",
"operation":"create",
"owner":"NIC de la organización, si se omite se asume al usuario como propietario (omitible)",
"workspace":"id del espacio de trabajo al que pertencerá el rol",
"team":"id del equipo al que pertenecerá el rol",
"data":
{
"name":"Nombre del nuevo rol",
...Campos adicionales que se desee incluir ...
}
}
```
Respuesta exitosa
```
Content-Type: application/json;charset=utf-8
{
"success":true,
"data":
{
"id":"Identificador del nuevo equipo",
... Todos los datos disponibles del rol ...
}
}
```
### Observaciones:
* En las solicitudes que requieren los campos 'workspace', 'team' o 'role', puede omitirlos y en su lugar utilizar únicamente un campo denominado 'location' en la forma de una ruta: 'workspace/team/role'
## Obtener (leer) objetos
Solicitud
```
Method: POST
Content-Type: application/json;charset=utf-8
{
"ids":"Identificador de sesión válida (token)",
"operation":"read",
"owner":"NIC de la organización, si se omite se asume al usuario como propietario (omitible)",
"id":"Id del espacio de trabajo, equipo o rol cuyos datos requiere obtener"
}
```
Respuesta exitosa
```
Content-Type: application/json;charset=utf-8
{
"success":true,
"data":
{
"id":"Identificador del nuevo espacio de trabajo",
... Todos los datos disponibles del objeto solicitado ...
}
}
```
## Actualizar datos de objetos
Solicitud
```
Method: POST
Content-Type: application/json;charset=utf-8
{
"ids":"Identificador de sesión válida (token)",
"operation":"update",
"owner":"NIC de la organización, si se omite se asume al usuario como propietario (omitible)",
"id":"Id del espacio de trabajo, equipo o rol cuyos datos requiere actualizar",
"data":{...datos a actualizar...}
}
```
Respuesta exitosa
```
Content-Type: application/json;charset=utf-8
{
"success":true,
"data":
{
"id":"Identificador del nuevo espacio de trabajo",
... Todos los datos disponibles del objeto solicitado ...
}
}
```
## Eliminar objetos
Solicitud
```
Method: POST
Content-Type: application/json;charset=utf-8
{
"ids":"Identificador de sesión válida (token)",
"operation":"delete",
"owner":"NIC de la organización, si se omite se asume al usuario como propietario (omitible)",
"id":"Id del espacio de trabajo, equipo o rol a eliminar"
}
```
Respuesta exitosa
```
Content-Type: application/json;charset=utf-8
{
"success":true,
"data": null
}
```
## Listar objetos
### Listar espacios de trabajo (los que el usuario solicitante puede administrar)
Solicitud
```
Method: POST
Content-Type: application/json;charset=utf-8
{
"ids":"Identificador de sesión válida (token)",
"operation":"list",
"owner":"NIC de la organización, si se omite se asume al usuario como propietario (omitible)"
}
```
Respuesta exitosa
```
Content-Type: application/json;charset=utf-8
{
"success":true,
"data":[{..datos del espacio de trabajo 1},..]
}
```
### Listar equipos
Solicitud
```
Method: POST
Content-Type: application/json;charset=utf-8
{
"ids":"Identificador de sesión válida (token)",
"operation":"list",
"owner":"NIC de la organización, si se omite se asume al usuario como propietario (omitible)",
"workspace":"Id del espacio de trabajo"
}
```
Respuesta exitosa
```
Content-Type: application/json;charset=utf-8
{
"success":true,
"data":[{..datos del equipo 1},..]
}
```
### Listar roles de un equipo
Solicitud
```
Method: POST
Content-Type: application/json;charset=utf-8
{
"ids":"Identificador de sesión válida (token)",
"operation":"list",
"owner":"NIC de la organización, si se omite se asume al usuario como propietario (omitible)",
"workspace":"Id del espacio de trabajo",
"team":"Id del equipo"
}
```
Respuesta exitosa
```
Content-Type: application/json;charset=utf-8
{
"success":true,
"data":[{..datos del rol 1},..]
}
```
## Asignables
### Listar objetos asignables (del solicitante)
Solicitud
```
Method: POST
Content-Type: application/json;charset=utf-8
{
"ids":"Identificador de sesión válida (token)",
"operation":"assignables"
}
```
Respuesta exitosa
```
Content-Type: application/json;charset=utf-8
{
"success":true,
"data":[{..datos del objeto 1},..]
}
```