diff --git a/clients/margin-trading/CHANGELOG.md b/clients/margin-trading/CHANGELOG.md index 1e7ccf76..486e5396 100644 --- a/clients/margin-trading/CHANGELOG.md +++ b/clients/margin-trading/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 2.0.0 - 2025-06-17 + +### Added (1) + +- `get_list_schedule()` (`GET /sapi/v1/margin/list-schedule`) + ## 1.1.0 - 2025-05-02 - Update `binance/common` module to version `1.1.0`. diff --git a/clients/margin-trading/docs/rest-api/migration-guide.md b/clients/margin-trading/docs/rest-api/migration-guide.md index 87af4364..c5291cbe 100644 --- a/clients/margin-trading/docs/rest-api/migration-guide.md +++ b/clients/margin-trading/docs/rest-api/migration-guide.md @@ -22,7 +22,7 @@ With the transition to a modularized structure, the Binance Connector has been s io.github.binance binance-margin-trading - 1.1.0 + 2.0.0 ``` @@ -91,7 +91,7 @@ by: io.github.binance binance-margin-trading - 1.1.0 + 2.0.0 ``` diff --git a/clients/margin-trading/example_rest.md b/clients/margin-trading/example_rest.md index 3d659916..030d0b9c 100644 --- a/clients/margin-trading/example_rest.md +++ b/clients/margin-trading/example_rest.md @@ -48,6 +48,8 @@ [GET /sapi/v1/margin/delist-schedule](https://developers.binance.com/docs/margin_trading/market-data/Get-Delist-Schedule) - getDelistSchedule - [GetDelistScheduleExample.java:47](/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/marketdata/GetDelistScheduleExample.java#L47) +[GET /sapi/v1/margin/list-schedule](https://developers.binance.com/docs/margin_trading/market-data/Get-list-Schedule) - getListSchedule - [GetListScheduleExample.java:48](/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/marketdata/GetListScheduleExample.java#L48) + [GET /sapi/v1/margin/isolatedMarginTier](https://developers.binance.com/docs/margin_trading/market-data/Query-Isolated-Margin-Tier-Data) - queryIsolatedMarginTierData - [QueryIsolatedMarginTierDataExample.java:48](/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/marketdata/QueryIsolatedMarginTierDataExample.java#L48) [GET /sapi/v1/margin/leverageBracket](https://developers.binance.com/docs/margin_trading/market-data/Query-Liability-Coin-Leverage-Bracket-in-Cross-Margin-Pro-Mode) - queryLiabilityCoinLeverageBracketInCrossMarginProMode - [QueryLiabilityCoinLeverageBracketInCrossMarginProModeExample.java:47](/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/marketdata/QueryLiabilityCoinLeverageBracketInCrossMarginProModeExample.java#L47) diff --git a/clients/margin-trading/pom.xml b/clients/margin-trading/pom.xml index a0590571..fbeaebc2 100644 --- a/clients/margin-trading/pom.xml +++ b/clients/margin-trading/pom.xml @@ -5,7 +5,7 @@ 4.0.0 binance-margin-trading margin-trading - 1.1.0 + 2.0.0 jar @@ -31,7 +31,7 @@ io.github.binance binance-common - 1.1.0 + 1.2.1 \ No newline at end of file diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/JSON.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/JSON.java index 8add2601..1e592b9d 100644 --- a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/JSON.java +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/JSON.java @@ -196,6 +196,12 @@ private static Class getClassByDiscriminator( gsonBuilder.registerTypeAdapterFactory( new com.binance.connector.client.margin_trading.rest.model .GetInterestHistoryResponseRowsInner.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new com.binance.connector.client.margin_trading.rest.model.GetListScheduleResponse + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new com.binance.connector.client.margin_trading.rest.model + .GetListScheduleResponseInner.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory( new com.binance.connector.client.margin_trading.rest.model .GetSmallLiabilityExchangeCoinListResponse.CustomTypeAdapterFactory()); diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/AccountApi.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/AccountApi.java index 2c25d2b2..6fa126b9 100644 --- a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/AccountApi.java +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/AccountApi.java @@ -55,7 +55,7 @@ public class AccountApi { private static final String USER_AGENT = String.format( - "binance-margin-trading/1.1.0 (Java/%s; %s; %s)", + "binance-margin-trading/2.0.0 (Java/%s; %s; %s)", SystemUtil.getJavaVersion(), SystemUtil.getOs(), SystemUtil.getArch()); private static final boolean HAS_TIME_UNIT = false; diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/BorrowRepayApi.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/BorrowRepayApi.java index e0af3706..7ad106ac 100644 --- a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/BorrowRepayApi.java +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/BorrowRepayApi.java @@ -49,7 +49,7 @@ public class BorrowRepayApi { private static final String USER_AGENT = String.format( - "binance-margin-trading/1.1.0 (Java/%s; %s; %s)", + "binance-margin-trading/2.0.0 (Java/%s; %s; %s)", SystemUtil.getJavaVersion(), SystemUtil.getOs(), SystemUtil.getArch()); private static final boolean HAS_TIME_UNIT = false; diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/MarginTradingRestApi.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/MarginTradingRestApi.java index 664e7566..01e5c5dd 100644 --- a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/MarginTradingRestApi.java +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/MarginTradingRestApi.java @@ -23,6 +23,7 @@ import com.binance.connector.client.margin_trading.rest.model.GetForceLiquidationRecordResponse; import com.binance.connector.client.margin_trading.rest.model.GetFutureHourlyInterestRateResponse; import com.binance.connector.client.margin_trading.rest.model.GetInterestHistoryResponse; +import com.binance.connector.client.margin_trading.rest.model.GetListScheduleResponse; import com.binance.connector.client.margin_trading.rest.model.GetSmallLiabilityExchangeCoinListResponse; import com.binance.connector.client.margin_trading.rest.model.GetSmallLiabilityExchangeHistoryResponse; import com.binance.connector.client.margin_trading.rest.model.GetSummaryOfMarginAccountResponse; @@ -716,6 +717,30 @@ public ApiResponse getDelistSchedule(Long recvWindow) return marketDataApi.getDelistSchedule(recvWindow); } + /** + * Get list Schedule (MARKET_DATA) Get the upcoming tokens or symbols listing schedule for Cross + * Margin and Isolated Margin. Weight: 100 + * + * @param recvWindow No more than 60000 (optional) + * @return ApiResponse<GetListScheduleResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the + * response body + * @http.response.details + * + * + * + * + *
Response Details
Status Code Description Response Headers
200 Get list Schedule -
+ * + * @see Get + * list Schedule (MARKET_DATA) Documentation + */ + public ApiResponse getListSchedule(Long recvWindow) + throws ApiException { + return marketDataApi.getListSchedule(recvWindow); + } + /** * Query Isolated Margin Tier Data (USER_DATA) Get isolated margin tier data collection with any * tier as https://www.binance.com/en/margin-data Weight: 1(IP) diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/MarketDataApi.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/MarketDataApi.java index b1d22ce4..b61fb8ce 100644 --- a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/MarketDataApi.java +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/MarketDataApi.java @@ -24,6 +24,7 @@ import com.binance.connector.client.margin_trading.rest.model.GetAllIsolatedMarginSymbolResponse; import com.binance.connector.client.margin_trading.rest.model.GetAllMarginAssetsResponse; import com.binance.connector.client.margin_trading.rest.model.GetDelistScheduleResponse; +import com.binance.connector.client.margin_trading.rest.model.GetListScheduleResponse; import com.binance.connector.client.margin_trading.rest.model.QueryIsolatedMarginTierDataResponse; import com.binance.connector.client.margin_trading.rest.model.QueryLiabilityCoinLeverageBracketInCrossMarginProModeResponse; import com.binance.connector.client.margin_trading.rest.model.QueryMarginAvailableInventoryResponse; @@ -50,7 +51,7 @@ public class MarketDataApi { private static final String USER_AGENT = String.format( - "binance-margin-trading/1.1.0 (Java/%s; %s; %s)", + "binance-margin-trading/2.0.0 (Java/%s; %s; %s)", SystemUtil.getJavaVersion(), SystemUtil.getOs(), SystemUtil.getArch()); private static final boolean HAS_TIME_UNIT = false; @@ -754,6 +755,139 @@ public ApiResponse getDelistSchedule(Long recvWindow) return localVarApiClient.execute(localVarCall, localVarReturnType); } + /** + * Build call for getListSchedule + * + * @param recvWindow No more than 60000 (optional) + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + * + * + * + * + *
Response Details
Status Code Description Response Headers
200 Get list Schedule -
+ * + * @see Get + * list Schedule (MARKET_DATA) Documentation + */ + private okhttp3.Call getListScheduleCall(Long recvWindow) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] {}; + + // Determine Base Path to Use + if (localCustomBaseUrl != null) { + basePath = localCustomBaseUrl; + } else if (localBasePaths.length > 0) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/sapi/v1/margin/list-schedule"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + if (recvWindow != null) { + localVarQueryParams.addAll(localVarApiClient.parameterToPair("recvWindow", recvWindow)); + } + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {"application/x-www-form-urlencoded"}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + List localVarAuthNames = new ArrayList<>(); + localVarAuthNames.addAll(Arrays.asList(new String[] {})); + if (HAS_TIME_UNIT) { + localVarAuthNames.add("timeUnit"); + } + return localVarApiClient.buildCall( + basePath, + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames.toArray(new String[0])); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getListScheduleValidateBeforeCall(Long recvWindow) throws ApiException { + try { + Validator validator = + Validation.byDefaultProvider() + .configure() + .messageInterpolator(new ParameterMessageInterpolator()) + .buildValidatorFactory() + .getValidator(); + ExecutableValidator executableValidator = validator.forExecutables(); + + Object[] parameterValues = {recvWindow}; + Method method = this.getClass().getMethod("getListSchedule", Long.class); + Set> violations = + executableValidator.validateParameters(this, method, parameterValues); + + if (violations.size() == 0) { + return getListScheduleCall(recvWindow); + } else { + throw new ConstraintViolationException((Set) violations); + } + } catch (NoSuchMethodException e) { + e.printStackTrace(); + throw new ApiException(e.getMessage()); + } catch (SecurityException e) { + e.printStackTrace(); + throw new ApiException(e.getMessage()); + } + } + + /** + * Get list Schedule (MARKET_DATA) Get the upcoming tokens or symbols listing schedule for Cross + * Margin and Isolated Margin. Weight: 100 + * + * @param recvWindow No more than 60000 (optional) + * @return ApiResponse<GetListScheduleResponse> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the + * response body + * @http.response.details + * + * + * + * + *
Response Details
Status Code Description Response Headers
200 Get list Schedule -
+ * + * @see Get + * list Schedule (MARKET_DATA) Documentation + */ + public ApiResponse getListSchedule(Long recvWindow) + throws ApiException { + okhttp3.Call localVarCall = getListScheduleValidateBeforeCall(recvWindow); + java.lang.reflect.Type localVarReturnType = + new TypeToken() {}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + /** * Build call for queryIsolatedMarginTierData * diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/RiskDataStreamApi.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/RiskDataStreamApi.java index d0256e4e..a1d20a8c 100644 --- a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/RiskDataStreamApi.java +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/RiskDataStreamApi.java @@ -44,7 +44,7 @@ public class RiskDataStreamApi { private static final String USER_AGENT = String.format( - "binance-margin-trading/1.1.0 (Java/%s; %s; %s)", + "binance-margin-trading/2.0.0 (Java/%s; %s; %s)", SystemUtil.getJavaVersion(), SystemUtil.getOs(), SystemUtil.getArch()); private static final boolean HAS_TIME_UNIT = false; diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TradeApi.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TradeApi.java index 236ff530..7de4c1e3 100644 --- a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TradeApi.java +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TradeApi.java @@ -74,7 +74,7 @@ public class TradeApi { private static final String USER_AGENT = String.format( - "binance-margin-trading/1.1.0 (Java/%s; %s; %s)", + "binance-margin-trading/2.0.0 (Java/%s; %s; %s)", SystemUtil.getJavaVersion(), SystemUtil.getOs(), SystemUtil.getArch()); private static final boolean HAS_TIME_UNIT = false; diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TradeDataStreamApi.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TradeDataStreamApi.java index e4fce376..f00c2e9f 100644 --- a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TradeDataStreamApi.java +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TradeDataStreamApi.java @@ -47,7 +47,7 @@ public class TradeDataStreamApi { private static final String USER_AGENT = String.format( - "binance-margin-trading/1.1.0 (Java/%s; %s; %s)", + "binance-margin-trading/2.0.0 (Java/%s; %s; %s)", SystemUtil.getJavaVersion(), SystemUtil.getOs(), SystemUtil.getArch()); private static final boolean HAS_TIME_UNIT = false; diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TransferApi.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TransferApi.java index 9da3da5c..5995fbd2 100644 --- a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TransferApi.java +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/api/TransferApi.java @@ -43,7 +43,7 @@ public class TransferApi { private static final String USER_AGENT = String.format( - "binance-margin-trading/1.1.0 (Java/%s; %s; %s)", + "binance-margin-trading/2.0.0 (Java/%s; %s; %s)", SystemUtil.getJavaVersion(), SystemUtil.getOs(), SystemUtil.getArch()); private static final boolean HAS_TIME_UNIT = false; diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/model/GetListScheduleResponse.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/model/GetListScheduleResponse.java new file mode 100644 index 00000000..0d0b8e72 --- /dev/null +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/model/GetListScheduleResponse.java @@ -0,0 +1,185 @@ +/* + * Binance Margin Trading REST API + * OpenAPI Specification for the Binance Margin Trading REST API + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.binance.connector.client.margin_trading.rest.model; + +import com.binance.connector.client.margin_trading.rest.JSON; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import jakarta.validation.constraints.*; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import org.hibernate.validator.constraints.*; + +/** GetListScheduleResponse */ +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.12.0") +public class GetListScheduleResponse extends ArrayList { + public GetListScheduleResponse() {} + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + return super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode()); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class GetListScheduleResponse {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append("}"); + return sb.toString(); + } + + public String toUrlQueryString() { + StringBuilder sb = new StringBuilder(); + + return sb.toString(); + } + + public static String urlEncode(String s) { + try { + return URLEncoder.encode(s, StandardCharsets.UTF_8.name()); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(StandardCharsets.UTF_8.name() + " is unsupported", e); + } + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to GetListScheduleResponse + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!GetListScheduleResponse.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in GetListScheduleResponse is not found" + + " in the empty JSON string", + GetListScheduleResponse.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!GetListScheduleResponse.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the" + + " `GetListScheduleResponse` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!GetListScheduleResponse.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'GetListScheduleResponse' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(GetListScheduleResponse.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, GetListScheduleResponse value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public GetListScheduleResponse read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + // validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of GetListScheduleResponse given an JSON string + * + * @param jsonString JSON string + * @return An instance of GetListScheduleResponse + * @throws IOException if the JSON string is invalid with respect to GetListScheduleResponse + */ + public static GetListScheduleResponse fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, GetListScheduleResponse.class); + } + + /** + * Convert an instance of GetListScheduleResponse to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/model/GetListScheduleResponseInner.java b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/model/GetListScheduleResponseInner.java new file mode 100644 index 00000000..d6744c7b --- /dev/null +++ b/clients/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/model/GetListScheduleResponseInner.java @@ -0,0 +1,344 @@ +/* + * Binance Margin Trading REST API + * OpenAPI Specification for the Binance Margin Trading REST API + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.binance.connector.client.margin_trading.rest.model; + +import com.binance.connector.client.margin_trading.rest.JSON; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.annotations.SerializedName; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import jakarta.validation.constraints.*; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; +import org.hibernate.validator.constraints.*; + +/** GetListScheduleResponseInner */ +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.12.0") +public class GetListScheduleResponseInner { + public static final String SERIALIZED_NAME_LIST_TIME = "listTime"; + + @SerializedName(SERIALIZED_NAME_LIST_TIME) + @jakarta.annotation.Nullable + private Long listTime; + + public static final String SERIALIZED_NAME_CROSS_MARGIN_ASSETS = "crossMarginAssets"; + + @SerializedName(SERIALIZED_NAME_CROSS_MARGIN_ASSETS) + @jakarta.annotation.Nullable + private List crossMarginAssets; + + public static final String SERIALIZED_NAME_ISOLATED_MARGIN_SYMBOLS = "isolatedMarginSymbols"; + + @SerializedName(SERIALIZED_NAME_ISOLATED_MARGIN_SYMBOLS) + @jakarta.annotation.Nullable + private List isolatedMarginSymbols; + + public GetListScheduleResponseInner() {} + + public GetListScheduleResponseInner listTime(@jakarta.annotation.Nullable Long listTime) { + this.listTime = listTime; + return this; + } + + /** + * Get listTime + * + * @return listTime + */ + @jakarta.annotation.Nullable + public Long getListTime() { + return listTime; + } + + public void setListTime(@jakarta.annotation.Nullable Long listTime) { + this.listTime = listTime; + } + + public GetListScheduleResponseInner crossMarginAssets( + @jakarta.annotation.Nullable List crossMarginAssets) { + this.crossMarginAssets = crossMarginAssets; + return this; + } + + public GetListScheduleResponseInner addCrossMarginAssetsItem(String crossMarginAssetsItem) { + if (this.crossMarginAssets == null) { + this.crossMarginAssets = new ArrayList<>(); + } + this.crossMarginAssets.add(crossMarginAssetsItem); + return this; + } + + /** + * Get crossMarginAssets + * + * @return crossMarginAssets + */ + @jakarta.annotation.Nullable + public List getCrossMarginAssets() { + return crossMarginAssets; + } + + public void setCrossMarginAssets(@jakarta.annotation.Nullable List crossMarginAssets) { + this.crossMarginAssets = crossMarginAssets; + } + + public GetListScheduleResponseInner isolatedMarginSymbols( + @jakarta.annotation.Nullable List isolatedMarginSymbols) { + this.isolatedMarginSymbols = isolatedMarginSymbols; + return this; + } + + public GetListScheduleResponseInner addIsolatedMarginSymbolsItem( + String isolatedMarginSymbolsItem) { + if (this.isolatedMarginSymbols == null) { + this.isolatedMarginSymbols = new ArrayList<>(); + } + this.isolatedMarginSymbols.add(isolatedMarginSymbolsItem); + return this; + } + + /** + * Get isolatedMarginSymbols + * + * @return isolatedMarginSymbols + */ + @jakarta.annotation.Nullable + public List getIsolatedMarginSymbols() { + return isolatedMarginSymbols; + } + + public void setIsolatedMarginSymbols( + @jakarta.annotation.Nullable List isolatedMarginSymbols) { + this.isolatedMarginSymbols = isolatedMarginSymbols; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GetListScheduleResponseInner getListScheduleResponseInner = + (GetListScheduleResponseInner) o; + return Objects.equals(this.listTime, getListScheduleResponseInner.listTime) + && Objects.equals( + this.crossMarginAssets, getListScheduleResponseInner.crossMarginAssets) + && Objects.equals( + this.isolatedMarginSymbols, + getListScheduleResponseInner.isolatedMarginSymbols); + } + + @Override + public int hashCode() { + return Objects.hash(listTime, crossMarginAssets, isolatedMarginSymbols); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class GetListScheduleResponseInner {\n"); + sb.append(" listTime: ").append(toIndentedString(listTime)).append("\n"); + sb.append(" crossMarginAssets: ").append(toIndentedString(crossMarginAssets)).append("\n"); + sb.append(" isolatedMarginSymbols: ") + .append(toIndentedString(isolatedMarginSymbols)) + .append("\n"); + sb.append("}"); + return sb.toString(); + } + + public String toUrlQueryString() { + StringBuilder sb = new StringBuilder(); + + Object listTimeValue = getListTime(); + String listTimeValueAsString = ""; + listTimeValueAsString = listTimeValue.toString(); + sb.append("listTime=").append(urlEncode(listTimeValueAsString)).append(""); + Object crossMarginAssetsValue = getCrossMarginAssets(); + String crossMarginAssetsValueAsString = ""; + crossMarginAssetsValueAsString = + (String) + ((Collection) crossMarginAssetsValue) + .stream().map(Object::toString).collect(Collectors.joining(",")); + sb.append("crossMarginAssets=") + .append(urlEncode(crossMarginAssetsValueAsString)) + .append(""); + Object isolatedMarginSymbolsValue = getIsolatedMarginSymbols(); + String isolatedMarginSymbolsValueAsString = ""; + isolatedMarginSymbolsValueAsString = + (String) + ((Collection) isolatedMarginSymbolsValue) + .stream().map(Object::toString).collect(Collectors.joining(",")); + sb.append("isolatedMarginSymbols=") + .append(urlEncode(isolatedMarginSymbolsValueAsString)) + .append(""); + return sb.toString(); + } + + public static String urlEncode(String s) { + try { + return URLEncoder.encode(s, StandardCharsets.UTF_8.name()); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(StandardCharsets.UTF_8.name() + " is unsupported", e); + } + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(); + openapiFields.add("listTime"); + openapiFields.add("crossMarginAssets"); + openapiFields.add("isolatedMarginSymbols"); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to + * GetListScheduleResponseInner + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!GetListScheduleResponseInner.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in GetListScheduleResponseInner is not" + + " found in the empty JSON string", + GetListScheduleResponseInner.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!GetListScheduleResponseInner.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the" + + " `GetListScheduleResponseInner` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + // ensure the optional json data is an array if present + if (jsonObj.get("crossMarginAssets") != null + && !jsonObj.get("crossMarginAssets").isJsonNull() + && !jsonObj.get("crossMarginAssets").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `crossMarginAssets` to be an array in the JSON" + + " string but got `%s`", + jsonObj.get("crossMarginAssets").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("isolatedMarginSymbols") != null + && !jsonObj.get("isolatedMarginSymbols").isJsonNull() + && !jsonObj.get("isolatedMarginSymbols").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `isolatedMarginSymbols` to be an array in the JSON" + + " string but got `%s`", + jsonObj.get("isolatedMarginSymbols").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!GetListScheduleResponseInner.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'GetListScheduleResponseInner' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter( + this, TypeToken.get(GetListScheduleResponseInner.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, GetListScheduleResponseInner value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public GetListScheduleResponseInner read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + // validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of GetListScheduleResponseInner given an JSON string + * + * @param jsonString JSON string + * @return An instance of GetListScheduleResponseInner + * @throws IOException if the JSON string is invalid with respect to + * GetListScheduleResponseInner + */ + public static GetListScheduleResponseInner fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, GetListScheduleResponseInner.class); + } + + /** + * Convert an instance of GetListScheduleResponseInner to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/examples/margin-trading/pom.xml b/examples/margin-trading/pom.xml index fe20f32a..821b33ea 100644 --- a/examples/margin-trading/pom.xml +++ b/examples/margin-trading/pom.xml @@ -31,7 +31,7 @@ io.github.binance binance-margin-trading - 1.1.0 + 2.0.0 \ No newline at end of file diff --git a/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/marketdata/GetListScheduleExample.java b/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/marketdata/GetListScheduleExample.java new file mode 100644 index 00000000..8e8a790d --- /dev/null +++ b/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/marketdata/GetListScheduleExample.java @@ -0,0 +1,53 @@ +/* + * Binance Spot REST API + * OpenAPI Specifications for the Binance Spot REST API API documents: - [Github rest-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md) - [General API information for rest-api on website](https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-api-information) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.binance.connector.client.margin_trading.rest.marketdata; + +import com.binance.connector.client.common.ApiException; +import com.binance.connector.client.common.ApiResponse; +import com.binance.connector.client.common.configuration.ClientConfiguration; +import com.binance.connector.client.common.configuration.SignatureConfiguration; +import com.binance.connector.client.margin_trading.rest.MarginTradingRestApiUtil; +import com.binance.connector.client.margin_trading.rest.api.MarginTradingRestApi; +import com.binance.connector.client.margin_trading.rest.model.GetListScheduleResponse; + +/** API examples for MarketDataApi */ +public class GetListScheduleExample { + private MarginTradingRestApi api; + + public MarginTradingRestApi getApi() { + if (api == null) { + ClientConfiguration clientConfiguration = + MarginTradingRestApiUtil.getClientConfiguration(); + SignatureConfiguration signatureConfiguration = new SignatureConfiguration(); + signatureConfiguration.setApiKey("apiKey"); + signatureConfiguration.setPrivateKey("path/to/private.key"); + clientConfiguration.setSignatureConfiguration(signatureConfiguration); + api = new MarginTradingRestApi(clientConfiguration); + } + return api; + } + + /** + * Get list Schedule (MARKET_DATA) + * + *

Get the upcoming tokens or symbols listing schedule for Cross Margin and Isolated Margin. + * Weight: 100 + * + * @throws ApiException if the Api call fails + */ + public void getListScheduleExample() throws ApiException { + Long recvWindow = 5000L; + ApiResponse response = getApi().getListSchedule(recvWindow); + System.out.println(response.getData()); + } +} diff --git a/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOcoExample.java b/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOcoExample.java index df5187ad..2994c68b 100644 --- a/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOcoExample.java +++ b/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOcoExample.java @@ -52,9 +52,9 @@ public void marginAccountNewOcoExample() throws ApiException { MarginAccountNewOcoRequest marginAccountNewOcoRequest = new MarginAccountNewOcoRequest(); marginAccountNewOcoRequest.symbol(""); marginAccountNewOcoRequest.side(Side.BUY); - marginAccountNewOcoRequest.quantity(1d); - marginAccountNewOcoRequest.price(1d); - marginAccountNewOcoRequest.stopPrice(1d); + marginAccountNewOcoRequest.quantity(1.0d); + marginAccountNewOcoRequest.price(1.0d); + marginAccountNewOcoRequest.stopPrice(1.0d); ApiResponse response = getApi().marginAccountNewOco(marginAccountNewOcoRequest); System.out.println(response.getData()); diff --git a/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOtoExample.java b/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOtoExample.java index 0fafc7ce..5f867d93 100644 --- a/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOtoExample.java +++ b/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOtoExample.java @@ -65,12 +65,12 @@ public void marginAccountNewOtoExample() throws ApiException { marginAccountNewOtoRequest.symbol(""); marginAccountNewOtoRequest.workingType(""); marginAccountNewOtoRequest.workingSide(""); - marginAccountNewOtoRequest.workingPrice(1d); - marginAccountNewOtoRequest.workingQuantity(1d); - marginAccountNewOtoRequest.workingIcebergQty(1d); + marginAccountNewOtoRequest.workingPrice(1.0d); + marginAccountNewOtoRequest.workingQuantity(1.0d); + marginAccountNewOtoRequest.workingIcebergQty(1.0d); marginAccountNewOtoRequest.pendingType("Order Types"); marginAccountNewOtoRequest.pendingSide(""); - marginAccountNewOtoRequest.pendingQuantity(1d); + marginAccountNewOtoRequest.pendingQuantity(1.0d); ApiResponse response = getApi().marginAccountNewOto(marginAccountNewOtoRequest); System.out.println(response.getData()); diff --git a/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOtocoExample.java b/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOtocoExample.java index 54035e8d..cbbfaa2e 100644 --- a/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOtocoExample.java +++ b/examples/margin-trading/src/main/java/com/binance/connector/client/margin_trading/rest/trade/MarginAccountNewOtocoExample.java @@ -63,10 +63,10 @@ public void marginAccountNewOtocoExample() throws ApiException { marginAccountNewOtocoRequest.symbol(""); marginAccountNewOtocoRequest.workingType(""); marginAccountNewOtocoRequest.workingSide(""); - marginAccountNewOtocoRequest.workingPrice(1d); - marginAccountNewOtocoRequest.workingQuantity(1d); + marginAccountNewOtocoRequest.workingPrice(1.0d); + marginAccountNewOtocoRequest.workingQuantity(1.0d); marginAccountNewOtocoRequest.pendingSide(""); - marginAccountNewOtocoRequest.pendingQuantity(1d); + marginAccountNewOtocoRequest.pendingQuantity(1.0d); marginAccountNewOtocoRequest.pendingAboveType(""); ApiResponse response = getApi().marginAccountNewOtoco(marginAccountNewOtocoRequest);