Skip to main content

Entity Definitions

Entities are the core building blocks of your Radish blueprint. Each entity represents a data type in your application.

Basic Entity Structure

entities:
EntityName:
label: Display Name
description: Description of the entity
plural: entities
fields:
# Field definitions
filters: []
indexes: []

Entity Properties

label

Human-readable name for the entity (singular form).

label: Task

description

Brief description of what this entity represents.

description: A todo task that can be assigned to users

plural

Plural form used for collections and endpoints.

plural: tasks

ownership

Determines entity ownership model:

  • user (default) - Entity belongs to a specific user (has ownerId)
  • system - System-level entity, no owner
ownership: system

extends

Inherit fields from another entity or base type.

extends: EntityBase  # or another entity name

Built-in base types:

  • EntityBase - Standard entity with id, ownerId, timestamps
  • SystemEntityBase - System entity with id, timestamps (no owner)
  • ContentBase - Extends EntityBase with title, slug, tags, status, etc.

versioning

Enable version tracking:

  • full - Complete snapshots with revert capability
  • simple - Lightweight audit logs
versioning: simple

Example Entity

entities:
Project:
label: Project
description: Project for organizing tasks
plural: projects
ownership: user
versioning: simple
fields:
name:
type: string
required: true
label: Project Name
description:
type: string
optional: true
status:
type: enum
values: [active, archived, completed]
default: active
memberIds:
type: objectId[]
ref: User
default: []
filters: [status, ownerId]
indexes:
- fields: [ownerId, status]
- fields: [name]
options: { unique: true }

Next Steps