41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { createRoute } from "../../../modules/api-utils/createRoute";
|
|
import { unifiSites } from "../../../managers/unifiSites";
|
|
import { apiResponse } from "../../../modules/api-utils/apiResponse";
|
|
import { ContentfulStatusCode } from "hono/utils/http-status";
|
|
import { authMiddleware } from "../../middleware/authorization";
|
|
import { z } from "zod";
|
|
|
|
/* POST /v1/unifi/site/:id/speed-profiles */
|
|
export default createRoute(
|
|
"post",
|
|
["/site/:id/speed-profiles"],
|
|
async (c) => {
|
|
const site = await unifiSites.fetch(c.req.param("id"));
|
|
|
|
const body = await c.req.json();
|
|
const schema = z
|
|
.object({
|
|
name: z.string(),
|
|
downloadLimitKbps: z.number().optional(),
|
|
uploadLimitKbps: z.number().optional(),
|
|
})
|
|
.strict();
|
|
|
|
const parsed = schema.parse(body);
|
|
const profile = await unifiSites.createUserGroup(site.siteId, parsed);
|
|
|
|
const response = apiResponse.created(
|
|
"UniFi Speed Profile Created Successfully!",
|
|
profile,
|
|
);
|
|
return c.json(response, response.status as ContentfulStatusCode);
|
|
},
|
|
authMiddleware({
|
|
permissions: [
|
|
"unifi.access",
|
|
"unifi.site.speed-profiles",
|
|
"unifi.site.speed-profiles.create",
|
|
],
|
|
}),
|
|
);
|