diff --git a/.sdk-version b/.sdk-version
index 723fa07..637d249 100644
--- a/.sdk-version
+++ b/.sdk-version
@@ -1 +1 @@
-v3.96.2
+v3.96.3
diff --git a/README.md b/README.md
index 51620ae..170e860 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ Add this dependency to your project's POM:
ai.reveng
sdk
- 3.96.2
+ 3.96.3
compile
```
@@ -31,7 +31,7 @@ repositories {
}
dependencies {
- implementation "ai.reveng:sdk:3.96.2"
+ implementation "ai.reveng:sdk:3.96.3"
}
```
@@ -222,6 +222,8 @@ Class | Method | HTTP request | Description
*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
+*IamUsersApi* | [**getMe**](docs/IamUsersApi.md#getMe) | **GET** /v2/iam/me | Get current user
+*IamUsersApi* | [**getMyPermissions**](docs/IamUsersApi.md#getMyPermissions) | **GET** /v2/iam/me/permissions | Get current user permissions
*ModelsApi* | [**getModels**](docs/ModelsApi.md#getModels) | **GET** /v2/models | Gets models
*ReportsApi* | [**createPdfReport**](docs/ReportsApi.md#createPdfReport) | **POST** /v3/analyses/{analysis_id}/pdf | Start PDF report generation
*ReportsApi* | [**downloadPdfReport**](docs/ReportsApi.md#downloadPdfReport) | **GET** /v3/analyses/{analysis_id}/pdf | Download generated PDF report
@@ -239,6 +241,9 @@ Class | Method | HTTP request | Description
- [AIDecompInverseStringMapItem](docs/AIDecompInverseStringMapItem.md)
- [APIError](docs/APIError.md)
- [AddCalleeInputBody](docs/AddCalleeInputBody.md)
+ - [AddIssuerDomainInputBody](docs/AddIssuerDomainInputBody.md)
+ - [AddOwnerInputBody](docs/AddOwnerInputBody.md)
+ - [AddTeamMemberInputBody](docs/AddTeamMemberInputBody.md)
- [AddUserStringInputBody](docs/AddUserStringInputBody.md)
- [AddUserStringToFunctionInputBody](docs/AddUserStringToFunctionInputBody.md)
- [AdditionalDetailsStatusResponse](docs/AdditionalDetailsStatusResponse.md)
@@ -372,6 +377,8 @@ Class | Method | HTTP request | Description
- [BinarySearchResponse](docs/BinarySearchResponse.md)
- [BinarySearchResult](docs/BinarySearchResult.md)
- [BinaryTaskStatus](docs/BinaryTaskStatus.md)
+ - [BulkCreateUserResult](docs/BulkCreateUserResult.md)
+ - [BulkCreateUsersOutputBody](docs/BulkCreateUsersOutputBody.md)
- [BulkDeleteAnalysesRequest](docs/BulkDeleteAnalysesRequest.md)
- [CallEdge](docs/CallEdge.md)
- [CallEdgesOutputBody](docs/CallEdgesOutputBody.md)
@@ -415,7 +422,13 @@ Class | Method | HTTP request | Description
- [CreateCollectionInputBody](docs/CreateCollectionInputBody.md)
- [CreateCollectionOutputBody](docs/CreateCollectionOutputBody.md)
- [CreateConversationRequest](docs/CreateConversationRequest.md)
+ - [CreateGroupInputBody](docs/CreateGroupInputBody.md)
+ - [CreateIdentityInputBody](docs/CreateIdentityInputBody.md)
+ - [CreateIssuerInputBody](docs/CreateIssuerInputBody.md)
+ - [CreateOrganisationInputBody](docs/CreateOrganisationInputBody.md)
- [CreatePortalSessionInputBody](docs/CreatePortalSessionInputBody.md)
+ - [CreateTeamInputBody](docs/CreateTeamInputBody.md)
+ - [CreateUserInputBody](docs/CreateUserInputBody.md)
- [Created](docs/Created.md)
- [DataTypesEntry](docs/DataTypesEntry.md)
- [DecompFailedEvent](docs/DecompFailedEvent.md)
@@ -474,6 +487,7 @@ Class | Method | HTTP request | Description
- [FileHashes](docs/FileHashes.md)
- [FileMetadata](docs/FileMetadata.md)
- [Filters](docs/Filters.md)
+ - [FormFile](docs/FormFile.md)
- [FuncDepsInner](docs/FuncDepsInner.md)
- [FunctionArgument](docs/FunctionArgument.md)
- [FunctionBlockDestinationResponse](docs/FunctionBlockDestinationResponse.md)
@@ -534,6 +548,8 @@ Class | Method | HTTP request | Description
- [ImportModel](docs/ImportModel.md)
- [InlineComment](docs/InlineComment.md)
- [InsertAnalysisLogRequest](docs/InsertAnalysisLogRequest.md)
+ - [InviteUserInputBody](docs/InviteUserInputBody.md)
+ - [IssuerAllowedDomain](docs/IssuerAllowedDomain.md)
- [ListAnalysisFunctionsDataTypesOutputBody](docs/ListAnalysisFunctionsDataTypesOutputBody.md)
- [ListAnalysisFunctionsOutputBody](docs/ListAnalysisFunctionsOutputBody.md)
- [ListAnalysisStringsOutputBody](docs/ListAnalysisStringsOutputBody.md)
@@ -541,12 +557,16 @@ Class | Method | HTTP request | Description
- [ListCollectionsOutputBody](docs/ListCollectionsOutputBody.md)
- [ListFunctionStringsOutputBody](docs/ListFunctionStringsOutputBody.md)
- [ListFunctionsDataTypesOutputBody](docs/ListFunctionsDataTypesOutputBody.md)
+ - [ListTeamsOutputBody](docs/ListTeamsOutputBody.md)
+ - [ListUsersOutputBody](docs/ListUsersOutputBody.md)
+ - [LocationOutputBody](docs/LocationOutputBody.md)
- [Logs](docs/Logs.md)
- [MITRETechnique](docs/MITRETechnique.md)
- [MatchFilters](docs/MatchFilters.md)
- [MatchedFunction](docs/MatchedFunction.md)
- [MatchedFunctionSuggestion](docs/MatchedFunctionSuggestion.md)
- [MemdumpEntry](docs/MemdumpEntry.md)
+ - [MessageBody](docs/MessageBody.md)
- [MetaModel](docs/MetaModel.md)
- [ModelName](docs/ModelName.md)
- [ModelsResponse](docs/ModelsResponse.md)
@@ -555,11 +575,17 @@ Class | Method | HTTP request | Description
- [NameConfidence](docs/NameConfidence.md)
- [NameSourceType](docs/NameSourceType.md)
- [NetworkActivity](docs/NetworkActivity.md)
+ - [OIDCCallbackInputBody](docs/OIDCCallbackInputBody.md)
- [Order](docs/Order.md)
+ - [Organisation](docs/Organisation.md)
+ - [OrganisationGroup](docs/OrganisationGroup.md)
+ - [OrganisationIssuer](docs/OrganisationIssuer.md)
+ - [OrganisationOwner](docs/OrganisationOwner.md)
- [PDBDebugModel](docs/PDBDebugModel.md)
- [PEModel](docs/PEModel.md)
- [PaginationModel](docs/PaginationModel.md)
- [Params](docs/Params.md)
+ - [PasswordResetInputBody](docs/PasswordResetInputBody.md)
- [PatchCollectionBinariesInputBody](docs/PatchCollectionBinariesInputBody.md)
- [PatchCollectionBinariesOutputBody](docs/PatchCollectionBinariesOutputBody.md)
- [PatchCollectionInputBody](docs/PatchCollectionInputBody.md)
@@ -568,6 +594,7 @@ Class | Method | HTTP request | Description
- [PatchCollectionTagsOutputBody](docs/PatchCollectionTagsOutputBody.md)
- [PatchCommentBody](docs/PatchCommentBody.md)
- [PcapBodyInfo](docs/PcapBodyInfo.md)
+ - [Permissions](docs/Permissions.md)
- [Platform](docs/Platform.md)
- [PriceOutput](docs/PriceOutput.md)
- [PriceSummary](docs/PriceSummary.md)
@@ -583,7 +610,9 @@ Class | Method | HTTP request | Description
- [QueuedWorkflowTaskResponse](docs/QueuedWorkflowTaskResponse.md)
- [ReAnalysisForm](docs/ReAnalysisForm.md)
- [Recent](docs/Recent.md)
+ - [RefreshBody](docs/RefreshBody.md)
- [RegenerateOutputBody](docs/RegenerateOutputBody.md)
+ - [RegisterUserInputBody](docs/RegisterUserInputBody.md)
- [RegistryOperation](docs/RegistryOperation.md)
- [RelativeBinaryResponse](docs/RelativeBinaryResponse.md)
- [RenameAppliedEvent](docs/RenameAppliedEvent.md)
@@ -594,8 +623,11 @@ Class | Method | HTTP request | Description
- [ReportEvent](docs/ReportEvent.md)
- [ReportInfo](docs/ReportInfo.md)
- [ReportOptions](docs/ReportOptions.md)
+ - [RevokeBody](docs/RevokeBody.md)
- [SBOM](docs/SBOM.md)
- [SBOMPackage](docs/SBOMPackage.md)
+ - [SSOProvider](docs/SSOProvider.md)
+ - [SSOProvidersOutputBody](docs/SSOProvidersOutputBody.md)
- [SandboxOptions](docs/SandboxOptions.md)
- [SandboxStartMethod](docs/SandboxStartMethod.md)
- [SandboxTimeout](docs/SandboxTimeout.md)
@@ -656,7 +688,11 @@ Class | Method | HTTP request | Description
- [TaskStatus](docs/TaskStatus.md)
- [TaskStatusResponse](docs/TaskStatusResponse.md)
- [TcpCarvedFile](docs/TcpCarvedFile.md)
+ - [Team](docs/Team.md)
+ - [TeamMember](docs/TeamMember.md)
- [TimestampModel](docs/TimestampModel.md)
+ - [TokenInputBody](docs/TokenInputBody.md)
+ - [TokenResponse](docs/TokenResponse.md)
- [TokenisedData](docs/TokenisedData.md)
- [TriageFunctionResponse](docs/TriageFunctionResponse.md)
- [TriageReportResponse](docs/TriageReportResponse.md)
@@ -665,12 +701,24 @@ Class | Method | HTTP request | Description
- [TypeDefinition](docs/TypeDefinition.md)
- [UpdateDataTypesInputBody](docs/UpdateDataTypesInputBody.md)
- [UpdateDataTypesOutputBody](docs/UpdateDataTypesOutputBody.md)
+ - [UpdateIssuerInputBody](docs/UpdateIssuerInputBody.md)
+ - [UpdateOrganisationInputBody](docs/UpdateOrganisationInputBody.md)
+ - [UpdatePasswordInputBody](docs/UpdatePasswordInputBody.md)
+ - [UpdateProfileInputBody](docs/UpdateProfileInputBody.md)
+ - [UpdateTeamInputBody](docs/UpdateTeamInputBody.md)
+ - [UpdateUserCreditsInputBody](docs/UpdateUserCreditsInputBody.md)
+ - [UpdateUserInputBody](docs/UpdateUserInputBody.md)
+ - [UpdateUserPasswordInputBody](docs/UpdateUserPasswordInputBody.md)
- [UploadFileType](docs/UploadFileType.md)
- [UploadResponse](docs/UploadResponse.md)
- [UpsertAiDecomplationRatingRequest](docs/UpsertAiDecomplationRatingRequest.md)
- [UpsertOverridesData](docs/UpsertOverridesData.md)
- [UpsertOverridesInputBody](docs/UpsertOverridesInputBody.md)
+ - [User](docs/User.md)
- [UserActivityResponse](docs/UserActivityResponse.md)
+ - [UserCredits](docs/UserCredits.md)
+ - [UserIdentity](docs/UserIdentity.md)
+ - [UserProfile](docs/UserProfile.md)
- [Vulnerabilities](docs/Vulnerabilities.md)
- [Vulnerability](docs/Vulnerability.md)
- [WarningEvent](docs/WarningEvent.md)
diff --git a/build.gradle b/build.gradle
index 3d77d8d..fad16c6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -19,7 +19,7 @@ apply plugin: 'java'
apply plugin: 'com.diffplug.spotless'
group = 'ai.reveng'
-version = '3.96.2'
+version = '3.96.3'
@@ -171,7 +171,7 @@ mavenPublishing {
publishToMavenCentral(true)
signAllPublications()
- coordinates("ai.reveng", "sdk", "3.96.2")
+ coordinates("ai.reveng", "sdk", "3.96.3")
pom {
name = "sdk"
diff --git a/build.sbt b/build.sbt
index 5231f16..6635987 100644
--- a/build.sbt
+++ b/build.sbt
@@ -2,7 +2,7 @@ lazy val root = (project in file(".")).
settings(
organization := "ai.reveng",
name := "sdk",
- version := "3.96.2",
+ version := "3.96.3",
scalaVersion := "2.11.12",
scalacOptions ++= Seq("-feature"),
compile / javacOptions ++= Seq("-Xlint:deprecation"),
diff --git a/docs/AddIssuerDomainInputBody.md b/docs/AddIssuerDomainInputBody.md
new file mode 100644
index 0000000..86fad0d
--- /dev/null
+++ b/docs/AddIssuerDomainInputBody.md
@@ -0,0 +1,13 @@
+
+
+# AddIssuerDomainInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**domain** | **String** | Email domain to allow (e.g. acme.com) | |
+
+
+
diff --git a/docs/AddOwnerInputBody.md b/docs/AddOwnerInputBody.md
new file mode 100644
index 0000000..eda7224
--- /dev/null
+++ b/docs/AddOwnerInputBody.md
@@ -0,0 +1,13 @@
+
+
+# AddOwnerInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**userId** | **Long** | User ID to add as owner | |
+
+
+
diff --git a/docs/AddTeamMemberInputBody.md b/docs/AddTeamMemberInputBody.md
new file mode 100644
index 0000000..833329e
--- /dev/null
+++ b/docs/AddTeamMemberInputBody.md
@@ -0,0 +1,13 @@
+
+
+# AddTeamMemberInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**userId** | **Long** | User ID to add | |
+
+
+
diff --git a/docs/BulkCreateUserResult.md b/docs/BulkCreateUserResult.md
new file mode 100644
index 0000000..33201dc
--- /dev/null
+++ b/docs/BulkCreateUserResult.md
@@ -0,0 +1,18 @@
+
+
+# BulkCreateUserResult
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**email** | **String** | Search is applied to string value | |
+|**error** | **String** | Error description; present on failure | [optional] |
+|**index** | **Long** | 1-based row index in the CSV | |
+|**success** | **Boolean** | | |
+|**user** | [**User**](User.md) | Created user; present on success | [optional] |
+|**username** | **String** | Search is applied to string value | |
+
+
+
diff --git a/docs/BulkCreateUsersOutputBody.md b/docs/BulkCreateUsersOutputBody.md
new file mode 100644
index 0000000..a8e6c6e
--- /dev/null
+++ b/docs/BulkCreateUsersOutputBody.md
@@ -0,0 +1,16 @@
+
+
+# BulkCreateUsersOutputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**failed** | **Long** | | |
+|**results** | [**List<BulkCreateUserResult>**](BulkCreateUserResult.md) | | |
+|**succeeded** | **Long** | | |
+|**total** | **Long** | | |
+
+
+
diff --git a/docs/CreateGroupInputBody.md b/docs/CreateGroupInputBody.md
new file mode 100644
index 0000000..8c86b51
--- /dev/null
+++ b/docs/CreateGroupInputBody.md
@@ -0,0 +1,13 @@
+
+
+# CreateGroupInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**name** | **String** | Group name | |
+
+
+
diff --git a/docs/CreateIdentityInputBody.md b/docs/CreateIdentityInputBody.md
new file mode 100644
index 0000000..e637339
--- /dev/null
+++ b/docs/CreateIdentityInputBody.md
@@ -0,0 +1,15 @@
+
+
+# CreateIdentityInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**issuerUrl** | **String** | Issuer URL (must be trusted by this organisation) | |
+|**subject** | **String** | External subject identifier from the issuer | |
+|**userId** | **Long** | Internal user ID to link | |
+
+
+
diff --git a/docs/CreateIssuerInputBody.md b/docs/CreateIssuerInputBody.md
new file mode 100644
index 0000000..4270b53
--- /dev/null
+++ b/docs/CreateIssuerInputBody.md
@@ -0,0 +1,14 @@
+
+
+# CreateIssuerInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**clientId** | **String** | OIDC client ID for audience validation (recommended) | [optional] |
+|**issuerUrl** | **String** | OIDC issuer URL to trust | |
+
+
+
diff --git a/docs/CreateOrganisationInputBody.md b/docs/CreateOrganisationInputBody.md
new file mode 100644
index 0000000..2e8659c
--- /dev/null
+++ b/docs/CreateOrganisationInputBody.md
@@ -0,0 +1,13 @@
+
+
+# CreateOrganisationInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**name** | **String** | Organisation name | |
+
+
+
diff --git a/docs/CreateTeamInputBody.md b/docs/CreateTeamInputBody.md
new file mode 100644
index 0000000..e324853
--- /dev/null
+++ b/docs/CreateTeamInputBody.md
@@ -0,0 +1,13 @@
+
+
+# CreateTeamInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**name** | **String** | Team name | |
+
+
+
diff --git a/docs/CreateUserInputBody.md b/docs/CreateUserInputBody.md
new file mode 100644
index 0000000..1ca3176
--- /dev/null
+++ b/docs/CreateUserInputBody.md
@@ -0,0 +1,45 @@
+
+
+# CreateUserInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**credits** | **Long** | Initial credit balance in credits (1 credit = 1000 units); defaults to 10 credits | [optional] |
+|**email** | **String** | Email address | |
+|**firstName** | **String** | First name | [optional] |
+|**lastName** | **String** | Last name | [optional] |
+|**password** | **String** | Initial password | |
+|**role** | [**RoleEnum**](#RoleEnum) | User role (defaults to USER) | [optional] |
+|**tier** | [**TierEnum**](#TierEnum) | User tier (defaults to ENTHUSIAST) | [optional] |
+|**timeZone** | **String** | IANA time zone | [optional] |
+|**username** | **String** | Username | |
+
+
+
+## Enum: RoleEnum
+
+| Name | Value |
+|---- | -----|
+| USER | "USER" |
+| ADMIN | "ADMIN" |
+| SUPERADMIN | "SUPERADMIN" |
+| UNKNOWN_DEFAULT_OPEN_API | "unknown_default_open_api" |
+
+
+
+## Enum: TierEnum
+
+| Name | Value |
+|---- | -----|
+| ENTHUSIAST | "ENTHUSIAST" |
+| REVERSER | "REVERSER" |
+| BUG_HUNTER | "BUG_HUNTER" |
+| MALWARE_ANALYST | "MALWARE_ANALYST" |
+| SECURITY_RESEARCHER | "SECURITY_RESEARCHER" |
+| UNKNOWN_DEFAULT_OPEN_API | "unknown_default_open_api" |
+
+
+
diff --git a/docs/FormFile.md b/docs/FormFile.md
new file mode 100644
index 0000000..5dad580
--- /dev/null
+++ b/docs/FormFile.md
@@ -0,0 +1,16 @@
+
+
+# FormFile
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**contentType** | **String** | Search is applied to string value | |
+|**filename** | **String** | Search is applied to string value | |
+|**isSet** | **Boolean** | | |
+|**size** | **Long** | | |
+
+
+
diff --git a/docs/IamUsersApi.md b/docs/IamUsersApi.md
new file mode 100644
index 0000000..4d851bf
--- /dev/null
+++ b/docs/IamUsersApi.md
@@ -0,0 +1,143 @@
+# IamUsersApi
+
+All URIs are relative to *https://api.reveng.ai*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**getMe**](IamUsersApi.md#getMe) | **GET** /v2/iam/me | Get current user |
+| [**getMyPermissions**](IamUsersApi.md#getMyPermissions) | **GET** /v2/iam/me/permissions | Get current user permissions |
+
+
+
+# **getMe**
+> User getMe()
+
+Get current user
+
+Returns the authenticated user's own information. **Error codes:** - `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.IamUsersApi;
+
+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");
+
+ IamUsersApi apiInstance = new IamUsersApi(defaultClient);
+ try {
+ User result = apiInstance.getMe();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling IamUsersApi#getMe");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**User**](User.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 | - |
+| **404** | Not Found | - |
+| **500** | Internal Server Error | - |
+
+
+# **getMyPermissions**
+> Permissions getMyPermissions()
+
+Get current user permissions
+
+Returns the feature permissions granted to the authenticated user based on their subscription tier. Use this as the single source of truth for feature gating across web, CLI, and plugin clients.
+
+### 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.IamUsersApi;
+
+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");
+
+ IamUsersApi apiInstance = new IamUsersApi(defaultClient);
+ try {
+ Permissions result = apiInstance.getMyPermissions();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling IamUsersApi#getMyPermissions");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**Permissions**](Permissions.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 | - |
+| **0** | Error | - |
+
diff --git a/docs/InviteUserInputBody.md b/docs/InviteUserInputBody.md
new file mode 100644
index 0000000..18647f1
--- /dev/null
+++ b/docs/InviteUserInputBody.md
@@ -0,0 +1,18 @@
+
+
+# InviteUserInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**credits** | **Long** | Initial credit balance for the invited user in raw units (1 credit = 1000 units). | |
+|**email** | **String** | Email address to invite | |
+|**firstName** | **String** | First name included in the invite email and registration URL | |
+|**lastName** | **String** | Last name pre-filled in the registration URL | [optional] |
+|**teamId** | **Long** | Team to assign the invited user to | [optional] |
+|**username** | **String** | Username pre-filled in the registration URL | [optional] |
+
+
+
diff --git a/docs/IssuerAllowedDomain.md b/docs/IssuerAllowedDomain.md
new file mode 100644
index 0000000..e9d3af8
--- /dev/null
+++ b/docs/IssuerAllowedDomain.md
@@ -0,0 +1,18 @@
+
+
+# IssuerAllowedDomain
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**challengeToken** | **String** | DNS TXT challenge token. Add a TXT record at _reveng-verification.<domain> with this value. | [optional] |
+|**createdAt** | **OffsetDateTime** | | |
+|**domain** | **String** | Email domain (e.g. acme.com) | |
+|**issuerAllowedDomainId** | **Long** | | |
+|**organisationIssuerId** | **Long** | | |
+|**verificationStatus** | **String** | Domain ownership verification status: PENDING, VERIFIED, or FAILED | |
+
+
+
diff --git a/docs/ListTeamsOutputBody.md b/docs/ListTeamsOutputBody.md
new file mode 100644
index 0000000..eacedc1
--- /dev/null
+++ b/docs/ListTeamsOutputBody.md
@@ -0,0 +1,14 @@
+
+
+# ListTeamsOutputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**teams** | [**List<Team>**](Team.md) | | |
+|**total** | **Long** | | |
+
+
+
diff --git a/docs/ListUsersOutputBody.md b/docs/ListUsersOutputBody.md
new file mode 100644
index 0000000..d66a4e9
--- /dev/null
+++ b/docs/ListUsersOutputBody.md
@@ -0,0 +1,14 @@
+
+
+# ListUsersOutputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**total** | **Long** | | |
+|**users** | [**List<User>**](User.md) | | |
+
+
+
diff --git a/docs/LocationOutputBody.md b/docs/LocationOutputBody.md
new file mode 100644
index 0000000..2f791b3
--- /dev/null
+++ b/docs/LocationOutputBody.md
@@ -0,0 +1,28 @@
+
+
+# LocationOutputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**country** | **String** | Country name | |
+|**countryCode** | **String** | ISO 3166-1 alpha-2 country code | |
+|**currency** | [**CurrencyEnum**](#CurrencyEnum) | Currency code for this location | |
+
+
+
+## Enum: CurrencyEnum
+
+| Name | Value |
+|---- | -----|
+| USD | "USD" |
+| EUR | "EUR" |
+| GBP | "GBP" |
+| CAD | "CAD" |
+| AUD | "AUD" |
+| UNKNOWN_DEFAULT_OPEN_API | "unknown_default_open_api" |
+
+
+
diff --git a/docs/MessageBody.md b/docs/MessageBody.md
new file mode 100644
index 0000000..74f08c9
--- /dev/null
+++ b/docs/MessageBody.md
@@ -0,0 +1,13 @@
+
+
+# MessageBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**message** | **String** | Human-readable status message | |
+
+
+
diff --git a/docs/OIDCCallbackInputBody.md b/docs/OIDCCallbackInputBody.md
new file mode 100644
index 0000000..99630d4
--- /dev/null
+++ b/docs/OIDCCallbackInputBody.md
@@ -0,0 +1,16 @@
+
+
+# OIDCCallbackInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**code** | **String** | Authorization code from the identity provider | |
+|**codeVerifier** | **String** | PKCE code verifier (the raw secret, not the challenge) | |
+|**issuer** | **String** | OIDC issuer URL (as returned by the SSO providers endpoint) | |
+|**redirectUri** | **String** | Redirect URI used when initiating the authorization request; must match exactly | |
+
+
+
diff --git a/docs/Organisation.md b/docs/Organisation.md
new file mode 100644
index 0000000..e9d1a99
--- /dev/null
+++ b/docs/Organisation.md
@@ -0,0 +1,16 @@
+
+
+# Organisation
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**createdAt** | **OffsetDateTime** | | |
+|**name** | **String** | Search is applied to string value | |
+|**organisationId** | **Long** | | |
+|**updatedAt** | **OffsetDateTime** | | |
+
+
+
diff --git a/docs/OrganisationGroup.md b/docs/OrganisationGroup.md
new file mode 100644
index 0000000..b584747
--- /dev/null
+++ b/docs/OrganisationGroup.md
@@ -0,0 +1,18 @@
+
+
+# OrganisationGroup
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**createdAt** | **OffsetDateTime** | | |
+|**name** | **String** | Search is applied to string value | |
+|**organisationGroupId** | **Long** | | |
+|**organisationId** | **Long** | | |
+|**teamId** | **Long** | | |
+|**updatedAt** | **OffsetDateTime** | | |
+
+
+
diff --git a/docs/OrganisationIssuer.md b/docs/OrganisationIssuer.md
new file mode 100644
index 0000000..0e55e83
--- /dev/null
+++ b/docs/OrganisationIssuer.md
@@ -0,0 +1,20 @@
+
+
+# OrganisationIssuer
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**clientId** | **String** | OIDC client ID registered with the identity provider. Used to validate the audience (aud) claim in JWTs. | [optional] |
+|**createdAt** | **OffsetDateTime** | | |
+|**enabled** | **Boolean** | | |
+|**issuerUrl** | **String** | Search is applied to string value | |
+|**jwksUri** | **String** | JSON Web Key Set URI discovered from the issuer's OIDC configuration. Populated automatically during issuer registration. | [optional] |
+|**organisationId** | **Long** | | |
+|**organisationIssuerId** | **Long** | | |
+|**updatedAt** | **OffsetDateTime** | | |
+
+
+
diff --git a/docs/OrganisationOwner.md b/docs/OrganisationOwner.md
new file mode 100644
index 0000000..b93ed15
--- /dev/null
+++ b/docs/OrganisationOwner.md
@@ -0,0 +1,16 @@
+
+
+# OrganisationOwner
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**createdAt** | **OffsetDateTime** | | |
+|**organisationId** | **Long** | | |
+|**organisationOwnerId** | **Long** | | |
+|**userId** | **Long** | | |
+
+
+
diff --git a/docs/PasswordResetInputBody.md b/docs/PasswordResetInputBody.md
new file mode 100644
index 0000000..8441d2e
--- /dev/null
+++ b/docs/PasswordResetInputBody.md
@@ -0,0 +1,13 @@
+
+
+# PasswordResetInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**email** | **String** | Email address of the account whose password should be reset | |
+
+
+
diff --git a/docs/Permissions.md b/docs/Permissions.md
new file mode 100644
index 0000000..917e475
--- /dev/null
+++ b/docs/Permissions.md
@@ -0,0 +1,17 @@
+
+
+# Permissions
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**canExportSymbols** | **Boolean** | | |
+|**canGeneratePdfReports** | **Boolean** | | |
+|**canUseAiMalwareAnalysis** | **Boolean** | | |
+|**canUseMalwareSandbox** | **Boolean** | | |
+|**canUsePrivateAnalyses** | **Boolean** | | |
+
+
+
diff --git a/docs/RefreshBody.md b/docs/RefreshBody.md
new file mode 100644
index 0000000..b0a5ece
--- /dev/null
+++ b/docs/RefreshBody.md
@@ -0,0 +1,13 @@
+
+
+# RefreshBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**refreshToken** | **String** | The refresh token to rotate (falls back to refresh_token cookie if omitted) | [optional] |
+
+
+
diff --git a/docs/RegisterUserInputBody.md b/docs/RegisterUserInputBody.md
new file mode 100644
index 0000000..dfd6602
--- /dev/null
+++ b/docs/RegisterUserInputBody.md
@@ -0,0 +1,18 @@
+
+
+# RegisterUserInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**email** | **String** | Email address | |
+|**firstName** | **String** | First name | |
+|**inviteCode** | **String** | Invite code from the registration email | [optional] |
+|**lastName** | **String** | Last name | |
+|**password** | **String** | Password (minimum 10 characters) | |
+|**username** | **String** | Username | |
+
+
+
diff --git a/docs/RevokeBody.md b/docs/RevokeBody.md
new file mode 100644
index 0000000..881ab6a
--- /dev/null
+++ b/docs/RevokeBody.md
@@ -0,0 +1,13 @@
+
+
+# RevokeBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**refreshToken** | **String** | The refresh token to revoke (falls back to refresh_token cookie if omitted) | [optional] |
+
+
+
diff --git a/docs/SSOProvider.md b/docs/SSOProvider.md
new file mode 100644
index 0000000..6f30e80
--- /dev/null
+++ b/docs/SSOProvider.md
@@ -0,0 +1,14 @@
+
+
+# SSOProvider
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**authUrl** | **String** | Base authorization URL. Append code_challenge, code_challenge_method, redirect_uri, and state query parameters to complete the PKCE flow. | |
+|**issuer** | **String** | Issuer URL of the identity provider. Pass this value as the issuer field in the SSO callback request. | |
+
+
+
diff --git a/docs/SSOProvidersOutputBody.md b/docs/SSOProvidersOutputBody.md
new file mode 100644
index 0000000..a301751
--- /dev/null
+++ b/docs/SSOProvidersOutputBody.md
@@ -0,0 +1,13 @@
+
+
+# SSOProvidersOutputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**providers** | [**List<SSOProvider>**](SSOProvider.md) | | |
+
+
+
diff --git a/docs/Team.md b/docs/Team.md
new file mode 100644
index 0000000..e836ea0
--- /dev/null
+++ b/docs/Team.md
@@ -0,0 +1,28 @@
+
+
+# Team
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**organisationId** | **Long** | Organisation this team belongs to, if any | [optional] |
+|**plan** | [**PlanEnum**](#PlanEnum) | | |
+|**teamId** | **Long** | | |
+|**teamName** | **String** | | |
+
+
+
+## Enum: PlanEnum
+
+| Name | Value |
+|---- | -----|
+| FREE | "Free" |
+| INDIVIDUAL | "Individual" |
+| TESTER | "Tester" |
+| ORGANISATION | "Organisation" |
+| UNKNOWN_DEFAULT_OPEN_API | "unknown_default_open_api" |
+
+
+
diff --git a/docs/TeamMember.md b/docs/TeamMember.md
new file mode 100644
index 0000000..a9ee3a3
--- /dev/null
+++ b/docs/TeamMember.md
@@ -0,0 +1,29 @@
+
+
+# TeamMember
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**email** | **String** | Search is applied to string value | |
+|**isAdmin** | **Boolean** | | |
+|**role** | [**RoleEnum**](#RoleEnum) | | |
+|**userId** | **Long** | | |
+|**username** | **String** | Search is applied to string value | |
+
+
+
+## Enum: RoleEnum
+
+| Name | Value |
+|---- | -----|
+| USER | "USER" |
+| ADMIN | "ADMIN" |
+| SUPERADMIN | "SUPERADMIN" |
+| SYSTEM | "SYSTEM" |
+| UNKNOWN_DEFAULT_OPEN_API | "unknown_default_open_api" |
+
+
+
diff --git a/docs/TokenInputBody.md b/docs/TokenInputBody.md
new file mode 100644
index 0000000..32b9d69
--- /dev/null
+++ b/docs/TokenInputBody.md
@@ -0,0 +1,16 @@
+
+
+# TokenInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**apiKey** | **String** | API key to exchange for a JWT | [optional] |
+|**email** | **String** | User email address (required with password) | [optional] |
+|**password** | **String** | User password (required with email or username) | [optional] |
+|**username** | **String** | Username (alternative to email, required with password) | [optional] |
+
+
+
diff --git a/docs/TokenResponse.md b/docs/TokenResponse.md
new file mode 100644
index 0000000..9f0aee0
--- /dev/null
+++ b/docs/TokenResponse.md
@@ -0,0 +1,16 @@
+
+
+# TokenResponse
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**accessToken** | **String** | Signed JWT access token | |
+|**expiresIn** | **Long** | Access token lifetime in seconds | |
+|**refreshToken** | **String** | Opaque refresh token for obtaining new access tokens | |
+|**tokenType** | **String** | Token type (always Bearer) | |
+
+
+
diff --git a/docs/UpdateIssuerInputBody.md b/docs/UpdateIssuerInputBody.md
new file mode 100644
index 0000000..50b9596
--- /dev/null
+++ b/docs/UpdateIssuerInputBody.md
@@ -0,0 +1,13 @@
+
+
+# UpdateIssuerInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**enabled** | **Boolean** | Whether the issuer is enabled | |
+
+
+
diff --git a/docs/UpdateOrganisationInputBody.md b/docs/UpdateOrganisationInputBody.md
new file mode 100644
index 0000000..1ab8012
--- /dev/null
+++ b/docs/UpdateOrganisationInputBody.md
@@ -0,0 +1,13 @@
+
+
+# UpdateOrganisationInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**name** | **String** | New organisation name | |
+
+
+
diff --git a/docs/UpdatePasswordInputBody.md b/docs/UpdatePasswordInputBody.md
new file mode 100644
index 0000000..42739c8
--- /dev/null
+++ b/docs/UpdatePasswordInputBody.md
@@ -0,0 +1,14 @@
+
+
+# UpdatePasswordInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**code** | **String** | Password reset code received by email | |
+|**password** | **String** | New password (minimum 10 characters) | |
+
+
+
diff --git a/docs/UpdateProfileInputBody.md b/docs/UpdateProfileInputBody.md
new file mode 100644
index 0000000..0b14a29
--- /dev/null
+++ b/docs/UpdateProfileInputBody.md
@@ -0,0 +1,17 @@
+
+
+# UpdateProfileInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**defaultTeamId** | **Long** | Default team ID | [optional] |
+|**firstName** | **String** | First name | [optional] |
+|**lastName** | **String** | Last name | [optional] |
+|**timeZone** | **String** | IANA time zone | [optional] |
+|**username** | **String** | Username | [optional] |
+
+
+
diff --git a/docs/UpdateTeamInputBody.md b/docs/UpdateTeamInputBody.md
new file mode 100644
index 0000000..ef82058
--- /dev/null
+++ b/docs/UpdateTeamInputBody.md
@@ -0,0 +1,13 @@
+
+
+# UpdateTeamInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**teamName** | **String** | Team name | [optional] |
+
+
+
diff --git a/docs/UpdateUserCreditsInputBody.md b/docs/UpdateUserCreditsInputBody.md
new file mode 100644
index 0000000..0c863ba
--- /dev/null
+++ b/docs/UpdateUserCreditsInputBody.md
@@ -0,0 +1,13 @@
+
+
+# UpdateUserCreditsInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**credits** | **Long** | Credit balance to set | |
+
+
+
diff --git a/docs/UpdateUserInputBody.md b/docs/UpdateUserInputBody.md
new file mode 100644
index 0000000..9e194cc
--- /dev/null
+++ b/docs/UpdateUserInputBody.md
@@ -0,0 +1,43 @@
+
+
+# UpdateUserInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**email** | **String** | Email address | [optional] |
+|**firstName** | **String** | First name | [optional] |
+|**lastName** | **String** | Last name | [optional] |
+|**role** | [**RoleEnum**](#RoleEnum) | User role (SUPERADMIN only) | [optional] |
+|**tier** | [**TierEnum**](#TierEnum) | User tier (SUPERADMIN only) | [optional] |
+|**timeZone** | **String** | IANA time zone | [optional] |
+|**username** | **String** | Username | [optional] |
+
+
+
+## Enum: RoleEnum
+
+| Name | Value |
+|---- | -----|
+| USER | "USER" |
+| ADMIN | "ADMIN" |
+| SUPERADMIN | "SUPERADMIN" |
+| UNKNOWN_DEFAULT_OPEN_API | "unknown_default_open_api" |
+
+
+
+## Enum: TierEnum
+
+| Name | Value |
+|---- | -----|
+| ENTHUSIAST | "ENTHUSIAST" |
+| REVERSER | "REVERSER" |
+| BUG_HUNTER | "BUG_HUNTER" |
+| MALWARE_ANALYST | "MALWARE_ANALYST" |
+| SECURITY_RESEARCHER | "SECURITY_RESEARCHER" |
+| UNKNOWN_DEFAULT_OPEN_API | "unknown_default_open_api" |
+
+
+
diff --git a/docs/UpdateUserPasswordInputBody.md b/docs/UpdateUserPasswordInputBody.md
new file mode 100644
index 0000000..3729829
--- /dev/null
+++ b/docs/UpdateUserPasswordInputBody.md
@@ -0,0 +1,14 @@
+
+
+# UpdateUserPasswordInputBody
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**currentPassword** | **String** | Current password (required when changing your own password; ignored for SUPERADMIN updates of other users) | [optional] |
+|**newPassword** | **String** | New password (minimum 10 characters) | |
+
+
+
diff --git a/docs/User.md b/docs/User.md
new file mode 100644
index 0000000..5ec80da
--- /dev/null
+++ b/docs/User.md
@@ -0,0 +1,43 @@
+
+
+# User
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**createdAt** | **OffsetDateTime** | | [optional] |
+|**email** | **String** | | |
+|**profile** | [**UserProfile**](UserProfile.md) | | |
+|**role** | [**RoleEnum**](#RoleEnum) | | |
+|**tier** | [**TierEnum**](#TierEnum) | | [optional] |
+|**userId** | **Long** | | |
+
+
+
+## Enum: RoleEnum
+
+| Name | Value |
+|---- | -----|
+| USER | "USER" |
+| ADMIN | "ADMIN" |
+| SUPERADMIN | "SUPERADMIN" |
+| SYSTEM | "SYSTEM" |
+| UNKNOWN_DEFAULT_OPEN_API | "unknown_default_open_api" |
+
+
+
+## Enum: TierEnum
+
+| Name | Value |
+|---- | -----|
+| ENTHUSIAST | "ENTHUSIAST" |
+| REVERSER | "REVERSER" |
+| BUG_HUNTER | "BUG_HUNTER" |
+| MALWARE_ANALYST | "MALWARE_ANALYST" |
+| SECURITY_RESEARCHER | "SECURITY_RESEARCHER" |
+| UNKNOWN_DEFAULT_OPEN_API | "unknown_default_open_api" |
+
+
+
diff --git a/docs/UserCredits.md b/docs/UserCredits.md
new file mode 100644
index 0000000..d3a9e14
--- /dev/null
+++ b/docs/UserCredits.md
@@ -0,0 +1,16 @@
+
+
+# UserCredits
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**createdAt** | **OffsetDateTime** | | [optional] |
+|**credits** | **Long** | | |
+|**updatedAt** | **OffsetDateTime** | | [optional] |
+|**userId** | **Long** | | |
+
+
+
diff --git a/docs/UserIdentity.md b/docs/UserIdentity.md
new file mode 100644
index 0000000..f5db973
--- /dev/null
+++ b/docs/UserIdentity.md
@@ -0,0 +1,18 @@
+
+
+# UserIdentity
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**createdAt** | **OffsetDateTime** | | |
+|**issuerUrl** | **String** | Search is applied to string value | |
+|**subject** | **String** | Search is applied to string value | |
+|**updatedAt** | **OffsetDateTime** | | |
+|**userId** | **Long** | | |
+|**userIdentityId** | **Long** | | |
+
+
+
diff --git a/docs/UserProfile.md b/docs/UserProfile.md
new file mode 100644
index 0000000..9e2f1c2
--- /dev/null
+++ b/docs/UserProfile.md
@@ -0,0 +1,17 @@
+
+
+# UserProfile
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**defaultTeamId** | **Long** | | [optional] |
+|**firstName** | **String** | | |
+|**lastName** | **String** | | |
+|**timeZone** | **String** | | |
+|**username** | **String** | | |
+
+
+
diff --git a/pom.xml b/pom.xml
index d57dbbd..1773ea9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
sdk
jar
sdk
- 3.96.2
+ 3.96.3
https://github.com/RevEngAI/sdk-java
Java SDK for the RevEng.AI API
diff --git a/src/main/java/ai/reveng/api/IamUsersApi.java b/src/main/java/ai/reveng/api/IamUsersApi.java
new file mode 100644
index 0000000..d443358
--- /dev/null
+++ b/src/main/java/ai/reveng/api/IamUsersApi.java
@@ -0,0 +1,322 @@
+/*
+ * 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.api;
+
+import ai.reveng.invoker.ApiCallback;
+import ai.reveng.invoker.ApiClient;
+import ai.reveng.invoker.ApiException;
+import ai.reveng.invoker.ApiResponse;
+import ai.reveng.invoker.Configuration;
+import ai.reveng.invoker.Pair;
+import ai.reveng.invoker.ProgressRequestBody;
+import ai.reveng.invoker.ProgressResponseBody;
+
+import com.google.gson.reflect.TypeToken;
+
+import java.io.IOException;
+
+
+import ai.reveng.model.APIError;
+import ai.reveng.model.Permissions;
+import ai.reveng.model.User;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class IamUsersApi {
+ private ApiClient localVarApiClient;
+ private int localHostIndex;
+ private String localCustomBaseUrl;
+
+ public IamUsersApi() {
+ this(Configuration.getDefaultApiClient());
+ }
+
+ public IamUsersApi(ApiClient apiClient) {
+ this.localVarApiClient = apiClient;
+ }
+
+ public ApiClient getApiClient() {
+ return localVarApiClient;
+ }
+
+ public void setApiClient(ApiClient apiClient) {
+ this.localVarApiClient = apiClient;
+ }
+
+ public int getHostIndex() {
+ return localHostIndex;
+ }
+
+ public void setHostIndex(int hostIndex) {
+ this.localHostIndex = hostIndex;
+ }
+
+ public String getCustomBaseUrl() {
+ return localCustomBaseUrl;
+ }
+
+ public void setCustomBaseUrl(String customBaseUrl) {
+ this.localCustomBaseUrl = customBaseUrl;
+ }
+
+ /**
+ * Build call for getMe
+ * @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 | - |
+ | 404 | Not Found | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public okhttp3.Call getMeCall(final ApiCallback _callback) throws ApiException {
+ String basePath = null;
+ // Operation Servers
+ String[] localBasePaths = new String[] { };
+
+ // Determine Base Path to Use
+ if (localCustomBaseUrl != null){
+ basePath = localCustomBaseUrl;
+ } else if ( localBasePaths.length > 0 ) {
+ basePath = localBasePaths[localHostIndex];
+ } else {
+ basePath = null;
+ }
+
+ Object localVarPostBody = null;
+
+ // create path and map variables
+ String localVarPath = "/v2/iam/me";
+
+ 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 getMeValidateBeforeCall(final ApiCallback _callback) throws ApiException {
+ return getMeCall(_callback);
+
+ }
+
+ /**
+ * Get current user
+ * Returns the authenticated user's own information. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @return User
+ * @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 | - |
+ | 404 | Not Found | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public User getMe() throws ApiException {
+ ApiResponse localVarResp = getMeWithHttpInfo();
+ return localVarResp.getData();
+ }
+
+ /**
+ * Get current user
+ * Returns the authenticated user's own information. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @return ApiResponse<User>
+ * @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 | - |
+ | 404 | Not Found | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public ApiResponse getMeWithHttpInfo() throws ApiException {
+ okhttp3.Call localVarCall = getMeValidateBeforeCall(null);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ return localVarApiClient.execute(localVarCall, localVarReturnType);
+ }
+
+ /**
+ * Get current user (asynchronously)
+ * Returns the authenticated user's own information. **Error codes:** - `404` [`NOT_FOUND`](/errors/NOT_FOUND) — Not Found
+ * @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 | - |
+ | 404 | Not Found | - |
+ | 500 | Internal Server Error | - |
+
+ */
+ public okhttp3.Call getMeAsync(final ApiCallback _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = getMeValidateBeforeCall(_callback);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
+ return localVarCall;
+ }
+ /**
+ * Build call for getMyPermissions
+ * @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 | - |
+ | 0 | Error | - |
+
+ */
+ public okhttp3.Call getMyPermissionsCall(final ApiCallback _callback) throws ApiException {
+ String basePath = null;
+ // Operation Servers
+ String[] localBasePaths = new String[] { };
+
+ // Determine Base Path to Use
+ if (localCustomBaseUrl != null){
+ basePath = localCustomBaseUrl;
+ } else if ( localBasePaths.length > 0 ) {
+ basePath = localBasePaths[localHostIndex];
+ } else {
+ basePath = null;
+ }
+
+ Object localVarPostBody = null;
+
+ // create path and map variables
+ String localVarPath = "/v2/iam/me/permissions";
+
+ 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 getMyPermissionsValidateBeforeCall(final ApiCallback _callback) throws ApiException {
+ return getMyPermissionsCall(_callback);
+
+ }
+
+ /**
+ * Get current user permissions
+ * Returns the feature permissions granted to the authenticated user based on their subscription tier. Use this as the single source of truth for feature gating across web, CLI, and plugin clients.
+ * @return Permissions
+ * @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 | - |
+ | 0 | Error | - |
+
+ */
+ public Permissions getMyPermissions() throws ApiException {
+ ApiResponse localVarResp = getMyPermissionsWithHttpInfo();
+ return localVarResp.getData();
+ }
+
+ /**
+ * Get current user permissions
+ * Returns the feature permissions granted to the authenticated user based on their subscription tier. Use this as the single source of truth for feature gating across web, CLI, and plugin clients.
+ * @return ApiResponse<Permissions>
+ * @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 | - |
+ | 0 | Error | - |
+
+ */
+ public ApiResponse getMyPermissionsWithHttpInfo() throws ApiException {
+ okhttp3.Call localVarCall = getMyPermissionsValidateBeforeCall(null);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ return localVarApiClient.execute(localVarCall, localVarReturnType);
+ }
+
+ /**
+ * Get current user permissions (asynchronously)
+ * Returns the feature permissions granted to the authenticated user based on their subscription tier. Use this as the single source of truth for feature gating across web, CLI, and plugin clients.
+ * @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 | - |
+ | 0 | Error | - |
+
+ */
+ public okhttp3.Call getMyPermissionsAsync(final ApiCallback _callback) throws ApiException {
+
+ okhttp3.Call localVarCall = getMyPermissionsValidateBeforeCall(_callback);
+ Type localVarReturnType = new TypeToken(){}.getType();
+ localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
+ return localVarCall;
+ }
+}
diff --git a/src/main/java/ai/reveng/invoker/ApiClient.java b/src/main/java/ai/reveng/invoker/ApiClient.java
index 99d200f..86406df 100644
--- a/src/main/java/ai/reveng/invoker/ApiClient.java
+++ b/src/main/java/ai/reveng/invoker/ApiClient.java
@@ -146,7 +146,7 @@ protected void init() {
json = new JSON();
// Set default User-Agent.
- setUserAgent("OpenAPI-Generator/3.96.2/java");
+ setUserAgent("OpenAPI-Generator/3.96.3/java");
authentications = new HashMap();
}
diff --git a/src/main/java/ai/reveng/invoker/Configuration.java b/src/main/java/ai/reveng/invoker/Configuration.java
index c9fa7ab..2bae968 100644
--- a/src/main/java/ai/reveng/invoker/Configuration.java
+++ b/src/main/java/ai/reveng/invoker/Configuration.java
@@ -18,7 +18,7 @@
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
public class Configuration {
- public static final String VERSION = "3.96.2";
+ public static final String VERSION = "3.96.3";
private static final AtomicReference defaultApiClient = new AtomicReference<>();
private static volatile Supplier apiClientFactory = ApiClient::new;
diff --git a/src/main/java/ai/reveng/invoker/JSON.java b/src/main/java/ai/reveng/invoker/JSON.java
index 8a1f86b..2e52547 100644
--- a/src/main/java/ai/reveng/invoker/JSON.java
+++ b/src/main/java/ai/reveng/invoker/JSON.java
@@ -103,6 +103,9 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.AIDecompInverseStringMapItem.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.APIError.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.AddCalleeInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.AddIssuerDomainInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.AddOwnerInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.AddTeamMemberInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.AddUserStringInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.AddUserStringToFunctionInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.AdditionalDetailsStatusResponse.CustomTypeAdapterFactory());
@@ -230,6 +233,8 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BinaryExternalsResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BinarySearchResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BinarySearchResult.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BulkCreateUserResult.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BulkCreateUsersOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.BulkDeleteAnalysesRequest.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CallEdge.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CallEdgesOutputBody.CustomTypeAdapterFactory());
@@ -272,7 +277,13 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CreateCollectionInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CreateCollectionOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CreateConversationRequest.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CreateGroupInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CreateIdentityInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CreateIssuerInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CreateOrganisationInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CreatePortalSessionInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CreateTeamInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.CreateUserInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.Created.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.DataTypesEntry.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.DecompFailedEvent.CustomTypeAdapterFactory());
@@ -328,6 +339,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.FileActivityEntry.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.FileHashes.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.FileMetadata.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.FormFile.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.FuncDepsInner.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.FunctionArgument.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.FunctionBlockDestinationResponse.CustomTypeAdapterFactory());
@@ -386,6 +398,8 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ImportModel.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.InlineComment.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.InsertAnalysisLogRequest.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.InviteUserInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.IssuerAllowedDomain.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ListAnalysisFunctionsDataTypesOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ListAnalysisFunctionsOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ListAnalysisStringsOutputBody.CustomTypeAdapterFactory());
@@ -393,12 +407,16 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ListCollectionsOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ListFunctionStringsOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ListFunctionsDataTypesOutputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ListTeamsOutputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ListUsersOutputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.LocationOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.Logs.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.MITRETechnique.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.MatchFilters.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.MatchedFunction.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.MatchedFunctionSuggestion.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.MemdumpEntry.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.MessageBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.MetaModel.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ModelsResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ModuleLoadEntry.CustomTypeAdapterFactory());
@@ -406,10 +424,16 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.NameConfidence.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.NameSourceType.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.NetworkActivity.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.OIDCCallbackInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.Organisation.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.OrganisationGroup.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.OrganisationIssuer.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.OrganisationOwner.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PDBDebugModel.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PEModel.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PaginationModel.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.Params.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PasswordResetInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PatchCollectionBinariesInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PatchCollectionBinariesOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PatchCollectionInputBody.CustomTypeAdapterFactory());
@@ -418,6 +442,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PatchCollectionTagsOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PatchCommentBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PcapBodyInfo.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.Permissions.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PriceOutput.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.PriceSummary.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ProcessActivityEntry.CustomTypeAdapterFactory());
@@ -432,7 +457,9 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.QueuedWorkflowTaskResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ReAnalysisForm.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.Recent.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RefreshBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RegenerateOutputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RegisterUserInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RegistryOperation.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RelativeBinaryResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.RenameAppliedEvent.CustomTypeAdapterFactory());
@@ -443,8 +470,11 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
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.RevokeBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.SBOM.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.SBOMPackage.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.SSOProvider.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.SSOProvidersOutputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.SandboxOptions.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ScheduledTaskEntry.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.ScrapeThirdPartyConfig.CustomTypeAdapterFactory());
@@ -500,7 +530,11 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TaskResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TaskStatusResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TcpCarvedFile.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.Team.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TeamMember.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TimestampModel.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TokenInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TokenResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TokenisedData.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TriageFunctionResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TriageReportResponse.CustomTypeAdapterFactory());
@@ -509,11 +543,23 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.TypeDefinition.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpdateDataTypesInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpdateDataTypesOutputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpdateIssuerInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpdateOrganisationInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpdatePasswordInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpdateProfileInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpdateTeamInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpdateUserCreditsInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpdateUserInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpdateUserPasswordInputBody.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UploadResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpsertAiDecomplationRatingRequest.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpsertOverridesData.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UpsertOverridesInputBody.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.User.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UserActivityResponse.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UserCredits.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UserIdentity.CustomTypeAdapterFactory());
+ gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.UserProfile.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.Vulnerabilities.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.Vulnerability.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new ai.reveng.model.WarningEvent.CustomTypeAdapterFactory());
diff --git a/src/main/java/ai/reveng/model/AddIssuerDomainInputBody.java b/src/main/java/ai/reveng/model/AddIssuerDomainInputBody.java
new file mode 100644
index 0000000..1dbaee8
--- /dev/null
+++ b/src/main/java/ai/reveng/model/AddIssuerDomainInputBody.java
@@ -0,0 +1,289 @@
+/*
+ * 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 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 ai.reveng.invoker.JSON;
+
+/**
+ * AddIssuerDomainInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class AddIssuerDomainInputBody {
+ public static final String SERIALIZED_NAME_DOMAIN = "domain";
+ @SerializedName(SERIALIZED_NAME_DOMAIN)
+ @javax.annotation.Nonnull
+ private String domain;
+
+ public AddIssuerDomainInputBody() {
+ }
+
+ public AddIssuerDomainInputBody domain(@javax.annotation.Nonnull String domain) {
+ this.domain = domain;
+ return this;
+ }
+
+ /**
+ * Email domain to allow (e.g. acme.com)
+ * @return domain
+ */
+ @javax.annotation.Nonnull
+ public String getDomain() {
+ return domain;
+ }
+
+ public void setDomain(@javax.annotation.Nonnull String domain) {
+ this.domain = domain;
+ }
+
+ /**
+ * 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 AddIssuerDomainInputBody instance itself
+ */
+ public AddIssuerDomainInputBody 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;
+ }
+ AddIssuerDomainInputBody addIssuerDomainInputBody = (AddIssuerDomainInputBody) o;
+ return Objects.equals(this.domain, addIssuerDomainInputBody.domain)&&
+ Objects.equals(this.additionalProperties, addIssuerDomainInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(domain, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AddIssuerDomainInputBody {\n");
+ sb.append(" domain: ").append(toIndentedString(domain)).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) {
+ return o == null ? "null" : 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("domain"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("domain"));
+ }
+
+ /**
+ * 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 AddIssuerDomainInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!AddIssuerDomainInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in AddIssuerDomainInputBody is not found in the empty JSON string", AddIssuerDomainInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : AddIssuerDomainInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if (!jsonObj.get("domain").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `domain` to be a primitive type in the JSON string but got `%s`", jsonObj.get("domain").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!AddIssuerDomainInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'AddIssuerDomainInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(AddIssuerDomainInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, AddIssuerDomainInputBody 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 AddIssuerDomainInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ AddIssuerDomainInputBody 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(java.util.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 AddIssuerDomainInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of AddIssuerDomainInputBody
+ * @throws IOException if the JSON string is invalid with respect to AddIssuerDomainInputBody
+ */
+ public static AddIssuerDomainInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, AddIssuerDomainInputBody.class);
+ }
+
+ /**
+ * Convert an instance of AddIssuerDomainInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/AddOwnerInputBody.java b/src/main/java/ai/reveng/model/AddOwnerInputBody.java
new file mode 100644
index 0000000..8f52a71
--- /dev/null
+++ b/src/main/java/ai/reveng/model/AddOwnerInputBody.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 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 ai.reveng.invoker.JSON;
+
+/**
+ * AddOwnerInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class AddOwnerInputBody {
+ public static final String SERIALIZED_NAME_USER_ID = "user_id";
+ @SerializedName(SERIALIZED_NAME_USER_ID)
+ @javax.annotation.Nonnull
+ private Long userId;
+
+ public AddOwnerInputBody() {
+ }
+
+ public AddOwnerInputBody userId(@javax.annotation.Nonnull Long userId) {
+ this.userId = userId;
+ return this;
+ }
+
+ /**
+ * User ID to add as owner
+ * minimum: 1
+ * @return userId
+ */
+ @javax.annotation.Nonnull
+ public Long getUserId() {
+ return userId;
+ }
+
+ public void setUserId(@javax.annotation.Nonnull Long userId) {
+ this.userId = userId;
+ }
+
+ /**
+ * 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 AddOwnerInputBody instance itself
+ */
+ public AddOwnerInputBody 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;
+ }
+ AddOwnerInputBody addOwnerInputBody = (AddOwnerInputBody) o;
+ return Objects.equals(this.userId, addOwnerInputBody.userId)&&
+ Objects.equals(this.additionalProperties, addOwnerInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(userId, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AddOwnerInputBody {\n");
+ sb.append(" userId: ").append(toIndentedString(userId)).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) {
+ return o == null ? "null" : 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("user_id"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("user_id"));
+ }
+
+ /**
+ * Validates the JSON Element and throws an exception if issues found
+ *
+ * @param jsonElement JSON Element
+ * @throws IOException if the JSON Element is invalid with respect to AddOwnerInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!AddOwnerInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in AddOwnerInputBody is not found in the empty JSON string", AddOwnerInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : AddOwnerInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!AddOwnerInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'AddOwnerInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(AddOwnerInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, AddOwnerInputBody 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 AddOwnerInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ AddOwnerInputBody 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(java.util.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 AddOwnerInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of AddOwnerInputBody
+ * @throws IOException if the JSON string is invalid with respect to AddOwnerInputBody
+ */
+ public static AddOwnerInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, AddOwnerInputBody.class);
+ }
+
+ /**
+ * Convert an instance of AddOwnerInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/AddTeamMemberInputBody.java b/src/main/java/ai/reveng/model/AddTeamMemberInputBody.java
new file mode 100644
index 0000000..8c74529
--- /dev/null
+++ b/src/main/java/ai/reveng/model/AddTeamMemberInputBody.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 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 ai.reveng.invoker.JSON;
+
+/**
+ * AddTeamMemberInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class AddTeamMemberInputBody {
+ public static final String SERIALIZED_NAME_USER_ID = "user_id";
+ @SerializedName(SERIALIZED_NAME_USER_ID)
+ @javax.annotation.Nonnull
+ private Long userId;
+
+ public AddTeamMemberInputBody() {
+ }
+
+ public AddTeamMemberInputBody userId(@javax.annotation.Nonnull Long userId) {
+ this.userId = userId;
+ return this;
+ }
+
+ /**
+ * User ID to add
+ * minimum: 1
+ * @return userId
+ */
+ @javax.annotation.Nonnull
+ public Long getUserId() {
+ return userId;
+ }
+
+ public void setUserId(@javax.annotation.Nonnull Long userId) {
+ this.userId = userId;
+ }
+
+ /**
+ * 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 AddTeamMemberInputBody instance itself
+ */
+ public AddTeamMemberInputBody 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;
+ }
+ AddTeamMemberInputBody addTeamMemberInputBody = (AddTeamMemberInputBody) o;
+ return Objects.equals(this.userId, addTeamMemberInputBody.userId)&&
+ Objects.equals(this.additionalProperties, addTeamMemberInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(userId, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AddTeamMemberInputBody {\n");
+ sb.append(" userId: ").append(toIndentedString(userId)).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) {
+ return o == null ? "null" : 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("user_id"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("user_id"));
+ }
+
+ /**
+ * Validates the JSON Element and throws an exception if issues found
+ *
+ * @param jsonElement JSON Element
+ * @throws IOException if the JSON Element is invalid with respect to AddTeamMemberInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!AddTeamMemberInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in AddTeamMemberInputBody is not found in the empty JSON string", AddTeamMemberInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : AddTeamMemberInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!AddTeamMemberInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'AddTeamMemberInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(AddTeamMemberInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, AddTeamMemberInputBody 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 AddTeamMemberInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ AddTeamMemberInputBody 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(java.util.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 AddTeamMemberInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of AddTeamMemberInputBody
+ * @throws IOException if the JSON string is invalid with respect to AddTeamMemberInputBody
+ */
+ public static AddTeamMemberInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, AddTeamMemberInputBody.class);
+ }
+
+ /**
+ * Convert an instance of AddTeamMemberInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/BulkCreateUserResult.java b/src/main/java/ai/reveng/model/BulkCreateUserResult.java
new file mode 100644
index 0000000..7e5369b
--- /dev/null
+++ b/src/main/java/ai/reveng/model/BulkCreateUserResult.java
@@ -0,0 +1,430 @@
+/*
+ * 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 ai.reveng.model.User;
+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 ai.reveng.invoker.JSON;
+
+/**
+ * BulkCreateUserResult
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class BulkCreateUserResult {
+ public static final String SERIALIZED_NAME_EMAIL = "email";
+ @SerializedName(SERIALIZED_NAME_EMAIL)
+ @javax.annotation.Nullable
+ private String email;
+
+ public static final String SERIALIZED_NAME_ERROR = "error";
+ @SerializedName(SERIALIZED_NAME_ERROR)
+ @javax.annotation.Nullable
+ private String error;
+
+ public static final String SERIALIZED_NAME_INDEX = "index";
+ @SerializedName(SERIALIZED_NAME_INDEX)
+ @javax.annotation.Nonnull
+ private Long index;
+
+ public static final String SERIALIZED_NAME_SUCCESS = "success";
+ @SerializedName(SERIALIZED_NAME_SUCCESS)
+ @javax.annotation.Nonnull
+ private Boolean success;
+
+ public static final String SERIALIZED_NAME_USER = "user";
+ @SerializedName(SERIALIZED_NAME_USER)
+ @javax.annotation.Nullable
+ private User user;
+
+ public static final String SERIALIZED_NAME_USERNAME = "username";
+ @SerializedName(SERIALIZED_NAME_USERNAME)
+ @javax.annotation.Nullable
+ private String username;
+
+ public BulkCreateUserResult() {
+ }
+
+ public BulkCreateUserResult email(@javax.annotation.Nullable String email) {
+ this.email = email;
+ return this;
+ }
+
+ /**
+ * Search is applied to string value
+ * @return email
+ */
+ @javax.annotation.Nullable
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(@javax.annotation.Nullable String email) {
+ this.email = email;
+ }
+
+
+ public BulkCreateUserResult error(@javax.annotation.Nullable String error) {
+ this.error = error;
+ return this;
+ }
+
+ /**
+ * Error description; present on failure
+ * @return error
+ */
+ @javax.annotation.Nullable
+ public String getError() {
+ return error;
+ }
+
+ public void setError(@javax.annotation.Nullable String error) {
+ this.error = error;
+ }
+
+
+ public BulkCreateUserResult index(@javax.annotation.Nonnull Long index) {
+ this.index = index;
+ return this;
+ }
+
+ /**
+ * 1-based row index in the CSV
+ * @return index
+ */
+ @javax.annotation.Nonnull
+ public Long getIndex() {
+ return index;
+ }
+
+ public void setIndex(@javax.annotation.Nonnull Long index) {
+ this.index = index;
+ }
+
+
+ public BulkCreateUserResult success(@javax.annotation.Nonnull Boolean success) {
+ this.success = success;
+ return this;
+ }
+
+ /**
+ * Get success
+ * @return success
+ */
+ @javax.annotation.Nonnull
+ public Boolean getSuccess() {
+ return success;
+ }
+
+ public void setSuccess(@javax.annotation.Nonnull Boolean success) {
+ this.success = success;
+ }
+
+
+ public BulkCreateUserResult user(@javax.annotation.Nullable User user) {
+ this.user = user;
+ return this;
+ }
+
+ /**
+ * Created user; present on success
+ * @return user
+ */
+ @javax.annotation.Nullable
+ public User getUser() {
+ return user;
+ }
+
+ public void setUser(@javax.annotation.Nullable User user) {
+ this.user = user;
+ }
+
+
+ public BulkCreateUserResult username(@javax.annotation.Nullable String username) {
+ this.username = username;
+ return this;
+ }
+
+ /**
+ * Search is applied to string value
+ * @return username
+ */
+ @javax.annotation.Nullable
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(@javax.annotation.Nullable String username) {
+ this.username = username;
+ }
+
+ /**
+ * 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 BulkCreateUserResult instance itself
+ */
+ public BulkCreateUserResult 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;
+ }
+ BulkCreateUserResult bulkCreateUserResult = (BulkCreateUserResult) o;
+ return Objects.equals(this.email, bulkCreateUserResult.email) &&
+ Objects.equals(this.error, bulkCreateUserResult.error) &&
+ Objects.equals(this.index, bulkCreateUserResult.index) &&
+ Objects.equals(this.success, bulkCreateUserResult.success) &&
+ Objects.equals(this.user, bulkCreateUserResult.user) &&
+ Objects.equals(this.username, bulkCreateUserResult.username)&&
+ Objects.equals(this.additionalProperties, bulkCreateUserResult.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(email, error, index, success, user, username, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class BulkCreateUserResult {\n");
+ sb.append(" email: ").append(toIndentedString(email)).append("\n");
+ sb.append(" error: ").append(toIndentedString(error)).append("\n");
+ sb.append(" index: ").append(toIndentedString(index)).append("\n");
+ sb.append(" success: ").append(toIndentedString(success)).append("\n");
+ sb.append(" user: ").append(toIndentedString(user)).append("\n");
+ sb.append(" username: ").append(toIndentedString(username)).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) {
+ return o == null ? "null" : 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("email", "error", "index", "success", "user", "username"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("email", "index", "success", "username"));
+ }
+
+ /**
+ * 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 BulkCreateUserResult
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!BulkCreateUserResult.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in BulkCreateUserResult is not found in the empty JSON string", BulkCreateUserResult.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : BulkCreateUserResult.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if ((jsonObj.get("email") != null && !jsonObj.get("email").isJsonNull()) && !jsonObj.get("email").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `email` to be a primitive type in the JSON string but got `%s`", jsonObj.get("email").toString()));
+ }
+ if ((jsonObj.get("error") != null && !jsonObj.get("error").isJsonNull()) && !jsonObj.get("error").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `error` to be a primitive type in the JSON string but got `%s`", jsonObj.get("error").toString()));
+ }
+ // validate the optional field `user`
+ if (jsonObj.get("user") != null && !jsonObj.get("user").isJsonNull()) {
+ User.validateJsonElement(jsonObj.get("user"));
+ }
+ if ((jsonObj.get("username") != null && !jsonObj.get("username").isJsonNull()) && !jsonObj.get("username").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `username` to be a primitive type in the JSON string but got `%s`", jsonObj.get("username").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!BulkCreateUserResult.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'BulkCreateUserResult' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(BulkCreateUserResult.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, BulkCreateUserResult 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 BulkCreateUserResult read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ BulkCreateUserResult 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(java.util.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 BulkCreateUserResult given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of BulkCreateUserResult
+ * @throws IOException if the JSON string is invalid with respect to BulkCreateUserResult
+ */
+ public static BulkCreateUserResult fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, BulkCreateUserResult.class);
+ }
+
+ /**
+ * Convert an instance of BulkCreateUserResult to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/BulkCreateUsersOutputBody.java b/src/main/java/ai/reveng/model/BulkCreateUsersOutputBody.java
new file mode 100644
index 0000000..c4da694
--- /dev/null
+++ b/src/main/java/ai/reveng/model/BulkCreateUsersOutputBody.java
@@ -0,0 +1,385 @@
+/*
+ * 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 ai.reveng.model.BulkCreateUserResult;
+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.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 ai.reveng.invoker.JSON;
+
+/**
+ * BulkCreateUsersOutputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class BulkCreateUsersOutputBody {
+ public static final String SERIALIZED_NAME_FAILED = "failed";
+ @SerializedName(SERIALIZED_NAME_FAILED)
+ @javax.annotation.Nonnull
+ private Long failed;
+
+ public static final String SERIALIZED_NAME_RESULTS = "results";
+ @SerializedName(SERIALIZED_NAME_RESULTS)
+ @javax.annotation.Nullable
+ private List results;
+
+ public static final String SERIALIZED_NAME_SUCCEEDED = "succeeded";
+ @SerializedName(SERIALIZED_NAME_SUCCEEDED)
+ @javax.annotation.Nonnull
+ private Long succeeded;
+
+ public static final String SERIALIZED_NAME_TOTAL = "total";
+ @SerializedName(SERIALIZED_NAME_TOTAL)
+ @javax.annotation.Nonnull
+ private Long total;
+
+ public BulkCreateUsersOutputBody() {
+ }
+
+ public BulkCreateUsersOutputBody failed(@javax.annotation.Nonnull Long failed) {
+ this.failed = failed;
+ return this;
+ }
+
+ /**
+ * Get failed
+ * @return failed
+ */
+ @javax.annotation.Nonnull
+ public Long getFailed() {
+ return failed;
+ }
+
+ public void setFailed(@javax.annotation.Nonnull Long failed) {
+ this.failed = failed;
+ }
+
+
+ public BulkCreateUsersOutputBody results(@javax.annotation.Nullable List results) {
+ this.results = results;
+ return this;
+ }
+
+ public BulkCreateUsersOutputBody addResultsItem(BulkCreateUserResult resultsItem) {
+ if (this.results == null) {
+ this.results = new ArrayList<>();
+ }
+ this.results.add(resultsItem);
+ return this;
+ }
+
+ /**
+ * Get results
+ * @return results
+ */
+ @javax.annotation.Nullable
+ public List getResults() {
+ return results;
+ }
+
+ public void setResults(@javax.annotation.Nullable List results) {
+ this.results = results;
+ }
+
+
+ public BulkCreateUsersOutputBody succeeded(@javax.annotation.Nonnull Long succeeded) {
+ this.succeeded = succeeded;
+ return this;
+ }
+
+ /**
+ * Get succeeded
+ * @return succeeded
+ */
+ @javax.annotation.Nonnull
+ public Long getSucceeded() {
+ return succeeded;
+ }
+
+ public void setSucceeded(@javax.annotation.Nonnull Long succeeded) {
+ this.succeeded = succeeded;
+ }
+
+
+ public BulkCreateUsersOutputBody total(@javax.annotation.Nonnull Long total) {
+ this.total = total;
+ return this;
+ }
+
+ /**
+ * Get total
+ * @return total
+ */
+ @javax.annotation.Nonnull
+ public Long getTotal() {
+ return total;
+ }
+
+ public void setTotal(@javax.annotation.Nonnull Long total) {
+ this.total = total;
+ }
+
+ /**
+ * 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 BulkCreateUsersOutputBody instance itself
+ */
+ public BulkCreateUsersOutputBody 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;
+ }
+ BulkCreateUsersOutputBody bulkCreateUsersOutputBody = (BulkCreateUsersOutputBody) o;
+ return Objects.equals(this.failed, bulkCreateUsersOutputBody.failed) &&
+ Objects.equals(this.results, bulkCreateUsersOutputBody.results) &&
+ Objects.equals(this.succeeded, bulkCreateUsersOutputBody.succeeded) &&
+ Objects.equals(this.total, bulkCreateUsersOutputBody.total)&&
+ Objects.equals(this.additionalProperties, bulkCreateUsersOutputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(failed, results, succeeded, total, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class BulkCreateUsersOutputBody {\n");
+ sb.append(" failed: ").append(toIndentedString(failed)).append("\n");
+ sb.append(" results: ").append(toIndentedString(results)).append("\n");
+ sb.append(" succeeded: ").append(toIndentedString(succeeded)).append("\n");
+ sb.append(" total: ").append(toIndentedString(total)).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) {
+ return o == null ? "null" : 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("failed", "results", "succeeded", "total"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("failed", "results", "succeeded", "total"));
+ }
+
+ /**
+ * 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 BulkCreateUsersOutputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!BulkCreateUsersOutputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in BulkCreateUsersOutputBody is not found in the empty JSON string", BulkCreateUsersOutputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : BulkCreateUsersOutputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if (jsonObj.get("results") != null && !jsonObj.get("results").isJsonNull()) {
+ if (!jsonObj.get("results").isJsonArray()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `results` to be an array in the JSON string but got `%s`", jsonObj.get("results").toString()));
+ }
+ JsonArray jsonArrayresults = jsonObj.getAsJsonArray("results");
+ // validate the required field `results` (array)
+ for (int i = 0; i < jsonArrayresults.size(); i++) {
+ BulkCreateUserResult.validateJsonElement(jsonArrayresults.get(i));
+ }
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!BulkCreateUsersOutputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'BulkCreateUsersOutputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(BulkCreateUsersOutputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, BulkCreateUsersOutputBody 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 BulkCreateUsersOutputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ BulkCreateUsersOutputBody 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(java.util.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 BulkCreateUsersOutputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of BulkCreateUsersOutputBody
+ * @throws IOException if the JSON string is invalid with respect to BulkCreateUsersOutputBody
+ */
+ public static BulkCreateUsersOutputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, BulkCreateUsersOutputBody.class);
+ }
+
+ /**
+ * Convert an instance of BulkCreateUsersOutputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/CreateGroupInputBody.java b/src/main/java/ai/reveng/model/CreateGroupInputBody.java
new file mode 100644
index 0000000..6164fe2
--- /dev/null
+++ b/src/main/java/ai/reveng/model/CreateGroupInputBody.java
@@ -0,0 +1,289 @@
+/*
+ * 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 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 ai.reveng.invoker.JSON;
+
+/**
+ * CreateGroupInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class CreateGroupInputBody {
+ public static final String SERIALIZED_NAME_NAME = "name";
+ @SerializedName(SERIALIZED_NAME_NAME)
+ @javax.annotation.Nonnull
+ private String name;
+
+ public CreateGroupInputBody() {
+ }
+
+ public CreateGroupInputBody name(@javax.annotation.Nonnull String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Group name
+ * @return name
+ */
+ @javax.annotation.Nonnull
+ public String getName() {
+ return name;
+ }
+
+ public void setName(@javax.annotation.Nonnull String name) {
+ this.name = name;
+ }
+
+ /**
+ * 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 CreateGroupInputBody instance itself
+ */
+ public CreateGroupInputBody 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;
+ }
+ CreateGroupInputBody createGroupInputBody = (CreateGroupInputBody) o;
+ return Objects.equals(this.name, createGroupInputBody.name)&&
+ Objects.equals(this.additionalProperties, createGroupInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class CreateGroupInputBody {\n");
+ sb.append(" name: ").append(toIndentedString(name)).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) {
+ return o == null ? "null" : o.toString().replace("\n", "\n ");
+ }
+
+
+ public static HashSet openapiFields;
+ public static HashSet openapiRequiredFields;
+
+ static {
+ // a set of all properties/fields (JSON key names)
+ openapiFields = new HashSet(Arrays.asList("name"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("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 CreateGroupInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!CreateGroupInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in CreateGroupInputBody is not found in the empty JSON string", CreateGroupInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : CreateGroupInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if (!jsonObj.get("name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("name").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!CreateGroupInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'CreateGroupInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(CreateGroupInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, CreateGroupInputBody 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 CreateGroupInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ CreateGroupInputBody 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(java.util.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 CreateGroupInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of CreateGroupInputBody
+ * @throws IOException if the JSON string is invalid with respect to CreateGroupInputBody
+ */
+ public static CreateGroupInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, CreateGroupInputBody.class);
+ }
+
+ /**
+ * Convert an instance of CreateGroupInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/CreateIdentityInputBody.java b/src/main/java/ai/reveng/model/CreateIdentityInputBody.java
new file mode 100644
index 0000000..7b04bc2
--- /dev/null
+++ b/src/main/java/ai/reveng/model/CreateIdentityInputBody.java
@@ -0,0 +1,345 @@
+/*
+ * 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 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 ai.reveng.invoker.JSON;
+
+/**
+ * CreateIdentityInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class CreateIdentityInputBody {
+ public static final String SERIALIZED_NAME_ISSUER_URL = "issuer_url";
+ @SerializedName(SERIALIZED_NAME_ISSUER_URL)
+ @javax.annotation.Nonnull
+ private String issuerUrl;
+
+ public static final String SERIALIZED_NAME_SUBJECT = "subject";
+ @SerializedName(SERIALIZED_NAME_SUBJECT)
+ @javax.annotation.Nonnull
+ private String subject;
+
+ public static final String SERIALIZED_NAME_USER_ID = "user_id";
+ @SerializedName(SERIALIZED_NAME_USER_ID)
+ @javax.annotation.Nonnull
+ private Long userId;
+
+ public CreateIdentityInputBody() {
+ }
+
+ public CreateIdentityInputBody issuerUrl(@javax.annotation.Nonnull String issuerUrl) {
+ this.issuerUrl = issuerUrl;
+ return this;
+ }
+
+ /**
+ * Issuer URL (must be trusted by this organisation)
+ * @return issuerUrl
+ */
+ @javax.annotation.Nonnull
+ public String getIssuerUrl() {
+ return issuerUrl;
+ }
+
+ public void setIssuerUrl(@javax.annotation.Nonnull String issuerUrl) {
+ this.issuerUrl = issuerUrl;
+ }
+
+
+ public CreateIdentityInputBody subject(@javax.annotation.Nonnull String subject) {
+ this.subject = subject;
+ return this;
+ }
+
+ /**
+ * External subject identifier from the issuer
+ * @return subject
+ */
+ @javax.annotation.Nonnull
+ public String getSubject() {
+ return subject;
+ }
+
+ public void setSubject(@javax.annotation.Nonnull String subject) {
+ this.subject = subject;
+ }
+
+
+ public CreateIdentityInputBody userId(@javax.annotation.Nonnull Long userId) {
+ this.userId = userId;
+ return this;
+ }
+
+ /**
+ * Internal user ID to link
+ * minimum: 1
+ * @return userId
+ */
+ @javax.annotation.Nonnull
+ public Long getUserId() {
+ return userId;
+ }
+
+ public void setUserId(@javax.annotation.Nonnull Long userId) {
+ this.userId = userId;
+ }
+
+ /**
+ * 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 CreateIdentityInputBody instance itself
+ */
+ public CreateIdentityInputBody 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;
+ }
+ CreateIdentityInputBody createIdentityInputBody = (CreateIdentityInputBody) o;
+ return Objects.equals(this.issuerUrl, createIdentityInputBody.issuerUrl) &&
+ Objects.equals(this.subject, createIdentityInputBody.subject) &&
+ Objects.equals(this.userId, createIdentityInputBody.userId)&&
+ Objects.equals(this.additionalProperties, createIdentityInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(issuerUrl, subject, userId, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class CreateIdentityInputBody {\n");
+ sb.append(" issuerUrl: ").append(toIndentedString(issuerUrl)).append("\n");
+ sb.append(" subject: ").append(toIndentedString(subject)).append("\n");
+ sb.append(" userId: ").append(toIndentedString(userId)).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) {
+ return o == null ? "null" : 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("issuer_url", "subject", "user_id"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("issuer_url", "subject", "user_id"));
+ }
+
+ /**
+ * Validates the JSON Element and throws an exception if issues found
+ *
+ * @param jsonElement JSON Element
+ * @throws IOException if the JSON Element is invalid with respect to CreateIdentityInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!CreateIdentityInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in CreateIdentityInputBody is not found in the empty JSON string", CreateIdentityInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : CreateIdentityInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if (!jsonObj.get("issuer_url").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `issuer_url` to be a primitive type in the JSON string but got `%s`", jsonObj.get("issuer_url").toString()));
+ }
+ if (!jsonObj.get("subject").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `subject` to be a primitive type in the JSON string but got `%s`", jsonObj.get("subject").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!CreateIdentityInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'CreateIdentityInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(CreateIdentityInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, CreateIdentityInputBody 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 CreateIdentityInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ CreateIdentityInputBody 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(java.util.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 CreateIdentityInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of CreateIdentityInputBody
+ * @throws IOException if the JSON string is invalid with respect to CreateIdentityInputBody
+ */
+ public static CreateIdentityInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, CreateIdentityInputBody.class);
+ }
+
+ /**
+ * Convert an instance of CreateIdentityInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/CreateIssuerInputBody.java b/src/main/java/ai/reveng/model/CreateIssuerInputBody.java
new file mode 100644
index 0000000..40f036b
--- /dev/null
+++ b/src/main/java/ai/reveng/model/CreateIssuerInputBody.java
@@ -0,0 +1,318 @@
+/*
+ * 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 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 ai.reveng.invoker.JSON;
+
+/**
+ * CreateIssuerInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class CreateIssuerInputBody {
+ public static final String SERIALIZED_NAME_CLIENT_ID = "client_id";
+ @SerializedName(SERIALIZED_NAME_CLIENT_ID)
+ @javax.annotation.Nullable
+ private String clientId;
+
+ public static final String SERIALIZED_NAME_ISSUER_URL = "issuer_url";
+ @SerializedName(SERIALIZED_NAME_ISSUER_URL)
+ @javax.annotation.Nonnull
+ private String issuerUrl;
+
+ public CreateIssuerInputBody() {
+ }
+
+ public CreateIssuerInputBody clientId(@javax.annotation.Nullable String clientId) {
+ this.clientId = clientId;
+ return this;
+ }
+
+ /**
+ * OIDC client ID for audience validation (recommended)
+ * @return clientId
+ */
+ @javax.annotation.Nullable
+ public String getClientId() {
+ return clientId;
+ }
+
+ public void setClientId(@javax.annotation.Nullable String clientId) {
+ this.clientId = clientId;
+ }
+
+
+ public CreateIssuerInputBody issuerUrl(@javax.annotation.Nonnull String issuerUrl) {
+ this.issuerUrl = issuerUrl;
+ return this;
+ }
+
+ /**
+ * OIDC issuer URL to trust
+ * @return issuerUrl
+ */
+ @javax.annotation.Nonnull
+ public String getIssuerUrl() {
+ return issuerUrl;
+ }
+
+ public void setIssuerUrl(@javax.annotation.Nonnull String issuerUrl) {
+ this.issuerUrl = issuerUrl;
+ }
+
+ /**
+ * 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 CreateIssuerInputBody instance itself
+ */
+ public CreateIssuerInputBody 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;
+ }
+ CreateIssuerInputBody createIssuerInputBody = (CreateIssuerInputBody) o;
+ return Objects.equals(this.clientId, createIssuerInputBody.clientId) &&
+ Objects.equals(this.issuerUrl, createIssuerInputBody.issuerUrl)&&
+ Objects.equals(this.additionalProperties, createIssuerInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(clientId, issuerUrl, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class CreateIssuerInputBody {\n");
+ sb.append(" clientId: ").append(toIndentedString(clientId)).append("\n");
+ sb.append(" issuerUrl: ").append(toIndentedString(issuerUrl)).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) {
+ return o == null ? "null" : 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("client_id", "issuer_url"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("issuer_url"));
+ }
+
+ /**
+ * 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 CreateIssuerInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!CreateIssuerInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in CreateIssuerInputBody is not found in the empty JSON string", CreateIssuerInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : CreateIssuerInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if ((jsonObj.get("client_id") != null && !jsonObj.get("client_id").isJsonNull()) && !jsonObj.get("client_id").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `client_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("client_id").toString()));
+ }
+ if (!jsonObj.get("issuer_url").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `issuer_url` to be a primitive type in the JSON string but got `%s`", jsonObj.get("issuer_url").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!CreateIssuerInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'CreateIssuerInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(CreateIssuerInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, CreateIssuerInputBody 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 CreateIssuerInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ CreateIssuerInputBody 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(java.util.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 CreateIssuerInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of CreateIssuerInputBody
+ * @throws IOException if the JSON string is invalid with respect to CreateIssuerInputBody
+ */
+ public static CreateIssuerInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, CreateIssuerInputBody.class);
+ }
+
+ /**
+ * Convert an instance of CreateIssuerInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/CreateOrganisationInputBody.java b/src/main/java/ai/reveng/model/CreateOrganisationInputBody.java
new file mode 100644
index 0000000..97b210e
--- /dev/null
+++ b/src/main/java/ai/reveng/model/CreateOrganisationInputBody.java
@@ -0,0 +1,289 @@
+/*
+ * 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 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 ai.reveng.invoker.JSON;
+
+/**
+ * CreateOrganisationInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class CreateOrganisationInputBody {
+ public static final String SERIALIZED_NAME_NAME = "name";
+ @SerializedName(SERIALIZED_NAME_NAME)
+ @javax.annotation.Nonnull
+ private String name;
+
+ public CreateOrganisationInputBody() {
+ }
+
+ public CreateOrganisationInputBody name(@javax.annotation.Nonnull String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Organisation name
+ * @return name
+ */
+ @javax.annotation.Nonnull
+ public String getName() {
+ return name;
+ }
+
+ public void setName(@javax.annotation.Nonnull String name) {
+ this.name = name;
+ }
+
+ /**
+ * 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 CreateOrganisationInputBody instance itself
+ */
+ public CreateOrganisationInputBody 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;
+ }
+ CreateOrganisationInputBody createOrganisationInputBody = (CreateOrganisationInputBody) o;
+ return Objects.equals(this.name, createOrganisationInputBody.name)&&
+ Objects.equals(this.additionalProperties, createOrganisationInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class CreateOrganisationInputBody {\n");
+ sb.append(" name: ").append(toIndentedString(name)).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) {
+ return o == null ? "null" : o.toString().replace("\n", "\n ");
+ }
+
+
+ public static HashSet openapiFields;
+ public static HashSet openapiRequiredFields;
+
+ static {
+ // a set of all properties/fields (JSON key names)
+ openapiFields = new HashSet(Arrays.asList("name"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("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 CreateOrganisationInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!CreateOrganisationInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in CreateOrganisationInputBody is not found in the empty JSON string", CreateOrganisationInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : CreateOrganisationInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if (!jsonObj.get("name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("name").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!CreateOrganisationInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'CreateOrganisationInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(CreateOrganisationInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, CreateOrganisationInputBody 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 CreateOrganisationInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ CreateOrganisationInputBody 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(java.util.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 CreateOrganisationInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of CreateOrganisationInputBody
+ * @throws IOException if the JSON string is invalid with respect to CreateOrganisationInputBody
+ */
+ public static CreateOrganisationInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, CreateOrganisationInputBody.class);
+ }
+
+ /**
+ * Convert an instance of CreateOrganisationInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/CreateTeamInputBody.java b/src/main/java/ai/reveng/model/CreateTeamInputBody.java
new file mode 100644
index 0000000..8af55a1
--- /dev/null
+++ b/src/main/java/ai/reveng/model/CreateTeamInputBody.java
@@ -0,0 +1,289 @@
+/*
+ * 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 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 ai.reveng.invoker.JSON;
+
+/**
+ * CreateTeamInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class CreateTeamInputBody {
+ public static final String SERIALIZED_NAME_NAME = "name";
+ @SerializedName(SERIALIZED_NAME_NAME)
+ @javax.annotation.Nonnull
+ private String name;
+
+ public CreateTeamInputBody() {
+ }
+
+ public CreateTeamInputBody name(@javax.annotation.Nonnull String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Team name
+ * @return name
+ */
+ @javax.annotation.Nonnull
+ public String getName() {
+ return name;
+ }
+
+ public void setName(@javax.annotation.Nonnull String name) {
+ this.name = name;
+ }
+
+ /**
+ * 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 CreateTeamInputBody instance itself
+ */
+ public CreateTeamInputBody 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;
+ }
+ CreateTeamInputBody createTeamInputBody = (CreateTeamInputBody) o;
+ return Objects.equals(this.name, createTeamInputBody.name)&&
+ Objects.equals(this.additionalProperties, createTeamInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class CreateTeamInputBody {\n");
+ sb.append(" name: ").append(toIndentedString(name)).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) {
+ return o == null ? "null" : o.toString().replace("\n", "\n ");
+ }
+
+
+ public static HashSet openapiFields;
+ public static HashSet openapiRequiredFields;
+
+ static {
+ // a set of all properties/fields (JSON key names)
+ openapiFields = new HashSet(Arrays.asList("name"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("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 CreateTeamInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!CreateTeamInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in CreateTeamInputBody is not found in the empty JSON string", CreateTeamInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : CreateTeamInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if (!jsonObj.get("name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("name").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!CreateTeamInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'CreateTeamInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(CreateTeamInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, CreateTeamInputBody 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 CreateTeamInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ CreateTeamInputBody 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(java.util.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 CreateTeamInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of CreateTeamInputBody
+ * @throws IOException if the JSON string is invalid with respect to CreateTeamInputBody
+ */
+ public static CreateTeamInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, CreateTeamInputBody.class);
+ }
+
+ /**
+ * Convert an instance of CreateTeamInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/CreateUserInputBody.java b/src/main/java/ai/reveng/model/CreateUserInputBody.java
new file mode 100644
index 0000000..28740ee
--- /dev/null
+++ b/src/main/java/ai/reveng/model/CreateUserInputBody.java
@@ -0,0 +1,643 @@
+/*
+ * 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 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 ai.reveng.invoker.JSON;
+
+/**
+ * CreateUserInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class CreateUserInputBody {
+ public static final String SERIALIZED_NAME_CREDITS = "credits";
+ @SerializedName(SERIALIZED_NAME_CREDITS)
+ @javax.annotation.Nullable
+ private Long credits;
+
+ public static final String SERIALIZED_NAME_EMAIL = "email";
+ @SerializedName(SERIALIZED_NAME_EMAIL)
+ @javax.annotation.Nonnull
+ private String email;
+
+ public static final String SERIALIZED_NAME_FIRST_NAME = "first_name";
+ @SerializedName(SERIALIZED_NAME_FIRST_NAME)
+ @javax.annotation.Nullable
+ private String firstName;
+
+ public static final String SERIALIZED_NAME_LAST_NAME = "last_name";
+ @SerializedName(SERIALIZED_NAME_LAST_NAME)
+ @javax.annotation.Nullable
+ private String lastName;
+
+ public static final String SERIALIZED_NAME_PASSWORD = "password";
+ @SerializedName(SERIALIZED_NAME_PASSWORD)
+ @javax.annotation.Nonnull
+ private String password;
+
+ /**
+ * User role (defaults to USER)
+ */
+ @JsonAdapter(RoleEnum.Adapter.class)
+ public enum RoleEnum {
+ USER("USER"),
+
+ ADMIN("ADMIN"),
+
+ SUPERADMIN("SUPERADMIN"),
+
+ UNKNOWN_DEFAULT_OPEN_API("unknown_default_open_api");
+
+ private String value;
+
+ RoleEnum(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ public static RoleEnum fromValue(String value) {
+ for (RoleEnum b : RoleEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ return UNKNOWN_DEFAULT_OPEN_API;
+ }
+
+ public static class Adapter extends TypeAdapter {
+ @Override
+ public void write(final JsonWriter jsonWriter, final RoleEnum enumeration) throws IOException {
+ jsonWriter.value(enumeration.getValue());
+ }
+
+ @Override
+ public RoleEnum read(final JsonReader jsonReader) throws IOException {
+ String value = jsonReader.nextString();
+ return RoleEnum.fromValue(value);
+ }
+ }
+
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ String value = jsonElement.getAsString();
+ RoleEnum.fromValue(value);
+ }
+ }
+
+ public static final String SERIALIZED_NAME_ROLE = "role";
+ @SerializedName(SERIALIZED_NAME_ROLE)
+ @javax.annotation.Nullable
+ private RoleEnum role;
+
+ /**
+ * User tier (defaults to ENTHUSIAST)
+ */
+ @JsonAdapter(TierEnum.Adapter.class)
+ public enum TierEnum {
+ ENTHUSIAST("ENTHUSIAST"),
+
+ REVERSER("REVERSER"),
+
+ BUG_HUNTER("BUG_HUNTER"),
+
+ MALWARE_ANALYST("MALWARE_ANALYST"),
+
+ SECURITY_RESEARCHER("SECURITY_RESEARCHER"),
+
+ UNKNOWN_DEFAULT_OPEN_API("unknown_default_open_api");
+
+ private String value;
+
+ TierEnum(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ public static TierEnum fromValue(String value) {
+ for (TierEnum b : TierEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ return UNKNOWN_DEFAULT_OPEN_API;
+ }
+
+ public static class Adapter extends TypeAdapter {
+ @Override
+ public void write(final JsonWriter jsonWriter, final TierEnum enumeration) throws IOException {
+ jsonWriter.value(enumeration.getValue());
+ }
+
+ @Override
+ public TierEnum read(final JsonReader jsonReader) throws IOException {
+ String value = jsonReader.nextString();
+ return TierEnum.fromValue(value);
+ }
+ }
+
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ String value = jsonElement.getAsString();
+ TierEnum.fromValue(value);
+ }
+ }
+
+ public static final String SERIALIZED_NAME_TIER = "tier";
+ @SerializedName(SERIALIZED_NAME_TIER)
+ @javax.annotation.Nullable
+ private TierEnum tier;
+
+ public static final String SERIALIZED_NAME_TIME_ZONE = "time_zone";
+ @SerializedName(SERIALIZED_NAME_TIME_ZONE)
+ @javax.annotation.Nullable
+ private String timeZone;
+
+ public static final String SERIALIZED_NAME_USERNAME = "username";
+ @SerializedName(SERIALIZED_NAME_USERNAME)
+ @javax.annotation.Nonnull
+ private String username;
+
+ public CreateUserInputBody() {
+ }
+
+ public CreateUserInputBody credits(@javax.annotation.Nullable Long credits) {
+ this.credits = credits;
+ return this;
+ }
+
+ /**
+ * Initial credit balance in credits (1 credit = 1000 units); defaults to 10 credits
+ * minimum: 0
+ * @return credits
+ */
+ @javax.annotation.Nullable
+ public Long getCredits() {
+ return credits;
+ }
+
+ public void setCredits(@javax.annotation.Nullable Long credits) {
+ this.credits = credits;
+ }
+
+
+ public CreateUserInputBody email(@javax.annotation.Nonnull String email) {
+ this.email = email;
+ return this;
+ }
+
+ /**
+ * Email address
+ * @return email
+ */
+ @javax.annotation.Nonnull
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(@javax.annotation.Nonnull String email) {
+ this.email = email;
+ }
+
+
+ public CreateUserInputBody firstName(@javax.annotation.Nullable String firstName) {
+ this.firstName = firstName;
+ return this;
+ }
+
+ /**
+ * First name
+ * @return firstName
+ */
+ @javax.annotation.Nullable
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(@javax.annotation.Nullable String firstName) {
+ this.firstName = firstName;
+ }
+
+
+ public CreateUserInputBody lastName(@javax.annotation.Nullable String lastName) {
+ this.lastName = lastName;
+ return this;
+ }
+
+ /**
+ * Last name
+ * @return lastName
+ */
+ @javax.annotation.Nullable
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(@javax.annotation.Nullable String lastName) {
+ this.lastName = lastName;
+ }
+
+
+ public CreateUserInputBody password(@javax.annotation.Nonnull String password) {
+ this.password = password;
+ return this;
+ }
+
+ /**
+ * Initial password
+ * @return password
+ */
+ @javax.annotation.Nonnull
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(@javax.annotation.Nonnull String password) {
+ this.password = password;
+ }
+
+
+ public CreateUserInputBody role(@javax.annotation.Nullable RoleEnum role) {
+ this.role = role;
+ return this;
+ }
+
+ /**
+ * User role (defaults to USER)
+ * @return role
+ */
+ @javax.annotation.Nullable
+ public RoleEnum getRole() {
+ return role;
+ }
+
+ public void setRole(@javax.annotation.Nullable RoleEnum role) {
+ this.role = role;
+ }
+
+
+ public CreateUserInputBody tier(@javax.annotation.Nullable TierEnum tier) {
+ this.tier = tier;
+ return this;
+ }
+
+ /**
+ * User tier (defaults to ENTHUSIAST)
+ * @return tier
+ */
+ @javax.annotation.Nullable
+ public TierEnum getTier() {
+ return tier;
+ }
+
+ public void setTier(@javax.annotation.Nullable TierEnum tier) {
+ this.tier = tier;
+ }
+
+
+ public CreateUserInputBody timeZone(@javax.annotation.Nullable String timeZone) {
+ this.timeZone = timeZone;
+ return this;
+ }
+
+ /**
+ * IANA time zone
+ * @return timeZone
+ */
+ @javax.annotation.Nullable
+ public String getTimeZone() {
+ return timeZone;
+ }
+
+ public void setTimeZone(@javax.annotation.Nullable String timeZone) {
+ this.timeZone = timeZone;
+ }
+
+
+ public CreateUserInputBody username(@javax.annotation.Nonnull String username) {
+ this.username = username;
+ return this;
+ }
+
+ /**
+ * Username
+ * @return username
+ */
+ @javax.annotation.Nonnull
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(@javax.annotation.Nonnull String username) {
+ this.username = username;
+ }
+
+ /**
+ * 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 CreateUserInputBody instance itself
+ */
+ public CreateUserInputBody 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;
+ }
+ CreateUserInputBody createUserInputBody = (CreateUserInputBody) o;
+ return Objects.equals(this.credits, createUserInputBody.credits) &&
+ Objects.equals(this.email, createUserInputBody.email) &&
+ Objects.equals(this.firstName, createUserInputBody.firstName) &&
+ Objects.equals(this.lastName, createUserInputBody.lastName) &&
+ Objects.equals(this.password, createUserInputBody.password) &&
+ Objects.equals(this.role, createUserInputBody.role) &&
+ Objects.equals(this.tier, createUserInputBody.tier) &&
+ Objects.equals(this.timeZone, createUserInputBody.timeZone) &&
+ Objects.equals(this.username, createUserInputBody.username)&&
+ Objects.equals(this.additionalProperties, createUserInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(credits, email, firstName, lastName, password, role, tier, timeZone, username, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class CreateUserInputBody {\n");
+ sb.append(" credits: ").append(toIndentedString(credits)).append("\n");
+ sb.append(" email: ").append(toIndentedString(email)).append("\n");
+ sb.append(" firstName: ").append(toIndentedString(firstName)).append("\n");
+ sb.append(" lastName: ").append(toIndentedString(lastName)).append("\n");
+ sb.append(" password: ").append(toIndentedString(password)).append("\n");
+ sb.append(" role: ").append(toIndentedString(role)).append("\n");
+ sb.append(" tier: ").append(toIndentedString(tier)).append("\n");
+ sb.append(" timeZone: ").append(toIndentedString(timeZone)).append("\n");
+ sb.append(" username: ").append(toIndentedString(username)).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) {
+ return o == null ? "null" : 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("credits", "email", "first_name", "last_name", "password", "role", "tier", "time_zone", "username"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("email", "password", "username"));
+ }
+
+ /**
+ * 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 CreateUserInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!CreateUserInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in CreateUserInputBody is not found in the empty JSON string", CreateUserInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : CreateUserInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if (!jsonObj.get("email").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `email` to be a primitive type in the JSON string but got `%s`", jsonObj.get("email").toString()));
+ }
+ if ((jsonObj.get("first_name") != null && !jsonObj.get("first_name").isJsonNull()) && !jsonObj.get("first_name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `first_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("first_name").toString()));
+ }
+ if ((jsonObj.get("last_name") != null && !jsonObj.get("last_name").isJsonNull()) && !jsonObj.get("last_name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `last_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("last_name").toString()));
+ }
+ if (!jsonObj.get("password").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `password` to be a primitive type in the JSON string but got `%s`", jsonObj.get("password").toString()));
+ }
+ if ((jsonObj.get("role") != null && !jsonObj.get("role").isJsonNull()) && !jsonObj.get("role").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `role` to be a primitive type in the JSON string but got `%s`", jsonObj.get("role").toString()));
+ }
+ // validate the optional field `role`
+ if (jsonObj.get("role") != null && !jsonObj.get("role").isJsonNull()) {
+ RoleEnum.validateJsonElement(jsonObj.get("role"));
+ }
+ if ((jsonObj.get("tier") != null && !jsonObj.get("tier").isJsonNull()) && !jsonObj.get("tier").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `tier` to be a primitive type in the JSON string but got `%s`", jsonObj.get("tier").toString()));
+ }
+ // validate the optional field `tier`
+ if (jsonObj.get("tier") != null && !jsonObj.get("tier").isJsonNull()) {
+ TierEnum.validateJsonElement(jsonObj.get("tier"));
+ }
+ if ((jsonObj.get("time_zone") != null && !jsonObj.get("time_zone").isJsonNull()) && !jsonObj.get("time_zone").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `time_zone` to be a primitive type in the JSON string but got `%s`", jsonObj.get("time_zone").toString()));
+ }
+ if (!jsonObj.get("username").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `username` to be a primitive type in the JSON string but got `%s`", jsonObj.get("username").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!CreateUserInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'CreateUserInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(CreateUserInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, CreateUserInputBody 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 CreateUserInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ CreateUserInputBody 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(java.util.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 CreateUserInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of CreateUserInputBody
+ * @throws IOException if the JSON string is invalid with respect to CreateUserInputBody
+ */
+ public static CreateUserInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, CreateUserInputBody.class);
+ }
+
+ /**
+ * Convert an instance of CreateUserInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/FormFile.java b/src/main/java/ai/reveng/model/FormFile.java
new file mode 100644
index 0000000..3fdf105
--- /dev/null
+++ b/src/main/java/ai/reveng/model/FormFile.java
@@ -0,0 +1,370 @@
+/*
+ * 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 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 ai.reveng.invoker.JSON;
+
+/**
+ * FormFile
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class FormFile {
+ public static final String SERIALIZED_NAME_CONTENT_TYPE = "ContentType";
+ @SerializedName(SERIALIZED_NAME_CONTENT_TYPE)
+ @javax.annotation.Nullable
+ private String contentType;
+
+ public static final String SERIALIZED_NAME_FILENAME = "Filename";
+ @SerializedName(SERIALIZED_NAME_FILENAME)
+ @javax.annotation.Nullable
+ private String filename;
+
+ public static final String SERIALIZED_NAME_IS_SET = "IsSet";
+ @SerializedName(SERIALIZED_NAME_IS_SET)
+ @javax.annotation.Nonnull
+ private Boolean isSet;
+
+ public static final String SERIALIZED_NAME_SIZE = "Size";
+ @SerializedName(SERIALIZED_NAME_SIZE)
+ @javax.annotation.Nonnull
+ private Long size;
+
+ public FormFile() {
+ }
+
+ public FormFile contentType(@javax.annotation.Nullable String contentType) {
+ this.contentType = contentType;
+ return this;
+ }
+
+ /**
+ * Search is applied to string value
+ * @return contentType
+ */
+ @javax.annotation.Nullable
+ public String getContentType() {
+ return contentType;
+ }
+
+ public void setContentType(@javax.annotation.Nullable String contentType) {
+ this.contentType = contentType;
+ }
+
+
+ public FormFile filename(@javax.annotation.Nullable String filename) {
+ this.filename = filename;
+ return this;
+ }
+
+ /**
+ * Search is applied to string value
+ * @return filename
+ */
+ @javax.annotation.Nullable
+ public String getFilename() {
+ return filename;
+ }
+
+ public void setFilename(@javax.annotation.Nullable String filename) {
+ this.filename = filename;
+ }
+
+
+ public FormFile isSet(@javax.annotation.Nonnull Boolean isSet) {
+ this.isSet = isSet;
+ return this;
+ }
+
+ /**
+ * Get isSet
+ * @return isSet
+ */
+ @javax.annotation.Nonnull
+ public Boolean getIsSet() {
+ return isSet;
+ }
+
+ public void setIsSet(@javax.annotation.Nonnull Boolean isSet) {
+ this.isSet = isSet;
+ }
+
+
+ public FormFile size(@javax.annotation.Nonnull Long size) {
+ this.size = size;
+ return this;
+ }
+
+ /**
+ * Get size
+ * @return size
+ */
+ @javax.annotation.Nonnull
+ public Long getSize() {
+ return size;
+ }
+
+ public void setSize(@javax.annotation.Nonnull Long size) {
+ this.size = size;
+ }
+
+ /**
+ * 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 FormFile instance itself
+ */
+ public FormFile 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;
+ }
+ FormFile formFile = (FormFile) o;
+ return Objects.equals(this.contentType, formFile.contentType) &&
+ Objects.equals(this.filename, formFile.filename) &&
+ Objects.equals(this.isSet, formFile.isSet) &&
+ Objects.equals(this.size, formFile.size)&&
+ Objects.equals(this.additionalProperties, formFile.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(contentType, filename, isSet, size, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class FormFile {\n");
+ sb.append(" contentType: ").append(toIndentedString(contentType)).append("\n");
+ sb.append(" filename: ").append(toIndentedString(filename)).append("\n");
+ sb.append(" isSet: ").append(toIndentedString(isSet)).append("\n");
+ sb.append(" size: ").append(toIndentedString(size)).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) {
+ return o == null ? "null" : 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("ContentType", "Filename", "IsSet", "Size"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("ContentType", "Filename", "IsSet", "Size"));
+ }
+
+ /**
+ * 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 FormFile
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!FormFile.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in FormFile is not found in the empty JSON string", FormFile.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : FormFile.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if ((jsonObj.get("ContentType") != null && !jsonObj.get("ContentType").isJsonNull()) && !jsonObj.get("ContentType").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `ContentType` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ContentType").toString()));
+ }
+ if ((jsonObj.get("Filename") != null && !jsonObj.get("Filename").isJsonNull()) && !jsonObj.get("Filename").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `Filename` to be a primitive type in the JSON string but got `%s`", jsonObj.get("Filename").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!FormFile.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'FormFile' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(FormFile.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, FormFile 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 FormFile read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ FormFile 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(java.util.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 FormFile given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of FormFile
+ * @throws IOException if the JSON string is invalid with respect to FormFile
+ */
+ public static FormFile fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, FormFile.class);
+ }
+
+ /**
+ * Convert an instance of FormFile to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/InviteUserInputBody.java b/src/main/java/ai/reveng/model/InviteUserInputBody.java
new file mode 100644
index 0000000..bc153de
--- /dev/null
+++ b/src/main/java/ai/reveng/model/InviteUserInputBody.java
@@ -0,0 +1,430 @@
+/*
+ * 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 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 ai.reveng.invoker.JSON;
+
+/**
+ * InviteUserInputBody
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class InviteUserInputBody {
+ public static final String SERIALIZED_NAME_CREDITS = "credits";
+ @SerializedName(SERIALIZED_NAME_CREDITS)
+ @javax.annotation.Nonnull
+ private Long credits;
+
+ public static final String SERIALIZED_NAME_EMAIL = "email";
+ @SerializedName(SERIALIZED_NAME_EMAIL)
+ @javax.annotation.Nonnull
+ private String email;
+
+ public static final String SERIALIZED_NAME_FIRST_NAME = "first_name";
+ @SerializedName(SERIALIZED_NAME_FIRST_NAME)
+ @javax.annotation.Nonnull
+ private String firstName;
+
+ public static final String SERIALIZED_NAME_LAST_NAME = "last_name";
+ @SerializedName(SERIALIZED_NAME_LAST_NAME)
+ @javax.annotation.Nullable
+ private String lastName;
+
+ public static final String SERIALIZED_NAME_TEAM_ID = "team_id";
+ @SerializedName(SERIALIZED_NAME_TEAM_ID)
+ @javax.annotation.Nullable
+ private Long teamId;
+
+ public static final String SERIALIZED_NAME_USERNAME = "username";
+ @SerializedName(SERIALIZED_NAME_USERNAME)
+ @javax.annotation.Nullable
+ private String username;
+
+ public InviteUserInputBody() {
+ }
+
+ public InviteUserInputBody credits(@javax.annotation.Nonnull Long credits) {
+ this.credits = credits;
+ return this;
+ }
+
+ /**
+ * Initial credit balance for the invited user in raw units (1 credit = 1000 units).
+ * minimum: 0
+ * @return credits
+ */
+ @javax.annotation.Nonnull
+ public Long getCredits() {
+ return credits;
+ }
+
+ public void setCredits(@javax.annotation.Nonnull Long credits) {
+ this.credits = credits;
+ }
+
+
+ public InviteUserInputBody email(@javax.annotation.Nonnull String email) {
+ this.email = email;
+ return this;
+ }
+
+ /**
+ * Email address to invite
+ * @return email
+ */
+ @javax.annotation.Nonnull
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(@javax.annotation.Nonnull String email) {
+ this.email = email;
+ }
+
+
+ public InviteUserInputBody firstName(@javax.annotation.Nonnull String firstName) {
+ this.firstName = firstName;
+ return this;
+ }
+
+ /**
+ * First name included in the invite email and registration URL
+ * @return firstName
+ */
+ @javax.annotation.Nonnull
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(@javax.annotation.Nonnull String firstName) {
+ this.firstName = firstName;
+ }
+
+
+ public InviteUserInputBody lastName(@javax.annotation.Nullable String lastName) {
+ this.lastName = lastName;
+ return this;
+ }
+
+ /**
+ * Last name pre-filled in the registration URL
+ * @return lastName
+ */
+ @javax.annotation.Nullable
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(@javax.annotation.Nullable String lastName) {
+ this.lastName = lastName;
+ }
+
+
+ public InviteUserInputBody teamId(@javax.annotation.Nullable Long teamId) {
+ this.teamId = teamId;
+ return this;
+ }
+
+ /**
+ * Team to assign the invited user to
+ * minimum: 1
+ * @return teamId
+ */
+ @javax.annotation.Nullable
+ public Long getTeamId() {
+ return teamId;
+ }
+
+ public void setTeamId(@javax.annotation.Nullable Long teamId) {
+ this.teamId = teamId;
+ }
+
+
+ public InviteUserInputBody username(@javax.annotation.Nullable String username) {
+ this.username = username;
+ return this;
+ }
+
+ /**
+ * Username pre-filled in the registration URL
+ * @return username
+ */
+ @javax.annotation.Nullable
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(@javax.annotation.Nullable String username) {
+ this.username = username;
+ }
+
+ /**
+ * 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 InviteUserInputBody instance itself
+ */
+ public InviteUserInputBody 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;
+ }
+ InviteUserInputBody inviteUserInputBody = (InviteUserInputBody) o;
+ return Objects.equals(this.credits, inviteUserInputBody.credits) &&
+ Objects.equals(this.email, inviteUserInputBody.email) &&
+ Objects.equals(this.firstName, inviteUserInputBody.firstName) &&
+ Objects.equals(this.lastName, inviteUserInputBody.lastName) &&
+ Objects.equals(this.teamId, inviteUserInputBody.teamId) &&
+ Objects.equals(this.username, inviteUserInputBody.username)&&
+ Objects.equals(this.additionalProperties, inviteUserInputBody.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(credits, email, firstName, lastName, teamId, username, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class InviteUserInputBody {\n");
+ sb.append(" credits: ").append(toIndentedString(credits)).append("\n");
+ sb.append(" email: ").append(toIndentedString(email)).append("\n");
+ sb.append(" firstName: ").append(toIndentedString(firstName)).append("\n");
+ sb.append(" lastName: ").append(toIndentedString(lastName)).append("\n");
+ sb.append(" teamId: ").append(toIndentedString(teamId)).append("\n");
+ sb.append(" username: ").append(toIndentedString(username)).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) {
+ return o == null ? "null" : 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("credits", "email", "first_name", "last_name", "team_id", "username"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet(Arrays.asList("credits", "email", "first_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 InviteUserInputBody
+ */
+ public static void validateJsonElement(JsonElement jsonElement) throws IOException {
+ if (jsonElement == null) {
+ if (!InviteUserInputBody.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field(s) %s in InviteUserInputBody is not found in the empty JSON string", InviteUserInputBody.openapiRequiredFields.toString()));
+ }
+ }
+
+ // check to make sure all required properties/fields are present in the JSON string
+ for (String requiredField : InviteUserInputBody.openapiRequiredFields) {
+ if (jsonElement.getAsJsonObject().get(requiredField) == null) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "The required field `%s` is not found in the JSON string: %s", requiredField, jsonElement.toString()));
+ }
+ }
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ if (!jsonObj.get("email").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `email` to be a primitive type in the JSON string but got `%s`", jsonObj.get("email").toString()));
+ }
+ if (!jsonObj.get("first_name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `first_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("first_name").toString()));
+ }
+ if ((jsonObj.get("last_name") != null && !jsonObj.get("last_name").isJsonNull()) && !jsonObj.get("last_name").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `last_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("last_name").toString()));
+ }
+ if ((jsonObj.get("username") != null && !jsonObj.get("username").isJsonNull()) && !jsonObj.get("username").isJsonPrimitive()) {
+ throw new IllegalArgumentException(String.format(java.util.Locale.ROOT, "Expected the field `username` to be a primitive type in the JSON string but got `%s`", jsonObj.get("username").toString()));
+ }
+ }
+
+ public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public TypeAdapter create(Gson gson, TypeToken type) {
+ if (!InviteUserInputBody.class.isAssignableFrom(type.getRawType())) {
+ return null; // this class only serializes 'InviteUserInputBody' and its subtypes
+ }
+ final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
+ final TypeAdapter thisAdapter
+ = gson.getDelegateAdapter(this, TypeToken.get(InviteUserInputBody.class));
+
+ return (TypeAdapter) new TypeAdapter() {
+ @Override
+ public void write(JsonWriter out, InviteUserInputBody 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 InviteUserInputBody read(JsonReader in) throws IOException {
+ JsonElement jsonElement = elementAdapter.read(in);
+ validateJsonElement(jsonElement);
+ JsonObject jsonObj = jsonElement.getAsJsonObject();
+ // store additional fields in the deserialized instance
+ InviteUserInputBody 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(java.util.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 InviteUserInputBody given an JSON string
+ *
+ * @param jsonString JSON string
+ * @return An instance of InviteUserInputBody
+ * @throws IOException if the JSON string is invalid with respect to InviteUserInputBody
+ */
+ public static InviteUserInputBody fromJson(String jsonString) throws IOException {
+ return JSON.getGson().fromJson(jsonString, InviteUserInputBody.class);
+ }
+
+ /**
+ * Convert an instance of InviteUserInputBody to an JSON string
+ *
+ * @return JSON string
+ */
+ public String toJson() {
+ return JSON.getGson().toJson(this);
+ }
+}
+
diff --git a/src/main/java/ai/reveng/model/IssuerAllowedDomain.java b/src/main/java/ai/reveng/model/IssuerAllowedDomain.java
new file mode 100644
index 0000000..43e186b
--- /dev/null
+++ b/src/main/java/ai/reveng/model/IssuerAllowedDomain.java
@@ -0,0 +1,426 @@
+/*
+ * 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 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 ai.reveng.invoker.JSON;
+
+/**
+ * IssuerAllowedDomain
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
+public class IssuerAllowedDomain {
+ public static final String SERIALIZED_NAME_CHALLENGE_TOKEN = "challenge_token";
+ @SerializedName(SERIALIZED_NAME_CHALLENGE_TOKEN)
+ @javax.annotation.Nullable
+ private String challengeToken;
+
+ 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_DOMAIN = "domain";
+ @SerializedName(SERIALIZED_NAME_DOMAIN)
+ @javax.annotation.Nonnull
+ private String domain;
+
+ public static final String SERIALIZED_NAME_ISSUER_ALLOWED_DOMAIN_ID = "issuer_allowed_domain_id";
+ @SerializedName(SERIALIZED_NAME_ISSUER_ALLOWED_DOMAIN_ID)
+ @javax.annotation.Nonnull
+ private Long issuerAllowedDomainId;
+
+ public static final String SERIALIZED_NAME_ORGANISATION_ISSUER_ID = "organisation_issuer_id";
+ @SerializedName(SERIALIZED_NAME_ORGANISATION_ISSUER_ID)
+ @javax.annotation.Nonnull
+ private Long organisationIssuerId;
+
+ public static final String SERIALIZED_NAME_VERIFICATION_STATUS = "verification_status";
+ @SerializedName(SERIALIZED_NAME_VERIFICATION_STATUS)
+ @javax.annotation.Nonnull
+ private String verificationStatus;
+
+ public IssuerAllowedDomain() {
+ }
+
+ public IssuerAllowedDomain challengeToken(@javax.annotation.Nullable String challengeToken) {
+ this.challengeToken = challengeToken;
+ return this;
+ }
+
+ /**
+ * DNS TXT challenge token. Add a TXT record at _reveng-verification.<domain> with this value.
+ * @return challengeToken
+ */
+ @javax.annotation.Nullable
+ public String getChallengeToken() {
+ return challengeToken;
+ }
+
+ public void setChallengeToken(@javax.annotation.Nullable String challengeToken) {
+ this.challengeToken = challengeToken;
+ }
+
+
+ public IssuerAllowedDomain createdAt(@javax.annotation.Nonnull OffsetDateTime createdAt) {
+ this.createdAt = createdAt;
+ return this;
+ }
+
+ /**
+ * Get createdAt
+ * @return createdAt
+ */
+ @javax.annotation.Nonnull
+ public OffsetDateTime getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(@javax.annotation.Nonnull OffsetDateTime createdAt) {
+ this.createdAt = createdAt;
+ }
+
+
+ public IssuerAllowedDomain domain(@javax.annotation.Nonnull String domain) {
+ this.domain = domain;
+ return this;
+ }
+
+ /**
+ * Email domain (e.g. acme.com)
+ * @return domain
+ */
+ @javax.annotation.Nonnull
+ public String getDomain() {
+ return domain;
+ }
+
+ public void setDomain(@javax.annotation.Nonnull String domain) {
+ this.domain = domain;
+ }
+
+
+ public IssuerAllowedDomain issuerAllowedDomainId(@javax.annotation.Nonnull Long issuerAllowedDomainId) {
+ this.issuerAllowedDomainId = issuerAllowedDomainId;
+ return this;
+ }
+
+ /**
+ * Get issuerAllowedDomainId
+ * @return issuerAllowedDomainId
+ */
+ @javax.annotation.Nonnull
+ public Long getIssuerAllowedDomainId() {
+ return issuerAllowedDomainId;
+ }
+
+ public void setIssuerAllowedDomainId(@javax.annotation.Nonnull Long issuerAllowedDomainId) {
+ this.issuerAllowedDomainId = issuerAllowedDomainId;
+ }
+
+
+ public IssuerAllowedDomain organisationIssuerId(@javax.annotation.Nonnull Long organisationIssuerId) {
+ this.organisationIssuerId = organisationIssuerId;
+ return this;
+ }
+
+ /**
+ * Get organisationIssuerId
+ * @return organisationIssuerId
+ */
+ @javax.annotation.Nonnull
+ public Long getOrganisationIssuerId() {
+ return organisationIssuerId;
+ }
+
+ public void setOrganisationIssuerId(@javax.annotation.Nonnull Long organisationIssuerId) {
+ this.organisationIssuerId = organisationIssuerId;
+ }
+
+
+ public IssuerAllowedDomain verificationStatus(@javax.annotation.Nonnull String verificationStatus) {
+ this.verificationStatus = verificationStatus;
+ return this;
+ }
+
+ /**
+ * Domain ownership verification status: PENDING, VERIFIED, or FAILED
+ * @return verificationStatus
+ */
+ @javax.annotation.Nonnull
+ public String getVerificationStatus() {
+ return verificationStatus;
+ }
+
+ public void setVerificationStatus(@javax.annotation.Nonnull String verificationStatus) {
+ this.verificationStatus = verificationStatus;
+ }
+
+ /**
+ * 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 IssuerAllowedDomain instance itself
+ */
+ public IssuerAllowedDomain 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;
+ }
+ IssuerAllowedDomain issuerAllowedDomain = (IssuerAllowedDomain) o;
+ return Objects.equals(this.challengeToken, issuerAllowedDomain.challengeToken) &&
+ Objects.equals(this.createdAt, issuerAllowedDomain.createdAt) &&
+ Objects.equals(this.domain, issuerAllowedDomain.domain) &&
+ Objects.equals(this.issuerAllowedDomainId, issuerAllowedDomain.issuerAllowedDomainId) &&
+ Objects.equals(this.organisationIssuerId, issuerAllowedDomain.organisationIssuerId) &&
+ Objects.equals(this.verificationStatus, issuerAllowedDomain.verificationStatus)&&
+ Objects.equals(this.additionalProperties, issuerAllowedDomain.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(challengeToken, createdAt, domain, issuerAllowedDomainId, organisationIssuerId, verificationStatus, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class IssuerAllowedDomain {\n");
+ sb.append(" challengeToken: ").append(toIndentedString(challengeToken)).append("\n");
+ sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n");
+ sb.append(" domain: ").append(toIndentedString(domain)).append("\n");
+ sb.append(" issuerAllowedDomainId: ").append(toIndentedString(issuerAllowedDomainId)).append("\n");
+ sb.append(" organisationIssuerId: ").append(toIndentedString(organisationIssuerId)).append("\n");
+ sb.append(" verificationStatus: ").append(toIndentedString(verificationStatus)).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) {
+ return o == null ? "null" : 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("challenge_token", "created_at", "domain", "issuer_allowed_domain_id", "organisation_issuer_id", "verification_status"));
+
+ // a set of required properties/fields (JSON key names)
+ openapiRequiredFields = new HashSet