REST Endpoints

Every table gets full CRUD automatically:

GET    /p/{id}/api/{table}              # List (with filters)
GET    /p/{id}/api/{table}/{row_id}     # Get one
POST   /p/{id}/api/{table}              # Create
PATCH  /p/{id}/api/{table}/{row_id}     # Update
DELETE /p/{id}/api/{table}/{row_id}     # Delete
POST   /p/{id}/api/{table}/bulk         # Bulk create (array body)

Response format

// List response
{
  "data": [ { "id": "...", "title": "...", ... } ],
  "meta": { "total": 42, "limit": 20, "offset": 0 }
}

// Single item
{ "data": { "id": "...", "title": "...", ... } }

// Error
{ "error": { "code": "...", "message": "...", "suggestion": "..." } }

Bulk insert

Send an array of objects. Atomic — all succeed or all fail:

POST /p/{id}/api/tasks/bulk
[
  { "title": "Task 1", "done": false },
  { "title": "Task 2", "done": true }
]