		v1.POST("/auth/login", authHandler.Login)
		v1.POST("/provisioning", provHandler.Provision)
		v1.POST("/heartbeat", hbHandler.Ping)

		protected := v1.Group("/")
		protected.Use(auth.AuthMiddleware())
		{
			protected.POST("/auth/register", authHandler.Register)

			protected.GET("/users", usersHandler.List)
			protected.POST("/users", usersHandler.Create)
			protected.DELETE("/users/:id", usersHandler.Delete)

			protected.GET("/servers", serversHandler.List)
			protected.POST("/servers", serversHandler.Create)
			protected.DELETE("/servers/:id", serversHandler.Delete)

			protected.GET("/devices", devicesHandler.List)
			protected.POST("/devices", devicesHandler.Create)
			protected.GET("/devices/:id", devicesHandler.Get)
			protected.PUT("/devices/:id", devicesHandler.Update)
			protected.DELETE("/devices/:id", devicesHandler.Delete)
			protected.POST("/devices/:id/regenerate-token", devicesHandler.RegenerateToken)

			protected.GET("/devices/:id/rules", rulesHandler.List)
			protected.POST("/devices/:id/rules", rulesHandler.Create)
			protected.DELETE("/rules/:ruleId", rulesHandler.Delete)
		}
