diff --git a/services/serverbackup/README.md b/services/serverbackup/README.md new file mode 100644 index 0000000..26a0bd3 --- /dev/null +++ b/services/serverbackup/README.md @@ -0,0 +1,85 @@ +# STACKIT Java SDK for STACKIT Server Backup Management API + +- API version: 2.0 + +API endpoints for Server Backup Operations on STACKIT Servers. + + +This package is part of the STACKIT Java SDK. For additional information, please visit the [GitHub repository](https://github.com/stackitcloud/stackit-sdk-java) of the SDK. + +## Installation from Maven Central (recommended) + +The release artifacts for this SDK submodule are available on [Maven Central](https://central.sonatype.com/artifact/cloud.stackit.sdk/serverbackup). + +### Maven users + +Add this dependency to your project's POM: + +```xml + + cloud.stackit.sdk + serverbackup + + compile + +``` + +### Gradle users + +Add this dependency to your project's build file: + +```groovy + repositories { + mavenCentral() + } + + dependencies { + implementation "cloud.stackit.sdk:serverbackup:" + } +``` + +## Installation from local build + +Building the API client library requires: +1. Java SDK (version 11 to 21 should be supported) installed on your system + +To install the API client library to your local Maven repository, simply execute: + +```shell +./gradlew services:serverbackup:publishToMavenLocal +``` + +### Maven users + +Add this dependency to your project's POM: + +```xml + + cloud.stackit.sdk + serverbackup + + compile + +``` + +### Gradle users + +Add this dependency to your project's build file: + +```groovy + repositories { + mavenLocal() + } + + dependencies { + implementation "cloud.stackit.sdk:serverbackup:" + } +``` + +## Getting Started + +See the [serverbackup examples](https://github.com/stackitcloud/stackit-sdk-java/tree/main/examples/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/examples). + +## Recommendation + +It's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issues. diff --git a/services/serverbackup/build.gradle b/services/serverbackup/build.gradle new file mode 100644 index 0000000..10cd648 --- /dev/null +++ b/services/serverbackup/build.gradle @@ -0,0 +1,19 @@ + +ext { + jakarta_annotation_version = "1.3.5" +} + +dependencies { + implementation "com.google.code.findbugs:jsr305:3.0.2" + implementation 'com.squareup.okhttp3:okhttp:4.12.0' + implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0' + implementation 'com.google.code.gson:gson:2.9.1' + implementation 'io.gsonfire:gson-fire:1.9.0' + implementation 'jakarta.ws.rs:jakarta.ws.rs-api:2.1.6' + implementation 'org.openapitools:jackson-databind-nullable:0.2.6' + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.17.0' + implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.3' + testImplementation 'org.mockito:mockito-core:3.12.4' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.3' +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ApiCallback.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ApiCallback.java new file mode 100644 index 0000000..ced9b70 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ApiCallback.java @@ -0,0 +1,60 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import cloud.stackit.sdk.core.exception.ApiException; +import java.util.List; +import java.util.Map; + +/** + * Callback for asynchronous API call. + * + * @param The return type + */ +public interface ApiCallback { + /** + * This is called when the API call fails. + * + * @param e The exception causing the failure + * @param statusCode Status code of the response if available, otherwise it would be 0 + * @param responseHeaders Headers of the response if available, otherwise it would be null + */ + void onFailure(ApiException e, int statusCode, Map> responseHeaders); + + /** + * This is called when the API call succeeded. + * + * @param result The result deserialized from response + * @param statusCode Status code of the response + * @param responseHeaders Headers of the response + */ + void onSuccess(T result, int statusCode, Map> responseHeaders); + + /** + * This is called when the API upload processing. + * + * @param bytesWritten bytes Written + * @param contentLength content length of request body + * @param done write end + */ + void onUploadProgress(long bytesWritten, long contentLength, boolean done); + + /** + * This is called when the API download processing. + * + * @param bytesRead bytes Read + * @param contentLength content length of the response + * @param done Read end + */ + void onDownloadProgress(long bytesRead, long contentLength, boolean done); +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ApiClient.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ApiClient.java new file mode 100644 index 0000000..7b50c8f --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ApiClient.java @@ -0,0 +1,1548 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import cloud.stackit.sdk.core.KeyFlowAuthenticator; +import cloud.stackit.sdk.core.config.CoreConfiguration; +import cloud.stackit.sdk.core.exception.ApiException; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Type; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.GeneralSecurityException; +import java.security.KeyStore; +import java.security.SecureRandom; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.text.DateFormat; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.net.ssl.*; +import okhttp3.*; +import okhttp3.internal.http.HttpMethod; +import okhttp3.internal.tls.OkHostnameVerifier; +import okhttp3.logging.HttpLoggingInterceptor; +import okhttp3.logging.HttpLoggingInterceptor.Level; +import okio.Buffer; +import okio.BufferedSink; +import okio.Okio; + +/** ApiClient class. */ +public class ApiClient { + + protected String basePath = "https://server-backup.api.stackit.cloud"; + protected List servers = + new ArrayList( + Arrays.asList( + new ServerConfiguration( + "https://server-backup.api.stackit.cloud", + "No description provided", + new HashMap() { + { + put( + "region", + new ServerVariable( + "No description provided", + "global", + new HashSet())); + } + }))); + protected Integer serverIndex = 0; + protected Map serverVariables = null; + protected boolean debugging = false; + protected Map defaultHeaderMap = new HashMap(); + protected Map defaultCookieMap = new HashMap(); + protected String tempFolderPath = null; + + protected DateFormat dateFormat; + protected DateFormat datetimeFormat; + protected boolean lenientDatetimeFormat; + protected int dateLength; + + protected InputStream sslCaCert; + protected boolean verifyingSsl; + protected KeyManager[] keyManagers; + + protected OkHttpClient httpClient; + protected JSON json; + + protected HttpLoggingInterceptor loggingInterceptor; + + protected CoreConfiguration configuration; + + /** + * Basic constructor for ApiClient. + * + *

