import { FastifyInstance } from "fastify"; import { $org } from "./organization.schema"; import { createOrgHandler, deleteOrgHandler, getOrgHandler, getUniqueFieldValuesOrg, listOrgsHandler, searchOrgHandler, updateOrgHandler, } from "./organization.controller"; import { hideFields } from "../auth"; export default function organizationRoutes(fastify: FastifyInstance) { fastify.post( "/", { schema: { body: $org("createOrgInput"), }, config: { requiredClaims: ["org:write"] }, preHandler: [fastify.authorize], }, createOrgHandler ); fastify.get( "/:orgId", { schema: { params: { type: "object", properties: { orgId: { type: "string" }, }, }, }, config: { requiredClaims: ["org:read"] }, preHandler: [fastify.authorize], }, getOrgHandler ); fastify.get( "/", { schema: { querystring: $org("pageQueryParams"), }, config: { requiredClaims: ["org:read"] }, preHandler: [fastify.authorize], }, listOrgsHandler ); fastify.patch( "/:orgId", { schema: { params: { type: "object", properties: { orgId: { type: "string" } } }, body: $org("updateOrgInput"), }, config: { requiredClaims: ["org:write"] }, preHandler: [fastify.authorize], }, updateOrgHandler ); fastify.delete( "/:orgId", { schema: { params: { type: "object", properties: { orgId: { type: "string" } } }, }, config: { requiredClaims: ["org:delete"] }, preHandler: [fastify.authorize], }, deleteOrgHandler ); fastify.get( "/search", { schema: { querystring: $org("pageQueryParams"), }, config: { requiredClaims: ["org:read"] }, preHandler: [fastify.authorize], }, searchOrgHandler ); fastify.get( "/fields/:field", { schema: { params: { type: "object", properties: { field: { type: "string" } }, }, }, config: { requiredClaims: ["org:read"] }, preHandler: [fastify.authorize], }, getUniqueFieldValuesOrg ); fastify.addHook("onSend", hideFields("orgs")); }