diff --git a/README.md b/README.md
index f0005509..494ebdb8 100644
--- a/README.md
+++ b/README.md
@@ -189,9 +189,13 @@ Class | Method | HTTP request | Description
*FunctionsDataTypesApi* | [**listFunctionDataTypesForFunctions**](docs/FunctionsDataTypesApi.md#listFunctionDataTypesForFunctions) | **GET** /v2/functions/data_types | List Function Data Types
*FunctionsDataTypesApi* | [**updateFunctionDataTypes**](docs/FunctionsDataTypesApi.md#updateFunctionDataTypes) | **PUT** /v2/analyses/{analysis_id}/functions/{function_id}/data_types | Update Function Data Types
*FunctionsRenamingHistoryApi* | [**batchRenameFunction**](docs/FunctionsRenamingHistoryApi.md#batchRenameFunction) | **POST** /v2/functions/rename/batch | Batch Rename Functions
+*FunctionsRenamingHistoryApi* | [**batchRenameFunctions**](docs/FunctionsRenamingHistoryApi.md#batchRenameFunctions) | **POST** /v3/functions/rename | Batch rename functions
+*FunctionsRenamingHistoryApi* | [**getFunctionHistory**](docs/FunctionsRenamingHistoryApi.md#getFunctionHistory) | **GET** /v3/functions/{function_id}/history | Get function name history
*FunctionsRenamingHistoryApi* | [**getFunctionNameHistory**](docs/FunctionsRenamingHistoryApi.md#getFunctionNameHistory) | **GET** /v2/functions/history/{function_id} | Get Function Name History
+*FunctionsRenamingHistoryApi* | [**renameFunction**](docs/FunctionsRenamingHistoryApi.md#renameFunction) | **POST** /v3/functions/{function_id}/rename | Rename a function
*FunctionsRenamingHistoryApi* | [**renameFunctionId**](docs/FunctionsRenamingHistoryApi.md#renameFunctionId) | **POST** /v2/functions/rename/{function_id} | Rename Function
*FunctionsRenamingHistoryApi* | [**revertFunctionName**](docs/FunctionsRenamingHistoryApi.md#revertFunctionName) | **POST** /v2/functions/history/{function_id}/{history_id} | Revert the function name
+*FunctionsRenamingHistoryApi* | [**revertFunctionName_0**](docs/FunctionsRenamingHistoryApi.md#revertFunctionName_0) | **POST** /v3/functions/{function_id}/history/{history_id}/revert | Revert function name
*ModelsApi* | [**getModels**](docs/ModelsApi.md#getModels) | **GET** /v2/models | Gets models
*ReportsApi* | [**createPdfReport**](docs/ReportsApi.md#createPdfReport) | **POST** /v3/analysis/{analysis_id}/pdf | Start PDF report generation
*ReportsApi* | [**downloadPdfReport**](docs/ReportsApi.md#downloadPdfReport) | **GET** /v3/analysis/{analysis_id}/pdf/{task_id} | Download generated PDF report
@@ -312,6 +316,9 @@ Class | Method | HTTP request | Description
- [BaseResponseVulnerabilities](docs/BaseResponseVulnerabilities.md)
- [BaseResponseXrefResponse](docs/BaseResponseXrefResponse.md)
- [Basic](docs/Basic.md)
+ - [BatchRenameInputBody](docs/BatchRenameInputBody.md)
+ - [BatchRenameItem](docs/BatchRenameItem.md)
+ - [BatchRenameOutputBody](docs/BatchRenameOutputBody.md)
- [BinariesRelatedStatusResponse](docs/BinariesRelatedStatusResponse.md)
- [BinariesTaskStatus](docs/BinariesTaskStatus.md)
- [BinaryAdditionalDetailsDataResponse](docs/BinaryAdditionalDetailsDataResponse.md)
@@ -447,6 +454,7 @@ Class | Method | HTTP request | Description
- [GetMeResponse](docs/GetMeResponse.md)
- [GetPublicUserResponse](docs/GetPublicUserResponse.md)
- [GlobalVariable](docs/GlobalVariable.md)
+ - [HistoryEntry](docs/HistoryEntry.md)
- [HttpRequest](docs/HttpRequest.md)
- [IOC](docs/IOC.md)
- [ISA](docs/ISA.md)
@@ -492,11 +500,14 @@ Class | Method | HTTP request | Description
- [RegenerateTarget](docs/RegenerateTarget.md)
- [RegistryOperation](docs/RegistryOperation.md)
- [RelativeBinaryResponse](docs/RelativeBinaryResponse.md)
+ - [RenameInputBody](docs/RenameInputBody.md)
+ - [RenameOutputBody](docs/RenameOutputBody.md)
- [ReplacementValue](docs/ReplacementValue.md)
- [ReportAnalysisResponse](docs/ReportAnalysisResponse.md)
- [ReportEvent](docs/ReportEvent.md)
- [ReportInfo](docs/ReportInfo.md)
- [ReportOptions](docs/ReportOptions.md)
+ - [RevertOutputBody](docs/RevertOutputBody.md)
- [SBOM](docs/SBOM.md)
- [SBOMPackage](docs/SBOMPackage.md)
- [SandboxOptions](docs/SandboxOptions.md)
diff --git a/docs/BatchRenameInputBody.md b/docs/BatchRenameInputBody.md
new file mode 100644
index 00000000..c7c25f99
--- /dev/null
+++ b/docs/BatchRenameInputBody.md
@@ -0,0 +1,14 @@
+
+
+# BatchRenameInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**$schema** | **URI** | A URL to the JSON Schema for this object. | [optional] [readonly] |
+|**functions** | **List<BatchRenameItem>** | List of functions to rename | |
+
+
+
diff --git a/docs/BatchRenameItem.md b/docs/BatchRenameItem.md
new file mode 100644
index 00000000..a847f8e4
--- /dev/null
+++ b/docs/BatchRenameItem.md
@@ -0,0 +1,15 @@
+
+
+# BatchRenameItem
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**functionId** | **Long** | Function ID to rename | |
+|**newMangledName** | **String** | New mangled function name | [optional] |
+|**newName** | **String** | New function name | |
+
+
+
diff --git a/docs/BatchRenameOutputBody.md b/docs/BatchRenameOutputBody.md
new file mode 100644
index 00000000..201cf91f
--- /dev/null
+++ b/docs/BatchRenameOutputBody.md
@@ -0,0 +1,14 @@
+
+
+# BatchRenameOutputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**$schema** | **URI** | A URL to the JSON Schema for this object. | [optional] [readonly] |
+|**renamedCount** | **Long** | Number of functions renamed | |
+
+
+
diff --git a/docs/FunctionsRenamingHistoryApi.md b/docs/FunctionsRenamingHistoryApi.md
index cb564f6e..7dc14595 100644
--- a/docs/FunctionsRenamingHistoryApi.md
+++ b/docs/FunctionsRenamingHistoryApi.md
@@ -5,9 +5,13 @@ All URIs are relative to *https://api.reveng.ai*
| Method | HTTP request | Description |
|------------- | ------------- | -------------|
| [**batchRenameFunction**](FunctionsRenamingHistoryApi.md#batchRenameFunction) | **POST** /v2/functions/rename/batch | Batch Rename Functions |
+| [**batchRenameFunctions**](FunctionsRenamingHistoryApi.md#batchRenameFunctions) | **POST** /v3/functions/rename | Batch rename functions |
+| [**getFunctionHistory**](FunctionsRenamingHistoryApi.md#getFunctionHistory) | **GET** /v3/functions/{function_id}/history | Get function name history |
| [**getFunctionNameHistory**](FunctionsRenamingHistoryApi.md#getFunctionNameHistory) | **GET** /v2/functions/history/{function_id} | Get Function Name History |
+| [**renameFunction**](FunctionsRenamingHistoryApi.md#renameFunction) | **POST** /v3/functions/{function_id}/rename | Rename a function |
| [**renameFunctionId**](FunctionsRenamingHistoryApi.md#renameFunctionId) | **POST** /v2/functions/rename/{function_id} | Rename Function |
| [**revertFunctionName**](FunctionsRenamingHistoryApi.md#revertFunctionName) | **POST** /v2/functions/history/{function_id}/{history_id} | Revert the function name |
+| [**revertFunctionName_0**](FunctionsRenamingHistoryApi.md#revertFunctionName_0) | **POST** /v3/functions/{function_id}/history/{history_id}/revert | Revert function name |
@@ -80,6 +84,152 @@ public class Example {
| **200** | Successful Response | - |
| **422** | Invalid request parameters | - |
+
+# **batchRenameFunctions**
+> BatchRenameOutputBody batchRenameFunctions(batchRenameInputBody)
+
+Batch rename functions
+
+Renames multiple functions in a single request. Records name changes in history and copies data types from source functions. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request
+
+### Example
+```java
+// Import classes:
+import ai.reveng.invoker.ApiClient;
+import ai.reveng.invoker.ApiException;
+import ai.reveng.invoker.Configuration;
+import ai.reveng.invoker.auth.*;
+import ai.reveng.invoker.models.*;
+import ai.reveng.api.FunctionsRenamingHistoryApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://api.reveng.ai");
+
+ // Configure API key authorization: APIKey
+ ApiKeyAuth APIKey = (ApiKeyAuth) defaultClient.getAuthentication("APIKey");
+ APIKey.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //APIKey.setApiKeyPrefix("Token");
+
+ FunctionsRenamingHistoryApi apiInstance = new FunctionsRenamingHistoryApi(defaultClient);
+ BatchRenameInputBody batchRenameInputBody = new BatchRenameInputBody(); // BatchRenameInputBody |
+ try {
+ BatchRenameOutputBody result = apiInstance.batchRenameFunctions(batchRenameInputBody);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FunctionsRenamingHistoryApi#batchRenameFunctions");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **batchRenameInputBody** | [**BatchRenameInputBody**](BatchRenameInputBody.md)| | |
+
+### Return type
+
+[**BatchRenameOutputBody**](BatchRenameOutputBody.md)
+
+### Authorization
+
+[APIKey](../README.md#APIKey)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **400** | Bad Request | - |
+| **403** | Forbidden | - |
+| **422** | Unprocessable Entity | - |
+| **500** | Internal Server Error | - |
+
+
+# **getFunctionHistory**
+> List<HistoryEntry> getFunctionHistory(functionId)
+
+Get function name history
+
+Returns the name change history for a function, newest first. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+
+### Example
+```java
+// Import classes:
+import ai.reveng.invoker.ApiClient;
+import ai.reveng.invoker.ApiException;
+import ai.reveng.invoker.Configuration;
+import ai.reveng.invoker.auth.*;
+import ai.reveng.invoker.models.*;
+import ai.reveng.api.FunctionsRenamingHistoryApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://api.reveng.ai");
+
+ // Configure API key authorization: APIKey
+ ApiKeyAuth APIKey = (ApiKeyAuth) defaultClient.getAuthentication("APIKey");
+ APIKey.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //APIKey.setApiKeyPrefix("Token");
+
+ FunctionsRenamingHistoryApi apiInstance = new FunctionsRenamingHistoryApi(defaultClient);
+ Long functionId = 56L; // Long | Function ID
+ try {
+ List result = apiInstance.getFunctionHistory(functionId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FunctionsRenamingHistoryApi#getFunctionHistory");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **functionId** | **Long**| Function ID | |
+
+### Return type
+
+[**List<HistoryEntry>**](HistoryEntry.md)
+
+### Authorization
+
+[APIKey](../README.md#APIKey)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **403** | Forbidden | - |
+| **404** | Not Found | - |
+| **422** | Unprocessable Entity | - |
+| **500** | Internal Server Error | - |
+
# **getFunctionNameHistory**
> BaseResponseListFunctionNameHistory getFunctionNameHistory(functionId)
@@ -150,6 +300,81 @@ public class Example {
| **200** | Successful Response | - |
| **422** | Invalid request parameters | - |
+
+# **renameFunction**
+> RenameOutputBody renameFunction(functionId, renameInputBody)
+
+Rename a function
+
+Renames a single function and records the change in history. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+
+### Example
+```java
+// Import classes:
+import ai.reveng.invoker.ApiClient;
+import ai.reveng.invoker.ApiException;
+import ai.reveng.invoker.Configuration;
+import ai.reveng.invoker.auth.*;
+import ai.reveng.invoker.models.*;
+import ai.reveng.api.FunctionsRenamingHistoryApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://api.reveng.ai");
+
+ // Configure API key authorization: APIKey
+ ApiKeyAuth APIKey = (ApiKeyAuth) defaultClient.getAuthentication("APIKey");
+ APIKey.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //APIKey.setApiKeyPrefix("Token");
+
+ FunctionsRenamingHistoryApi apiInstance = new FunctionsRenamingHistoryApi(defaultClient);
+ Long functionId = 56L; // Long | Function ID
+ RenameInputBody renameInputBody = new RenameInputBody(); // RenameInputBody |
+ try {
+ RenameOutputBody result = apiInstance.renameFunction(functionId, renameInputBody);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FunctionsRenamingHistoryApi#renameFunction");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **functionId** | **Long**| Function ID | |
+| **renameInputBody** | [**RenameInputBody**](RenameInputBody.md)| | |
+
+### Return type
+
+[**RenameOutputBody**](RenameOutputBody.md)
+
+### Authorization
+
+[APIKey](../README.md#APIKey)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | OK | - |
+| **403** | Forbidden | - |
+| **404** | Not Found | - |
+| **422** | Unprocessable Entity | - |
+| **500** | Internal Server Error | - |
+
# **renameFunctionId**
> BaseResponse renameFunctionId(functionId, functionRename)
@@ -294,3 +519,78 @@ public class Example {
| **200** | Successful Response | - |
| **422** | Invalid request parameters | - |
+
+# **revertFunctionName_0**
+> RevertOutputBody revertFunctionName_0(functionId, historyId)
+
+Revert function name
+
+Reverts a function's name to a previous value from its history. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+
+### Example
+```java
+// Import classes:
+import ai.reveng.invoker.ApiClient;
+import ai.reveng.invoker.ApiException;
+import ai.reveng.invoker.Configuration;
+import ai.reveng.invoker.auth.*;
+import ai.reveng.invoker.models.*;
+import ai.reveng.api.FunctionsRenamingHistoryApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("https://api.reveng.ai");
+
+ // Configure API key authorization: APIKey
+ ApiKeyAuth APIKey = (ApiKeyAuth) defaultClient.getAuthentication("APIKey");
+ APIKey.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //APIKey.setApiKeyPrefix("Token");
+
+ FunctionsRenamingHistoryApi apiInstance = new FunctionsRenamingHistoryApi(defaultClient);
+ Long functionId = 56L; // Long | Function ID
+ Long historyId = 56L; // Long | History ID to revert to
+ try {
+ RevertOutputBody result = apiInstance.revertFunctionName_0(functionId, historyId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FunctionsRenamingHistoryApi#revertFunctionName_0");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **functionId** | **Long**| Function ID | |
+| **historyId** | **Long**| History ID to revert to | |
+
+### Return type
+
+[**RevertOutputBody**](RevertOutputBody.md)
+
+### Authorization
+
+[APIKey](../README.md#APIKey)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | No Content | - |
+| **403** | Forbidden | - |
+| **404** | Not Found | - |
+| **422** | Unprocessable Entity | - |
+| **500** | Internal Server Error | - |
+
diff --git a/docs/HistoryEntry.md b/docs/HistoryEntry.md
new file mode 100644
index 00000000..f6a2bf79
--- /dev/null
+++ b/docs/HistoryEntry.md
@@ -0,0 +1,19 @@
+
+
+# HistoryEntry
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**changeMadeBy** | **String** | Username of the user who made the change | |
+|**createdAt** | **OffsetDateTime** | When this name change was recorded | |
+|**functionName** | **String** | Function name at this point in history | |
+|**historyId** | **Long** | History record ID | |
+|**isDebug** | **Boolean** | Whether the function had debug info | |
+|**mangledName** | **String** | Mangled function name | [optional] |
+|**sourceType** | **String** | Source of the rename (USER, SYSTEM, AI_UNSTRIP, etc.) | |
+
+
+
diff --git a/docs/RenameInputBody.md b/docs/RenameInputBody.md
new file mode 100644
index 00000000..ec86cecb
--- /dev/null
+++ b/docs/RenameInputBody.md
@@ -0,0 +1,15 @@
+
+
+# RenameInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**$schema** | **URI** | A URL to the JSON Schema for this object. | [optional] [readonly] |
+|**newMangledName** | **String** | New mangled function name | [optional] |
+|**newName** | **String** | New function name | |
+
+
+
diff --git a/docs/RenameOutputBody.md b/docs/RenameOutputBody.md
new file mode 100644
index 00000000..f40e1b6e
--- /dev/null
+++ b/docs/RenameOutputBody.md
@@ -0,0 +1,14 @@
+
+
+# RenameOutputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**$schema** | **URI** | A URL to the JSON Schema for this object. | [optional] [readonly] |
+|**renamedCount** | **Long** | Number of functions renamed | |
+
+
+
diff --git a/docs/RevertOutputBody.md b/docs/RevertOutputBody.md
new file mode 100644
index 00000000..ac413b14
--- /dev/null
+++ b/docs/RevertOutputBody.md
@@ -0,0 +1,13 @@
+
+
+# RevertOutputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**$schema** | **URI** | A URL to the JSON Schema for this object. | [optional] [readonly] |
+
+
+
diff --git a/src/main/java/ai/reveng/api/FunctionsRenamingHistoryApi.java b/src/main/java/ai/reveng/api/FunctionsRenamingHistoryApi.java
index dcbffec7..97ee3a7a 100644
--- a/src/main/java/ai/reveng/api/FunctionsRenamingHistoryApi.java
+++ b/src/main/java/ai/reveng/api/FunctionsRenamingHistoryApi.java
@@ -26,10 +26,17 @@
import java.io.IOException;
+import ai.reveng.model.APIError;
import ai.reveng.model.BaseResponse;
import ai.reveng.model.BaseResponseListFunctionNameHistory;
+import ai.reveng.model.BatchRenameInputBody;
+import ai.reveng.model.BatchRenameOutputBody;
import ai.reveng.model.FunctionRename;
import ai.reveng.model.FunctionsListRename;
+import ai.reveng.model.HistoryEntry;
+import ai.reveng.model.RenameInputBody;
+import ai.reveng.model.RenameOutputBody;
+import ai.reveng.model.RevertOutputBody;
import java.lang.reflect.Type;
import java.util.ArrayList;
@@ -205,6 +212,292 @@ public okhttp3.Call batchRenameFunctionAsync(@javax.annotation.Nonnull Functions
localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
return localVarCall;
}
+ /**
+ * Build call for batchRenameFunctions
+ * @param batchRenameInputBody (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 | OK | - |
+ | 400 | Bad Request | - |
+ | 403 | Forbidden | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public okhttp3.Call batchRenameFunctionsCall(@javax.annotation.Nonnull BatchRenameInputBody batchRenameInputBody, 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 = batchRenameInputBody;
+
+ // create path and map variables
+ String localVarPath = "/v3/functions/rename";
+
+ 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[] { "APIKey" };
+ return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ }
+
+ @SuppressWarnings("rawtypes")
+ private okhttp3.Call batchRenameFunctionsValidateBeforeCall(@javax.annotation.Nonnull BatchRenameInputBody batchRenameInputBody, final ApiCallback _callback) throws ApiException {
+ // verify the required parameter 'batchRenameInputBody' is set
+ if (batchRenameInputBody == null) {
+ throw new ApiException("Missing the required parameter 'batchRenameInputBody' when calling batchRenameFunctions(Async)");
+ }
+
+ return batchRenameFunctionsCall(batchRenameInputBody, _callback);
+
+ }
+
+ /**
+ * Batch rename functions
+ * Renames multiple functions in a single request. Records name changes in history and copies data types from source functions. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request
+ * @param batchRenameInputBody (required)
+ * @return BatchRenameOutputBody
+ * @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 | OK | - |
+ | 400 | Bad Request | - |
+ | 403 | Forbidden | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public BatchRenameOutputBody batchRenameFunctions(@javax.annotation.Nonnull BatchRenameInputBody batchRenameInputBody) throws ApiException {
+ ApiResponse localVarResp = batchRenameFunctionsWithHttpInfo(batchRenameInputBody);
+ return localVarResp.getData();
+ }
+
+ /**
+ * Batch rename functions
+ * Renames multiple functions in a single request. Records name changes in history and copies data types from source functions. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request
+ * @param batchRenameInputBody (required)
+ * @return ApiResponse<BatchRenameOutputBody>
+ * @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 | OK | - |
+ | 400 | Bad Request | - |
+ | 403 | Forbidden | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public ApiResponse batchRenameFunctionsWithHttpInfo(@javax.annotation.Nonnull BatchRenameInputBody batchRenameInputBody) throws ApiException {
+ okhttp3.Call localVarCall = batchRenameFunctionsValidateBeforeCall(batchRenameInputBody, null);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ return localVarApiClient.execute(localVarCall, localVarReturnType);
+ }
+
+ /**
+ * Batch rename functions (asynchronously)
+ * Renames multiple functions in a single request. Records name changes in history and copies data types from source functions. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `400` [`BAD_REQUEST`](/errors/BAD_REQUEST) — Bad Request
+ * @param batchRenameInputBody (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 | OK | - |
+ | 400 | Bad Request | - |
+ | 403 | Forbidden | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public okhttp3.Call batchRenameFunctionsAsync(@javax.annotation.Nonnull BatchRenameInputBody batchRenameInputBody, final ApiCallback _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = batchRenameFunctionsValidateBeforeCall(batchRenameInputBody, _callback);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
+ return localVarCall;
+ }
+ /**
+ * Build call for getFunctionHistory
+ * @param functionId Function 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 | OK | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public okhttp3.Call getFunctionHistoryCall(@javax.annotation.Nonnull Long functionId, 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 = "/v3/functions/{function_id}/history"
+ .replace("{" + "function_id" + "}", localVarApiClient.escapeString(functionId.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[] { "APIKey" };
+ return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ }
+
+ @SuppressWarnings("rawtypes")
+ private okhttp3.Call getFunctionHistoryValidateBeforeCall(@javax.annotation.Nonnull Long functionId, final ApiCallback _callback) throws ApiException {
+ // verify the required parameter 'functionId' is set
+ if (functionId == null) {
+ throw new ApiException("Missing the required parameter 'functionId' when calling getFunctionHistory(Async)");
+ }
+
+ return getFunctionHistoryCall(functionId, _callback);
+
+ }
+
+ /**
+ * Get function name history
+ * Returns the name change history for a function, newest first. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @param functionId Function ID (required)
+ * @return List<HistoryEntry>
+ * @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 | OK | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public List getFunctionHistory(@javax.annotation.Nonnull Long functionId) throws ApiException {
+ ApiResponse> localVarResp = getFunctionHistoryWithHttpInfo(functionId);
+ return localVarResp.getData();
+ }
+
+ /**
+ * Get function name history
+ * Returns the name change history for a function, newest first. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @param functionId Function ID (required)
+ * @return ApiResponse<List<HistoryEntry>>
+ * @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 | OK | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public ApiResponse> getFunctionHistoryWithHttpInfo(@javax.annotation.Nonnull Long functionId) throws ApiException {
+ okhttp3.Call localVarCall = getFunctionHistoryValidateBeforeCall(functionId, null);
+ Type localVarReturnType = new TypeToken>(){}.getType();
+ return localVarApiClient.execute(localVarCall, localVarReturnType);
+ }
+
+ /**
+ * Get function name history (asynchronously)
+ * Returns the name change history for a function, newest first. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @param functionId Function 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 | OK | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public okhttp3.Call getFunctionHistoryAsync(@javax.annotation.Nonnull Long functionId, final ApiCallback> _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = getFunctionHistoryValidateBeforeCall(functionId, _callback);
+ Type localVarReturnType = new TypeToken>(){}.getType();
+ localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
+ return localVarCall;
+ }
/**
* Build call for getFunctionNameHistory
* @param functionId (required)
@@ -336,6 +629,159 @@ public okhttp3.Call getFunctionNameHistoryAsync(@javax.annotation.Nonnull Intege
localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
return localVarCall;
}
+ /**
+ * Build call for renameFunction
+ * @param functionId Function ID (required)
+ * @param renameInputBody (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 | OK | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public okhttp3.Call renameFunctionCall(@javax.annotation.Nonnull Long functionId, @javax.annotation.Nonnull RenameInputBody renameInputBody, 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 = renameInputBody;
+
+ // create path and map variables
+ String localVarPath = "/v3/functions/{function_id}/rename"
+ .replace("{" + "function_id" + "}", localVarApiClient.escapeString(functionId.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[] { "APIKey" };
+ return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ }
+
+ @SuppressWarnings("rawtypes")
+ private okhttp3.Call renameFunctionValidateBeforeCall(@javax.annotation.Nonnull Long functionId, @javax.annotation.Nonnull RenameInputBody renameInputBody, final ApiCallback _callback) throws ApiException {
+ // verify the required parameter 'functionId' is set
+ if (functionId == null) {
+ throw new ApiException("Missing the required parameter 'functionId' when calling renameFunction(Async)");
+ }
+
+ // verify the required parameter 'renameInputBody' is set
+ if (renameInputBody == null) {
+ throw new ApiException("Missing the required parameter 'renameInputBody' when calling renameFunction(Async)");
+ }
+
+ return renameFunctionCall(functionId, renameInputBody, _callback);
+
+ }
+
+ /**
+ * Rename a function
+ * Renames a single function and records the change in history. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @param functionId Function ID (required)
+ * @param renameInputBody (required)
+ * @return RenameOutputBody
+ * @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 | OK | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public RenameOutputBody renameFunction(@javax.annotation.Nonnull Long functionId, @javax.annotation.Nonnull RenameInputBody renameInputBody) throws ApiException {
+ ApiResponse localVarResp = renameFunctionWithHttpInfo(functionId, renameInputBody);
+ return localVarResp.getData();
+ }
+
+ /**
+ * Rename a function
+ * Renames a single function and records the change in history. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @param functionId Function ID (required)
+ * @param renameInputBody (required)
+ * @return ApiResponse<RenameOutputBody>
+ * @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 | OK | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public ApiResponse renameFunctionWithHttpInfo(@javax.annotation.Nonnull Long functionId, @javax.annotation.Nonnull RenameInputBody renameInputBody) throws ApiException {
+ okhttp3.Call localVarCall = renameFunctionValidateBeforeCall(functionId, renameInputBody, null);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ return localVarApiClient.execute(localVarCall, localVarReturnType);
+ }
+
+ /**
+ * Rename a function (asynchronously)
+ * Renames a single function and records the change in history. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @param functionId Function ID (required)
+ * @param renameInputBody (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 | OK | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public okhttp3.Call renameFunctionAsync(@javax.annotation.Nonnull Long functionId, @javax.annotation.Nonnull RenameInputBody renameInputBody, final ApiCallback _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = renameFunctionValidateBeforeCall(functionId, renameInputBody, _callback);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
+ return localVarCall;
+ }
/**
* Build call for renameFunctionId
* @param functionId (required)
@@ -618,4 +1064,157 @@ public okhttp3.Call revertFunctionNameAsync(@javax.annotation.Nonnull Integer fu
localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
return localVarCall;
}
+ /**
+ * Build call for revertFunctionName_0
+ * @param functionId Function ID (required)
+ * @param historyId History ID to revert to (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 | No Content | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public okhttp3.Call revertFunctionName_0Call(@javax.annotation.Nonnull Long functionId, @javax.annotation.Nonnull Long historyId, 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 = "/v3/functions/{function_id}/history/{history_id}/revert"
+ .replace("{" + "function_id" + "}", localVarApiClient.escapeString(functionId.toString()))
+ .replace("{" + "history_id" + "}", localVarApiClient.escapeString(historyId.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[] { "APIKey" };
+ return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback);
+ }
+
+ @SuppressWarnings("rawtypes")
+ private okhttp3.Call revertFunctionName_0ValidateBeforeCall(@javax.annotation.Nonnull Long functionId, @javax.annotation.Nonnull Long historyId, final ApiCallback _callback) throws ApiException {
+ // verify the required parameter 'functionId' is set
+ if (functionId == null) {
+ throw new ApiException("Missing the required parameter 'functionId' when calling revertFunctionName_0(Async)");
+ }
+
+ // verify the required parameter 'historyId' is set
+ if (historyId == null) {
+ throw new ApiException("Missing the required parameter 'historyId' when calling revertFunctionName_0(Async)");
+ }
+
+ return revertFunctionName_0Call(functionId, historyId, _callback);
+
+ }
+
+ /**
+ * Revert function name
+ * Reverts a function's name to a previous value from its history. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @param functionId Function ID (required)
+ * @param historyId History ID to revert to (required)
+ * @return RevertOutputBody
+ * @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 | No Content | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public RevertOutputBody revertFunctionName_0(@javax.annotation.Nonnull Long functionId, @javax.annotation.Nonnull Long historyId) throws ApiException {
+ ApiResponse localVarResp = revertFunctionName_0WithHttpInfo(functionId, historyId);
+ return localVarResp.getData();
+ }
+
+ /**
+ * Revert function name
+ * Reverts a function's name to a previous value from its history. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @param functionId Function ID (required)
+ * @param historyId History ID to revert to (required)
+ * @return ApiResponse<RevertOutputBody>
+ * @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 | No Content | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public ApiResponse revertFunctionName_0WithHttpInfo(@javax.annotation.Nonnull Long functionId, @javax.annotation.Nonnull Long historyId) throws ApiException {
+ okhttp3.Call localVarCall = revertFunctionName_0ValidateBeforeCall(functionId, historyId, null);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ return localVarApiClient.execute(localVarCall, localVarReturnType);
+ }
+
+ /**
+ * Revert function name (asynchronously)
+ * Reverts a function's name to a previous value from its history. **Error codes:** - `403` [`ACCESS_DENIED`](/errors/ACCESS_DENIED) — Access Denied - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @param functionId Function ID (required)
+ * @param historyId History ID to revert to (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 | No Content | - |
+ | 403 | Forbidden | - |
+ | 404 | Not Found | - |
+ | 422 | Unprocessable Entity | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public okhttp3.Call revertFunctionName_0Async(@javax.annotation.Nonnull Long functionId, @javax.annotation.Nonnull Long historyId, final ApiCallback _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = revertFunctionName_0ValidateBeforeCall(functionId, historyId, _callback);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
+ return localVarCall;
+ }
}
diff --git a/src/main/java/ai/reveng/invoker/JSON.java b/src/main/java/ai/reveng/invoker/JSON.java
index dc26ae15..cc278d14 100644
--- a/src/main/java/ai/reveng/invoker/JSON.java
+++ b/src/main/java/ai/reveng/invoker/JSON.java
@@ -201,6 +201,9 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BaseResponseVulnerabilities.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BaseResponseXrefResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.Basic.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BatchRenameInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BatchRenameItem.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BatchRenameOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BinariesRelatedStatusResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BinaryAdditionalDetailsDataResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BinaryAdditionalResponse.CustomTypeAdapterFactory());
@@ -328,6 +331,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.GetMeResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.GetPublicUserResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.GlobalVariable.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.HistoryEntry.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.HttpRequest.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.IOC.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.IconModel.CustomTypeAdapterFactory());
@@ -368,11 +372,14 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RegenerateOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RegistryOperation.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RelativeBinaryResponse.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RenameInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RenameOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ReplacementValue.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ReportAnalysisResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ReportEvent.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ReportInfo.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ReportOptions.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RevertOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.SBOM.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.SBOMPackage.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.SandboxOptions.CustomTypeAdapterFactory());
diff --git a/src/main/java/ai/reveng/model/BatchRenameInputBody.java b/src/main/java/ai/reveng/model/BatchRenameInputBody.java
new file mode 100644
index 00000000..6bad4a82
--- /dev/null
+++ b/src/main/java/ai/reveng/model/BatchRenameInputBody.java
@@ -0,0 +1,337 @@
+/*
+ * RevEng.AI API
+ * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal.
+ *
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package ai.reveng.model;
+
+import java.util.Objects;
+import java.util.Locale;
+import ai.reveng.model.BatchRenameItem;
+import com.google.gson.TypeAdapter;
+import com.google.gson.annotations.JsonAdapter;
+import com.google.gson.annotations.SerializedName;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.TypeAdapterFactory;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Locale;
+
+import ai.reveng.invoker.JSON;
+
+/**
+ * BatchRenameInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class BatchRenameInputBody {
+ public static final String SERIALIZED_NAME_$_SCHEMA = "$schema";
+ @SerializedName(SERIALIZED_NAME_$_SCHEMA)
+ @javax.annotation.Nullable
+ private URI $schema;
+
+ public static final String SERIALIZED_NAME_FUNCTIONS = "functions";
+ @SerializedName(SERIALIZED_NAME_FUNCTIONS)
+ @javax.annotation.Nullable
+ private List functions;
+
+ public BatchRenameInputBody() {
+ }
+
+ public BatchRenameInputBody(
+ URI $schema
+ ) {
+ this();
+ this.$schema = $schema;
+ }
+
+ /**
+ * A URL to the JSON Schema for this object.
+ * @return $schema
+ */
+ @javax.annotation.Nullable
+ public URI get$Schema() {
+ return $schema;
+ }
+
+
+
+ public BatchRenameInputBody functions(@javax.annotation.Nullable List functions) {
+ this.functions = functions;
+ return this;
+ }
+
+ public BatchRenameInputBody addFunctionsItem(BatchRenameItem functionsItem) {
+ if (this.functions == null) {
+ this.functions = new ArrayList<>();
+ }
+ this.functions.add(functionsItem);
+ return this;
+ }
+
+ /**
+ * List of functions to rename
+ * @return functions
+ */
+ @javax.annotation.Nullable
+ public List getFunctions() {
+ return functions;
+ }
+
+ public void setFunctions(@javax.annotation.Nullable List functions) {
+ this.functions = functions;
+ }
+
+ /**
+ * A container for additional, undeclared properties.
+ * This is a holder for any undeclared properties as specified with
+ * the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value.
+ * If the property does not already exist, create it otherwise replace it.
+ *
+ * @param key name of the property
+ * @param value value of the property
+ * @return the BatchRenameInputBody instance itself
+ */
+ public BatchRenameInputBody putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return a map of objects
+ */
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key name of the property
+ * @return an object
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ BatchRenameInputBody batchRenameInputBody = (BatchRenameInputBody) o;
+ return Objects.equals(this.$schema, batchRenameInputBody.$schema) &&
+ Objects.equals(this.functions, batchRenameInputBody.functions)&&
+ Objects.equals(this.additionalProperties, batchRenameInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash($schema, functions, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class BatchRenameInputBody {\n");
+ sb.append(" $schema: ").append(toIndentedString($schema)).append("\n");
+ sb.append(" functions: ").append(toIndentedString(functions)).append("\n");
+ sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).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("$schema", "functions"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("functions"));
+ }
+
+ /**
+ * 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 BatchRenameInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!BatchRenameInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in BatchRenameInputBody is not found in the empty JSON string", BatchRenameInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : BatchRenameInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if ((jsonObj.get("$schema") != null && !jsonObj.get("$schema").isJsonNull()) && !jsonObj.get("$schema").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `$schema` to be a primitive type in the JSON string but got `%s`", jsonObj.get("$schema").toString()));
+ }
+ // ensure the required json array is present
+ if (jsonObj.get("functions") == null) {
+ throw new IllegalArgumentException("Expected the field `linkedContent` to be an array in the JSON string but got `null`");
+ } else if (!jsonObj.get("functions").isJsonArray()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `functions` to be an array in the JSON string but got `%s`", jsonObj.get("functions").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!BatchRenameInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'BatchRenameInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(BatchRenameInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, BatchRenameInputBody value) throws IOException {
+ JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
+ obj.remove("additionalProperties");
+ // serialize additional properties
+ if (value.getAdditionalProperties() != null) {
+ for (Map.Entry entry : value.getAdditionalProperties().entrySet()) {
+ if (entry.getValue() instanceof String)
+ obj.addProperty(entry.getKey(), (String) entry.getValue());
+ else if (entry.getValue() instanceof Number)
+ obj.addProperty(entry.getKey(), (Number) entry.getValue());
+ else if (entry.getValue() instanceof Boolean)
+ obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
+ else if (entry.getValue() instanceof Character)
+ obj.addProperty(entry.getKey(), (Character) entry.getValue());
+ else {
+ JsonElement jsonElement = gson.toJsonTree(entry.getValue());
+ if (jsonElement.isJsonArray()) {
+ obj.add(entry.getKey(), jsonElement.getAsJsonArray());
+ } else {
+ obj.add(entry.getKey(), jsonElement.getAsJsonObject());
+ }
+ }
+ }
+ }
+ elementAdapter.write(out, obj);
+ }
+
+ @Override
+ public BatchRenameInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ BatchRenameInputBody instance = thisAdapter.fromJsonTree(jsonObj);
+ for (Map.Entry entry : jsonObj.entrySet()) {
+ if (!openapiFields.contains(entry.getKey())) {
+ if (entry.getValue().isJsonPrimitive()) { // primitive type
+ if (entry.getValue().getAsJsonPrimitive().isString())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
+ else if (entry.getValue().getAsJsonPrimitive().isNumber())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
+ else if (entry.getValue().getAsJsonPrimitive().isBoolean())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
+ else
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
+ } else if (entry.getValue().isJsonArray()) {
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), List.class));
+ } else { // JSON object
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
+ }
+ }
+ }
+ return instance;
+ }
+
+ }.nullSafe();
+ }
+ }
+
+ /**
+ * Create an instance of BatchRenameInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of BatchRenameInputBody
+ * @throws IOException if the JSON string is invalid with respect to BatchRenameInputBody
+ */
+ public static BatchRenameInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, BatchRenameInputBody.class);
+ }
+
+ /**
+ * Convert an instance of BatchRenameInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/BatchRenameItem.java b/src/main/java/ai/reveng/model/BatchRenameItem.java
new file mode 100644
index 00000000..2bb0924f
--- /dev/null
+++ b/src/main/java/ai/reveng/model/BatchRenameItem.java
@@ -0,0 +1,350 @@
+/*
+ * RevEng.AI API
+ * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal.
+ *
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package ai.reveng.model;
+
+import java.util.Objects;
+import java.util.Locale;
+import com.google.gson.TypeAdapter;
+import com.google.gson.annotations.JsonAdapter;
+import com.google.gson.annotations.SerializedName;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+import java.util.Arrays;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.TypeAdapterFactory;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Locale;
+
+import ai.reveng.invoker.JSON;
+
+/**
+ * BatchRenameItem
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class BatchRenameItem {
+ public static final String SERIALIZED_NAME_FUNCTION_ID = "function_id";
+ @SerializedName(SERIALIZED_NAME_FUNCTION_ID)
+ @javax.annotation.Nonnull
+ private Long functionId;
+
+ public static final String SERIALIZED_NAME_NEW_MANGLED_NAME = "new_mangled_name";
+ @SerializedName(SERIALIZED_NAME_NEW_MANGLED_NAME)
+ @javax.annotation.Nullable
+ private String newMangledName;
+
+ public static final String SERIALIZED_NAME_NEW_NAME = "new_name";
+ @SerializedName(SERIALIZED_NAME_NEW_NAME)
+ @javax.annotation.Nonnull
+ private String newName;
+
+ public BatchRenameItem() {
+ }
+
+ public BatchRenameItem functionId(@javax.annotation.Nonnull Long functionId) {
+ this.functionId = functionId;
+ return this;
+ }
+
+ /**
+ * Function ID to rename
+ * minimum: 1
+ * @return functionId
+ */
+ @javax.annotation.Nonnull
+ public Long getFunctionId() {
+ return functionId;
+ }
+
+ public void setFunctionId(@javax.annotation.Nonnull Long functionId) {
+ this.functionId = functionId;
+ }
+
+
+ public BatchRenameItem newMangledName(@javax.annotation.Nullable String newMangledName) {
+ this.newMangledName = newMangledName;
+ return this;
+ }
+
+ /**
+ * New mangled function name
+ * @return newMangledName
+ */
+ @javax.annotation.Nullable
+ public String getNewMangledName() {
+ return newMangledName;
+ }
+
+ public void setNewMangledName(@javax.annotation.Nullable String newMangledName) {
+ this.newMangledName = newMangledName;
+ }
+
+
+ public BatchRenameItem newName(@javax.annotation.Nonnull String newName) {
+ this.newName = newName;
+ return this;
+ }
+
+ /**
+ * New function name
+ * @return newName
+ */
+ @javax.annotation.Nonnull
+ public String getNewName() {
+ return newName;
+ }
+
+ public void setNewName(@javax.annotation.Nonnull String newName) {
+ this.newName = newName;
+ }
+
+ /**
+ * A container for additional, undeclared properties.
+ * This is a holder for any undeclared properties as specified with
+ * the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value.
+ * If the property does not already exist, create it otherwise replace it.
+ *
+ * @param key name of the property
+ * @param value value of the property
+ * @return the BatchRenameItem instance itself
+ */
+ public BatchRenameItem putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return a map of objects
+ */
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key name of the property
+ * @return an object
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ BatchRenameItem batchRenameItem = (BatchRenameItem) o;
+ return Objects.equals(this.functionId, batchRenameItem.functionId) &&
+ Objects.equals(this.newMangledName, batchRenameItem.newMangledName) &&
+ Objects.equals(this.newName, batchRenameItem.newName)&&
+ Objects.equals(this.additionalProperties, batchRenameItem.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(functionId, newMangledName, newName, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class BatchRenameItem {\n");
+ sb.append(" functionId: ").append(toIndentedString(functionId)).append("\n");
+ sb.append(" newMangledName: ").append(toIndentedString(newMangledName)).append("\n");
+ sb.append(" newName: ").append(toIndentedString(newName)).append("\n");
+ sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).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("function_id", "new_mangled_name", "new_name"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("function_id", "new_name"));
+ }
+
+ /**
+ * 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 BatchRenameItem
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!BatchRenameItem.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in BatchRenameItem is not found in the empty JSON string", BatchRenameItem.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : BatchRenameItem.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if ((jsonObj.get("new_mangled_name") != null && !jsonObj.get("new_mangled_name").isJsonNull()) && !jsonObj.get("new_mangled_name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `new_mangled_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("new_mangled_name").toString()));
+ }
+ if (!jsonObj.get("new_name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `new_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("new_name").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!BatchRenameItem.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'BatchRenameItem' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(BatchRenameItem.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, BatchRenameItem value) throws IOException {
+ JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
+ obj.remove("additionalProperties");
+ // serialize additional properties
+ if (value.getAdditionalProperties() != null) {
+ for (Map.Entry entry : value.getAdditionalProperties().entrySet()) {
+ if (entry.getValue() instanceof String)
+ obj.addProperty(entry.getKey(), (String) entry.getValue());
+ else if (entry.getValue() instanceof Number)
+ obj.addProperty(entry.getKey(), (Number) entry.getValue());
+ else if (entry.getValue() instanceof Boolean)
+ obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
+ else if (entry.getValue() instanceof Character)
+ obj.addProperty(entry.getKey(), (Character) entry.getValue());
+ else {
+ JsonElement jsonElement = gson.toJsonTree(entry.getValue());
+ if (jsonElement.isJsonArray()) {
+ obj.add(entry.getKey(), jsonElement.getAsJsonArray());
+ } else {
+ obj.add(entry.getKey(), jsonElement.getAsJsonObject());
+ }
+ }
+ }
+ }
+ elementAdapter.write(out, obj);
+ }
+
+ @Override
+ public BatchRenameItem read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ BatchRenameItem instance = thisAdapter.fromJsonTree(jsonObj);
+ for (Map.Entry entry : jsonObj.entrySet()) {
+ if (!openapiFields.contains(entry.getKey())) {
+ if (entry.getValue().isJsonPrimitive()) { // primitive type
+ if (entry.getValue().getAsJsonPrimitive().isString())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
+ else if (entry.getValue().getAsJsonPrimitive().isNumber())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
+ else if (entry.getValue().getAsJsonPrimitive().isBoolean())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
+ else
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
+ } else if (entry.getValue().isJsonArray()) {
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), List.class));
+ } else { // JSON object
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
+ }
+ }
+ }
+ return instance;
+ }
+
+ }.nullSafe();
+ }
+ }
+
+ /**
+ * Create an instance of BatchRenameItem given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of BatchRenameItem
+ * @throws IOException if the JSON string is invalid with respect to BatchRenameItem
+ */
+ public static BatchRenameItem fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, BatchRenameItem.class);
+ }
+
+ /**
+ * Convert an instance of BatchRenameItem to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/BatchRenameOutputBody.java b/src/main/java/ai/reveng/model/BatchRenameOutputBody.java
new file mode 100644
index 00000000..626efeb1
--- /dev/null
+++ b/src/main/java/ai/reveng/model/BatchRenameOutputBody.java
@@ -0,0 +1,320 @@
+/*
+ * RevEng.AI API
+ * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal.
+ *
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package ai.reveng.model;
+
+import java.util.Objects;
+import java.util.Locale;
+import com.google.gson.TypeAdapter;
+import com.google.gson.annotations.JsonAdapter;
+import com.google.gson.annotations.SerializedName;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Arrays;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.TypeAdapterFactory;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Locale;
+
+import ai.reveng.invoker.JSON;
+
+/**
+ * BatchRenameOutputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class BatchRenameOutputBody {
+ public static final String SERIALIZED_NAME_$_SCHEMA = "$schema";
+ @SerializedName(SERIALIZED_NAME_$_SCHEMA)
+ @javax.annotation.Nullable
+ private URI $schema;
+
+ public static final String SERIALIZED_NAME_RENAMED_COUNT = "renamed_count";
+ @SerializedName(SERIALIZED_NAME_RENAMED_COUNT)
+ @javax.annotation.Nonnull
+ private Long renamedCount;
+
+ public BatchRenameOutputBody() {
+ }
+
+ public BatchRenameOutputBody(
+ URI $schema
+ ) {
+ this();
+ this.$schema = $schema;
+ }
+
+ /**
+ * A URL to the JSON Schema for this object.
+ * @return $schema
+ */
+ @javax.annotation.Nullable
+ public URI get$Schema() {
+ return $schema;
+ }
+
+
+
+ public BatchRenameOutputBody renamedCount(@javax.annotation.Nonnull Long renamedCount) {
+ this.renamedCount = renamedCount;
+ return this;
+ }
+
+ /**
+ * Number of functions renamed
+ * @return renamedCount
+ */
+ @javax.annotation.Nonnull
+ public Long getRenamedCount() {
+ return renamedCount;
+ }
+
+ public void setRenamedCount(@javax.annotation.Nonnull Long renamedCount) {
+ this.renamedCount = renamedCount;
+ }
+
+ /**
+ * A container for additional, undeclared properties.
+ * This is a holder for any undeclared properties as specified with
+ * the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value.
+ * If the property does not already exist, create it otherwise replace it.
+ *
+ * @param key name of the property
+ * @param value value of the property
+ * @return the BatchRenameOutputBody instance itself
+ */
+ public BatchRenameOutputBody putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return a map of objects
+ */
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key name of the property
+ * @return an object
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ BatchRenameOutputBody batchRenameOutputBody = (BatchRenameOutputBody) o;
+ return Objects.equals(this.$schema, batchRenameOutputBody.$schema) &&
+ Objects.equals(this.renamedCount, batchRenameOutputBody.renamedCount)&&
+ Objects.equals(this.additionalProperties, batchRenameOutputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash($schema, renamedCount, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class BatchRenameOutputBody {\n");
+ sb.append(" $schema: ").append(toIndentedString($schema)).append("\n");
+ sb.append(" renamedCount: ").append(toIndentedString(renamedCount)).append("\n");
+ sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).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("$schema", "renamed_count"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("renamed_count"));
+ }
+
+ /**
+ * 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 BatchRenameOutputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!BatchRenameOutputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in BatchRenameOutputBody is not found in the empty JSON string", BatchRenameOutputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : BatchRenameOutputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if ((jsonObj.get("$schema") != null && !jsonObj.get("$schema").isJsonNull()) && !jsonObj.get("$schema").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `$schema` to be a primitive type in the JSON string but got `%s`", jsonObj.get("$schema").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!BatchRenameOutputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'BatchRenameOutputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(BatchRenameOutputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, BatchRenameOutputBody value) throws IOException {
+ JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
+ obj.remove("additionalProperties");
+ // serialize additional properties
+ if (value.getAdditionalProperties() != null) {
+ for (Map.Entry entry : value.getAdditionalProperties().entrySet()) {
+ if (entry.getValue() instanceof String)
+ obj.addProperty(entry.getKey(), (String) entry.getValue());
+ else if (entry.getValue() instanceof Number)
+ obj.addProperty(entry.getKey(), (Number) entry.getValue());
+ else if (entry.getValue() instanceof Boolean)
+ obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
+ else if (entry.getValue() instanceof Character)
+ obj.addProperty(entry.getKey(), (Character) entry.getValue());
+ else {
+ JsonElement jsonElement = gson.toJsonTree(entry.getValue());
+ if (jsonElement.isJsonArray()) {
+ obj.add(entry.getKey(), jsonElement.getAsJsonArray());
+ } else {
+ obj.add(entry.getKey(), jsonElement.getAsJsonObject());
+ }
+ }
+ }
+ }
+ elementAdapter.write(out, obj);
+ }
+
+ @Override
+ public BatchRenameOutputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ BatchRenameOutputBody instance = thisAdapter.fromJsonTree(jsonObj);
+ for (Map.Entry entry : jsonObj.entrySet()) {
+ if (!openapiFields.contains(entry.getKey())) {
+ if (entry.getValue().isJsonPrimitive()) { // primitive type
+ if (entry.getValue().getAsJsonPrimitive().isString())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
+ else if (entry.getValue().getAsJsonPrimitive().isNumber())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
+ else if (entry.getValue().getAsJsonPrimitive().isBoolean())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
+ else
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
+ } else if (entry.getValue().isJsonArray()) {
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), List.class));
+ } else { // JSON object
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
+ }
+ }
+ }
+ return instance;
+ }
+
+ }.nullSafe();
+ }
+ }
+
+ /**
+ * Create an instance of BatchRenameOutputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of BatchRenameOutputBody
+ * @throws IOException if the JSON string is invalid with respect to BatchRenameOutputBody
+ */
+ public static BatchRenameOutputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, BatchRenameOutputBody.class);
+ }
+
+ /**
+ * Convert an instance of BatchRenameOutputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/HistoryEntry.java b/src/main/java/ai/reveng/model/HistoryEntry.java
new file mode 100644
index 00000000..76ce4ea3
--- /dev/null
+++ b/src/main/java/ai/reveng/model/HistoryEntry.java
@@ -0,0 +1,460 @@
+/*
+ * RevEng.AI API
+ * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal.
+ *
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package ai.reveng.model;
+
+import java.util.Objects;
+import java.util.Locale;
+import com.google.gson.TypeAdapter;
+import com.google.gson.annotations.JsonAdapter;
+import com.google.gson.annotations.SerializedName;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.util.Arrays;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.TypeAdapterFactory;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Locale;
+
+import ai.reveng.invoker.JSON;
+
+/**
+ * HistoryEntry
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class HistoryEntry {
+ public static final String SERIALIZED_NAME_CHANGE_MADE_BY = "change_made_by";
+ @SerializedName(SERIALIZED_NAME_CHANGE_MADE_BY)
+ @javax.annotation.Nonnull
+ private String changeMadeBy;
+
+ public static final String SERIALIZED_NAME_CREATED_AT = "created_at";
+ @SerializedName(SERIALIZED_NAME_CREATED_AT)
+ @javax.annotation.Nonnull
+ private OffsetDateTime createdAt;
+
+ public static final String SERIALIZED_NAME_FUNCTION_NAME = "function_name";
+ @SerializedName(SERIALIZED_NAME_FUNCTION_NAME)
+ @javax.annotation.Nonnull
+ private String functionName;
+
+ public static final String SERIALIZED_NAME_HISTORY_ID = "history_id";
+ @SerializedName(SERIALIZED_NAME_HISTORY_ID)
+ @javax.annotation.Nonnull
+ private Long historyId;
+
+ public static final String SERIALIZED_NAME_IS_DEBUG = "is_debug";
+ @SerializedName(SERIALIZED_NAME_IS_DEBUG)
+ @javax.annotation.Nonnull
+ private Boolean isDebug;
+
+ public static final String SERIALIZED_NAME_MANGLED_NAME = "mangled_name";
+ @SerializedName(SERIALIZED_NAME_MANGLED_NAME)
+ @javax.annotation.Nullable
+ private String mangledName;
+
+ public static final String SERIALIZED_NAME_SOURCE_TYPE = "source_type";
+ @SerializedName(SERIALIZED_NAME_SOURCE_TYPE)
+ @javax.annotation.Nonnull
+ private String sourceType;
+
+ public HistoryEntry() {
+ }
+
+ public HistoryEntry changeMadeBy(@javax.annotation.Nonnull String changeMadeBy) {
+ this.changeMadeBy = changeMadeBy;
+ return this;
+ }
+
+ /**
+ * Username of the user who made the change
+ * @return changeMadeBy
+ */
+ @javax.annotation.Nonnull
+ public String getChangeMadeBy() {
+ return changeMadeBy;
+ }
+
+ public void setChangeMadeBy(@javax.annotation.Nonnull String changeMadeBy) {
+ this.changeMadeBy = changeMadeBy;
+ }
+
+
+ public HistoryEntry createdAt(@javax.annotation.Nonnull OffsetDateTime createdAt) {
+ this.createdAt = createdAt;
+ return this;
+ }
+
+ /**
+ * When this name change was recorded
+ * @return createdAt
+ */
+ @javax.annotation.Nonnull
+ public OffsetDateTime getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(@javax.annotation.Nonnull OffsetDateTime createdAt) {
+ this.createdAt = createdAt;
+ }
+
+
+ public HistoryEntry functionName(@javax.annotation.Nonnull String functionName) {
+ this.functionName = functionName;
+ return this;
+ }
+
+ /**
+ * Function name at this point in history
+ * @return functionName
+ */
+ @javax.annotation.Nonnull
+ public String getFunctionName() {
+ return functionName;
+ }
+
+ public void setFunctionName(@javax.annotation.Nonnull String functionName) {
+ this.functionName = functionName;
+ }
+
+
+ public HistoryEntry historyId(@javax.annotation.Nonnull Long historyId) {
+ this.historyId = historyId;
+ return this;
+ }
+
+ /**
+ * History record ID
+ * @return historyId
+ */
+ @javax.annotation.Nonnull
+ public Long getHistoryId() {
+ return historyId;
+ }
+
+ public void setHistoryId(@javax.annotation.Nonnull Long historyId) {
+ this.historyId = historyId;
+ }
+
+
+ public HistoryEntry isDebug(@javax.annotation.Nonnull Boolean isDebug) {
+ this.isDebug = isDebug;
+ return this;
+ }
+
+ /**
+ * Whether the function had debug info
+ * @return isDebug
+ */
+ @javax.annotation.Nonnull
+ public Boolean getIsDebug() {
+ return isDebug;
+ }
+
+ public void setIsDebug(@javax.annotation.Nonnull Boolean isDebug) {
+ this.isDebug = isDebug;
+ }
+
+
+ public HistoryEntry mangledName(@javax.annotation.Nullable String mangledName) {
+ this.mangledName = mangledName;
+ return this;
+ }
+
+ /**
+ * Mangled function name
+ * @return mangledName
+ */
+ @javax.annotation.Nullable
+ public String getMangledName() {
+ return mangledName;
+ }
+
+ public void setMangledName(@javax.annotation.Nullable String mangledName) {
+ this.mangledName = mangledName;
+ }
+
+
+ public HistoryEntry sourceType(@javax.annotation.Nonnull String sourceType) {
+ this.sourceType = sourceType;
+ return this;
+ }
+
+ /**
+ * Source of the rename (USER, SYSTEM, AI_UNSTRIP, etc.)
+ * @return sourceType
+ */
+ @javax.annotation.Nonnull
+ public String getSourceType() {
+ return sourceType;
+ }
+
+ public void setSourceType(@javax.annotation.Nonnull String sourceType) {
+ this.sourceType = sourceType;
+ }
+
+ /**
+ * A container for additional, undeclared properties.
+ * This is a holder for any undeclared properties as specified with
+ * the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value.
+ * If the property does not already exist, create it otherwise replace it.
+ *
+ * @param key name of the property
+ * @param value value of the property
+ * @return the HistoryEntry instance itself
+ */
+ public HistoryEntry putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return a map of objects
+ */
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key name of the property
+ * @return an object
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ HistoryEntry historyEntry = (HistoryEntry) o;
+ return Objects.equals(this.changeMadeBy, historyEntry.changeMadeBy) &&
+ Objects.equals(this.createdAt, historyEntry.createdAt) &&
+ Objects.equals(this.functionName, historyEntry.functionName) &&
+ Objects.equals(this.historyId, historyEntry.historyId) &&
+ Objects.equals(this.isDebug, historyEntry.isDebug) &&
+ Objects.equals(this.mangledName, historyEntry.mangledName) &&
+ Objects.equals(this.sourceType, historyEntry.sourceType)&&
+ Objects.equals(this.additionalProperties, historyEntry.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(changeMadeBy, createdAt, functionName, historyId, isDebug, mangledName, sourceType, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class HistoryEntry {\n");
+ sb.append(" changeMadeBy: ").append(toIndentedString(changeMadeBy)).append("\n");
+ sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n");
+ sb.append(" functionName: ").append(toIndentedString(functionName)).append("\n");
+ sb.append(" historyId: ").append(toIndentedString(historyId)).append("\n");
+ sb.append(" isDebug: ").append(toIndentedString(isDebug)).append("\n");
+ sb.append(" mangledName: ").append(toIndentedString(mangledName)).append("\n");
+ sb.append(" sourceType: ").append(toIndentedString(sourceType)).append("\n");
+ sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).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("change_made_by", "created_at", "function_name", "history_id", "is_debug", "mangled_name", "source_type"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("change_made_by", "created_at", "function_name", "history_id", "is_debug", "source_type"));
+ }
+
+ /**
+ * 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 HistoryEntry
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!HistoryEntry.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in HistoryEntry is not found in the empty JSON string", HistoryEntry.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : HistoryEntry.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if (!jsonObj.get("change_made_by").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `change_made_by` to be a primitive type in the JSON string but got `%s`", jsonObj.get("change_made_by").toString()));
+ }
+ if (!jsonObj.get("function_name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `function_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("function_name").toString()));
+ }
+ if ((jsonObj.get("mangled_name") != null && !jsonObj.get("mangled_name").isJsonNull()) && !jsonObj.get("mangled_name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `mangled_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("mangled_name").toString()));
+ }
+ if (!jsonObj.get("source_type").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `source_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("source_type").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!HistoryEntry.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'HistoryEntry' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(HistoryEntry.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, HistoryEntry value) throws IOException {
+ JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
+ obj.remove("additionalProperties");
+ // serialize additional properties
+ if (value.getAdditionalProperties() != null) {
+ for (Map.Entry entry : value.getAdditionalProperties().entrySet()) {
+ if (entry.getValue() instanceof String)
+ obj.addProperty(entry.getKey(), (String) entry.getValue());
+ else if (entry.getValue() instanceof Number)
+ obj.addProperty(entry.getKey(), (Number) entry.getValue());
+ else if (entry.getValue() instanceof Boolean)
+ obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
+ else if (entry.getValue() instanceof Character)
+ obj.addProperty(entry.getKey(), (Character) entry.getValue());
+ else {
+ JsonElement jsonElement = gson.toJsonTree(entry.getValue());
+ if (jsonElement.isJsonArray()) {
+ obj.add(entry.getKey(), jsonElement.getAsJsonArray());
+ } else {
+ obj.add(entry.getKey(), jsonElement.getAsJsonObject());
+ }
+ }
+ }
+ }
+ elementAdapter.write(out, obj);
+ }
+
+ @Override
+ public HistoryEntry read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ HistoryEntry instance = thisAdapter.fromJsonTree(jsonObj);
+ for (Map.Entry entry : jsonObj.entrySet()) {
+ if (!openapiFields.contains(entry.getKey())) {
+ if (entry.getValue().isJsonPrimitive()) { // primitive type
+ if (entry.getValue().getAsJsonPrimitive().isString())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
+ else if (entry.getValue().getAsJsonPrimitive().isNumber())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
+ else if (entry.getValue().getAsJsonPrimitive().isBoolean())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
+ else
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
+ } else if (entry.getValue().isJsonArray()) {
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), List.class));
+ } else { // JSON object
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
+ }
+ }
+ }
+ return instance;
+ }
+
+ }.nullSafe();
+ }
+ }
+
+ /**
+ * Create an instance of HistoryEntry given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of HistoryEntry
+ * @throws IOException if the JSON string is invalid with respect to HistoryEntry
+ */
+ public static HistoryEntry fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, HistoryEntry.class);
+ }
+
+ /**
+ * Convert an instance of HistoryEntry to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/RenameInputBody.java b/src/main/java/ai/reveng/model/RenameInputBody.java
new file mode 100644
index 00000000..00c21539
--- /dev/null
+++ b/src/main/java/ai/reveng/model/RenameInputBody.java
@@ -0,0 +1,352 @@
+/*
+ * RevEng.AI API
+ * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal.
+ *
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package ai.reveng.model;
+
+import java.util.Objects;
+import java.util.Locale;
+import com.google.gson.TypeAdapter;
+import com.google.gson.annotations.JsonAdapter;
+import com.google.gson.annotations.SerializedName;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Arrays;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.TypeAdapterFactory;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Locale;
+
+import ai.reveng.invoker.JSON;
+
+/**
+ * RenameInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class RenameInputBody {
+ public static final String SERIALIZED_NAME_$_SCHEMA = "$schema";
+ @SerializedName(SERIALIZED_NAME_$_SCHEMA)
+ @javax.annotation.Nullable
+ private URI $schema;
+
+ public static final String SERIALIZED_NAME_NEW_MANGLED_NAME = "new_mangled_name";
+ @SerializedName(SERIALIZED_NAME_NEW_MANGLED_NAME)
+ @javax.annotation.Nullable
+ private String newMangledName;
+
+ public static final String SERIALIZED_NAME_NEW_NAME = "new_name";
+ @SerializedName(SERIALIZED_NAME_NEW_NAME)
+ @javax.annotation.Nonnull
+ private String newName;
+
+ public RenameInputBody() {
+ }
+
+ public RenameInputBody(
+ URI $schema
+ ) {
+ this();
+ this.$schema = $schema;
+ }
+
+ /**
+ * A URL to the JSON Schema for this object.
+ * @return $schema
+ */
+ @javax.annotation.Nullable
+ public URI get$Schema() {
+ return $schema;
+ }
+
+
+
+ public RenameInputBody newMangledName(@javax.annotation.Nullable String newMangledName) {
+ this.newMangledName = newMangledName;
+ return this;
+ }
+
+ /**
+ * New mangled function name
+ * @return newMangledName
+ */
+ @javax.annotation.Nullable
+ public String getNewMangledName() {
+ return newMangledName;
+ }
+
+ public void setNewMangledName(@javax.annotation.Nullable String newMangledName) {
+ this.newMangledName = newMangledName;
+ }
+
+
+ public RenameInputBody newName(@javax.annotation.Nonnull String newName) {
+ this.newName = newName;
+ return this;
+ }
+
+ /**
+ * New function name
+ * @return newName
+ */
+ @javax.annotation.Nonnull
+ public String getNewName() {
+ return newName;
+ }
+
+ public void setNewName(@javax.annotation.Nonnull String newName) {
+ this.newName = newName;
+ }
+
+ /**
+ * A container for additional, undeclared properties.
+ * This is a holder for any undeclared properties as specified with
+ * the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value.
+ * If the property does not already exist, create it otherwise replace it.
+ *
+ * @param key name of the property
+ * @param value value of the property
+ * @return the RenameInputBody instance itself
+ */
+ public RenameInputBody putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return a map of objects
+ */
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key name of the property
+ * @return an object
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ RenameInputBody renameInputBody = (RenameInputBody) o;
+ return Objects.equals(this.$schema, renameInputBody.$schema) &&
+ Objects.equals(this.newMangledName, renameInputBody.newMangledName) &&
+ Objects.equals(this.newName, renameInputBody.newName)&&
+ Objects.equals(this.additionalProperties, renameInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash($schema, newMangledName, newName, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class RenameInputBody {\n");
+ sb.append(" $schema: ").append(toIndentedString($schema)).append("\n");
+ sb.append(" newMangledName: ").append(toIndentedString(newMangledName)).append("\n");
+ sb.append(" newName: ").append(toIndentedString(newName)).append("\n");
+ sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).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("$schema", "new_mangled_name", "new_name"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("new_name"));
+ }
+
+ /**
+ * 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 RenameInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!RenameInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in RenameInputBody is not found in the empty JSON string", RenameInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : RenameInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if ((jsonObj.get("$schema") != null && !jsonObj.get("$schema").isJsonNull()) && !jsonObj.get("$schema").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `$schema` to be a primitive type in the JSON string but got `%s`", jsonObj.get("$schema").toString()));
+ }
+ if ((jsonObj.get("new_mangled_name") != null && !jsonObj.get("new_mangled_name").isJsonNull()) && !jsonObj.get("new_mangled_name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `new_mangled_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("new_mangled_name").toString()));
+ }
+ if (!jsonObj.get("new_name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `new_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("new_name").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!RenameInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'RenameInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(RenameInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, RenameInputBody value) throws IOException {
+ JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
+ obj.remove("additionalProperties");
+ // serialize additional properties
+ if (value.getAdditionalProperties() != null) {
+ for (Map.Entry entry : value.getAdditionalProperties().entrySet()) {
+ if (entry.getValue() instanceof String)
+ obj.addProperty(entry.getKey(), (String) entry.getValue());
+ else if (entry.getValue() instanceof Number)
+ obj.addProperty(entry.getKey(), (Number) entry.getValue());
+ else if (entry.getValue() instanceof Boolean)
+ obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
+ else if (entry.getValue() instanceof Character)
+ obj.addProperty(entry.getKey(), (Character) entry.getValue());
+ else {
+ JsonElement jsonElement = gson.toJsonTree(entry.getValue());
+ if (jsonElement.isJsonArray()) {
+ obj.add(entry.getKey(), jsonElement.getAsJsonArray());
+ } else {
+ obj.add(entry.getKey(), jsonElement.getAsJsonObject());
+ }
+ }
+ }
+ }
+ elementAdapter.write(out, obj);
+ }
+
+ @Override
+ public RenameInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ RenameInputBody instance = thisAdapter.fromJsonTree(jsonObj);
+ for (Map.Entry entry : jsonObj.entrySet()) {
+ if (!openapiFields.contains(entry.getKey())) {
+ if (entry.getValue().isJsonPrimitive()) { // primitive type
+ if (entry.getValue().getAsJsonPrimitive().isString())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
+ else if (entry.getValue().getAsJsonPrimitive().isNumber())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
+ else if (entry.getValue().getAsJsonPrimitive().isBoolean())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
+ else
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
+ } else if (entry.getValue().isJsonArray()) {
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), List.class));
+ } else { // JSON object
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
+ }
+ }
+ }
+ return instance;
+ }
+
+ }.nullSafe();
+ }
+ }
+
+ /**
+ * Create an instance of RenameInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of RenameInputBody
+ * @throws IOException if the JSON string is invalid with respect to RenameInputBody
+ */
+ public static RenameInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, RenameInputBody.class);
+ }
+
+ /**
+ * Convert an instance of RenameInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/RenameOutputBody.java b/src/main/java/ai/reveng/model/RenameOutputBody.java
new file mode 100644
index 00000000..e3cd0277
--- /dev/null
+++ b/src/main/java/ai/reveng/model/RenameOutputBody.java
@@ -0,0 +1,320 @@
+/*
+ * RevEng.AI API
+ * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal.
+ *
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package ai.reveng.model;
+
+import java.util.Objects;
+import java.util.Locale;
+import com.google.gson.TypeAdapter;
+import com.google.gson.annotations.JsonAdapter;
+import com.google.gson.annotations.SerializedName;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Arrays;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.TypeAdapterFactory;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Locale;
+
+import ai.reveng.invoker.JSON;
+
+/**
+ * RenameOutputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class RenameOutputBody {
+ public static final String SERIALIZED_NAME_$_SCHEMA = "$schema";
+ @SerializedName(SERIALIZED_NAME_$_SCHEMA)
+ @javax.annotation.Nullable
+ private URI $schema;
+
+ public static final String SERIALIZED_NAME_RENAMED_COUNT = "renamed_count";
+ @SerializedName(SERIALIZED_NAME_RENAMED_COUNT)
+ @javax.annotation.Nonnull
+ private Long renamedCount;
+
+ public RenameOutputBody() {
+ }
+
+ public RenameOutputBody(
+ URI $schema
+ ) {
+ this();
+ this.$schema = $schema;
+ }
+
+ /**
+ * A URL to the JSON Schema for this object.
+ * @return $schema
+ */
+ @javax.annotation.Nullable
+ public URI get$Schema() {
+ return $schema;
+ }
+
+
+
+ public RenameOutputBody renamedCount(@javax.annotation.Nonnull Long renamedCount) {
+ this.renamedCount = renamedCount;
+ return this;
+ }
+
+ /**
+ * Number of functions renamed
+ * @return renamedCount
+ */
+ @javax.annotation.Nonnull
+ public Long getRenamedCount() {
+ return renamedCount;
+ }
+
+ public void setRenamedCount(@javax.annotation.Nonnull Long renamedCount) {
+ this.renamedCount = renamedCount;
+ }
+
+ /**
+ * A container for additional, undeclared properties.
+ * This is a holder for any undeclared properties as specified with
+ * the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value.
+ * If the property does not already exist, create it otherwise replace it.
+ *
+ * @param key name of the property
+ * @param value value of the property
+ * @return the RenameOutputBody instance itself
+ */
+ public RenameOutputBody putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return a map of objects
+ */
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key name of the property
+ * @return an object
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ RenameOutputBody renameOutputBody = (RenameOutputBody) o;
+ return Objects.equals(this.$schema, renameOutputBody.$schema) &&
+ Objects.equals(this.renamedCount, renameOutputBody.renamedCount)&&
+ Objects.equals(this.additionalProperties, renameOutputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash($schema, renamedCount, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class RenameOutputBody {\n");
+ sb.append(" $schema: ").append(toIndentedString($schema)).append("\n");
+ sb.append(" renamedCount: ").append(toIndentedString(renamedCount)).append("\n");
+ sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).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("$schema", "renamed_count"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("renamed_count"));
+ }
+
+ /**
+ * 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 RenameOutputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!RenameOutputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in RenameOutputBody is not found in the empty JSON string", RenameOutputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : RenameOutputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if ((jsonObj.get("$schema") != null && !jsonObj.get("$schema").isJsonNull()) && !jsonObj.get("$schema").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `$schema` to be a primitive type in the JSON string but got `%s`", jsonObj.get("$schema").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!RenameOutputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'RenameOutputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(RenameOutputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, RenameOutputBody value) throws IOException {
+ JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
+ obj.remove("additionalProperties");
+ // serialize additional properties
+ if (value.getAdditionalProperties() != null) {
+ for (Map.Entry entry : value.getAdditionalProperties().entrySet()) {
+ if (entry.getValue() instanceof String)
+ obj.addProperty(entry.getKey(), (String) entry.getValue());
+ else if (entry.getValue() instanceof Number)
+ obj.addProperty(entry.getKey(), (Number) entry.getValue());
+ else if (entry.getValue() instanceof Boolean)
+ obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
+ else if (entry.getValue() instanceof Character)
+ obj.addProperty(entry.getKey(), (Character) entry.getValue());
+ else {
+ JsonElement jsonElement = gson.toJsonTree(entry.getValue());
+ if (jsonElement.isJsonArray()) {
+ obj.add(entry.getKey(), jsonElement.getAsJsonArray());
+ } else {
+ obj.add(entry.getKey(), jsonElement.getAsJsonObject());
+ }
+ }
+ }
+ }
+ elementAdapter.write(out, obj);
+ }
+
+ @Override
+ public RenameOutputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ RenameOutputBody instance = thisAdapter.fromJsonTree(jsonObj);
+ for (Map.Entry entry : jsonObj.entrySet()) {
+ if (!openapiFields.contains(entry.getKey())) {
+ if (entry.getValue().isJsonPrimitive()) { // primitive type
+ if (entry.getValue().getAsJsonPrimitive().isString())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
+ else if (entry.getValue().getAsJsonPrimitive().isNumber())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
+ else if (entry.getValue().getAsJsonPrimitive().isBoolean())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
+ else
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
+ } else if (entry.getValue().isJsonArray()) {
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), List.class));
+ } else { // JSON object
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
+ }
+ }
+ }
+ return instance;
+ }
+
+ }.nullSafe();
+ }
+ }
+
+ /**
+ * Create an instance of RenameOutputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of RenameOutputBody
+ * @throws IOException if the JSON string is invalid with respect to RenameOutputBody
+ */
+ public static RenameOutputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, RenameOutputBody.class);
+ }
+
+ /**
+ * Convert an instance of RenameOutputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/RevertOutputBody.java b/src/main/java/ai/reveng/model/RevertOutputBody.java
new file mode 100644
index 00000000..fb8be84b
--- /dev/null
+++ b/src/main/java/ai/reveng/model/RevertOutputBody.java
@@ -0,0 +1,287 @@
+/*
+ * RevEng.AI API
+ * RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal.
+ *
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package ai.reveng.model;
+
+import java.util.Objects;
+import java.util.Locale;
+import com.google.gson.TypeAdapter;
+import com.google.gson.annotations.JsonAdapter;
+import com.google.gson.annotations.SerializedName;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Arrays;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.TypeAdapterFactory;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Locale;
+
+import ai.reveng.invoker.JSON;
+
+/**
+ * RevertOutputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class RevertOutputBody {
+ public static final String SERIALIZED_NAME_$_SCHEMA = "$schema";
+ @SerializedName(SERIALIZED_NAME_$_SCHEMA)
+ @javax.annotation.Nullable
+ private URI $schema;
+
+ public RevertOutputBody() {
+ }
+
+ public RevertOutputBody(
+ URI $schema
+ ) {
+ this();
+ this.$schema = $schema;
+ }
+
+ /**
+ * A URL to the JSON Schema for this object.
+ * @return $schema
+ */
+ @javax.annotation.Nullable
+ public URI get$Schema() {
+ return $schema;
+ }
+
+
+ /**
+ * A container for additional, undeclared properties.
+ * This is a holder for any undeclared properties as specified with
+ * the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value.
+ * If the property does not already exist, create it otherwise replace it.
+ *
+ * @param key name of the property
+ * @param value value of the property
+ * @return the RevertOutputBody instance itself
+ */
+ public RevertOutputBody putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return a map of objects
+ */
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key name of the property
+ * @return an object
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ RevertOutputBody revertOutputBody = (RevertOutputBody) o;
+ return Objects.equals(this.$schema, revertOutputBody.$schema)&&
+ Objects.equals(this.additionalProperties, revertOutputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash($schema, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class RevertOutputBody {\n");
+ sb.append(" $schema: ").append(toIndentedString($schema)).append("\n");
+ sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).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("$schema"));
+
+ // 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 RevertOutputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!RevertOutputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in RevertOutputBody is not found in the empty JSON string", RevertOutputBody.openapiRequiredFields.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if ((jsonObj.get("$schema") != null && !jsonObj.get("$schema").isJsonNull()) && !jsonObj.get("$schema").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `$schema` to be a primitive type in the JSON string but got `%s`", jsonObj.get("$schema").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!RevertOutputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'RevertOutputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(RevertOutputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, RevertOutputBody value) throws IOException {
+ JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
+ obj.remove("additionalProperties");
+ // serialize additional properties
+ if (value.getAdditionalProperties() != null) {
+ for (Map.Entry entry : value.getAdditionalProperties().entrySet()) {
+ if (entry.getValue() instanceof String)
+ obj.addProperty(entry.getKey(), (String) entry.getValue());
+ else if (entry.getValue() instanceof Number)
+ obj.addProperty(entry.getKey(), (Number) entry.getValue());
+ else if (entry.getValue() instanceof Boolean)
+ obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
+ else if (entry.getValue() instanceof Character)
+ obj.addProperty(entry.getKey(), (Character) entry.getValue());
+ else {
+ JsonElement jsonElement = gson.toJsonTree(entry.getValue());
+ if (jsonElement.isJsonArray()) {
+ obj.add(entry.getKey(), jsonElement.getAsJsonArray());
+ } else {
+ obj.add(entry.getKey(), jsonElement.getAsJsonObject());
+ }
+ }
+ }
+ }
+ elementAdapter.write(out, obj);
+ }
+
+ @Override
+ public RevertOutputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ RevertOutputBody instance = thisAdapter.fromJsonTree(jsonObj);
+ for (Map.Entry entry : jsonObj.entrySet()) {
+ if (!openapiFields.contains(entry.getKey())) {
+ if (entry.getValue().isJsonPrimitive()) { // primitive type
+ if (entry.getValue().getAsJsonPrimitive().isString())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
+ else if (entry.getValue().getAsJsonPrimitive().isNumber())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
+ else if (entry.getValue().getAsJsonPrimitive().isBoolean())
+ instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
+ else
+ throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
+ } else if (entry.getValue().isJsonArray()) {
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), List.class));
+ } else { // JSON object
+ instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
+ }
+ }
+ }
+ return instance;
+ }
+
+ }.nullSafe();
+ }
+ }
+
+ /**
+ * Create an instance of RevertOutputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of RevertOutputBody
+ * @throws IOException if the JSON string is invalid with respect to RevertOutputBody
+ */
+ public static RevertOutputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, RevertOutputBody.class);
+ }
+
+ /**
+ * Convert an instance of RevertOutputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+