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)
// List response { "data": [ { "id": "...", "title": "...", ... } ], "meta": { "total": 42, "limit": 20, "offset": 0 } } // Single item { "data": { "id": "...", "title": "...", ... } } // Error { "error": { "code": "...", "message": "...", "suggestion": "..." } }
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 }
]