> ## Documentation Index
> Fetch the complete documentation index at: https://muveya.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Roles y permisos

> Qué incluye cada rol, el catálogo completo de permisos, qué áreas de la consola habilita cada uno, cómo lo limita el acceso a sedes y bodegas, y qué oculta muveya sin permiso.

Lo que una persona puede hacer en una clínica dental depende de tres cosas, que se definen en las pantallas de **Equipo** (consulta [Equipo](/docs/es/account/team)):

1. **Rol:** **Propietario**, **Administrador** o **Miembro**. Un rol es una plantilla: incluye unos pocos permisos y algunas facultades adicionales sobre el equipo.
2. **Permisos:** las acciones y la información que la persona puede usar, otorgados uno por uno.
3. **Sedes y bodegas:** los lugares donde aplican esos permisos.

<Warning>
  Los permisos **no** se heredan del nombre del rol. Un **Propietario** no ve inventario, pedidos, aprobaciones, entregas ni reportes hasta que alguien le marca esos permisos, muchas veces en su propia página. Revisa siempre la lista de permisos, no el rol.
</Warning>

## Cómo se decide el acceso

Los **permisos efectivos** de una persona son:

* los permisos que incluye su rol, **más**
* los permisos que se le otorgaron en las pantallas de Equipo, **más**
* los permisos que incluye un permiso otorgado: `inventory.adjust` (**Ajustar y contar stock**) incluye `inventory.receive`, `inventory.consume` e `inventory.transfer`.

muveya revisa los permisos efectivos y el acceso a sedes en el servidor, en cada solicitud. La consola oculta lo que no puedes usar, pero ocultarlo es solo una comodidad: si llegas a una pantalla de todos modos, el servidor rechaza la acción (**Tu cuenta no tiene permiso para esta acción.**), responde que el elemento no existe o deja fuera la información que no puedes ver.

Los cambios de permisos y de acceso a sedes aplican desde la siguiente acción de la persona. No necesita volver a iniciar sesión.

## Plantillas de rol

| Rol | Permisos incluidos | Facultades adicionales |
| - | - | - |
| **Propietario** | `catalog.read`, `catalog.manage`, `members.manage`, `settings.manage` | Invitar administradores, cambiar roles, transferir la propiedad, y suspender, reactivar, retirar o cambiar el acceso a sedes de otros propietarios. Importar y exportar el catálogo en CSV. |
| **Administrador** | `catalog.read`, `catalog.manage`, `members.manage`, `settings.manage` | Importar y exportar el catálogo en CSV. |
| **Miembro** | `catalog.read` | Ninguna. |

* Quien crea una clínica dental es su primer **Propietario**, con acceso a todas las sedes y bodegas.
* Nadie puede ser invitado como **Propietario**: la propiedad se transfiere. Una clínica siempre conserva al menos un propietario activo.
* Solo un propietario cambia roles, y solo entre **Administrador** y **Miembro**.
* Iniciar una importación o exportación CSV del catálogo requiere el rol **Propietario** o **Administrador**; `catalog.manage` por sí solo no alcanza, aunque la consola muestre los botones a los miembros que lo tienen.
* Ningún rol incluye permisos de inventario, pedidos, aprobaciones, entregas, reportes, costos, valores de pedidos ni referencias de pacientes.

## Catálogo de permisos

Estos son los 26 permisos. La etiqueta es la que muestran las pantallas de Equipo.

### Catálogo

| Permiso | Etiqueta | Qué permite |
| - | - | - |
| `catalog.read` | **Leer catálogo** | Leer insumos, categorías, presentaciones y códigos. Todos los roles lo incluyen, así que toda persona del equipo puede leer el catálogo. |
| `catalog.manage` | **Gestionar catálogo** | Crear y editar insumos y categorías, activar y desactivar insumos, agregar y retirar presentaciones y códigos, y definir costos de insumos (junto con `catalog.cost.read`). |
| `catalog.cost.read` | **Ver costos de insumos** | Ver los costos de los insumos en el catálogo, en la exportación CSV del catálogo y en las líneas de pedido. Sin él, se omiten los campos de costo. |

### Inventario

