4 * Routes for the BookStack API.
5 * Routes have a uri prefix of /api/.
6 * Controllers all end with "ApiController"
9 use BookStack\Api\ApiDocsController;
10 use BookStack\Entities\Controllers as EntityControllers;
11 use BookStack\Permissions\ContentPermissionApiController;
12 use BookStack\Search\SearchApiController;
13 use BookStack\Uploads\Controllers\AttachmentApiController;
14 use BookStack\Uploads\Controllers\ImageGalleryApiController;
15 use BookStack\Users\Controllers\RoleApiController;
16 use BookStack\Users\Controllers\UserApiController;
17 use Illuminate\Support\Facades\Route;
19 Route::get('docs.json', [ApiDocsController::class, 'json']);
21 Route::get('attachments', [AttachmentApiController::class, 'list']);
22 Route::post('attachments', [AttachmentApiController::class, 'create']);
23 Route::get('attachments/{id}', [AttachmentApiController::class, 'read']);
24 Route::put('attachments/{id}', [AttachmentApiController::class, 'update']);
25 Route::delete('attachments/{id}', [AttachmentApiController::class, 'delete']);
27 Route::get('books', [EntityControllers\BookApiController::class, 'list']);
28 Route::post('books', [EntityControllers\BookApiController::class, 'create']);
29 Route::get('books/{id}', [EntityControllers\BookApiController::class, 'read']);
30 Route::put('books/{id}', [EntityControllers\BookApiController::class, 'update']);
31 Route::delete('books/{id}', [EntityControllers\BookApiController::class, 'delete']);
33 Route::get('books/{id}/export/html', [EntityControllers\BookExportApiController::class, 'exportHtml']);
34 Route::get('books/{id}/export/pdf', [EntityControllers\BookExportApiController::class, 'exportPdf']);
35 Route::get('books/{id}/export/plaintext', [EntityControllers\BookExportApiController::class, 'exportPlainText']);
36 Route::get('books/{id}/export/markdown', [EntityControllers\BookExportApiController::class, 'exportMarkdown']);
38 Route::get('chapters', [EntityControllers\ChapterApiController::class, 'list']);
39 Route::post('chapters', [EntityControllers\ChapterApiController::class, 'create']);
40 Route::get('chapters/{id}', [EntityControllers\ChapterApiController::class, 'read']);
41 Route::put('chapters/{id}', [EntityControllers\ChapterApiController::class, 'update']);
42 Route::delete('chapters/{id}', [EntityControllers\ChapterApiController::class, 'delete']);
44 Route::get('chapters/{id}/export/html', [EntityControllers\ChapterExportApiController::class, 'exportHtml']);
45 Route::get('chapters/{id}/export/pdf', [EntityControllers\ChapterExportApiController::class, 'exportPdf']);
46 Route::get('chapters/{id}/export/plaintext', [EntityControllers\ChapterExportApiController::class, 'exportPlainText']);
47 Route::get('chapters/{id}/export/markdown', [EntityControllers\ChapterExportApiController::class, 'exportMarkdown']);
49 Route::get('pages', [EntityControllers\PageApiController::class, 'list']);
50 Route::post('pages', [EntityControllers\PageApiController::class, 'create']);
51 Route::get('pages/{id}', [EntityControllers\PageApiController::class, 'read']);
52 Route::put('pages/{id}', [EntityControllers\PageApiController::class, 'update']);
53 Route::delete('pages/{id}', [EntityControllers\PageApiController::class, 'delete']);
55 Route::get('pages/{id}/export/html', [EntityControllers\PageExportApiController::class, 'exportHtml']);
56 Route::get('pages/{id}/export/pdf', [EntityControllers\PageExportApiController::class, 'exportPdf']);
57 Route::get('pages/{id}/export/plaintext', [EntityControllers\PageExportApiController::class, 'exportPlainText']);
58 Route::get('pages/{id}/export/markdown', [EntityControllers\PageExportApiController::class, 'exportMarkdown']);
60 Route::get('image-gallery', [ImageGalleryApiController::class, 'list']);
61 Route::post('image-gallery', [ImageGalleryApiController::class, 'create']);
62 Route::get('image-gallery/{id}', [ImageGalleryApiController::class, 'read']);
63 Route::put('image-gallery/{id}', [ImageGalleryApiController::class, 'update']);
64 Route::delete('image-gallery/{id}', [ImageGalleryApiController::class, 'delete']);
66 Route::get('search', [SearchApiController::class, 'all']);
68 Route::get('shelves', [EntityControllers\BookshelfApiController::class, 'list']);
69 Route::post('shelves', [EntityControllers\BookshelfApiController::class, 'create']);
70 Route::get('shelves/{id}', [EntityControllers\BookshelfApiController::class, 'read']);
71 Route::put('shelves/{id}', [EntityControllers\BookshelfApiController::class, 'update']);
72 Route::delete('shelves/{id}', [EntityControllers\BookshelfApiController::class, 'delete']);
74 Route::get('users', [UserApiController::class, 'list']);
75 Route::post('users', [UserApiController::class, 'create']);
76 Route::get('users/{id}', [UserApiController::class, 'read']);
77 Route::put('users/{id}', [UserApiController::class, 'update']);
78 Route::delete('users/{id}', [UserApiController::class, 'delete']);
80 Route::get('roles', [RoleApiController::class, 'list']);
81 Route::post('roles', [RoleApiController::class, 'create']);
82 Route::get('roles/{id}', [RoleApiController::class, 'read']);
83 Route::put('roles/{id}', [RoleApiController::class, 'update']);
84 Route::delete('roles/{id}', [RoleApiController::class, 'delete']);
86 Route::get('recycle-bin', [EntityControllers\RecycleBinApiController::class, 'list']);
87 Route::put('recycle-bin/{deletionId}', [EntityControllers\RecycleBinApiController::class, 'restore']);
88 Route::delete('recycle-bin/{deletionId}', [EntityControllers\RecycleBinApiController::class, 'destroy']);
90 Route::get('content-permissions/{contentType}/{contentId}', [ContentPermissionApiController::class, 'read']);
91 Route::put('content-permissions/{contentType}/{contentId}', [ContentPermissionApiController::class, 'update']);