Update Project
PUT /api/projects/{project_id}
Update an existing project.
Updates project properties in ChromaDB through ProjectManager including name, description, project type, color, icon, active agents, and collaborators. All fields in the request are optional to support partial updates.
The updated project maintains its intelligence data and analytics while applying the requested changes to configuration and metadata.
Args: project_id: Unique project identifier to update request: ProjectUpdateRequest with fields to update (all optional) - name: Updated project name - description: Updated description - project_type: Updated project type - color: Updated UI color - icon: Updated icon identifier - active_agents: Updated agent assignments - collaborators: Updated collaborator list
Returns: ProjectItem: Updated project with full structure including: - Updated metadata fields - Preserved intelligence data - Current analytics metrics - Updated modifiedAt timestamp
Raises: HTTPException: 404 if project not found HTTPException: 500 if update operation fails
Example Request:
json { "name": "My Novel - Updated", "color": "#FF8C42", "activeAgents": ["HAWKEN", "LAGAN", "ORCHESTRATOR"] }
Example Response:
json { "id": "proj_abc123", "name": "My Novel - Updated", "color": "#FF8C42", "modifiedAt": "2025-01-31T16:30:00Z", "intelligence": { "assignedAgents": ["HAWKEN", "LAGAN", "ORCHESTRATOR"] } }
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Request Body required
Section titled “Request Body required ”Request to update an existing project.
Provides request structure for updating project properties including name, description, project type, color, and icon. All fields are optional to allow partial updates. Used by project management endpoints to modify project configuration.
Fields:
name: Updated project name (optional)description: Updated project description (optional)project_type: Updated project type (optional)color: Updated project color (optional, hex color string)icon: Updated project icon identifier (optional)
Usage: PUT /api/projects/{project_id} accepts this request model to update project properties with partial updates.
JSON Example:
{
"name": "My Novel - Updated",
"color": "#FF8C42",
"icon": "sword_updated"
}object
Per-project Lorekeeper configuration.
Defines project-specific rules for lore consistency validation including prohibited elements, naming conventions, and cultural context. Read by the lore validator at analysis time via ProjectConfig.lore_rules.
Fields:
prohibited_elements: Elements that should not appear in this project’s writingnaming_patterns: Descriptions of naming conventions (e.g. “Yoruba-inspired”)cultural_context: Description of the project’s cultural/thematic settingstrict_naming: Whether to enforce naming convention checks
object
Prohibited story elements
Naming convention descriptions
Cultural/thematic setting
Enforce naming conventions
Per-project publishing readiness weight configuration.
All fields are optional. Absent fields fall back to the system defaults. Weights are normalised to sum to 1.0 at calculation time.
Responses
Section titled “ Responses ”Successful Response
Complete project details with intelligence and analytics.
Comprehensive project data structure including basic metadata, settings, intelligence data, and analytics metrics. Represents a complete project entity for API responses.
Fields:
id: Unique project identifier (string)name: Project name (string)description: Project description (string)type: Project type (string, e.g., “fiction”, “general”)status: Project status (string, e.g., “active”, “archived”)created_at: Creation timestamp ISO 8601 (string)modified_at: Last modification timestamp ISO 8601 (string)owner: Project owner user ID (string)collaborators: List of collaborator user IDs (list[str])settings: Project configuration settings (ProjectSettings object)intelligence: Project intelligence data (ProjectIntelligence object)analytics: Project analytics metrics (ProjectAnalytics object)
JSON Example:
{
"id": "proj_abc123",
"name": "My Novel",
"description": "Main writing project",
"type": "fiction",
"status": "active",
"createdAt": "2025-01-15T10:00:00Z",
"modifiedAt": "2025-01-31T15:30:00Z",
"owner": "user_001",
"collaborators": ["user_002", "user_003"],
"settings": { ... },
"intelligence": { ... },
"analytics": { ... }
}object
Unique project identifier
Project name
Project description
Project type
Project status
Creation timestamp (ISO 8601)
Last modification timestamp (ISO 8601)
Project owner user ID
Collaborator user IDs
Project settings
object
Project visibility level
Enable automatic saving
Enable context preservation
Enable AI assistance
Enable notifications
Integration settings
object
Enable MIME integration
Enable research hub integration
Enable analytics integration
Per-project Lorekeeper configuration.
Defines project-specific rules for lore consistency validation including prohibited elements, naming conventions, and cultural context. Read by the lore validator at analysis time via ProjectConfig.lore_rules.
Fields:
prohibited_elements: Elements that should not appear in this project’s writingnaming_patterns: Descriptions of naming conventions (e.g. “Yoruba-inspired”)cultural_context: Description of the project’s cultural/thematic settingstrict_naming: Whether to enforce naming convention checks
object
Prohibited story elements
Naming convention descriptions
Cultural/thematic setting
Enforce naming conventions
Per-project publishing readiness weight configuration.
All fields are optional. Absent fields fall back to the system defaults. Weights are normalised to sum to 1.0 at calculation time.
Per-project document save directory. Empty = use global default.
Divine agents assigned to this project
Per-project AI personality/tone prompt
Lore category names scoping per-project lore search
Genre overlay drivers for the Authored Library (M9). Empty list means universal voicing only. Values must be one of the 12 SUPPORTED_GENRES the authored-library layer recognises.
Per-project LLM tuning knobs stored inside ProjectSettings.
Declared as a typed Pydantic sub-model (rather than a raw dict) so
IshvanaBaseModel’s alias generator emits camelCase over the wire —
without that, the frontend sees max_tokens / search_results_count
while its mapper expects maxTokens / searchResultsCount.
Per-agent base system prompt overrides keyed by lowercase agent id (e.g. ‘lagan’). Empty dict / missing key means the agent uses its hardcoded default identity text.
object
Project intelligence
object
Assigned divine agents
Project context data
object
AI learning patterns
object
User behavior patterns
object
Content preferences
object
Workflow optimization patterns
object
Knowledge base metrics
object
Number of documents
Number of connections
AI-generated insights
Project analytics
object
Total time spent in minutes
Number of active days
Completion percentage
Collaborator activity scores
object
Agent interactions count
Productivity score
Analytics trends
object
Daily trend data
Weekly trend data
Monthly trend data
Whether TTRPG mechanics system is enabled
Validation Error