| Permiso | Etiqueta | Qué permite |
| - | - | - |
| `inventory.read` | **Ver inventario** | Ver existencias, cajas, lotes, alertas de existencias, conteos, reposición, uso por box o área, solicitudes de corrección de existencias e historial de cajas. |
| `inventory.receive` | **Recibir entregas** | Registrar existencias recibidas en la pantalla **Recibir**. |
| `inventory.consume` | **Registrar consumo** | Registrar el consumo de una caja y atribuir una salida a un box o área. |
| `inventory.transfer` | **Trasladar cajas entre bodegas** | Trasladar una caja a otra bodega y separar parte de una caja. |
| `inventory.adjust` | **Ajustar y contar stock** | Corregir una caja, decidir solicitudes de corrección de existencias, definir mínimos, hacer conteos y campañas de conteo, sacar una caja de uso (cuarentena, vencida, dada de baja) y poner un lote en cuarentena. Incluye recibir, registrar consumo y trasladar. |

### Pedidos

| Permiso | Etiqueta | Qué permite |
| - | - | - |
| `orders.create` | **Crear pedidos de insumos** | Crear, editar, enviar y cancelar tus propios pedidos, y ver tus propios pedidos. |
| `orders.read.all` | **Ver todos los pedidos** | Ver todos los pedidos de tus sedes, no solo los tuyos. |
| `orders.value.read` | **Ver valores de pedidos** | Ver el total de los pedidos, el valor que evaluó una regla de aprobación y los límites de valor de las reglas. Sin él, se omiten esos valores. |
| `orders.clinical.create` | **Crear pedidos clínicos** | Marcar un pedido como **Es para el tratamiento de un paciente** y agregar una **Referencia del paciente (opcional)**. También requiere `orders.create`. |
| `orders.patient_ref.read` | **Ver referencias externas de pacientes** | Ver la referencia del paciente en los pedidos y la referencia de atención en los registros de uso. Sin él, se omiten. |

### Aprobaciones

| Permiso | Etiqueta | Qué permite |
| - | - | - |
| `approvals.policy.manage` | **Gestionar reglas de aprobación** | Abrir y publicar la **Política de aprobación**. |
| `approvals.decide` | **Decidir aprobaciones** | Ver la bandeja de aprobaciones, aprobar y rechazar pedidos, y ver el historial de decisiones. También permite ver todos los pedidos de sus sedes. |

### Abastecimiento (entregas)

| Permiso | Etiqueta | Qué permite |
| - | - | - |
| `fulfillment.pick` | **Preparar pedidos** | Abrir la lista de preparación y registrar las cajas preparadas para un pedido. |
| `fulfillment.dispatch` | **Despachar pedidos** | Despachar un pedido preparado. |
| `delivery.confirm` | **Confirmar entrega** | Confirmar que un pedido despachado se entregó, o informar un problema de entrega. |
| `receipt.confirm` | **Confirmar recepción** | Confirmar o disputar la recepción de las cajas entregadas en el destino. |
| `fulfillment.close` | **Cerrar abastecimiento** | Cerrar un pedido cuya custodia está completa. |
| `fulfillment.read` | **Ver abastecimiento** | Seguir la custodia y el historial de un pedido, ver **Problemas de entrega** y recibir caja por caja. |

Cualquiera de estos seis permisos también permite ver todos los pedidos de sus sedes.

### Reportes y auditoría

| Permiso | Etiqueta | Qué permite |
| - | - | - |
| `reports.read` | **Ver reportes** | Abrir el reporte de consumo. |
| `audit.read` | **Ver historial de auditoría** | Reservado. Ninguna pantalla ni API lee todavía el historial de auditoría, así que otorgarlo hoy no cambia nada. |

### Administración

| Permiso | Etiqueta | Qué permite |
| - | - | - |
| `members.manage` | **Gestionar acceso del equipo** | Usar las pantallas de Equipo: consultar, invitar, cambiar permisos y acceso a sedes, suspender, reactivar y retirar. Las acciones exclusivas de propietarios siguen siéndolo. |
| `settings.manage` | **Gestionar configuración de la clínica** | Crear, renombrar, activar y desactivar sedes, bodegas y boxes o áreas. |
| `integrations.manage` | **Gestionar integraciones y claves API** | Reservado. La consola todavía no tiene una pantalla para crear o revocar claves de API, así que otorgarlo hoy no cambia nada. |

## Qué necesita cada área de la consola

