# Acceso a Endpoints por Rol

Esta página documenta qué endpoints REST de WCPOS son accesibles para cada uno de los tres roles predeterminados utilizados en los flujos de trabajo del POS:

* `administrator`
* `shop_manager`
* `cashier`

Para la configuración de roles y capacidades orientada al usuario, consulta [Acceso al POS](/es/settings/wp-admin/access.md).

## Resumen[​](#summary "Enlace directo a Resumen")

El modelo de acceso predeterminado es:

* **`administrator`** — acceso completo al POS y a la gestión.
* **`shop_manager`** — acceso completo al POS y a la gestión, excepto las acciones de extensión de plugins que requieren capacidades de instalación de plugins.
* **`cashier`** — acceso normal al flujo de trabajo de venta del POS, pero sin acceso a la gestión, los ajustes, los registros ni la administración de la tienda.

La matriz de endpoints es verificada por pruebas de integración que ejercitan la misma ruta de autenticación que la aplicación POS (tokens de acceso de portador de WCPOS, no solo `wp_set_current_user()`). Las afirmaciones de endpoints permitidos confirman que un rol no recibe `401` o `403`. Algunos endpoints aún pueden devolver datos normales o errores de negocio como `400` o `404` cuando la prueba utiliza fixtures mínimas — esas respuestas aún prueban que el usuario superó la capa de autenticación/permisos.

## Matriz de Acceso a Endpoints del Plugin Gratuito[​](#free-plugin-endpoint-access-matrix "Enlace directo a Matriz de Acceso a Endpoints del Plugin Gratuito")

| Área                                   | Ejemplos de endpoint                             | Admin | Shop Manager | Cashier | Notas                                     |
| -------------------------------------- | ------------------------------------------------ | ----- | ------------ | ------- | ----------------------------------------- |
| Índice de ajustes                      | `GET /wcpos/v1/settings`                         | ✅    | ✅           | ✅      | Índice de ajustes del POS público/legible |
| Tiendas                                | `GET /wcpos/v1/stores`                           | ✅    | ✅           | ✅      | Datos de inicio del POS                   |
| Perfil de cajero                       | `GET /wcpos/v1/cashier/{id}`                     | ✅    | ✅           | ✅      | Datos propios del cajero                  |
| Tiendas del cajero                     | `GET /wcpos/v1/cashier/{id}/stores`              | ✅    | ✅           | ✅      | Acceso a tiendas para el cajero actual    |
| Productos                              | `GET /wcpos/v1/products`                         | ✅    | ✅           | ✅      | Navegación del catálogo                   |
| Variaciones                            | `GET /wcpos/v1/products/variations`              | ✅    | ✅           | ✅      | Navegación del catálogo                   |
| Categorías                             | `GET /wcpos/v1/products/categories`              | ✅    | ✅           | ✅      | Filtros del catálogo                      |
| Etiquetas                              | `GET /wcpos/v1/products/tags`                    | ✅    | ✅           | ✅      | Filtros del catálogo                      |
| Marcas                                 | `GET /wcpos/v1/products/brands`                  | ✅    | ✅           | ✅      | Filtros del catálogo                      |
| Cupones                                | `GET /wcpos/v1/coupons`                          | ✅    | ✅           | ✅      | Búsqueda de cupones del POS               |
| Lectura de pedidos                     | `GET /wcpos/v1/orders`                           | ✅    | ✅           | ✅      | Historial de pedidos del POS              |
| Creación de pedidos                    | `POST /wcpos/v1/orders`                          | ✅    | ✅           | ✅      | Flujo de trabajo de venta                 |
| Actualización de pedidos               | `PATCH /wcpos/v1/orders/{id}`                    | ✅    | ✅           | ✅      | Completar/actualizar pedidos del POS      |
| Lectura/creación de pago               | `/wcpos/v1/orders/{id}/checkout`                 | ✅    | ✅           | ✅      | Flujo de pago                             |
| Recibos                                | `GET /wcpos/v1/receipts/{order_id}`              | ✅    | ✅           | ✅      | Renderizado de recibos                    |
| Estados de pedido                      | `GET /wcpos/v1/data/order_statuses`              | ✅    | ✅           | ✅      | Datos de estado del POS                   |
| Lectura de clientes                    | `GET /wcpos/v1/customers`                        | ✅    | ✅           | ✅      | Búsqueda/lista de clientes                |
| Creación de clientes                   | `POST /wcpos/v1/customers`                       | ✅    | ✅           | ✅      | Crear cliente en el POS                   |
| Actualización de clientes              | `PATCH /wcpos/v1/customers/{id}`                 | ✅    | ✅           | ✅      | Editar cliente en el POS                  |
| Impuestos                              | `GET /wcpos/v1/taxes`                            | ✅    | ✅           | ✅      | Datos de cálculo de pago/impuestos        |
| Clases de impuestos                    | `GET /wcpos/v1/taxes/classes`                    | ✅    | ✅           | ✅      | Datos de cálculo de pago/impuestos        |
| Métodos de envío                       | `GET /wcpos/v1/shipping_methods`                 | ✅    | ✅           | ✅      | Datos de pago/envío                       |
| Pasarelas de pago                      | `GET /wcpos/v1/payment-gateways`                 | ✅    | ✅           | ✅      | Opciones de pago                          |
| Bootstrap de pasarela                  | `POST /wcpos/v1/payment-gateways/{id}/bootstrap` | ✅    | ✅           | ✅      | Configuración de pago                     |
| Plantillas                             | `GET /wcpos/v1/templates`                        | ✅    | ✅           | ✅      | Lecturas de recibo/plantilla              |
| Plantilla activa                       | `GET /wcpos/v1/templates/active`                 | ✅    | ✅           | ✅      | Lecturas de recibo/plantilla              |
| Galería de plantillas                  | `GET /wcpos/v1/templates/gallery`                | ✅    | ✅           | ✅      | Lecturas de plantillas                    |
| Ajustes generales                      | `GET /wcpos/v1/settings/general`                 | ✅    | ✅           | ❌      | Solo gestión                              |
| Ajustes de pago                        | `GET /wcpos/v1/settings/checkout`                | ✅    | ✅           | ❌      | Solo gestión                              |
| Ajustes de ID fiscal                   | `GET /wcpos/v1/settings/tax_ids`                 | ✅    | ✅           | ❌      | Solo gestión                              |
| Ajustes de pasarela de pago            | `GET /wcpos/v1/settings/payment-gateways`        | ✅    | ✅           | ❌      | Solo gestión                              |
| Catálogo/administración de extensiones | `GET /wcpos/v1/extensions`                       | ✅    | ✅           | ❌      | Solo gestión                              |
| Registros                              | `GET /wcpos/v1/logs`                             | ✅    | ✅           | ❌      | Solo gestión                              |

