Element Types and Properties
Every element in a StoryCAD outline is a StoryElement subclass identified by its StoryItemType. This page documents all 11 types, their properties, and the rules for creating and linking them.
Base Properties (All Elements)
Every StoryElement has these properties (inherited from the base class):
| Property | Type | JSON Key | Description |
|---|---|---|---|
Uuid |
Guid |
GUID |
Unique identifier |
Name |
string |
Name |
Display name |
Description |
string |
ElementDescription |
Main text content |
ElementType |
StoryItemType |
Type |
Discriminator (read-only via API) |
Use the Name and Description property names with UpdateElementProperty.
StoryItemType Enum
public enum StoryItemType
{
StoryOverview, // Singleton: story metadata
Problem, // Story problem / conflict
Character, // Character profile
Setting, // Location / environment
Scene, // A scene in the story
Folder, // Explorer View organizer
Section, // Narrator View organizer (chapter, act)
Web, // Web bookmark
Notes, // Notes element (uses base properties only)
TrashCan, // Singleton: deleted elements container
StoryWorld, // Singleton (optional): worldbuilding
Unknown // Sentinel: not a usable element type
}
# The StoryItemType enum is exposed as sc.item_type (C#-type concept):
sc.item_type.StoryOverview # Singleton: story metadata
sc.item_type.Problem # Story problem / conflict
sc.item_type.Character # Character profile
sc.item_type.Setting # Location / environment
sc.item_type.Scene # A scene in the story
sc.item_type.Folder # Explorer View organizer
sc.item_type.Section # Narrator View organizer (chapter, act)
sc.item_type.Web # Web bookmark
sc.item_type.Notes # Notes element (uses base properties only)
sc.item_type.TrashCan # Singleton: deleted elements container
sc.item_type.StoryWorld # Singleton (optional): worldbuilding
Creatable via AddElement: Problem, Character, Setting, Scene, Folder, Section, Web, Notes
Not creatable via AddElement: StoryOverview, TrashCan (auto-created), StoryWorld (auto-created)
Element Type Reference
StoryOverview (OverviewModel)
The story’s root element. One per outline, always the first node in ExplorerView.
| Property | Type | Value Source | Description |
|---|---|---|---|
DateCreated |
string |
Free text | Creation date |
Author |
string |
Free text | Author name |
DateModified |
string |
Free text | Last modified date |
Concept |
string |
Free text | Story concept / idea |
StoryProblem |
Guid |
GUID ref → Problem | The main story problem |
Premise |
string |
Free text | Story premise (synced with StoryProblem) |
StoryType |
string |
Free text | Type of story |
StoryGenre |
string |
Free text | Genre |
Viewpoint |
string |
Free text | Narrative viewpoint |
ViewpointCharacter |
Guid |
GUID ref → Character | First-person POV character |
Voice |
string |
Free text | Narrative voice |
LiteraryDevice |
string |
Free text | Literary devices used |
Tense |
string |
Free text | Past/present tense |
Style |
string |
Free text | Writing style |
Tone |
string |
GetExamples("Tone") |
Story tone |
StructureNotes |
string |
Free text | Notes on structure |
Notes |
string |
Free text | General notes |
Problem (ProblemModel)
A story conflict with protagonist, antagonist, and optional beat sheet structure.
| Property | Type | Value Source | Description |
|---|---|---|---|
ProblemType |
string |
Free text | Type of problem |
ConflictType |
string |
Free text | Conflict classification |
ProblemCategory |
string |
Free text | Category |
Subject |
string |
Free text | What the problem is about |
ProblemSource |
string |
Free text | Source of the problem |
Protagonist |
Guid |
GUID ref → Character | The protagonist |
ProtGoal |
string |
Free text | Protagonist’s goal |
ProtMotive |
string |
Free text | Protagonist’s motivation |
ProtConflict |
string |
Free text / Conflict Builder | Protagonist’s conflict |
Antagonist |
Guid |
GUID ref → Character | The antagonist |
AntagGoal |
string |
Free text | Antagonist’s goal |
AntagMotive |
string |
Free text | Antagonist’s motivation |
AntagConflict |
string |
Free text / Conflict Builder | Antagonist’s conflict |
Outcome |
string |
Free text | How the problem resolves |
Method |
string |
Free text | Method of resolution |
Theme |
string |
Free text | Thematic statement |
Premise |
string |
Free text | Problem premise |
Notes |
string |
Free text | General notes |
StructureTitle |
string |
Beat sheet name | Applied beat sheet template |
StructureDescription |
string |
Beat sheet description | Description of structure |
StructureBeats |
Collection | Beat Sheet API | Beat definitions (managed via beat sheet methods) |
Note:
StructureBeatsis managed through the Beat Sheet API, not throughUpdateElementProperty.
Character (CharacterModel)
A character profile with physical, social, psychological, and trait data.
Role Data:
| Property | Type | Value Source |
|---|---|---|
Role |
string |
GetExamples("Role") |
StoryRole |
string |
Free text |
Archetype |
string |
GetExamples("Archetype") |
Physical Data:
| Property | Type | Value Source |
|---|---|---|
Age |
string |
GetExamples("Age") |
Sex |
string |
GetExamples("Sex") |
Eyes |
string |
GetExamples("EyeColor") |
Hair |
string |
GetExamples("HairColor") |
Weight |
string |
Free text |
CharHeight |
string |
Free text |
Build |
string |
GetExamples("Build") |
Complexion |
string |
GetExamples("Complexion") |
Race |
string |
Free text |
Nationality |
string |
Free text |
Health |
string |
Free text |
PhysNotes |
string |
Free text |
Appearance |
string |
Free text |
Social Data:
| Property | Type | Value Source |
|---|---|---|
Economic |
string |
Free text |
Education |
string |
Free text |
Ethnic |
string |
Free text |
Religion |
string |
Free text |
Psychological Data:
| Property | Type | Value Source |
|---|---|---|
Enneagram |
string |
GetExamples("Enneagram") |
Intelligence |
string |
GetExamples("Intelligence") |
Values |
string |
GetExamples("Values") |
Abnormality |
string |
GetExamples("Abnormality") |
Focus |
string |
GetExamples("Focus") |
PsychNotes |
string |
Free text |
Personality Traits (all use GetExamples with matching property name):
| Property | Type |
|---|---|
Adventureousness |
string |
Aggression |
string |
Confidence |
string |
Conscientiousness |
string |
Creativity |
string |
Dominance |
string |
Enthusiasm |
string |
Assurance |
string |
Sensitivity |
string |
Shrewdness |
string |
Sociability |
string |
Stability |
string |
Other:
| Property | Type | Description |
|---|---|---|
TraitList |
List<string> |
Character traits (list) |
Flaw |
string |
Character flaw |
BackStory |
string |
Character backstory |
Notes |
string |
General notes |
RelationshipList |
List<RelationshipModel> |
Managed via AddRelationship |
Note: Use
AddRelationshipandAddCastMemberinstead ofUpdateElementPropertyfor relationship and cast member fields.
Scene (SceneModel)
A scene with conflict structure, cast, setting, and development data.
Core Data:
| Property | Type | Value Source | Description |
|---|---|---|---|
ViewpointCharacter |
Guid |
GUID ref → Character | POV character |
Date |
string |
Free text | When the scene occurs |
Time |
string |
Free text | Time of day |
Setting |
Guid |
GUID ref → Setting | Where the scene occurs |
SceneType |
string |
GetExamples("SceneType") |
Type of scene |
CastMembers |
List<Guid> |
GUID refs → Characters | Use AddCastMember |
Conflict Data:
| Property | Type | Value Source |
|---|---|---|
Protagonist |
Guid |
GUID ref → Character |
ProtagEmotion |
string |
Free text |
ProtagGoal |
string |
Free text |
Antagonist |
Guid |
GUID ref → Character |
AntagEmotion |
string |
Free text |
AntagGoal |
string |
Free text |
Opposition |
string |
Free text |
Outcome |
string |
Free text |
Development Data (Story Genius method):
| Property | Type | Value Source |
|---|---|---|
ScenePurpose |
List<string> |
GetExamples("ScenePurpose") |
ValueExchange |
string |
GetExamples("SceneValueExchange") |
Events |
string |
Free text |
Consequences |
string |
Free text |
Significance |
string |
Free text |
Realization |
string |
Free text |
Emotion |
string |
Free text |
NewGoal |
string |
Free text |
Review |
string |
Free text |
Notes |
string |
Free text |
Setting (SettingModel)
A location with sensory and environmental details.
| Property | Type | Value Source |
|---|---|---|
Locale |
string |
GetExamples("Locale") |
Season |
string |
GetExamples("Season") |
Period |
string |
Free text |
Lighting |
string |
Free text |
Weather |
string |
Free text |
Temperature |
string |
Free text |
Props |
string |
Free text |
Sights |
string |
Free text |
Sounds |
string |
Free text |
Touch |
string |
Free text |
SmellTaste |
string |
Free text |
Notes |
string |
Free text |
StoryWorld (StoryWorldModel)
Optional singleton for worldbuilding. Access via GetStoryWorld().
World Type Classification:
| Property | Type | Description |
|---|---|---|
WorldType |
string |
High-level classification (8 types) |
Ontology |
string |
What exists (Mundane, Supernatural, etc.) |
WorldRelation |
string |
Relation to our reality |
RuleTransparency |
string |
How rules behave |
ScaleOfDifference |
string |
How different from reality |
AgencySource |
string |
What drives change |
ToneLogic |
string |
Emotional/logical feel |
World Lists (each is a list of structured entries):
| Property | Entry Type |
|---|---|
PhysicalWorlds |
PhysicalWorldEntry |
Species |
SpeciesEntry |
Cultures |
CultureEntry |
Governments |
GovernmentEntry |
Religions |
ReligionEntry |
History: FoundingEvents, MajorConflicts, Eras, TechnologicalShifts, LostKnowledge
Economy: EconomicSystem, Currency, TradeRoutes, Professions, WealthDistribution
Magic/Technology: SystemType, Source, Rules, Limitations, Cost, Practitioners, SocialImpact
Folder (FolderModel)
A container for organizing elements in the Explorer View. Uses only the base Name and Description properties.
Section (FolderModel)
A container for organizing the Narrator View (chapters, acts, parts). Same model class as Folder but with StoryItemType.Section.
Web (WebModel)
A web bookmark.
| Property | Type | Description |
|---|---|---|
Timestamp |
DateTime |
When the bookmark was created |
URL |
Uri |
The bookmarked URL |
Notes
Uses the base StoryElement class directly. Only Name and Description properties.
TrashCan (TrashCanModel)
Singleton container for soft-deleted elements. No additional properties beyond the base class. Always named “Deleted Story Elements”.
Containment Rules
| Parent | Allowed Children |
|---|---|
| StoryOverview | Problem, Character, Setting, Scene, Folder, Web, Notes, StoryWorld |
| Folder | Problem, Character, Setting, Scene, Folder, Web, Notes |
| Section | Section, Scene |
| TrashCan | Any deleted element |
Key constraints:
- Don’t add Folders to the Narrator View; use Sections instead
- Don’t add Sections to the Explorer View; use Folders instead
- Don’t add elements directly to the TrashCan; use
DeleteElement - Don’t add elements to the Narrator View unless explicitly needed; default to the Overview
Property Value Types
Properties fall into three categories:
Plain Strings
Free text, pass any string value:
api.UpdateElementProperty(guid, "ProtGoal", "Find the treasure");
sc.update_element_property(problem, "ProtGoal", "Find the treasure")
GUID References
Link to another element, pass the target element’s GUID as a string:
api.UpdateElementProperty(problemGuid, "Protagonist", characterGuid.ToString());
sc.update_element_property(problem, "Protagonist", str(character))
The API auto-converts the string to a Guid. Use Guid.Empty (all zeros) to clear a reference.
Enum-Sourced Values
Use GetExamples to discover valid values:
var roles = api.GetExamples("Role").Payload;
// Returns: ["Protagonist", "Antagonist", "Confidant", ...]
api.UpdateElementProperty(charGuid, "Role", "Protagonist");
roles = sc.get_examples("Role")
# Returns: ["Protagonist", "Antagonist", "Confidant", ...]
sc.update_element_property(character, "Role", "Protagonist")
You can also pass free text for these properties. The examples are suggestions, not constraints.