| Elemento del menú | Se muestra a | Qué cambia con los permisos |
| - | - | - |
| **Inicio** | Todas las personas | Tarjetas de **Para empezar a operar**: **Crea la primera sede** y **Crea una bodega** con `settings.manage`; **Agrega tu primer insumo** y **Agrega cómo vienen tus insumos** con `catalog.manage`; **Invita a tu equipo** con `members.manage`; el aviso de política de aprobación con `approvals.policy.manage`. Tarjetas de **Trabajo pendiente**: **Pedidos esperando tu aprobación** (`approvals.decide`), **Pedidos por preparar** (`fulfillment.pick` o `fulfillment.dispatch`), **Entregas por confirmar** (`delivery.confirm`), **Pedidos por recibir** (`receipt.confirm`), **Pedidos por cerrar** (`fulfillment.close`), **Borradores de pedidos** (`orders.create`), **Alertas de existencias abiertas** y **Cajas por contar** (`inventory.read`). |
| **Pedidos** | Quien tenga `orders.create`, `orders.read.all`, `approvals.decide` o cualquier permiso de abastecimiento | **Nuevo pedido** y editar tus borradores requieren `orders.create`. La opción clínica requiere `orders.clinical.create`. **Valor del pedido** y **Referencia del paciente** aparecen solo con sus permisos. |
| **Aprobación de pedidos** | Quien tenga `approvals.decide` o `approvals.policy.manage` | La bandeja, **Aprobar**, **Rechazar** y **Decisiones** requieren `approvals.decide`; **Política de aprobación** requiere `approvals.policy.manage`. Los campos de valor de la política requieren `orders.value.read`. |
| **Entregas** | Quien tenga cualquier permiso de abastecimiento | Secciones **Por preparar** (preparar o despachar), **Por entregar** (`delivery.confirm`), **Por recibir** (`receipt.confirm`), **Por cerrar** (`fulfillment.close`) y **Problemas de entrega** (`fulfillment.read`). |
| **Sedes** y **Bodegas** | Todas las personas | **Nueva sede**, **Nueva bodega**, **Nuevo box o área**, renombrar y activar requieren `settings.manage`. |
| **Catálogo** | Todas las personas | **Nuevo insumo**, **Nueva categoría**, editar, **Agregar presentación**, **Importar CSV** y **Exportar CSV** requieren `catalog.manage` (el CSV además requiere el rol Propietario o Administrador). La columna **Costo** requiere `catalog.cost.read`; editar el **Costo del insumo** requiere ambos. |
| **Inventario**, **Reposición**, **Correcciones de existencias** | Todas las personas | El contenido requiere `inventory.read`. **Recibir** requiere `inventory.receive`. **Consumir** y **Atribuir** requieren `inventory.consume`. **Trasladar** y **Separar parte de esta caja** requieren `inventory.transfer`. **Corregir esta caja**, **Sacar la caja de uso**, **Definir un mínimo**, los conteos y las campañas de conteo requieren `inventory.adjust`. |
| **Reportes** | Quien tenga `reports.read` | Sin él, la pantalla dice **Necesitas el permiso Ver reportes**. |
| **Equipo** | Quien tenga `members.manage` | Consulta [Equipo](/docs/es/account/team). |

**Seguridad de la cuenta** (`console.muveya.com/account/security`) no requiere permisos.

Pantallas que avisan que te falta un permiso:

| Pantalla | Permiso faltante | Mensaje |
| - | - | - |
| **Recibir** | `inventory.receive` | **No tienes permiso para recibir entregas. Pide a un administrador el permiso “Recibir entregas”.** |
| **Retiro de lote** | `inventory.read` | **No tienes permiso para ver existencias. Pide acceso a un administrador.** |
| Mínimos y conteo breve | `inventory.adjust` | **Solo un miembro que puede corregir existencias puede definir mínimos.** / **Solo un miembro que puede corregir existencias puede contarlas.** |
| **Nuevo pedido** | `orders.create` | **No puedes crear pedidos. Pide al administrador de tu clínica el permiso para solicitar insumos.** |
| **Aprobación de pedidos** | `approvals.decide` | **No decides aprobaciones de pedidos. Si deberías hacerlo, pide el permiso al administrador de tu clínica.** |
| **Política de aprobación** | `approvals.policy.manage` | **No puedes cambiar la política de aprobación. Pide el permiso al administrador de tu clínica.** |
| **Entregas** | los seis | **No participas en las entregas. Pregunta al administrador de tu clínica si deberías preparar, entregar o recibir pedidos.** |
| Preparación | `fulfillment.pick` | **No puedes preparar pedidos. Pide al administrador de tu clínica el permiso para preparar.** |
| Entrega | `delivery.confirm` | **No puedes confirmar entregas. Pide el permiso al administrador de tu clínica.** |
| Recepción | `receipt.confirm`, y luego `fulfillment.read` | **No puedes recibir pedidos. Pide el permiso al administrador de tu clínica.** / **Para recibir caja por caja también necesitas permiso para ver entregas. Pídelo al administrador de tu clínica.** |
| Seguimiento del pedido | `fulfillment.read` | **No puedes ver entregas. Pide el permiso al administrador de tu clínica.** |
| **Equipo** | `members.manage` | **No tienes acceso a la administración del equipo. Consulta con el administrador de tu clínica.** |

