# Routing
In this section we'll quickly cover the Wave routes.
- [Wave Web Routes](#web-routes)
- [Wave API Routes](#api-routes)
- [Wave Middleware](#wave-middleware)
---
### Wave Web Routes
If you take a look inside of `wave/routes/web.php` you will see all the Wave web routes:
```php
name('wave.home');
Route::get('@{username}', '\Wave\Http\Controllers\ProfileController@index')->name('wave.profile');
// Documentation routes
Route::view('docs/{page?}', 'docs::index')->where('page', '(.*)');
// Additional Auth Routes
Route::get('logout', 'Auth\LoginController@logout')->name('logout');
Route::get('user/verify/{verification_code}', 'Auth\RegisterController@verify')->name('verify');
Route::post('register/complete', '\Wave\Http\Controllers\Auth\RegisterController@complete')->name('wave.register-complete');
Route::get('blog', '\Wave\Http\Controllers\BlogController@index')->name('wave.blog');
Route::get('blog/{category}', '\Wave\Http\Controllers\BlogController@category')->name('wave.blog.category');
Route::get('blog/{category}/{post}', '\Wave\Http\Controllers\BlogController@post')->name('wave.blog.post');
Route::view('install', 'wave::install')->name('wave.install');
/***** Pages *****/
Route::get('p/{page}', '\Wave\Http\Controllers\PageController@page');
/***** Pricing Page *****/
Route::view('pricing', 'theme::pricing')->name('wave.pricing');
/***** Billing Routes *****/
Route::post('/billing/webhook', '\Wave\Http\Controllers\WebhookController@handleWebhook');
Route::post('paddle/webhook', '\Wave\Http\Controllers\SubscriptionController@hook');
Route::post('checkout', '\Wave\Http\Controllers\SubscriptionController@checkout')->name('checkout');
Route::get('test', '\Wave\Http\Controllers\SubscriptionController@test');
Route::group(['middleware' => 'wave'], function () {
Route::get('dashboard', '\Wave\Http\Controllers\DashboardController@index')->name('wave.dashboard');
});
Route::group(['middleware' => 'auth'], function(){
Route::get('settings/{section?}', '\Wave\Http\Controllers\SettingsController@index')->name('wave.settings');
Route::post('settings/profile', '\Wave\Http\Controllers\SettingsController@profilePut')->name('wave.settings.profile.put');
Route::put('settings/security', '\Wave\Http\Controllers\SettingsController@securityPut')->name('wave.settings.security.put');
Route::post('settings/api', '\Wave\Http\Controllers\SettingsController@apiPost')->name('wave.settings.api.post');
Route::put('settings/api/{id?}', '\Wave\Http\Controllers\SettingsController@apiPut')->name('wave.settings.api.put');
Route::delete('settings/api/{id?}', '\Wave\Http\Controllers\SettingsController@apiDelete')->name('wave.settings.api.delete');
Route::get('settings/invoices/{invoice}', '\Wave\Http\Controllers\SettingsController@invoice')->name('wave.invoice');
Route::get('notifications', '\Wave\Http\Controllers\NotificationController@index')->name('wave.notifications');
Route::get('announcements', '\Wave\Http\Controllers\AnnouncementController@index')->name('wave.announcements');
Route::get('announcement/{id}', '\Wave\Http\Controllers\AnnouncementController@announcement')->name('wave.announcement');
Route::post('announcements/read', '\Wave\Http\Controllers\AnnouncementController@read')->name('wave.announcements.read');
Route::get('notifications', '\Wave\Http\Controllers\NotificationController@index')->name('wave.notifications');
Route::post('notification/read/{id}', '\Wave\Http\Controllers\NotificationController@delete')->name('wave.notification.read');
/********** Checkout/Billing Routes ***********/
Route::post('cancel', '\Wave\Http\Controllers\SubscriptionController@cancel')->name('wave.cancel');
Route::view('checkout/welcome', 'theme::welcome');
Route::post('subscribe', '\Wave\Http\Controllers\SubscriptionController@subscribe')->name('wave.subscribe');
Route::view('trial_over', 'theme::trial_over')->name('wave.trial_over');
Route::view('cancelled', 'theme::cancelled')->name('wave.cancelled');
Route::post('switch-plans', '\Wave\Http\Controllers\SubscriptionController@switchPlans')->name('wave.switch-plans');
});
Route::group(['middleware' => 'admin.user'], function(){
Route::view('admin/do', 'wave::do');
});
```
Next, if you take a look inside of your `routes/web.php`, you will see the following line:
```php
// Include Wave Routes
Wave::routes();
```
This line includes all the Wave routes into your application.
### Wave API Routes
The Wave API routes are located at `wave/routes/api.php`. The contents of the file are as follows:
```php
Route::post('login', '\Wave\Http\Controllers\API\AuthController@login');
Route::post('register', '\Wave\Http\Controllers\API\AuthController@register');
Route::post('logout', '\Wave\Http\Controllers\API\AuthController@logout');
Route::post('refresh', '\Wave\Http\Controllers\API\AuthController@refresh');
Route::post('token', '\Wave\Http\Controllers\API\AuthController@token');
// BROWSE
Route::get('/{datatype}', '\Wave\Http\Controllers\API\ApiController@browse');
// READ
Route::get('/{datatype}/{id}', '\Wave\Http\Controllers\API\ApiController@read');
// EDIT
Route::put('/{datatype}/{id}', '\Wave\Http\Controllers\API\ApiController@edit');
// ADD
Route::post('/{datatype}', '\Wave\Http\Controllers\API\ApiController@add');
// DELETE
Route::delete('/{datatype}/{id}', '\Wave\Http\Controllers\API\ApiController@delete');
```
Then, if you take a look inside of your `routes/api.php`, you will see the following line:
```php
// Include Wave Routes
Wave::api();
```
This line includes all the Wave API routes into your application API.
### Wave Middleware
Inside of the Wave routes.php file you will see the following line:
```php
Route::group(['middleware' => 'wave'], function () {
Route::get('dashboard', '\Wave\Http\Controllers\DashboardController@index')->name('wave.dashboard');
});
```
This is the only current route protected by the `wave` middleware. The `wave` middleware is used to protect routes against users who no longer have an active subscription or are no longer on a trial. You can include your application routes inside of this middleware:
```php
Route::group(['middleware' => 'wave'], function () {
// Add your application routes here.
});
```
You may also wish to include this middleware in a single route:
```php
Route::get('awesome', 'AwesomeController@index')->middleware('wave');
```
And now your application routes will be protected from users who are no longer active paying users.