TypeScript · 1321 bytes Raw Blame History
1 import type { FastifyInstance } from 'fastify';
2 import { filesRoutes } from './files.js';
3 import { statusRoutes } from './status.js';
4 import { authRoutes } from './auth.js';
5 import { webdavRoutes } from './webdav.js';
6
7 export async function registerRoutes(fastify: FastifyInstance) {
8 // Register all route modules
9 await fastify.register(authRoutes);
10 await fastify.register(filesRoutes);
11 await fastify.register(statusRoutes);
12 await fastify.register(webdavRoutes);
13
14 // API info endpoint
15 fastify.get('/', async () => {
16 return {
17 name: 'ZephyrFS Web API',
18 version: '0.1.0',
19 description: 'Web interface backend for ZephyrFS distributed storage',
20 endpoints: {
21 auth: [
22 'POST /auth/login',
23 'POST /auth/refresh',
24 'POST /auth/logout',
25 ],
26 files: [
27 'GET /files',
28 'POST /files/upload',
29 'GET /files/:fileId/download',
30 'GET /files/:fileId/info',
31 'DELETE /files/:fileId',
32 ],
33 status: [
34 'GET /health',
35 'GET /status/network',
36 'GET /status/node',
37 'GET /status/ws (WebSocket)',
38 ],
39 webdav: [
40 'GET /webdav',
41 'ALL /webdav/* (WebDAV protocol)',
42 ],
43 },
44 documentation: '/docs',
45 };
46 });
47 }