/// Defines the REST API module api; import vibe.web.rest; interface ForumAPI { @safe: // base path /threads/ Collection!ThreadAPI threads(); } interface ThreadAPI { @safe: // define the index parameters used to identify the collection items struct CollectionIndices { string _thread_name; } // base path /threads/:thread_number/posts/ Collection!PostAPI posts(string _thread_name); // POST /threads/ // Posts a new thread void post(string name, string message); // GET /threads/ // Returns a list of all thread names string[] get(); } interface PostAPI { @safe: // define the index parameters used to identify the collection items struct CollectionIndices { string _thread_name; int _post_index; } // POST /threads/:thread_number/posts/ // Posts a new thread reply void post(string _thread_name, string message); // GET /threads/:thread_name/ // Returns the number of posts in a thread int getLength(string _thread_name); // GET /threads/:thread_number/posts/:post_id // Returns a specific message string getMessage(string _thread_name, int _post_index); // GET /threads/:thread_number/posts/ // Returns all messages of a particular thread string[] get(string _thread_name); }