====== Swagger Codegen (WMC >= 3.1) ===== Swagger Codegen can simplify your build process by generating server stubs and client SDKs for any API, defined with the OpenAPI (formerly known as Swagger) specification, so your team can focus better on your API’s implementation and adoption. Interesting link: \\ [[https://swagger.io/tools/swagger-codegen/|Swagger Codegen | API Development Tools | Swagger]] \\ \\ \\ ===== Goal ===== The current page explains how to generate a REST java client in order to use Kerlink GMS API methods to create a customer, a fleet, a gatewway, a cluser and an end-device and get information about them. \\ \\ ===== Requirements ===== Building the API client library requires: - **JDK 1.7+** (JDK 12 is the best choice) - **Maven/Gradle** (version 3.3.9-3 is available in the official Ubuntu 16.04 repository) - **Eclipse Java EE IDE** for Web Developers (Version: 2019-06 (4.12.0) for instance) For Eclipse, you can find it here: [[https://www.eclipse.org/downloads//|Enabling Open Innovation & Collaboration | The Eclipse Foundation]] \\ \\ ===== Download the GMS API JSON file ===== From the WMC 3.1 dashboard, import the GMS API JSON file: \\ {{:wiki3:pushapi.png|}} \\ {{:wiki3:postman_environnement_export_openapi_json.png?800|}} \\ Rename the file ''openapi'' to ''openapi.json'' \\ \\ ===== Download Swagger Codegen CLI tool ===== wget http://central.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.8/swagger-codegen-cli-3.0.8.jar \\ \\ ===== Generating a client ===== Swagger Codegen allows you to generate a client in a wide variety of languages. You may check if your preferred programming language is available by executing java -jar swagger-codegen-cli-3.0.8.jar langs Here is a sample of the results: tda@KLK724-VirtualBox-64:~/Development/Swagger$ java -jar swagger-codegen-cli-3.0.8.jar langs 15:21:40.233 [main] DEBUG io.swagger.codegen.v3.cli.SwaggerCodegen - there are not options for command 'langs' 15:21:40.236 [main] DEBUG io.swagger.codegen.v3.cli.SwaggerCodegen - there are not options for command 'version' Available languages: [aspnetcore, csharp, csharp-dotnet2, dynamic-html, html, html2, java, jaxrs-cxf-client, jaxrs-cxf, inflector, jaxrs-cxf-cdi, jaxrs-spec, jaxrs-jersey, jaxrs-di, jaxrs-resteasy-eap, jaxrs-resteasy, spring, nodejs-server, openapi, openapi-yaml, kotlin-client, kotlin-server, php, python, scala, scala-akka-http-server, swift3, swift4, typescript-angular] \\ \\ ===== Generating client code for Java ===== Here is the command to generate the JAVA client code: java -jar swagger-codegen-cli-3.0.8.jar generate -i openapi.json -l java -o ./java_api_client/ --additional-properties hideGenerationTimestamp=true This command has created the **java_api_client** directory: tda@KLK724-VirtualBox-64:~/Development/Swagger$ ls generating_client.log java_api_client openapi.json swagger-codegen-cli-3.0.8.jar tda@KLK724-VirtualBox-64:~/Development/Swagger/java_api_client$ ls build.gradle build.sbt docs git_push.sh gradle gradle.properties gradlew gradlew.bat pom.xml README.md settings.gradle src You can find the **Client API** under ''./java_api_client/src/main/java/io/swagger/client'': tda@KLK724-VirtualBox-64:~/Development/Swagger/java_api_client/src/main/java/io/swagger/client$ ls api ApiClient.java ApiResponse.java Configuration.java JSON.java Pair.java ProgressResponseBody.java ApiCallback.java ApiException.java auth GzipRequestInterceptor.java model ProgressRequestBody.java StringUtil.java The most useful files are //ApiClient.java// and //ApiResponse.java//. ApiClient is used to build an HTTP Request and ApiResponse to decode an HTTP response. **GMS API** can be found in ''./java_api_client/src/main/java/io/swagger/client/api'': tda@KLK724-VirtualBox-64:~/Development/Swagger/java_api_client/src/main/java/io/swagger/client/api$ ls ActionsApi.java ClustersApi.java DefaultApi.java FleetsApi.java LnsEventsApi.java PasswordApi.java SelectionsApi.java WebServicesApi.java AlgorithmsApi.java CustomersApi.java DocApi.java GatewaysApi.java LoginApi.java PingApi.java SpectrumsApi.java WorkflowApi.java ApplicationSettingsApi.java CustomersSettingsApi.java DtosApi.java GatewayTypesApi.java MulticastDataDownApi.java PushConfigurationsApi.java TasksApi.java AuthenticatedUserApi.java DataDownApi.java EndDevicesApi.java KpisApi.java MulticastGroupsApi.java RncEventsApi.java UsersApi.java CapabilitiesApi.java DataUpApi.java EventsApi.java LicensesApi.java OpenapiApi.java RolesApi.java ValidateUserApi.java \\ \\ All the DTO classes can be found in ''./java_api_client/src/main/java/io/swagger/client/model'': tda@KLK724-VirtualBox-64:/media/VM_share/SWAGGER/java_api_client2/src/main/java/io/swagger/client/model$ ls ActionDto.java EndDevicePositionDto.java LnsCustomersLastEventsCountersDto.java ActionParameterDto.java ErrorDto.java LnsEventDto.java ActivityDto.java FileDto.java LnsGatewayKeyDto.java AlgorithmDto.java FleetCountersDto.java MetaDto.java ApplicationDto.java FleetDto.java MetaFieldDto.java ApplicationSettingDto.java FleetLastEventCounterDto.java ModemStatisticInterferDto.java Body1.java GatewayConfigurationDto.java MulticastDataDownDlParametersDto.java Body2.java GatewayConnectionDto.java MulticastDataDownDto.java Body3.java GatewayControlDto.java MulticastDataDownPathDto.java Body4.java GatewayDto.java MulticastGroupDto.java Body5.java GatewayEventDto.java NumericStatisticDto.java Body6.java GatewayInfoDto.java PaginatedDto.java Body7.java GatewayManagementDto.java ProcessDto.java Body.java GatewayModemDto.java ProgressMonitorDto.java BscDto.java GatewayModemStatisticDto.java PushConfigurationDto.java CapabilitiesDto.java GatewayNumericStatisticsDto.java PushConfigurationHeaderDto.java ClusterCountersDto.java GatewayPositionDto.java PushConfigurationHealthDto.java ClusterDto.java GatewaySnmpLogDto.java RevisionDto.java CommandDto.java GatewaysStatisticDto.java RncCustomerLastEventsCountersDto.java CsvEndDeviceDto.java GatewayStatisticsDto.java RncGatewayEventDto.java CsvGatewayDto.java GatewayTermStatisticsDto.java RncGatewayLastEventDto.java CustomerDto.java GatewayTypeDto.java RoleDto.java CustomerLastEventsCountersDto.java GatewayVersionDto.java SelectionDto.java CustomerSettingDto.java InstanceDto.java SpectrumDto.java CustomersLastEventsCountersDto.java ItemDto.java TaskDto.java DataDownDlParametersDto.java JwtDto.java TaskMessageDto.java DataDownDto.java KpiDto.java TemplateDto.java DataDownStatusDto.java LastEventCounterDto.java UserDto.java DataUpDto.java LastEventDto.java VersionDto.java EndDeviceDto.java LastOperationDto.java WanInterfaceTypeDto.java EndDeviceLastGatewayDto.java LastStatisticDto.java WebServiceDto.java EndDeviceMessageDto.java LicenseDto.java WebServiceParameterDto.java EndDeviceMessageMacCommandDto.java LinkDto.java EndDeviceMessageRadioParameterDto.java LnsCustomerLastEventsCountersDto.java \\ \\ ===== Importing and compiling the client code in ECLIPSE environment ===== \\ ==== Importing the client code in ECLIPSE environment ==== \\ To import the client code in Eclipse environment: * select Import option * select Maven Project * select the browse option * select the swagger-java-client directory (containing the pom.xml file) {{:wiki3:import_maven_project_4.png?300|}} {{:wiki3:import_maven_project_5.png?500|}} {{:wiki3:import_maven_project_2.png?500|}} {{:wiki3:import_maven_project_6.png?300|}} \\ ==== Building/Compiling ==== Read the README.md file located in the ''java_api_client'' directory. {{ :wiki3:readme.txt |README.md}} === Activating compilation errors on raw type === In Eclipse, right click on ''projet -> properties, java compiler -> Errors/warnings > generic types -> use of a raw type''. Choose "error" in the list. {{:wiki3:compiler_raw_type.png?800|}} === Compiling === To compile the client code, select your "swagger-java-client" project, right-click, select "Run As" and then select "Run Configuration": {{:wiki3:compile_maven_swagger_java_client_1.png?600|}} Type the goal of the build process: "compile" and click the ''Run'' button: {{:wiki3:compile_maven_swagger_java_client.png?800|}} The compilation result should be "BUILD SUCCESS": {{:wiki3:compile_maven_swagger_java_client_2.png?900|}} === Fixing compilation errors on raw type === Compilation results are located in ''.\java_api_client\target\surefire-reports'' \\ Select the file you want to see compilation results. \\ \\ ===== Installing the client code library in MAVEN repository ===== To install the client API library to your local Maven repository, simply execute: mvn clean install This can be done like that: {{:wiki3:clean_maven_swagger_java_client.png?500|}} {{:wiki3:install_maven_swagger_java_client.png?500|}} This will build swagger-java-client-1.0.0.jar in the ''/target/'' directory. \\ \\ ===== Executing the client code ===== \\ \\ ==== Creating a test project ==== First, create a new MAVEN project: "test-swagger-java-client".\\ Then define a dependency with the swagger-java-client project. \\ To achieve this, right click on the test-swagger-java-client project and select "Maven" then select "Add dependency": {{:wiki3:project_maven_add_dependency.png?800|}} Add the following information: \\ {{:wiki3:project_maven_add_dependency_2.png?500|}} {{:wiki3:project_maven_add_dependency_3.png|}} \\ \\ ==== Testing the Login API client code ==== \\ Replace the "Hello World" code by your testing code: {{:wiki3:hello_world2.png?800|}} Replaced by : package io.swagger.test_swagger_java_client; import io.swagger.client.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; import io.swagger.client.api.LoginApi; import io.swagger.client.model.JwtDto; import io.swagger.client.model.UserDto; import io.swagger.client.ApiResponse; public class App { public static void main(String[] args) throws ApiException { // Say Hello System.out.println("Hello world"); String baseApiUrl = "https://wmcintegration.wanesy.com/"; int connectTimeout = 60000; // Create an ApiClient per thread ApiClient client = new ApiClient(); client.setBasePath(baseApiUrl); client.setConnectTimeout(connectTimeout); client.setDebugging(true); // Call login method LoginApi loginApi = new LoginApi(client); UserDto body = new UserDto (); body.setLogin("your_login"); body.setPassword("your_password"); System.out.println("Login Post"); JwtDto jwt = loginApi.login(body); client.setApiKey("Bearer " + jwt.getToken()); Configuration.setDefaultApiClient(client); System.out.println("Test Done"); } } Compile this piece of code and execute it like this : {{:wiki3:run_java_client_test_login_ok_2.png?600|}} The result should be: Hello world Login Post --> POST https://wmcintegration.wanesy.com//gms/application/login HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 150 Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"lastName":"","role":"","avatar":"","login":"xxxxx","enabled":false,"firstName":"","password":"xxxxxx","validated":false,"phone":"","email":""} --> END POST (150-byte body) <-- HTTP/1.1 201 (462ms) Server: nginx Date: Fri, 28 Jun 2019 15:35:11 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 230 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1561736111681 OkHttp-Received-Millis: 1561736111812 {"expiredDate":1561772111781,"tokenType":"Bearer","token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MirtyuzeMiLCJleHAiOjE1NjE3NzIxMTF9.vhYdP3xy0Naqdeiq7Cx_kzd8bMMg6r0ig-aryAKYJZ8"} <-- END HTTP (230-byte body) Test Done This token will be used for next GMS API requests like getCustomers, getGateways, getFleets, getClusters, etc... You can find API samples in ''.\java_api_client\docs'' \\ \\ ==== Testing the Customer API client code ==== \\ === Modifying the CustomersAPI === \\ Modify the **CustomersAPi** class located in ''./java_api_client/src/main/java/io/swagger/client/api/CustomerApi.java'' to make it generic: == Modifying the getCustomers API == public PaginatedDto getCustomers(String fields, String page, String pageSize, String search, String sort) throws ApiException { ApiResponse resp = getCustomersWithHttpInfo(fields, page, pageSize, search, sort); return resp.getData(); } becomes public PaginatedDto getCustomers(final String fields, final String page, final String pageSize, final String search, final String sort) throws ApiException { ApiResponse> resp = getCustomersWithHttpInfo(fields, page, pageSize, search, sort); return resp.getData(); } == Modifying getCustomersWithHttpInfo API == public ApiResponse> getCustomersWithHttpInfo(String fields, String page, String pageSize, String search, String sort) throws ApiException { com.squareup.okhttp.Call call = getCustomersValidateBeforeCall(fields, page, pageSize, search, sort, null, null); Type localVarReturnType = new TypeToken(){}.getType(); return apiClient.execute(call, localVarReturnType); } becomes public ApiResponse> getCustomersWithHttpInfo(final String fields, final String page, final String pageSize, final String search, final String sort) throws ApiException { com.squareup.okhttp.Call call = getCustomersValidateBeforeCall(fields, page, pageSize, search, sort, null, null); Type localVarReturnType = new TypeToken>(){}.getType(); return this.apiClient.execute(call, localVarReturnType); } === Modifying the PaginatedDto class === Modify the **PaginatedDto** class located in ''./java_api_client/src/main/java/io/swagger/client/model/PaginatedDto.java'' to make it generic: * Replace the definition "public class PaginatedDto" to "public class PaginatedDto" * Replace the list member from "private List list = null;" to "private List list = null;" * Replace all methods definitions using the PaginatedDto class by the generic form: PaginatedDto for instance (see below) The result for the PaginatedDto class should be: /** * PaginatedDto */ public class PaginatedDto { @SerializedName("count") private Integer count = null; @SerializedName("pageSize") private Integer pageSize = null; @SerializedName("links") private List links = null; @SerializedName("page") private Integer page = null; @SerializedName("totalCount") private Long totalCount = null; @SerializedName("list") private List list = null; @SerializedName("totalCount") private Long totalCount = null; @SerializedName("nbPages") private Integer nbPages = null; public PaginatedDto count(Integer count) { this.count = count; return this; } Example of using **PaginatedDto** class: public PaginatedDto getClusters(String fields, String page, String pageSize, String search, String sort) throws ApiException { ApiResponse resp = getClustersWithHttpInfo(fields, page, pageSize, search, sort); return resp.getData(); } becomes : public PaginatedDto getClusters(String fields, String page, String pageSize, String search, String sort) throws ApiException { ApiResponse> resp = getClustersWithHttpInfo(fields, page, pageSize, search, sort); return resp.getData(); } === Modifying the customerDto class === All private variables of the customerDto constructor must be initialized to null: ''./java_api_client/src/main/java/io/swagger/client/model/customerDto.java'' public class CustomerDto { @SerializedName("maxUsers") private Integer maxUsers = null; @SerializedName("maxEndDevices") private Integer maxEndDevices = null; @SerializedName("maxGateways") private Integer maxGateways = null; @SerializedName("geolocationExpirationDate") private Long geolocationExpirationDate = null; @SerializedName("name") private String name = null; @SerializedName("logo") private String logo = null; @SerializedName("links") private List links = null; @SerializedName("geolocationAuthorized") private Boolean geolocationAuthorized = null; @SerializedName("id") private Long id = null; @SerializedName("billing") private Boolean billing = null; public CustomerDto maxUsers(Integer maxUsers) { this.maxUsers = maxUsers; return this; } === Testing getCustomers === package io.swagger.test_swagger_java_client; import io.swagger.client.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; import io.swagger.client.api.LoginApi; import io.swagger.client.model.JwtDto; import io.swagger.client.model.UserDto; import io.swagger.client.ApiResponse; import io.swagger.client.api.CustomersApi; import io.swagger.client.model.PaginatedDto; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; public class App_CustomerAPITest { public static void main(String[] args) throws ApiException { // Say Hello System.out.println("Hello world"); String baseApiUrl = "https://wmcintegration.wanesy.com/"; int connectTimeout = 60000; // Create an ApiClient per thread ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath(baseApiUrl); defaultClient.setConnectTimeout(connectTimeout); defaultClient.setDebugging(true); // Call login method LoginApi loginApi = new LoginApi(defaultClient); UserDto body = new UserDto (); body.setLogin("your_login_here"); body.setPassword("your_password_here"); System.out.println("Login Post"); JwtDto jwt = loginApi.login(body); defaultClient.setApiKey("Bearer " + jwt.getToken()); Configuration.setDefaultApiClient(defaultClient); // getCustomers CustomersApi customerInstance = new CustomersApi(); String sort = ""; // Sort value String pageSize = ""; // Page size value String search = "{\"operand\": \"name\", \"operation\": \"EQ\", \"values\": [\"kerlink\"]}"; // Search condition String fields = ""; // List of fields to display String page = ""; // Page number try { PaginatedDto paginatedDto = customerInstance.getCustomers(fields, page, pageSize, search, sort); assertEquals(Integer.valueOf(1), paginatedDto.getCount()); } catch (ApiException e) { System.err.println("Exception when calling CustomersApi#applicationCustomersGet"); e.printStackTrace(); } System.out.println("Test Done"); } } Test Result: Hello world Login Post --> POST https://wmcintegration.wanesy.com//gms/application/login HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 150 Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"lastName":"","role":"","avatar":"","login":"xxxxx","enabled":false,"firstName":"","password":"xxxxxxxx","validated":false,"phone":"","email":""} --> END POST (150-byte body) <-- HTTP/1.1 201 (500ms) Server: nginx Date: Fri, 28 Jun 2019 15:21:15 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 230 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1561735275696 OkHttp-Received-Millis: 1561735275830 {"expiredDate":1561771275797,"tokenType":"Bearer","token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJbXMiLCJleHAiOjE1NjE3NzEyNzV9.kF53EEKMxqkV27WcJ5UDHwy-B-z4UTRChJc2gkJbWMU"} <-- END HTTP (230-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22kerlink%22%5D%7D&sort= HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJbXMiLCJleHAiOjE1NjE3NzEyNzV9.kF53EEKMxqkV27WcJ5UDHwy-B-z4UTRChJc2gkJbWMU Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (39ms) Server: nginx Date: Fri, 28 Jun 2019 15:21:15 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 1148 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1561735275881 OkHttp-Received-Millis: 1561735275920 {"count":1,"pageSize":50,"links":[{"rel":"first","href":"/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22kerlink%22%5D%7D&sort="},{"rel":"last","href":"/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22kerlink%22%5D%7D&sort="}],"page":1,"totalCount":1,"list":[{"id":1,"name":"KERLINK","logo":null,"maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":true,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"1\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"1\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"1\"]}"},{"rel":"rncKpis","href":"/application/customers/1/kpis"},{"rel":"self","href":"/application/customers/1"}]}],"nbPages":1} <-- END HTTP (1148-byte body) Test Done \\ === Modifying the getId() method in CustomerDto class === Fixing the generated code issue: Replacing "return id;" by "return this.id". @Schema(required = true, description = "Identifier") public Long getId() { return id; } becomes: @Schema(required = true, description = "Identifier") public Long getId() { return this.id; } === Modifying all the get methods in CustomerDto class === Do the same for all get methods: * getMaxUsers(), * getMaxEndDevices(), * getMaxEndDevices(), * getGeolocationExpirationDate(), * getName(), * getLogo(), * getLinks(). === Implementing the toId() method in CustomerDto class === public CustomerDto toId() { CustomerDto customerDto = new CustomerDto(); customerDto.setId(this.getId()); return customerDto; } } === Creating an abstract class to manage ids and keys === In your project, create an Abstract class: package io.swagger.test_swagger_java_client; import io.swagger.client.ApiResponse; public abstract class AbstractTest { protected static Long getIdFromResponse(final ApiResponse response) { String header = response.getHeaders().get("Location").get(0); Long id = Long.valueOf(header.substring(header.lastIndexOf('/') + 1)); return id; } protected static String getKeyFromResponse(final ApiResponse response) { String header = response.getHeaders().get("Location").get(0); String key = header.substring(header.lastIndexOf('/') + 1); return key; } } === Testing CreateCustomer and deleteCustomer === package io.swagger.test_swagger_java_client; import io.swagger.client.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; import io.swagger.client.api.LoginApi; import io.swagger.client.model.JwtDto; import io.swagger.client.model.UserDto; import io.swagger.client.ApiResponse; import io.swagger.client.model.CustomerDto; import io.swagger.client.api.CustomersApi; import io.swagger.client.model.PaginatedDto; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; public class App_CustomerAPITest extends AbstractTest { public static CustomerDto createCustomer(CustomerDto customerDto, CustomersApi customerInstance) throws ApiException { Long id = null; if(customerDto == null) { customerDto = new CustomerDto(); ApiResponse customerResponse = customerInstance.createCustomerWithHttpInfo(customerDto); id = getIdFromResponse(customerResponse); } else { if (customerDto.getId() == null) { ApiResponse customerResponse = customerInstance.createCustomerWithHttpInfo(customerDto); id = getIdFromResponse(customerResponse); } else { id = customerDto.getId(); } } assertNotNull(id); customerDto = customerInstance.getCustomer(id, null); return customerDto; } public static void main(String[] args) throws ApiException { long id1 = 0; // Say Hello System.out.println("Hello world"); String baseApiUrl = "https://wmcintegration.wanesy.com/"; int connectTimeout = 60000; // Create an ApiClient per thread ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath(baseApiUrl); defaultClient.setConnectTimeout(connectTimeout); defaultClient.setDebugging(true); // login LoginApi loginApi = new LoginApi(defaultClient); UserDto body = new UserDto (); body.setLogin("your_login"); body.setPassword("your_password"); System.out.println("Login Post"); JwtDto jwt = loginApi.login(body); defaultClient.setApiKey("Bearer " + jwt.getToken()); Configuration.setDefaultApiClient(defaultClient); //createCustomer CustomersApi customerInstance = new CustomersApi(); CustomerDto customerDto = new CustomerDto(); try { customerDto.setName("My company"); customerDto = createCustomer(customerDto, customerInstance); id1 = customerDto.getId(); System.out.println("CustomerId="+id1); } catch (ApiException e) { System.err.println("Exception when calling CustomersApi#createCustomer"); e.printStackTrace(); } // getCustomers - a single instance String sort = ""; // Sort value String pageSize = ""; // Page size value String search = "{\"operand\": \"name\", \"operation\": \"EQ\", \"values\": [\"My company\"]}"; // Search condition String fields = ""; // List of fields to display String page = ""; // Page number try { PaginatedDto paginatedDto = customerInstance.getCustomers(fields, page, pageSize, search, sort); assertEquals(Integer.valueOf(1), paginatedDto.getCount()); } catch (ApiException e) { System.err.println("Exception when calling CustomersApi#applicationCustomersGet"); e.printStackTrace(); } // getCustomers - all instances PaginatedDto responseAll = customerInstance.getCustomers(null, null, null, null, null); assertNotNull (responseAll.getCount()); // deleteCustomer customerInstance.deleteCustomer(id1); System.out.println("Test Done"); } } Test result: Hello world Login Post --> POST https://wmcintegration.wanesy.com//gms/application/login HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 150 Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"lastName":"","role":"","avatar":"","login":"your_login_here","enabled":false,"firstName":"","password":"your_password_here","validated":false,"phone":"","email":""} --> END POST (150-byte body) <-- HTTP/1.1 201 (520ms) Server: nginx Date: Mon, 01 Jul 2019 14:43:04 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 230 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1561992184114 OkHttp-Received-Millis: 1561992184259 {"expiredDate":1562028184225,"tokenType":"Bearer","token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIwMjgxODR9.Vt3zJL9027MRDrEja4u2Dfg_fcehObHWD6W1ij3EN3s"} <-- END HTTP (230-byte body) --> POST https://wmcintegration.wanesy.com//gms/application/customers HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 77 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIwMjgxODR9.Vt3zJL9027MRDrEja4u2Dfg_fcehObHWD6W1ij3EN3s Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"name":"My company","logo":"","geolocationAuthorized":false,"billing":false} --> END POST (77-byte body) <-- HTTP/1.1 201 (46ms) Server: nginx Date: Mon, 01 Jul 2019 14:43:04 GMT Content-Length: 0 Connection: keep-alive Location: /application/customers/21 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1561992184303 OkHttp-Received-Millis: 1561992184347 <-- END HTTP (0-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/customers/21 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIwMjgxODR9.Vt3zJL9027MRDrEja4u2Dfg_fcehObHWD6W1ij3EN3s Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (42ms) Server: nginx Date: Mon, 01 Jul 2019 14:43:04 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 678 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1561992184360 OkHttp-Received-Millis: 1561992184401 {"maxEndDevices":null,"maxUsers":null,"maxGateways":null,"geolocationExpirationDate":null,"name":"My company","logo":"","links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"21\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"21\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"21\"]}"},{"rel":"rncKpis","href":"/application/customers/21/kpis"},{"rel":"self","href":"/application/customers/21"}],"id":21,"geolocationAuthorized":false,"billing":false} <-- END HTTP (678-byte body) CustomerId=21 --> GET https://wmcintegration.wanesy.com//gms/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort= HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIwMjgxODR9.Vt3zJL9027MRDrEja4u2Dfg_fcehObHWD6W1ij3EN3s Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (39ms) Server: nginx Date: Mon, 01 Jul 2019 14:43:04 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 1166 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1561992184406 OkHttp-Received-Millis: 1561992184445 {"count":1,"pageSize":50,"links":[{"rel":"first","href":"/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort="},{"rel":"last","href":"/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort="}],"page":1,"totalCount":1,"list":[{"id":21,"name":"My company","logo":"","maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"21\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"21\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"21\"]}"},{"rel":"rncKpis","href":"/application/customers/21/kpis"},{"rel":"self","href":"/application/customers/21"}]}],"nbPages":1} <-- END HTTP (1166-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/customers HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIwMjgxODR9.Vt3zJL9027MRDrEja4u2Dfg_fcehObHWD6W1ij3EN3s Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (40ms) Server: nginx Date: Mon, 01 Jul 2019 14:43:04 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 7604 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1561992184450 OkHttp-Received-Millis: 1561992184490 {"count":11,"pageSize":50,"links":[{"rel":"first","href":"/application/customers?page=1"},{"rel":"last","href":"/application/customers?page=1"}],"page":1,"totalCount":11,"list":[{"id":3,"name":"supervision","logo":null,"maxGateways":1,"maxEndDevices":1,"maxUsers":1,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":true,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"3\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"3\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"3\"]}"},{"rel":"rncKpis","href":"/application/customers/3/kpis"},{"rel":"self","href":"/application/customers/3"}]},{"id":4,"name":"DoNotDeleteSupervision","logo":null,"maxGateways":1,"maxEndDevices":1,"maxUsers":1,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":true,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"4\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"4\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"4\"]}"},{"rel":"rncKpis","href":"/application/customers/4/kpis"},{"rel":"self","href":"/application/customers/4"}]},{"id":1,"name":"KERLINK","logo":null,"maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":true,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"1\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"1\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"1\"]}"},{"rel":"rncKpis","href":"/application/customers/1/kpis"},{"rel":"self","href":"/application/customers/1"}]},{"id":5,"name":"kerlinksg","logo":"","maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":true,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"5\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"5\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"5\"]}"},{"rel":"rncKpis","href":"/application/customers/5/kpis"},{"rel":"self","href":"/application/customers/5"}]},{"id":6,"name":"ACCORINVEST","logo":"","maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"6\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"6\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"6\"]}"},{"rel":"rncKpis","href":"/application/customers/6/kpis"},{"rel":"self","href":"/application/customers/6"}]},{"id":7,"name":"KAS","logo":"","maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"7\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"7\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"7\"]}"},{"rel":"rncKpis","href":"/application/customers/7/kpis"},{"rel":"self","href":"/application/customers/7"}]},{"id":8,"name":"KerlinkTraining","logo":"","maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"8\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"8\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"8\"]}"},{"rel":"rncKpis","href":"/application/customers/8/kpis"},{"rel":"self","href":"/application/customers/8"}]},{"id":9,"name":"Tanalink","logo":"","maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":true,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"9\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"9\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"9\"]}"},{"rel":"rncKpis","href":"/application/customers/9/kpis"},{"rel":"self","href":"/application/customers/9"}]},{"id":10,"name":"Sigma3","logo":"","maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":true,"geolocationExpirationDate":1569772800000,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"10\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"10\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"10\"]}"},{"rel":"rncKpis","href":"/application/customers/10/kpis"},{"rel":"self","href":"/application/customers/10"}]},{"id":17,"name":"British Telecom","logo":"","maxGateways":10,"maxEndDevices":10,"maxUsers":10,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"17\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"17\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"17\"]}"},{"rel":"rncKpis","href":"/application/customers/17/kpis"},{"rel":"self","href":"/application/customers/17"}]},{"id":21,"name":"My company","logo":"","maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"21\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"21\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"21\"]}"},{"rel":"rncKpis","href":"/application/customers/21/kpis"},{"rel":"self","href":"/application/customers/21"}]}],"nbPages":1} <-- END HTTP (7604-byte body) Test Done --> DELETE https://wmcintegration.wanesy.com//gms/application/customers/21 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIwMjgxODR9.Vt3zJL9027MRDrEja4u2Dfg_fcehObHWD6W1ij3EN3s Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END DELETE <-- HTTP/1.1 204 (46ms) Server: nginx Date: Mon, 01 Jul 2019 14:43:04 GMT Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1561992184498 OkHttp-Received-Millis: 1561992184542 <-- END HTTP If we don't execute the deleteCustomer() method, here is the result on the WMC dashboard: \\ \\ {{:wiki3:testcreatecustomer.png|}} \\ \\ ==== Testing the Fleet API client code ==== \\ === Modifying all the get methods in FleetDto class === Do the same as for CustomerDto class for all get methods: * getName(), * getLinks(), * getId(). === Modifying PaginatedDto types === Do the same changes as for CustomerDto class but use these types instead: ^ Replace ^ By ^ In method | | | > | getFleetEvents | | | > | getFleetEventsWithHttpInfo | | | > | getFleetEventsAsync | | | > | getFleetEventsValidateBeforeCall | | | > | getFleetLastEvents | | | > | getFleetLastEventsWithHttpInfo | | | > | getFleetLastEventsAsync | | | > | getFleetLastEventsValidateBeforeCall | | | > | getFleetLastOperations | | | > | getFleetLastOperationsWithHttpInfo | | | > | getFleetLastOperationsAsync | | | > | getFleetLastOperationsValidateBeforeCall | | | > | getFleetLastStatistics | | | > | getFleetLastStatisticsWithHttpInfo | | | > | getFleetLastStatisticsAsync | | | > | getFleetLastStatisticsValidateBeforeCall | | | > | getFleets | | | > | getFleetsWithHttpInfo | | | > | getFleetsAsync | | | > | getFleetsValidateBeforeCall | For instance: public PaginatedDto getFleetEvents(String endDate, Long id, String startDate, String fields, String page, String pageSize, String type) throws ApiException { ApiResponse resp = getFleetEventsWithHttpInfo(endDate, id, startDate, fields, page, pageSize, type); return resp.getData(); } becomes: public PaginatedDto getFleetEvents(final String endDate, final Long id, final String startDate, final String fields, final String page, final String pageSize, final String type) throws ApiException { ApiResponse> resp = getFleetEventsWithHttpInfo(endDate, id, startDate, fields, page, pageSize, type); return resp.getData(); } Don't forget to import the GatewayEventDto class. import io.swagger.client.model.GatewayEventDto; == Testing CreateCluster, getFleets, getFleet and deleteFleet == package io.swagger.test_swagger_java_client; import io.swagger.client.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; import io.swagger.client.api.LoginApi; import io.swagger.client.model.JwtDto; import io.swagger.client.model.UserDto; import io.swagger.client.ApiResponse; import io.swagger.client.model.CustomerDto; import io.swagger.client.api.CustomersApi; import io.swagger.client.model.FleetDto; import io.swagger.client.api.FleetsApi; import io.swagger.client.model.PaginatedDto; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; public class App_FleetAPITest extends AbstractTest { public static CustomerDto createCustomer(CustomerDto customerDto, CustomersApi customerInstance) throws ApiException { Long id = null; if(customerDto == null) { customerDto = new CustomerDto(); ApiResponse customerResponse = customerInstance.createCustomerWithHttpInfo(customerDto); id = getIdFromResponse(customerResponse); customerDto.setId(id); } else { if (customerDto.getId() == null) { ApiResponse customerResponse = customerInstance.createCustomerWithHttpInfo(customerDto); id = getIdFromResponse(customerResponse); customerDto.setId(id); } else { id = customerDto.getId(); } } assertNotNull(id); customerDto = customerInstance.getCustomer(id, null); return customerDto; } public static FleetDto createFleet(FleetDto fleetDto, FleetsApi fleetInstance, CustomerDto customerDto) throws ApiException { Long id = null; if (customerDto != null) { if(fleetDto == null) { fleetDto = new FleetDto(); fleetDto.setCustomer(customerDto.toId()); ApiResponse fleetResponse = fleetInstance.createFleetWithHttpInfo(fleetDto); id = getIdFromResponse(fleetResponse); } else { if (fleetDto.getId() == null) { fleetDto.setCustomer(customerDto.toId()); ApiResponse fleetResponse = fleetInstance.createFleetWithHttpInfo(fleetDto); id = getIdFromResponse(fleetResponse); } else { id = fleetDto.getId(); } } assertNotNull(id); fleetDto = fleetInstance.getFleet(id, null); } return fleetDto; } public static void main(String[] args) throws ApiException { long id1=0, id_fleet=0; // Say Hello System.out.println("Hello world"); String baseApiUrl = "https://wmcintegration.wanesy.com/"; int connectTimeout = 60000; // Create an ApiClient per thread ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath(baseApiUrl); defaultClient.setConnectTimeout(connectTimeout); defaultClient.setDebugging(true); // login LoginApi loginApi = new LoginApi(defaultClient); UserDto body = new UserDto (); body.setLogin("your_login"); body.setPassword("your password"); System.out.println("Login Post"); JwtDto jwt = loginApi.login(body); defaultClient.setApiKey("Bearer " + jwt.getToken()); Configuration.setDefaultApiClient(defaultClient); //createCustomer CustomersApi customerInstance = new CustomersApi(); CustomerDto customerDto = new CustomerDto(); try { customerDto.setName("My company"); customerDto = createCustomer(customerDto, customerInstance); id1 = customerDto.getId(); System.out.println("CustomerId="+id1); } catch (ApiException e) { System.err.println("Exception when calling CustomersApi#createCustomer"); e.printStackTrace(); } // getCustomers - a single instance String sort = ""; // Sort value String pageSize = ""; // Page size value String search = "{\"operand\": \"name\", \"operation\": \"EQ\", \"values\": [\"My company\"]}"; // Search condition String fields = ""; // List of fields to display String page = ""; // Page number try { PaginatedDto paginatedDto = customerInstance.getCustomers(fields, page, pageSize, search, sort); assertEquals(Integer.valueOf(1), paginatedDto.getCount()); } catch (ApiException e) { System.err.println("Exception when calling CustomersApi#applicationCustomersGet"); e.printStackTrace(); } // createFleet FleetsApi fleetInstance = new FleetsApi(); FleetDto fleetDto = new FleetDto(); try { fleetDto.setName("My fleet"); fleetDto = createFleet(fleetDto, fleetInstance, customerDto); id_fleet = fleetDto.getId(); System.out.println("FleetId="+id_fleet); } catch (ApiException e) { System.err.println("Exception when calling FleetsApi#createFleet"); e.printStackTrace(); } // getFleets sort = ""; // Sort value pageSize = ""; // Page size value search = "{\"operand\": \"name\", \"operation\": \"EQ\", \"values\": [\"My fleet\"]}"; // Search condition fields = ""; // List of fields to display page = ""; // Page number try { PaginatedDto paginatedDto = fleetInstance.getFleets(fields, page, pageSize, search, sort); assertEquals(Integer.valueOf(1), paginatedDto.getCount()); } catch (ApiException e) { System.err.println("Exception when calling FleetsApi#getFleets"); e.printStackTrace(); } // getFleet fleetDto = fleetInstance.getFleet(id_fleet, null); System.out.println("The fleet Id="+id_fleet+" has name \""+fleetDto.getName()+"\""); // deleteFleet fleetInstance.deleteFleet(id_fleet); System.out.println("The fleet Id="+id_fleet+" has been deleted="); // deleteCustomer customerInstance.deleteCustomer(id1); System.out.println("The customer Id="+id1+" has been deleted"); } } Test result: Hello world Login Post --> POST https://wmcintegration.wanesy.com//gms/application/login HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 150 Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"lastName":"","role":"","avatar":"","login":"your_login","enabled":false,"firstName":"","password":"your_password","validated":false,"phone":"","email":""} --> END POST (150-byte body) <-- HTTP/1.1 201 (529ms) Server: nginx Date: Tue, 02 Jul 2019 15:09:25 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 230 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562080165068 OkHttp-Received-Millis: 1562080165190 {"expiredDate":1562116165167,"tokenType":"Bearer","token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxMTYxNjV9.1ZdVyOfYt6Jixxu_oAN8eHp-qplqGnwuDj68AQ_Z0Bw"} <-- END HTTP (230-byte body) --> POST https://wmcintegration.wanesy.com//gms/application/customers HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 21 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxMTYxNjV9.1ZdVyOfYt6Jixxu_oAN8eHp-qplqGnwuDj68AQ_Z0Bw Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"name":"My company"} --> END POST (21-byte body) <-- HTTP/1.1 201 (41ms) Server: nginx Date: Tue, 02 Jul 2019 15:09:25 GMT Content-Length: 0 Connection: keep-alive Location: /application/customers/37 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562080165204 OkHttp-Received-Millis: 1562080165243 <-- END HTTP (0-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/customers/37 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxMTYxNjV9.1ZdVyOfYt6Jixxu_oAN8eHp-qplqGnwuDj68AQ_Z0Bw Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (40ms) Server: nginx Date: Tue, 02 Jul 2019 15:09:25 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 680 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562080165251 OkHttp-Received-Millis: 1562080165290 {"maxEndDevices":null,"maxUsers":null,"maxGateways":null,"geolocationExpirationDate":null,"name":"My company","logo":null,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"37\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"37\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"37\"]}"},{"rel":"rncKpis","href":"/application/customers/37/kpis"},{"rel":"self","href":"/application/customers/37"}],"id":37,"geolocationAuthorized":false,"billing":false} <-- END HTTP (680-byte body) CustomerId=37 --> GET https://wmcintegration.wanesy.com//gms/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort= HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxMTYxNjV9.1ZdVyOfYt6Jixxu_oAN8eHp-qplqGnwuDj68AQ_Z0Bw Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (41ms) Server: nginx Date: Tue, 02 Jul 2019 15:09:25 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 1168 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562080165296 OkHttp-Received-Millis: 1562080165337 {"count":1,"pageSize":50,"links":[{"rel":"first","href":"/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort="},{"rel":"last","href":"/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort="}],"page":1,"totalCount":1,"list":[{"id":37,"name":"My company","logo":null,"maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"37\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"37\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"37\"]}"},{"rel":"rncKpis","href":"/application/customers/37/kpis"},{"rel":"self","href":"/application/customers/37"}]}],"nbPages":1} <-- END HTTP (1168-byte body) --> POST https://wmcintegration.wanesy.com//gms/application/fleets HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 40 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxMTYxNjV9.1ZdVyOfYt6Jixxu_oAN8eHp-qplqGnwuDj68AQ_Z0Bw Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"name":"My fleet","customer":{"id":37}} --> END POST (40-byte body) <-- HTTP/1.1 201 (46ms) Server: nginx Date: Tue, 02 Jul 2019 15:09:25 GMT Content-Length: 0 Connection: keep-alive Location: /application/fleets/15 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562080165345 OkHttp-Received-Millis: 1562080165390 <-- END HTTP (0-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/fleets/15 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxMTYxNjV9.1ZdVyOfYt6Jixxu_oAN8eHp-qplqGnwuDj68AQ_Z0Bw Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (43ms) Server: nginx Date: Tue, 02 Jul 2019 15:09:25 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 599 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562080165393 OkHttp-Received-Millis: 1562080165436 {"name":"My fleet","links":[{"rel":"customer","href":"/application/customers/37"},{"rel":"fleetEvents","href":"/application/fleets/15/events"},{"rel":"fleetLastEvents","href":"/application/fleets/15/events/last"},{"rel":"fleetLastEventsCounters","href":"/application/fleets/15/events/last/counters"},{"rel":"fleetLastStatistics","href":"/application/fleets/15/lastStatistics"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.id\",\"operation\":\"EQ\",\"values\":[\"15\"]}"},{"rel":"self","href":"/application/fleets/15"}],"id":15,"customer":{"name":"My company","id":37}} <-- END HTTP (599-byte body) FleetId=15 --> GET https://wmcintegration.wanesy.com//gms/application/fleets?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20fleet%22%5D%7D&sort= HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxMTYxNjV9.1ZdVyOfYt6Jixxu_oAN8eHp-qplqGnwuDj68AQ_Z0Bw Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (45ms) Server: nginx Date: Tue, 02 Jul 2019 15:09:25 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 1077 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562080165440 OkHttp-Received-Millis: 1562080165484 {"count":1,"pageSize":50,"links":[{"rel":"first","href":"/application/fleets?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20fleet%22%5D%7D&sort="},{"rel":"last","href":"/application/fleets?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20fleet%22%5D%7D&sort="}],"page":1,"totalCount":1,"list":[{"id":15,"customer":{"name":"My company","id":37},"name":"My fleet","links":[{"rel":"customer","href":"/application/customers/37"},{"rel":"fleetEvents","href":"/application/fleets/15/events"},{"rel":"fleetLastEvents","href":"/application/fleets/15/events/last"},{"rel":"fleetLastEventsCounters","href":"/application/fleets/15/events/last/counters"},{"rel":"fleetLastStatistics","href":"/application/fleets/15/lastStatistics"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.id\",\"operation\":\"EQ\",\"values\":[\"15\"]}"},{"rel":"self","href":"/application/fleets/15"}]}],"nbPages":1} <-- END HTTP (1077-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/fleets/15 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxMTYxNjV9.1ZdVyOfYt6Jixxu_oAN8eHp-qplqGnwuDj68AQ_Z0Bw Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (41ms) Server: nginx Date: Tue, 02 Jul 2019 15:09:25 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 599 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562080165487 OkHttp-Received-Millis: 1562080165528 {"name":"My fleet","links":[{"rel":"customer","href":"/application/customers/37"},{"rel":"fleetEvents","href":"/application/fleets/15/events"},{"rel":"fleetLastEvents","href":"/application/fleets/15/events/last"},{"rel":"fleetLastEventsCounters","href":"/application/fleets/15/events/last/counters"},{"rel":"fleetLastStatistics","href":"/application/fleets/15/lastStatistics"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.id\",\"operation\":\"EQ\",\"values\":[\"15\"]}"},{"rel":"self","href":"/application/fleets/15"}],"id":15,"customer":{"name":"My company","id":37}} <-- END HTTP (599-byte body) The fleet Id=15 has name "My fleet" --> DELETE https://wmcintegration.wanesy.com//gms/application/fleets/15 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxMTYxNjV9.1ZdVyOfYt6Jixxu_oAN8eHp-qplqGnwuDj68AQ_Z0Bw Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END DELETE <-- HTTP/1.1 204 (46ms) Server: nginx Date: Tue, 02 Jul 2019 15:09:25 GMT Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562080165531 OkHttp-Received-Millis: 1562080165575 <-- END HTTP The fleet Id=15 has been deleted= --> DELETE https://wmcintegration.wanesy.com//gms/application/customers/37 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxMTYxNjV9.1ZdVyOfYt6Jixxu_oAN8eHp-qplqGnwuDj68AQ_Z0Bw Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END DELETE <-- HTTP/1.1 204 (52ms) Server: nginx Date: Tue, 02 Jul 2019 15:09:25 GMT Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562080165578 OkHttp-Received-Millis: 1562080165629 <-- END HTTP The customer Id=37 has been deleted If we don't execute the deleteCustomer() and deleteFleet() methods, here is the result on the WMC dashboard: \\ \\ {{:wiki3:testcreatefleet.png|}} \\ ==== Testing the Gateway API client code ==== \\ === Modifying all the get methods in GatewayDto class === In ''./java_api_client/src/main/java/io/swagger/client/model/GatewayDto.java'', add "this" member as done previously for CustomerDto class for all get methods: * getFleet(), * getAltitude(), * getDoor(), * getRegion(), * getName(), * getEui(), * getPort(), * getMaxTxPower(), * getIp(), getGps(), * getVisibility(), * getNetworkMaxDelayDown(), * getLongitude(), * getLatitude(), * getGpsLatitude(), * getGpsLongitude(), * getDescription(), * getType(), * getNetworkMaxDelayUp(), * getGatewayKeys(), * getBearer(), * getLinks(), * getId() === Modifying members initialization in GatewayDto class === You must set some values to null instead of empty string in order for these fields to be not included in the REST mesage body. You code must be like this: public class GatewayDto { @SerializedName("fleet") private FleetDto fleet = null; @SerializedName("altitude") private Integer altitude = null; @SerializedName("door") private String door = null; @SerializedName("gpsLongitude") private Double gpsLongitude = null; @SerializedName("latitude") private Double latitude = null; @SerializedName("description") private String description = null; @SerializedName("gpsAltitude") private Integer gpsAltitude = null; @SerializedName("type") private GatewayTypeDto type = null; @SerializedName("networkMaxDelayUp") private Integer networkMaxDelayUp = null; @SerializedName("gatewayKeys") private List gatewayKeys = null; @SerializedName("bearer") private String bearer = null; @SerializedName("links") private List links = null; @SerializedName("connection") private Boolean connection = null; @SerializedName("gpsLatitude") private Double gpsLatitude = null; @SerializedName("longitude") private Double longitude = null; @SerializedName("dlAllowed") private Boolean dlAllowed = false; @SerializedName("networkMaxDelayDown") private Integer networkMaxDelayDown = null; @SerializedName("allowGPSPosition") private Boolean allowGPSPosition = true; @SerializedName("visibility") private String visibility = ""; @SerializedName("gpsPositionAllowed") private Boolean gpsPositionAllowed = true; @SerializedName("ip") private String ip = ""; @SerializedName("gps") private String gps = null; @SerializedName("maxTxPower") private Integer maxTxPower = null; @SerializedName("port") private Integer port = null; @SerializedName("adaptiveLatencyEnabled") private Boolean adaptiveLatencyEnabled = false; @SerializedName("eui") private String eui = ""; @SerializedName("name") private String name = ""; @SerializedName("region") private String region = ""; public GatewayDto fleet(FleetDto fleet) { this.fleet = fleet; return this; } \\ === Modifying PaginatedDto types in GatewayApi class === Do the same changes as for GatewaysDto class but use these types instead: ^ Replace ^ By ^ In method | | | > | getGatewayConfigurations | | | > | getGatewayConfigurationsWithHttpInfo | | | > | getGatewayConfigurationsAsync | | | > | getGatewayConfigurationsValidateBeforeCall | | | > | getGatewayConnections | | | > | getGatewayConnectionsWithHttpInfo | | | > | getGatewayConnectionsAsync | | | > | getGatewayConnectionsValidateBeforeCall | | | > | getGatewayEvents | | | > | getGatewayEventsWithHttpInfo | | | > | getGatewayEventsAsync | | | > | getGatewayEventsValidateBeforeCall | | | > | getGatewayLastOperations | | | > | getGatewayLastOperationsWithHttpInfo | | | > | getGatewayLastOperationsAsync | | | > | getGatewayLastOperationsValidateBeforeCall | | | > | getGatewayLastStatistics | | | > | getGatewayLastStatisticsWithHttpInfo | | | > | getGatewayLastStatisticsAsync | | | > | getGatewayLastStatisticsValidateBeforeCall | | | > | getGatewayNumericStatistics | | | > | getGatewayNumericStatisticsWithHttpInfo | | | > | getGatewayNumericStatisticsAsync | | | > | getGatewayNumericStatisticsValidateBeforeCall | | | > | getGatewaySnmpLogs | | | > | getGatewaySnmpLogsWithHttpInfo | | | > | getGatewaySnmpLogsAsync | | | > | getGatewaySnmpLogsValidateBeforeCall | | | > | getGatewayTermStatistics | | | > | getGatewayTermStatisticsWithHttpInfo | | | > | getGatewayTermStatisticsAsync | | | > | getGatewayTermStatisticsValidateBeforeCall | | | > | getGatewayVersions | | | > | getGatewayVersionsWithHttpInfo | | | > | getGatewayVersionsAsync | | | > | getGatewayVersionsValidateBeforeCall | | | > | getGateways | | | > | getGatewaysWithHttpInfo | | | > | getGatewaysAsync | | | > | getGatewaysValidateBeforeCall | | | > | getModemStatistics | | | > | getModemStatisticsWithHttpInfo | | | > | getModemStatisticsAsync | | | > | getModemStatisticsValidateBeforeCall | | | > | getRncCustomerGatewayKpi | | | > | getRncCustomerGatewayKpiWithHttpInfo | | | > | getRncCustomerGatewayKpiAsync | | | > | getRncCustomerGatewayKpiValidateBeforeCall | | | > | updateGatewaysFirmware | | | > | updateGatewaysFirmwareWithHttpInfo | | | > | updateGatewaysFirmwareAsync | | | > | updateGatewaysFirmwareValidateBeforeCall | For instance: public PaginatedDto getGatewayConnections(String eui, String fields, String page, String pageSize, String untilDate) throws ApiException { ApiResponse resp = getGatewayConnectionsWithHttpInfo(eui, fields, page, pageSize, untilDate); return resp.getData(); } becomes: public PaginatedDto getGatewayConnections(final String eui, final String fields, final String page, final String pageSize, final String untilDate) throws ApiException { ApiResponse> resp = getGatewayConnectionsWithHttpInfo(eui, fields, page, pageSize, untilDate); return resp.getData(); } import io.swagger.client.ApiClient; import io.swagger.client.ApiException; import io.swagger.client.ApiResponse; import io.swagger.client.Configuration; import io.swagger.client.Pair; import io.swagger.client.ProgressRequestBody; import io.swagger.client.ProgressResponseBody; import io.swagger.client.model.GatewayConfigurationDto; import io.swagger.client.model.GatewayConnectionDto; import io.swagger.client.model.GatewayControlDto; import io.swagger.client.model.GatewayDto; import io.swagger.client.model.GatewayEventDto; import io.swagger.client.model.GatewayManagementDto; import io.swagger.client.model.GatewayModemStatisticDto; import io.swagger.client.model.GatewayNumericStatisticsDto; import io.swagger.client.model.GatewaySnmpLogDto; import io.swagger.client.model.GatewayStatisticsDto; import io.swagger.client.model.GatewayTermStatisticsDto; import io.swagger.client.model.GatewayVersionDto; import io.swagger.client.model.KpiDto; import io.swagger.client.model.LastEventDto; import io.swagger.client.model.LastOperationDto; import io.swagger.client.model.LastStatisticDto; import io.swagger.client.model.LnsGatewayKeyDto; import io.swagger.client.model.PaginatedDto; import io.swagger.client.model.ProgressMonitorDto; import io.swagger.client.model.TaskDto; === Implementing GatewayAPI test code === Add those import derectives: import io.swagger.client.model.GatewayDto; import io.swagger.client.api.GatewaysApi; import io.swagger.client.model.GatewayTypeDto; import io.swagger.client.api.GatewayTypesApi; import java.util.List; Then add following code: ... // getFleet fleetDto = fleetInstance.getFleet(id_fleet, null); System.out.println("The fleet Id="+id_fleet+" has name \""+fleetDto.getName()+"\""); // createGateway GatewayTypesApi gatewayTypesInstance = new GatewayTypesApi(); List types = gatewayTypesInstance.getGatewayTypes(null, null, null); GatewayDto gatewayDto = new GatewayDto(); gatewayDto.setEui("1231654687987746"); gatewayDto.setName("My Gateway"); gatewayDto.setRegion("EU868"); gatewayDto.setVisibility("PUBLIC"); gatewayDto.setAllowGPSPosition(false); gatewayDto.setDlAllowed(true); gatewayDto.setAdaptiveLatencyEnabled(true); gatewayDto.setType(types.get(0)); gatewayDto.setFleet(fleetDto.toId()); GatewaysApi gatewayInstance = new GatewaysApi(); gatewayInstance.createGatewayWithHttpInfo(gatewayDto, gatewayDto.getEui()); System.out.println("The gateway which name is \""+gatewayDto.getName()+"\" has been correctly created"); //deleteGateway gatewayInstance.deleteGateway(gatewayDto.getEui()); System.out.println("The gateway which name is \""+gatewayDto.getName()+"\" has been correctly deleted"); // deleteFleet //fleetInstance.deleteFleet(id_fleet); System.out.println("The fleet Id="+id_fleet+" has been deleted"); // deleteCustomer //customerInstance.deleteCustomer(id1); System.out.println("The customer Id="+id1+" has been deleted"); } } == Test result == Hello world Login Post --> POST https://wmcintegration.wanesy.com//gms/application/login HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 150 Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"lastName":"","role":"","avatar":"","login":"your_login","enabled":false,"firstName":"","password":"your_password","validated":false,"phone":"","email":""} --> END POST (150-byte body) <-- HTTP/1.1 201 (563ms) Server: nginx Date: Wed, 03 Jul 2019 10:18:32 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 230 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562149112481 OkHttp-Received-Millis: 1562149112599 {"expiredDate":1562185112588,"tokenType":"Bearer","token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxODUxMTJ9.XI58WNU4yc-7ngkM89b7Gkq5Ucjb7aNseUhGk1UAIMc"} <-- END HTTP (230-byte body) --> POST https://wmcintegration.wanesy.com//gms/application/customers HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 21 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxODUxMTJ9.XI58WNU4yc-7ngkM89b7Gkq5Ucjb7aNseUhGk1UAIMc Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"name":"My company"} --> END POST (21-byte body) <-- HTTP/1.1 201 (37ms) Server: nginx Date: Wed, 03 Jul 2019 10:18:32 GMT Content-Length: 0 Connection: keep-alive Location: /application/customers/43 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562149112611 OkHttp-Received-Millis: 1562149112646 <-- END HTTP (0-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/customers/43 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxODUxMTJ9.XI58WNU4yc-7ngkM89b7Gkq5Ucjb7aNseUhGk1UAIMc Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (47ms) Server: nginx Date: Wed, 03 Jul 2019 10:18:32 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 680 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562149112653 OkHttp-Received-Millis: 1562149112701 {"maxEndDevices":null,"maxUsers":null,"maxGateways":null,"geolocationExpirationDate":null,"name":"My company","logo":null,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"43\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"43\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"43\"]}"},{"rel":"rncKpis","href":"/application/customers/43/kpis"},{"rel":"self","href":"/application/customers/43"}],"id":43,"geolocationAuthorized":false,"billing":false} <-- END HTTP (680-byte body) The customer Id=43 has been created --> GET https://wmcintegration.wanesy.com//gms/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort= HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxODUxMTJ9.XI58WNU4yc-7ngkM89b7Gkq5Ucjb7aNseUhGk1UAIMc Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (36ms) Server: nginx Date: Wed, 03 Jul 2019 10:18:32 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 1168 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562149112706 OkHttp-Received-Millis: 1562149112742 {"count":1,"pageSize":50,"links":[{"rel":"first","href":"/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort="},{"rel":"last","href":"/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort="}],"page":1,"totalCount":1,"list":[{"id":43,"name":"My company","logo":null,"maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"43\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"43\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"43\"]}"},{"rel":"rncKpis","href":"/application/customers/43/kpis"},{"rel":"self","href":"/application/customers/43"}]}],"nbPages":1} <-- END HTTP (1168-byte body) --> POST https://wmcintegration.wanesy.com//gms/application/fleets HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 40 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxODUxMTJ9.XI58WNU4yc-7ngkM89b7Gkq5Ucjb7aNseUhGk1UAIMc Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"name":"My fleet","customer":{"id":43}} --> END POST (40-byte body) <-- HTTP/1.1 201 (36ms) Server: nginx Date: Wed, 03 Jul 2019 10:18:32 GMT Content-Length: 0 Connection: keep-alive Location: /application/fleets/20 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562149112750 OkHttp-Received-Millis: 1562149112785 <-- END HTTP (0-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/fleets/20 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxODUxMTJ9.XI58WNU4yc-7ngkM89b7Gkq5Ucjb7aNseUhGk1UAIMc Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (36ms) Server: nginx Date: Wed, 03 Jul 2019 10:18:32 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 599 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562149112787 OkHttp-Received-Millis: 1562149112823 {"name":"My fleet","links":[{"rel":"customer","href":"/application/customers/43"},{"rel":"fleetEvents","href":"/application/fleets/20/events"},{"rel":"fleetLastEvents","href":"/application/fleets/20/events/last"},{"rel":"fleetLastEventsCounters","href":"/application/fleets/20/events/last/counters"},{"rel":"fleetLastStatistics","href":"/application/fleets/20/lastStatistics"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.id\",\"operation\":\"EQ\",\"values\":[\"20\"]}"},{"rel":"self","href":"/application/fleets/20"}],"id":20,"customer":{"name":"My company","id":43}} <-- END HTTP (599-byte body) The fleet Id=20 has been created --> GET https://wmcintegration.wanesy.com//gms/application/fleets?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20fleet%22%5D%7D&sort= HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxODUxMTJ9.XI58WNU4yc-7ngkM89b7Gkq5Ucjb7aNseUhGk1UAIMc Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (35ms) Server: nginx Date: Wed, 03 Jul 2019 10:18:32 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 1077 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562149112827 OkHttp-Received-Millis: 1562149112863 {"count":1,"pageSize":50,"links":[{"rel":"first","href":"/application/fleets?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20fleet%22%5D%7D&sort="},{"rel":"last","href":"/application/fleets?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20fleet%22%5D%7D&sort="}],"page":1,"totalCount":1,"list":[{"id":20,"customer":{"name":"My company","id":43},"name":"My fleet","links":[{"rel":"customer","href":"/application/customers/43"},{"rel":"fleetEvents","href":"/application/fleets/20/events"},{"rel":"fleetLastEvents","href":"/application/fleets/20/events/last"},{"rel":"fleetLastEventsCounters","href":"/application/fleets/20/events/last/counters"},{"rel":"fleetLastStatistics","href":"/application/fleets/20/lastStatistics"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.id\",\"operation\":\"EQ\",\"values\":[\"20\"]}"},{"rel":"self","href":"/application/fleets/20"}]}],"nbPages":1} <-- END HTTP (1077-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/fleets/20 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxODUxMTJ9.XI58WNU4yc-7ngkM89b7Gkq5Ucjb7aNseUhGk1UAIMc Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (35ms) Server: nginx Date: Wed, 03 Jul 2019 10:18:32 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 599 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562149112865 OkHttp-Received-Millis: 1562149112900 {"name":"My fleet","links":[{"rel":"customer","href":"/application/customers/43"},{"rel":"fleetEvents","href":"/application/fleets/20/events"},{"rel":"fleetLastEvents","href":"/application/fleets/20/events/last"},{"rel":"fleetLastEventsCounters","href":"/application/fleets/20/events/last/counters"},{"rel":"fleetLastStatistics","href":"/application/fleets/20/lastStatistics"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.id\",\"operation\":\"EQ\",\"values\":[\"20\"]}"},{"rel":"self","href":"/application/fleets/20"}],"id":20,"customer":{"name":"My company","id":43}} <-- END HTTP (599-byte body) The fleet Id=20 has name "My fleet" --> GET https://wmcintegration.wanesy.com//gms/application/gatewayTypes HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxODUxMTJ9.XI58WNU4yc-7ngkM89b7Gkq5Ucjb7aNseUhGk1UAIMc Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (33ms) Server: nginx Date: Wed, 03 Jul 2019 10:18:32 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 40 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562149112905 OkHttp-Received-Millis: 1562149112938 [{"name":"KERLINK SNMP","id":"KERLINK"}] <-- END HTTP (40-byte body) --> PUT https://wmcintegration.wanesy.com//gms/application/gateways/1231654687987746 HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 265 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIxODUxMTJ9.XI58WNU4yc-7ngkM89b7Gkq5Ucjb7aNseUhGk1UAIMc Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"fleet":{"name":"","id":20},"type":{"name":"KERLINK SNMP","id":"KERLINK"},"dlAllowed":true,"allowGPSPosition":false,"visibility":"PUBLIC","gpsPositionAllowed":true,"ip":"","adaptiveLatencyEnabled":true,"eui":"1231654687987746","name":"My Gateway","region":"EU868"} --> END PUT (265-byte body) <-- HTTP/1.1 204 (70ms) Server: nginx Date: Wed, 03 Jul 2019 10:18:33 GMT Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562149112966 OkHttp-Received-Millis: 1562149113034 <-- END HTTP The gateway which name is "My Gateway" has been correctly created After removing the delete methods, the result should be the following on the WMC dashboard: {{:wiki3:testcreategateway.png|}} \\ {{:wiki3:testcreategateway2.png|}} \\ \\ ==== Testing the Cluster API client code ==== \\ package io.swagger.test_swagger_java_client; import io.swagger.client.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; import io.swagger.client.api.LoginApi; import io.swagger.client.model.JwtDto; import io.swagger.client.model.UserDto; import io.swagger.client.ApiResponse; import io.swagger.client.model.CustomerDto; import io.swagger.client.api.CustomersApi; import io.swagger.client.model.ClusterDto; import io.swagger.client.api.ClustersApi; import io.swagger.client.model.PaginatedDto; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; public class App_ClusterAPITest extends AbstractTest { public static CustomerDto createCustomer(CustomerDto customerDto, CustomersApi customerInstance) throws ApiException { Long id = null; if(customerDto == null) { customerDto = new CustomerDto(); ApiResponse customerResponse = customerInstance.createCustomerWithHttpInfo(customerDto); id = getIdFromResponse(customerResponse); customerDto.setId(id); } else { if (customerDto.getId() == null) { ApiResponse customerResponse = customerInstance.createCustomerWithHttpInfo(customerDto); id = getIdFromResponse(customerResponse); customerDto.setId(id); } else { id = customerDto.getId(); } } assertNotNull(id); customerDto = customerInstance.getCustomer(id, null); return customerDto; } public static ClusterDto createCluster(ClusterDto ClusterDto, ClustersApi ClusterInstance, CustomerDto customerDto) throws ApiException { Long id = null; if (customerDto != null) { if(ClusterDto == null) { ClusterDto = new ClusterDto(); ClusterDto.setCustomer(customerDto.toId()); ApiResponse ClusterResponse = ClusterInstance.createClusterWithHttpInfo(ClusterDto); id = getIdFromResponse(ClusterResponse); } else { if (ClusterDto.getId() == null) { ClusterDto.setCustomer(customerDto.toId()); ApiResponse ClusterResponse = ClusterInstance.createClusterWithHttpInfo(ClusterDto); id = getIdFromResponse(ClusterResponse); } else { id = ClusterDto.getId(); } } assertNotNull(id); ClusterDto = ClusterInstance.getCluster(id, null); } return ClusterDto; } public static void main(String[] args) throws ApiException { long id1=0, id_Cluster=0; // Say Hello System.out.println("Hello world"); String baseApiUrl = "https://wmcintegration.wanesy.com/"; int connectTimeout = 60000; // Create an ApiClient per thread ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath(baseApiUrl); defaultClient.setConnectTimeout(connectTimeout); defaultClient.setDebugging(true); // login LoginApi loginApi = new LoginApi(defaultClient); UserDto body = new UserDto (); body.setLogin("your_login"); body.setPassword("your_password"); System.out.println("Login Post"); JwtDto jwt = loginApi.login(body); defaultClient.setApiKey("Bearer " + jwt.getToken()); Configuration.setDefaultApiClient(defaultClient); //createCustomer CustomersApi customerInstance = new CustomersApi(); CustomerDto customerDto = new CustomerDto(); try { customerDto.setName("My company"); customerDto = createCustomer(customerDto, customerInstance); id1 = customerDto.getId(); System.out.println("CustomerId="+id1); } catch (ApiException e) { System.err.println("Exception when calling CustomersApi#createCustomer"); e.printStackTrace(); } // getCustomers - a single instance String sort = ""; // Sort value String pageSize = ""; // Page size value String search = "{\"operand\": \"name\", \"operation\": \"EQ\", \"values\": [\"My company\"]}"; // Search condition String fields = ""; // List of fields to display String page = ""; // Page number try { PaginatedDto paginatedDto = customerInstance.getCustomers(fields, page, pageSize, search, sort); assertEquals(Integer.valueOf(1), paginatedDto.getCount()); } catch (ApiException e) { System.err.println("Exception when calling CustomersApi#applicationCustomersGet"); e.printStackTrace(); } // createCluster ClustersApi ClusterInstance = new ClustersApi(); ClusterDto ClusterDto = new ClusterDto(); try { ClusterDto.setName("My Cluster"); ClusterDto = createCluster(ClusterDto, ClusterInstance, customerDto); id_Cluster = ClusterDto.getId(); System.out.println("ClusterId="+id_Cluster); } catch (ApiException e) { System.err.println("Exception when calling ClustersApi#createCluster"); e.printStackTrace(); } // getClusters sort = ""; // Sort value pageSize = ""; // Page size value search = "{\"operand\": \"name\", \"operation\": \"EQ\", \"values\": [\"My Cluster\"]}"; // Search condition fields = ""; // List of fields to display page = ""; // Page number try { PaginatedDto paginatedDto = ClusterInstance.getClusters(fields, page, pageSize, search, sort); assertEquals(Integer.valueOf(1), paginatedDto.getCount()); } catch (ApiException e) { System.err.println("Exception when calling ClustersApi#getClusters"); e.printStackTrace(); } // getCluster ClusterDto = ClusterInstance.getCluster(id_Cluster, null); System.out.println("The Cluster Id="+id_Cluster+" has name \""+ClusterDto.getName()+"\""); // deleteCluster ClusterInstance.deleteCluster(id_Cluster); System.out.println("The Cluster Id="+id_Cluster+" has been deleted="); // deleteCustomer customerInstance.deleteCustomer(id1); System.out.println("The customer Id="+id1+" has been deleted"); } } The result should be on WMC dashboard after removing the delete methods: {{:wiki3:testcreatecluster.png|}} \\ \\ ==== Testing the EndDevice API client code ==== \\ After all changes have been done in EndDeviceDTO and EndDeviceApi classes, here is the client test code: package io.swagger.test_swagger_java_client; import io.swagger.client.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; import io.swagger.client.api.LoginApi; import io.swagger.client.model.JwtDto; import io.swagger.client.model.UserDto; import io.swagger.client.ApiResponse; import io.swagger.client.model.CustomerDto; import io.swagger.client.api.CustomersApi; import io.swagger.client.model.ClusterDto; import io.swagger.client.api.ClustersApi; import io.swagger.client.model.PaginatedDto; import io.swagger.client.model.EndDeviceDto; import io.swagger.client.api.EndDevicesApi; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; public class App_EndDeviceAPITest extends AbstractTest { public static CustomerDto createCustomer(CustomerDto customerDto, CustomersApi customerInstance) throws ApiException { Long id = null; if(customerDto == null) { customerDto = new CustomerDto(); ApiResponse customerResponse = customerInstance.createCustomerWithHttpInfo(customerDto); id = getIdFromResponse(customerResponse); customerDto.setId(id); } else { if (customerDto.getId() == null) { ApiResponse customerResponse = customerInstance.createCustomerWithHttpInfo(customerDto); id = getIdFromResponse(customerResponse); customerDto.setId(id); } else { id = customerDto.getId(); } } assertNotNull(id); customerDto = customerInstance.getCustomer(id, null); return customerDto; } public static ClusterDto createCluster(ClusterDto ClusterDto, ClustersApi ClusterInstance, CustomerDto customerDto) throws ApiException { Long id = null; if (customerDto != null) { if(ClusterDto == null) { ClusterDto = new ClusterDto(); ClusterDto.setCustomer(customerDto.toId()); ApiResponse ClusterResponse = ClusterInstance.createClusterWithHttpInfo(ClusterDto); id = getIdFromResponse(ClusterResponse); } else { if (ClusterDto.getId() == null) { ClusterDto.setCustomer(customerDto.toId()); ApiResponse ClusterResponse = ClusterInstance.createClusterWithHttpInfo(ClusterDto); id = getIdFromResponse(ClusterResponse); } else { id = ClusterDto.getId(); } } assertNotNull(id); ClusterDto = ClusterInstance.getCluster(id, null); } return ClusterDto; } public static EndDeviceDto createEndDevice(CustomerDto customerDto , ClusterDto clusterDto, EndDeviceDto endDeviceDto, EndDevicesApi endDevicesInstance) throws ApiException { if(endDeviceDto == null) { endDeviceDto.setCluster(clusterDto.toId()); ApiResponse clusterResponse = endDevicesInstance.putEndDeviceWithHttpInfo(endDeviceDto, endDeviceDto.getDevEui()); } else { endDeviceDto.setCluster(clusterDto.toId()); ApiResponse clusterResponse = endDevicesInstance.putEndDeviceWithHttpInfo(endDeviceDto, endDeviceDto.getDevEui()); } assertNotNull(endDeviceDto.getDevEui()); //get endDeviceDto = endDevicesInstance.getEndDevice(endDeviceDto.getDevEui(), null); return endDeviceDto; } public static void main(String[] args) throws ApiException { long id1=0, id_Cluster=0; // Say Hello System.out.println("Hello world"); String baseApiUrl = "https://wmcintegration.wanesy.com/"; int connectTimeout = 60000; // Create an ApiClient per thread ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath(baseApiUrl); defaultClient.setConnectTimeout(connectTimeout); defaultClient.setDebugging(true); // login LoginApi loginApi = new LoginApi(defaultClient); UserDto body = new UserDto (); body.setLogin("your_login"); body.setPassword("your_password"); System.out.println("Login Post"); JwtDto jwt = loginApi.login(body); defaultClient.setApiKey("Bearer " + jwt.getToken()); Configuration.setDefaultApiClient(defaultClient); //createCustomer CustomersApi customerInstance = new CustomersApi(); CustomerDto customerDto = new CustomerDto(); try { customerDto.setName("My company"); customerDto = createCustomer(customerDto, customerInstance); id1 = customerDto.getId(); System.out.println("CustomerId="+id1); } catch (ApiException e) { System.err.println("Exception when calling CustomersApi#createCustomer"); e.printStackTrace(); } // getCustomers - a single instance String sort = ""; // Sort value String pageSize = ""; // Page size value String search = "{\"operand\": \"name\", \"operation\": \"EQ\", \"values\": [\"My company\"]}"; // Search condition String fields = ""; // List of fields to display String page = ""; // Page number try { PaginatedDto paginatedDto = customerInstance.getCustomers(fields, page, pageSize, search, sort); assertEquals(Integer.valueOf(1), paginatedDto.getCount()); } catch (ApiException e) { System.err.println("Exception when calling CustomersApi#applicationCustomersGet"); e.printStackTrace(); } // createCluster ClustersApi clusterInstance = new ClustersApi(); ClusterDto clusterDto = new ClusterDto(); try { clusterDto.setName("My Cluster"); clusterDto = createCluster(clusterDto, clusterInstance, customerDto); id_Cluster = clusterDto.getId(); System.out.println("ClusterId="+id_Cluster); } catch (ApiException e) { System.err.println("Exception when calling ClustersApi#createCluster"); e.printStackTrace(); } // getClusters sort = ""; // Sort value pageSize = ""; // Page size value search = "{\"operand\": \"name\", \"operation\": \"EQ\", \"values\": [\"My Cluster\"]}"; // Search condition fields = ""; // List of fields to display page = ""; // Page number try { PaginatedDto paginatedDto = clusterInstance.getClusters(fields, page, pageSize, search, sort); assertEquals(Integer.valueOf(1), paginatedDto.getCount()); } catch (ApiException e) { System.err.println("Exception when calling ClustersApi#getClusters"); e.printStackTrace(); } // getCluster clusterDto = clusterInstance.getCluster(id_Cluster, null); System.out.println("The Cluster Id="+id_Cluster+" has name \""+clusterDto.getName()+"\""); // CreateEndDevice EndDevicesApi endDevicesInstance = new EndDevicesApi(); EndDeviceDto endDeviceDto = new EndDeviceDto(); endDeviceDto = new EndDeviceDto(); endDeviceDto.setName("My end-device"); endDeviceDto.setProfile("walking"); endDeviceDto.setClassType("A"); endDeviceDto.setAdrEnabled(true); endDeviceDto.setRfRegion("EU868"); endDeviceDto.setMacVersion("1.0.1"); endDeviceDto.setRegParamsRevision(""); endDeviceDto.setActivation("ABP"); endDeviceDto.setDevEui("1234567897894561"); endDeviceDto.setAppSKey("12345678978945612345678945612345"); endDeviceDto.setNwkSKey("12345678978945612345678945612345"); endDeviceDto.setDevAddr("12345678"); endDeviceDto.setGeolocation("Inherited"); createEndDevice(customerDto , clusterDto, endDeviceDto, endDevicesInstance); //deleteEndDevice endDevicesInstance.deleteEndDevice(endDeviceDto.getDevEui()); System.out.println("The EndDevice DevEui="+endDeviceDto.getDevEui()+" has been deleted="); // deleteCluster clusterInstance.deleteCluster(id_Cluster); System.out.println("The Cluster Id="+id_Cluster+" has been deleted="); // deleteCustomer customerInstance.deleteCustomer(id1); System.out.println("The customer Id="+id1+" has been deleted"); } } Test result: Hello world Login Post --> POST https://wmcintegration.wanesy.com//gms/application/login HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 150 Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"lastName":"","role":"","avatar":"","login":"your_login","enabled":false,"firstName":"","password":"your_password","validated":false,"phone":"","email":""} --> END POST (150-byte body) <-- HTTP/1.1 201 (826ms) Server: nginx Date: Thu, 04 Jul 2019 14:27:08 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 230 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562250428039 OkHttp-Received-Millis: 1562250428164 {"expiredDate":1562286428135,"tokenType":"Bearer","token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIyODY0Mjh9.U4guqiWANuofbF9r7hIC27RSM84glujzfkt7-a-UIeo"} <-- END HTTP (230-byte body) --> POST https://wmcintegration.wanesy.com//gms/application/customers HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 21 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIyODY0Mjh9.U4guqiWANuofbF9r7hIC27RSM84glujzfkt7-a-UIeo Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"name":"My company"} --> END POST (21-byte body) <-- HTTP/1.1 201 (40ms) Server: nginx Date: Thu, 04 Jul 2019 14:27:08 GMT Content-Length: 0 Connection: keep-alive Location: /application/customers/60 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562250428188 OkHttp-Received-Millis: 1562250428226 <-- END HTTP (0-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/customers/60 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIyODY0Mjh9.U4guqiWANuofbF9r7hIC27RSM84glujzfkt7-a-UIeo Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (38ms) Server: nginx Date: Thu, 04 Jul 2019 14:27:08 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 680 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562250428241 OkHttp-Received-Millis: 1562250428279 {"maxEndDevices":null,"maxUsers":null,"maxGateways":null,"geolocationExpirationDate":null,"name":"My company","logo":null,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"60\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"60\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"60\"]}"},{"rel":"rncKpis","href":"/application/customers/60/kpis"},{"rel":"self","href":"/application/customers/60"}],"id":60,"geolocationAuthorized":false,"billing":false} <-- END HTTP (680-byte body) CustomerId=60 --> GET https://wmcintegration.wanesy.com//gms/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort= HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIyODY0Mjh9.U4guqiWANuofbF9r7hIC27RSM84glujzfkt7-a-UIeo Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (39ms) Server: nginx Date: Thu, 04 Jul 2019 14:27:08 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 1168 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562250428300 OkHttp-Received-Millis: 1562250428339 {"count":1,"pageSize":50,"links":[{"rel":"first","href":"/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort="},{"rel":"last","href":"/application/customers?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20company%22%5D%7D&sort="}],"page":1,"totalCount":1,"list":[{"id":60,"name":"My company","logo":null,"maxGateways":null,"maxEndDevices":null,"maxUsers":null,"geolocationAuthorized":false,"geolocationExpirationDate":null,"billing":false,"links":[{"rel":"clusters","href":"/application/clusters?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"60\"]}"},{"rel":"fleets","href":"/application/fleets?search={\"operand\":\"customer.id\",\"operation\":\"EQ\",\"values\":[\"60\"]}"},{"rel":"gateways","href":"/application/gateways?search={\"operand\":\"fleet.customer.id\",\"operation\":\"EQ\",\"values\":[\"60\"]}"},{"rel":"rncKpis","href":"/application/customers/60/kpis"},{"rel":"self","href":"/application/customers/60"}]}],"nbPages":1} <-- END HTTP (1168-byte body) --> POST https://wmcintegration.wanesy.com//gms/application/clusters HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 42 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIyODY0Mjh9.U4guqiWANuofbF9r7hIC27RSM84glujzfkt7-a-UIeo Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"name":"My Cluster","customer":{"id":60}} --> END POST (42-byte body) <-- HTTP/1.1 201 (42ms) Server: nginx Date: Thu, 04 Jul 2019 14:27:08 GMT Content-Length: 0 Connection: keep-alive Location: /application/clusters/25 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562250428364 OkHttp-Received-Millis: 1562250428404 <-- END HTTP (0-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/clusters/25 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIyODY0Mjh9.U4guqiWANuofbF9r7hIC27RSM84glujzfkt7-a-UIeo Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (38ms) Server: nginx Date: Thu, 04 Jul 2019 14:27:08 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 496 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562250428423 OkHttp-Received-Millis: 1562250428463 {"pushConfiguration":null,"hexa":false,"name":"My Cluster","pushEnabled":false,"geolocEnabled":false,"links":[{"rel":"clusterLastEvents","href":"/application/clusters/25/events/last"},{"rel":"customer","href":"/application/customers/60"},{"rel":"endDevices","href":"/application/endDevices?search={\"operand\":\"cluster.id\",\"operation\":\"EQ\",\"values\":[\"25\"]}"},{"rel":"self","href":"/application/clusters/25"}],"id":25,"customer":{"name":"My company","id":60},"geolocExpirationDate":null} <-- END HTTP (496-byte body) ClusterId=25 --> GET https://wmcintegration.wanesy.com//gms/application/clusters?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20Cluster%22%5D%7D&sort= HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIyODY0Mjh9.U4guqiWANuofbF9r7hIC27RSM84glujzfkt7-a-UIeo Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (38ms) Server: nginx Date: Thu, 04 Jul 2019 14:27:08 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 982 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562250428468 OkHttp-Received-Millis: 1562250428506 {"count":1,"pageSize":50,"links":[{"rel":"first","href":"/application/clusters?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20Cluster%22%5D%7D&sort="},{"rel":"last","href":"/application/clusters?fields=&page=&pageSize=&search=%7B%22operand%22%3A%20%22name%22%2C%20%22operation%22%3A%20%22EQ%22%2C%09%22values%22%3A%20%5B%22My%20Cluster%22%5D%7D&sort="}],"page":1,"totalCount":1,"list":[{"id":25,"customer":{"name":"My company","id":60},"name":"My Cluster","pushEnabled":false,"pushConfiguration":null,"geolocEnabled":false,"geolocExpirationDate":null,"hexa":false,"links":[{"rel":"clusterLastEvents","href":"/application/clusters/25/events/last"},{"rel":"customer","href":"/application/customers/60"},{"rel":"endDevices","href":"/application/endDevices?search={\"operand\":\"cluster.id\",\"operation\":\"EQ\",\"values\":[\"25\"]}"},{"rel":"self","href":"/application/clusters/25"}]}],"nbPages":1} <-- END HTTP (982-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/clusters/25 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIyODY0Mjh9.U4guqiWANuofbF9r7hIC27RSM84glujzfkt7-a-UIeo Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (37ms) Server: nginx Date: Thu, 04 Jul 2019 14:27:08 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 496 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562250428509 OkHttp-Received-Millis: 1562250428546 {"pushConfiguration":null,"hexa":false,"name":"My Cluster","pushEnabled":false,"geolocEnabled":false,"links":[{"rel":"clusterLastEvents","href":"/application/clusters/25/events/last"},{"rel":"customer","href":"/application/customers/60"},{"rel":"endDevices","href":"/application/endDevices?search={\"operand\":\"cluster.id\",\"operation\":\"EQ\",\"values\":[\"25\"]}"},{"rel":"self","href":"/application/clusters/25"}],"id":25,"customer":{"name":"My company","id":60},"geolocExpirationDate":null} <-- END HTTP (496-byte body) The Cluster Id=25 has name "My Cluster" --> PUT https://wmcintegration.wanesy.com//gms/application/endDevices/1234567897894561 HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 345 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIyODY0Mjh9.U4guqiWANuofbF9r7hIC27RSM84glujzfkt7-a-UIeo Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java {"devAddr":"12345678","cluster":{"id":25},"appSKey":"12345678978945612345678945612345","nwkSKey":"12345678978945612345678945612345","devEui":"1234567897894561","adrEnabled":true,"rfRegion":"EU868","profile":"walking","regParamsRevision":"","name":"My end-device","macVersion":"1.0.1","activation":"ABP","classType":"A","geolocation":"Inherited"} --> END PUT (345-byte body) <-- HTTP/1.1 201 (48ms) Server: nginx Date: Thu, 04 Jul 2019 14:27:08 GMT Content-Length: 0 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562250428561 OkHttp-Received-Millis: 1562250428607 <-- END HTTP (0-byte body) --> GET https://wmcintegration.wanesy.com//gms/application/endDevices/1234567897894561 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZGEiLCJyb2xlIjoiU1VQRVJfQURNSU4iLCJjdXN0b21lcklkIjoxLCJpc3MiOiJnbXMiLCJleHAiOjE1NjIyODY0Mjh9.U4guqiWANuofbF9r7hIC27RSM84glujzfkt7-a-UIeo Accept: application/json User-Agent: Swagger-Codegen/1.0.0/java --> END GET <-- HTTP/1.1 200 (37ms) Server: nginx Date: Thu, 04 Jul 2019 14:27:08 GMT Content-Type: application/json; qs=0;charset=UTF-8 Content-Length: 2332 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Access-Control-Expose-Headers: Location OkHttp-Sent-Millis: 1562250428614 OkHttp-Received-Millis: 1562250428650 {"devAddr":"12345678","cluster":{"name":"My Cluster","links":[{"rel":"clusterLastEvents","href":"/application/clusters/25/events/last"},{"rel":"customer","href":"/application/customers/60"},{"rel":"endDevices","href":"/application/endDevices?search={\"operand\":\"cluster.id\",\"operation\":\"EQ\",\"values\":[\"25\"]}"},{"rel":"self","href":"/application/clusters/25"}],"id":25},"altitude":null,"appSKey":"12345678978945612345678945612345","pingSlotFreq":null,"nwkSKey":"12345678978945612345678945612345","latitude":null,"fcntUp":0,"devEui":"1234567897894561","fNwkSIntKey":null,"adrEnabled":true,"cfList":null,"lastDataUpDate":null,"appKey":null,"links":[{"rel":"cluster","href":"/application/clusters/25"},{"rel":"createMacCommand","href":"/application/endDevices/1234567897894561/macCommands"},{"rel":"customer","href":"/application/customers/60"},{"rel":"dataDown","href":"/application/dataDown?search={\"operand\":\"endDevice.devEui\",\"operation\":\"EQ\",\"values\":[\"1234567897894561\"]}"},{"rel":"dataUp","href":"/application/dataUp?search={\"operand\":\"endDevice.devEui\",\"operation\":\"EQ\",\"values\":[\"1234567897894561\"]}"},{"rel":"endDeviceEvents","href":"/application/endDevices/1234567897894561/events"},{"rel":"endDeviceGatewaysPositions","href":"/application/endDevices/1234567897894561/positions/gateways"},{"rel":"endDeviceLastEvents","href":"/application/endDevices/1234567897894561/events/last"},{"rel":"endDeviceLastGateways","href":"/application/endDevices/1234567897894561/gateways/last"},{"rel":"endDeviceMessages","href":"/application/endDevices/1234567897894561/messages"},{"rel":"endDevicePositions","href":"/application/endDevices/1234567897894561/positions"},{"rel":"resetEndDeviceFrameCounters","href":"/application/endDevices/1234567897894561/resetFrameCounters"},{"rel":"rncKpis","href":"/application/endDevices/1234567897894561/kpis"},{"rel":"self","href":"/application/endDevices/1234567897894561"}],"rx1DrOffset":null,"longitude":null,"pingSlotDr":null,"rx1Delay":null,"rfRegion":"EU868","profile":"WALKING","rx2Dr":null,"rx2Freq":null,"lastDataDownDate":null,"sNwkSIntKey":null,"rxWindows":null,"regParamsRevision":"","name":"My end-device","appEui":null,"fcntDown":0,"activation":"ABP","macVersion":"1.0.1","classType":"A","dwellTime":null,"geolocation":"INHERITED","status":"NEVER_SEEN"} <-- END HTTP (2332-byte body) The result on the WMC dashboard (after removing the delete methods): {{:wiki3:testcreateenddevice2.png|}} \\ \\ ===== Ressources ===== ^ DTO ^ API ^ TEST CODE ^ | {{ :wiki3:userdto.java |}} {{ :wiki3:jwtdto.java |}} | {{ :wiki3:loginapi.java |}} | {{ :wiki3:test_loginapi_3.1.java |}} | | {{:wiki3:customerdto.java |}} | {{:wiki3:customersapi.java |}} | {{:wiki3:test_customerapi_3.1.java |}} | | {{:wiki3:fleetdto.java |}} | {{:wiki3:fleetsapi.java |}} | {{:wiki3:test_fleetapi_3.1.java |}} | | {{:wiki3:gatewaydto.java |}} | {{:wiki3:gatewaysapi.java |}} | {{:wiki3:test_gatewayapi_3.1.java |}} | | {{ :wiki3:clusterdto.java |}} | {{ :wiki3:test_clusterapi_3.1.java |}} | {{ :wiki3:test_clusterapi_3.1.java |}} | | {{ :wiki3:enddevicedto.java |}} | {{ :wiki3:enddevicesapi.java |}} | {{ :wiki3:test_enddeviceapi_3.1.java |}} | ^ Others ressources ^ | {{:wiki3:abstracttest.java|}} |