Skip to main content
Version: Latest

API Reference

Every endpoint below is hosted inside Shumoul.Api (BackEnd) via AddApplicationPart, under the v1/MultiTenancy Swagger group — see SaaS Admin Authorization. Every admin action requires a permission ([MustHavePermission]); Preview/Apply requests additionally run through TenantAccessGuardBehavior (ITenantScopedRequest). Internal apply-bridge endpoints (api/internal/...) are [AllowAnonymous] + a manual X-Shumoul-Internal-Key header check instead — never reachable without the matching internal key, never listed in Swagger.

Business Activities — api/Saas/BusinessActivities

RouteVerbPermissionNotes
GetGET.ViewAll
GetActiveGET[AllowAnonymous]Only public endpoint in this whole guide (onboarding survey UI)
GetDetails/{id}GET.View
GetByCode/{code}GET.View
CreatePOST.Create
Update/{id}PUT.Edit
Delete/{id}DELETE.Delete
Active/{id}POST.Activate
Inactive/{id}POST.Deactivate

Accounting Chart Templates — api/Saas/AccountingChartTemplates

RouteVerbPermissionTenant DB touched on Apply
Get / GetActive / GetByBusinessActivity/{code}GET.ViewAll
{id}/DetailGET.View
Create / CopyPOST.Create
Update/{id}PUT.Edit
Delete/{id}DELETE.Delete
Active/{id} / Inactive/{id}POST.Activate / .Deactivate
Accounts/*, Mappings/*POST/PUT/DELETE.Edit
Import/Preview, ImportPOST.Import— (SaaS catalog only)
Import/Excel/Preview, Import/Excel, Import/Excel/TemplatePOST/GET.Import
{id}/ApplyToTenantAccounts/PreviewPOST.Applynone (Preview)
{id}/ApplyToTenantAccountsPOST.Applydbo.Accounts
{id}/ApplyMappingsToTenant/PreviewPOST.ApplyMappingsnone (Preview)
{id}/ApplyMappingsToTenantPOST.ApplyMappingsdbo.InventoryAccountCategory (fill only)

Internal: api/internal/accounting-chart-templates/apply-accounts, api/internal/accounting-chart-templates/apply-mappings.

Inventory Account Category Templates — api/Saas/InventoryAccountCategoryTemplates

RouteVerbPermissionTenant DB touched on Apply
Get / GetActive / GetByBusinessActivity/{code}GET.ViewAll
{id}/DetailGET.View
Create / CopyPOST.Create
Update/{id}PUT.Edit
Delete/{id}DELETE.Delete
Active/{id} / Inactive/{id}POST.Activate / .Deactivate
Accounts/*POST/PUT/DELETE.Edit
{id}/ApplyToTenant/PreviewPOST.Applynone (Preview)
{id}/ApplyToTenantPOST.Applydbo.InventoryAccountCategory (create-or-update, one row)

Internal: api/internal/inventory-account-category-templates/apply.

Cost Center Templates — api/Saas/CostCenterTemplates

RouteVerbPermissionTenant DB touched on Apply
Get / GetActive / GetByBusinessActivity/{code}GET.ViewAll
{id}/DetailGET.View
Create / CopyPOST.Create
Update/{id}PUT.Edit
Delete/{id}DELETE.Delete
Active/{id} / Inactive/{id}POST.Activate / .Deactivate
Items/*POST/PUT/DELETE.Edit
{id}/ApplyToTenant/PreviewPOST.Applynone (Preview)
{id}/ApplyToTenantPOST.Applydbo.CostCenters (insert-missing)

Internal: api/internal/cost-center-templates/apply.

Tenant Starter Kit — api/Saas/TenantStarterKits

RouteVerbPermissionTenant DB touched
PreviewPOSTTenancyPermissions.TenantStarterKits.Previewnone (delegates to each included step's own Preview)
ApplyPOSTTenancyPermissions.TenantStarterKits.Applywhatever each included step's own Apply touches
Tenants/{tenantId}/DefaultPlanGETTenancyPermissions.TenantStarterKits.Viewnone (Preview wrapper)

Product Catalog Prerequisite Templates — api/Saas/ProductCatalogPrerequisiteTemplates

RouteVerbPermissionTenant DB touched on Apply
Get / GetActive / GetByBusinessActivity/{code} / GetDefaultByBusinessActivity/{code}GET.ViewAll
{id}/DetailGET.View
Create / CopyPOST.Create
Update/{id}PUT.Edit
Delete/{id}DELETE.Delete
Active/{id} / Inactive/{id}POST.Activate / .Deactivate
BusinessTypes/*, Departments/*, Units/*POST/PUT/DELETE.Edit
{id}/ApplyToTenant/PreviewPOST.Applynone (Preview)
{id}/ApplyToTenantPOST.Applydbo.BusinessTypes, dbo.ProductDepartments, dbo.UnitOfMeasures

Internal: api/internal/product-catalog-prerequisite-templates/apply.

Product Catalog Templates — api/Saas/ProductCatalogTemplates

RouteVerbPermissionTenant DB touched on Apply
Get / GetActive / GetByBusinessActivity/{code} / GetDefaultByBusinessActivity/{code}GET.ViewAll
{id}/DetailGET.View
Create / CopyPOST.Create
Update/{id}PUT.Edit
Delete/{id}DELETE.Delete
Active/{id} / Inactive/{id}POST.Activate / .Deactivate
Categories/*POST/PUT/DELETE.Edit
Items/*, ItemUnits/*POST/PUT/DELETE.Edit
{id}/ApplyToTenant/Preview / {id}/ApplyToTenantPOST.Applydbo.ProductCategories
{id}/ApplyItemsToTenant/Preview / {id}/ApplyItemsToTenantPOST.Applydbo.Products, dbo.ProductUnits

Internal: api/internal/product-catalog-templates/apply, api/internal/product-catalog-item-templates/apply.

Internal-only endpoints (no Swagger listing, internal key required)

RoutePurpose
api/internal/accounting-chart-templates/apply-accountsAccounting accounts apply
api/internal/accounting-chart-templates/apply-mappingsAccounting mappings apply
api/internal/inventory-account-category-templates/applyInventory account category apply
api/internal/cost-center-templates/applyCost center apply
api/internal/product-catalog-prerequisite-templates/applyProduct catalog prerequisites apply
api/internal/product-catalog-templates/applyProduct catalog categories apply
api/internal/product-catalog-item-templates/applyProduct catalog items/units apply
api/internal/tenants/{tenantId}/provision-entitlementsManual tenant entitlement re-provisioning (separate internal key, see Settings Groups and Entitlements)