Not recommended for production use, use the one with the OkHttpClient parameter instead. + * + * @throws IOException thrown when a file can not be found + */ + public ApiClient() throws IOException { + this(null, new CoreConfiguration()); + } + + /** + * Basic constructor for ApiClient + * + *

Not recommended for production use, use the one with the OkHttpClient parameter instead. + * + * @param config a {@link cloud.stackit.sdk.core.config.CoreConfiguration} object + * @throws IOException thrown when a file can not be found + */ + public ApiClient(CoreConfiguration config) throws IOException { + this(null, config); + } + + /** + * Constructor for ApiClient with OkHttpClient parameter. Recommended for production use. + * + * @param httpClient a OkHttpClient object + * @throws IOException thrown when a file can not be found + */ + public ApiClient(OkHttpClient httpClient) throws IOException { + this(httpClient, new CoreConfiguration()); + } + + /** + * Constructor for ApiClient with OkHttpClient parameter. Recommended for production use. + * + * @param httpClient a OkHttpClient object + * @param config a {@link cloud.stackit.sdk.core.config.CoreConfiguration} object + * @throws IOException thrown when a file can not be found + */ + public ApiClient(OkHttpClient httpClient, CoreConfiguration config) throws IOException { + init(); + + if (config.getCustomEndpoint() != null && !config.getCustomEndpoint().trim().isEmpty()) { + basePath = config.getCustomEndpoint(); + } + if (config.getDefaultHeader() != null) { + defaultHeaderMap = config.getDefaultHeader(); + } + this.configuration = config; + + if (httpClient == null) { + initHttpClient(); + KeyFlowAuthenticator authenticator = new KeyFlowAuthenticator(this.httpClient, config); + this.httpClient = this.httpClient.newBuilder().authenticator(authenticator).build(); + } else { + // Authorization has to be configured manually in case a custom http client object is + // passed + this.httpClient = httpClient; + } + } + + protected void initHttpClient() { + initHttpClient(Collections.emptyList()); + } + + protected void initHttpClient(List interceptors) { + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.addNetworkInterceptor(getProgressInterceptor()); + for (Interceptor interceptor : interceptors) { + builder.addInterceptor(interceptor); + } + + httpClient = builder.build(); + } + + protected void init() { + verifyingSsl = true; + + json = new JSON(); + + // Set default User-Agent. + setUserAgent("stackit-sdk-java/serverbackup"); + } + + /** + * Get base path + * + * @return Base path + */ + public String getBasePath() { + return basePath; + } + + /** + * Set base path + * + * @param basePath Base path of the URL (e.g https://server-backup.api.stackit.cloud + * @return An instance of OkHttpClient + */ + public ApiClient setBasePath(String basePath) { + this.basePath = basePath; + this.serverIndex = null; + return this; + } + + public List getServers() { + return servers; + } + + public ApiClient setServers(List servers) { + this.servers = servers; + return this; + } + + public Integer getServerIndex() { + return serverIndex; + } + + public ApiClient setServerIndex(Integer serverIndex) { + this.serverIndex = serverIndex; + return this; + } + + public Map getServerVariables() { + return serverVariables; + } + + public ApiClient setServerVariables(Map serverVariables) { + this.serverVariables = serverVariables; + return this; + } + + /** + * Get HTTP client + * + * @return An instance of OkHttpClient + */ + public OkHttpClient getHttpClient() { + return httpClient; + } + + /** + * Get JSON + * + * @return JSON object + */ + public JSON getJSON() { + return json; + } + + /** + * Set JSON + * + * @param json JSON object + * @return Api client + */ + public ApiClient setJSON(JSON json) { + this.json = json; + return this; + } + + /** + * True if isVerifyingSsl flag is on + * + * @return True if isVerifySsl flag is on + */ + public boolean isVerifyingSsl() { + return verifyingSsl; + } + + /** + * Configure whether to verify certificate and hostname when making https requests. Default to + * true. NOTE: Do NOT set to false in production code, otherwise you would face multiple types + * of cryptographic attacks. + * + * @param verifyingSsl True to verify TLS/SSL connection + * @return ApiClient + */ + public ApiClient setVerifyingSsl(boolean verifyingSsl) { + this.verifyingSsl = verifyingSsl; + applySslSettings(); + return this; + } + + /** + * Get SSL CA cert. + * + * @return Input stream to the SSL CA cert + */ + public InputStream getSslCaCert() { + return sslCaCert; + } + + /** + * Configure the CA certificate to be trusted when making https requests. Use null to reset to + * default. + * + * @param sslCaCert input stream for SSL CA cert + * @return ApiClient + */ + public ApiClient setSslCaCert(InputStream sslCaCert) { + this.sslCaCert = sslCaCert; + applySslSettings(); + return this; + } + + /** + * Getter for the field keyManagers. + * + * @return an array of {@link javax.net.ssl.KeyManager} objects + */ + public KeyManager[] getKeyManagers() { + return keyManagers; + } + + /** + * Configure client keys to use for authorization in an SSL session. Use null to reset to + * default. + * + * @param managers The KeyManagers to use + * @return ApiClient + */ + public ApiClient setKeyManagers(KeyManager[] managers) { + this.keyManagers = managers; + applySslSettings(); + return this; + } + + /** + * Getter for the field dateFormat. + * + * @return a {@link java.text.DateFormat} object + */ + public DateFormat getDateFormat() { + return dateFormat; + } + + /** + * Setter for the field dateFormat. + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link cloud.stackit.sdk.serverbackup.ApiClient} object + */ + public ApiClient setDateFormat(DateFormat dateFormat) { + JSON.setDateFormat(dateFormat); + return this; + } + + /** + * Set SqlDateFormat. + * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link cloud.stackit.sdk.serverbackup.ApiClient} object + */ + public ApiClient setSqlDateFormat(DateFormat dateFormat) { + JSON.setSqlDateFormat(dateFormat); + return this; + } + + /** + * Set OffsetDateTimeFormat. + * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link cloud.stackit.sdk.serverbackup.ApiClient} object + */ + public ApiClient setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setOffsetDateTimeFormat(dateFormat); + return this; + } + + /** + * Set LocalDateFormat. + * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link cloud.stackit.sdk.serverbackup.ApiClient} object + */ + public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateFormat(dateFormat); + return this; + } + + /** + * Set LenientOnJson. + * + * @param lenientOnJson a boolean + * @return a {@link cloud.stackit.sdk.serverbackup.ApiClient} object + */ + public ApiClient setLenientOnJson(boolean lenientOnJson) { + JSON.setLenientOnJson(lenientOnJson); + return this; + } + + /** + * Set the User-Agent header's value (by adding to the default header map). + * + * @param userAgent HTTP request's user agent + * @return ApiClient + */ + public ApiClient setUserAgent(String userAgent) { + addDefaultHeader("User-Agent", userAgent); + return this; + } + + /** + * Add a default header. + * + * @param key The header's key + * @param value The header's value + * @return ApiClient + */ + public ApiClient addDefaultHeader(String key, String value) { + defaultHeaderMap.put(key, value); + return this; + } + + /** + * Add a default cookie. + * + * @param key The cookie's key + * @param value The cookie's value + * @return ApiClient + */ + public ApiClient addDefaultCookie(String key, String value) { + defaultCookieMap.put(key, value); + return this; + } + + /** + * Check that whether debugging is enabled for this API client. + * + * @return True if debugging is enabled, false otherwise. + */ + public boolean isDebugging() { + return debugging; + } + + /** + * Enable/disable debugging for this API client. + * + * @param debugging To enable (true) or disable (false) debugging + * @return ApiClient + */ + public ApiClient setDebugging(boolean debugging) { + if (debugging != this.debugging) { + if (debugging) { + loggingInterceptor = new HttpLoggingInterceptor(); + loggingInterceptor.setLevel(Level.BODY); + httpClient = httpClient.newBuilder().addInterceptor(loggingInterceptor).build(); + } else { + final OkHttpClient.Builder builder = httpClient.newBuilder(); + builder.interceptors().remove(loggingInterceptor); + httpClient = builder.build(); + loggingInterceptor = null; + } + } + this.debugging = debugging; + return this; + } + + /** + * The path of temporary folder used to store downloaded files from endpoints with file + * response. The default value is null, i.e. using the system's default temporary + * folder. + * + * @see createTempFile + * @return Temporary folder path + */ + public String getTempFolderPath() { + return tempFolderPath; + } + + /** + * Set the temporary folder path (for downloading files) + * + * @param tempFolderPath Temporary folder path + * @return ApiClient + */ + public ApiClient setTempFolderPath(String tempFolderPath) { + this.tempFolderPath = tempFolderPath; + return this; + } + + /** + * Get connection timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getConnectTimeout() { + return httpClient.connectTimeoutMillis(); + } + + /** + * Sets the connect timeout (in milliseconds). A value of 0 means no timeout, otherwise values + * must be between 1 and {@link java.lang.Integer#MAX_VALUE}. + * + * @param connectionTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setConnectTimeout(int connectionTimeout) { + httpClient = + httpClient + .newBuilder() + .connectTimeout(connectionTimeout, TimeUnit.MILLISECONDS) + .build(); + return this; + } + + /** + * Get read timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getReadTimeout() { + return httpClient.readTimeoutMillis(); + } + + /** + * Sets the read timeout (in milliseconds). A value of 0 means no timeout, otherwise values must + * be between 1 and {@link java.lang.Integer#MAX_VALUE}. + * + * @param readTimeout read timeout in milliseconds + * @return Api client + */ + public ApiClient setReadTimeout(int readTimeout) { + httpClient = + httpClient.newBuilder().readTimeout(readTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + /** + * Get write timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getWriteTimeout() { + return httpClient.writeTimeoutMillis(); + } + + /** + * Sets the write timeout (in milliseconds). A value of 0 means no timeout, otherwise values + * must be between 1 and {@link java.lang.Integer#MAX_VALUE}. + * + * @param writeTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setWriteTimeout(int writeTimeout) { + httpClient = + httpClient.newBuilder().writeTimeout(writeTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + /** + * Format the given parameter object into string. + * + * @param param Parameter + * @return String representation of the parameter + */ + public String parameterToString(Object param) { + if (param == null) { + return ""; + } else if (param instanceof Date + || param instanceof OffsetDateTime + || param instanceof LocalDate) { + // Serialize to json string and remove the " enclosing characters + String jsonStr = JSON.serialize(param); + return jsonStr.substring(1, jsonStr.length() - 1); + } else if (param instanceof Collection) { + StringBuilder b = new StringBuilder(); + for (Object o : (Collection) param) { + if (b.length() > 0) { + b.append(","); + } + b.append(o); + } + return b.toString(); + } else { + return String.valueOf(param); + } + } + + /** + * Formats the specified query parameter to a list containing a single {@code Pair} object. + * + *

Note that {@code value} must not be a collection. + * + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list containing a single {@code Pair} object. + */ + public List parameterToPair(String name, Object value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value instanceof Collection) { + return params; + } + + params.add(new Pair(name, parameterToString(value))); + return params; + } + + /** + * Formats the specified collection query parameters to a list of {@code Pair} objects. + * + *

Note that the values of each of the returned Pair objects are percent-encoded. + * + * @param collectionFormat The collection format of the parameter. + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list of {@code Pair} objects. + */ + public List parameterToPairs(String collectionFormat, String name, Collection value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value.isEmpty()) { + return params; + } + + // create the params based on the collection format + if ("multi".equals(collectionFormat)) { + for (Object item : value) { + params.add(new Pair(name, escapeString(parameterToString(item)))); + } + return params; + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + // escape all delimiters except commas, which are URI reserved + // characters + if ("ssv".equals(collectionFormat)) { + delimiter = escapeString(" "); + } else if ("tsv".equals(collectionFormat)) { + delimiter = escapeString("\t"); + } else if ("pipes".equals(collectionFormat)) { + delimiter = escapeString("|"); + } + + StringBuilder sb = new StringBuilder(); + for (Object item : value) { + sb.append(delimiter); + sb.append(escapeString(parameterToString(item))); + } + + params.add(new Pair(name, sb.substring(delimiter.length()))); + + return params; + } + + /** + * Formats the specified free-form query parameters to a list of {@code Pair} objects. + * + * @param value The free-form query parameters. + * @return A list of {@code Pair} objects. + */ + public List freeFormParameterToPairs(Object value) { + List params = new ArrayList<>(); + + // preconditions + if (value == null || !(value instanceof Map)) { + return params; + } + + @SuppressWarnings("unchecked") + final Map valuesMap = (Map) value; + + for (Map.Entry entry : valuesMap.entrySet()) { + params.add(new Pair(entry.getKey(), parameterToString(entry.getValue()))); + } + + return params; + } + + /** + * Formats the specified collection path parameter to a string value. + * + * @param collectionFormat The collection format of the parameter. + * @param value The value of the parameter. + * @return String representation of the parameter + */ + public String collectionPathParameterToString(String collectionFormat, Collection value) { + // create the value based on the collection format + if ("multi".equals(collectionFormat)) { + // not valid for path params + return parameterToString(value); + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + if ("ssv".equals(collectionFormat)) { + delimiter = " "; + } else if ("tsv".equals(collectionFormat)) { + delimiter = "\t"; + } else if ("pipes".equals(collectionFormat)) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder(); + for (Object item : value) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + return sb.substring(delimiter.length()); + } + + /** + * Sanitize filename by removing path. e.g. ../../sun.gif becomes sun.gif + * + * @param filename The filename to be sanitized + * @return The sanitized filename + */ + public String sanitizeFilename(String filename) { + return filename.replaceFirst("^.*[/\\\\]", ""); + } + + /** + * Check if the given MIME is a JSON MIME. JSON MIME examples: application/json + * application/json; charset=UTF8 APPLICATION/JSON application/vnd.company+json "* / *" is also + * default to JSON + * + * @param mime MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public boolean isJsonMime(String mime) { + String jsonMime = "(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"; + return mime != null && (mime.matches(jsonMime) || mime.equals("*/*")); + } + + /** + * Select the Accept header's value from the given accepts array: if JSON exists in the given + * array, use it; otherwise use all of them (joining into a string) + * + * @param accepts The accepts array to select from + * @return The Accept header to use. If the given array is empty, null will be returned (not to + * set the Accept header explicitly). + */ + public String selectHeaderAccept(String[] accepts) { + if (accepts.length == 0) { + return null; + } + for (String accept : accepts) { + if (isJsonMime(accept)) { + return accept; + } + } + return StringUtil.join(accepts, ","); + } + + /** + * Select the Content-Type header's value from the given array: if JSON exists in the given + * array, use it; otherwise use the first one of the array. + * + * @param contentTypes The Content-Type array to select from + * @return The Content-Type header to use. If the given array is empty, returns null. If it + * matches "any", JSON will be used. + */ + public String selectHeaderContentType(String[] contentTypes) { + if (contentTypes.length == 0) { + return null; + } + + if (contentTypes[0].equals("*/*")) { + return "application/json"; + } + + for (String contentType : contentTypes) { + if (isJsonMime(contentType)) { + return contentType; + } + } + + return contentTypes[0]; + } + + /** + * Escape the given string to be used as URL query value. + * + * @param str String to be escaped + * @return Escaped string + */ + public String escapeString(String str) { + try { + return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); + } catch (UnsupportedEncodingException e) { + return str; + } + } + + /** + * Deserialize response body to Java object, according to the return type and the Content-Type + * response header. + * + * @param Type + * @param response HTTP response + * @param returnType The type of the Java object + * @return The deserialized Java object + * @throws cloud.stackit.sdk.core.exception.ApiException If fail to deserialize response body, + * i.e. cannot read response body or the Content-Type of the response is not supported. + */ + @SuppressWarnings("unchecked") + public T deserialize(Response response, Type returnType) throws ApiException { + if (response == null || returnType == null) { + return null; + } + + if ("byte[]".equals(returnType.toString())) { + // Handle binary response (byte array). + try { + return (T) response.body().bytes(); + } catch (IOException e) { + throw new ApiException(e); + } + } else if (returnType.equals(File.class)) { + // Handle file downloading. + return (T) downloadFileFromResponse(response); + } + + ResponseBody respBody = response.body(); + if (respBody == null) { + return null; + } + + String contentType = response.headers().get("Content-Type"); + if (contentType == null) { + // ensuring a default content type + contentType = "application/json"; + } + try { + if (isJsonMime(contentType)) { + return JSON.deserialize(respBody.byteStream(), returnType); + } else if (returnType.equals(String.class)) { + String respBodyString = respBody.string(); + if (respBodyString.isEmpty()) { + return null; + } + // Expecting string, return the raw response body. + return (T) respBodyString; + } else { + throw new ApiException( + "Content type \"" + + contentType + + "\" is not supported for type: " + + returnType, + response.code(), + response.headers().toMultimap(), + response.body().string()); + } + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * Serialize the given Java object into request body according to the object's class and the + * request Content-Type. + * + * @param obj The Java object + * @param contentType The request Content-Type + * @return The serialized request body + * @throws cloud.stackit.sdk.core.exception.ApiException If fail to serialize the given object + */ + public RequestBody serialize(Object obj, String contentType) throws ApiException { + if (obj instanceof byte[]) { + // Binary (byte array) body parameter support. + return RequestBody.create((byte[]) obj, MediaType.parse(contentType)); + } else if (obj instanceof File) { + // File body parameter support. + return RequestBody.create((File) obj, MediaType.parse(contentType)); + } else if ("text/plain".equals(contentType) && obj instanceof String) { + return RequestBody.create((String) obj, MediaType.parse(contentType)); + } else if (isJsonMime(contentType)) { + String content; + if (obj != null) { + content = JSON.serialize(obj); + } else { + content = null; + } + return RequestBody.create(content, MediaType.parse(contentType)); + } else if (obj instanceof String) { + return RequestBody.create((String) obj, MediaType.parse(contentType)); + } else { + throw new ApiException("Content type \"" + contentType + "\" is not supported"); + } + } + + /** + * Download file from the given response. + * + * @param response An instance of the Response object + * @throws cloud.stackit.sdk.core.exception.ApiException If fail to read file content from + * response and write to disk + * @return Downloaded file + */ + public File downloadFileFromResponse(Response response) throws ApiException { + try { + File file = prepareDownloadFile(response); + BufferedSink sink = Okio.buffer(Okio.sink(file)); + sink.writeAll(response.body().source()); + sink.close(); + return file; + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * Prepare file for download + * + * @param response An instance of the Response object + * @return Prepared file for the download + * @throws java.io.IOException If fail to prepare file for download + */ + public File prepareDownloadFile(Response response) throws IOException { + String filename = null; + String contentDisposition = response.header("Content-Disposition"); + if (contentDisposition != null && !"".equals(contentDisposition)) { + // Get filename from the Content-Disposition header. + Pattern pattern = Pattern.compile("filename=['\"]?([^'\"\\s]+)['\"]?"); + Matcher matcher = pattern.matcher(contentDisposition); + if (matcher.find()) { + filename = sanitizeFilename(matcher.group(1)); + } + } + + String prefix = null; + String suffix = null; + if (filename == null) { + prefix = "download-"; + suffix = ""; + } else { + int pos = filename.lastIndexOf("."); + if (pos == -1) { + prefix = filename + "-"; + } else { + prefix = filename.substring(0, pos) + "-"; + suffix = filename.substring(pos); + } + // Files.createTempFile requires the prefix to be at least three characters long + if (prefix.length() < 3) prefix = "download-"; + } + + if (tempFolderPath == null) return Files.createTempFile(prefix, suffix).toFile(); + else return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); + } + + /** + * {@link #execute(Call, Type)} + * + * @param Type + * @param call An instance of the Call object + * @return ApiResponse<T> + * @throws cloud.stackit.sdk.core.exception.ApiException If fail to execute the call + */ + public ApiResponse execute(Call call) throws ApiException { + return execute(call, null); + } + + /** + * Execute HTTP call and deserialize the HTTP response body into the given return type. + * + * @param returnType The return type used to deserialize HTTP response body + * @param The return type corresponding to (same with) returnType + * @param call Call + * @return ApiResponse object containing response status, headers and data, which is a Java + * object deserialized from response body and would be null when returnType is null. + * @throws cloud.stackit.sdk.core.exception.ApiException If fail to execute the call + */ + public ApiResponse execute(Call call, Type returnType) throws ApiException { + try { + Response response = call.execute(); + T data = handleResponse(response, returnType); + return new ApiResponse(response.code(), response.headers().toMultimap(), data); + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * {@link #executeAsync(Call, Type, ApiCallback)} + * + * @param Type + * @param call An instance of the Call object + * @param callback ApiCallback<T> + */ + public void executeAsync(Call call, ApiCallback callback) { + executeAsync(call, null, callback); + } + + /** + * Execute HTTP call asynchronously. + * + * @param Type + * @param call The callback to be executed when the API call finishes + * @param returnType Return type + * @param callback ApiCallback + * @see #execute(Call, Type) + */ + @SuppressWarnings("unchecked") + public void executeAsync(Call call, final Type returnType, final ApiCallback callback) { + call.enqueue( + new Callback() { + @Override + public void onFailure(Call call, IOException e) { + callback.onFailure(new ApiException(e), 0, null); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + T result; + try { + result = (T) handleResponse(response, returnType); + } catch (ApiException e) { + callback.onFailure(e, response.code(), response.headers().toMultimap()); + return; + } catch (Exception e) { + callback.onFailure( + new ApiException(e), + response.code(), + response.headers().toMultimap()); + return; + } + callback.onSuccess( + result, response.code(), response.headers().toMultimap()); + } + }); + } + + /** + * Handle the given response, return the deserialized object when the response is successful. + * + * @param Type + * @param response Response + * @param returnType Return type + * @return Type + * @throws cloud.stackit.sdk.core.exception.ApiException If the response has an unsuccessful + * status code or fail to deserialize the response body + */ + public T handleResponse(Response response, Type returnType) throws ApiException { + if (response.isSuccessful()) { + if (returnType == null || response.code() == 204) { + // returning null if the returnType is not defined, + // or the status code is 204 (No Content) + if (response.body() != null) { + try { + response.body().close(); + } catch (Exception e) { + throw new ApiException( + response.message(), + e, + response.code(), + response.headers().toMultimap()); + } + } + return null; + } else { + return deserialize(response, returnType); + } + } else { + String respBody = null; + if (response.body() != null) { + try { + respBody = response.body().string(); + } catch (IOException e) { + throw new ApiException( + response.message(), + e, + response.code(), + response.headers().toMultimap()); + } + } + throw new ApiException( + response.message(), response.code(), response.headers().toMultimap(), respBody); + } + } + + /** + * Build HTTP call with the given options. + * + * @param baseUrl The base URL + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and + * "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param cookieParams The cookie parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param callback Callback for upload/download progress + * @return The HTTP call + * @throws cloud.stackit.sdk.core.exception.ApiException If fail to serialize the request body + * object + */ + public Call buildCall( + String baseUrl, + String path, + String method, + List queryParams, + List collectionQueryParams, + Object body, + Map headerParams, + Map cookieParams, + Map formParams, + String[] authNames, + ApiCallback callback) + throws ApiException { + Request request = + buildRequest( + baseUrl, + path, + method, + queryParams, + collectionQueryParams, + body, + headerParams, + cookieParams, + formParams, + authNames, + callback); + + return httpClient.newCall(request); + } + + /** + * Build an HTTP request with the given options. + * + * @param baseUrl The base URL + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and + * "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param cookieParams The cookie parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param callback Callback for upload/download progress + * @return The HTTP request + * @throws cloud.stackit.sdk.core.exception.ApiException If fail to serialize the request body + * object + */ + public Request buildRequest( + String baseUrl, + String path, + String method, + List queryParams, + List collectionQueryParams, + Object body, + Map headerParams, + Map cookieParams, + Map formParams, + String[] authNames, + ApiCallback callback) + throws ApiException { + final String url = buildUrl(baseUrl, path, queryParams, collectionQueryParams); + + // prepare HTTP request body + RequestBody reqBody; + String contentType = headerParams.get("Content-Type"); + String contentTypePure = contentType; + if (contentTypePure != null && contentTypePure.contains(";")) { + contentTypePure = contentType.substring(0, contentType.indexOf(";")); + } + if (!HttpMethod.permitsRequestBody(method)) { + reqBody = null; + } else if ("application/x-www-form-urlencoded".equals(contentTypePure)) { + reqBody = buildRequestBodyFormEncoding(formParams); + } else if ("multipart/form-data".equals(contentTypePure)) { + reqBody = buildRequestBodyMultipart(formParams); + } else if (body == null) { + if ("DELETE".equals(method)) { + // allow calling DELETE without sending a request body + reqBody = null; + } else { + // use an empty request body (for POST, PUT and PATCH) + reqBody = + RequestBody.create( + "", contentType == null ? null : MediaType.parse(contentType)); + } + } else { + reqBody = serialize(body, contentType); + } + + List updatedQueryParams = new ArrayList<>(queryParams); + + final Request.Builder reqBuilder = + new Request.Builder() + .url(buildUrl(baseUrl, path, updatedQueryParams, collectionQueryParams)); + processHeaderParams(headerParams, reqBuilder); + processCookieParams(cookieParams, reqBuilder); + + // Associate callback with request (if not null) so interceptor can + // access it when creating ProgressResponseBody + reqBuilder.tag(callback); + + Request request = null; + + if (callback != null && reqBody != null) { + ProgressRequestBody progressRequestBody = new ProgressRequestBody(reqBody, callback); + request = reqBuilder.method(method, progressRequestBody).build(); + } else { + request = reqBuilder.method(method, reqBody).build(); + } + + return request; + } + + /** + * Build full URL by concatenating base path, the given sub path and query parameters. + * + * @param baseUrl The base URL + * @param path The sub path + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @return The full URL + */ + public String buildUrl( + String baseUrl, String path, List queryParams, List collectionQueryParams) { + final StringBuilder url = new StringBuilder(); + if (baseUrl != null) { + url.append(baseUrl).append(path); + } else { + String baseURL; + if (serverIndex != null) { + if (serverIndex < 0 || serverIndex >= servers.size()) { + throw new ArrayIndexOutOfBoundsException( + String.format( + "Invalid index %d when selecting the host settings. Must be less than %d", + serverIndex, servers.size())); + } + baseURL = servers.get(serverIndex).URL(serverVariables); + } else { + baseURL = basePath; + } + url.append(baseURL).append(path); + } + + if (queryParams != null && !queryParams.isEmpty()) { + // support (constant) query string in `path`, e.g. "/posts?draft=1" + String prefix = path.contains("?") ? "&" : "?"; + for (Pair param : queryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + url.append(escapeString(param.getName())) + .append("=") + .append(escapeString(value)); + } + } + } + + if (collectionQueryParams != null && !collectionQueryParams.isEmpty()) { + String prefix = url.toString().contains("?") ? "&" : "?"; + for (Pair param : collectionQueryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + // collection query parameter value already escaped as part of parameterToPairs + url.append(escapeString(param.getName())).append("=").append(value); + } + } + } + + return url.toString(); + } + + /** + * Set header parameters to the request builder, including default headers. + * + * @param headerParams Header parameters in the form of Map + * @param reqBuilder Request.Builder + */ + public void processHeaderParams(Map headerParams, Request.Builder reqBuilder) { + for (Entry param : headerParams.entrySet()) { + reqBuilder.header(param.getKey(), parameterToString(param.getValue())); + } + for (Entry header : defaultHeaderMap.entrySet()) { + if (!headerParams.containsKey(header.getKey())) { + reqBuilder.header(header.getKey(), parameterToString(header.getValue())); + } + } + } + + /** + * Set cookie parameters to the request builder, including default cookies. + * + * @param cookieParams Cookie parameters in the form of Map + * @param reqBuilder Request.Builder + */ + public void processCookieParams(Map cookieParams, Request.Builder reqBuilder) { + for (Entry param : cookieParams.entrySet()) { + reqBuilder.addHeader( + "Cookie", String.format("%s=%s", param.getKey(), param.getValue())); + } + for (Entry param : defaultCookieMap.entrySet()) { + if (!cookieParams.containsKey(param.getKey())) { + reqBuilder.addHeader( + "Cookie", String.format("%s=%s", param.getKey(), param.getValue())); + } + } + } + + /** + * Build a form-encoding request body with the given form parameters. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyFormEncoding(Map formParams) { + okhttp3.FormBody.Builder formBuilder = new okhttp3.FormBody.Builder(); + for (Entry param : formParams.entrySet()) { + formBuilder.add(param.getKey(), parameterToString(param.getValue())); + } + return formBuilder.build(); + } + + /** + * Build a multipart (file uploading) request body with the given form parameters, which could + * contain text fields and file fields. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyMultipart(Map formParams) { + MultipartBody.Builder mpBuilder = new MultipartBody.Builder().setType(MultipartBody.FORM); + for (Entry param : formParams.entrySet()) { + if (param.getValue() instanceof File) { + File file = (File) param.getValue(); + addPartToMultiPartBuilder(mpBuilder, param.getKey(), file); + } else if (param.getValue() instanceof List) { + List list = (List) param.getValue(); + for (Object item : list) { + if (item instanceof File) { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), (File) item); + } else { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), param.getValue()); + } + } + } else { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), param.getValue()); + } + } + return mpBuilder.build(); + } + + /** + * Guess Content-Type header from the given file (defaults to "application/octet-stream"). + * + * @param file The given file + * @return The guessed Content-Type + */ + public String guessContentTypeFromFile(File file) { + String contentType = URLConnection.guessContentTypeFromName(file.getName()); + if (contentType == null) { + return "application/octet-stream"; + } else { + return contentType; + } + } + + /** + * Add a Content-Disposition Header for the given key and file to the MultipartBody Builder. + * + * @param mpBuilder MultipartBody.Builder + * @param key The key of the Header element + * @param file The file to add to the Header + */ + protected void addPartToMultiPartBuilder( + MultipartBody.Builder mpBuilder, String key, File file) { + Headers partHeaders = + Headers.of( + "Content-Disposition", + "form-data; name=\"" + key + "\"; filename=\"" + file.getName() + "\""); + MediaType mediaType = MediaType.parse(guessContentTypeFromFile(file)); + mpBuilder.addPart(partHeaders, RequestBody.create(file, mediaType)); + } + + /** + * Add a Content-Disposition Header for the given key and complex object to the MultipartBody + * Builder. + * + * @param mpBuilder MultipartBody.Builder + * @param key The key of the Header element + * @param obj The complex object to add to the Header + */ + protected void addPartToMultiPartBuilder( + MultipartBody.Builder mpBuilder, String key, Object obj) { + RequestBody requestBody; + if (obj instanceof String) { + requestBody = RequestBody.create((String) obj, MediaType.parse("text/plain")); + } else { + String content; + if (obj != null) { + content = JSON.serialize(obj); + } else { + content = null; + } + requestBody = RequestBody.create(content, MediaType.parse("application/json")); + } + + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + key + "\""); + mpBuilder.addPart(partHeaders, requestBody); + } + + /** + * Get network interceptor to add it to the httpClient to track download progress for async + * requests. + */ + protected Interceptor getProgressInterceptor() { + return new Interceptor() { + @Override + public Response intercept(Interceptor.Chain chain) throws IOException { + final Request request = chain.request(); + final Response originalResponse = chain.proceed(request); + if (request.tag() instanceof ApiCallback) { + final ApiCallback callback = (ApiCallback) request.tag(); + return originalResponse + .newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), callback)) + .build(); + } + return originalResponse; + } + }; + } + + /** + * Apply SSL related settings to httpClient according to the current values of verifyingSsl and + * sslCaCert. + */ + protected void applySslSettings() { + try { + TrustManager[] trustManagers; + HostnameVerifier hostnameVerifier; + if (!verifyingSsl) { + trustManagers = + new TrustManager[] { + new X509TrustManager() { + @Override + public void checkClientTrusted( + java.security.cert.X509Certificate[] chain, String authType) + throws CertificateException {} + + @Override + public void checkServerTrusted( + java.security.cert.X509Certificate[] chain, String authType) + throws CertificateException {} + + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return new java.security.cert.X509Certificate[] {}; + } + } + }; + hostnameVerifier = + new HostnameVerifier() { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + }; + } else { + TrustManagerFactory trustManagerFactory = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + + if (sslCaCert == null) { + trustManagerFactory.init((KeyStore) null); + } else { + char[] password = null; // Any password will work. + CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + Collection certificates = + certificateFactory.generateCertificates(sslCaCert); + if (certificates.isEmpty()) { + throw new IllegalArgumentException( + "expected non-empty set of trusted certificates"); + } + KeyStore caKeyStore = newEmptyKeyStore(password); + int index = 0; + for (Certificate certificate : certificates) { + String certificateAlias = "ca" + (index++); + caKeyStore.setCertificateEntry(certificateAlias, certificate); + } + trustManagerFactory.init(caKeyStore); + } + trustManagers = trustManagerFactory.getTrustManagers(); + hostnameVerifier = OkHostnameVerifier.INSTANCE; + } + + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(keyManagers, trustManagers, new SecureRandom()); + httpClient = + httpClient + .newBuilder() + .sslSocketFactory( + sslContext.getSocketFactory(), + (X509TrustManager) trustManagers[0]) + .hostnameVerifier(hostnameVerifier) + .build(); + } catch (GeneralSecurityException e) { + throw new RuntimeException(e); + } + } + + protected KeyStore newEmptyKeyStore(char[] password) throws GeneralSecurityException { + try { + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + keyStore.load(null, password); + return keyStore; + } catch (IOException e) { + throw new AssertionError(e); + } + } + + /** + * Convert the HTTP request body to a string. + * + * @param requestBody The HTTP request object + * @return The string representation of the HTTP request body + * @throws cloud.stackit.sdk.core.exception.ApiException If fail to serialize the request body + * object into a string + */ + protected String requestBodyToString(RequestBody requestBody) throws ApiException { + if (requestBody != null) { + try { + final Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + return buffer.readUtf8(); + } catch (final IOException e) { + throw new ApiException(e); + } + } + + // empty http request body + return ""; + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ApiResponse.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ApiResponse.java new file mode 100644 index 0000000..b60bca8 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ApiResponse.java @@ -0,0 +1,73 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import java.util.List; +import java.util.Map; + +/** API response returned by API call. */ +public class ApiResponse { + private final int statusCode; + private final Map> headers; + private final T data; + + /** + * Constructor for ApiResponse. + * + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + */ + public ApiResponse(int statusCode, Map> headers) { + this(statusCode, headers, null); + } + + /** + * Constructor for ApiResponse. + * + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + * @param data The object deserialized from response bod + */ + public ApiResponse(int statusCode, Map> headers, T data) { + this.statusCode = statusCode; + this.headers = headers; + this.data = data; + } + + /** + * Get the status code. + * + * @return the status code + */ + public int getStatusCode() { + return statusCode; + } + + /** + * Get the headers. + * + * @return a {@link java.util.Map} of headers + */ + public Map> getHeaders() { + return headers; + } + + /** + * Get the data. + * + * @return the data + */ + public T getData() { + return data; + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/GzipRequestInterceptor.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/GzipRequestInterceptor.java new file mode 100644 index 0000000..82294ec --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/GzipRequestInterceptor.java @@ -0,0 +1,87 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import java.io.IOException; +import okhttp3.*; +import okio.Buffer; +import okio.BufferedSink; +import okio.GzipSink; +import okio.Okio; + +/** + * Encodes request bodies using gzip. + * + *

Taken from https://github.com/square/okhttp/issues/350 + */ +class GzipRequestInterceptor implements Interceptor { + @Override + public Response intercept(Chain chain) throws IOException { + Request originalRequest = chain.request(); + if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) { + return chain.proceed(originalRequest); + } + + Request compressedRequest = + originalRequest + .newBuilder() + .header("Content-Encoding", "gzip") + .method( + originalRequest.method(), + forceContentLength(gzip(originalRequest.body()))) + .build(); + return chain.proceed(compressedRequest); + } + + private RequestBody forceContentLength(final RequestBody requestBody) throws IOException { + final Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + return new RequestBody() { + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() { + return buffer.size(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + sink.write(buffer.snapshot()); + } + }; + } + + private RequestBody gzip(final RequestBody body) { + return new RequestBody() { + @Override + public MediaType contentType() { + return body.contentType(); + } + + @Override + public long contentLength() { + return -1; // We don't know the compressed length in advance! + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink gzipSink = Okio.buffer(new GzipSink(sink)); + body.writeTo(gzipSink); + gzipSink.close(); + } + }; + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/JSON.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/JSON.java new file mode 100644 index 0000000..1f59107 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/JSON.java @@ -0,0 +1,470 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapter; +import com.google.gson.internal.bind.util.ISO8601Utils; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.gsonfire.GsonFireBuilder; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.ParsePosition; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.Map; +import okio.ByteString; + +/* + * A JSON utility class + * + * NOTE: in the future, this class may be converted to static, which may break + * backward-compatibility + */ +public class JSON { + private static Gson gson; + private static boolean isLenientOnJson = false; + private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter(); + private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); + private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = + new OffsetDateTimeTypeAdapter(); + private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); + + @SuppressWarnings("unchecked") + public static GsonBuilder createGson() { + GsonFireBuilder fireBuilder = new GsonFireBuilder(); + GsonBuilder builder = fireBuilder.createGsonBuilder(); + return builder; + } + + private static String getDiscriminatorValue( + JsonElement readElement, String discriminatorField) { + JsonElement element = readElement.getAsJsonObject().get(discriminatorField); + if (null == element) { + throw new IllegalArgumentException( + "missing discriminator field: <" + discriminatorField + ">"); + } + return element.getAsString(); + } + + /** + * Returns the Java class that implements the OpenAPI schema for the specified discriminator + * value. + * + * @param classByDiscriminatorValue The map of discriminator values to Java classes. + * @param discriminatorValue The value of the OpenAPI discriminator in the input data. + * @return The Java class that implements the OpenAPI schema + */ + private static Class getClassByDiscriminator( + Map classByDiscriminatorValue, String discriminatorValue) { + Class clazz = (Class) classByDiscriminatorValue.get(discriminatorValue); + if (null == clazz) { + throw new IllegalArgumentException( + "cannot determine model class of name: <" + discriminatorValue + ">"); + } + return clazz; + } + + static { + GsonBuilder gsonBuilder = createGson(); + gsonBuilder.registerTypeAdapter(Date.class, dateTypeAdapter); + gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); + gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.Backup.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.BackupJob.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.BackupPolicy.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.BackupPolicyBackupProperties + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.BackupProperties + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.BackupSchedule.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.BackupVolumeBackupsInner + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.CreateBackupPayload + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.CreateBackupSchedulePayload + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.EnableServiceResourcePayload + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.ErrorResponse.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.GetBackupPoliciesResponse + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.GetBackupSchedulesResponse + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.GetBackupServiceResponse + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.GetBackupsListResponse + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.RestoreBackupPayload + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.RestoreVolumeBackupPayload + .CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory( + new cloud.stackit.sdk.serverbackup.model.UpdateBackupSchedulePayload + .CustomTypeAdapterFactory()); + gson = gsonBuilder.create(); + } + + /** + * Get Gson. + * + * @return Gson + */ + public static Gson getGson() { + return gson; + } + + /** + * Set Gson. + * + * @param gson Gson + */ + public static void setGson(Gson gson) { + JSON.gson = gson; + } + + public static void setLenientOnJson(boolean lenientOnJson) { + isLenientOnJson = lenientOnJson; + } + + /** + * Serialize the given Java object into JSON string. + * + * @param obj Object + * @return String representation of the JSON + */ + public static String serialize(Object obj) { + return gson.toJson(obj); + } + + /** + * Deserialize the given JSON string to Java object. + * + * @param Type + * @param body The JSON string + * @param returnType The type to deserialize into + * @return The deserialized Java object + */ + @SuppressWarnings("unchecked") + public static T deserialize(String body, Type returnType) { + try { + if (isLenientOnJson) { + JsonReader jsonReader = new JsonReader(new StringReader(body)); + // see + // https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) + jsonReader.setLenient(true); + return gson.fromJson(jsonReader, returnType); + } else { + return gson.fromJson(body, returnType); + } + } catch (JsonParseException e) { + // Fallback processing when failed to parse JSON form response body: + // return the response body string directly for the String return type; + if (returnType.equals(String.class)) { + return (T) body; + } else { + throw (e); + } + } + } + + /** + * Deserialize the given JSON InputStream to a Java object. + * + * @param Type + * @param inputStream The JSON InputStream + * @param returnType The type to deserialize into + * @return The deserialized Java object + */ + @SuppressWarnings("unchecked") + public static T deserialize(InputStream inputStream, Type returnType) throws IOException { + try (InputStreamReader reader = + new InputStreamReader(inputStream, StandardCharsets.UTF_8)) { + if (isLenientOnJson) { + // see + // https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) + JsonReader jsonReader = new JsonReader(reader); + jsonReader.setLenient(true); + return gson.fromJson(jsonReader, returnType); + } else { + return gson.fromJson(reader, returnType); + } + } + } + + /** Gson TypeAdapter for Byte Array type */ + public static class ByteArrayAdapter extends TypeAdapter { + + @Override + public void write(JsonWriter out, byte[] value) throws IOException { + if (value == null) { + out.nullValue(); + } else { + out.value(ByteString.of(value).base64()); + } + } + + @Override + public byte[] read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String bytesAsBase64 = in.nextString(); + ByteString byteString = ByteString.decodeBase64(bytesAsBase64); + return byteString.toByteArray(); + } + } + } + + /** Gson TypeAdapter for JSR310 OffsetDateTime type */ + public static class OffsetDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public OffsetDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } + + public OffsetDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, OffsetDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public OffsetDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + if (date.endsWith("+0000")) { + date = date.substring(0, date.length() - 5) + "Z"; + } + return OffsetDateTime.parse(date, formatter); + } + } + } + + /** Gson TypeAdapter for JSR310 LocalDate type */ + public static class LocalDateTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE); + } + + public LocalDateTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDate date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDate read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + return LocalDate.parse(date, formatter); + } + } + } + + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { + offsetDateTimeTypeAdapter.setFormat(dateFormat); + } + + public static void setLocalDateFormat(DateTimeFormatter dateFormat) { + localDateTypeAdapter.setFormat(dateFormat); + } + + /** + * Gson TypeAdapter for java.sql.Date type If the dateFormat is null, a simple "yyyy-MM-dd" + * format will be used (more efficient than SimpleDateFormat). + */ + public static class SqlDateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public SqlDateTypeAdapter() {} + + public SqlDateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, java.sql.Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = date.toString(); + } + out.value(value); + } + } + + @Override + public java.sql.Date read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return new java.sql.Date(dateFormat.parse(date).getTime()); + } + return new java.sql.Date( + ISO8601Utils.parse(date, new ParsePosition(0)).getTime()); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } + } + + /** + * Gson TypeAdapter for java.util.Date type If the dateFormat is null, ISO8601Utils will be + * used. + */ + public static class DateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public DateTypeAdapter() {} + + public DateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = ISO8601Utils.format(date, true); + } + out.value(value); + } + } + + @Override + public Date read(JsonReader in) throws IOException { + try { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return dateFormat.parse(date); + } + return ISO8601Utils.parse(date, new ParsePosition(0)); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } catch (IllegalArgumentException e) { + throw new JsonParseException(e); + } + } + } + + public static void setDateFormat(DateFormat dateFormat) { + dateTypeAdapter.setFormat(dateFormat); + } + + public static void setSqlDateFormat(DateFormat dateFormat) { + sqlDateTypeAdapter.setFormat(dateFormat); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/Pair.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/Pair.java new file mode 100644 index 0000000..b1dc5fa --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/Pair.java @@ -0,0 +1,38 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class Pair { + private final String name; + private final String value; + + public Pair(String name, String value) { + this.name = isValidString(name) ? name : ""; + this.value = isValidString(value) ? value : ""; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private static boolean isValidString(String arg) { + return arg != null; + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ProgressRequestBody.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ProgressRequestBody.java new file mode 100644 index 0000000..01e1528 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ProgressRequestBody.java @@ -0,0 +1,71 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import java.io.IOException; +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okio.Buffer; +import okio.BufferedSink; +import okio.ForwardingSink; +import okio.Okio; +import okio.Sink; + +public class ProgressRequestBody extends RequestBody { + + private final RequestBody requestBody; + + private final ApiCallback callback; + + public ProgressRequestBody(RequestBody requestBody, ApiCallback callback) { + this.requestBody = requestBody; + this.callback = callback; + } + + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() throws IOException { + return requestBody.contentLength(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink bufferedSink = Okio.buffer(sink(sink)); + requestBody.writeTo(bufferedSink); + bufferedSink.flush(); + } + + private Sink sink(Sink sink) { + return new ForwardingSink(sink) { + + long bytesWritten = 0L; + long contentLength = 0L; + + @Override + public void write(Buffer source, long byteCount) throws IOException { + super.write(source, byteCount); + if (contentLength == 0) { + contentLength = contentLength(); + } + + bytesWritten += byteCount; + callback.onUploadProgress( + bytesWritten, contentLength, bytesWritten == contentLength); + } + }; + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ProgressResponseBody.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ProgressResponseBody.java new file mode 100644 index 0000000..8d57698 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ProgressResponseBody.java @@ -0,0 +1,68 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import java.io.IOException; +import okhttp3.MediaType; +import okhttp3.ResponseBody; +import okio.Buffer; +import okio.BufferedSource; +import okio.ForwardingSource; +import okio.Okio; +import okio.Source; + +public class ProgressResponseBody extends ResponseBody { + + private final ResponseBody responseBody; + private final ApiCallback callback; + private BufferedSource bufferedSource; + + public ProgressResponseBody(ResponseBody responseBody, ApiCallback callback) { + this.responseBody = responseBody; + this.callback = callback; + } + + @Override + public MediaType contentType() { + return responseBody.contentType(); + } + + @Override + public long contentLength() { + return responseBody.contentLength(); + } + + @Override + public BufferedSource source() { + if (bufferedSource == null) { + bufferedSource = Okio.buffer(source(responseBody.source())); + } + return bufferedSource; + } + + private Source source(Source source) { + return new ForwardingSource(source) { + long totalBytesRead = 0L; + + @Override + public long read(Buffer sink, long byteCount) throws IOException { + long bytesRead = super.read(sink, byteCount); + // read() returns the number of bytes read, or -1 if this source is exhausted. + totalBytesRead += bytesRead != -1 ? bytesRead : 0; + callback.onDownloadProgress( + totalBytesRead, responseBody.contentLength(), bytesRead == -1); + return bytesRead; + } + }; + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ServerConfiguration.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ServerConfiguration.java new file mode 100644 index 0000000..2d28bce --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ServerConfiguration.java @@ -0,0 +1,79 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import java.util.Map; + +/** Representing a Server configuration. */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class ServerConfiguration { + public String URL; + public String description; + public Map variables; + + /** + * @param URL A URL to the target host. + * @param description A description of the host designated by the URL. + * @param variables A map between a variable name and its value. The value is used for + * substitution in the server's URL template. + */ + public ServerConfiguration( + String URL, String description, Map variables) { + this.URL = URL; + this.description = description; + this.variables = variables; + } + + /** + * Format URL template using given variables. + * + * @param variables A map between a variable name and its value. + * @return Formatted URL. + */ + public String URL(Map variables) { + String url = this.URL; + + // go through variables and replace placeholders + for (Map.Entry variable : this.variables.entrySet()) { + String name = variable.getKey(); + ServerVariable serverVariable = variable.getValue(); + String value = serverVariable.defaultValue; + + if (variables != null && variables.containsKey(name)) { + value = variables.get(name); + if (serverVariable.enumValues.size() > 0 + && !serverVariable.enumValues.contains(value)) { + throw new IllegalArgumentException( + "The variable " + + name + + " in the server URL has invalid value " + + value + + "."); + } + } + url = url.replace("{" + name + "}", value); + } + return url; + } + + /** + * Format URL template using default server variables. + * + * @return Formatted URL. + */ + public String URL() { + return URL(null); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ServerVariable.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ServerVariable.java new file mode 100644 index 0000000..bb25018 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/ServerVariable.java @@ -0,0 +1,37 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import java.util.HashSet; + +/** Representing a Server Variable for server URL template substitution. */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class ServerVariable { + public String description; + public String defaultValue; + public HashSet enumValues = null; + + /** + * @param description A description for the server variable. + * @param defaultValue The default value to use for substitution. + * @param enumValues An enumeration of string values to be used if the substitution options are + * from a limited set. + */ + public ServerVariable(String description, String defaultValue, HashSet enumValues) { + this.description = description; + this.defaultValue = defaultValue; + this.enumValues = enumValues; + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/StringUtil.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/StringUtil.java new file mode 100644 index 0000000..2129bad --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/StringUtil.java @@ -0,0 +1,83 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import java.util.Collection; +import java.util.Iterator; + +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class StringUtil { + /** + * Check if the given array contains the given value (with case-insensitive comparison). + * + * @param array The array + * @param value The value to search + * @return true if the array contains the value + */ + public static boolean containsIgnoreCase(String[] array, String value) { + for (String str : array) { + if (value == null && str == null) { + return true; + } + if (value != null && value.equalsIgnoreCase(str)) { + return true; + } + } + return false; + } + + /** + * Join an array of strings with the given separator. + * + *

Note: This might be replaced by utility method from commons-lang or guava someday if one + * of those libraries is added as dependency. + * + * @param array The array of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(String[] array, String separator) { + int len = array.length; + if (len == 0) { + return ""; + } + + StringBuilder out = new StringBuilder(); + out.append(array[0]); + for (int i = 1; i < len; i++) { + out.append(separator).append(array[i]); + } + return out.toString(); + } + + /** + * Join a list of strings with the given separator. + * + * @param list The list of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(Collection list, String separator) { + Iterator iterator = list.iterator(); + StringBuilder out = new StringBuilder(); + if (iterator.hasNext()) { + out.append(iterator.next()); + } + while (iterator.hasNext()) { + out.append(separator).append(iterator.next()); + } + return out.toString(); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/api/DefaultApi.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/api/DefaultApi.java new file mode 100644 index 0000000..23ebce7 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/api/DefaultApi.java @@ -0,0 +1,3701 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.api; + +import cloud.stackit.sdk.core.config.CoreConfiguration; +import cloud.stackit.sdk.core.exception.ApiException; +import cloud.stackit.sdk.serverbackup.ApiCallback; +import cloud.stackit.sdk.serverbackup.ApiClient; +import cloud.stackit.sdk.serverbackup.ApiResponse; +import cloud.stackit.sdk.serverbackup.Pair; +import cloud.stackit.sdk.serverbackup.model.Backup; +import cloud.stackit.sdk.serverbackup.model.BackupJob; +import cloud.stackit.sdk.serverbackup.model.BackupSchedule; +import cloud.stackit.sdk.serverbackup.model.CreateBackupPayload; +import cloud.stackit.sdk.serverbackup.model.CreateBackupSchedulePayload; +import cloud.stackit.sdk.serverbackup.model.EnableServiceResourcePayload; +import cloud.stackit.sdk.serverbackup.model.GetBackupPoliciesResponse; +import cloud.stackit.sdk.serverbackup.model.GetBackupSchedulesResponse; +import cloud.stackit.sdk.serverbackup.model.GetBackupServiceResponse; +import cloud.stackit.sdk.serverbackup.model.GetBackupsListResponse; +import cloud.stackit.sdk.serverbackup.model.RestoreBackupPayload; +import cloud.stackit.sdk.serverbackup.model.RestoreVolumeBackupPayload; +import cloud.stackit.sdk.serverbackup.model.UpdateBackupSchedulePayload; +import com.google.gson.reflect.TypeToken; +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import okhttp3.OkHttpClient; + +// Package-private access to enforce service-specific API usage (DefaultApi => Api) +class DefaultApi { + private ApiClient localVarApiClient; + private int localHostIndex; + private String localCustomBaseUrl; + + /** + * Basic constructor for DefaultApi + * + *

For production use consider using the constructor with the OkHttpClient parameter. + * + * @throws IOException + */ + public DefaultApi() throws IOException { + this(null, new CoreConfiguration()); + } + + /** + * Basic Constructor for DefaultApi + * + *

For production use consider using the constructor with the OkHttpClient parameter. + * + * @param config your STACKIT SDK CoreConfiguration + * @throws IOException + */ + public DefaultApi(CoreConfiguration config) throws IOException { + this(null, config); + } + + /** + * Constructor for DefaultApi + * + * @param httpClient OkHttpClient object + * @throws IOException + */ + public DefaultApi(OkHttpClient httpClient) throws IOException { + this(httpClient, new CoreConfiguration()); + } + + /** + * Constructor for DefaultApi + * + * @param httpClient OkHttpClient object + * @param config your STACKIT SDK CoreConfiguration + * @throws IOException + */ + public DefaultApi(OkHttpClient httpClient, CoreConfiguration config) throws IOException { + if (config.getCustomEndpoint() != null && !config.getCustomEndpoint().trim().isEmpty()) { + localCustomBaseUrl = config.getCustomEndpoint(); + } + this.localVarApiClient = new ApiClient(httpClient, config); + } + + public ApiClient getApiClient() { + return localVarApiClient; + } + + public void setApiClient(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public int getHostIndex() { + return localHostIndex; + } + + public void setHostIndex(int hostIndex) { + this.localHostIndex = hostIndex; + } + + public String getCustomBaseUrl() { + return localCustomBaseUrl; + } + + public void setCustomBaseUrl(String customBaseUrl) { + this.localCustomBaseUrl = customBaseUrl; + } + + /** + * Build call for createBackup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param createBackupPayload (optional) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + * + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server not found -
409 Backup already running -
+ */ + public okhttp3.Call createBackupCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable CreateBackupPayload createBackupPayload, + final ApiCallback _callback) + 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 = createBackupPayload; + + // create path and map variables + String localVarPath = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backups" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {"application/json"}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "POST", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call createBackupValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable CreateBackupPayload createBackupPayload, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling createBackup(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling createBackup(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling createBackup(Async)"); + } + + return createBackupCall(projectId, serverId, region, createBackupPayload, _callback); + } + + /** + * create backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param createBackupPayload (optional) + * @return BackupJob + * @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
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server not found -
409 Backup already running -
+ */ + public BackupJob createBackup( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable CreateBackupPayload createBackupPayload) + throws ApiException { + ApiResponse localVarResp = + createBackupWithHttpInfo(projectId, serverId, region, createBackupPayload); + return localVarResp.getData(); + } + + /** + * create backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param createBackupPayload (optional) + * @return ApiResponse<BackupJob> + * @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
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server not found -
409 Backup already running -
+ */ + public ApiResponse createBackupWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable CreateBackupPayload createBackupPayload) + throws ApiException { + okhttp3.Call localVarCall = + createBackupValidateBeforeCall( + projectId, serverId, region, createBackupPayload, null); + Type localVarReturnType = new TypeToken() {}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * create backup (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param createBackupPayload (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server not found -
409 Backup already running -
+ */ + public okhttp3.Call createBackupAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable CreateBackupPayload createBackupPayload, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + createBackupValidateBeforeCall( + projectId, serverId, region, createBackupPayload, _callback); + Type localVarReturnType = new TypeToken() {}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + + /** + * Build call for createBackupSchedule + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param createBackupSchedulePayload (optional) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
201 Schedule created -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public okhttp3.Call createBackupScheduleCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable CreateBackupSchedulePayload createBackupSchedulePayload, + final ApiCallback _callback) + 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 = createBackupSchedulePayload; + + // create path and map variables + String localVarPath = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backup-schedules" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {"application/json"}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "POST", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call createBackupScheduleValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable CreateBackupSchedulePayload createBackupSchedulePayload, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling createBackupSchedule(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling createBackupSchedule(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling createBackupSchedule(Async)"); + } + + return createBackupScheduleCall( + projectId, serverId, region, createBackupSchedulePayload, _callback); + } + + /** + * create backup schedule + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param createBackupSchedulePayload (optional) + * @return BackupSchedule + * @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
201 Schedule created -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public BackupSchedule createBackupSchedule( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable CreateBackupSchedulePayload createBackupSchedulePayload) + throws ApiException { + ApiResponse localVarResp = + createBackupScheduleWithHttpInfo( + projectId, serverId, region, createBackupSchedulePayload); + return localVarResp.getData(); + } + + /** + * create backup schedule + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param createBackupSchedulePayload (optional) + * @return ApiResponse<BackupSchedule> + * @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
201 Schedule created -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public ApiResponse createBackupScheduleWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable CreateBackupSchedulePayload createBackupSchedulePayload) + throws ApiException { + okhttp3.Call localVarCall = + createBackupScheduleValidateBeforeCall( + projectId, serverId, region, createBackupSchedulePayload, null); + Type localVarReturnType = new TypeToken() {}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * create backup schedule (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param createBackupSchedulePayload (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
201 Schedule created -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public okhttp3.Call createBackupScheduleAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable CreateBackupSchedulePayload createBackupSchedulePayload, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + createBackupScheduleValidateBeforeCall( + projectId, serverId, region, createBackupSchedulePayload, _callback); + Type localVarReturnType = new TypeToken() {}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + + /** + * Build call for deleteBackup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param force force delete the backup (optional) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup job not found -
+ */ + public okhttp3.Call deleteBackupCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nullable Boolean force, + final ApiCallback _callback) + 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 = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backups/{backupId}" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())) + .replace( + "{" + "backupId" + "}", + localVarApiClient.escapeString(backupId.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + if (force != null) { + localVarQueryParams.addAll(localVarApiClient.parameterToPair("force", force)); + } + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "DELETE", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call deleteBackupValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nullable Boolean force, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling deleteBackup(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling deleteBackup(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling deleteBackup(Async)"); + } + + // verify the required parameter 'backupId' is set + if (backupId == null) { + throw new ApiException( + "Missing the required parameter 'backupId' when calling deleteBackup(Async)"); + } + + return deleteBackupCall(projectId, serverId, region, backupId, force, _callback); + } + + /** + * delete backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param force force delete the backup (optional) + * @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
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup job not found -
+ */ + public void deleteBackup( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nullable Boolean force) + throws ApiException { + deleteBackupWithHttpInfo(projectId, serverId, region, backupId, force); + } + + /** + * delete backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param force force delete the backup (optional) + * @return ApiResponse<Void> + * @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
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup job not found -
+ */ + public ApiResponse deleteBackupWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nullable Boolean force) + throws ApiException { + okhttp3.Call localVarCall = + deleteBackupValidateBeforeCall(projectId, serverId, region, backupId, force, null); + return localVarApiClient.execute(localVarCall); + } + + /** + * delete backup (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param force force delete the backup (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup job not found -
+ */ + public okhttp3.Call deleteBackupAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nullable Boolean force, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + deleteBackupValidateBeforeCall( + projectId, serverId, region, backupId, force, _callback); + localVarApiClient.executeAsync(localVarCall, _callback); + return localVarCall; + } + + /** + * Build call for deleteBackupSchedule + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
204 backup schedule successfully deleted -
400 Bad Request -
401 Unauthorized -
404 Server | schedule not found -
+ */ + public okhttp3.Call deleteBackupScheduleCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + final ApiCallback _callback) + 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 = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backup-schedules/{backupScheduleId}" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())) + .replace( + "{" + "backupScheduleId" + "}", + localVarApiClient.escapeString(backupScheduleId.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "DELETE", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call deleteBackupScheduleValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling deleteBackupSchedule(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling deleteBackupSchedule(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling deleteBackupSchedule(Async)"); + } + + // verify the required parameter 'backupScheduleId' is set + if (backupScheduleId == null) { + throw new ApiException( + "Missing the required parameter 'backupScheduleId' when calling deleteBackupSchedule(Async)"); + } + + return deleteBackupScheduleCall(projectId, serverId, region, backupScheduleId, _callback); + } + + /** + * delete backup schedule + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @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
204 backup schedule successfully deleted -
400 Bad Request -
401 Unauthorized -
404 Server | schedule not found -
+ */ + public void deleteBackupSchedule( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId) + throws ApiException { + deleteBackupScheduleWithHttpInfo(projectId, serverId, region, backupScheduleId); + } + + /** + * delete backup schedule + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @return ApiResponse<Void> + * @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
204 backup schedule successfully deleted -
400 Bad Request -
401 Unauthorized -
404 Server | schedule not found -
+ */ + public ApiResponse deleteBackupScheduleWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId) + throws ApiException { + okhttp3.Call localVarCall = + deleteBackupScheduleValidateBeforeCall( + projectId, serverId, region, backupScheduleId, null); + return localVarApiClient.execute(localVarCall); + } + + /** + * delete backup schedule (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
204 backup schedule successfully deleted -
400 Bad Request -
401 Unauthorized -
404 Server | schedule not found -
+ */ + public okhttp3.Call deleteBackupScheduleAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + deleteBackupScheduleValidateBeforeCall( + projectId, serverId, region, backupScheduleId, _callback); + localVarApiClient.executeAsync(localVarCall, _callback); + return localVarCall; + } + + /** + * Build call for deleteVolumeBackup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param volumeBackupId id of the volume backup (required) + * @param force Force delete the volume backup (optional) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | volume backup not found -
+ */ + public okhttp3.Call deleteVolumeBackupCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nonnull String volumeBackupId, + @javax.annotation.Nullable Boolean force, + final ApiCallback _callback) + 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 = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backups/{backupId}/volume-backups/{volumeBackupId}" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())) + .replace( + "{" + "backupId" + "}", + localVarApiClient.escapeString(backupId.toString())) + .replace( + "{" + "volumeBackupId" + "}", + localVarApiClient.escapeString(volumeBackupId.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + if (force != null) { + localVarQueryParams.addAll(localVarApiClient.parameterToPair("force", force)); + } + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "DELETE", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call deleteVolumeBackupValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nonnull String volumeBackupId, + @javax.annotation.Nullable Boolean force, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling deleteVolumeBackup(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling deleteVolumeBackup(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling deleteVolumeBackup(Async)"); + } + + // verify the required parameter 'backupId' is set + if (backupId == null) { + throw new ApiException( + "Missing the required parameter 'backupId' when calling deleteVolumeBackup(Async)"); + } + + // verify the required parameter 'volumeBackupId' is set + if (volumeBackupId == null) { + throw new ApiException( + "Missing the required parameter 'volumeBackupId' when calling deleteVolumeBackup(Async)"); + } + + return deleteVolumeBackupCall( + projectId, serverId, region, backupId, volumeBackupId, force, _callback); + } + + /** + * delete volume backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param volumeBackupId id of the volume backup (required) + * @param force Force delete the volume backup (optional) + * @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
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | volume backup not found -
+ */ + public void deleteVolumeBackup( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nonnull String volumeBackupId, + @javax.annotation.Nullable Boolean force) + throws ApiException { + deleteVolumeBackupWithHttpInfo( + projectId, serverId, region, backupId, volumeBackupId, force); + } + + /** + * delete volume backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param volumeBackupId id of the volume backup (required) + * @param force Force delete the volume backup (optional) + * @return ApiResponse<Void> + * @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
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | volume backup not found -
+ */ + public ApiResponse deleteVolumeBackupWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nonnull String volumeBackupId, + @javax.annotation.Nullable Boolean force) + throws ApiException { + okhttp3.Call localVarCall = + deleteVolumeBackupValidateBeforeCall( + projectId, serverId, region, backupId, volumeBackupId, force, null); + return localVarApiClient.execute(localVarCall); + } + + /** + * delete volume backup (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param volumeBackupId id of the volume backup (required) + * @param force Force delete the volume backup (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | volume backup not found -
+ */ + public okhttp3.Call deleteVolumeBackupAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nonnull String volumeBackupId, + @javax.annotation.Nullable Boolean force, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + deleteVolumeBackupValidateBeforeCall( + projectId, serverId, region, backupId, volumeBackupId, force, _callback); + localVarApiClient.executeAsync(localVarCall, _callback); + return localVarCall; + } + + /** + * Build call for disableServiceResource + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
204 Backup service disabled -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public okhttp3.Call disableServiceResourceCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + 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 = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/service" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "DELETE", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call disableServiceResourceValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling disableServiceResource(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling disableServiceResource(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling disableServiceResource(Async)"); + } + + return disableServiceResourceCall(projectId, serverId, region, _callback); + } + + /** + * disable backup service + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @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
204 Backup service disabled -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public void disableServiceResource( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region) + throws ApiException { + disableServiceResourceWithHttpInfo(projectId, serverId, region); + } + + /** + * disable backup service + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @return ApiResponse<Void> + * @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
204 Backup service disabled -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public ApiResponse disableServiceResourceWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region) + throws ApiException { + okhttp3.Call localVarCall = + disableServiceResourceValidateBeforeCall(projectId, serverId, region, null); + return localVarApiClient.execute(localVarCall); + } + + /** + * disable backup service (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
204 Backup service disabled -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public okhttp3.Call disableServiceResourceAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + disableServiceResourceValidateBeforeCall(projectId, serverId, region, _callback); + localVarApiClient.executeAsync(localVarCall, _callback); + return localVarCall; + } + + /** + * Build call for enableServiceResource + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param enableServiceResourcePayload (optional) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
204 Backup service enabled -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public okhttp3.Call enableServiceResourceCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable EnableServiceResourcePayload enableServiceResourcePayload, + final ApiCallback _callback) + 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 = enableServiceResourcePayload; + + // create path and map variables + String localVarPath = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/service" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {"application/json"}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "POST", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call enableServiceResourceValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable EnableServiceResourcePayload enableServiceResourcePayload, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling enableServiceResource(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling enableServiceResource(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling enableServiceResource(Async)"); + } + + return enableServiceResourceCall( + projectId, serverId, region, enableServiceResourcePayload, _callback); + } + + /** + * enable backup service + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param enableServiceResourcePayload (optional) + * @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
204 Backup service enabled -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public void enableServiceResource( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable EnableServiceResourcePayload enableServiceResourcePayload) + throws ApiException { + enableServiceResourceWithHttpInfo( + projectId, serverId, region, enableServiceResourcePayload); + } + + /** + * enable backup service + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param enableServiceResourcePayload (optional) + * @return ApiResponse<Void> + * @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
204 Backup service enabled -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public ApiResponse enableServiceResourceWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable EnableServiceResourcePayload enableServiceResourcePayload) + throws ApiException { + okhttp3.Call localVarCall = + enableServiceResourceValidateBeforeCall( + projectId, serverId, region, enableServiceResourcePayload, null); + return localVarApiClient.execute(localVarCall); + } + + /** + * enable backup service (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param enableServiceResourcePayload (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
204 Backup service enabled -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public okhttp3.Call enableServiceResourceAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nullable EnableServiceResourcePayload enableServiceResourcePayload, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + enableServiceResourceValidateBeforeCall( + projectId, serverId, region, enableServiceResourcePayload, _callback); + localVarApiClient.executeAsync(localVarCall, _callback); + return localVarCall; + } + + /** + * Build call for getBackup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param _callback Callback for upload/download progress + * @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 backup response -
400 Bad Request -
401 Unauthorized -
404 Server | backup job not found -
+ */ + public okhttp3.Call getBackupCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + final ApiCallback _callback) + 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 = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backups/{backupId}" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())) + .replace( + "{" + "backupId" + "}", + localVarApiClient.escapeString(backupId.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getBackupValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling getBackup(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling getBackup(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling getBackup(Async)"); + } + + // verify the required parameter 'backupId' is set + if (backupId == null) { + throw new ApiException( + "Missing the required parameter 'backupId' when calling getBackup(Async)"); + } + + return getBackupCall(projectId, serverId, region, backupId, _callback); + } + + /** + * get backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @return Backup + * @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 backup response -
400 Bad Request -
401 Unauthorized -
404 Server | backup job not found -
+ */ + public Backup getBackup( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId) + throws ApiException { + ApiResponse localVarResp = + getBackupWithHttpInfo(projectId, serverId, region, backupId); + return localVarResp.getData(); + } + + /** + * get backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @return ApiResponse<Backup> + * @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 backup response -
400 Bad Request -
401 Unauthorized -
404 Server | backup job not found -
+ */ + public ApiResponse getBackupWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId) + throws ApiException { + okhttp3.Call localVarCall = + getBackupValidateBeforeCall(projectId, serverId, region, backupId, null); + Type localVarReturnType = new TypeToken() {}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * get backup (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
200 backup response -
400 Bad Request -
401 Unauthorized -
404 Server | backup job not found -
+ */ + public okhttp3.Call getBackupAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + getBackupValidateBeforeCall(projectId, serverId, region, backupId, _callback); + Type localVarReturnType = new TypeToken() {}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + + /** + * Build call for getBackupSchedule + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @param _callback Callback for upload/download progress + * @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 backup schedule response -
400 Bad Request -
401 Unauthorized -
404 Server | backup schedule not found -
+ */ + public okhttp3.Call getBackupScheduleCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + final ApiCallback _callback) + 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 = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backup-schedules/{backupScheduleId}" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())) + .replace( + "{" + "backupScheduleId" + "}", + localVarApiClient.escapeString(backupScheduleId.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getBackupScheduleValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling getBackupSchedule(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling getBackupSchedule(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling getBackupSchedule(Async)"); + } + + // verify the required parameter 'backupScheduleId' is set + if (backupScheduleId == null) { + throw new ApiException( + "Missing the required parameter 'backupScheduleId' when calling getBackupSchedule(Async)"); + } + + return getBackupScheduleCall(projectId, serverId, region, backupScheduleId, _callback); + } + + /** + * get single backup schedule details + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @return BackupSchedule + * @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 backup schedule response -
400 Bad Request -
401 Unauthorized -
404 Server | backup schedule not found -
+ */ + public BackupSchedule getBackupSchedule( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId) + throws ApiException { + ApiResponse localVarResp = + getBackupScheduleWithHttpInfo(projectId, serverId, region, backupScheduleId); + return localVarResp.getData(); + } + + /** + * get single backup schedule details + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @return ApiResponse<BackupSchedule> + * @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 backup schedule response -
400 Bad Request -
401 Unauthorized -
404 Server | backup schedule not found -
+ */ + public ApiResponse getBackupScheduleWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId) + throws ApiException { + okhttp3.Call localVarCall = + getBackupScheduleValidateBeforeCall( + projectId, serverId, region, backupScheduleId, null); + Type localVarReturnType = new TypeToken() {}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * get single backup schedule details (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
200 backup schedule response -
400 Bad Request -
401 Unauthorized -
404 Server | backup schedule not found -
+ */ + public okhttp3.Call getBackupScheduleAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + getBackupScheduleValidateBeforeCall( + projectId, serverId, region, backupScheduleId, _callback); + Type localVarReturnType = new TypeToken() {}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + + /** + * Build call for getServiceResource + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param _callback Callback for upload/download progress + * @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 Backup service details -
400 Bad Request -
401 Unauthorized -
404 Server, or service, Not Found -
+ */ + public okhttp3.Call getServiceResourceCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + 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 = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/service" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getServiceResourceValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling getServiceResource(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling getServiceResource(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling getServiceResource(Async)"); + } + + return getServiceResourceCall(projectId, serverId, region, _callback); + } + + /** + * get backup service details + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @return GetBackupServiceResponse + * @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 Backup service details -
400 Bad Request -
401 Unauthorized -
404 Server, or service, Not Found -
+ */ + public GetBackupServiceResponse getServiceResource( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region) + throws ApiException { + ApiResponse localVarResp = + getServiceResourceWithHttpInfo(projectId, serverId, region); + return localVarResp.getData(); + } + + /** + * get backup service details + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @return ApiResponse<GetBackupServiceResponse> + * @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 Backup service details -
400 Bad Request -
401 Unauthorized -
404 Server, or service, Not Found -
+ */ + public ApiResponse getServiceResourceWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region) + throws ApiException { + okhttp3.Call localVarCall = + getServiceResourceValidateBeforeCall(projectId, serverId, region, null); + Type localVarReturnType = new TypeToken() {}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * get backup service details (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
200 Backup service details -
400 Bad Request -
401 Unauthorized -
404 Server, or service, Not Found -
+ */ + public okhttp3.Call getServiceResourceAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + getServiceResourceValidateBeforeCall(projectId, serverId, region, _callback); + Type localVarReturnType = new TypeToken() {}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + + /** + * Build call for listBackupPolicies + * + * @param projectId project id (required) + * @param _callback Callback for upload/download progress + * @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 backup policy list response -
400 Bad Request -
401 Unauthorized -
404 Project Not Found -
+ */ + public okhttp3.Call listBackupPoliciesCall( + @javax.annotation.Nonnull String projectId, final ApiCallback _callback) + 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 = + "/v2/projects/{projectId}/backup-policies" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call listBackupPoliciesValidateBeforeCall( + @javax.annotation.Nonnull String projectId, final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling listBackupPolicies(Async)"); + } + + return listBackupPoliciesCall(projectId, _callback); + } + + /** + * get list of backup policies + * + * @param projectId project id (required) + * @return GetBackupPoliciesResponse + * @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 backup policy list response -
400 Bad Request -
401 Unauthorized -
404 Project Not Found -
+ */ + public GetBackupPoliciesResponse listBackupPolicies(@javax.annotation.Nonnull String projectId) + throws ApiException { + ApiResponse localVarResp = + listBackupPoliciesWithHttpInfo(projectId); + return localVarResp.getData(); + } + + /** + * get list of backup policies + * + * @param projectId project id (required) + * @return ApiResponse<GetBackupPoliciesResponse> + * @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 backup policy list response -
400 Bad Request -
401 Unauthorized -
404 Project Not Found -
+ */ + public ApiResponse listBackupPoliciesWithHttpInfo( + @javax.annotation.Nonnull String projectId) throws ApiException { + okhttp3.Call localVarCall = listBackupPoliciesValidateBeforeCall(projectId, null); + Type localVarReturnType = new TypeToken() {}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * get list of backup policies (asynchronously) + * + * @param projectId project id (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
200 backup policy list response -
400 Bad Request -
401 Unauthorized -
404 Project Not Found -
+ */ + public okhttp3.Call listBackupPoliciesAsync( + @javax.annotation.Nonnull String projectId, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = listBackupPoliciesValidateBeforeCall(projectId, _callback); + Type localVarReturnType = new TypeToken() {}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + + /** + * Build call for listBackupSchedules + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param _callback Callback for upload/download progress + * @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 schedule list response -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public okhttp3.Call listBackupSchedulesCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + 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 = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backup-schedules" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call listBackupSchedulesValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling listBackupSchedules(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling listBackupSchedules(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling listBackupSchedules(Async)"); + } + + return listBackupSchedulesCall(projectId, serverId, region, _callback); + } + + /** + * get list of backup schedules + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @return GetBackupSchedulesResponse + * @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 schedule list response -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public GetBackupSchedulesResponse listBackupSchedules( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region) + throws ApiException { + ApiResponse localVarResp = + listBackupSchedulesWithHttpInfo(projectId, serverId, region); + return localVarResp.getData(); + } + + /** + * get list of backup schedules + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @return ApiResponse<GetBackupSchedulesResponse> + * @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 schedule list response -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public ApiResponse listBackupSchedulesWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region) + throws ApiException { + okhttp3.Call localVarCall = + listBackupSchedulesValidateBeforeCall(projectId, serverId, region, null); + Type localVarReturnType = new TypeToken() {}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * get list of backup schedules (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
200 schedule list response -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public okhttp3.Call listBackupSchedulesAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + listBackupSchedulesValidateBeforeCall(projectId, serverId, region, _callback); + Type localVarReturnType = new TypeToken() {}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + + /** + * Build call for listBackups + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param _callback Callback for upload/download progress + * @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 backup list response -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public okhttp3.Call listBackupsCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + 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 = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backups" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "GET", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call listBackupsValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling listBackups(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling listBackups(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling listBackups(Async)"); + } + + return listBackupsCall(projectId, serverId, region, _callback); + } + + /** + * get list of backups + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @return GetBackupsListResponse + * @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 backup list response -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public GetBackupsListResponse listBackups( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region) + throws ApiException { + ApiResponse localVarResp = + listBackupsWithHttpInfo(projectId, serverId, region); + return localVarResp.getData(); + } + + /** + * get list of backups + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @return ApiResponse<GetBackupsListResponse> + * @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 backup list response -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public ApiResponse listBackupsWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region) + throws ApiException { + okhttp3.Call localVarCall = + listBackupsValidateBeforeCall(projectId, serverId, region, null); + Type localVarReturnType = new TypeToken() {}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * get list of backups (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
200 backup list response -
400 Bad Request -
401 Unauthorized -
404 Server not found -
+ */ + public okhttp3.Call listBackupsAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + listBackupsValidateBeforeCall(projectId, serverId, region, _callback); + Type localVarReturnType = new TypeToken() {}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + + /** + * Build call for restoreBackup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param restoreBackupPayload (optional) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + * + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup not found -
409 Restore already running -
+ */ + public okhttp3.Call restoreBackupCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nullable RestoreBackupPayload restoreBackupPayload, + final ApiCallback _callback) + 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 = restoreBackupPayload; + + // create path and map variables + String localVarPath = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backups/{backupId}/restore" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())) + .replace( + "{" + "backupId" + "}", + localVarApiClient.escapeString(backupId.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {"application/json"}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "POST", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call restoreBackupValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nullable RestoreBackupPayload restoreBackupPayload, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling restoreBackup(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling restoreBackup(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling restoreBackup(Async)"); + } + + // verify the required parameter 'backupId' is set + if (backupId == null) { + throw new ApiException( + "Missing the required parameter 'backupId' when calling restoreBackup(Async)"); + } + + return restoreBackupCall( + projectId, serverId, region, backupId, restoreBackupPayload, _callback); + } + + /** + * trigger restore of the requested backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param restoreBackupPayload (optional) + * @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
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup not found -
409 Restore already running -
+ */ + public void restoreBackup( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nullable RestoreBackupPayload restoreBackupPayload) + throws ApiException { + restoreBackupWithHttpInfo(projectId, serverId, region, backupId, restoreBackupPayload); + } + + /** + * trigger restore of the requested backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param restoreBackupPayload (optional) + * @return ApiResponse<Void> + * @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
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup not found -
409 Restore already running -
+ */ + public ApiResponse restoreBackupWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nullable RestoreBackupPayload restoreBackupPayload) + throws ApiException { + okhttp3.Call localVarCall = + restoreBackupValidateBeforeCall( + projectId, serverId, region, backupId, restoreBackupPayload, null); + return localVarApiClient.execute(localVarCall); + } + + /** + * trigger restore of the requested backup (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param restoreBackupPayload (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup not found -
409 Restore already running -
+ */ + public okhttp3.Call restoreBackupAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nullable RestoreBackupPayload restoreBackupPayload, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + restoreBackupValidateBeforeCall( + projectId, serverId, region, backupId, restoreBackupPayload, _callback); + localVarApiClient.executeAsync(localVarCall, _callback); + return localVarCall; + } + + /** + * Build call for restoreVolumeBackup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param volumeBackupId id of the volume backup (required) + * @param restoreVolumeBackupPayload (optional) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup not found -
+ */ + public okhttp3.Call restoreVolumeBackupCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nonnull String volumeBackupId, + @javax.annotation.Nullable RestoreVolumeBackupPayload restoreVolumeBackupPayload, + final ApiCallback _callback) + 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 = restoreVolumeBackupPayload; + + // create path and map variables + String localVarPath = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backups/{backupId}/volume-backups/{volumeBackupId}/restore" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())) + .replace( + "{" + "backupId" + "}", + localVarApiClient.escapeString(backupId.toString())) + .replace( + "{" + "volumeBackupId" + "}", + localVarApiClient.escapeString(volumeBackupId.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {"application/json"}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "POST", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call restoreVolumeBackupValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nonnull String volumeBackupId, + @javax.annotation.Nullable RestoreVolumeBackupPayload restoreVolumeBackupPayload, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling restoreVolumeBackup(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling restoreVolumeBackup(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling restoreVolumeBackup(Async)"); + } + + // verify the required parameter 'backupId' is set + if (backupId == null) { + throw new ApiException( + "Missing the required parameter 'backupId' when calling restoreVolumeBackup(Async)"); + } + + // verify the required parameter 'volumeBackupId' is set + if (volumeBackupId == null) { + throw new ApiException( + "Missing the required parameter 'volumeBackupId' when calling restoreVolumeBackup(Async)"); + } + + return restoreVolumeBackupCall( + projectId, + serverId, + region, + backupId, + volumeBackupId, + restoreVolumeBackupPayload, + _callback); + } + + /** + * trigger restore of the requested volume backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param volumeBackupId id of the volume backup (required) + * @param restoreVolumeBackupPayload (optional) + * @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
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup not found -
+ */ + public void restoreVolumeBackup( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nonnull String volumeBackupId, + @javax.annotation.Nullable RestoreVolumeBackupPayload restoreVolumeBackupPayload) + throws ApiException { + restoreVolumeBackupWithHttpInfo( + projectId, serverId, region, backupId, volumeBackupId, restoreVolumeBackupPayload); + } + + /** + * trigger restore of the requested volume backup + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param volumeBackupId id of the volume backup (required) + * @param restoreVolumeBackupPayload (optional) + * @return ApiResponse<Void> + * @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
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup not found -
+ */ + public ApiResponse restoreVolumeBackupWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nonnull String volumeBackupId, + @javax.annotation.Nullable RestoreVolumeBackupPayload restoreVolumeBackupPayload) + throws ApiException { + okhttp3.Call localVarCall = + restoreVolumeBackupValidateBeforeCall( + projectId, + serverId, + region, + backupId, + volumeBackupId, + restoreVolumeBackupPayload, + null); + return localVarApiClient.execute(localVarCall); + } + + /** + * trigger restore of the requested volume backup (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupId id of the backup (required) + * @param volumeBackupId id of the volume backup (required) + * @param restoreVolumeBackupPayload (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
202 Request is accepted, but processing may take some time. -
400 Bad Request -
401 Unauthorized -
404 Server | backup not found -
+ */ + public okhttp3.Call restoreVolumeBackupAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupId, + @javax.annotation.Nonnull String volumeBackupId, + @javax.annotation.Nullable RestoreVolumeBackupPayload restoreVolumeBackupPayload, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + restoreVolumeBackupValidateBeforeCall( + projectId, + serverId, + region, + backupId, + volumeBackupId, + restoreVolumeBackupPayload, + _callback); + localVarApiClient.executeAsync(localVarCall, _callback); + return localVarCall; + } + + /** + * Build call for updateBackupSchedule + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @param updateBackupSchedulePayload (optional) + * @param _callback Callback for upload/download progress + * @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 updated backup schedule -
400 Bad Request -
401 Unauthorized -
404 Server | schedule not found -
+ */ + public okhttp3.Call updateBackupScheduleCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + @javax.annotation.Nullable UpdateBackupSchedulePayload updateBackupSchedulePayload, + final ApiCallback _callback) + 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 = updateBackupSchedulePayload; + + // create path and map variables + String localVarPath = + "/v2/projects/{projectId}/regions/{region}/servers/{serverId}/backup-schedules/{backupScheduleId}" + .replace( + "{" + "projectId" + "}", + localVarApiClient.escapeString(projectId.toString())) + .replace( + "{" + "serverId" + "}", + localVarApiClient.escapeString(serverId.toString())) + .replace( + "{" + "region" + "}", + localVarApiClient.escapeString(region.toString())) + .replace( + "{" + "backupScheduleId" + "}", + localVarApiClient.escapeString(backupScheduleId.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = {"application/json"}; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = {"application/json"}; + final String localVarContentType = + localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] {}; + return localVarApiClient.buildCall( + basePath, + localVarPath, + "PUT", + localVarQueryParams, + localVarCollectionQueryParams, + localVarPostBody, + localVarHeaderParams, + localVarCookieParams, + localVarFormParams, + localVarAuthNames, + _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call updateBackupScheduleValidateBeforeCall( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + @javax.annotation.Nullable UpdateBackupSchedulePayload updateBackupSchedulePayload, + final ApiCallback _callback) + throws ApiException { + // verify the required parameter 'projectId' is set + if (projectId == null) { + throw new ApiException( + "Missing the required parameter 'projectId' when calling updateBackupSchedule(Async)"); + } + + // verify the required parameter 'serverId' is set + if (serverId == null) { + throw new ApiException( + "Missing the required parameter 'serverId' when calling updateBackupSchedule(Async)"); + } + + // verify the required parameter 'region' is set + if (region == null) { + throw new ApiException( + "Missing the required parameter 'region' when calling updateBackupSchedule(Async)"); + } + + // verify the required parameter 'backupScheduleId' is set + if (backupScheduleId == null) { + throw new ApiException( + "Missing the required parameter 'backupScheduleId' when calling updateBackupSchedule(Async)"); + } + + return updateBackupScheduleCall( + projectId, + serverId, + region, + backupScheduleId, + updateBackupSchedulePayload, + _callback); + } + + /** + * update backup schedule + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @param updateBackupSchedulePayload (optional) + * @return BackupSchedule + * @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 updated backup schedule -
400 Bad Request -
401 Unauthorized -
404 Server | schedule not found -
+ */ + public BackupSchedule updateBackupSchedule( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + @javax.annotation.Nullable UpdateBackupSchedulePayload updateBackupSchedulePayload) + throws ApiException { + ApiResponse localVarResp = + updateBackupScheduleWithHttpInfo( + projectId, serverId, region, backupScheduleId, updateBackupSchedulePayload); + return localVarResp.getData(); + } + + /** + * update backup schedule + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @param updateBackupSchedulePayload (optional) + * @return ApiResponse<BackupSchedule> + * @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 updated backup schedule -
400 Bad Request -
401 Unauthorized -
404 Server | schedule not found -
+ */ + public ApiResponse updateBackupScheduleWithHttpInfo( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + @javax.annotation.Nullable UpdateBackupSchedulePayload updateBackupSchedulePayload) + throws ApiException { + okhttp3.Call localVarCall = + updateBackupScheduleValidateBeforeCall( + projectId, + serverId, + region, + backupScheduleId, + updateBackupSchedulePayload, + null); + Type localVarReturnType = new TypeToken() {}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * update backup schedule (asynchronously) + * + * @param projectId project id (required) + * @param serverId server id (required) + * @param region region (required) + * @param backupScheduleId backup schedule id (required) + * @param updateBackupSchedulePayload (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body + * object + * @http.response.details + * + * + * + * + * + * + * + *
Response Details
Status Code Description Response Headers
200 updated backup schedule -
400 Bad Request -
401 Unauthorized -
404 Server | schedule not found -
+ */ + public okhttp3.Call updateBackupScheduleAsync( + @javax.annotation.Nonnull String projectId, + @javax.annotation.Nonnull String serverId, + @javax.annotation.Nonnull String region, + @javax.annotation.Nonnull String backupScheduleId, + @javax.annotation.Nullable UpdateBackupSchedulePayload updateBackupSchedulePayload, + final ApiCallback _callback) + throws ApiException { + + okhttp3.Call localVarCall = + updateBackupScheduleValidateBeforeCall( + projectId, + serverId, + region, + backupScheduleId, + updateBackupSchedulePayload, + _callback); + Type localVarReturnType = new TypeToken() {}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/api/ServerBackupApi.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/api/ServerBackupApi.java new file mode 100644 index 0000000..6290cbd --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/api/ServerBackupApi.java @@ -0,0 +1,64 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.api; + +import cloud.stackit.sdk.core.config.CoreConfiguration; +import java.io.IOException; +import okhttp3.OkHttpClient; + +public class ServerBackupApi extends DefaultApi { + /** + * Basic constructor for ServerBackupApi + * + *

For production use consider using the constructor with the OkHttpClient parameter. + * + * @throws IOException + */ + public ServerBackupApi() throws IOException { + super(); + } + + /** + * Basic Constructor for ServerBackupApi + * + *

For production use consider using the constructor with the OkHttpClient parameter. + * + * @param config your STACKIT SDK CoreConfiguration + * @throws IOException + */ + public ServerBackupApi(CoreConfiguration configuration) throws IOException { + super(configuration); + } + + /** + * Constructor for ServerBackupApi + * + * @param httpClient OkHttpClient object + * @throws IOException + */ + public ServerBackupApi(OkHttpClient httpClient) throws IOException { + super(httpClient); + } + + /** + * Constructor for ServerBackupApi + * + * @param httpClient OkHttpClient object + * @param configuration your STACKIT SDK CoreConfiguration + * @throws IOException + */ + public ServerBackupApi(OkHttpClient httpClient, CoreConfiguration configuration) + throws IOException { + super(httpClient, configuration); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/AbstractOpenApiSchema.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/AbstractOpenApiSchema.java new file mode 100644 index 0000000..1fde19b --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/AbstractOpenApiSchema.java @@ -0,0 +1,145 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import java.util.Map; +import java.util.Objects; + +/** Abstract class for oneOf,anyOf schemas defined in OpenAPI spec */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public abstract class AbstractOpenApiSchema { + + // store the actual instance of the schema/object + private Object instance; + + // is nullable + private Boolean isNullable; + + // schema type (e.g. oneOf, anyOf) + private final String schemaType; + + public AbstractOpenApiSchema(String schemaType, Boolean isNullable) { + this.schemaType = schemaType; + this.isNullable = isNullable; + } + + /** + * Get the list of oneOf/anyOf composed schemas allowed to be stored in this object + * + * @return an instance of the actual schema/object + */ + public abstract Map> getSchemas(); + + /** + * Get the actual instance + * + * @return an instance of the actual schema/object + */ + // @JsonValue + public Object getActualInstance() { + return instance; + } + + /** + * Set the actual instance + * + * @param instance the actual instance of the schema/object + */ + public void setActualInstance(Object instance) { + this.instance = instance; + } + + /** + * Get the instant recursively when the schemas defined in oneOf/anyof happen to be oneOf/anyOf + * schema as well + * + * @return an instance of the actual schema/object + */ + public Object getActualInstanceRecursively() { + return getActualInstanceRecursively(this); + } + + private Object getActualInstanceRecursively(AbstractOpenApiSchema object) { + if (object.getActualInstance() == null) { + return null; + } else if (object.getActualInstance() instanceof AbstractOpenApiSchema) { + return getActualInstanceRecursively((AbstractOpenApiSchema) object.getActualInstance()); + } else { + return object.getActualInstance(); + } + } + + /** + * Get the schema type (e.g. anyOf, oneOf) + * + * @return the schema type + */ + public String getSchemaType() { + return schemaType; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ").append(getClass()).append(" {\n"); + sb.append(" instance: ").append(toIndentedString(instance)).append("\n"); + sb.append(" isNullable: ").append(toIndentedString(isNullable)).append("\n"); + sb.append(" schemaType: ").append(toIndentedString(schemaType)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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 boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AbstractOpenApiSchema a = (AbstractOpenApiSchema) o; + return Objects.equals(this.instance, a.instance) + && Objects.equals(this.isNullable, a.isNullable) + && Objects.equals(this.schemaType, a.schemaType); + } + + @Override + public int hashCode() { + return Objects.hash(instance, isNullable, schemaType); + } + + /** + * Is nullable + * + * @return true if it's nullable + */ + public Boolean isNullable() { + if (Boolean.TRUE.equals(isNullable)) { + return Boolean.TRUE; + } else { + return Boolean.FALSE; + } + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/Backup.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/Backup.java new file mode 100644 index 0000000..880caf4 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/Backup.java @@ -0,0 +1,533 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.JSON; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +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.JsonAdapter; +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 java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** Backup */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class Backup { + public static final String SERIALIZED_NAME_CREATED_AT = "createdAt"; + + @SerializedName(SERIALIZED_NAME_CREATED_AT) + @javax.annotation.Nonnull + private String createdAt; + + public static final String SERIALIZED_NAME_EXPIRE_AT = "expireAt"; + + @SerializedName(SERIALIZED_NAME_EXPIRE_AT) + @javax.annotation.Nonnull + private String expireAt; + + public static final String SERIALIZED_NAME_ID = "id"; + + @SerializedName(SERIALIZED_NAME_ID) + @javax.annotation.Nonnull + private String id; + + public static final String SERIALIZED_NAME_LAST_RESTORED_AT = "lastRestoredAt"; + + @SerializedName(SERIALIZED_NAME_LAST_RESTORED_AT) + @javax.annotation.Nullable private String lastRestoredAt; + + public static final String SERIALIZED_NAME_NAME = "name"; + + @SerializedName(SERIALIZED_NAME_NAME) + @javax.annotation.Nonnull + private String name; + + public static final String SERIALIZED_NAME_SIZE = "size"; + + @SerializedName(SERIALIZED_NAME_SIZE) + @javax.annotation.Nullable private Integer size; + + /** Gets or Sets status */ + @JsonAdapter(StatusEnum.Adapter.class) + public enum StatusEnum { + CREATING("creating"), + + AVAILABLE("available"), + + DELETING("deleting"), + + ERROR("error"), + + RESTORING("restoring"), + + ERROR_DELETING("error_deleting"), + + BACKING_UP("backing up"), + + INCONSISTENT("inconsistent"), + + ERROR_CREATING("error-creating"), + + UNKNOWN_DEFAULT_OPEN_API("unknown_default_open_api"); + + private String value; + + StatusEnum(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static StatusEnum fromValue(String value) { + for (StatusEnum b : StatusEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + return UNKNOWN_DEFAULT_OPEN_API; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final StatusEnum enumeration) + throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public StatusEnum read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return StatusEnum.fromValue(value); + } + } + + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + String value = jsonElement.getAsString(); + StatusEnum.fromValue(value); + } + } + + public static final String SERIALIZED_NAME_STATUS = "status"; + + @SerializedName(SERIALIZED_NAME_STATUS) + @javax.annotation.Nonnull + private StatusEnum status; + + public static final String SERIALIZED_NAME_VOLUME_BACKUPS = "volumeBackups"; + + @SerializedName(SERIALIZED_NAME_VOLUME_BACKUPS) + @javax.annotation.Nullable private List volumeBackups = new ArrayList<>(); + + public Backup() {} + + public Backup createdAt(@javax.annotation.Nonnull String createdAt) { + this.createdAt = createdAt; + return this; + } + + /** + * Get createdAt + * + * @return createdAt + */ + @javax.annotation.Nonnull + public String getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(@javax.annotation.Nonnull String createdAt) { + this.createdAt = createdAt; + } + + public Backup expireAt(@javax.annotation.Nonnull String expireAt) { + this.expireAt = expireAt; + return this; + } + + /** + * Get expireAt + * + * @return expireAt + */ + @javax.annotation.Nonnull + public String getExpireAt() { + return expireAt; + } + + public void setExpireAt(@javax.annotation.Nonnull String expireAt) { + this.expireAt = expireAt; + } + + public Backup id(@javax.annotation.Nonnull String id) { + this.id = id; + return this; + } + + /** + * Get id + * + * @return id + */ + @javax.annotation.Nonnull + public String getId() { + return id; + } + + public void setId(@javax.annotation.Nonnull String id) { + this.id = id; + } + + public Backup lastRestoredAt(@javax.annotation.Nullable String lastRestoredAt) { + this.lastRestoredAt = lastRestoredAt; + return this; + } + + /** + * Get lastRestoredAt + * + * @return lastRestoredAt + */ + @javax.annotation.Nullable public String getLastRestoredAt() { + return lastRestoredAt; + } + + public void setLastRestoredAt(@javax.annotation.Nullable String lastRestoredAt) { + this.lastRestoredAt = lastRestoredAt; + } + + public Backup name(@javax.annotation.Nonnull String name) { + this.name = name; + return this; + } + + /** + * Get name + * + * @return name + */ + @javax.annotation.Nonnull + public String getName() { + return name; + } + + public void setName(@javax.annotation.Nonnull String name) { + this.name = name; + } + + public Backup size(@javax.annotation.Nullable Integer size) { + this.size = size; + return this; + } + + /** + * Get size + * + * @return size + */ + @javax.annotation.Nullable public Integer getSize() { + return size; + } + + public void setSize(@javax.annotation.Nullable Integer size) { + this.size = size; + } + + public Backup status(@javax.annotation.Nonnull StatusEnum status) { + this.status = status; + return this; + } + + /** + * Get status + * + * @return status + */ + @javax.annotation.Nonnull + public StatusEnum getStatus() { + return status; + } + + public void setStatus(@javax.annotation.Nonnull StatusEnum status) { + this.status = status; + } + + public Backup volumeBackups( + @javax.annotation.Nullable List volumeBackups) { + this.volumeBackups = volumeBackups; + return this; + } + + public Backup addVolumeBackupsItem(BackupVolumeBackupsInner volumeBackupsItem) { + if (this.volumeBackups == null) { + this.volumeBackups = new ArrayList<>(); + } + this.volumeBackups.add(volumeBackupsItem); + return this; + } + + /** + * Get volumeBackups + * + * @return volumeBackups + */ + @javax.annotation.Nullable public List getVolumeBackups() { + return volumeBackups; + } + + public void setVolumeBackups( + @javax.annotation.Nullable List volumeBackups) { + this.volumeBackups = volumeBackups; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Backup backup = (Backup) o; + return Objects.equals(this.createdAt, backup.createdAt) + && Objects.equals(this.expireAt, backup.expireAt) + && Objects.equals(this.id, backup.id) + && Objects.equals(this.lastRestoredAt, backup.lastRestoredAt) + && Objects.equals(this.name, backup.name) + && Objects.equals(this.size, backup.size) + && Objects.equals(this.status, backup.status) + && Objects.equals(this.volumeBackups, backup.volumeBackups); + } + + @Override + public int hashCode() { + return Objects.hash( + createdAt, expireAt, id, lastRestoredAt, name, size, status, volumeBackups); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Backup {\n"); + sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n"); + sb.append(" expireAt: ").append(toIndentedString(expireAt)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" lastRestoredAt: ").append(toIndentedString(lastRestoredAt)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" size: ").append(toIndentedString(size)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" volumeBackups: ").append(toIndentedString(volumeBackups)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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( + Arrays.asList( + "createdAt", + "expireAt", + "id", + "lastRestoredAt", + "name", + "size", + "status", + "volumeBackups")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = + new HashSet(Arrays.asList("createdAt", "expireAt", "id", "name", "status")); + } + + /** + * 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 Backup + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!Backup.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in Backup is not found in the empty JSON string", + Backup.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!Backup.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `Backup` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + + // check to make sure all required properties/fields are present in the JSON string + for (String requiredField : Backup.openapiRequiredFields) { + if (jsonElement.getAsJsonObject().get(requiredField) == null) { + throw new IllegalArgumentException( + String.format( + "The required field `%s` is not found in the JSON string: %s", + requiredField, jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (!jsonObj.get("createdAt").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `createdAt` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("createdAt").toString())); + } + if (!jsonObj.get("expireAt").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `expireAt` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("expireAt").toString())); + } + if (!jsonObj.get("id").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `id` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("id").toString())); + } + if ((jsonObj.get("lastRestoredAt") != null && !jsonObj.get("lastRestoredAt").isJsonNull()) + && !jsonObj.get("lastRestoredAt").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `lastRestoredAt` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("lastRestoredAt").toString())); + } + if (!jsonObj.get("name").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `name` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("name").toString())); + } + if (!jsonObj.get("status").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `status` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("status").toString())); + } + // validate the required field `status` + StatusEnum.validateJsonElement(jsonObj.get("status")); + if (jsonObj.get("volumeBackups") != null && !jsonObj.get("volumeBackups").isJsonNull()) { + JsonArray jsonArrayvolumeBackups = jsonObj.getAsJsonArray("volumeBackups"); + if (jsonArrayvolumeBackups != null) { + // ensure the json data is an array + if (!jsonObj.get("volumeBackups").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `volumeBackups` to be an array in the JSON string but got `%s`", + jsonObj.get("volumeBackups").toString())); + } + + // validate the optional field `volumeBackups` (array) + for (int i = 0; i < jsonArrayvolumeBackups.size(); i++) { + BackupVolumeBackupsInner.validateJsonElement(jsonArrayvolumeBackups.get(i)); + } + ; + } + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!Backup.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'Backup' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(Backup.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, Backup value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public Backup read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of Backup given an JSON string + * + * @param jsonString JSON string + * @return An instance of Backup + * @throws IOException if the JSON string is invalid with respect to Backup + */ + public static Backup fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, Backup.class); + } + + /** + * Convert an instance of Backup to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupJob.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupJob.java new file mode 100644 index 0000000..41e2504 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupJob.java @@ -0,0 +1,206 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** BackupJob */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class BackupJob { + public static final String SERIALIZED_NAME_ID = "id"; + + @SerializedName(SERIALIZED_NAME_ID) + @javax.annotation.Nonnull + private String id; + + public BackupJob() {} + + public BackupJob id(@javax.annotation.Nonnull String id) { + this.id = id; + return this; + } + + /** + * Get id + * + * @return id + */ + @javax.annotation.Nonnull + public String getId() { + return id; + } + + public void setId(@javax.annotation.Nonnull String id) { + this.id = id; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BackupJob backupJob = (BackupJob) o; + return Objects.equals(this.id, backupJob.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BackupJob {\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("id")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(Arrays.asList("id")); + } + + /** + * 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 BackupJob + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!BackupJob.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in BackupJob is not found in the empty JSON string", + BackupJob.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!BackupJob.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `BackupJob` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + + // check to make sure all required properties/fields are present in the JSON string + for (String requiredField : BackupJob.openapiRequiredFields) { + if (jsonElement.getAsJsonObject().get(requiredField) == null) { + throw new IllegalArgumentException( + String.format( + "The required field `%s` is not found in the JSON string: %s", + requiredField, jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (!jsonObj.get("id").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `id` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("id").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!BackupJob.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'BackupJob' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(BackupJob.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, BackupJob value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public BackupJob read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of BackupJob given an JSON string + * + * @param jsonString JSON string + * @return An instance of BackupJob + * @throws IOException if the JSON string is invalid with respect to BackupJob + */ + public static BackupJob fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, BackupJob.class); + } + + /** + * Convert an instance of BackupJob to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupPolicy.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupPolicy.java new file mode 100644 index 0000000..e977874 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupPolicy.java @@ -0,0 +1,382 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** BackupPolicy */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class BackupPolicy { + public static final String SERIALIZED_NAME_BACKUP_PROPERTIES = "backupProperties"; + + @SerializedName(SERIALIZED_NAME_BACKUP_PROPERTIES) + @javax.annotation.Nullable private BackupPolicyBackupProperties backupProperties; + + public static final String SERIALIZED_NAME_DEFAULT = "default"; + + @SerializedName(SERIALIZED_NAME_DEFAULT) + @javax.annotation.Nullable private Boolean _default; + + public static final String SERIALIZED_NAME_DESCRIPTION = "description"; + + @SerializedName(SERIALIZED_NAME_DESCRIPTION) + @javax.annotation.Nullable private String description; + + public static final String SERIALIZED_NAME_ENABLED = "enabled"; + + @SerializedName(SERIALIZED_NAME_ENABLED) + @javax.annotation.Nullable private Boolean enabled; + + public static final String SERIALIZED_NAME_ID = "id"; + + @SerializedName(SERIALIZED_NAME_ID) + @javax.annotation.Nullable private String id; + + public static final String SERIALIZED_NAME_NAME = "name"; + + @SerializedName(SERIALIZED_NAME_NAME) + @javax.annotation.Nullable private String name; + + public static final String SERIALIZED_NAME_RRULE = "rrule"; + + @SerializedName(SERIALIZED_NAME_RRULE) + @javax.annotation.Nullable private String rrule; + + public BackupPolicy() {} + + public BackupPolicy backupProperties( + @javax.annotation.Nullable BackupPolicyBackupProperties backupProperties) { + this.backupProperties = backupProperties; + return this; + } + + /** + * Get backupProperties + * + * @return backupProperties + */ + @javax.annotation.Nullable public BackupPolicyBackupProperties getBackupProperties() { + return backupProperties; + } + + public void setBackupProperties( + @javax.annotation.Nullable BackupPolicyBackupProperties backupProperties) { + this.backupProperties = backupProperties; + } + + public BackupPolicy _default(@javax.annotation.Nullable Boolean _default) { + this._default = _default; + return this; + } + + /** + * Get _default + * + * @return _default + */ + @javax.annotation.Nullable public Boolean getDefault() { + return _default; + } + + public void setDefault(@javax.annotation.Nullable Boolean _default) { + this._default = _default; + } + + public BackupPolicy description(@javax.annotation.Nullable String description) { + this.description = description; + return this; + } + + /** + * Get description + * + * @return description + */ + @javax.annotation.Nullable public String getDescription() { + return description; + } + + public void setDescription(@javax.annotation.Nullable String description) { + this.description = description; + } + + public BackupPolicy enabled(@javax.annotation.Nullable Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get enabled + * + * @return enabled + */ + @javax.annotation.Nullable public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(@javax.annotation.Nullable Boolean enabled) { + this.enabled = enabled; + } + + public BackupPolicy id(@javax.annotation.Nullable String id) { + this.id = id; + return this; + } + + /** + * Get id + * + * @return id + */ + @javax.annotation.Nullable public String getId() { + return id; + } + + public void setId(@javax.annotation.Nullable String id) { + this.id = id; + } + + public BackupPolicy name(@javax.annotation.Nullable String name) { + this.name = name; + return this; + } + + /** + * Get name + * + * @return name + */ + @javax.annotation.Nullable public String getName() { + return name; + } + + public void setName(@javax.annotation.Nullable String name) { + this.name = name; + } + + public BackupPolicy rrule(@javax.annotation.Nullable String rrule) { + this.rrule = rrule; + return this; + } + + /** + * Get rrule + * + * @return rrule + */ + @javax.annotation.Nullable public String getRrule() { + return rrule; + } + + public void setRrule(@javax.annotation.Nullable String rrule) { + this.rrule = rrule; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BackupPolicy backupPolicy = (BackupPolicy) o; + return Objects.equals(this.backupProperties, backupPolicy.backupProperties) + && Objects.equals(this._default, backupPolicy._default) + && Objects.equals(this.description, backupPolicy.description) + && Objects.equals(this.enabled, backupPolicy.enabled) + && Objects.equals(this.id, backupPolicy.id) + && Objects.equals(this.name, backupPolicy.name) + && Objects.equals(this.rrule, backupPolicy.rrule); + } + + @Override + public int hashCode() { + return Objects.hash(backupProperties, _default, description, enabled, id, name, rrule); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BackupPolicy {\n"); + sb.append(" backupProperties: ").append(toIndentedString(backupProperties)).append("\n"); + sb.append(" _default: ").append(toIndentedString(_default)).append("\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" rrule: ").append(toIndentedString(rrule)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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( + Arrays.asList( + "backupProperties", + "default", + "description", + "enabled", + "id", + "name", + "rrule")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * 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 BackupPolicy + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!BackupPolicy.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in BackupPolicy is not found in the empty JSON string", + BackupPolicy.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!BackupPolicy.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `BackupPolicy` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + // validate the optional field `backupProperties` + if (jsonObj.get("backupProperties") != null + && !jsonObj.get("backupProperties").isJsonNull()) { + BackupPolicyBackupProperties.validateJsonElement(jsonObj.get("backupProperties")); + } + if ((jsonObj.get("description") != null && !jsonObj.get("description").isJsonNull()) + && !jsonObj.get("description").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `description` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("description").toString())); + } + if ((jsonObj.get("id") != null && !jsonObj.get("id").isJsonNull()) + && !jsonObj.get("id").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `id` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("id").toString())); + } + if ((jsonObj.get("name") != null && !jsonObj.get("name").isJsonNull()) + && !jsonObj.get("name").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `name` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("name").toString())); + } + if ((jsonObj.get("rrule") != null && !jsonObj.get("rrule").isJsonNull()) + && !jsonObj.get("rrule").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `rrule` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("rrule").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!BackupPolicy.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'BackupPolicy' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(BackupPolicy.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, BackupPolicy value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public BackupPolicy read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of BackupPolicy given an JSON string + * + * @param jsonString JSON string + * @return An instance of BackupPolicy + * @throws IOException if the JSON string is invalid with respect to BackupPolicy + */ + public static BackupPolicy fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, BackupPolicy.class); + } + + /** + * Convert an instance of BackupPolicy to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupPolicyBackupProperties.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupPolicyBackupProperties.java new file mode 100644 index 0000000..458901f --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupPolicyBackupProperties.java @@ -0,0 +1,228 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** BackupPolicyBackupProperties */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class BackupPolicyBackupProperties { + public static final String SERIALIZED_NAME_NAME = "name"; + + @SerializedName(SERIALIZED_NAME_NAME) + @javax.annotation.Nullable private String name; + + public static final String SERIALIZED_NAME_RETENTION_PERIOD = "retentionPeriod"; + + @SerializedName(SERIALIZED_NAME_RETENTION_PERIOD) + @javax.annotation.Nullable private Integer retentionPeriod; + + public BackupPolicyBackupProperties() {} + + public BackupPolicyBackupProperties name(@javax.annotation.Nullable String name) { + this.name = name; + return this; + } + + /** + * Get name + * + * @return name + */ + @javax.annotation.Nullable public String getName() { + return name; + } + + public void setName(@javax.annotation.Nullable String name) { + this.name = name; + } + + public BackupPolicyBackupProperties retentionPeriod( + @javax.annotation.Nullable Integer retentionPeriod) { + this.retentionPeriod = retentionPeriod; + return this; + } + + /** + * Get retentionPeriod + * + * @return retentionPeriod + */ + @javax.annotation.Nullable public Integer getRetentionPeriod() { + return retentionPeriod; + } + + public void setRetentionPeriod(@javax.annotation.Nullable Integer retentionPeriod) { + this.retentionPeriod = retentionPeriod; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BackupPolicyBackupProperties backupPolicyBackupProperties = + (BackupPolicyBackupProperties) o; + return Objects.equals(this.name, backupPolicyBackupProperties.name) + && Objects.equals( + this.retentionPeriod, backupPolicyBackupProperties.retentionPeriod); + } + + @Override + public int hashCode() { + return Objects.hash(name, retentionPeriod); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BackupPolicyBackupProperties {\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" retentionPeriod: ").append(toIndentedString(retentionPeriod)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("name", "retentionPeriod")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * 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 + * BackupPolicyBackupProperties + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!BackupPolicyBackupProperties.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in BackupPolicyBackupProperties is not found in the empty JSON string", + BackupPolicyBackupProperties.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!BackupPolicyBackupProperties.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `BackupPolicyBackupProperties` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("name") != null && !jsonObj.get("name").isJsonNull()) + && !jsonObj.get("name").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `name` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("name").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!BackupPolicyBackupProperties.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'BackupPolicyBackupProperties' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter( + this, TypeToken.get(BackupPolicyBackupProperties.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, BackupPolicyBackupProperties value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public BackupPolicyBackupProperties read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of BackupPolicyBackupProperties given an JSON string + * + * @param jsonString JSON string + * @return An instance of BackupPolicyBackupProperties + * @throws IOException if the JSON string is invalid with respect to + * BackupPolicyBackupProperties + */ + public static BackupPolicyBackupProperties fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, BackupPolicyBackupProperties.class); + } + + /** + * Convert an instance of BackupPolicyBackupProperties to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupProperties.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupProperties.java new file mode 100644 index 0000000..e267229 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupProperties.java @@ -0,0 +1,278 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** BackupProperties */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class BackupProperties { + public static final String SERIALIZED_NAME_NAME = "name"; + + @SerializedName(SERIALIZED_NAME_NAME) + @javax.annotation.Nonnull + private String name; + + public static final String SERIALIZED_NAME_RETENTION_PERIOD = "retentionPeriod"; + + @SerializedName(SERIALIZED_NAME_RETENTION_PERIOD) + @javax.annotation.Nonnull + private Integer retentionPeriod; + + public static final String SERIALIZED_NAME_VOLUME_IDS = "volumeIds"; + + @SerializedName(SERIALIZED_NAME_VOLUME_IDS) + @javax.annotation.Nullable private List volumeIds = new ArrayList<>(); + + public BackupProperties() {} + + public BackupProperties name(@javax.annotation.Nonnull String name) { + this.name = name; + return this; + } + + /** + * Max 255 characters + * + * @return name + */ + @javax.annotation.Nonnull + public String getName() { + return name; + } + + public void setName(@javax.annotation.Nonnull String name) { + this.name = name; + } + + public BackupProperties retentionPeriod(@javax.annotation.Nonnull Integer retentionPeriod) { + this.retentionPeriod = retentionPeriod; + return this; + } + + /** + * Values are set in days (1-36500) minimum: 1 maximum: 36500 + * + * @return retentionPeriod + */ + @javax.annotation.Nonnull + public Integer getRetentionPeriod() { + return retentionPeriod; + } + + public void setRetentionPeriod(@javax.annotation.Nonnull Integer retentionPeriod) { + this.retentionPeriod = retentionPeriod; + } + + public BackupProperties volumeIds(@javax.annotation.Nullable List volumeIds) { + this.volumeIds = volumeIds; + return this; + } + + public BackupProperties addVolumeIdsItem(String volumeIdsItem) { + if (this.volumeIds == null) { + this.volumeIds = new ArrayList<>(); + } + this.volumeIds.add(volumeIdsItem); + return this; + } + + /** + * Get volumeIds + * + * @return volumeIds + */ + @javax.annotation.Nullable public List getVolumeIds() { + return volumeIds; + } + + public void setVolumeIds(@javax.annotation.Nullable List volumeIds) { + this.volumeIds = volumeIds; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BackupProperties backupProperties = (BackupProperties) o; + return Objects.equals(this.name, backupProperties.name) + && Objects.equals(this.retentionPeriod, backupProperties.retentionPeriod) + && Objects.equals(this.volumeIds, backupProperties.volumeIds); + } + + @Override + public int hashCode() { + return Objects.hash(name, retentionPeriod, volumeIds); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BackupProperties {\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" retentionPeriod: ").append(toIndentedString(retentionPeriod)).append("\n"); + sb.append(" volumeIds: ").append(toIndentedString(volumeIds)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("name", "retentionPeriod", "volumeIds")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(Arrays.asList("name", "retentionPeriod")); + } + + /** + * 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 BackupProperties + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!BackupProperties.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in BackupProperties is not found in the empty JSON string", + BackupProperties.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!BackupProperties.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `BackupProperties` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + + // check to make sure all required properties/fields are present in the JSON string + for (String requiredField : BackupProperties.openapiRequiredFields) { + if (jsonElement.getAsJsonObject().get(requiredField) == null) { + throw new IllegalArgumentException( + String.format( + "The required field `%s` is not found in the JSON string: %s", + requiredField, jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (!jsonObj.get("name").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `name` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("name").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("volumeIds") != null + && !jsonObj.get("volumeIds").isJsonNull() + && !jsonObj.get("volumeIds").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `volumeIds` to be an array in the JSON string but got `%s`", + jsonObj.get("volumeIds").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!BackupProperties.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'BackupProperties' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(BackupProperties.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, BackupProperties value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public BackupProperties read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of BackupProperties given an JSON string + * + * @param jsonString JSON string + * @return An instance of BackupProperties + * @throws IOException if the JSON string is invalid with respect to BackupProperties + */ + public static BackupProperties fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, BackupProperties.class); + } + + /** + * Convert an instance of BackupProperties to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupSchedule.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupSchedule.java new file mode 100644 index 0000000..66ac462 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupSchedule.java @@ -0,0 +1,327 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** BackupSchedule */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class BackupSchedule { + public static final String SERIALIZED_NAME_BACKUP_PROPERTIES = "backupProperties"; + + @SerializedName(SERIALIZED_NAME_BACKUP_PROPERTIES) + @javax.annotation.Nullable private BackupProperties backupProperties; + + public static final String SERIALIZED_NAME_ENABLED = "enabled"; + + @SerializedName(SERIALIZED_NAME_ENABLED) + @javax.annotation.Nonnull + private Boolean enabled; + + public static final String SERIALIZED_NAME_ID = "id"; + + @SerializedName(SERIALIZED_NAME_ID) + @javax.annotation.Nonnull + private Integer id; + + public static final String SERIALIZED_NAME_NAME = "name"; + + @SerializedName(SERIALIZED_NAME_NAME) + @javax.annotation.Nonnull + private String name; + + public static final String SERIALIZED_NAME_RRULE = "rrule"; + + @SerializedName(SERIALIZED_NAME_RRULE) + @javax.annotation.Nonnull + private String rrule; + + public BackupSchedule() {} + + public BackupSchedule backupProperties( + @javax.annotation.Nullable BackupProperties backupProperties) { + this.backupProperties = backupProperties; + return this; + } + + /** + * Get backupProperties + * + * @return backupProperties + */ + @javax.annotation.Nullable public BackupProperties getBackupProperties() { + return backupProperties; + } + + public void setBackupProperties(@javax.annotation.Nullable BackupProperties backupProperties) { + this.backupProperties = backupProperties; + } + + public BackupSchedule enabled(@javax.annotation.Nonnull Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get enabled + * + * @return enabled + */ + @javax.annotation.Nonnull + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(@javax.annotation.Nonnull Boolean enabled) { + this.enabled = enabled; + } + + public BackupSchedule id(@javax.annotation.Nonnull Integer id) { + this.id = id; + return this; + } + + /** + * Get id + * + * @return id + */ + @javax.annotation.Nonnull + public Integer getId() { + return id; + } + + public void setId(@javax.annotation.Nonnull Integer id) { + this.id = id; + } + + public BackupSchedule name(@javax.annotation.Nonnull String name) { + this.name = name; + return this; + } + + /** + * Get name + * + * @return name + */ + @javax.annotation.Nonnull + public String getName() { + return name; + } + + public void setName(@javax.annotation.Nonnull String name) { + this.name = name; + } + + public BackupSchedule rrule(@javax.annotation.Nonnull String rrule) { + this.rrule = rrule; + return this; + } + + /** + * Get rrule + * + * @return rrule + */ + @javax.annotation.Nonnull + public String getRrule() { + return rrule; + } + + public void setRrule(@javax.annotation.Nonnull String rrule) { + this.rrule = rrule; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BackupSchedule backupSchedule = (BackupSchedule) o; + return Objects.equals(this.backupProperties, backupSchedule.backupProperties) + && Objects.equals(this.enabled, backupSchedule.enabled) + && Objects.equals(this.id, backupSchedule.id) + && Objects.equals(this.name, backupSchedule.name) + && Objects.equals(this.rrule, backupSchedule.rrule); + } + + @Override + public int hashCode() { + return Objects.hash(backupProperties, enabled, id, name, rrule); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BackupSchedule {\n"); + sb.append(" backupProperties: ").append(toIndentedString(backupProperties)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" rrule: ").append(toIndentedString(rrule)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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( + Arrays.asList("backupProperties", "enabled", "id", "name", "rrule")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = + new HashSet(Arrays.asList("enabled", "id", "name", "rrule")); + } + + /** + * 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 BackupSchedule + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!BackupSchedule.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in BackupSchedule is not found in the empty JSON string", + BackupSchedule.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!BackupSchedule.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `BackupSchedule` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + + // check to make sure all required properties/fields are present in the JSON string + for (String requiredField : BackupSchedule.openapiRequiredFields) { + if (jsonElement.getAsJsonObject().get(requiredField) == null) { + throw new IllegalArgumentException( + String.format( + "The required field `%s` is not found in the JSON string: %s", + requiredField, jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + // validate the optional field `backupProperties` + if (jsonObj.get("backupProperties") != null + && !jsonObj.get("backupProperties").isJsonNull()) { + BackupProperties.validateJsonElement(jsonObj.get("backupProperties")); + } + if (!jsonObj.get("name").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `name` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("name").toString())); + } + if (!jsonObj.get("rrule").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `rrule` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("rrule").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!BackupSchedule.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'BackupSchedule' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(BackupSchedule.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, BackupSchedule value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public BackupSchedule read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of BackupSchedule given an JSON string + * + * @param jsonString JSON string + * @return An instance of BackupSchedule + * @throws IOException if the JSON string is invalid with respect to BackupSchedule + */ + public static BackupSchedule fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, BackupSchedule.class); + } + + /** + * Convert an instance of BackupSchedule to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupVolumeBackupsInner.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupVolumeBackupsInner.java new file mode 100644 index 0000000..64edc67 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/BackupVolumeBackupsInner.java @@ -0,0 +1,432 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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.JsonAdapter; +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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** BackupVolumeBackupsInner */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class BackupVolumeBackupsInner { + public static final String SERIALIZED_NAME_ID = "id"; + + @SerializedName(SERIALIZED_NAME_ID) + @javax.annotation.Nullable private String id; + + public static final String SERIALIZED_NAME_LAST_RESTORED_AT = "lastRestoredAt"; + + @SerializedName(SERIALIZED_NAME_LAST_RESTORED_AT) + @javax.annotation.Nullable private String lastRestoredAt; + + public static final String SERIALIZED_NAME_LAST_RESTORED_VOLUME_ID = "lastRestoredVolumeId"; + + @SerializedName(SERIALIZED_NAME_LAST_RESTORED_VOLUME_ID) + @javax.annotation.Nullable private String lastRestoredVolumeId; + + public static final String SERIALIZED_NAME_SIZE = "size"; + + @SerializedName(SERIALIZED_NAME_SIZE) + @javax.annotation.Nullable private Integer size; + + /** Gets or Sets status */ + @JsonAdapter(StatusEnum.Adapter.class) + public enum StatusEnum { + CREATING("creating"), + + AVAILABLE("available"), + + DELETING("deleting"), + + ERROR("error"), + + RESTORING("restoring"), + + ERROR_DELETING("error_deleting"), + + ERROR_CREATING("error-creating"), + + UNKNOWN_DEFAULT_OPEN_API("unknown_default_open_api"); + + private String value; + + StatusEnum(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + public static StatusEnum fromValue(String value) { + for (StatusEnum b : StatusEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + return UNKNOWN_DEFAULT_OPEN_API; + } + + public static class Adapter extends TypeAdapter { + @Override + public void write(final JsonWriter jsonWriter, final StatusEnum enumeration) + throws IOException { + jsonWriter.value(enumeration.getValue()); + } + + @Override + public StatusEnum read(final JsonReader jsonReader) throws IOException { + String value = jsonReader.nextString(); + return StatusEnum.fromValue(value); + } + } + + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + String value = jsonElement.getAsString(); + StatusEnum.fromValue(value); + } + } + + public static final String SERIALIZED_NAME_STATUS = "status"; + + @SerializedName(SERIALIZED_NAME_STATUS) + @javax.annotation.Nullable private StatusEnum status; + + public static final String SERIALIZED_NAME_VOLUME_ID = "volumeId"; + + @SerializedName(SERIALIZED_NAME_VOLUME_ID) + @javax.annotation.Nullable private String volumeId; + + public BackupVolumeBackupsInner() {} + + public BackupVolumeBackupsInner id(@javax.annotation.Nullable String id) { + this.id = id; + return this; + } + + /** + * Get id + * + * @return id + */ + @javax.annotation.Nullable public String getId() { + return id; + } + + public void setId(@javax.annotation.Nullable String id) { + this.id = id; + } + + public BackupVolumeBackupsInner lastRestoredAt( + @javax.annotation.Nullable String lastRestoredAt) { + this.lastRestoredAt = lastRestoredAt; + return this; + } + + /** + * Get lastRestoredAt + * + * @return lastRestoredAt + */ + @javax.annotation.Nullable public String getLastRestoredAt() { + return lastRestoredAt; + } + + public void setLastRestoredAt(@javax.annotation.Nullable String lastRestoredAt) { + this.lastRestoredAt = lastRestoredAt; + } + + public BackupVolumeBackupsInner lastRestoredVolumeId( + @javax.annotation.Nullable String lastRestoredVolumeId) { + this.lastRestoredVolumeId = lastRestoredVolumeId; + return this; + } + + /** + * Get lastRestoredVolumeId + * + * @return lastRestoredVolumeId + */ + @javax.annotation.Nullable public String getLastRestoredVolumeId() { + return lastRestoredVolumeId; + } + + public void setLastRestoredVolumeId(@javax.annotation.Nullable String lastRestoredVolumeId) { + this.lastRestoredVolumeId = lastRestoredVolumeId; + } + + public BackupVolumeBackupsInner size(@javax.annotation.Nullable Integer size) { + this.size = size; + return this; + } + + /** + * Get size + * + * @return size + */ + @javax.annotation.Nullable public Integer getSize() { + return size; + } + + public void setSize(@javax.annotation.Nullable Integer size) { + this.size = size; + } + + public BackupVolumeBackupsInner status(@javax.annotation.Nullable StatusEnum status) { + this.status = status; + return this; + } + + /** + * Get status + * + * @return status + */ + @javax.annotation.Nullable public StatusEnum getStatus() { + return status; + } + + public void setStatus(@javax.annotation.Nullable StatusEnum status) { + this.status = status; + } + + public BackupVolumeBackupsInner volumeId(@javax.annotation.Nullable String volumeId) { + this.volumeId = volumeId; + return this; + } + + /** + * Get volumeId + * + * @return volumeId + */ + @javax.annotation.Nullable public String getVolumeId() { + return volumeId; + } + + public void setVolumeId(@javax.annotation.Nullable String volumeId) { + this.volumeId = volumeId; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BackupVolumeBackupsInner backupVolumeBackupsInner = (BackupVolumeBackupsInner) o; + return Objects.equals(this.id, backupVolumeBackupsInner.id) + && Objects.equals(this.lastRestoredAt, backupVolumeBackupsInner.lastRestoredAt) + && Objects.equals( + this.lastRestoredVolumeId, backupVolumeBackupsInner.lastRestoredVolumeId) + && Objects.equals(this.size, backupVolumeBackupsInner.size) + && Objects.equals(this.status, backupVolumeBackupsInner.status) + && Objects.equals(this.volumeId, backupVolumeBackupsInner.volumeId); + } + + @Override + public int hashCode() { + return Objects.hash(id, lastRestoredAt, lastRestoredVolumeId, size, status, volumeId); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BackupVolumeBackupsInner {\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" lastRestoredAt: ").append(toIndentedString(lastRestoredAt)).append("\n"); + sb.append(" lastRestoredVolumeId: ") + .append(toIndentedString(lastRestoredVolumeId)) + .append("\n"); + sb.append(" size: ").append(toIndentedString(size)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" volumeId: ").append(toIndentedString(volumeId)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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( + Arrays.asList( + "id", + "lastRestoredAt", + "lastRestoredVolumeId", + "size", + "status", + "volumeId")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * 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 BackupVolumeBackupsInner + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!BackupVolumeBackupsInner.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in BackupVolumeBackupsInner is not found in the empty JSON string", + BackupVolumeBackupsInner.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!BackupVolumeBackupsInner.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `BackupVolumeBackupsInner` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("id") != null && !jsonObj.get("id").isJsonNull()) + && !jsonObj.get("id").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `id` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("id").toString())); + } + if ((jsonObj.get("lastRestoredAt") != null && !jsonObj.get("lastRestoredAt").isJsonNull()) + && !jsonObj.get("lastRestoredAt").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `lastRestoredAt` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("lastRestoredAt").toString())); + } + if ((jsonObj.get("lastRestoredVolumeId") != null + && !jsonObj.get("lastRestoredVolumeId").isJsonNull()) + && !jsonObj.get("lastRestoredVolumeId").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `lastRestoredVolumeId` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("lastRestoredVolumeId").toString())); + } + if ((jsonObj.get("status") != null && !jsonObj.get("status").isJsonNull()) + && !jsonObj.get("status").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `status` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("status").toString())); + } + // validate the optional field `status` + if (jsonObj.get("status") != null && !jsonObj.get("status").isJsonNull()) { + StatusEnum.validateJsonElement(jsonObj.get("status")); + } + if ((jsonObj.get("volumeId") != null && !jsonObj.get("volumeId").isJsonNull()) + && !jsonObj.get("volumeId").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `volumeId` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("volumeId").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!BackupVolumeBackupsInner.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'BackupVolumeBackupsInner' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(BackupVolumeBackupsInner.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, BackupVolumeBackupsInner value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public BackupVolumeBackupsInner read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of BackupVolumeBackupsInner given an JSON string + * + * @param jsonString JSON string + * @return An instance of BackupVolumeBackupsInner + * @throws IOException if the JSON string is invalid with respect to BackupVolumeBackupsInner + */ + public static BackupVolumeBackupsInner fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, BackupVolumeBackupsInner.class); + } + + /** + * Convert an instance of BackupVolumeBackupsInner to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/CreateBackupPayload.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/CreateBackupPayload.java new file mode 100644 index 0000000..d7073bc --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/CreateBackupPayload.java @@ -0,0 +1,278 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** CreateBackupPayload */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class CreateBackupPayload { + public static final String SERIALIZED_NAME_NAME = "name"; + + @SerializedName(SERIALIZED_NAME_NAME) + @javax.annotation.Nonnull + private String name; + + public static final String SERIALIZED_NAME_RETENTION_PERIOD = "retentionPeriod"; + + @SerializedName(SERIALIZED_NAME_RETENTION_PERIOD) + @javax.annotation.Nonnull + private Integer retentionPeriod; + + public static final String SERIALIZED_NAME_VOLUME_IDS = "volumeIds"; + + @SerializedName(SERIALIZED_NAME_VOLUME_IDS) + @javax.annotation.Nullable private List volumeIds = new ArrayList<>(); + + public CreateBackupPayload() {} + + public CreateBackupPayload name(@javax.annotation.Nonnull String name) { + this.name = name; + return this; + } + + /** + * Max 255 characters + * + * @return name + */ + @javax.annotation.Nonnull + public String getName() { + return name; + } + + public void setName(@javax.annotation.Nonnull String name) { + this.name = name; + } + + public CreateBackupPayload retentionPeriod(@javax.annotation.Nonnull Integer retentionPeriod) { + this.retentionPeriod = retentionPeriod; + return this; + } + + /** + * Values are set in days (1-36500) minimum: 1 maximum: 36500 + * + * @return retentionPeriod + */ + @javax.annotation.Nonnull + public Integer getRetentionPeriod() { + return retentionPeriod; + } + + public void setRetentionPeriod(@javax.annotation.Nonnull Integer retentionPeriod) { + this.retentionPeriod = retentionPeriod; + } + + public CreateBackupPayload volumeIds(@javax.annotation.Nullable List volumeIds) { + this.volumeIds = volumeIds; + return this; + } + + public CreateBackupPayload addVolumeIdsItem(String volumeIdsItem) { + if (this.volumeIds == null) { + this.volumeIds = new ArrayList<>(); + } + this.volumeIds.add(volumeIdsItem); + return this; + } + + /** + * Get volumeIds + * + * @return volumeIds + */ + @javax.annotation.Nullable public List getVolumeIds() { + return volumeIds; + } + + public void setVolumeIds(@javax.annotation.Nullable List volumeIds) { + this.volumeIds = volumeIds; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + CreateBackupPayload createBackupPayload = (CreateBackupPayload) o; + return Objects.equals(this.name, createBackupPayload.name) + && Objects.equals(this.retentionPeriod, createBackupPayload.retentionPeriod) + && Objects.equals(this.volumeIds, createBackupPayload.volumeIds); + } + + @Override + public int hashCode() { + return Objects.hash(name, retentionPeriod, volumeIds); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class CreateBackupPayload {\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" retentionPeriod: ").append(toIndentedString(retentionPeriod)).append("\n"); + sb.append(" volumeIds: ").append(toIndentedString(volumeIds)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("name", "retentionPeriod", "volumeIds")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(Arrays.asList("name", "retentionPeriod")); + } + + /** + * 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 CreateBackupPayload + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!CreateBackupPayload.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in CreateBackupPayload is not found in the empty JSON string", + CreateBackupPayload.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!CreateBackupPayload.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `CreateBackupPayload` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + + // check to make sure all required properties/fields are present in the JSON string + for (String requiredField : CreateBackupPayload.openapiRequiredFields) { + if (jsonElement.getAsJsonObject().get(requiredField) == null) { + throw new IllegalArgumentException( + String.format( + "The required field `%s` is not found in the JSON string: %s", + requiredField, jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (!jsonObj.get("name").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `name` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("name").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("volumeIds") != null + && !jsonObj.get("volumeIds").isJsonNull() + && !jsonObj.get("volumeIds").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `volumeIds` to be an array in the JSON string but got `%s`", + jsonObj.get("volumeIds").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!CreateBackupPayload.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'CreateBackupPayload' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(CreateBackupPayload.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, CreateBackupPayload value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public CreateBackupPayload read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of CreateBackupPayload given an JSON string + * + * @param jsonString JSON string + * @return An instance of CreateBackupPayload + * @throws IOException if the JSON string is invalid with respect to CreateBackupPayload + */ + public static CreateBackupPayload fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, CreateBackupPayload.class); + } + + /** + * Convert an instance of CreateBackupPayload to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/CreateBackupSchedulePayload.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/CreateBackupSchedulePayload.java new file mode 100644 index 0000000..46a7f93 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/CreateBackupSchedulePayload.java @@ -0,0 +1,301 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** CreateBackupSchedulePayload */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class CreateBackupSchedulePayload { + public static final String SERIALIZED_NAME_BACKUP_PROPERTIES = "backupProperties"; + + @SerializedName(SERIALIZED_NAME_BACKUP_PROPERTIES) + @javax.annotation.Nullable private BackupProperties backupProperties; + + public static final String SERIALIZED_NAME_ENABLED = "enabled"; + + @SerializedName(SERIALIZED_NAME_ENABLED) + @javax.annotation.Nonnull + private Boolean enabled; + + public static final String SERIALIZED_NAME_NAME = "name"; + + @SerializedName(SERIALIZED_NAME_NAME) + @javax.annotation.Nonnull + private String name; + + public static final String SERIALIZED_NAME_RRULE = "rrule"; + + @SerializedName(SERIALIZED_NAME_RRULE) + @javax.annotation.Nonnull + private String rrule; + + public CreateBackupSchedulePayload() {} + + public CreateBackupSchedulePayload backupProperties( + @javax.annotation.Nullable BackupProperties backupProperties) { + this.backupProperties = backupProperties; + return this; + } + + /** + * Get backupProperties + * + * @return backupProperties + */ + @javax.annotation.Nullable public BackupProperties getBackupProperties() { + return backupProperties; + } + + public void setBackupProperties(@javax.annotation.Nullable BackupProperties backupProperties) { + this.backupProperties = backupProperties; + } + + public CreateBackupSchedulePayload enabled(@javax.annotation.Nonnull Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get enabled + * + * @return enabled + */ + @javax.annotation.Nonnull + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(@javax.annotation.Nonnull Boolean enabled) { + this.enabled = enabled; + } + + public CreateBackupSchedulePayload name(@javax.annotation.Nonnull String name) { + this.name = name; + return this; + } + + /** + * Max 255 characters + * + * @return name + */ + @javax.annotation.Nonnull + public String getName() { + return name; + } + + public void setName(@javax.annotation.Nonnull String name) { + this.name = name; + } + + public CreateBackupSchedulePayload rrule(@javax.annotation.Nonnull String rrule) { + this.rrule = rrule; + return this; + } + + /** + * Get rrule + * + * @return rrule + */ + @javax.annotation.Nonnull + public String getRrule() { + return rrule; + } + + public void setRrule(@javax.annotation.Nonnull String rrule) { + this.rrule = rrule; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + CreateBackupSchedulePayload createBackupSchedulePayload = (CreateBackupSchedulePayload) o; + return Objects.equals(this.backupProperties, createBackupSchedulePayload.backupProperties) + && Objects.equals(this.enabled, createBackupSchedulePayload.enabled) + && Objects.equals(this.name, createBackupSchedulePayload.name) + && Objects.equals(this.rrule, createBackupSchedulePayload.rrule); + } + + @Override + public int hashCode() { + return Objects.hash(backupProperties, enabled, name, rrule); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class CreateBackupSchedulePayload {\n"); + sb.append(" backupProperties: ").append(toIndentedString(backupProperties)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" rrule: ").append(toIndentedString(rrule)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("backupProperties", "enabled", "name", "rrule")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(Arrays.asList("enabled", "name", "rrule")); + } + + /** + * 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 + * CreateBackupSchedulePayload + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!CreateBackupSchedulePayload.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in CreateBackupSchedulePayload is not found in the empty JSON string", + CreateBackupSchedulePayload.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!CreateBackupSchedulePayload.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `CreateBackupSchedulePayload` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + + // check to make sure all required properties/fields are present in the JSON string + for (String requiredField : CreateBackupSchedulePayload.openapiRequiredFields) { + if (jsonElement.getAsJsonObject().get(requiredField) == null) { + throw new IllegalArgumentException( + String.format( + "The required field `%s` is not found in the JSON string: %s", + requiredField, jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + // validate the optional field `backupProperties` + if (jsonObj.get("backupProperties") != null + && !jsonObj.get("backupProperties").isJsonNull()) { + BackupProperties.validateJsonElement(jsonObj.get("backupProperties")); + } + if (!jsonObj.get("name").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `name` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("name").toString())); + } + if (!jsonObj.get("rrule").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `rrule` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("rrule").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!CreateBackupSchedulePayload.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'CreateBackupSchedulePayload' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(CreateBackupSchedulePayload.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, CreateBackupSchedulePayload value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public CreateBackupSchedulePayload read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of CreateBackupSchedulePayload given an JSON string + * + * @param jsonString JSON string + * @return An instance of CreateBackupSchedulePayload + * @throws IOException if the JSON string is invalid with respect to CreateBackupSchedulePayload + */ + public static CreateBackupSchedulePayload fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, CreateBackupSchedulePayload.class); + } + + /** + * Convert an instance of CreateBackupSchedulePayload to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/EnableServiceResourcePayload.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/EnableServiceResourcePayload.java new file mode 100644 index 0000000..18a53ad --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/EnableServiceResourcePayload.java @@ -0,0 +1,203 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.UUID; + +/** EnableServiceResourcePayload */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class EnableServiceResourcePayload { + public static final String SERIALIZED_NAME_BACKUP_POLICY_ID = "backupPolicyId"; + + @SerializedName(SERIALIZED_NAME_BACKUP_POLICY_ID) + @javax.annotation.Nullable private UUID backupPolicyId; + + public EnableServiceResourcePayload() {} + + public EnableServiceResourcePayload backupPolicyId( + @javax.annotation.Nullable UUID backupPolicyId) { + this.backupPolicyId = backupPolicyId; + return this; + } + + /** + * Get backupPolicyId + * + * @return backupPolicyId + */ + @javax.annotation.Nullable public UUID getBackupPolicyId() { + return backupPolicyId; + } + + public void setBackupPolicyId(@javax.annotation.Nullable UUID backupPolicyId) { + this.backupPolicyId = backupPolicyId; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + EnableServiceResourcePayload enableServiceResourcePayload = + (EnableServiceResourcePayload) o; + return Objects.equals(this.backupPolicyId, enableServiceResourcePayload.backupPolicyId); + } + + @Override + public int hashCode() { + return Objects.hash(backupPolicyId); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class EnableServiceResourcePayload {\n"); + sb.append(" backupPolicyId: ").append(toIndentedString(backupPolicyId)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("backupPolicyId")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * 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 + * EnableServiceResourcePayload + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!EnableServiceResourcePayload.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in EnableServiceResourcePayload is not found in the empty JSON string", + EnableServiceResourcePayload.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!EnableServiceResourcePayload.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `EnableServiceResourcePayload` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("backupPolicyId") != null && !jsonObj.get("backupPolicyId").isJsonNull()) + && !jsonObj.get("backupPolicyId").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `backupPolicyId` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("backupPolicyId").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!EnableServiceResourcePayload.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'EnableServiceResourcePayload' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter( + this, TypeToken.get(EnableServiceResourcePayload.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, EnableServiceResourcePayload value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public EnableServiceResourcePayload read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of EnableServiceResourcePayload given an JSON string + * + * @param jsonString JSON string + * @return An instance of EnableServiceResourcePayload + * @throws IOException if the JSON string is invalid with respect to + * EnableServiceResourcePayload + */ + public static EnableServiceResourcePayload fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, EnableServiceResourcePayload.class); + } + + /** + * Convert an instance of EnableServiceResourcePayload to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/ErrorResponse.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/ErrorResponse.java new file mode 100644 index 0000000..d800072 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/ErrorResponse.java @@ -0,0 +1,239 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** ErrorResponse */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class ErrorResponse { + public static final String SERIALIZED_NAME_MESSAGE = "message"; + + @SerializedName(SERIALIZED_NAME_MESSAGE) + @javax.annotation.Nonnull + private String message; + + public static final String SERIALIZED_NAME_STATUS = "status"; + + @SerializedName(SERIALIZED_NAME_STATUS) + @javax.annotation.Nonnull + private String status; + + public ErrorResponse() {} + + public ErrorResponse message(@javax.annotation.Nonnull String message) { + this.message = message; + return this; + } + + /** + * Details about the error + * + * @return message + */ + @javax.annotation.Nonnull + public String getMessage() { + return message; + } + + public void setMessage(@javax.annotation.Nonnull String message) { + this.message = message; + } + + public ErrorResponse status(@javax.annotation.Nonnull String status) { + this.status = status; + return this; + } + + /** + * The string representation of the http status code (i.e. Not Found, Bad Request, etc) + * + * @return status + */ + @javax.annotation.Nonnull + public String getStatus() { + return status; + } + + public void setStatus(@javax.annotation.Nonnull String status) { + this.status = status; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ErrorResponse errorResponse = (ErrorResponse) o; + return Objects.equals(this.message, errorResponse.message) + && Objects.equals(this.status, errorResponse.status); + } + + @Override + public int hashCode() { + return Objects.hash(message, status); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ErrorResponse {\n"); + sb.append(" message: ").append(toIndentedString(message)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("message", "status")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(Arrays.asList("message", "status")); + } + + /** + * 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 ErrorResponse + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!ErrorResponse.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in ErrorResponse is not found in the empty JSON string", + ErrorResponse.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!ErrorResponse.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `ErrorResponse` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + + // check to make sure all required properties/fields are present in the JSON string + for (String requiredField : ErrorResponse.openapiRequiredFields) { + if (jsonElement.getAsJsonObject().get(requiredField) == null) { + throw new IllegalArgumentException( + String.format( + "The required field `%s` is not found in the JSON string: %s", + requiredField, jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (!jsonObj.get("message").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `message` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("message").toString())); + } + if (!jsonObj.get("status").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `status` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("status").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!ErrorResponse.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'ErrorResponse' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(ErrorResponse.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, ErrorResponse value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public ErrorResponse read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of ErrorResponse given an JSON string + * + * @param jsonString JSON string + * @return An instance of ErrorResponse + * @throws IOException if the JSON string is invalid with respect to ErrorResponse + */ + public static ErrorResponse fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, ErrorResponse.class); + } + + /** + * Convert an instance of ErrorResponse to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupPoliciesResponse.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupPoliciesResponse.java new file mode 100644 index 0000000..c36a4a7 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupPoliciesResponse.java @@ -0,0 +1,219 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.JSON; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +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 java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** GetBackupPoliciesResponse */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class GetBackupPoliciesResponse { + public static final String SERIALIZED_NAME_ITEMS = "items"; + + @SerializedName(SERIALIZED_NAME_ITEMS) + @javax.annotation.Nullable private List items = new ArrayList<>(); + + public GetBackupPoliciesResponse() {} + + public GetBackupPoliciesResponse items(@javax.annotation.Nullable List items) { + this.items = items; + return this; + } + + public GetBackupPoliciesResponse addItemsItem(BackupPolicy itemsItem) { + if (this.items == null) { + this.items = new ArrayList<>(); + } + this.items.add(itemsItem); + return this; + } + + /** + * Get items + * + * @return items + */ + @javax.annotation.Nullable public List getItems() { + return items; + } + + public void setItems(@javax.annotation.Nullable List items) { + this.items = items; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GetBackupPoliciesResponse getBackupPoliciesResponse = (GetBackupPoliciesResponse) o; + return Objects.equals(this.items, getBackupPoliciesResponse.items); + } + + @Override + public int hashCode() { + return Objects.hash(items); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class GetBackupPoliciesResponse {\n"); + sb.append(" items: ").append(toIndentedString(items)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("items")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * 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 GetBackupPoliciesResponse + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!GetBackupPoliciesResponse.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in GetBackupPoliciesResponse is not found in the empty JSON string", + GetBackupPoliciesResponse.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!GetBackupPoliciesResponse.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `GetBackupPoliciesResponse` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("items") != null && !jsonObj.get("items").isJsonNull()) { + JsonArray jsonArrayitems = jsonObj.getAsJsonArray("items"); + if (jsonArrayitems != null) { + // ensure the json data is an array + if (!jsonObj.get("items").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `items` to be an array in the JSON string but got `%s`", + jsonObj.get("items").toString())); + } + + // validate the optional field `items` (array) + for (int i = 0; i < jsonArrayitems.size(); i++) { + BackupPolicy.validateJsonElement(jsonArrayitems.get(i)); + } + ; + } + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!GetBackupPoliciesResponse.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'GetBackupPoliciesResponse' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(GetBackupPoliciesResponse.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, GetBackupPoliciesResponse value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public GetBackupPoliciesResponse read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of GetBackupPoliciesResponse given an JSON string + * + * @param jsonString JSON string + * @return An instance of GetBackupPoliciesResponse + * @throws IOException if the JSON string is invalid with respect to GetBackupPoliciesResponse + */ + public static GetBackupPoliciesResponse fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, GetBackupPoliciesResponse.class); + } + + /** + * Convert an instance of GetBackupPoliciesResponse to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupSchedulesResponse.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupSchedulesResponse.java new file mode 100644 index 0000000..bcbfc78 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupSchedulesResponse.java @@ -0,0 +1,219 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.JSON; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +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 java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** GetBackupSchedulesResponse */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class GetBackupSchedulesResponse { + public static final String SERIALIZED_NAME_ITEMS = "items"; + + @SerializedName(SERIALIZED_NAME_ITEMS) + @javax.annotation.Nullable private List items = new ArrayList<>(); + + public GetBackupSchedulesResponse() {} + + public GetBackupSchedulesResponse items(@javax.annotation.Nullable List items) { + this.items = items; + return this; + } + + public GetBackupSchedulesResponse addItemsItem(BackupSchedule itemsItem) { + if (this.items == null) { + this.items = new ArrayList<>(); + } + this.items.add(itemsItem); + return this; + } + + /** + * Get items + * + * @return items + */ + @javax.annotation.Nullable public List getItems() { + return items; + } + + public void setItems(@javax.annotation.Nullable List items) { + this.items = items; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GetBackupSchedulesResponse getBackupSchedulesResponse = (GetBackupSchedulesResponse) o; + return Objects.equals(this.items, getBackupSchedulesResponse.items); + } + + @Override + public int hashCode() { + return Objects.hash(items); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class GetBackupSchedulesResponse {\n"); + sb.append(" items: ").append(toIndentedString(items)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("items")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * 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 GetBackupSchedulesResponse + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!GetBackupSchedulesResponse.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in GetBackupSchedulesResponse is not found in the empty JSON string", + GetBackupSchedulesResponse.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!GetBackupSchedulesResponse.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `GetBackupSchedulesResponse` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("items") != null && !jsonObj.get("items").isJsonNull()) { + JsonArray jsonArrayitems = jsonObj.getAsJsonArray("items"); + if (jsonArrayitems != null) { + // ensure the json data is an array + if (!jsonObj.get("items").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `items` to be an array in the JSON string but got `%s`", + jsonObj.get("items").toString())); + } + + // validate the optional field `items` (array) + for (int i = 0; i < jsonArrayitems.size(); i++) { + BackupSchedule.validateJsonElement(jsonArrayitems.get(i)); + } + ; + } + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!GetBackupSchedulesResponse.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'GetBackupSchedulesResponse' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(GetBackupSchedulesResponse.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, GetBackupSchedulesResponse value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public GetBackupSchedulesResponse read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of GetBackupSchedulesResponse given an JSON string + * + * @param jsonString JSON string + * @return An instance of GetBackupSchedulesResponse + * @throws IOException if the JSON string is invalid with respect to GetBackupSchedulesResponse + */ + public static GetBackupSchedulesResponse fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, GetBackupSchedulesResponse.class); + } + + /** + * Convert an instance of GetBackupSchedulesResponse to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupServiceResponse.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupServiceResponse.java new file mode 100644 index 0000000..7223249 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupServiceResponse.java @@ -0,0 +1,190 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** GetBackupServiceResponse */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class GetBackupServiceResponse { + public static final String SERIALIZED_NAME_ENABLED = "enabled"; + + @SerializedName(SERIALIZED_NAME_ENABLED) + @javax.annotation.Nullable private Boolean enabled; + + public GetBackupServiceResponse() {} + + public GetBackupServiceResponse enabled(@javax.annotation.Nullable Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get enabled + * + * @return enabled + */ + @javax.annotation.Nullable public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(@javax.annotation.Nullable Boolean enabled) { + this.enabled = enabled; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GetBackupServiceResponse getBackupServiceResponse = (GetBackupServiceResponse) o; + return Objects.equals(this.enabled, getBackupServiceResponse.enabled); + } + + @Override + public int hashCode() { + return Objects.hash(enabled); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class GetBackupServiceResponse {\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("enabled")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * 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 GetBackupServiceResponse + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!GetBackupServiceResponse.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in GetBackupServiceResponse is not found in the empty JSON string", + GetBackupServiceResponse.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!GetBackupServiceResponse.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `GetBackupServiceResponse` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!GetBackupServiceResponse.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'GetBackupServiceResponse' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(GetBackupServiceResponse.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, GetBackupServiceResponse value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public GetBackupServiceResponse read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of GetBackupServiceResponse given an JSON string + * + * @param jsonString JSON string + * @return An instance of GetBackupServiceResponse + * @throws IOException if the JSON string is invalid with respect to GetBackupServiceResponse + */ + public static GetBackupServiceResponse fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, GetBackupServiceResponse.class); + } + + /** + * Convert an instance of GetBackupServiceResponse to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupsListResponse.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupsListResponse.java new file mode 100644 index 0000000..c34c5d1 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/GetBackupsListResponse.java @@ -0,0 +1,218 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.JSON; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +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 java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** GetBackupsListResponse */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class GetBackupsListResponse { + public static final String SERIALIZED_NAME_ITEMS = "items"; + + @SerializedName(SERIALIZED_NAME_ITEMS) + @javax.annotation.Nullable private List items = new ArrayList<>(); + + public GetBackupsListResponse() {} + + public GetBackupsListResponse items(@javax.annotation.Nullable List items) { + this.items = items; + return this; + } + + public GetBackupsListResponse addItemsItem(Backup itemsItem) { + if (this.items == null) { + this.items = new ArrayList<>(); + } + this.items.add(itemsItem); + return this; + } + + /** + * Get items + * + * @return items + */ + @javax.annotation.Nullable public List getItems() { + return items; + } + + public void setItems(@javax.annotation.Nullable List items) { + this.items = items; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GetBackupsListResponse getBackupsListResponse = (GetBackupsListResponse) o; + return Objects.equals(this.items, getBackupsListResponse.items); + } + + @Override + public int hashCode() { + return Objects.hash(items); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class GetBackupsListResponse {\n"); + sb.append(" items: ").append(toIndentedString(items)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("items")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * 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 GetBackupsListResponse + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!GetBackupsListResponse.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in GetBackupsListResponse is not found in the empty JSON string", + GetBackupsListResponse.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!GetBackupsListResponse.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `GetBackupsListResponse` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("items") != null && !jsonObj.get("items").isJsonNull()) { + JsonArray jsonArrayitems = jsonObj.getAsJsonArray("items"); + if (jsonArrayitems != null) { + // ensure the json data is an array + if (!jsonObj.get("items").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `items` to be an array in the JSON string but got `%s`", + jsonObj.get("items").toString())); + } + + // validate the optional field `items` (array) + for (int i = 0; i < jsonArrayitems.size(); i++) { + Backup.validateJsonElement(jsonArrayitems.get(i)); + } + ; + } + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!GetBackupsListResponse.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'GetBackupsListResponse' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(GetBackupsListResponse.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, GetBackupsListResponse value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public GetBackupsListResponse read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of GetBackupsListResponse given an JSON string + * + * @param jsonString JSON string + * @return An instance of GetBackupsListResponse + * @throws IOException if the JSON string is invalid with respect to GetBackupsListResponse + */ + public static GetBackupsListResponse fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, GetBackupsListResponse.class); + } + + /** + * Convert an instance of GetBackupsListResponse to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/RestoreBackupPayload.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/RestoreBackupPayload.java new file mode 100644 index 0000000..6de6a8c --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/RestoreBackupPayload.java @@ -0,0 +1,251 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** RestoreBackupPayload */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class RestoreBackupPayload { + public static final String SERIALIZED_NAME_START_SERVER_AFTER_RESTORE = + "startServerAfterRestore"; + + @SerializedName(SERIALIZED_NAME_START_SERVER_AFTER_RESTORE) + @javax.annotation.Nonnull + private Boolean startServerAfterRestore; + + public static final String SERIALIZED_NAME_VOLUME_IDS = "volumeIds"; + + @SerializedName(SERIALIZED_NAME_VOLUME_IDS) + @javax.annotation.Nullable private List volumeIds = new ArrayList<>(); + + public RestoreBackupPayload() {} + + public RestoreBackupPayload startServerAfterRestore( + @javax.annotation.Nonnull Boolean startServerAfterRestore) { + this.startServerAfterRestore = startServerAfterRestore; + return this; + } + + /** + * Get startServerAfterRestore + * + * @return startServerAfterRestore + */ + @javax.annotation.Nonnull + public Boolean getStartServerAfterRestore() { + return startServerAfterRestore; + } + + public void setStartServerAfterRestore( + @javax.annotation.Nonnull Boolean startServerAfterRestore) { + this.startServerAfterRestore = startServerAfterRestore; + } + + public RestoreBackupPayload volumeIds(@javax.annotation.Nullable List volumeIds) { + this.volumeIds = volumeIds; + return this; + } + + public RestoreBackupPayload addVolumeIdsItem(String volumeIdsItem) { + if (this.volumeIds == null) { + this.volumeIds = new ArrayList<>(); + } + this.volumeIds.add(volumeIdsItem); + return this; + } + + /** + * Get volumeIds + * + * @return volumeIds + */ + @javax.annotation.Nullable public List getVolumeIds() { + return volumeIds; + } + + public void setVolumeIds(@javax.annotation.Nullable List volumeIds) { + this.volumeIds = volumeIds; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RestoreBackupPayload restoreBackupPayload = (RestoreBackupPayload) o; + return Objects.equals( + this.startServerAfterRestore, restoreBackupPayload.startServerAfterRestore) + && Objects.equals(this.volumeIds, restoreBackupPayload.volumeIds); + } + + @Override + public int hashCode() { + return Objects.hash(startServerAfterRestore, volumeIds); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RestoreBackupPayload {\n"); + sb.append(" startServerAfterRestore: ") + .append(toIndentedString(startServerAfterRestore)) + .append("\n"); + sb.append(" volumeIds: ").append(toIndentedString(volumeIds)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("startServerAfterRestore", "volumeIds")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(Arrays.asList("startServerAfterRestore")); + } + + /** + * 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 RestoreBackupPayload + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!RestoreBackupPayload.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in RestoreBackupPayload is not found in the empty JSON string", + RestoreBackupPayload.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!RestoreBackupPayload.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `RestoreBackupPayload` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + + // check to make sure all required properties/fields are present in the JSON string + for (String requiredField : RestoreBackupPayload.openapiRequiredFields) { + if (jsonElement.getAsJsonObject().get(requiredField) == null) { + throw new IllegalArgumentException( + String.format( + "The required field `%s` is not found in the JSON string: %s", + requiredField, jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + // ensure the optional json data is an array if present + if (jsonObj.get("volumeIds") != null + && !jsonObj.get("volumeIds").isJsonNull() + && !jsonObj.get("volumeIds").isJsonArray()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `volumeIds` to be an array in the JSON string but got `%s`", + jsonObj.get("volumeIds").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!RestoreBackupPayload.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'RestoreBackupPayload' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(RestoreBackupPayload.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, RestoreBackupPayload value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public RestoreBackupPayload read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of RestoreBackupPayload given an JSON string + * + * @param jsonString JSON string + * @return An instance of RestoreBackupPayload + * @throws IOException if the JSON string is invalid with respect to RestoreBackupPayload + */ + public static RestoreBackupPayload fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, RestoreBackupPayload.class); + } + + /** + * Convert an instance of RestoreBackupPayload to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/RestoreVolumeBackupPayload.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/RestoreVolumeBackupPayload.java new file mode 100644 index 0000000..314de92 --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/RestoreVolumeBackupPayload.java @@ -0,0 +1,209 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** RestoreVolumeBackupPayload */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class RestoreVolumeBackupPayload { + public static final String SERIALIZED_NAME_RESTORE_VOLUME_ID = "restoreVolumeId"; + + @SerializedName(SERIALIZED_NAME_RESTORE_VOLUME_ID) + @javax.annotation.Nonnull + private String restoreVolumeId; + + public RestoreVolumeBackupPayload() {} + + public RestoreVolumeBackupPayload restoreVolumeId( + @javax.annotation.Nonnull String restoreVolumeId) { + this.restoreVolumeId = restoreVolumeId; + return this; + } + + /** + * Get restoreVolumeId + * + * @return restoreVolumeId + */ + @javax.annotation.Nonnull + public String getRestoreVolumeId() { + return restoreVolumeId; + } + + public void setRestoreVolumeId(@javax.annotation.Nonnull String restoreVolumeId) { + this.restoreVolumeId = restoreVolumeId; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RestoreVolumeBackupPayload restoreVolumeBackupPayload = (RestoreVolumeBackupPayload) o; + return Objects.equals(this.restoreVolumeId, restoreVolumeBackupPayload.restoreVolumeId); + } + + @Override + public int hashCode() { + return Objects.hash(restoreVolumeId); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RestoreVolumeBackupPayload {\n"); + sb.append(" restoreVolumeId: ").append(toIndentedString(restoreVolumeId)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("restoreVolumeId")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(Arrays.asList("restoreVolumeId")); + } + + /** + * 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 RestoreVolumeBackupPayload + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!RestoreVolumeBackupPayload.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in RestoreVolumeBackupPayload is not found in the empty JSON string", + RestoreVolumeBackupPayload.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!RestoreVolumeBackupPayload.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `RestoreVolumeBackupPayload` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + + // check to make sure all required properties/fields are present in the JSON string + for (String requiredField : RestoreVolumeBackupPayload.openapiRequiredFields) { + if (jsonElement.getAsJsonObject().get(requiredField) == null) { + throw new IllegalArgumentException( + String.format( + "The required field `%s` is not found in the JSON string: %s", + requiredField, jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (!jsonObj.get("restoreVolumeId").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `restoreVolumeId` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("restoreVolumeId").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!RestoreVolumeBackupPayload.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'RestoreVolumeBackupPayload' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(RestoreVolumeBackupPayload.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, RestoreVolumeBackupPayload value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public RestoreVolumeBackupPayload read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of RestoreVolumeBackupPayload given an JSON string + * + * @param jsonString JSON string + * @return An instance of RestoreVolumeBackupPayload + * @throws IOException if the JSON string is invalid with respect to RestoreVolumeBackupPayload + */ + public static RestoreVolumeBackupPayload fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, RestoreVolumeBackupPayload.class); + } + + /** + * Convert an instance of RestoreVolumeBackupPayload to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/UpdateBackupSchedulePayload.java b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/UpdateBackupSchedulePayload.java new file mode 100644 index 0000000..9d558dd --- /dev/null +++ b/services/serverbackup/src/main/java/cloud/stackit/sdk/serverbackup/model/UpdateBackupSchedulePayload.java @@ -0,0 +1,301 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.model; + +import cloud.stackit.sdk.serverbackup.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 java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +/** UpdateBackupSchedulePayload */ +@javax.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.15.0") +public class UpdateBackupSchedulePayload { + public static final String SERIALIZED_NAME_BACKUP_PROPERTIES = "backupProperties"; + + @SerializedName(SERIALIZED_NAME_BACKUP_PROPERTIES) + @javax.annotation.Nullable private BackupProperties backupProperties; + + public static final String SERIALIZED_NAME_ENABLED = "enabled"; + + @SerializedName(SERIALIZED_NAME_ENABLED) + @javax.annotation.Nonnull + private Boolean enabled; + + public static final String SERIALIZED_NAME_NAME = "name"; + + @SerializedName(SERIALIZED_NAME_NAME) + @javax.annotation.Nonnull + private String name; + + public static final String SERIALIZED_NAME_RRULE = "rrule"; + + @SerializedName(SERIALIZED_NAME_RRULE) + @javax.annotation.Nonnull + private String rrule; + + public UpdateBackupSchedulePayload() {} + + public UpdateBackupSchedulePayload backupProperties( + @javax.annotation.Nullable BackupProperties backupProperties) { + this.backupProperties = backupProperties; + return this; + } + + /** + * Get backupProperties + * + * @return backupProperties + */ + @javax.annotation.Nullable public BackupProperties getBackupProperties() { + return backupProperties; + } + + public void setBackupProperties(@javax.annotation.Nullable BackupProperties backupProperties) { + this.backupProperties = backupProperties; + } + + public UpdateBackupSchedulePayload enabled(@javax.annotation.Nonnull Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get enabled + * + * @return enabled + */ + @javax.annotation.Nonnull + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(@javax.annotation.Nonnull Boolean enabled) { + this.enabled = enabled; + } + + public UpdateBackupSchedulePayload name(@javax.annotation.Nonnull String name) { + this.name = name; + return this; + } + + /** + * Max 255 characters + * + * @return name + */ + @javax.annotation.Nonnull + public String getName() { + return name; + } + + public void setName(@javax.annotation.Nonnull String name) { + this.name = name; + } + + public UpdateBackupSchedulePayload rrule(@javax.annotation.Nonnull String rrule) { + this.rrule = rrule; + return this; + } + + /** + * Get rrule + * + * @return rrule + */ + @javax.annotation.Nonnull + public String getRrule() { + return rrule; + } + + public void setRrule(@javax.annotation.Nonnull String rrule) { + this.rrule = rrule; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + UpdateBackupSchedulePayload updateBackupSchedulePayload = (UpdateBackupSchedulePayload) o; + return Objects.equals(this.backupProperties, updateBackupSchedulePayload.backupProperties) + && Objects.equals(this.enabled, updateBackupSchedulePayload.enabled) + && Objects.equals(this.name, updateBackupSchedulePayload.name) + && Objects.equals(this.rrule, updateBackupSchedulePayload.rrule); + } + + @Override + public int hashCode() { + return Objects.hash(backupProperties, enabled, name, rrule); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class UpdateBackupSchedulePayload {\n"); + sb.append(" backupProperties: ").append(toIndentedString(backupProperties)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" rrule: ").append(toIndentedString(rrule)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * 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(Arrays.asList("backupProperties", "enabled", "name", "rrule")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(Arrays.asList("enabled", "name", "rrule")); + } + + /** + * 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 + * UpdateBackupSchedulePayload + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!UpdateBackupSchedulePayload.openapiRequiredFields + .isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException( + String.format( + "The required field(s) %s in UpdateBackupSchedulePayload is not found in the empty JSON string", + UpdateBackupSchedulePayload.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!UpdateBackupSchedulePayload.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException( + String.format( + "The field `%s` in the JSON string is not defined in the `UpdateBackupSchedulePayload` properties. JSON: %s", + entry.getKey(), jsonElement.toString())); + } + } + + // check to make sure all required properties/fields are present in the JSON string + for (String requiredField : UpdateBackupSchedulePayload.openapiRequiredFields) { + if (jsonElement.getAsJsonObject().get(requiredField) == null) { + throw new IllegalArgumentException( + String.format( + "The required field `%s` is not found in the JSON string: %s", + requiredField, jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + // validate the optional field `backupProperties` + if (jsonObj.get("backupProperties") != null + && !jsonObj.get("backupProperties").isJsonNull()) { + BackupProperties.validateJsonElement(jsonObj.get("backupProperties")); + } + if (!jsonObj.get("name").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `name` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("name").toString())); + } + if (!jsonObj.get("rrule").isJsonPrimitive()) { + throw new IllegalArgumentException( + String.format( + "Expected the field `rrule` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("rrule").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!UpdateBackupSchedulePayload.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'UpdateBackupSchedulePayload' and its + // subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter = + gson.getDelegateAdapter(this, TypeToken.get(UpdateBackupSchedulePayload.class)); + + return (TypeAdapter) + new TypeAdapter() { + @Override + public void write(JsonWriter out, UpdateBackupSchedulePayload value) + throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public UpdateBackupSchedulePayload read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + }.nullSafe(); + } + } + + /** + * Create an instance of UpdateBackupSchedulePayload given an JSON string + * + * @param jsonString JSON string + * @return An instance of UpdateBackupSchedulePayload + * @throws IOException if the JSON string is invalid with respect to UpdateBackupSchedulePayload + */ + public static UpdateBackupSchedulePayload fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, UpdateBackupSchedulePayload.class); + } + + /** + * Convert an instance of UpdateBackupSchedulePayload to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} diff --git a/services/serverbackup/src/test/java/cloud/stackit/sdk/serverbackup/api/DefaultApiTest.java b/services/serverbackup/src/test/java/cloud/stackit/sdk/serverbackup/api/DefaultApiTest.java new file mode 100644 index 0000000..c57aad9 --- /dev/null +++ b/services/serverbackup/src/test/java/cloud/stackit/sdk/serverbackup/api/DefaultApiTest.java @@ -0,0 +1,66 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup; + +import cloud.stackit.sdk.core.KeyFlowAuthenticator; +import cloud.stackit.sdk.core.auth.SetupAuth; +import cloud.stackit.sdk.core.config.CoreConfiguration; +import cloud.stackit.sdk.core.utils.TestUtils; +import java.io.IOException; +import okhttp3.Authenticator; +import okhttp3.OkHttpClient; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class DefaultApiTest { + @Test + public void TestCustomHttpClient() throws IOException { + // before + CoreConfiguration conf = + new CoreConfiguration().serviceAccountKey(TestUtils.MOCK_SERVICE_ACCOUNT_KEY); + + // when + OkHttpClient httpClient = new OkHttpClient(); + ApiClient apiClient = new ApiClient(httpClient, conf); + + // then + Assertions.assertEquals(httpClient, apiClient.getHttpClient()); + // make sure the http client object is exactly the same object + Assertions.assertSame(httpClient, apiClient.getHttpClient()); + } + + @Test + public void TestNoCustomHttpClient() throws IOException { + // before + CoreConfiguration conf = + new CoreConfiguration().serviceAccountKey(TestUtils.MOCK_SERVICE_ACCOUNT_KEY); + + // when + ApiClient apiClient = new ApiClient(conf); + + // then + /* + * verify a fresh OkHttpClient got created which will have the auth header set + * by the {@link cloud.stackit.sdk.core.KeyFlowAuthenticator} + */ + OkHttpClient httpClient = new OkHttpClient(); + Authenticator authenticator = + new KeyFlowAuthenticator(httpClient, conf, SetupAuth.setupKeyFlow(conf)); + httpClient = httpClient.newBuilder().authenticator(authenticator).build(); + + Assertions.assertNotNull(apiClient.getHttpClient()); + Assertions.assertEquals( + httpClient.authenticator().getClass(), + apiClient.getHttpClient().authenticator().getClass()); + } +} diff --git a/services/serverbackup/src/test/java/cloud/stackit/sdk/serverbackup/api/ServerBackupApiTest.java b/services/serverbackup/src/test/java/cloud/stackit/sdk/serverbackup/api/ServerBackupApiTest.java new file mode 100644 index 0000000..e4b3b67 --- /dev/null +++ b/services/serverbackup/src/test/java/cloud/stackit/sdk/serverbackup/api/ServerBackupApiTest.java @@ -0,0 +1,67 @@ +/* + * STACKIT Server Backup Management API + * API endpoints for Server Backup Operations on STACKIT Servers. + * + * The version of the OpenAPI document: 2.0 + * Contact: support@stackit.de + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package cloud.stackit.sdk.serverbackup.api; + +import cloud.stackit.sdk.core.KeyFlowAuthenticator; +import cloud.stackit.sdk.core.auth.SetupAuth; +import cloud.stackit.sdk.core.config.CoreConfiguration; +import cloud.stackit.sdk.core.utils.TestUtils; +import java.io.IOException; +import okhttp3.Authenticator; +import okhttp3.OkHttpClient; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/** API tests for ServerBackupApi */ +public class ServerBackupApiTest { + @Test + public void TestCustomHttpClient() throws IOException { + // before + CoreConfiguration conf = + new CoreConfiguration().serviceAccountKey(TestUtils.MOCK_SERVICE_ACCOUNT_KEY); + + // when + OkHttpClient httpClient = new OkHttpClient(); + ServerBackupApi api = new ServerBackupApi(httpClient); + + // then + Assertions.assertEquals(httpClient, api.getApiClient().getHttpClient()); + // make sure the http client object is exactly the same object + Assertions.assertSame(httpClient, api.getApiClient().getHttpClient()); + } + + @Test + public void TestNoCustomHttpClient() throws IOException { + // before + CoreConfiguration conf = + new CoreConfiguration().serviceAccountKey(TestUtils.MOCK_SERVICE_ACCOUNT_KEY); + + // when + ServerBackupApi api = new ServerBackupApi(conf); + + // then + /* + * verify a fresh OkHttpClient got created which will have the auth header set + * by the {@link cloud.stackit.sdk.core.KeyFlowAuthenticator} + */ + OkHttpClient httpClient = new OkHttpClient(); + Authenticator authenticator = + new KeyFlowAuthenticator(httpClient, conf, SetupAuth.setupKeyFlow(conf)); + httpClient = httpClient.newBuilder().authenticator(authenticator).build(); + + Assertions.assertNotNull(api.getApiClient().getHttpClient()); + Assertions.assertEquals( + httpClient.authenticator().getClass(), + api.getApiClient().getHttpClient().authenticator().getClass()); + } +}