## Matriz de Acceso a Endpoints del Plugin Pro[​](#pro-plugin-endpoint-access-matrix "Enlace directo a Matriz de Acceso a Endpoints del Plugin Pro")

| Área                                 | Ejemplos de endpoint                 | Admin | Shop Manager | Cashier | Notas                                            |
| ------------------------------------ | ------------------------------------ | ----- | ------------ | ------- | ------------------------------------------------ |
| Datos de edición de tienda           | `GET /wcpos/v1/stores/{id}/edit`     | ✅    | ✅           | ❌      | Gestión de tienda                                |
| Creación de tienda                   | `POST /wcpos/v1/stores`              | ✅    | ✅           | ❌      | Gestión de tienda                                |
| Actualización de tienda              | `PATCH /wcpos/v1/stores/{id}`        | ✅    | ✅           | ❌      | Gestión de tienda                                |
| Actualización de ajustes de licencia | `POST /wcpos/v1/settings/license`    | ✅    | ✅           | ❌      | Gestión Pro                                      |
| Acciones de extensión                | `POST /wcpos/v1/extensions/action`   | ✅    | ❌           | ❌      | Requiere capacidad de instalar/gestionar plugins |
| Reembolsos de pedidos                | `POST /wcpos/v1/orders/{id}/refunds` | ✅    | ✅           | ✅      | Tratado como operación del POS                   |

## Cobertura de Expiración de Tokens[​](#token-expiry-coverage "Enlace directo a Cobertura de Expiración de Tokens")

| Escenario                                          | Admin      | Shop Manager | Cashier    | Resultado esperado                                                        |
| -------------------------------------------------- | ---------- | ------------ | ---------- | ------------------------------------------------------------------------- |
| Token de acceso válido                             | ✅ probado | ✅ probado   | ✅ probado | Los endpoints permitidos no devuelven `401` o `403`                       |
| Token de acceso expirado                           | ✅ probado | ✅ probado   | ✅ probado | La solicitud falla en la puerta de autenticación de WCPOS con usuario `0` |
| Token de actualización válido tras acceso expirado | ✅ probado | ✅ probado   | ✅ probado | Se emite un nuevo token de acceso y se restaura el acceso                 |
| Token de actualización expirado                    | ✅ probado | ✅ probado   | ✅ probado | No se puede generar un nuevo token de acceso                              |

## Diagnóstico de Fallos[​](#diagnosing-failures "Enlace directo a Diagnóstico de Fallos")

Si un `shop_manager` predeterminado ve un error como:

> Request still unauthorized after token refresh - please log in again

La matriz de endpoints indica que esto **no** se debe a que el rol `shop_manager` predeterminado carezca fundamentalmente de acceso al POS. Causas probables a investigar:

1. Corrupción de roles/capacidades específica del sitio.
2. Un endpoint no cubierto por la matriz.
3. Comportamiento de reintento con token de acceso obsoleto o expirado en el cliente.
4. Interferencia de un plugin de seguridad o autenticación de terceros.
5. Reglas de acceso Pro o específicas de la tienda, o código personalizado.

### Fallo de permiso vs. fallo de token[​](#permission-failure-vs-token-failure "Enlace directo a Fallo de permiso vs. fallo de token")

El frontend del POS puede mostrar el mismo error de actualización de token en ambos casos después de recibir un `401` o `403`, intentar una actualización de token y que el reintento siga sin estar autorizado. Los dos modos de fallo se ven diferentes en el lado del servidor:

Un **fallo real de rol/capacidad** generalmente se ve así:

```
status: 403

current_user: <actual user id>

access token expired: false
```

Un **fallo de token/autenticación** generalmente se ve así:

```
status: 403

current_user: 0

access token expired: true or invalid
```

Usa esta distinción al clasificar problemas de acceso al POS — un `current_user` distinto de cero apunta a las capacidades, mientras que `current_user: 0` apunta a la capa de autenticación/token.