<Note>
  El botón **Despachar pedido** está en la pantalla de preparación, que requiere `fulfillment.pick`. Otorga **Preparar pedidos** a quien despacha. Sin `inventory.read`, **Alertas de existencias**, **Conteos** y las campañas de conteo solo muestran su mensaje de carga.
</Note>

## Alcance de sedes y bodegas

Cada persona tiene una opción para sedes y otra para bodegas:

| Opción | Significado |
| - | - |
| **Todas las sedes de esta cuenta** / **Todas las bodegas de esta cuenta** | Todos los lugares, incluidos los que se creen después. |
| **Sedes seleccionadas** / **Bodegas seleccionadas** | Exactamente los lugares marcados. |
| **Ninguna sede** / **Ninguna bodega** | Ninguno. |

El acceso a sedes aplica a pedidos, aprobaciones y custodia. El acceso a bodegas aplica a las existencias. El permiso decide **qué** puede hacer una persona; el acceso a sedes decide **dónde**.

| Área | Cómo la limita el acceso a sedes |
| - | - |
| **Pedidos** | Las listas muestran solo pedidos de tus sedes. Un pedido de otra sede aparece como inexistente. Para crear un pedido necesitas su sede y su bodega de destino (**No tienes sedes asignadas para crear pedidos. Pide a un administrador que te dé acceso.**, **No tienes asignada ninguna bodega de esta clínica. Pide a un administrador que te dé acceso.**). |
| **Aprobación de pedidos** | La bandeja muestra solo pedidos de tus sedes. Decidir un pedido de otra sede responde que no existe. |
| **Entregas** | Preparar y seguir un pedido se revisa contra la sede del pedido. Despachar y confirmar la entrega se revisan contra la sede de la bodega que abastece el pedido (la propia sede del pedido cuando las existencias vienen de una bodega central). Confirmar la recepción y cerrar se revisan contra la sede de destino; si tus sedes seleccionadas incluyen tanto la sede que abastece como la de destino de ese pedido, no puedes confirmar su recepción ni cerrarlo (quien tiene todas las sedes sí puede). Una caja escaneada fuera de tus bodegas no coincide. |
| **Inventario** | Existencias, cajas, conteos, alertas, reposición y uso muestran solo tus bodegas. Actuar sobre una caja o bodega fuera de ellas responde que no existe. Sin ninguna bodega, las pantallas dicen **No tienes bodegas asignadas. Pide a un administrador que te dé acceso.** |
| **Reportes** | Con bodegas seleccionadas, el reporte de consumo dice **Solo incluye tus bodegas asignadas, no toda la clínica.** |
| **Catálogo** | No se limita: el catálogo pertenece a toda la clínica dental. |
| Listas de **Sedes** y **Bodegas** | No se limitan: toda persona del equipo ve todas las sedes y bodegas de la clínica, sin importar su acceso. |
| **Equipo** | Solo puedes otorgar lugares a los que tú tienes acceso, y nunca cambiar el tuyo. |

Las claves de API no son personas: siempre tienen acceso a todos los lugares de la clínica.

## Qué oculta muveya sin permiso

muveya omite esta información en el servidor antes de que llegue a la consola, a la API o a MCP. El campo no aparece; no queda vacío.

| Información | Requiere | Dónde se omite |
| - | - | - |
| Costo de insumos (costo, moneda, estado y unidad del costo) | `catalog.cost.read` | Pantallas del catálogo, exportación CSV del catálogo (se omiten las columnas de costo), costo unitario en las líneas de pedido. |
| Valor del pedido (total y moneda), el valor que evaluó una regla de aprobación y los límites de valor de una regla | `orders.value.read` | Pedidos, detalle de pedidos, bandeja de aprobaciones, resumen de la política de aprobación. En el editor de la política, quien no lo tiene ve **Esta regla también tiene condiciones que no puedes cambiar aquí; se conservan.** |
| Referencia del paciente (`patientRef`) | `orders.patient_ref.read` | Detalle del pedido. Se guarda cifrada y solo se descifra para quienes tienen este permiso. |
| Referencia de atención en el uso | `orders.patient_ref.read` | **Uso por box o área** muestra que existe una referencia, sin su valor. |

