use Mojo::JSON qw( true false ); { backend => 'memory://localhost/yancy.data.json', editor => { require_user => undef, }, schema => { blog => { title => 'Blog Posts', required => [qw( title markdown slug )], example => { title => 'Title', markdown => "# Title\n\nMarkdown content", slug => 'title', }, 'x-list-columns' => [ { title => 'Post', template => '{title} ({slug})' }, ], type => 'object', properties => { id => { type => 'integer', readOnly => true, }, title => { 'x-order' => 1, type => 'string', }, markdown => { 'x-order' => 3, type => 'string', format => 'markdown', 'x-html-field' => 'html', }, html => { type => 'string', format => 'html', }, slug => { 'x-order' => 2, type => 'string', description => 'The URL part for this blog post', }, username => { 'x-foreign-key' => 'users', }, }, }, people => { title => 'People', description => 'These are the people we all know', 'x-list-columns' => [ { title => 'Name', template => '{name}', field => 'name' }, 'email', 'contact' ], 'x-view-url' => '/people', 'x-view-item-url' => '/people/{id}', required => [ 'name', 'email' ], example => { name => 'John Doe', email => 'john@example.com', }, type => 'object', properties => { id => { title => 'ID', type => 'integer', readOnly => true, }, name => { title => 'Name', 'x-order' => 1, type => 'string', }, email => { title => 'E-mail', 'x-order' => 2, type => 'string', format => 'email', }, age => { 'x-order' => 5, title => 'Age', type => 'integer', minimum => 0, maximum => 200, }, phone => { title => 'Phone Number', 'x-order' => 4, type => 'string', format => 'tel', }, gender => { 'x-order' => 7, title => 'Preferred Gender', type => 'string', enum => [qw( male female )], }, contact => { title => 'Can Contact?', 'x-order' => 3, type => 'boolean', }, birthday => { title => 'Date of Birth', 'x-order' => 6, type => 'string', format => 'date', }, }, }, users => { title => 'Users', 'x-id-field' => 'username', 'x-list-columns' => [ 'username', 'email' ], required => [ 'username', 'email' ], type => 'object', properties => { username => { type => 'string', }, email => { type => 'string', format => 'email', }, password => { type => 'string', format => 'password', #writeOnly => true, }, created => { type => 'string', format => 'date-time', readOnly => true, }, notes => { type => [ 'string', 'null' ], format => 'textarea', }, plugin => { type => 'string', }, avatar => { type => 'string', format => 'filepath', }, }, }, }, }