I’ve done a few templates that essentially are on one page. I used this code as the starting block for all of them:
<?php
$my_wp_query = new WP_Query();
$all_wp_pages = $my_wp_query->query(array('post_type' => 'page','posts_per_page' => -1));
foreach ($all_wp_pages as $value){
$post = get_page($value);
$slug = $post->post_name;
$title = $post->post_title;
$content = apply_filters('the_content', $post->post_content);
};
?>
It basically gets every page, you can then use the variables to build the rendered markup.
Then a small change to meet you’re depth requirement I would use:
$all_wp_pages = $my_wp_query->query(array('post_type' => 'page','depth' => 1, 'posts_per_page' => -1));
And finally 'posts_per_page' => -1
gets everypage, not limited to the number set in ‘Admin > Settings > Reading’
Hope this helps.