Pages API
Complete API reference for managing pages in BlockForge.
Overview
Pages are the core content unit in BlockForge. Each page contains:
- Title and metadata
- Content (TipTap JSON format)
- Workspace association
- Collections and tags
List Pages
Get all pages in a workspace:
javascript
const { data, error } = await supabase
.from('pages')
.select('*')
.eq('workspace_id', workspaceId)
.order('updated_at', { ascending: false })Filter Pages
javascript
// By collection
const { data } = await supabase
.from('pages')
.select('*')
.eq('workspace_id', workspaceId)
.contains('collections', [collectionId])
// By tag
const { data } = await supabase
.from('pages')
.select('*')
.eq('workspace_id', workspaceId)
.contains('tags', ['tag-name'])Search Pages
javascript
const { data } = await supabase
.from('pages')
.select('*')
.eq('workspace_id', workspaceId)
.textSearch('title', 'search query')Get Page
Get a single page by ID:
javascript
const { data, error } = await supabase
.from('pages')
.select('*')
.eq('id', pageId)
.single()Create Page
Create a new page:
javascript
const { data, error } = await supabase
.from('pages')
.insert([
{
title: 'New Page',
workspace_id: workspaceId,
content: {
type: 'doc',
content: [
{
type: 'paragraph',
content: [{ type: 'text', text: 'Hello, BlockForge!' }]
}
]
}
}
])
.select()Update Page
Update page content or metadata:
javascript
const { data, error } = await supabase
.from('pages')
.update({
title: 'Updated Title',
content: newContent
})
.eq('id', pageId)Update Content Only
javascript
const { data, error } = await supabase
.from('pages')
.update({
content: newContent,
updated_at: new Date().toISOString()
})
.eq('id', pageId)Delete Page
Delete a page:
javascript
const { error } = await supabase
.from('pages')
.delete()
.eq('id', pageId)Page Schema
typescript
interface Page {
id: string
title: string
workspace_id: string
content: {
type: 'doc'
content: Block[]
}
collections?: string[]
tags?: string[]
created_at: string
updated_at: string
created_by: string
}Realtime Updates
Subscribe to page changes:
javascript
const subscription = supabase
.channel('pages-changes')
.on('postgres_changes',
{
event: '*',
schema: 'public',
table: 'pages',
filter: `workspace_id=eq.${workspaceId}`
},
(payload) => {
console.log('Page change:', payload)
}
)
.subscribe()Error Handling
javascript
const { data, error } = await supabase.from('pages').select('*')
if (error) {
if (error.code === 'PGRST116') {
console.log('No pages found')
} else {
console.error('Error:', error.message)
}
return
}
// Use data