24
Forms Engine

Categories and Publication Lifecycle

Category semantics, revision transitions, and publishability rules.

Categories

  • category key is UUID
  • category slug is stable and generated or maintained
  • categories can be is_system
  • form category assignment accepts UUID key or slug

Forbidden category names

Use formforge.categories.forbidden_names to block reserved category names in management operations. Name matching is normalized before validation: comparison is case-insensitive and ignores leading/trailing spaces. The rule is enforced on both category creation and category update.

'categories' => [
    'forbidden_names' => ['Internal', 'System'],
],

If a forbidden name is sent to POST /api/formforge/v1/categories or PATCH /api/formforge/v1/categories/{categoryKey}, the API returns 422 Unprocessable Entity. Validation includes an error on category.

Revision lifecycle

  • create creates revision 1
  • patch creates a new draft revision
  • publish creates a new published revision
  • unpublish creates a new draft revision
  • delete soft-deletes revisions

Publishability

A form can be published only when:

  • title is non-empty
  • at least one page exists
  • at least one field exists