Roofing CRM Pro Yours
Key roofing-crm-pro-9f2c1a · Field Service · Published v2 · saved from Summit Roofing
Contents
Pack details
- Owner
- You — private to this account
- Source product
- Summit Roofing
- Category
- Field Service
- Industry
- Roofing
- Status
- Published
- Version
- v2
- Members
- 14 pages · 3 menus
- Theme
- roofing-crm-pro-9f2c1a-theme
- Top bar
- roofing-crm-pro-9f2c1a-topbar
What’s inside one of your packs — every page, menu, and setting it will seed into a new product. Only your account can see this pack or start products from it; publishing marks it ready to use without making it visible to anyone else, and editing it later never changes products already built from it. Products remember which pack version they came from, which is what makes clean upgrades possible.
Behind this page/template-packs/:templatePackKey · CanManageTemplates
Retrieve
Pack header + members from the Template Library, gated byfn_TemplatePack_CanUse with the server-injected account. A non-owner requesting this key gets not-found — never a permission hint.Save
Validate →sp_ValidateTemplatePack; publish → sp_PublishTemplatePack with @RequestingAccountId (a published:false result carries the validation report). “Use for new product” opens the create wizard with this pack preselected; provisioning passes @RequestingAccountId into sp_SeedAppFromTemplatePack.Success
56110publish by a non-owner refused.50019seed by a non-owner refused — fail-closed if the account id is omitted.50009a draft cannot seed; the UI disables the action but the server rule is the enforcement.- Publish rolls all members to a pinned pack version.
CLI handoff
Implement this scaffold from the structured contract, then remove hard-coded preview rows. The source of truth is CLI Handoff and admin-cli-manifest.json.
Server-inject identity and scope values; never trust browser-supplied account, app, tenant, user, entitlement, price, or permission identifiers. Preserve the loading, empty, forbidden, failed, retrying, and completed states shown by the preview.