Lifecycle States
Content: Lifecycle States
User Intent
"What do content states mean? When should I use each state?"
Operation
SDK Method:
updateContent()withstateparameterGraphQL Field:
content.state(EntityState enum)Entity Type: Content
Common Use Cases: Content management, soft delete, archival, workflow states
Content States Overview
Content progresses through states during its lifecycle. Understanding states is critical for content management and querying.
TypeScript (Canonical)
import { Graphlit } from 'graphlit-client';
import { EntityState } from 'graphlit-client/dist/generated/graphql-types';
const graphlit = new Graphlit();
// Check content state
const content = await graphlit.getContent('content-id');
console.log(`State: ${content.content.state}`);
// Update content state
await graphlit.updateContent({
id: 'content-id',
state: EntityState.Disabled // Hide from queries
});
// Query only enabled content
const activeContent = await graphlit.queryContents({
filter: {
states: [EntityState.Enabled]
}
});
// Query disabled content (hidden)
const hiddenContent = await graphlit.queryContents({
filter: {
states: [EntityState.Disabled]
}
});
// Query all states (including disabled)
const allContent = await graphlit.queryContents({
filter: {
states: [
EntityState.Enabled,
EntityState.Disabled,
EntityState.Created
]
}
});Entity States
CREATED
When: Immediately after ingestion
Duration: Brief (during workflow processing)
Searchable: No (processing not complete)
Use Case: Content is being prepared/extracted
Example:
ENABLED
When: After successful workflow processing
Searchable: Yes (default state for queries)
Use Case: Active, searchable content
Example:
DISABLED
When: Manually disabled by user
Searchable: No (unless explicitly queried)
Use Case: Soft delete, hide temporarily, compliance hold
Example:
DELETED
When: Permanently deleted via deleteContent()
Searchable: No (content is gone)
Use Case: Permanent removal
Example:
ARCHIVED
When: Manually archived by user
Searchable: No (unless explicitly queried)
Use Case: Long-term retention, compliance, not actively used
Example:
State Transitions
Valid Transitions:
CREATED→ENABLED(automatic after processing)ENABLED→DISABLED(soft delete)DISABLED→ENABLED(restore)ENABLED→ARCHIVED(archive)ARCHIVED→ENABLED(restore from archive)Any →
DELETED(permanent delete)
Check state
content = await graphlit.getContent('content-id') print(f"State: {content.content.state}")
Update state (snake_case)
await graphlit.updateContent( id='content-id', state=EntityState.DISABLED )
Query by state
results = await graphlit.queryContents( filter=ContentFilterInput( states=[EntityState.ENABLED] ) )
Developer Hints
Default Query Behavior
Soft Delete vs Hard Delete
Querying Multiple States
Variations
1. Soft Delete Content
2. Restore Soft-Deleted Content
3. Archive Old Content
4. Query Only Active Content
5. View Disabled Content (Admin View)
6. Bulk State Changes
7. Compliance Archival
Common Issues & Solutions
Issue: Content not appearing in queries Solution: Check if content is disabled or archived
Issue: Accidentally deleted content Solution: Use soft delete (DISABLED) instead
Issue: Archived content still appearing Solution: Default queries only return ENABLED
Issue: Content stuck in CREATED state Solution: Check workflow processing status
Production Example
Last updated
Was this helpful?