Reference > API > CMS > Model
Model
CMS model builders, factories, use cases and event handlers
- What use cases are available in
webiny/api/cms/model? - Which event handlers can you implement?
- How to use the builder and factory APIs?
- How to import and use each exported item?
Overview
This page documents everything exported from webiny/api/cms/model. Import any of the items below directly from this path in your Webiny extensions.
Use Cases
CreateModelFromUseCase
Use Case Abstraction — imported from webiny/api/cms/model
Interface CreateModelFromUseCase.Interface:
Types:
Usage:
CreateModelUseCase
Use Case Abstraction — imported from webiny/api/cms/model
Interface CreateModelUseCase.Interface:
Types:
Usage:
DeleteModelUseCase
Use Case Abstraction — imported from webiny/api/cms/model
Interface DeleteModelUseCase.Interface:
Types:
Usage:
GetModelUseCase
Use Case Abstraction — imported from webiny/api/cms/model
Interface GetModelUseCase.Interface:
Types:
Usage:
ListModelsUseCase
Use Case Abstraction — imported from webiny/api/cms/model
Interface ListModelsUseCase.Interface:
Types:
Usage:
UpdateModelUseCase
Use Case Abstraction — imported from webiny/api/cms/model
Interface UpdateModelUseCase.Interface:
Types:
Usage:
Event Handlers
ModelAfterCreateEventHandler
Event Handler Abstraction — imported from webiny/api/cms/model
Interface ModelAfterCreateEventHandler.Interface:
Event payload ModelAfterCreateEventPayload:
Types:
Usage:
ModelAfterCreateFromEventHandler
Event Handler Abstraction — imported from webiny/api/cms/model
Interface ModelAfterCreateFromEventHandler.Interface:
Event payload ModelAfterCreateFromEventPayload:
Types:
Usage:
ModelAfterDeleteEventHandler
Event Handler Abstraction — imported from webiny/api/cms/model
Interface ModelAfterDeleteEventHandler.Interface:
Event payload ModelAfterDeleteEventPayload:
Types:
Usage:
ModelAfterUpdateEventHandler
Event Handler Abstraction — imported from webiny/api/cms/model
Interface ModelAfterUpdateEventHandler.Interface:
Event payload ModelAfterUpdateEventPayload:
Types:
Usage:
ModelBeforeCreateEventHandler
Event Handler Abstraction — imported from webiny/api/cms/model
Interface ModelBeforeCreateEventHandler.Interface:
Event payload ModelBeforeCreateEventPayload:
Types:
Usage:
ModelBeforeCreateFromEventHandler
Event Handler Abstraction — imported from webiny/api/cms/model
Interface ModelBeforeCreateFromEventHandler.Interface:
Event payload ModelBeforeCreateFromEventPayload:
Types:
Usage:
ModelBeforeDeleteEventHandler
Event Handler Abstraction — imported from webiny/api/cms/model
Interface ModelBeforeDeleteEventHandler.Interface:
Event payload ModelBeforeDeleteEventPayload:
Types:
Usage:
ModelBeforeUpdateEventHandler
Event Handler Abstraction — imported from webiny/api/cms/model
Interface ModelBeforeUpdateEventHandler.Interface:
Event payload ModelBeforeUpdateEventPayload:
Types:
Usage:
Services
FieldType
Abstraction — imported from webiny/api/cms/model
Interface FieldType.Interface:
Usage:
ModelFactory
Abstraction — imported from webiny/api/cms/model
Interface ModelFactory.Interface:
Types:
Usage:
Types & Classes
CmsModel
Type — imported from webiny/api/cms/model
Base CMS Model. Should not be exported and used outside of this package.
@category Database model @category CmsModel
CmsModelField
Type — imported from webiny/api/cms/model
A definition for content model field. This type exists on the app side as well.
@category ModelField @category Database model
FieldBuilder
Class — imported from webiny/api/cms/model
DataFieldBuilder class for data fields that produce CmsModelField instances. Provides storageId, list, validation, renderer, and other data-field methods.
FieldRendererRegistry
Type — imported from webiny/api/cms/model
Augmentable renderer registry. Each entry maps a renderer name to its applicable field type(s) and settings.
Example: declare module “@webiny/api-headless-cms/features/modelBuilder/fields/FieldBuilder” { interface FieldRendererRegistry { “my-renderer”: { fieldType: “text” | “long-text”; settings: { color: string } }; } }
LayoutBuilder
Class — imported from webiny/api/cms/model
LayoutBuilder provides a fluent API for modifying field layouts. Supports adding fields to existing rows and inserting new rows at specific positions. Callbacks can be queued and executed lazily for efficient composition.
ModelBuilder
Class — imported from webiny/api/cms/model
Entry point builder that allows selecting model type. Call .private() or .public() to get the appropriate typed builder.