Algunos lugares nunca muestran estos valores a nadie: el historial de custodia, las listas de preparación, las alertas de existencias, los reportes y exportaciones de analítica, y los mensajes de WhatsApp. Las claves de API nunca pueden leer valores de pedidos ni referencias de pacientes. Consulta [Seguridad y privacidad](/docs/es/trust/security-and-privacy).

## Scopes de API y permisos

Las claves de API llevan **scopes**, escritos con dos puntos. Cada scope corresponde a un permiso:

| Scope de API | Permiso que otorga | Lo usan |
| - | - | - |
| `clinics:read` | `clinics.read` (solo API) | `GET /v1/clinics`, `GET /v1/warehouses` |
| `catalog:read` | `catalog.read` | Insumos y categorías del catálogo |
| `catalog.cost:read` | `catalog.cost.read` | Campos de costo de los insumos |
| `inventory:read` | `inventory.read` | Saldos, cajas y movimientos de inventario |
| `orders:read` | `orders.read.all` | Pedidos |
| `fulfillment:read` | `fulfillment.read` | Abastecimientos |
| `analytics:read` | `reports.read` | Analítica, incluido `POST /v1/analytics/exports` |

* No hay scope para `orders.value.read` ni `orders.patient_ref.read`: esos valores siempre se omiten para las claves de API.
* No hay scopes de escritura ni comodines.
* La consola todavía no tiene una pantalla para crear o revocar claves de API; escribe a [team@muveya.com](mailto:team@muveya.com). Consulta [Scopes](/docs/es/api-reference/scopes).

## Configuraciones comunes

Estas combinaciones funcionan con la forma en que muveya revisa el acceso hoy. Ajusta los lugares a cada persona.

| Persona | Rol | Permisos a marcar |
| - | - | - |
| Asistente que registra consumo | **Miembro** | **Ver inventario**, **Registrar consumo** |
| Persona que recibe entregas en una bodega | **Miembro** | **Ver inventario**, **Recibir entregas** |
| Encargado de bodega que corrige y cuenta existencias | **Miembro** | **Ver inventario**, **Ajustar y contar stock** |
| Dentista o coordinador que solicita insumos | **Miembro** | **Crear pedidos de insumos** (más **Crear pedidos clínicos** y **Ver referencias externas de pacientes** para pedidos de pacientes) |
| Persona que aprueba | **Miembro** | **Decidir aprobaciones** (más **Ver valores de pedidos** si tus reglas usan valores, y cualquier permiso que exija un paso de una regla) |
| Operador de bodega central | **Miembro** | **Ver inventario**, **Preparar pedidos**, **Despachar pedidos**, **Confirmar entrega**, **Ver abastecimiento** |
| Persona que recibe pedidos en una sede | **Miembro** | **Confirmar recepción**, **Ver abastecimiento**, **Cerrar abastecimiento** |
| Propietario que opera toda la clínica | **Propietario** | Todo lo que necesite, en su propia página: por ejemplo **Ver inventario**, **Ajustar y contar stock**, **Crear pedidos de insumos**, **Ver todos los pedidos**, **Ver valores de pedidos**, **Gestionar reglas de aprobación**, **Decidir aprobaciones** y **Ver reportes** |

Quien aprueba no puede aprobar su propio pedido, y un paso de una regla de aprobación puede exigir un permiso adicional a quienes aprueban. Consulta [Política de aprobación](/docs/es/orders/approval-policy).

## Páginas relacionadas

<CardGroup cols={2}>
  <Card title="Equipo" icon="users" href="/docs/es/account/team">
    Cambia roles, permisos y acceso a sedes.
  </Card>

  <Card title="Seguridad y privacidad" icon="lock" href="/docs/es/trust/security-and-privacy">
    Aislamiento, omisión de datos y auditoría.
  </Card>

  <Card title="Sedes" icon="building" href="/docs/es/locations/clinics">
    Los lugares que asignas a las personas.
  </Card>

  <Card title="Scopes" icon="code" href="/docs/es/api-reference/scopes">
    Scopes para claves de API.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.