// Example Masonry DSL definition // This demonstrates the comprehensive language structure // Server configuration server MyApp host "localhost" port 8080 // Entity definitions with various field types and relationships entity User desc "User account management" id: uuid required unique email: string required validate email validate min_length "5" name: string default "Anonymous" created_at: timestamp default "now()" profile_id: uuid relates to Profile as one via "user_id" entity Profile desc "User profile information" id: uuid required unique user_id: uuid required relates to User as one bio: text validate max_length "500" avatar_url: string validate url updated_at: timestamp posts: uuid relates to Post as many entity Post desc "Blog posts" id: uuid required unique title: string required validate min_length "1" validate max_length "200" content: text required author_id: uuid required relates to User as one published: boolean default "false" created_at: timestamp default "now()" tags: uuid relates to Tag as many through "post_tags" entity Tag desc "Content tags" id: uuid required unique name: string required unique validate min_length "1" validate max_length "50" slug: string required unique indexed created_at: timestamp default "now()" // API Endpoints with different HTTP methods and parameter sources endpoint GET "/users" for User desc "List users" auth param page: int from query param limit: int required from query returns list as "json" fields [id, email, name] endpoint POST "/users" for User desc "Create user" param user_data: object required from body returns object as "json" fields [id, email, name] endpoint PUT "/users/{id}" for User desc "Update user" param id: uuid required from path param user_data: object required from body returns object custom "update_user_logic" endpoint DELETE "/users/{id}" for User desc "Delete user" auth param id: uuid required from path returns object endpoint GET "/posts" for Post desc "List posts" param author_id: uuid from query param published: boolean from query param page: int from query returns list as "json" fields [id, title, author_id, published] endpoint POST "/posts" for Post desc "Create post" auth param post_data: object required from body returns object fields [id, title, content, author_id] // Frontend pages with components page UserManagement at "/admin/users" layout AdminLayout title "User Management" auth meta description "Manage system users" meta keywords "users, admin, management" component Table for User fields [email, name, id] actions [edit via "/users/{id}", delete via "/users/{id}", create via "/users"] data from "/users" style modern classes ["table-striped", "table-hover"] pagination size 20 filters [email as text label "Search email", name as text label "Search name"] validate component Form for User fields [email, name] actions [save via "/users", cancel] style clean validate page UserList at "/users" layout MainLayout title "Users" meta description "Browse all users" component Table for User fields [email, name] data from "/users" pagination size 10 filters [name as text label "Search by name"] page PostManagement at "/admin/posts" layout AdminLayout title "Post Management" auth meta description "Manage blog posts" meta keywords "posts, blog, content" component Table for Post fields [title, author_id, published, created_at] actions [edit via "/posts/{id}", delete via "/posts/{id}", create via "/posts"] data from "/posts" style modern pagination size 15 filters [title as text label "Search title", published as select label "Published status"] validate page CreatePost at "/posts/new" layout MainLayout title "Create Post" auth component Form for Post fields [title, content] actions [save via "/posts", cancel] style clean validate page BlogList at "/blog" layout PublicLayout title "Blog Posts" meta description "Read our latest blog posts" meta keywords "blog, articles, content" component Table for Post fields [title, created_at] data from "/posts" pagination size 5 filters [title as text label "Search posts"]