public PetStoreModuleBase(IPetStoreService petStoreService) : base("/v2")
        {
            Post("/pet", async(parameters, token) =>
            {
                ConfigureAddPetRequestRoute();

                return(await this.EvaluateAndBind <AddPetRequest>(async(request) => await petStoreService.AddPet(request), HttpStatusCode.Created));
            });


            Put("/pet", async(parameters, token) =>
            {
                ConfigureUpdatePetRequestRoute();

                return(await this.EvaluateAndBind <UpdatePetRequest>(async(request) => await petStoreService.UpdatePet(request), HttpStatusCode.OK));
            });


            Get("/pet/findByStatus", async(parameters, token) =>
            {
                ConfigureFindPetsByStatusRequestRoute();

                return(await this.EvaluateAndBind <FindPetsByStatusRequest>(async(request) => await petStoreService.FindPetsByStatus(request), HttpStatusCode.OK));
            });


            Get("/pet/findByTags", async(parameters, token) =>
            {
                ConfigureFindPetsByTagsRequestRoute();

                return(await this.EvaluateAndBind <FindPetsByTagsRequest>(async(request) => await petStoreService.FindPetsByTags(request), HttpStatusCode.OK));
            });


            Get("/pet/{petId}", async(parameters, token) =>
            {
                ConfigureGetPetByIdRequestRoute();

                return(await this.EvaluateAndBind <GetPetByIdRequest>(async(request) => await petStoreService.GetPetById(request), HttpStatusCode.OK));
            });


            Post("/pet/{petId}", async(parameters, token) =>
            {
                ConfigureUpdatePetWithFormRequestRoute();

                return(await this.EvaluateAndBind <UpdatePetWithFormRequest>(async(request) => await petStoreService.UpdatePetWithForm(request), HttpStatusCode.OK));
            });


            Delete("/pet/{petId}", async(parameters, token) =>
            {
                ConfigureDeletePetRequestRoute();

                return(await this.EvaluateAndBind <DeletePetRequest>(async(request) => await petStoreService.DeletePet(request), HttpStatusCode.OK));
            });


            Post("/pet/{petId}/uploadImage", async(parameters, token) =>
            {
                ConfigureUploadFileRequestRoute();

                return(await this.EvaluateAndBind <UploadFileRequest>(async(request) => await petStoreService.UploadFile(request), HttpStatusCode.OK));
            });


            Get("/store/inventory", async(parameters, token) =>
            {
                ConfigureGetInventoryRequestRoute();

                return(await this.EvaluateAndBind <GetInventoryRequest>(async(request) => await petStoreService.GetInventory(request), HttpStatusCode.OK));
            });


            Post("/store/order", async(parameters, token) =>
            {
                ConfigurePlaceOrderRequestRoute();

                return(await this.EvaluateAndBind <PlaceOrderRequest>(async(request) => await petStoreService.PlaceOrder(request), HttpStatusCode.OK));
            });


            Get("/store/order/{orderId}", async(parameters, token) =>
            {
                ConfigureGetOrderByIdRequestRoute();

                return(await this.EvaluateAndBind <GetOrderByIdRequest>(async(request) => await petStoreService.GetOrderById(request), HttpStatusCode.OK));
            });


            Delete("/store/order/{orderId}", async(parameters, token) =>
            {
                ConfigureDeleteOrderRequestRoute();

                return(await this.EvaluateAndBind <DeleteOrderRequest>(async(request) => await petStoreService.DeleteOrder(request), HttpStatusCode.OK));
            });


            Post("/user", async(parameters, token) =>
            {
                ConfigureCreateUserRequestRoute();

                return(await this.EvaluateAndBind <CreateUserRequest>(async(request) => await petStoreService.CreateUser(request), HttpStatusCode.OK));
            });


            Post("/user/createWithArray", async(parameters, token) =>
            {
                ConfigureCreateUsersWithArrayInputRequestRoute();

                return(await this.EvaluateAndBind <CreateUsersWithArrayInputRequest>(async(request) => await petStoreService.CreateUsersWithArrayInput(request), HttpStatusCode.OK));
            });


            Post("/user/createWithList", async(parameters, token) =>
            {
                ConfigureCreateUsersWithListInputRequestRoute();

                return(await this.EvaluateAndBind <CreateUsersWithListInputRequest>(async(request) => await petStoreService.CreateUsersWithListInput(request), HttpStatusCode.OK));
            });


            Get("/user/login", async(parameters, token) =>
            {
                ConfigureLoginUserRequestRoute();

                return(await this.EvaluateAndBind <LoginUserRequest>(async(request) => await petStoreService.LoginUser(request), HttpStatusCode.OK));
            });


            Get("/user/logout", async(parameters, token) =>
            {
                ConfigureLogoutUserRequestRoute();

                return(await this.EvaluateAndBind <LogoutUserRequest>(async(request) => await petStoreService.LogoutUser(request), HttpStatusCode.OK));
            });


            Get("/user/{username}", async(parameters, token) =>
            {
                ConfigureGetUserByNameRequestRoute();

                return(await this.EvaluateAndBind <GetUserByNameRequest>(async(request) => await petStoreService.GetUserByName(request), HttpStatusCode.OK));
            });


            Put("/user/{username}", async(parameters, token) =>
            {
                ConfigureUpdateUserRequestRoute();

                return(await this.EvaluateAndBind <UpdateUserRequest>(async(request) => await petStoreService.UpdateUser(request), HttpStatusCode.OK));
            });


            Delete("/user/{username}", async(parameters, token) =>
            {
                ConfigureDeleteUserRequestRoute();

                return(await this.EvaluateAndBind <DeleteUserRequest>(async(request) => await petStoreService.DeleteUser(request), HttpStatusCode.OK));
            });
        }