Manage roles and permission sets for seller domains and stores
Token validation happens at Gateway level via JWT verification
Create a new role with permissions
POST /merchant/api/v1/domains/:domain_id/roles
POST /api/roles
User Service
POST /api/events/log
Util Service
Retrieve all roles for the domain
GET /merchant/api/v1/domains/:domain_id/roles
GET /api/roles?domain_id=:domain_id
User Service
Retrieve a specific role by ID
GET /merchant/api/v1/domains/:domain_id/roles/:role_id
GET /api/roles/:role_id
User Service
Update role name, description, and permissions
PUT /merchant/api/v1/domains/:domain_id/roles/:role_id
PUT /api/roles/:role_id
User Service
POST /api/sessions/refresh-permissions
User Service
Delete a role from the domain
DELETE /merchant/api/v1/domains/:domain_id/roles/:role_id
DELETE /api/roles/:role_id
User Service
POST /api/cache/invalidate
Caching Service
Retrieve all available permissions (not domain-scoped)
GET /merchant/api/v1/permissions
GET /api/permissions
User Service
view_orders, add_order, edit_order, delete_order, view_products, add_products, edit_products, delete_products, view_customers, view_staff, add_staff, view_roles, add_roles...
Roles are domain-scoped while permissions are system-wide constants. Role changes trigger session refresh to avoid privilege drift.