feat(v2): full spec implementation — root SSH, bootstrap sentinel, HMAC webhook, all parametric routes fixed #1
@@ -54,7 +54,7 @@ server.path("/", (path) => path
|
|||||||
|
|
||||||
// Webhook
|
// Webhook
|
||||||
server.path("/", (path) => path
|
server.path("/", (path) => path
|
||||||
.http("POST", "/webhook/:userId", (http) => http.onRequest(webhookHandler))
|
.http("POST", "/webhook/{userId}", (http) => http.onRequest(webhookHandler))
|
||||||
);
|
);
|
||||||
|
|
||||||
// User settings
|
// User settings
|
||||||
@@ -73,15 +73,15 @@ server.path("/", (path) => path
|
|||||||
.http("GET", "/api/repos", (http) => http.onRequest(listRepos))
|
.http("GET", "/api/repos", (http) => http.onRequest(listRepos))
|
||||||
.http("POST", "/api/repos/config", (http) => http.onRequest(saveRepoConfig))
|
.http("POST", "/api/repos/config", (http) => http.onRequest(saveRepoConfig))
|
||||||
.http("POST", "/api/repos/toggle", (http) => http.onRequest(toggleRepoEnabled))
|
.http("POST", "/api/repos/toggle", (http) => http.onRequest(toggleRepoEnabled))
|
||||||
.http("GET", "/api/repos/:owner/:repo/config", (http) => http.onRequest(getRepoConfig))
|
.http("GET", "/api/repos/{owner}/{repo}/config", (http) => http.onRequest(getRepoConfig))
|
||||||
);
|
);
|
||||||
|
|
||||||
// Previews
|
// Previews
|
||||||
server.path("/", (path) => path
|
server.path("/", (path) => path
|
||||||
.http("GET", "/api/previews", (http) => http.onRequest(listPreviews))
|
.http("GET", "/api/previews", (http) => http.onRequest(listPreviews))
|
||||||
.http("GET", "/api/previews/:id", (http) => http.onRequest(getPreview))
|
.http("GET", "/api/previews/{id}", (http) => http.onRequest(getPreview))
|
||||||
.http("POST", "/api/previews/:id/stop", (http) => http.onRequest(stopPreviewRoute))
|
.http("POST", "/api/previews/{id}/stop", (http) => http.onRequest(stopPreviewRoute))
|
||||||
.ws("/api/previews/:id/logs", (ws) => ws
|
.ws("/api/previews/{id}/logs", (ws) => ws
|
||||||
.onOpen(previewLogsWs)
|
.onOpen(previewLogsWs)
|
||||||
.onMessage(async () => {})
|
.onMessage(async () => {})
|
||||||
.onClose(async () => {})
|
.onClose(async () => {})
|
||||||
@@ -92,12 +92,12 @@ server.path("/", (path) => path
|
|||||||
server.path("/", (path) => path
|
server.path("/", (path) => path
|
||||||
.http("GET", "/api/admin/users", (http) => http.onRequest(listUsers))
|
.http("GET", "/api/admin/users", (http) => http.onRequest(listUsers))
|
||||||
.http("POST", "/api/admin/users", (http) => http.onRequest(createUser))
|
.http("POST", "/api/admin/users", (http) => http.onRequest(createUser))
|
||||||
.http("PATCH", "/api/admin/users/:id", (http) => http.onRequest(updateUser))
|
.http("PATCH", "/api/admin/users/{id}", (http) => http.onRequest(updateUser))
|
||||||
.http("DELETE", "/api/admin/users/:id", (http) => http.onRequest(deleteUser))
|
.http("DELETE", "/api/admin/users/{id}", (http) => http.onRequest(deleteUser))
|
||||||
.http("GET", "/api/admin/settings", (http) => http.onRequest(getSettings))
|
.http("GET", "/api/admin/settings", (http) => http.onRequest(getSettings))
|
||||||
.http("PUT", "/api/admin/settings", (http) => http.onRequest(updateSettings))
|
.http("PUT", "/api/admin/settings", (http) => http.onRequest(updateSettings))
|
||||||
.http("GET", "/api/admin/previews", (http) => http.onRequest(adminListPreviews))
|
.http("GET", "/api/admin/previews", (http) => http.onRequest(adminListPreviews))
|
||||||
.http("POST", "/api/admin/previews/:id/stop", (http) => http.onRequest(adminStopPreview))
|
.http("POST", "/api/admin/previews/{id}/stop", (http) => http.onRequest(adminStopPreview))
|
||||||
);
|
);
|
||||||
|
|
||||||
// Static UI — must come AFTER API routes
|
// Static UI — must come AFTER API routes
|
||||||
|
|||||||
Reference in New Issue
Block a user