// Path: demo-service-interface/src/main/java/app/demo/api/customer/CreateCustomerRequest.java
// public class CreateCustomerRequest {
//     @NotNull
//     @NotBlank
//     @Property(name = "email")
//     public String email;
// 
//     @NotNull
//     @NotBlank
//     @Property(name = "first_name")
//     public String firstName;
// 
//     @NotBlank
//     @Property(name = "last_name")
//     public String lastName;
// }
// 
// Path: demo-service-interface/src/main/java/app/demo/api/customer/CustomerView.java
// public class CustomerView {
//     @NotNull
//     @Property(name = "id")
//     public Long id;
// 
//     @NotNull
//     @NotBlank
//     @Property(name = "email")
//     public String email;
// 
//     @NotNull
//     @NotBlank
//     @Property(name = "first_name")
//     public String firstName;
// 
//     @NotBlank
//     @Property(name = "last_name")
//     public String lastName;
// 
//     @NotNull
//     @Property(name = "updated_time")
//     public LocalDateTime updatedTime;
// }
// 
// Path: demo-service-interface/src/main/java/app/demo/api/customer/SearchCustomerRequest.java
// public class SearchCustomerRequest {
//     @NotNull
//     @QueryParam(name = "skip")
//     public Integer skip = 0;
// 
//     @NotNull
//     @QueryParam(name = "limit")
//     public Integer limit = 1000;
// 
//     @QueryParam(name = "email")
//     public String email;
// 
//     @QueryParam(name = "first_name")
//     public String firstName;
// 
//     @QueryParam(name = "last_name")
//     public String lastName;
// }
// 
// Path: demo-service-interface/src/main/java/app/demo/api/customer/SearchCustomerResponse.java
// public class SearchCustomerResponse {
//     @Property(name = "total")
//     public Long total;
// 
//     @Property(name = "customers")
//     public List<CustomerView> customers;
// }
// 
// Path: demo-service-interface/src/main/java/app/demo/api/customer/UpdateCustomerRequest.java
// public class UpdateCustomerRequest {
//     @NotNull
//     @NotBlank
//     @Property(name = "first_name")
//     public String firstName;
// 
//     @NotBlank
//     @Property(name = "last_name")
//     public String lastName;
// }


import app.demo.api.customer.CreateCustomerRequest;
import app.demo.api.customer.CustomerView;
import app.demo.api.customer.SearchCustomerRequest;
import app.demo.api.customer.SearchCustomerResponse;
import app.demo.api.customer.UpdateCustomerRequest;
import core.framework.api.http.HTTPStatus;
import core.framework.api.web.service.GET;
import core.framework.api.web.service.POST;
import core.framework.api.web.service.PUT;
import core.framework.api.web.service.Path;
import core.framework.api.web.service.PathParam;
import core.framework.api.web.service.ResponseStatus;
package app.demo.api;


public interface CustomerWebService {
    @GET
    @Path("/customer/:id")
// Path: demo-service-interface/src/main/java/app/demo/api/customer/CreateCustomerRequest.java
// public class CreateCustomerRequest {
//     @NotNull
//     @NotBlank
//     @Property(name = "email")
//     public String email;
// 
//     @NotNull
//     @NotBlank
//     @Property(name = "first_name")
//     public String firstName;
// 
//     @NotBlank
//     @Property(name = "last_name")
//     public String lastName;
// }
// 
// Path: demo-service-interface/src/main/java/app/demo/api/customer/CustomerView.java
// public class CustomerView {
//     @NotNull
//     @Property(name = "id")
//     public Long id;
// 
//     @NotNull
//     @NotBlank
//     @Property(name = "email")
//     public String email;
// 
//     @NotNull
//     @NotBlank
//     @Property(name = "first_name")
//     public String firstName;
// 
//     @NotBlank
//     @Property(name = "last_name")
//     public String lastName;
// 
//     @NotNull
//     @Property(name = "updated_time")
//     public LocalDateTime updatedTime;
// }
// 
// Path: demo-service-interface/src/main/java/app/demo/api/customer/SearchCustomerRequest.java
// public class SearchCustomerRequest {
//     @NotNull
//     @QueryParam(name = "skip")
//     public Integer skip = 0;
// 
//     @NotNull
//     @QueryParam(name = "limit")
//     public Integer limit = 1000;
// 
//     @QueryParam(name = "email")
//     public String email;
// 
//     @QueryParam(name = "first_name")
//     public String firstName;
// 
//     @QueryParam(name = "last_name")
//     public String lastName;
// }
// 
// Path: demo-service-interface/src/main/java/app/demo/api/customer/SearchCustomerResponse.java
// public class SearchCustomerResponse {
//     @Property(name = "total")
//     public Long total;
// 
//     @Property(name = "customers")
//     public List<CustomerView> customers;
// }
// 
// Path: demo-service-interface/src/main/java/app/demo/api/customer/UpdateCustomerRequest.java
// public class UpdateCustomerRequest {
//     @NotNull
//     @NotBlank
//     @Property(name = "first_name")
//     public String firstName;
// 
//     @NotBlank
//     @Property(name = "last_name")
//     public String lastName;
// }


// Path: demo-service-interface/src/main/java/app/demo/api/CustomerWebService.java
import app.demo.api.customer.CreateCustomerRequest;
import app.demo.api.customer.CustomerView;
import app.demo.api.customer.SearchCustomerRequest;
import app.demo.api.customer.SearchCustomerResponse;
import app.demo.api.customer.UpdateCustomerRequest;
import core.framework.api.http.HTTPStatus;
import core.framework.api.web.service.GET;
import core.framework.api.web.service.POST;
import core.framework.api.web.service.PUT;
import core.framework.api.web.service.Path;
import core.framework.api.web.service.PathParam;
import core.framework.api.web.service.ResponseStatus;

package app.demo.api;


public interface CustomerWebService {
    @GET
    @Path("/customer/:id")
    CustomerView get(@PathParam("id") Long id);