{ "users": { "DL": { "name": "Dale Liesching", "writeAllow": "quotes,contacts,opportunities,tasks,problems,jobs,bookings,contracts,campaigns,enquiries,inventory,knowledge,notes,divisions", "permissions": { "quotes": { "create": true, "edit": true }, "contacts": { "create": true, "edit": true, "delete": true, "move": true }, "opportunities": { "create": true, "edit": true }, "tasks": { "create": true, "edit": true, "delete": true }, "problems": { "create": true, "edit": true }, "jobs": { "create": true, "edit": true }, "bookings": { "create": true, "edit": true }, "contracts": { "create": true, "edit": true }, "campaigns": { "create": true, "add_contact": true, "remove_contact": true }, "enquiries": { "create": true, "edit": true, "delete": true, "link_campaign": true, "assign": true }, "inventory": { "create": true, "edit": true }, "knowledge": { "create": true }, "notes": { "create": true, "delete": true }, "divisions": { "merge": true, "reparent": true, "update_address": true } }, "notes": "Admin — full access + messaging opt-in for smoke testing" }, "JB": { "name": "Justyna Bekier", "writeAllow": "", "permissions": {}, "notes": "Purchasing Administrator" } }, "defaults": { "writeAllow": "", "permissions": {}, "notes": "Default for unknown users — read-only" }, "modules": [ { "id": "quotes", "label": "Quotes", "description": "Quotes and quote lines", "actions": [ "create", "edit", "delete" ] }, { "id": "contacts", "label": "Contacts & Companies", "description": "Contacts and divisions", "actions": [ "create", "edit", "delete", "move" ] }, { "id": "opportunities", "label": "Opportunities", "description": "Leads/opportunities", "actions": [ "create", "edit" ] }, { "id": "tasks", "label": "Tasks", "description": "Tasks and follow-ups", "actions": [ "create", "edit", "delete" ] }, { "id": "problems", "label": "Problems/Tickets", "description": "Support tickets", "actions": [ "create", "edit" ] }, { "id": "jobs", "label": "Jobs", "description": "Jobs/projects", "actions": [ "create", "edit" ] }, { "id": "bookings", "label": "Bookings", "description": "Resource bookings", "actions": [ "create", "edit" ] }, { "id": "contracts", "label": "Contracts", "description": "Contracts and schedules", "actions": [ "create", "edit" ] }, { "id": "campaigns", "label": "Campaigns", "description": "Marketing campaigns", "actions": [ "create", "add_contact", "remove_contact" ] }, { "id": "enquiries", "label": "Enquiries", "description": "Inbound enquiries", "actions": [ "create", "edit", "delete", "link_campaign", "assign" ] }, { "id": "inventory", "label": "Inventory", "description": "Assets/equipment", "actions": [ "create", "edit" ] }, { "id": "knowledge", "label": "Knowledge Base", "description": "Quoting lessons and product notes", "actions": [ "create" ] }, { "id": "notes", "label": "Activity Notes", "description": "Activity-feed notes (Notepads) on divisions, contacts, leads, enquiries, and quotes", "actions": [ "create", "delete" ] }, { "id": "divisions", "label": "Division Hierarchy", "description": "Division-level cleanup operations: re-parent under a different Company, merge duplicate Divisions onto a canonical one, patch the linked Address. The standard create/edit/delete on divisions sits under the contacts module — this one is for cross-entity Division moves.", "actions": [ "merge", "reparent", "update_address" ] }, { "id": "messaging", "label": "Messaging", "description": "Send quotes (and later other entities) by email via the Prospect merge-and-send action. Off by default — opt in explicitly once the tool has been validated against a real quote.", "actions": [ "send" ] } ] }