From 5b36172d8518f29e2d9fd797cc9a8faf7b65cc14 Mon Sep 17 00:00:00 2001 From: fireblocks_dx_team Date: Wed, 23 Sep 2026 10:27:16 +0000 Subject: [PATCH] Generated SDK #2874610640 --- .openapi-generator/FILES | 108 + CHANGELOG.md | 239 -- README.md | 51 +- api/openapi.yaml | 2194 ++++++++++++++--- build.gradle | 2 +- docs/ApprovalApiKey.md | 19 + docs/ApprovalApiPublicKey.md | 26 + docs/ApprovalsBetaApi.md | 326 +++ docs/ApproveApprovalRequest.md | 15 + docs/AuditEventTypeEnum.md | 21 + docs/AuditLogEntry.md | 16 + docs/BypassReasonEnum.md | 29 + docs/ComplianceOrchestratorBetaApi.md | 335 +++ docs/ComplianceScreeningStatusEnum.md | 17 + docs/ConnectorStatusEnum.md | 17 + docs/ConnectorVerdictEnum.md | 15 + docs/CreateWebhookOauthRequest.md | 2 +- docs/CreateWebhookRequest.md | 4 +- docs/GetScreeningResultResponse.md | 19 + docs/GetWorkflowResponse.md | 20 + docs/InternalTransferResponse.md | 2 + docs/ListApprovalApiKeysResponse.md | 15 + docs/ParameterWithValue.md | 2 +- docs/RegisterApprovalApiKeyRequest.md | 15 + docs/RegisterApprovalApiKeyResponse.md | 14 + docs/RiskLevelEnum.md | 19 + docs/Rule.md | 18 + docs/RuleActionEnum.md | 23 + docs/RuleCondition.md | 16 + docs/RuleConditionOperatorEnum.md | 21 + docs/RuleSet.md | 14 + docs/ScreeningInput.md | 15 + docs/ScreeningOperationEnum.md | 15 + docs/ScreeningOutcomeEnum.md | 13 + docs/ScreeningPayload.md | 24 + docs/StepConfig.md | 17 + docs/StepOperationConfig.md | 23 + docs/StepResult.md | 27 + docs/TransactionReceiptResponse.md | 6 +- docs/TransferDirectionEnum.md | 13 + docs/TriggerRuleOutcomeEnum.md | 15 + docs/TriggerScreeningRequest.md | 15 + docs/TriggerScreeningResponse.md | 15 + docs/UpdateWebhookOauthRequest.md | 4 +- docs/UpdateWebhookRequest.md | 4 +- docs/UpdateWorkflowStatusRequest.md | 14 + docs/UpdateWorkflowStatusResponse.md | 15 + docs/WebhookMtlsCsrResponse.md | 1 + docs/WebhookMtlsKeyAlgorithm.md | 13 + docs/WebhookOauthCredentials.md | 2 +- docs/WebhooksV2Api.md | 16 +- docs/WorkflowStatusEnum.md | 13 + pom.xml | 2 +- .../com/fireblocks/sdk/Configuration.java | 2 +- .../java/com/fireblocks/sdk/Fireblocks.java | 8 + .../fireblocks/sdk/api/ApprovalsBetaApi.java | 377 +++ .../api/ComplianceOrchestratorBetaApi.java | 461 ++++ .../com/fireblocks/sdk/api/WebhooksV2Api.java | 53 +- .../fireblocks/sdk/model/ApprovalApiKey.java | 353 +++ .../sdk/model/ApprovalApiPublicKey.java | 228 ++ .../sdk/model/ApproveApprovalRequest.java | 190 ++ .../sdk/model/AuditEventTypeEnum.java | 80 + .../fireblocks/sdk/model/AuditLogEntry.java | 233 ++ .../sdk/model/BypassReasonEnum.java | 95 + .../model/ComplianceScreeningStatusEnum.java | 72 + .../sdk/model/ConnectorStatusEnum.java | 73 + .../sdk/model/ConnectorVerdictEnum.java | 69 + .../sdk/model/CreateWebhookOauthRequest.java | 14 +- .../sdk/model/CreateWebhookRequest.java | 28 +- .../sdk/model/GetScreeningResultResponse.java | 401 +++ .../sdk/model/GetWorkflowResponse.java | 419 ++++ .../sdk/model/InternalTransferResponse.java | 111 +- .../model/ListApprovalApiKeysResponse.java | 211 ++ .../sdk/model/ParameterWithValue.java | 14 +- .../model/RegisterApprovalApiKeyRequest.java | 194 ++ .../model/RegisterApprovalApiKeyResponse.java | 147 ++ .../fireblocks/sdk/model/RiskLevelEnum.java | 73 + .../java/com/fireblocks/sdk/model/Rule.java | 323 +++ .../fireblocks/sdk/model/RuleActionEnum.java | 84 + .../fireblocks/sdk/model/RuleCondition.java | 232 ++ .../sdk/model/RuleConditionOperatorEnum.java | 75 + .../com/fireblocks/sdk/model/RuleSet.java | 163 ++ .../fireblocks/sdk/model/ScreeningInput.java | 212 ++ .../sdk/model/ScreeningOperationEnum.java | 75 + .../sdk/model/ScreeningOutcomeEnum.java | 68 + .../sdk/model/ScreeningPayload.java | 582 +++++ .../com/fireblocks/sdk/model/StepConfig.java | 300 +++ .../sdk/model/StepOperationConfig.java | 634 +++++ .../com/fireblocks/sdk/model/StepResult.java | 718 ++++++ .../sdk/model/TransactionReceiptResponse.java | 30 +- .../sdk/model/TransferDirectionEnum.java | 68 + .../sdk/model/TriggerRuleOutcomeEnum.java | 72 + .../sdk/model/TriggerScreeningRequest.java | 184 ++ .../sdk/model/TriggerScreeningResponse.java | 193 ++ .../sdk/model/UpdateWebhookOauthRequest.java | 14 +- .../sdk/model/UpdateWebhookRequest.java | 11 +- .../model/UpdateWorkflowStatusRequest.java | 148 ++ .../model/UpdateWorkflowStatusResponse.java | 192 ++ .../sdk/model/WebhookMtlsCsrResponse.java | 53 +- .../sdk/model/WebhookMtlsKeyAlgorithm.java | 69 + .../sdk/model/WebhookOauthCredentials.java | 11 +- .../sdk/model/WorkflowStatusEnum.java | 69 + .../com/fireblocks/sdk/FireblocksTest.java | 9 + .../sdk/api/ApprovalsBetaApiTest.java | 75 + .../ComplianceOrchestratorBetaApiTest.java | 93 + .../fireblocks/sdk/api/WebhooksV2ApiTest.java | 28 +- .../sdk/model/ApprovalApiKeyTest.java | 63 + .../sdk/model/ApprovalApiPublicKeyTest.java | 39 + .../sdk/model/ApproveApprovalRequestTest.java | 39 + .../sdk/model/AuditEventTypeEnumTest.java | 25 + .../sdk/model/AuditLogEntryTest.java | 45 + .../sdk/model/BypassReasonEnumTest.java | 25 + .../ComplianceScreeningStatusEnumTest.java | 25 + .../sdk/model/ConnectorStatusEnumTest.java | 25 + .../sdk/model/ConnectorVerdictEnumTest.java | 25 + .../model/GetScreeningResultResponseTest.java | 63 + .../sdk/model/GetWorkflowResponseTest.java | 69 + .../model/InternalTransferResponseTest.java | 12 + .../ListApprovalApiKeysResponseTest.java | 39 + .../RegisterApprovalApiKeyRequestTest.java | 39 + .../RegisterApprovalApiKeyResponseTest.java | 33 + .../sdk/model/RiskLevelEnumTest.java | 25 + .../sdk/model/RuleActionEnumTest.java | 25 + .../model/RuleConditionOperatorEnumTest.java | 25 + .../sdk/model/RuleConditionTest.java | 45 + .../com/fireblocks/sdk/model/RuleSetTest.java | 33 + .../com/fireblocks/sdk/model/RuleTest.java | 57 + .../sdk/model/ScreeningInputTest.java | 39 + .../sdk/model/ScreeningOperationEnumTest.java | 25 + .../sdk/model/ScreeningOutcomeEnumTest.java | 25 + .../sdk/model/ScreeningPayloadTest.java | 93 + .../fireblocks/sdk/model/StepConfigTest.java | 51 + .../sdk/model/StepOperationConfigTest.java | 87 + .../fireblocks/sdk/model/StepResultTest.java | 111 + .../sdk/model/TransferDirectionEnumTest.java | 25 + .../sdk/model/TriggerRuleOutcomeEnumTest.java | 25 + .../model/TriggerScreeningRequestTest.java | 39 + .../model/TriggerScreeningResponseTest.java | 39 + .../UpdateWorkflowStatusRequestTest.java | 33 + .../UpdateWorkflowStatusResponseTest.java | 39 + .../sdk/model/WebhookMtlsCsrResponseTest.java | 6 + .../model/WebhookMtlsKeyAlgorithmTest.java | 25 + .../sdk/model/WorkflowStatusEnumTest.java | 25 + 143 files changed, 13423 insertions(+), 647 deletions(-) delete mode 100644 CHANGELOG.md create mode 100644 docs/ApprovalApiKey.md create mode 100644 docs/ApprovalApiPublicKey.md create mode 100644 docs/ApproveApprovalRequest.md create mode 100644 docs/AuditEventTypeEnum.md create mode 100644 docs/AuditLogEntry.md create mode 100644 docs/BypassReasonEnum.md create mode 100644 docs/ComplianceOrchestratorBetaApi.md create mode 100644 docs/ComplianceScreeningStatusEnum.md create mode 100644 docs/ConnectorStatusEnum.md create mode 100644 docs/ConnectorVerdictEnum.md create mode 100644 docs/GetScreeningResultResponse.md create mode 100644 docs/GetWorkflowResponse.md create mode 100644 docs/ListApprovalApiKeysResponse.md create mode 100644 docs/RegisterApprovalApiKeyRequest.md create mode 100644 docs/RegisterApprovalApiKeyResponse.md create mode 100644 docs/RiskLevelEnum.md create mode 100644 docs/Rule.md create mode 100644 docs/RuleActionEnum.md create mode 100644 docs/RuleCondition.md create mode 100644 docs/RuleConditionOperatorEnum.md create mode 100644 docs/RuleSet.md create mode 100644 docs/ScreeningInput.md create mode 100644 docs/ScreeningOperationEnum.md create mode 100644 docs/ScreeningOutcomeEnum.md create mode 100644 docs/ScreeningPayload.md create mode 100644 docs/StepConfig.md create mode 100644 docs/StepOperationConfig.md create mode 100644 docs/StepResult.md create mode 100644 docs/TransferDirectionEnum.md create mode 100644 docs/TriggerRuleOutcomeEnum.md create mode 100644 docs/TriggerScreeningRequest.md create mode 100644 docs/TriggerScreeningResponse.md create mode 100644 docs/UpdateWorkflowStatusRequest.md create mode 100644 docs/UpdateWorkflowStatusResponse.md create mode 100644 docs/WebhookMtlsKeyAlgorithm.md create mode 100644 docs/WorkflowStatusEnum.md create mode 100644 src/main/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApi.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ApprovalApiKey.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ApprovalApiPublicKey.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ApproveApprovalRequest.java create mode 100644 src/main/java/com/fireblocks/sdk/model/AuditEventTypeEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/AuditLogEntry.java create mode 100644 src/main/java/com/fireblocks/sdk/model/BypassReasonEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ComplianceScreeningStatusEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ConnectorStatusEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ConnectorVerdictEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/GetScreeningResultResponse.java create mode 100644 src/main/java/com/fireblocks/sdk/model/GetWorkflowResponse.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponse.java create mode 100644 src/main/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyRequest.java create mode 100644 src/main/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyResponse.java create mode 100644 src/main/java/com/fireblocks/sdk/model/RiskLevelEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/Rule.java create mode 100644 src/main/java/com/fireblocks/sdk/model/RuleActionEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/RuleCondition.java create mode 100644 src/main/java/com/fireblocks/sdk/model/RuleConditionOperatorEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/RuleSet.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ScreeningInput.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ScreeningOperationEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ScreeningOutcomeEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/ScreeningPayload.java create mode 100644 src/main/java/com/fireblocks/sdk/model/StepConfig.java create mode 100644 src/main/java/com/fireblocks/sdk/model/StepOperationConfig.java create mode 100644 src/main/java/com/fireblocks/sdk/model/StepResult.java create mode 100644 src/main/java/com/fireblocks/sdk/model/TransferDirectionEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/TriggerRuleOutcomeEnum.java create mode 100644 src/main/java/com/fireblocks/sdk/model/TriggerScreeningRequest.java create mode 100644 src/main/java/com/fireblocks/sdk/model/TriggerScreeningResponse.java create mode 100644 src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequest.java create mode 100644 src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponse.java create mode 100644 src/main/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithm.java create mode 100644 src/main/java/com/fireblocks/sdk/model/WorkflowStatusEnum.java create mode 100644 src/test/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApiTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ApprovalApiKeyTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ApprovalApiPublicKeyTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ApproveApprovalRequestTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/AuditEventTypeEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/AuditLogEntryTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/BypassReasonEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ComplianceScreeningStatusEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ConnectorStatusEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ConnectorVerdictEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/GetScreeningResultResponseTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/GetWorkflowResponseTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponseTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyRequestTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyResponseTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/RiskLevelEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/RuleActionEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/RuleConditionOperatorEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/RuleConditionTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/RuleSetTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/RuleTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ScreeningInputTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ScreeningOperationEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ScreeningOutcomeEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/ScreeningPayloadTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/StepConfigTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/StepOperationConfigTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/StepResultTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/TransferDirectionEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/TriggerRuleOutcomeEnumTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/TriggerScreeningRequestTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/TriggerScreeningResponseTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequestTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponseTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithmTest.java create mode 100644 src/test/java/com/fireblocks/sdk/model/WorkflowStatusEnumTest.java diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 661b79c0..facdac35 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -104,9 +104,12 @@ docs/AmountRangeMinMax2.md docs/ApiKey.md docs/ApiKeysPaginatedResponse.md docs/ApiUserApi.md +docs/ApprovalApiKey.md +docs/ApprovalApiPublicKey.md docs/ApprovalRequest.md docs/ApprovalRequestItem.md docs/ApprovalsBetaApi.md +docs/ApproveApprovalRequest.md docs/ApproversConfig.md docs/ApproversConfigApprovalGroupsInner.md docs/Apy.md @@ -144,7 +147,9 @@ docs/AssignVaultsToLegalEntityRequest.md docs/AssignVaultsToLegalEntityResponse.md docs/AttachDetachUtxoLabelsRequest.md docs/AttachDetachUtxoLabelsResponse.md +docs/AuditEventTypeEnum.md docs/AuditLogData.md +docs/AuditLogEntry.md docs/AuditLogsApi.md docs/AuditorData.md docs/AuthorizationGroups.md @@ -186,6 +191,7 @@ docs/ByorkVerdictEnum.md docs/ByorkVerdictRequest.md docs/ByorkVerdictResponse.md docs/ByorkVerdictResponseStatusEnum.md +docs/BypassReasonEnum.md docs/CallAccepted.md docs/CallbackHandler.md docs/CallbackHandlerRequest.md @@ -221,6 +227,7 @@ docs/CollectionTokenMetadataAttributeDto.md docs/CollectionTokenMetadataDto.md docs/CollectionType.md docs/ComplianceApi.md +docs/ComplianceOrchestratorBetaApi.md docs/ComplianceRequirement.md docs/ComplianceResultFullPayload.md docs/ComplianceResultStatusesEnum.md @@ -228,6 +235,7 @@ docs/ComplianceResults.md docs/ComplianceScreeningConfigurationApi.md docs/ComplianceScreeningResult.md docs/ComplianceScreeningResultFullPayload.md +docs/ComplianceScreeningStatusEnum.md docs/ConfigChangeRequestStatus.md docs/ConfigConversionOperationSnapshot.md docs/ConfigDisbursementOperationSnapshot.md @@ -253,6 +261,8 @@ docs/ConnectedAccountsBetaApi.md docs/ConnectedAccountsResponse.md docs/ConnectedSingleAccount.md docs/ConnectedSingleAccountResponse.md +docs/ConnectorStatusEnum.md +docs/ConnectorVerdictEnum.md docs/ConsoleUser.md docs/ConsoleUserApi.md docs/Contact.md @@ -543,11 +553,13 @@ docs/GetPagedExchangeAccountsResponse.md docs/GetPagedExchangeAccountsResponsePaging.md docs/GetPositionsResponse.md docs/GetProvidersResponse.md +docs/GetScreeningResultResponse.md docs/GetSigningKeyResponseDto.md docs/GetTestWalletAddressResponse.md docs/GetTransactionOperation.md docs/GetValidationKeyResponseDto.md docs/GetWhitelistIpAddressesResponse.md +docs/GetWorkflowResponse.md docs/GetWorkspaceStatusResponse.md docs/GleifData.md docs/GleifOtherLegalEntityName.md @@ -613,6 +625,7 @@ docs/LegacySrcOrDestAttributesInner.md docs/LegalEntityRegistration.md docs/LeiStatus.md docs/LinkedTokensCount.md +docs/ListApprovalApiKeysResponse.md docs/ListApprovalsResponse.md docs/ListAssetsResponse.md docs/ListBlockchainsResponse.md @@ -820,6 +833,8 @@ docs/ReadCallFunctionDtoAbiFunction.md docs/ReasonForPaymentEnum.md docs/RecipientHandle.md docs/RedeemFundsToLinkedDDAResponse.md +docs/RegisterApprovalApiKeyRequest.md +docs/RegisterApprovalApiKeyResponse.md docs/RegisterLegalEntityRequest.md docs/RegisterNewAssetRequest.md docs/ReissueMultichainTokenRequest.md @@ -862,9 +877,15 @@ docs/RetryRequoteRequestDetails.md docs/RetryRequoteTypeEnum.md docs/RewardInfo.md docs/RewardsInfo.md +docs/RiskLevelEnum.md docs/RoleDetails.md docs/RoleDetails2.md docs/RoleGrantee.md +docs/Rule.md +docs/RuleActionEnum.md +docs/RuleCondition.md +docs/RuleConditionOperatorEnum.md +docs/RuleSet.md docs/RulesetQuorum.md docs/SEPAAddress.md docs/SEPADestination.md @@ -878,11 +899,15 @@ docs/ScreeningAmlAlert.md docs/ScreeningAmlMatchedRule.md docs/ScreeningAmlResult.md docs/ScreeningConfigurationsRequest.md +docs/ScreeningInput.md docs/ScreeningMetadataConfig.md +docs/ScreeningOperationEnum.md docs/ScreeningOperationExecution.md docs/ScreeningOperationExecutionOutput.md docs/ScreeningOperationFailure.md docs/ScreeningOperationType.md +docs/ScreeningOutcomeEnum.md +docs/ScreeningPayload.md docs/ScreeningPolicyAmount.md docs/ScreeningPolicyAmountRange.md docs/ScreeningPolicyCurrency.md @@ -997,6 +1022,9 @@ docs/StakingPositionsPaginatedResponse.md docs/StakingProvider.md docs/Status.md docs/StellarRippleCreateParamsDto.md +docs/StepConfig.md +docs/StepOperationConfig.md +docs/StepResult.md docs/SubmitOrderRequirementRequest.md docs/SupportedBlockChainsResponse.md docs/SupportedBlockchain.md @@ -1149,6 +1177,7 @@ docs/TransactionResponseDestination.md docs/TransactionTag.md docs/TransactionsApi.md docs/TransferConfigOperation.md +docs/TransferDirectionEnum.md docs/TransferOperationConfigParams.md docs/TransferOperationExecution.md docs/TransferOperationExecutionOutput.md @@ -1219,6 +1248,9 @@ docs/TravelRuleValidateTransactionRequest.md docs/TravelRuleValidateTransactionResponse.md docs/TravelRuleVaspForVault.md docs/TravelRuleVerdictEnum.md +docs/TriggerRuleOutcomeEnum.md +docs/TriggerScreeningRequest.md +docs/TriggerScreeningResponse.md docs/TriggerValidationFlowResponse.md docs/TrustProofOfAddressCreateResponse.md docs/TrustProofOfAddressRequest.md @@ -1249,6 +1281,8 @@ docs/UpdateVaultAccountAssetAddressRequest.md docs/UpdateVaultAccountRequest.md docs/UpdateWebhookOauthRequest.md docs/UpdateWebhookRequest.md +docs/UpdateWorkflowStatusRequest.md +docs/UpdateWorkflowStatusResponse.md docs/UsWirePaymentInfo.md docs/UsdcGatewayWalletAsset.md docs/UsdcGatewayWalletInfoResponse.md @@ -1298,6 +1332,7 @@ docs/WebhookEvent.md docs/WebhookMetric.md docs/WebhookMtls.md docs/WebhookMtlsCsrResponse.md +docs/WebhookMtlsKeyAlgorithm.md docs/WebhookOauthCredentials.md docs/WebhookPaginatedResponse.md docs/WebhooksApi.md @@ -1307,6 +1342,7 @@ docs/WithdrawRequest.md docs/WorkflowConfigStatus.md docs/WorkflowConfigurationId.md docs/WorkflowExecutionOperation.md +docs/WorkflowStatusEnum.md docs/Workspace.md docs/WorkspaceApi.md docs/WorkspaceStatusBetaApi.md @@ -1348,6 +1384,7 @@ src/main/java/com/fireblocks/sdk/api/AuditLogsApi.java src/main/java/com/fireblocks/sdk/api/BlockchainLinkBetaApi.java src/main/java/com/fireblocks/sdk/api/BlockchainsAssetsApi.java src/main/java/com/fireblocks/sdk/api/ComplianceApi.java +src/main/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApi.java src/main/java/com/fireblocks/sdk/api/ComplianceScreeningConfigurationApi.java src/main/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApi.java src/main/java/com/fireblocks/sdk/api/ConsoleUserApi.java @@ -1493,8 +1530,11 @@ src/main/java/com/fireblocks/sdk/model/AmountRangeMinMax.java src/main/java/com/fireblocks/sdk/model/AmountRangeMinMax2.java src/main/java/com/fireblocks/sdk/model/ApiKey.java src/main/java/com/fireblocks/sdk/model/ApiKeysPaginatedResponse.java +src/main/java/com/fireblocks/sdk/model/ApprovalApiKey.java +src/main/java/com/fireblocks/sdk/model/ApprovalApiPublicKey.java src/main/java/com/fireblocks/sdk/model/ApprovalRequest.java src/main/java/com/fireblocks/sdk/model/ApprovalRequestItem.java +src/main/java/com/fireblocks/sdk/model/ApproveApprovalRequest.java src/main/java/com/fireblocks/sdk/model/ApproversConfig.java src/main/java/com/fireblocks/sdk/model/ApproversConfigApprovalGroupsInner.java src/main/java/com/fireblocks/sdk/model/Apy.java @@ -1532,7 +1572,9 @@ src/main/java/com/fireblocks/sdk/model/AssignVaultsToLegalEntityRequest.java src/main/java/com/fireblocks/sdk/model/AssignVaultsToLegalEntityResponse.java src/main/java/com/fireblocks/sdk/model/AttachDetachUtxoLabelsRequest.java src/main/java/com/fireblocks/sdk/model/AttachDetachUtxoLabelsResponse.java +src/main/java/com/fireblocks/sdk/model/AuditEventTypeEnum.java src/main/java/com/fireblocks/sdk/model/AuditLogData.java +src/main/java/com/fireblocks/sdk/model/AuditLogEntry.java src/main/java/com/fireblocks/sdk/model/AuditorData.java src/main/java/com/fireblocks/sdk/model/AuthorizationGroups.java src/main/java/com/fireblocks/sdk/model/AuthorizationInfo.java @@ -1571,6 +1613,7 @@ src/main/java/com/fireblocks/sdk/model/ByorkVerdictEnum.java src/main/java/com/fireblocks/sdk/model/ByorkVerdictRequest.java src/main/java/com/fireblocks/sdk/model/ByorkVerdictResponse.java src/main/java/com/fireblocks/sdk/model/ByorkVerdictResponseStatusEnum.java +src/main/java/com/fireblocks/sdk/model/BypassReasonEnum.java src/main/java/com/fireblocks/sdk/model/CallAccepted.java src/main/java/com/fireblocks/sdk/model/CallbackHandler.java src/main/java/com/fireblocks/sdk/model/CallbackHandlerRequest.java @@ -1611,6 +1654,7 @@ src/main/java/com/fireblocks/sdk/model/ComplianceResultStatusesEnum.java src/main/java/com/fireblocks/sdk/model/ComplianceResults.java src/main/java/com/fireblocks/sdk/model/ComplianceScreeningResult.java src/main/java/com/fireblocks/sdk/model/ComplianceScreeningResultFullPayload.java +src/main/java/com/fireblocks/sdk/model/ComplianceScreeningStatusEnum.java src/main/java/com/fireblocks/sdk/model/ConfigChangeRequestStatus.java src/main/java/com/fireblocks/sdk/model/ConfigConversionOperationSnapshot.java src/main/java/com/fireblocks/sdk/model/ConfigDisbursementOperationSnapshot.java @@ -1635,6 +1679,8 @@ src/main/java/com/fireblocks/sdk/model/ConnectedAccountType.java src/main/java/com/fireblocks/sdk/model/ConnectedAccountsResponse.java src/main/java/com/fireblocks/sdk/model/ConnectedSingleAccount.java src/main/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponse.java +src/main/java/com/fireblocks/sdk/model/ConnectorStatusEnum.java +src/main/java/com/fireblocks/sdk/model/ConnectorVerdictEnum.java src/main/java/com/fireblocks/sdk/model/ConsoleUser.java src/main/java/com/fireblocks/sdk/model/Contact.java src/main/java/com/fireblocks/sdk/model/ContactApprovalRequest.java @@ -1911,11 +1957,13 @@ src/main/java/com/fireblocks/sdk/model/GetPagedExchangeAccountsResponse.java src/main/java/com/fireblocks/sdk/model/GetPagedExchangeAccountsResponsePaging.java src/main/java/com/fireblocks/sdk/model/GetPositionsResponse.java src/main/java/com/fireblocks/sdk/model/GetProvidersResponse.java +src/main/java/com/fireblocks/sdk/model/GetScreeningResultResponse.java src/main/java/com/fireblocks/sdk/model/GetSigningKeyResponseDto.java src/main/java/com/fireblocks/sdk/model/GetTestWalletAddressResponse.java src/main/java/com/fireblocks/sdk/model/GetTransactionOperation.java src/main/java/com/fireblocks/sdk/model/GetValidationKeyResponseDto.java src/main/java/com/fireblocks/sdk/model/GetWhitelistIpAddressesResponse.java +src/main/java/com/fireblocks/sdk/model/GetWorkflowResponse.java src/main/java/com/fireblocks/sdk/model/GetWorkspaceStatusResponse.java src/main/java/com/fireblocks/sdk/model/GleifData.java src/main/java/com/fireblocks/sdk/model/GleifOtherLegalEntityName.java @@ -1978,6 +2026,7 @@ src/main/java/com/fireblocks/sdk/model/LegacySrcOrDestAttributesInner.java src/main/java/com/fireblocks/sdk/model/LegalEntityRegistration.java src/main/java/com/fireblocks/sdk/model/LeiStatus.java src/main/java/com/fireblocks/sdk/model/LinkedTokensCount.java +src/main/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponse.java src/main/java/com/fireblocks/sdk/model/ListApprovalsResponse.java src/main/java/com/fireblocks/sdk/model/ListAssetsResponse.java src/main/java/com/fireblocks/sdk/model/ListBlockchainsResponse.java @@ -2176,6 +2225,8 @@ src/main/java/com/fireblocks/sdk/model/ReadCallFunctionDtoAbiFunction.java src/main/java/com/fireblocks/sdk/model/ReasonForPaymentEnum.java src/main/java/com/fireblocks/sdk/model/RecipientHandle.java src/main/java/com/fireblocks/sdk/model/RedeemFundsToLinkedDDAResponse.java +src/main/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyRequest.java +src/main/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyResponse.java src/main/java/com/fireblocks/sdk/model/RegisterLegalEntityRequest.java src/main/java/com/fireblocks/sdk/model/RegisterNewAssetRequest.java src/main/java/com/fireblocks/sdk/model/ReissueMultichainTokenRequest.java @@ -2216,9 +2267,15 @@ src/main/java/com/fireblocks/sdk/model/RetryRequoteRequestDetails.java src/main/java/com/fireblocks/sdk/model/RetryRequoteTypeEnum.java src/main/java/com/fireblocks/sdk/model/RewardInfo.java src/main/java/com/fireblocks/sdk/model/RewardsInfo.java +src/main/java/com/fireblocks/sdk/model/RiskLevelEnum.java src/main/java/com/fireblocks/sdk/model/RoleDetails.java src/main/java/com/fireblocks/sdk/model/RoleDetails2.java src/main/java/com/fireblocks/sdk/model/RoleGrantee.java +src/main/java/com/fireblocks/sdk/model/Rule.java +src/main/java/com/fireblocks/sdk/model/RuleActionEnum.java +src/main/java/com/fireblocks/sdk/model/RuleCondition.java +src/main/java/com/fireblocks/sdk/model/RuleConditionOperatorEnum.java +src/main/java/com/fireblocks/sdk/model/RuleSet.java src/main/java/com/fireblocks/sdk/model/RulesetQuorum.java src/main/java/com/fireblocks/sdk/model/SEPAAddress.java src/main/java/com/fireblocks/sdk/model/SEPADestination.java @@ -2232,11 +2289,15 @@ src/main/java/com/fireblocks/sdk/model/ScreeningAmlAlert.java src/main/java/com/fireblocks/sdk/model/ScreeningAmlMatchedRule.java src/main/java/com/fireblocks/sdk/model/ScreeningAmlResult.java src/main/java/com/fireblocks/sdk/model/ScreeningConfigurationsRequest.java +src/main/java/com/fireblocks/sdk/model/ScreeningInput.java src/main/java/com/fireblocks/sdk/model/ScreeningMetadataConfig.java +src/main/java/com/fireblocks/sdk/model/ScreeningOperationEnum.java src/main/java/com/fireblocks/sdk/model/ScreeningOperationExecution.java src/main/java/com/fireblocks/sdk/model/ScreeningOperationExecutionOutput.java src/main/java/com/fireblocks/sdk/model/ScreeningOperationFailure.java src/main/java/com/fireblocks/sdk/model/ScreeningOperationType.java +src/main/java/com/fireblocks/sdk/model/ScreeningOutcomeEnum.java +src/main/java/com/fireblocks/sdk/model/ScreeningPayload.java src/main/java/com/fireblocks/sdk/model/ScreeningPolicyAmount.java src/main/java/com/fireblocks/sdk/model/ScreeningPolicyAmountRange.java src/main/java/com/fireblocks/sdk/model/ScreeningPolicyCurrency.java @@ -2348,6 +2409,9 @@ src/main/java/com/fireblocks/sdk/model/StakingPositionsPaginatedResponse.java src/main/java/com/fireblocks/sdk/model/StakingProvider.java src/main/java/com/fireblocks/sdk/model/Status.java src/main/java/com/fireblocks/sdk/model/StellarRippleCreateParamsDto.java +src/main/java/com/fireblocks/sdk/model/StepConfig.java +src/main/java/com/fireblocks/sdk/model/StepOperationConfig.java +src/main/java/com/fireblocks/sdk/model/StepResult.java src/main/java/com/fireblocks/sdk/model/SubmitOrderRequirementRequest.java src/main/java/com/fireblocks/sdk/model/SupportedBlockChainsResponse.java src/main/java/com/fireblocks/sdk/model/SupportedBlockchain.java @@ -2495,6 +2559,7 @@ src/main/java/com/fireblocks/sdk/model/TransactionResponseContractCallDecodedDat src/main/java/com/fireblocks/sdk/model/TransactionResponseDestination.java src/main/java/com/fireblocks/sdk/model/TransactionTag.java src/main/java/com/fireblocks/sdk/model/TransferConfigOperation.java +src/main/java/com/fireblocks/sdk/model/TransferDirectionEnum.java src/main/java/com/fireblocks/sdk/model/TransferOperationConfigParams.java src/main/java/com/fireblocks/sdk/model/TransferOperationExecution.java src/main/java/com/fireblocks/sdk/model/TransferOperationExecutionOutput.java @@ -2564,6 +2629,9 @@ src/main/java/com/fireblocks/sdk/model/TravelRuleValidateTransactionRequest.java src/main/java/com/fireblocks/sdk/model/TravelRuleValidateTransactionResponse.java src/main/java/com/fireblocks/sdk/model/TravelRuleVaspForVault.java src/main/java/com/fireblocks/sdk/model/TravelRuleVerdictEnum.java +src/main/java/com/fireblocks/sdk/model/TriggerRuleOutcomeEnum.java +src/main/java/com/fireblocks/sdk/model/TriggerScreeningRequest.java +src/main/java/com/fireblocks/sdk/model/TriggerScreeningResponse.java src/main/java/com/fireblocks/sdk/model/TriggerValidationFlowResponse.java src/main/java/com/fireblocks/sdk/model/TrustProofOfAddressCreateResponse.java src/main/java/com/fireblocks/sdk/model/TrustProofOfAddressRequest.java @@ -2594,6 +2662,8 @@ src/main/java/com/fireblocks/sdk/model/UpdateVaultAccountAssetAddressRequest.jav src/main/java/com/fireblocks/sdk/model/UpdateVaultAccountRequest.java src/main/java/com/fireblocks/sdk/model/UpdateWebhookOauthRequest.java src/main/java/com/fireblocks/sdk/model/UpdateWebhookRequest.java +src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequest.java +src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponse.java src/main/java/com/fireblocks/sdk/model/UsWirePaymentInfo.java src/main/java/com/fireblocks/sdk/model/UsdcGatewayWalletAsset.java src/main/java/com/fireblocks/sdk/model/UsdcGatewayWalletInfoResponse.java @@ -2638,12 +2708,14 @@ src/main/java/com/fireblocks/sdk/model/WebhookEvent.java src/main/java/com/fireblocks/sdk/model/WebhookMetric.java src/main/java/com/fireblocks/sdk/model/WebhookMtls.java src/main/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponse.java +src/main/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithm.java src/main/java/com/fireblocks/sdk/model/WebhookOauthCredentials.java src/main/java/com/fireblocks/sdk/model/WebhookPaginatedResponse.java src/main/java/com/fireblocks/sdk/model/WithdrawRequest.java src/main/java/com/fireblocks/sdk/model/WorkflowConfigStatus.java src/main/java/com/fireblocks/sdk/model/WorkflowConfigurationId.java src/main/java/com/fireblocks/sdk/model/WorkflowExecutionOperation.java +src/main/java/com/fireblocks/sdk/model/WorkflowStatusEnum.java src/main/java/com/fireblocks/sdk/model/Workspace.java src/main/java/com/fireblocks/sdk/model/WriteAbiFunction.java src/main/java/com/fireblocks/sdk/model/WriteCallFunctionDto.java @@ -2662,6 +2734,7 @@ src/test/java/com/fireblocks/sdk/api/AuditLogsApiTest.java src/test/java/com/fireblocks/sdk/api/BlockchainLinkBetaApiTest.java src/test/java/com/fireblocks/sdk/api/BlockchainsAssetsApiTest.java src/test/java/com/fireblocks/sdk/api/ComplianceApiTest.java +src/test/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApiTest.java src/test/java/com/fireblocks/sdk/api/ComplianceScreeningConfigurationApiTest.java src/test/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApiTest.java src/test/java/com/fireblocks/sdk/api/ConsoleUserApiTest.java @@ -2806,8 +2879,11 @@ src/test/java/com/fireblocks/sdk/model/AmountRangeMinMaxTest.java src/test/java/com/fireblocks/sdk/model/AmountRangeTest.java src/test/java/com/fireblocks/sdk/model/ApiKeyTest.java src/test/java/com/fireblocks/sdk/model/ApiKeysPaginatedResponseTest.java +src/test/java/com/fireblocks/sdk/model/ApprovalApiKeyTest.java +src/test/java/com/fireblocks/sdk/model/ApprovalApiPublicKeyTest.java src/test/java/com/fireblocks/sdk/model/ApprovalRequestItemTest.java src/test/java/com/fireblocks/sdk/model/ApprovalRequestTest.java +src/test/java/com/fireblocks/sdk/model/ApproveApprovalRequestTest.java src/test/java/com/fireblocks/sdk/model/ApproversConfigApprovalGroupsInnerTest.java src/test/java/com/fireblocks/sdk/model/ApproversConfigTest.java src/test/java/com/fireblocks/sdk/model/ApyTest.java @@ -2845,7 +2921,9 @@ src/test/java/com/fireblocks/sdk/model/AssignVaultsToLegalEntityRequestTest.java src/test/java/com/fireblocks/sdk/model/AssignVaultsToLegalEntityResponseTest.java src/test/java/com/fireblocks/sdk/model/AttachDetachUtxoLabelsRequestTest.java src/test/java/com/fireblocks/sdk/model/AttachDetachUtxoLabelsResponseTest.java +src/test/java/com/fireblocks/sdk/model/AuditEventTypeEnumTest.java src/test/java/com/fireblocks/sdk/model/AuditLogDataTest.java +src/test/java/com/fireblocks/sdk/model/AuditLogEntryTest.java src/test/java/com/fireblocks/sdk/model/AuditorDataTest.java src/test/java/com/fireblocks/sdk/model/AuthorizationGroupsTest.java src/test/java/com/fireblocks/sdk/model/AuthorizationInfoTest.java @@ -2884,6 +2962,7 @@ src/test/java/com/fireblocks/sdk/model/ByorkVerdictEnumTest.java src/test/java/com/fireblocks/sdk/model/ByorkVerdictRequestTest.java src/test/java/com/fireblocks/sdk/model/ByorkVerdictResponseStatusEnumTest.java src/test/java/com/fireblocks/sdk/model/ByorkVerdictResponseTest.java +src/test/java/com/fireblocks/sdk/model/BypassReasonEnumTest.java src/test/java/com/fireblocks/sdk/model/CallAcceptedTest.java src/test/java/com/fireblocks/sdk/model/CallbackHandlerRequestTest.java src/test/java/com/fireblocks/sdk/model/CallbackHandlerTest.java @@ -2924,6 +3003,7 @@ src/test/java/com/fireblocks/sdk/model/ComplianceResultStatusesEnumTest.java src/test/java/com/fireblocks/sdk/model/ComplianceResultsTest.java src/test/java/com/fireblocks/sdk/model/ComplianceScreeningResultFullPayloadTest.java src/test/java/com/fireblocks/sdk/model/ComplianceScreeningResultTest.java +src/test/java/com/fireblocks/sdk/model/ComplianceScreeningStatusEnumTest.java src/test/java/com/fireblocks/sdk/model/ConfigChangeRequestStatusTest.java src/test/java/com/fireblocks/sdk/model/ConfigConversionOperationSnapshotTest.java src/test/java/com/fireblocks/sdk/model/ConfigDisbursementOperationSnapshotTest.java @@ -2948,6 +3028,8 @@ src/test/java/com/fireblocks/sdk/model/ConnectedAccountTypeTest.java src/test/java/com/fireblocks/sdk/model/ConnectedAccountsResponseTest.java src/test/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponseTest.java src/test/java/com/fireblocks/sdk/model/ConnectedSingleAccountTest.java +src/test/java/com/fireblocks/sdk/model/ConnectorStatusEnumTest.java +src/test/java/com/fireblocks/sdk/model/ConnectorVerdictEnumTest.java src/test/java/com/fireblocks/sdk/model/ConsoleUserTest.java src/test/java/com/fireblocks/sdk/model/ContactApprovalRequestTest.java src/test/java/com/fireblocks/sdk/model/ContactTagAttachmentPendingTest.java @@ -3224,11 +3306,13 @@ src/test/java/com/fireblocks/sdk/model/GetPagedExchangeAccountsResponsePagingTes src/test/java/com/fireblocks/sdk/model/GetPagedExchangeAccountsResponseTest.java src/test/java/com/fireblocks/sdk/model/GetPositionsResponseTest.java src/test/java/com/fireblocks/sdk/model/GetProvidersResponseTest.java +src/test/java/com/fireblocks/sdk/model/GetScreeningResultResponseTest.java src/test/java/com/fireblocks/sdk/model/GetSigningKeyResponseDtoTest.java src/test/java/com/fireblocks/sdk/model/GetTestWalletAddressResponseTest.java src/test/java/com/fireblocks/sdk/model/GetTransactionOperationTest.java src/test/java/com/fireblocks/sdk/model/GetValidationKeyResponseDtoTest.java src/test/java/com/fireblocks/sdk/model/GetWhitelistIpAddressesResponseTest.java +src/test/java/com/fireblocks/sdk/model/GetWorkflowResponseTest.java src/test/java/com/fireblocks/sdk/model/GetWorkspaceStatusResponseTest.java src/test/java/com/fireblocks/sdk/model/GleifDataTest.java src/test/java/com/fireblocks/sdk/model/GleifOtherLegalEntityNameTest.java @@ -3291,6 +3375,7 @@ src/test/java/com/fireblocks/sdk/model/LegacySrcOrDestAttributesInnerTest.java src/test/java/com/fireblocks/sdk/model/LegalEntityRegistrationTest.java src/test/java/com/fireblocks/sdk/model/LeiStatusTest.java src/test/java/com/fireblocks/sdk/model/LinkedTokensCountTest.java +src/test/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponseTest.java src/test/java/com/fireblocks/sdk/model/ListApprovalsResponseTest.java src/test/java/com/fireblocks/sdk/model/ListAssetsResponseTest.java src/test/java/com/fireblocks/sdk/model/ListBlockchainsResponse2Test.java @@ -3489,6 +3574,8 @@ src/test/java/com/fireblocks/sdk/model/ReadCallFunctionDtoTest.java src/test/java/com/fireblocks/sdk/model/ReasonForPaymentEnumTest.java src/test/java/com/fireblocks/sdk/model/RecipientHandleTest.java src/test/java/com/fireblocks/sdk/model/RedeemFundsToLinkedDDAResponseTest.java +src/test/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyRequestTest.java +src/test/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyResponseTest.java src/test/java/com/fireblocks/sdk/model/RegisterLegalEntityRequestTest.java src/test/java/com/fireblocks/sdk/model/RegisterNewAssetRequestTest.java src/test/java/com/fireblocks/sdk/model/ReissueMultichainTokenRequestTest.java @@ -3529,9 +3616,15 @@ src/test/java/com/fireblocks/sdk/model/RetryRequoteRequestDetailsTest.java src/test/java/com/fireblocks/sdk/model/RetryRequoteTypeEnumTest.java src/test/java/com/fireblocks/sdk/model/RewardInfoTest.java src/test/java/com/fireblocks/sdk/model/RewardsInfoTest.java +src/test/java/com/fireblocks/sdk/model/RiskLevelEnumTest.java src/test/java/com/fireblocks/sdk/model/RoleDetails2Test.java src/test/java/com/fireblocks/sdk/model/RoleDetailsTest.java src/test/java/com/fireblocks/sdk/model/RoleGranteeTest.java +src/test/java/com/fireblocks/sdk/model/RuleActionEnumTest.java +src/test/java/com/fireblocks/sdk/model/RuleConditionOperatorEnumTest.java +src/test/java/com/fireblocks/sdk/model/RuleConditionTest.java +src/test/java/com/fireblocks/sdk/model/RuleSetTest.java +src/test/java/com/fireblocks/sdk/model/RuleTest.java src/test/java/com/fireblocks/sdk/model/RulesetQuorumTest.java src/test/java/com/fireblocks/sdk/model/SEPAAddressTest.java src/test/java/com/fireblocks/sdk/model/SEPADestinationTest.java @@ -3545,11 +3638,15 @@ src/test/java/com/fireblocks/sdk/model/ScreeningAmlAlertTest.java src/test/java/com/fireblocks/sdk/model/ScreeningAmlMatchedRuleTest.java src/test/java/com/fireblocks/sdk/model/ScreeningAmlResultTest.java src/test/java/com/fireblocks/sdk/model/ScreeningConfigurationsRequestTest.java +src/test/java/com/fireblocks/sdk/model/ScreeningInputTest.java src/test/java/com/fireblocks/sdk/model/ScreeningMetadataConfigTest.java +src/test/java/com/fireblocks/sdk/model/ScreeningOperationEnumTest.java src/test/java/com/fireblocks/sdk/model/ScreeningOperationExecutionOutputTest.java src/test/java/com/fireblocks/sdk/model/ScreeningOperationExecutionTest.java src/test/java/com/fireblocks/sdk/model/ScreeningOperationFailureTest.java src/test/java/com/fireblocks/sdk/model/ScreeningOperationTypeTest.java +src/test/java/com/fireblocks/sdk/model/ScreeningOutcomeEnumTest.java +src/test/java/com/fireblocks/sdk/model/ScreeningPayloadTest.java src/test/java/com/fireblocks/sdk/model/ScreeningPolicyAmountRangeTest.java src/test/java/com/fireblocks/sdk/model/ScreeningPolicyAmountTest.java src/test/java/com/fireblocks/sdk/model/ScreeningPolicyCurrencyTest.java @@ -3661,6 +3758,9 @@ src/test/java/com/fireblocks/sdk/model/StakingPositionsPaginatedResponseTest.jav src/test/java/com/fireblocks/sdk/model/StakingProviderTest.java src/test/java/com/fireblocks/sdk/model/StatusTest.java src/test/java/com/fireblocks/sdk/model/StellarRippleCreateParamsDtoTest.java +src/test/java/com/fireblocks/sdk/model/StepConfigTest.java +src/test/java/com/fireblocks/sdk/model/StepOperationConfigTest.java +src/test/java/com/fireblocks/sdk/model/StepResultTest.java src/test/java/com/fireblocks/sdk/model/SubmitOrderRequirementRequestTest.java src/test/java/com/fireblocks/sdk/model/SupportedBlockChainsResponseTest.java src/test/java/com/fireblocks/sdk/model/SupportedBlockchainTest.java @@ -3808,6 +3908,7 @@ src/test/java/com/fireblocks/sdk/model/TransactionResponseTest.java src/test/java/com/fireblocks/sdk/model/TransactionTagTest.java src/test/java/com/fireblocks/sdk/model/TransactionTest.java src/test/java/com/fireblocks/sdk/model/TransferConfigOperationTest.java +src/test/java/com/fireblocks/sdk/model/TransferDirectionEnumTest.java src/test/java/com/fireblocks/sdk/model/TransferOperationConfigParamsTest.java src/test/java/com/fireblocks/sdk/model/TransferOperationExecutionOutputTest.java src/test/java/com/fireblocks/sdk/model/TransferOperationExecutionParamsExecutionParamsTest.java @@ -3877,6 +3978,9 @@ src/test/java/com/fireblocks/sdk/model/TravelRuleValidateTransactionRequestTest. src/test/java/com/fireblocks/sdk/model/TravelRuleValidateTransactionResponseTest.java src/test/java/com/fireblocks/sdk/model/TravelRuleVaspForVaultTest.java src/test/java/com/fireblocks/sdk/model/TravelRuleVerdictEnumTest.java +src/test/java/com/fireblocks/sdk/model/TriggerRuleOutcomeEnumTest.java +src/test/java/com/fireblocks/sdk/model/TriggerScreeningRequestTest.java +src/test/java/com/fireblocks/sdk/model/TriggerScreeningResponseTest.java src/test/java/com/fireblocks/sdk/model/TriggerValidationFlowResponseTest.java src/test/java/com/fireblocks/sdk/model/TrustProofOfAddressCreateResponseTest.java src/test/java/com/fireblocks/sdk/model/TrustProofOfAddressRequestTest.java @@ -3907,6 +4011,8 @@ src/test/java/com/fireblocks/sdk/model/UpdateVaultAccountAssetAddressRequestTest src/test/java/com/fireblocks/sdk/model/UpdateVaultAccountRequestTest.java src/test/java/com/fireblocks/sdk/model/UpdateWebhookOauthRequestTest.java src/test/java/com/fireblocks/sdk/model/UpdateWebhookRequestTest.java +src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequestTest.java +src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponseTest.java src/test/java/com/fireblocks/sdk/model/UsWirePaymentInfoTest.java src/test/java/com/fireblocks/sdk/model/UsdcGatewayWalletAssetTest.java src/test/java/com/fireblocks/sdk/model/UsdcGatewayWalletInfoResponseTest.java @@ -3949,6 +4055,7 @@ src/test/java/com/fireblocks/sdk/model/WalletAssetTest.java src/test/java/com/fireblocks/sdk/model/WebhookEventTest.java src/test/java/com/fireblocks/sdk/model/WebhookMetricTest.java src/test/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponseTest.java +src/test/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithmTest.java src/test/java/com/fireblocks/sdk/model/WebhookMtlsTest.java src/test/java/com/fireblocks/sdk/model/WebhookOauthCredentialsTest.java src/test/java/com/fireblocks/sdk/model/WebhookPaginatedResponseTest.java @@ -3957,6 +4064,7 @@ src/test/java/com/fireblocks/sdk/model/WithdrawRequestTest.java src/test/java/com/fireblocks/sdk/model/WorkflowConfigStatusTest.java src/test/java/com/fireblocks/sdk/model/WorkflowConfigurationIdTest.java src/test/java/com/fireblocks/sdk/model/WorkflowExecutionOperationTest.java +src/test/java/com/fireblocks/sdk/model/WorkflowStatusEnumTest.java src/test/java/com/fireblocks/sdk/model/WorkspaceTest.java src/test/java/com/fireblocks/sdk/model/WriteAbiFunctionTest.java src/test/java/com/fireblocks/sdk/model/WriteCallFunctionDtoAbiFunctionTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 6e4fcac2..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,239 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [v31.0.0](https://github.com/fireblocks/java-sdk/compare/v15.0.0...v31.0.0) - 2026-09-15 - -### Merged - -- Generated SDK #2850019096 [`#157`](https://github.com/fireblocks/java-sdk/pull/157) - -## [v15.0.0](https://github.com/fireblocks/java-sdk/compare/v14.1.0...v15.0.0) - 2026-03-15 - -### Merged - -- Generated SDK #3733 (major) [`#128`](https://github.com/fireblocks/java-sdk/pull/128) - -## [v14.1.0](https://github.com/fireblocks/java-sdk/compare/v14.0.0...v14.1.0) - 2026-02-26 - -### Merged - -- Generated SDK #2167 [`#126`](https://github.com/fireblocks/java-sdk/pull/126) - -## [v14.0.0](https://github.com/fireblocks/java-sdk/compare/v13.0.0...v14.0.0) - 2026-02-03 - -### Merged - -- Generated SDK #4746 [`#121`](https://github.com/fireblocks/java-sdk/pull/121) - -## [v13.0.0](https://github.com/fireblocks/java-sdk/compare/v12.1.3...v13.0.0) - 2025-11-13 - -### Merged - -- Generated SDK #5834 [`#116`](https://github.com/fireblocks/java-sdk/pull/116) - -## [v12.1.3](https://github.com/fireblocks/java-sdk/compare/v12.1.2...v12.1.3) - 2025-10-22 - -### Merged - -- Generated SDK #8293 [`#115`](https://github.com/fireblocks/java-sdk/pull/115) - -## [v12.1.2](https://github.com/fireblocks/java-sdk/compare/v12.1.1...v12.1.2) - 2025-09-29 - -### Merged - -- Generated SDK #6061 [`#113`](https://github.com/fireblocks/java-sdk/pull/113) - -## [v12.1.1](https://github.com/fireblocks/java-sdk/compare/v12.1.0...v12.1.1) - 2025-09-10 - -### Merged - -- Generated SDK #1410 [`#111`](https://github.com/fireblocks/java-sdk/pull/111) - -## [v12.1.0](https://github.com/fireblocks/java-sdk/compare/v12.0.0...v12.1.0) - 2025-09-09 - -### Merged - -- Generated SDK #4521 [`#109`](https://github.com/fireblocks/java-sdk/pull/109) - -## [v12.0.0](https://github.com/fireblocks/java-sdk/compare/v11.2.0...v12.0.0) - 2025-09-01 - -### Merged - -- Generated SDK #7741 [`#108`](https://github.com/fireblocks/java-sdk/pull/108) - -## [v11.2.0](https://github.com/fireblocks/java-sdk/compare/v11.1.0...v11.2.0) - 2025-08-21 - -### Merged - -- Generated SDK #3302 [`#107`](https://github.com/fireblocks/java-sdk/pull/107) - -## [v11.1.0](https://github.com/fireblocks/java-sdk/compare/v11.0.0...v11.1.0) - 2025-08-11 - -### Merged - -- Generated SDK #1782 [`#105`](https://github.com/fireblocks/java-sdk/pull/105) - -## [v11.0.0](https://github.com/fireblocks/java-sdk/compare/v10.4.0...v11.0.0) - 2025-07-15 - -### Merged - -- Generated SDK #5610 [`#103`](https://github.com/fireblocks/java-sdk/pull/103) - -## [v10.4.0](https://github.com/fireblocks/java-sdk/compare/v10.3.0...v10.4.0) - 2025-06-29 - -### Merged - -- Generated SDK #1492 [`#101`](https://github.com/fireblocks/java-sdk/pull/101) - -## [v10.3.0](https://github.com/fireblocks/java-sdk/compare/v10.2.0...v10.3.0) - 2025-06-18 - -### Merged - -- Generated SDK #4009 [`#99`](https://github.com/fireblocks/java-sdk/pull/99) - -## [v10.2.0](https://github.com/fireblocks/java-sdk/compare/v10.1.1...v10.2.0) - 2025-06-04 - -### Merged - -- Generated SDK #8912 [`#98`](https://github.com/fireblocks/java-sdk/pull/98) - -## [v10.1.1](https://github.com/fireblocks/java-sdk/compare/v10.1.0...v10.1.1) - 2025-05-18 - -### Merged - -- Generated SDK #5019 [`#97`](https://github.com/fireblocks/java-sdk/pull/97) - -## [v10.1.0](https://github.com/fireblocks/java-sdk/compare/v10.0.2...v10.1.0) - 2025-05-07 - -### Merged - -- Generated SDK #7076 [`#95`](https://github.com/fireblocks/java-sdk/pull/95) - -## [v10.0.2](https://github.com/fireblocks/java-sdk/compare/v10.0.1...v10.0.2) - 2025-04-20 - -### Merged - -- Generated SDK #4794 [`#94`](https://github.com/fireblocks/java-sdk/pull/94) - -## [v10.0.1](https://github.com/fireblocks/java-sdk/compare/v10.0.0...v10.0.1) - 2025-04-07 - -### Merged - -- Generated SDK #3065 [`#93`](https://github.com/fireblocks/java-sdk/pull/93) - -## [v10.0.0](https://github.com/fireblocks/java-sdk/compare/v9.0.0...v10.0.0) - 2025-03-30 - -### Merged - -- Generated SDK #619 [`#90`](https://github.com/fireblocks/java-sdk/pull/90) - -## [v9.0.0](https://github.com/fireblocks/java-sdk/compare/v8.1.0...v9.0.0) - 2025-03-17 - -### Merged - -- Generated SDK #645 [`#89`](https://github.com/fireblocks/java-sdk/pull/89) - -## [v8.1.0](https://github.com/fireblocks/java-sdk/compare/v8.0.1...v8.1.0) - 2025-02-24 - -### Merged - -- Generated SDK #9833 [`#84`](https://github.com/fireblocks/java-sdk/pull/84) - -## [v8.0.1](https://github.com/fireblocks/java-sdk/compare/v8.0.0...v8.0.1) - 2025-02-12 - -### Merged - -- Generated SDK #4262 [`#82`](https://github.com/fireblocks/java-sdk/pull/82) - -## [v8.0.0](https://github.com/fireblocks/java-sdk/compare/v7.0.0...v8.0.0) - 2025-02-02 - -### Merged - -- Generated SDK #538 [`#80`](https://github.com/fireblocks/java-sdk/pull/80) - -## [v7.0.0](https://github.com/fireblocks/java-sdk/compare/v6.0.0...v7.0.0) - 2025-01-08 - -### Merged - -- Generated SDK #8699 [`#77`](https://github.com/fireblocks/java-sdk/pull/77) - -## [v6.0.0](https://github.com/fireblocks/java-sdk/compare/v5.0.0...v6.0.0) - 2024-12-05 - -### Merged - -- Generated SDK #1430 [`#73`](https://github.com/fireblocks/java-sdk/pull/73) - -## [v5.0.0](https://github.com/fireblocks/java-sdk/compare/v4.0.0...v5.0.0) - 2024-10-31 - -### Merged - -- Generated SDK #5184 [`#71`](https://github.com/fireblocks/java-sdk/pull/71) - -## [v4.0.0](https://github.com/fireblocks/java-sdk/compare/v3.1.0...v4.0.0) - 2024-09-17 - -### Merged - -- Generated SDK #237 [`#70`](https://github.com/fireblocks/java-sdk/pull/70) - -## [v3.1.0](https://github.com/fireblocks/java-sdk/compare/v3.0.0...v3.1.0) - 2024-07-25 - -### Merged - -- Generated SDK #6749 [`#67`](https://github.com/fireblocks/java-sdk/pull/67) - -## [v3.0.0](https://github.com/fireblocks/java-sdk/compare/v2.1.0...v3.0.0) - 2024-07-17 - -### Merged - -- Generated SDK #6152 [`#65`](https://github.com/fireblocks/java-sdk/pull/65) -- Generated SDK #7984 [`#62`](https://github.com/fireblocks/java-sdk/pull/62) -- Generated SDK #2873 [`#61`](https://github.com/fireblocks/java-sdk/pull/61) - -## [v2.1.0](https://github.com/fireblocks/java-sdk/compare/v2.0.1...v2.1.0) - 2024-06-04 - -### Merged - -- Generated SDK for version COR-46191/fix_pipelines [`#24`](https://github.com/fireblocks/java-sdk/pull/24) -- Generated SDK for version COR-46191/fix_pipelines [`#23`](https://github.com/fireblocks/java-sdk/pull/23) -- Generated SDK for version COR-46191/fix_pipelines [`#22`](https://github.com/fireblocks/java-sdk/pull/22) -- Generated SDK for version COR-46191/fix_pipelines [`#21`](https://github.com/fireblocks/java-sdk/pull/21) - -## [v2.0.1](https://github.com/fireblocks/java-sdk/compare/v2.0.0...v2.0.1) - 2024-06-04 - -### Merged - -- Generated SDK for version COR-46191/fix_pipelines [`#20`](https://github.com/fireblocks/java-sdk/pull/20) - -## [v2.0.0](https://github.com/fireblocks/java-sdk/compare/v1.1.0...v2.0.0) - 2024-05-08 - -### Merged - -- feat: add tokenization api [`#12`](https://github.com/fireblocks/java-sdk/pull/12) - -## [v1.1.0](https://github.com/fireblocks/java-sdk/compare/v1.0.1...v1.1.0) - 2024-04-17 - -### Merged - -- feat: add cosigners beta api [`#11`](https://github.com/fireblocks/java-sdk/pull/11) -- fix: fix readme doc headline [`#10`](https://github.com/fireblocks/java-sdk/pull/10) - -## [v1.0.1](https://github.com/fireblocks/java-sdk/compare/v1.0.0...v1.0.1) - 2024-04-07 - -### Merged - -- Generated SDK for version v1.0.1 [`#9`](https://github.com/fireblocks/java-sdk/pull/9) - -## v1.0.0 - 2024-04-07 - -### Merged - -- Generated SDK for version v1.0.0 GA [`#8`](https://github.com/fireblocks/java-sdk/pull/8) -- v0.0.1-beta [`#6`](https://github.com/fireblocks/java-sdk/pull/6) -- Update GitHub Actions workflows [`#5`](https://github.com/fireblocks/java-sdk/pull/5) -- Generated #1189972817 [`#3`](https://github.com/fireblocks/java-sdk/pull/3) -- Add installation instructions [`#2`](https://github.com/fireblocks/java-sdk/pull/2) -- Added Idempotency & NCW headers support #6 [`#1`](https://github.com/fireblocks/java-sdk/pull/1) diff --git a/README.md b/README.md index cabff571..719ad14c 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Add this dependency to your project's POM: com.fireblocks.sdk fireblocks-sdk - 31.0.0 + 0.0.0 compile ``` @@ -42,7 +42,7 @@ Add this dependency to your project's POM: Add this dependency to your project's build file: ```groovy -compile "com.fireblocks.sdk:fireblocks-sdk:31.0.0" +compile "com.fireblocks.sdk:fireblocks-sdk:0.0.0" ``` ### Others @@ -55,7 +55,7 @@ mvn clean package Then manually install the following JARs: -- `target/fireblocks-sdk-31.0.0.jar` +- `target/fireblocks-sdk-0.0.0.jar` - `target/lib/*.jar` @@ -144,7 +144,11 @@ Class | Method | HTTP request | Description *ApiUserApi* | [**createApiUser**](docs/ApiUserApi.md#createApiUser) | **POST** /management/api_users | Create API Key *ApiUserApi* | [**getApiUsers**](docs/ApiUserApi.md#getApiUsers) | **GET** /management/api_users | Get API Keys *ApiUserApi* | [**issueApiUserPairingToken**](docs/ApiUserApi.md#issueApiUserPairingToken) | **POST** /management/api_users/{userId}/pairing_token | Issue API user pairing token +*ApprovalsBetaApi* | [**approveApproval**](docs/ApprovalsBetaApi.md#approveApproval) | **POST** /approvals/{requestId}/approve | Approve an approval request +*ApprovalsBetaApi* | [**createApprovalKey**](docs/ApprovalsBetaApi.md#createApprovalKey) | **POST** /management/api_users/{userId}/approval_keys | Register an approval key +*ApprovalsBetaApi* | [**deleteApprovalKey**](docs/ApprovalsBetaApi.md#deleteApprovalKey) | **DELETE** /management/api_users/{userId}/approval_keys/{keyId} | Delete an approval key *ApprovalsBetaApi* | [**getApprovalById**](docs/ApprovalsBetaApi.md#getApprovalById) | **GET** /approvals/{requestId} | Get a single approval request +*ApprovalsBetaApi* | [**getApprovalKeys**](docs/ApprovalsBetaApi.md#getApprovalKeys) | **GET** /management/api_users/{userId}/approval_keys | List approval keys *ApprovalsBetaApi* | [**getApprovals**](docs/ApprovalsBetaApi.md#getApprovals) | **GET** /approvals | List approval requests *ApprovalsBetaApi* | [**rejectApproval**](docs/ApprovalsBetaApi.md#rejectApproval) | **POST** /approvals/{requestId}/reject | Reject an approval request *AuditLogsApi* | [**getAuditLogs**](docs/AuditLogsApi.md#getAuditLogs) | **GET** /management/audit_logs | Get audit logs @@ -205,6 +209,10 @@ Class | Method | HTTP request | Description *ComplianceApi* | [**updateLegalEntity**](docs/ComplianceApi.md#updateLegalEntity) | **PUT** /legal_entities/{legalEntityId} | Update legal entity *ComplianceApi* | [**updateScreeningConfiguration**](docs/ComplianceApi.md#updateScreeningConfiguration) | **PUT** /screening/configurations | Tenant - Screening Configuration *ComplianceApi* | [**updateTravelRuleConfig**](docs/ComplianceApi.md#updateTravelRuleConfig) | **PUT** /screening/travel_rule/policy_configuration | Update Travel Rule Configuration +*ComplianceOrchestratorBetaApi* | [**getScreeningResult**](docs/ComplianceOrchestratorBetaApi.md#getScreeningResult) | **GET** /compliance/orchestrator/screenings/{screeningId} | Get a Compliance Orchestrator screening's result +*ComplianceOrchestratorBetaApi* | [**getWorkflow**](docs/ComplianceOrchestratorBetaApi.md#getWorkflow) | **GET** /compliance/orchestrator/workflows/{workflowId} | Get a Compliance Orchestrator workflow +*ComplianceOrchestratorBetaApi* | [**triggerScreening**](docs/ComplianceOrchestratorBetaApi.md#triggerScreening) | **POST** /compliance/orchestrator/screenings | Trigger a Compliance Orchestrator screening +*ComplianceOrchestratorBetaApi* | [**updateWorkflowStatus**](docs/ComplianceOrchestratorBetaApi.md#updateWorkflowStatus) | **PATCH** /compliance/orchestrator/workflows/{workflowId}/status | Update a Compliance Orchestrator workflow's status *ComplianceScreeningConfigurationApi* | [**getAmlScreeningConfiguration**](docs/ComplianceScreeningConfigurationApi.md#getAmlScreeningConfiguration) | **GET** /screening/aml/policy_configuration | Get AML Screening Policy Configuration *ComplianceScreeningConfigurationApi* | [**getScreeningConfiguration**](docs/ComplianceScreeningConfigurationApi.md#getScreeningConfiguration) | **GET** /screening/travel_rule/policy_configuration | Get Travel Rule Screening Policy Configuration *ConnectedAccountsBetaApi* | [**addConnectedAccount**](docs/ConnectedAccountsBetaApi.md#addConnectedAccount) | **POST** /connected_accounts | Add a connected account @@ -586,7 +594,7 @@ Class | Method | HTTP request | Description *WebhooksV2Api* | [**deleteWebhook**](docs/WebhooksV2Api.md#deleteWebhook) | **DELETE** /webhooks/{webhookId} | Delete webhook *WebhooksV2Api* | [**deleteWebhookOauth**](docs/WebhooksV2Api.md#deleteWebhookOauth) | **DELETE** /webhooks_settings/oauth/{webhookOauthId} | Delete OAuth credentials *WebhooksV2Api* | [**getMetrics**](docs/WebhooksV2Api.md#getMetrics) | **GET** /webhooks/{webhookId}/metrics/{metricName} | Get webhook metrics -*WebhooksV2Api* | [**getMtlsCsr**](docs/WebhooksV2Api.md#getMtlsCsr) | **GET** /webhooks/mtls/csr | Get mTLS CSR +*WebhooksV2Api* | [**getMtlsCsr**](docs/WebhooksV2Api.md#getMtlsCsr) | **GET** /webhooks_settings/mtls_csr | Get mTLS CSR *WebhooksV2Api* | [**getNotification**](docs/WebhooksV2Api.md#getNotification) | **GET** /webhooks/{webhookId}/notifications/{notificationId} | Get notification by id *WebhooksV2Api* | [**getNotificationAttempts**](docs/WebhooksV2Api.md#getNotificationAttempts) | **GET** /webhooks/{webhookId}/notifications/{notificationId}/attempts | Get notification attempts *WebhooksV2Api* | [**getNotifications**](docs/WebhooksV2Api.md#getNotifications) | **GET** /webhooks/{webhookId}/notifications | Get all notifications by webhook id @@ -704,8 +712,11 @@ Class | Method | HTTP request | Description - [AmountRangeMinMax2](docs/AmountRangeMinMax2.md) - [ApiKey](docs/ApiKey.md) - [ApiKeysPaginatedResponse](docs/ApiKeysPaginatedResponse.md) + - [ApprovalApiKey](docs/ApprovalApiKey.md) + - [ApprovalApiPublicKey](docs/ApprovalApiPublicKey.md) - [ApprovalRequest](docs/ApprovalRequest.md) - [ApprovalRequestItem](docs/ApprovalRequestItem.md) + - [ApproveApprovalRequest](docs/ApproveApprovalRequest.md) - [ApproversConfig](docs/ApproversConfig.md) - [ApproversConfigApprovalGroupsInner](docs/ApproversConfigApprovalGroupsInner.md) - [Apy](docs/Apy.md) @@ -743,7 +754,9 @@ Class | Method | HTTP request | Description - [AssignVaultsToLegalEntityResponse](docs/AssignVaultsToLegalEntityResponse.md) - [AttachDetachUtxoLabelsRequest](docs/AttachDetachUtxoLabelsRequest.md) - [AttachDetachUtxoLabelsResponse](docs/AttachDetachUtxoLabelsResponse.md) + - [AuditEventTypeEnum](docs/AuditEventTypeEnum.md) - [AuditLogData](docs/AuditLogData.md) + - [AuditLogEntry](docs/AuditLogEntry.md) - [AuditorData](docs/AuditorData.md) - [AuthorizationGroups](docs/AuthorizationGroups.md) - [AuthorizationInfo](docs/AuthorizationInfo.md) @@ -782,6 +795,7 @@ Class | Method | HTTP request | Description - [ByorkVerdictRequest](docs/ByorkVerdictRequest.md) - [ByorkVerdictResponse](docs/ByorkVerdictResponse.md) - [ByorkVerdictResponseStatusEnum](docs/ByorkVerdictResponseStatusEnum.md) + - [BypassReasonEnum](docs/BypassReasonEnum.md) - [CallAccepted](docs/CallAccepted.md) - [CallbackHandler](docs/CallbackHandler.md) - [CallbackHandlerRequest](docs/CallbackHandlerRequest.md) @@ -822,6 +836,7 @@ Class | Method | HTTP request | Description - [ComplianceResults](docs/ComplianceResults.md) - [ComplianceScreeningResult](docs/ComplianceScreeningResult.md) - [ComplianceScreeningResultFullPayload](docs/ComplianceScreeningResultFullPayload.md) + - [ComplianceScreeningStatusEnum](docs/ComplianceScreeningStatusEnum.md) - [ConfigChangeRequestStatus](docs/ConfigChangeRequestStatus.md) - [ConfigConversionOperationSnapshot](docs/ConfigConversionOperationSnapshot.md) - [ConfigDisbursementOperationSnapshot](docs/ConfigDisbursementOperationSnapshot.md) @@ -846,6 +861,8 @@ Class | Method | HTTP request | Description - [ConnectedAccountsResponse](docs/ConnectedAccountsResponse.md) - [ConnectedSingleAccount](docs/ConnectedSingleAccount.md) - [ConnectedSingleAccountResponse](docs/ConnectedSingleAccountResponse.md) + - [ConnectorStatusEnum](docs/ConnectorStatusEnum.md) + - [ConnectorVerdictEnum](docs/ConnectorVerdictEnum.md) - [ConsoleUser](docs/ConsoleUser.md) - [Contact](docs/Contact.md) - [ContactApprovalRequest](docs/ContactApprovalRequest.md) @@ -1122,11 +1139,13 @@ Class | Method | HTTP request | Description - [GetPagedExchangeAccountsResponsePaging](docs/GetPagedExchangeAccountsResponsePaging.md) - [GetPositionsResponse](docs/GetPositionsResponse.md) - [GetProvidersResponse](docs/GetProvidersResponse.md) + - [GetScreeningResultResponse](docs/GetScreeningResultResponse.md) - [GetSigningKeyResponseDto](docs/GetSigningKeyResponseDto.md) - [GetTestWalletAddressResponse](docs/GetTestWalletAddressResponse.md) - [GetTransactionOperation](docs/GetTransactionOperation.md) - [GetValidationKeyResponseDto](docs/GetValidationKeyResponseDto.md) - [GetWhitelistIpAddressesResponse](docs/GetWhitelistIpAddressesResponse.md) + - [GetWorkflowResponse](docs/GetWorkflowResponse.md) - [GetWorkspaceStatusResponse](docs/GetWorkspaceStatusResponse.md) - [GleifData](docs/GleifData.md) - [GleifOtherLegalEntityName](docs/GleifOtherLegalEntityName.md) @@ -1189,6 +1208,7 @@ Class | Method | HTTP request | Description - [LegalEntityRegistration](docs/LegalEntityRegistration.md) - [LeiStatus](docs/LeiStatus.md) - [LinkedTokensCount](docs/LinkedTokensCount.md) + - [ListApprovalApiKeysResponse](docs/ListApprovalApiKeysResponse.md) - [ListApprovalsResponse](docs/ListApprovalsResponse.md) - [ListAssetsResponse](docs/ListAssetsResponse.md) - [ListBlockchainsResponse](docs/ListBlockchainsResponse.md) @@ -1387,6 +1407,8 @@ Class | Method | HTTP request | Description - [ReasonForPaymentEnum](docs/ReasonForPaymentEnum.md) - [RecipientHandle](docs/RecipientHandle.md) - [RedeemFundsToLinkedDDAResponse](docs/RedeemFundsToLinkedDDAResponse.md) + - [RegisterApprovalApiKeyRequest](docs/RegisterApprovalApiKeyRequest.md) + - [RegisterApprovalApiKeyResponse](docs/RegisterApprovalApiKeyResponse.md) - [RegisterLegalEntityRequest](docs/RegisterLegalEntityRequest.md) - [RegisterNewAssetRequest](docs/RegisterNewAssetRequest.md) - [ReissueMultichainTokenRequest](docs/ReissueMultichainTokenRequest.md) @@ -1427,9 +1449,15 @@ Class | Method | HTTP request | Description - [RetryRequoteTypeEnum](docs/RetryRequoteTypeEnum.md) - [RewardInfo](docs/RewardInfo.md) - [RewardsInfo](docs/RewardsInfo.md) + - [RiskLevelEnum](docs/RiskLevelEnum.md) - [RoleDetails](docs/RoleDetails.md) - [RoleDetails2](docs/RoleDetails2.md) - [RoleGrantee](docs/RoleGrantee.md) + - [Rule](docs/Rule.md) + - [RuleActionEnum](docs/RuleActionEnum.md) + - [RuleCondition](docs/RuleCondition.md) + - [RuleConditionOperatorEnum](docs/RuleConditionOperatorEnum.md) + - [RuleSet](docs/RuleSet.md) - [RulesetQuorum](docs/RulesetQuorum.md) - [SEPAAddress](docs/SEPAAddress.md) - [SEPADestination](docs/SEPADestination.md) @@ -1443,11 +1471,15 @@ Class | Method | HTTP request | Description - [ScreeningAmlMatchedRule](docs/ScreeningAmlMatchedRule.md) - [ScreeningAmlResult](docs/ScreeningAmlResult.md) - [ScreeningConfigurationsRequest](docs/ScreeningConfigurationsRequest.md) + - [ScreeningInput](docs/ScreeningInput.md) - [ScreeningMetadataConfig](docs/ScreeningMetadataConfig.md) + - [ScreeningOperationEnum](docs/ScreeningOperationEnum.md) - [ScreeningOperationExecution](docs/ScreeningOperationExecution.md) - [ScreeningOperationExecutionOutput](docs/ScreeningOperationExecutionOutput.md) - [ScreeningOperationFailure](docs/ScreeningOperationFailure.md) - [ScreeningOperationType](docs/ScreeningOperationType.md) + - [ScreeningOutcomeEnum](docs/ScreeningOutcomeEnum.md) + - [ScreeningPayload](docs/ScreeningPayload.md) - [ScreeningPolicyAmount](docs/ScreeningPolicyAmount.md) - [ScreeningPolicyAmountRange](docs/ScreeningPolicyAmountRange.md) - [ScreeningPolicyCurrency](docs/ScreeningPolicyCurrency.md) @@ -1559,6 +1591,9 @@ Class | Method | HTTP request | Description - [StakingProvider](docs/StakingProvider.md) - [Status](docs/Status.md) - [StellarRippleCreateParamsDto](docs/StellarRippleCreateParamsDto.md) + - [StepConfig](docs/StepConfig.md) + - [StepOperationConfig](docs/StepOperationConfig.md) + - [StepResult](docs/StepResult.md) - [SubmitOrderRequirementRequest](docs/SubmitOrderRequirementRequest.md) - [SupportedBlockChainsResponse](docs/SupportedBlockChainsResponse.md) - [SupportedBlockchain](docs/SupportedBlockchain.md) @@ -1706,6 +1741,7 @@ Class | Method | HTTP request | Description - [TransactionResponseDestination](docs/TransactionResponseDestination.md) - [TransactionTag](docs/TransactionTag.md) - [TransferConfigOperation](docs/TransferConfigOperation.md) + - [TransferDirectionEnum](docs/TransferDirectionEnum.md) - [TransferOperationConfigParams](docs/TransferOperationConfigParams.md) - [TransferOperationExecution](docs/TransferOperationExecution.md) - [TransferOperationExecutionOutput](docs/TransferOperationExecutionOutput.md) @@ -1775,6 +1811,9 @@ Class | Method | HTTP request | Description - [TravelRuleValidateTransactionResponse](docs/TravelRuleValidateTransactionResponse.md) - [TravelRuleVaspForVault](docs/TravelRuleVaspForVault.md) - [TravelRuleVerdictEnum](docs/TravelRuleVerdictEnum.md) + - [TriggerRuleOutcomeEnum](docs/TriggerRuleOutcomeEnum.md) + - [TriggerScreeningRequest](docs/TriggerScreeningRequest.md) + - [TriggerScreeningResponse](docs/TriggerScreeningResponse.md) - [TriggerValidationFlowResponse](docs/TriggerValidationFlowResponse.md) - [TrustProofOfAddressCreateResponse](docs/TrustProofOfAddressCreateResponse.md) - [TrustProofOfAddressRequest](docs/TrustProofOfAddressRequest.md) @@ -1805,6 +1844,8 @@ Class | Method | HTTP request | Description - [UpdateVaultAccountRequest](docs/UpdateVaultAccountRequest.md) - [UpdateWebhookOauthRequest](docs/UpdateWebhookOauthRequest.md) - [UpdateWebhookRequest](docs/UpdateWebhookRequest.md) + - [UpdateWorkflowStatusRequest](docs/UpdateWorkflowStatusRequest.md) + - [UpdateWorkflowStatusResponse](docs/UpdateWorkflowStatusResponse.md) - [UsWirePaymentInfo](docs/UsWirePaymentInfo.md) - [UsdcGatewayWalletAsset](docs/UsdcGatewayWalletAsset.md) - [UsdcGatewayWalletInfoResponse](docs/UsdcGatewayWalletInfoResponse.md) @@ -1849,12 +1890,14 @@ Class | Method | HTTP request | Description - [WebhookMetric](docs/WebhookMetric.md) - [WebhookMtls](docs/WebhookMtls.md) - [WebhookMtlsCsrResponse](docs/WebhookMtlsCsrResponse.md) + - [WebhookMtlsKeyAlgorithm](docs/WebhookMtlsKeyAlgorithm.md) - [WebhookOauthCredentials](docs/WebhookOauthCredentials.md) - [WebhookPaginatedResponse](docs/WebhookPaginatedResponse.md) - [WithdrawRequest](docs/WithdrawRequest.md) - [WorkflowConfigStatus](docs/WorkflowConfigStatus.md) - [WorkflowConfigurationId](docs/WorkflowConfigurationId.md) - [WorkflowExecutionOperation](docs/WorkflowExecutionOperation.md) + - [WorkflowStatusEnum](docs/WorkflowStatusEnum.md) - [Workspace](docs/Workspace.md) - [WriteAbiFunction](docs/WriteAbiFunction.md) - [WriteCallFunctionDto](docs/WriteCallFunctionDto.md) diff --git a/api/openapi.yaml b/api/openapi.yaml index 23bff231..f4457d5f 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -583,6 +583,77 @@ paths: \ user_id, quorum_status_mode);" x-accepts: - application/json + /approvals/{requestId}/approve: + post: + description: |- + Approve a pending approval request as the authenticated API user. The caller signs the request's signable data with the private key of a registered approval API key and submits the base64url-encoded signature, optionally with the key ID. The server verifies the signature against the registered public key — using the given key ID, or matching against all of the user's registered keys when the key ID is omitted — and advances the approval quorum. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin. + operationId: approveApproval + parameters: + - description: "A unique identifier for the request. If the request is sent\ + \ multiple times with the same idempotency key, the server will return the\ + \ same response as the first request. The idempotency key is valid for 24\ + \ hours." + explode: false + in: header + name: Idempotency-Key + required: false + schema: + type: string + style: simple + - description: The approval request ID. + example: "18055" + explode: false + in: path + name: requestId + required: true + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ApproveApprovalRequest" + required: true + responses: + "204": + description: The approval request was approved. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Approve an approval request + tags: + - Approvals (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.approvalsBeta.approveApproval(approvalsBetaApiApproveApprovalRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.approvalsBeta().approveApproval(approveApprovalRequest,\ + \ requestId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.approvals_beta.approve_approval(approve_approval_request,\ + \ request_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.approvalsBeta.approveApproval(approvalsBetaApiApproveApprovalRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.approvalsBeta().approveApproval(approveApprovalRequest,\ + \ requestId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.approvals_beta.approve_approval(approve_approval_request,\ + \ request_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json /approvals/{requestId}/reject: post: description: |- @@ -647,6 +718,238 @@ paths: \ idempotency_key);" x-accepts: - application/json + /management/api_users/{userId}/approval_keys: + get: + description: |- + List the approval public keys registered for the specified API user. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin, Security Auditor. + operationId: getApprovalKeys + parameters: + - description: The ID of the API user whose approval keys to list. + example: 8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94 + explode: false + in: path + name: userId + required: true + schema: + type: string + style: simple + - description: Number of results per page. Maximum 15. Defaults to 10. + explode: true + in: query + name: pageSize + required: false + schema: + default: 10 + maximum: 15 + minimum: 1 + type: integer + style: form + - description: Cursor returned from the previous response (the `next` field) + to fetch the next page. + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ListApprovalApiKeysResponse" + description: The API user's approval keys. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: List approval keys + tags: + - Approvals (Beta) + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.approvalsBeta.getApprovalKeys(approvalsBetaApiGetApprovalKeysRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.approvalsBeta().getApprovalKeys(userId, pageSize, pageCursor);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.approvals_beta.get_approval_keys(user_id, page_size,\ + \ page_cursor);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.approvalsBeta.getApprovalKeys(approvalsBetaApiGetApprovalKeysRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.approvalsBeta().getApprovalKeys(userId, pageSize, pageCursor);" + - lang: Python + source: "response = fireblocks.approvals_beta.get_approval_keys(user_id, page_size,\ + \ page_cursor);" + x-accepts: + - application/json + post: + description: |- + Register an approval public key for an API user, used to sign approval requests. Up to 2 active keys are supported per API user. Returns the server-generated key ID used for deletion. + + The `userId` must be the authenticated API user's own ID. Registering a key for another user is not supported and is rejected. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin. + operationId: createApprovalKey + parameters: + - description: "A unique identifier for the request. If the request is sent\ + \ multiple times with the same idempotency key, the server will return the\ + \ same response as the first request. The idempotency key is valid for 24\ + \ hours." + explode: false + in: header + name: Idempotency-Key + required: false + schema: + type: string + style: simple + - description: The ID of the API user to register the approval key for. + example: 8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94 + explode: false + in: path + name: userId + required: true + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RegisterApprovalApiKeyRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/RegisterApprovalApiKeyResponse" + description: The approval key was registered. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Register an approval key + tags: + - Approvals (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.approvalsBeta.createApprovalKey(approvalsBetaApiCreateApprovalKeyRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.approvalsBeta().createApprovalKey(registerApprovalApiKeyRequest,\ + \ userId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.approvals_beta.create_approval_key(register_approval_api_key_request,\ + \ user_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.approvalsBeta.createApprovalKey(approvalsBetaApiCreateApprovalKeyRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.approvalsBeta().createApprovalKey(registerApprovalApiKeyRequest,\ + \ userId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.approvals_beta.create_approval_key(register_approval_api_key_request,\ + \ user_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /management/api_users/{userId}/approval_keys/{keyId}: + delete: + description: |- + Delete (revoke) an approval public key for the specified API user. Revoking the last key disables the API user's ability to sign approvals. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin. + operationId: deleteApprovalKey + parameters: + - description: "A unique identifier for the request. If the request is sent\ + \ multiple times with the same idempotency key, the server will return the\ + \ same response as the first request. The idempotency key is valid for 24\ + \ hours." + explode: false + in: header + name: Idempotency-Key + required: false + schema: + type: string + style: simple + - description: The ID of the API user whose approval key to delete. + example: 8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94 + explode: false + in: path + name: userId + required: true + schema: + type: string + style: simple + - description: The ID of the approval key to delete. + example: fab543c0-d6be-414c-aa05-5c6c84269d7a + explode: false + in: path + name: keyId + required: true + schema: + type: string + style: simple + responses: + "204": + description: The approval key was deleted. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Delete an approval key + tags: + - Approvals (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.approvalsBeta.deleteApprovalKey(approvalsBetaApiDeleteApprovalKeyRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.approvalsBeta().deleteApprovalKey(userId,\ + \ keyId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.approvals_beta.delete_approval_key(user_id,\ + \ key_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.approvalsBeta.deleteApprovalKey(approvalsBetaApiDeleteApprovalKeyRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.approvalsBeta().deleteApprovalKey(userId,\ + \ keyId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.approvals_beta.delete_approval_key(user_id,\ + \ key_id, idempotency_key);" + x-accepts: + - application/json /management/audit_logs: get: description: |- @@ -5209,6 +5512,347 @@ paths: source: response = fireblocks.compliance.get_screening_policy(); x-accepts: - application/json + /compliance/orchestrator/screenings: + post: + description: |- + Starts a compliance screening against an active workflow and returns a `screeningId`. The screening runs asynchronously — poll `GET /v1/compliance/orchestrator/screenings/{screeningId}` for the result. + + Unlike the screening that applies automatically to submitted transactions under `/v1/screening`, this is called on demand, before anything exists on-chain. + operationId: triggerScreening + parameters: + - description: "A unique identifier for the request. If the request is sent\ + \ multiple times with the same idempotency key, the server will return the\ + \ same response as the first request. The idempotency key is valid for 24\ + \ hours." + explode: false + in: header + name: Idempotency-Key + required: false + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TriggerScreeningRequest" + required: true + responses: + "202": + content: + application/json: + schema: + $ref: "#/components/schemas/TriggerScreeningResponse" + description: Screening accepted + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Invalid or missing required input fields. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Workflow not found. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Workflow is not active. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Trigger a Compliance Orchestrator screening + tags: + - Compliance Orchestrator (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.complianceOrchestratorBeta.triggerScreening(complianceOrchestratorBetaApiTriggerScreeningRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.complianceOrchestratorBeta().triggerScreening(triggerScreeningRequest,\ + \ idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.compliance_orchestrator_beta.trigger_screening(trigger_screening_request,\ + \ idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.complianceOrchestratorBeta.triggerScreening(complianceOrchestratorBetaApiTriggerScreeningRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.complianceOrchestratorBeta().triggerScreening(triggerScreeningRequest,\ + \ idempotencyKey);" + - lang: Python + source: "response = fireblocks.compliance_orchestrator_beta.trigger_screening(trigger_screening_request,\ + \ idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /compliance/orchestrator/screenings/{screeningId}: + get: + description: "Returns the result of a screening started by `POST /v1/compliance/orchestrator/screenings`,\ + \ with a result per workflow step and an audit log. Safe to poll: a screening\ + \ still in flight reports `PENDING` or `RUNNING`. Only screenings owned by\ + \ the requesting tenant are returned." + operationId: getScreeningResult + parameters: + - description: "The screening's identifier, returned by `POST /v1/compliance/orchestrator/screenings`." + example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d + explode: false + in: path + name: screeningId + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/GetScreeningResultResponse" + description: Screening result + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Invalid request arguments. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Screening result not found. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get a Compliance Orchestrator screening's result + tags: + - Compliance Orchestrator (Beta) + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.complianceOrchestratorBeta.getScreeningResult(complianceOrchestratorBetaApiGetScreeningResultRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response + = fireblocks.complianceOrchestratorBeta().getScreeningResult(screeningId); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.compliance_orchestrator_beta.get_screening_result(screening_id); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.complianceOrchestratorBeta.getScreeningResult(complianceOrchestratorBetaApiGetScreeningResultRequest);" + - lang: Java + source: CompletableFuture> response + = fireblocks.complianceOrchestratorBeta().getScreeningResult(screeningId); + - lang: Python + source: response = fireblocks.compliance_orchestrator_beta.get_screening_result(screening_id); + x-accepts: + - application/json + /compliance/orchestrator/workflows/{workflowId}: + get: + description: "Returns a workflow's status and its steps in execution order.\ + \ Read it to see what a given `workflowId` will screen, and which fields its\ + \ rules may reference." + operationId: getWorkflow + parameters: + - description: The workflow's identifier. + example: f47ac10b-58cc-4372-a567-0e02b2c3d479 + explode: false + in: path + name: workflowId + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/GetWorkflowResponse" + description: Workflow + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Invalid request arguments. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Workflow not found. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get a Compliance Orchestrator workflow + tags: + - Compliance Orchestrator (Beta) + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.complianceOrchestratorBeta.getWorkflow(complianceOrchestratorBetaApiGetWorkflowRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = fireblocks.complianceOrchestratorBeta().getWorkflow(workflowId); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.compliance_orchestrator_beta.get_workflow(workflow_id); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.complianceOrchestratorBeta.getWorkflow(complianceOrchestratorBetaApiGetWorkflowRequest);" + - lang: Java + source: CompletableFuture> response = fireblocks.complianceOrchestratorBeta().getWorkflow(workflowId); + - lang: Python + source: response = fireblocks.compliance_orchestrator_beta.get_workflow(workflow_id); + x-accepts: + - application/json + /compliance/orchestrator/workflows/{workflowId}/status: + patch: + description: "Moves a workflow between `DRAFT` and `ACTIVE`. A workflow must\ + \ be `ACTIVE` before `POST /v1/compliance/orchestrator/screenings` will accept\ + \ a screening against it. Returns the workflow's id and new status, not its\ + \ full configuration." + operationId: updateWorkflowStatus + parameters: + - description: The workflow's identifier. + example: f47ac10b-58cc-4372-a567-0e02b2c3d479 + explode: false + in: path + name: workflowId + required: true + schema: + type: string + style: simple + - description: "A unique identifier for the request. If the request is sent\ + \ multiple times with the same idempotency key, the server will return the\ + \ same response as the first request. The idempotency key is valid for 24\ + \ hours." + explode: false + in: header + name: Idempotency-Key + required: false + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateWorkflowStatusRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateWorkflowStatusResponse" + description: Workflow status updated + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Invalid request arguments. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Workflow not found. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Update a Compliance Orchestrator workflow's status + tags: + - Compliance Orchestrator (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.complianceOrchestratorBeta.updateWorkflowStatus(complianceOrchestratorBetaApiUpdateWorkflowStatusRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.complianceOrchestratorBeta().updateWorkflowStatus(updateWorkflowStatusRequest,\ + \ workflowId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.compliance_orchestrator_beta.update_workflow_status(update_workflow_status_request,\ + \ workflow_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.complianceOrchestratorBeta.updateWorkflowStatus(complianceOrchestratorBetaApiUpdateWorkflowStatusRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.complianceOrchestratorBeta().updateWorkflowStatus(updateWorkflowStatusRequest,\ + \ workflowId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.compliance_orchestrator_beta.update_workflow_status(update_workflow_status_request,\ + \ workflow_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json /connected_accounts: get: description: | @@ -36969,6 +37613,71 @@ paths: x-content-type: application/json x-accepts: - application/json + /webhooks_settings/mtls_csr: + get: + description: | + Returns the Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate. + + The private key the CSR is built from is held by Fireblocks and is specific to this workspace. It is created on the first request for a given key type, and the same CSR is returned on subsequent requests for that type. + + Pass `keyAlgorithm` to choose RSA or ECDSA. A workspace may hold one key of each: the CSR returned is always the one for the type requested, so a certificate signed against it matches the key used at delivery time. + operationId: getMtlsCsr + parameters: + - description: "Algorithm of the private key the CSR is generated for. ECDSA\ + \ keys are smaller and quicker to issue, but the certificate authority signing\ + \ the request has to accept an EC subject key, which some do not by default." + explode: true + in: query + name: keyAlgorithm + required: false + schema: + default: RSA + enum: + - RSA + - ECDSA + example: RSA + type: string + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WebhookMtlsCsrResponse" + description: The mTLS CSR PEM + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get mTLS CSR + tags: + - Webhooks V2 + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.webhooksV2.getMtlsCsr(webhooksV2ApiGetMtlsCsrRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = + fireblocks.webhooksV2().getMtlsCsr(keyAlgorithm); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.webhooks_v2.get_mtls_csr(key_algorithm); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.webhooksV2.getMtlsCsr(webhooksV2ApiGetMtlsCsrRequest);" + - lang: Java + source: CompletableFuture> response = + fireblocks.webhooksV2().getMtlsCsr(keyAlgorithm); + - lang: Python + source: response = fireblocks.webhooks_v2.get_mtls_csr(key_algorithm); + x-accepts: + - application/json /webhooks_settings/oauth: get: description: | @@ -37229,7 +37938,7 @@ paths: description: | Updates only the fields present in the request; anything omitted is left as it is. Sending `clientSecret` on its own rotates the secret for every webhook using these credentials. - `customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Since a `null` inside a map is the delete mechanism, none of the three accepts `null` for the whole field — `customJwtClaims: null`, `customBodyParams: null` or `customHeaders: null` is rejected with a `400` rather than ignored. Clear a map by listing each of its keys with a `null` value. Because `null` is spent on deletion, a claim cannot be set to JSON `null` either, on this endpoint or on create. `mtlsClientSignedCert` is a scalar rather than a map, so `null` there does remove it. + `customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Setting one of the three to `null` as a whole clears that map, which is the quick way to empty it without naming every key. There is no ambiguity between the two uses of `null` — one names an entry to delete, the other names the field. A claim cannot be set to JSON `null`, though, on this endpoint or on create, because `null` is spent on deletion. `mtlsClientSignedCert` is a scalar rather than a map, so `null` there does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin. operationId: updateWebhookOauth @@ -38040,234 +38749,7 @@ paths: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get resend by query job status - tags: - - Webhooks V2 - x-rate-limit-category: read - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.webhooksV2.getResendByQueryJobStatus(webhooksV2ApiGetResendByQueryJobStatusRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture>\ - \ response = fireblocks.webhooksV2().getResendByQueryJobStatus(webhookId,\ - \ jobId);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.webhooks_v2.get_resend_by_query_job_status(webhook_id,\ - \ job_id);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.webhooksV2.getResendByQueryJobStatus(webhooksV2ApiGetResendByQueryJobStatusRequest);" - - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.webhooksV2().getResendByQueryJobStatus(webhookId,\ - \ jobId);" - - lang: Python - source: "response = fireblocks.webhooks_v2.get_resend_by_query_job_status(webhook_id,\ - \ job_id);" - x-accepts: - - application/json - /webhooks/{webhookId}/notifications/resend_by_resource: - post: - description: | - Resend notifications by resource Id - - Endpoint Permission: Owner, Admin, Non-Signing Admin, Editor, Signer. - operationId: resendNotificationsByResourceId - parameters: - - description: "A unique identifier for the request. If the request is sent\ - \ multiple times with the same idempotency key, the server will return the\ - \ same response as the first request. The idempotency key is valid for 24\ - \ hours." - explode: false - in: header - name: Idempotency-Key - required: false - schema: - type: string - style: simple - - description: The ID of the webhook - explode: false - in: path - name: webhookId - required: true - schema: - type: string - style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ResendNotificationsByResourceIdRequest" - required: true - responses: - "202": - description: Resend notifications by resource request was accepted and is - being processed - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Resend notifications by resource Id - tags: - - Webhooks V2 - x-rate-limit-category: async - x-readme: - code-samples: - - language: typescript - code: "const response: Promise> = fireblocks.webhooksV2.resendNotificationsByResourceId(webhooksV2ApiResendNotificationsByResourceIdRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response = fireblocks.webhooksV2().resendNotificationsByResourceId(resendNotificationsByResourceIdRequest,\ - \ webhookId, idempotencyKey);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.webhooks_v2.resend_notifications_by_resource_id(resend_notifications_by_resource_id_request,\ - \ webhook_id, idempotency_key);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise> = fireblocks.webhooksV2.resendNotificationsByResourceId(webhooksV2ApiResendNotificationsByResourceIdRequest);" - - lang: Java - source: "CompletableFuture> response = fireblocks.webhooksV2().resendNotificationsByResourceId(resendNotificationsByResourceIdRequest,\ - \ webhookId, idempotencyKey);" - - lang: Python - source: "response = fireblocks.webhooks_v2.resend_notifications_by_resource_id(resend_notifications_by_resource_id_request,\ - \ webhook_id, idempotency_key);" - x-content-type: application/json - x-accepts: - - application/json - /webhooks/{webhookId}/notifications/resend_failed: - post: - description: | - Resend all failed notifications for a webhook in the last 24 hours - - Endpoint Permission: Owner, Admin, Non-Signing Admin, Editor, Signer. - operationId: resendFailedNotifications - parameters: - - description: "A unique identifier for the request. If the request is sent\ - \ multiple times with the same idempotency key, the server will return the\ - \ same response as the first request. The idempotency key is valid for 24\ - \ hours." - explode: false - in: header - name: Idempotency-Key - required: false - schema: - type: string - style: simple - - description: The ID of the webhook - explode: false - in: path - name: webhookId - required: true - schema: - type: string - style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ResendFailedNotificationsRequest" - required: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ResendFailedNotificationsResponse" - description: No failed notifications to resend - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "202": - content: - application/json: - schema: - $ref: "#/components/schemas/ResendFailedNotificationsResponse" - description: Resend failed notifications request was accepted and is being - processed - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - Location: - $ref: "#/components/headers/Location" - default: - $ref: "#/components/responses/Error" - summary: Resend failed notifications - tags: - - Webhooks V2 - x-rate-limit-category: high_compute - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.webhooksV2.resendFailedNotifications(webhooksV2ApiResendFailedNotificationsRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture>\ - \ response = fireblocks.webhooksV2().resendFailedNotifications(resendFailedNotificationsRequest,\ - \ webhookId, idempotencyKey);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.webhooks_v2.resend_failed_notifications(resend_failed_notifications_request,\ - \ webhook_id, idempotency_key);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.webhooksV2.resendFailedNotifications(webhooksV2ApiResendFailedNotificationsRequest);" - - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.webhooksV2().resendFailedNotifications(resendFailedNotificationsRequest,\ - \ webhookId, idempotencyKey);" - - lang: Python - source: "response = fireblocks.webhooks_v2.resend_failed_notifications(resend_failed_notifications_request,\ - \ webhook_id, idempotency_key);" - x-content-type: application/json - x-accepts: - - application/json - /webhooks/{webhookId}/notifications/resend_failed/jobs/{jobId}: - get: - description: | - Get the status of a resend job - operationId: getResendJobStatus - parameters: - - description: The ID of the webhook - explode: false - in: path - name: webhookId - required: true - schema: - type: string - style: simple - - description: The ID of the resend job - explode: false - in: path - name: jobId - required: true - schema: - type: string - style: simple - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ResendFailedNotificationsJobStatusResponse" - description: Job status - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Get resend job status + summary: Get resend by query job status tags: - Webhooks V2 x-rate-limit-category: read @@ -38275,71 +38757,253 @@ paths: code-samples: - language: typescript code: "const response: Promise>\ - \ = fireblocks.webhooksV2.getResendJobStatus(webhooksV2ApiGetResendJobStatusRequest);" + \ = fireblocks.webhooksV2.getResendByQueryJobStatus(webhooksV2ApiGetResendByQueryJobStatusRequest);" name: Fireblocks SDK TypeScript example - language: java code: "CompletableFuture>\ - \ response = fireblocks.webhooksV2().getResendJobStatus(webhookId, jobId);" + \ response = fireblocks.webhooksV2().getResendByQueryJobStatus(webhookId,\ + \ jobId);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.webhooks_v2.get_resend_job_status(webhook_id,\ + code: "response = fireblocks.webhooks_v2.get_resend_by_query_job_status(webhook_id,\ \ job_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript source: "const response: Promise>\ - \ = fireblocks.webhooksV2.getResendJobStatus(webhooksV2ApiGetResendJobStatusRequest);" + \ = fireblocks.webhooksV2.getResendByQueryJobStatus(webhooksV2ApiGetResendByQueryJobStatusRequest);" - lang: Java source: "CompletableFuture>\ - \ response = fireblocks.webhooksV2().getResendJobStatus(webhookId, jobId);" + \ response = fireblocks.webhooksV2().getResendByQueryJobStatus(webhookId,\ + \ jobId);" - lang: Python - source: "response = fireblocks.webhooks_v2.get_resend_job_status(webhook_id,\ + source: "response = fireblocks.webhooks_v2.get_resend_by_query_job_status(webhook_id,\ \ job_id);" x-accepts: - application/json - /webhooks/mtls/csr: + /webhooks/{webhookId}/notifications/resend_by_resource: + post: + description: | + Resend notifications by resource Id + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Editor, Signer. + operationId: resendNotificationsByResourceId + parameters: + - description: "A unique identifier for the request. If the request is sent\ + \ multiple times with the same idempotency key, the server will return the\ + \ same response as the first request. The idempotency key is valid for 24\ + \ hours." + explode: false + in: header + name: Idempotency-Key + required: false + schema: + type: string + style: simple + - description: The ID of the webhook + explode: false + in: path + name: webhookId + required: true + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ResendNotificationsByResourceIdRequest" + required: true + responses: + "202": + description: Resend notifications by resource request was accepted and is + being processed + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Resend notifications by resource Id + tags: + - Webhooks V2 + x-rate-limit-category: async + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.webhooksV2.resendNotificationsByResourceId(webhooksV2ApiResendNotificationsByResourceIdRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.webhooksV2().resendNotificationsByResourceId(resendNotificationsByResourceIdRequest,\ + \ webhookId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.webhooks_v2.resend_notifications_by_resource_id(resend_notifications_by_resource_id_request,\ + \ webhook_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.webhooksV2.resendNotificationsByResourceId(webhooksV2ApiResendNotificationsByResourceIdRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.webhooksV2().resendNotificationsByResourceId(resendNotificationsByResourceIdRequest,\ + \ webhookId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.webhooks_v2.resend_notifications_by_resource_id(resend_notifications_by_resource_id_request,\ + \ webhook_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /webhooks/{webhookId}/notifications/resend_failed: + post: + description: | + Resend all failed notifications for a webhook in the last 24 hours + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Editor, Signer. + operationId: resendFailedNotifications + parameters: + - description: "A unique identifier for the request. If the request is sent\ + \ multiple times with the same idempotency key, the server will return the\ + \ same response as the first request. The idempotency key is valid for 24\ + \ hours." + explode: false + in: header + name: Idempotency-Key + required: false + schema: + type: string + style: simple + - description: The ID of the webhook + explode: false + in: path + name: webhookId + required: true + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ResendFailedNotificationsRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ResendFailedNotificationsResponse" + description: No failed notifications to resend + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "202": + content: + application/json: + schema: + $ref: "#/components/schemas/ResendFailedNotificationsResponse" + description: Resend failed notifications request was accepted and is being + processed + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + Location: + $ref: "#/components/headers/Location" + default: + $ref: "#/components/responses/Error" + summary: Resend failed notifications + tags: + - Webhooks V2 + x-rate-limit-category: high_compute + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.webhooksV2.resendFailedNotifications(webhooksV2ApiResendFailedNotificationsRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture>\ + \ response = fireblocks.webhooksV2().resendFailedNotifications(resendFailedNotificationsRequest,\ + \ webhookId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.webhooks_v2.resend_failed_notifications(resend_failed_notifications_request,\ + \ webhook_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.webhooksV2.resendFailedNotifications(webhooksV2ApiResendFailedNotificationsRequest);" + - lang: Java + source: "CompletableFuture>\ + \ response = fireblocks.webhooksV2().resendFailedNotifications(resendFailedNotificationsRequest,\ + \ webhookId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.webhooks_v2.resend_failed_notifications(resend_failed_notifications_request,\ + \ webhook_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /webhooks/{webhookId}/notifications/resend_failed/jobs/{jobId}: get: description: | - Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate. - operationId: getMtlsCsr + Get the status of a resend job + operationId: getResendJobStatus + parameters: + - description: The ID of the webhook + explode: false + in: path + name: webhookId + required: true + schema: + type: string + style: simple + - description: The ID of the resend job + explode: false + in: path + name: jobId + required: true + schema: + type: string + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/WebhookMtlsCsrResponse" - description: The mTLS CSR PEM + $ref: "#/components/schemas/ResendFailedNotificationsJobStatusResponse" + description: Job status headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get mTLS CSR + summary: Get resend job status tags: - Webhooks V2 x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.webhooksV2.getMtlsCsr();" + code: "const response: Promise>\ + \ = fireblocks.webhooksV2.getResendJobStatus(webhooksV2ApiGetResendJobStatusRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = - fireblocks.webhooksV2().getMtlsCsr(); + code: "CompletableFuture>\ + \ response = fireblocks.webhooksV2().getResendJobStatus(webhookId, jobId);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.webhooks_v2.get_mtls_csr(); + code: "response = fireblocks.webhooks_v2.get_resend_job_status(webhook_id,\ + \ job_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.webhooksV2.getMtlsCsr();" + source: "const response: Promise>\ + \ = fireblocks.webhooksV2.getResendJobStatus(webhooksV2ApiGetResendJobStatusRequest);" - lang: Java - source: CompletableFuture> response = - fireblocks.webhooksV2().getMtlsCsr(); + source: "CompletableFuture>\ + \ response = fireblocks.webhooksV2().getResendJobStatus(webhookId, jobId);" - lang: Python - source: response = fireblocks.webhooks_v2.get_mtls_csr(); + source: "response = fireblocks.webhooks_v2.get_resend_job_status(webhook_id,\ + \ job_id);" x-accepts: - application/json /management/api_users/{userId}/whitelist_ip_addresses: @@ -41762,10 +42426,30 @@ components: - destType - sourceType type: object + SystemMessageInfo: + example: + type: WARN + message: Slow transaction processing. Outgoing transactions might be stuck. + properties: + type: + enum: + - WARN + - BLOCK + type: string + message: + description: "A response from Fireblocks that communicates a message about\ + \ the health of the process being performed. If this object is returned\ + \ with data, you should expect potential delays or incomplete transaction\ + \ statuses." + example: Slow transaction processing. Outgoing transactions might be stuck. + type: string + type: object InternalTransferResponse: example: + systemMessages: [] success: true id: id + status: SUCCESS properties: success: description: Indicates whether the transfer was successful @@ -41774,6 +42458,21 @@ components: description: The transaction ID of the internal transfer nullable: true type: string + status: + description: The transfer status returned by the transaction manager. Only + present when the transfer was processed via the transaction manager flow. + example: SUCCESS + nullable: true + type: string + systemMessages: + description: System messages returned by the transaction manager about the + health of the transfer being performed. Only present when the transfer + was processed via the transaction manager flow. + example: [] + items: + $ref: "#/components/schemas/SystemMessageInfo" + nullable: true + type: array required: - success type: object @@ -48732,24 +49431,6 @@ components: example: "19" type: string type: object - SystemMessageInfo: - example: - type: WARN - message: Slow transaction processing. Outgoing transactions might be stuck. - properties: - type: - enum: - - WARN - - BLOCK - type: string - message: - description: "A response from Fireblocks that communicates a message about\ - \ the health of the process being performed. If this object is returned\ - \ with data, you should expect potential delays or incomplete transaction\ - \ statuses." - example: Slow transaction processing. Outgoing transactions might be stuck. - type: string - type: object TransactionResponse: example: authorizationInfo: @@ -56582,6 +57263,28 @@ components: required: - data type: object + ApproveApprovalRequest: + description: The signed approval of a pending request. + example: + signature: MEUCIQD...signature...Ok + keyId: 64e6b6a3-a607-40e0-8a1e-fe93976ffd46 + properties: + keyId: + description: "The ID of the approval API key used to sign the request. Optional\ + \ — if omitted, the signature is verified against all of the user's registered\ + \ approval API keys." + example: 64e6b6a3-a607-40e0-8a1e-fe93976ffd46 + type: string + signature: + description: "Base64url-encoded signature over the request's signable data,\ + \ produced with the private key of a registered approval API key. If keyId\ + \ is provided the signature must match that key; otherwise it is matched\ + \ against all of the user's registered keys." + example: MEUCIQD...signature...Ok + type: string + required: + - signature + type: object AddCollateralRequestBody: example: isSrcCollateral: true @@ -59612,13 +60315,13 @@ components: \ an empty field value, and it reaches your endpoint as an empty value rather\ \ than being dropped. A value has no length limit of its own and must not\ \ contain control characters. An array must not be empty and is not accepted\ - \ for `Cookie`." + \ for `Cookie` or `Authorization`." example: abc123 description: |- Custom HTTP headers attached to every notification delivered by this webhook. - A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` accepts only a string. An empty array is rejected — leave the name out instead. - At most 10 header lines in total, counted per array element rather than per name. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. - Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. When this webhook has OAuth credentials attached, an `Authorization` value you set and the bearer token are both sent as separate header lines. + A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` and `Authorization` accept only a string. An empty array is rejected — leave the name out instead. + At most 10 headers, counted by name — an array value counts once, however many lines it sends. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. + Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. `Authorization` may be set, but not together with `webhookOauthId`; a request that would leave both set is rejected. Values are write-only; responses return only the header names. example: X-Gateway-Key: abc123 @@ -59679,7 +60382,9 @@ components: description: "The id of the OAuth credentials this webhook authenticates\ \ with, from `/v1/webhooks_settings/oauth`. Several webhooks may share\ \ one credential set, so rotating its client secret covers all of them\ - \ at once. Send `null` to stop using OAuth for this webhook." + \ at once. Send `null` to stop using OAuth for this webhook. Cannot be\ + \ combined with an `authorization` custom header on the same webhook;\ + \ a request that would leave both set is rejected." example: 123e4567-e89b-12d3-a456-426614174000 format: uuid nullable: true @@ -59691,13 +60396,13 @@ components: \ §5.5 permits an empty field value, and it reaches your endpoint as\ \ an empty value rather than being dropped. A value has no length limit\ \ of its own and must not contain control characters. An array must\ - \ not be empty and is not accepted for `Cookie`." + \ not be empty and is not accepted for `Cookie` or `Authorization`." example: abc123 description: |- Custom HTTP headers attached to every notification delivered by this webhook. - A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` accepts only a string. An empty array is rejected — leave the name out instead. - At most 10 header lines in total, counted per array element rather than per name. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. - Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. When this webhook has OAuth credentials attached, an `Authorization` value you set and the bearer token are both sent as separate header lines. + A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` and `Authorization` accept only a string. An empty array is rejected — leave the name out instead. + At most 10 headers, counted by name — an array value counts once, however many lines it sends. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. + Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. `Authorization` may be set, but not together with `webhookOauthId`; a request that would leave both set is rejected. Values are write-only; responses return only the header names. example: X-Gateway-Key: abc123 @@ -59710,6 +60415,17 @@ components: - events - url type: object + WebhookMtlsKeyAlgorithm: + description: "Algorithm of the Fireblocks-held mTLS private key. A workspace\ + \ may hold one key of each type, so a CSR is always returned for the type\ + \ requested, and the type is echoed back on the response. ECDSA keys are smaller\ + \ and quicker to issue, but the certificate authority signing the request\ + \ has to accept an EC subject key, which some do not by default." + enum: + - RSA + - ECDSA + example: RSA + type: string WebhookMtlsCsrResponse: description: mTLS Certificate Signing Request response example: @@ -59717,6 +60433,7 @@ components: -----BEGIN CERTIFICATE REQUEST----- ... -----END CERTIFICATE REQUEST----- + keyAlgorithm: RSA properties: csr: description: The Fireblocks PEM-encoded Certificate Signing Request (CSR). @@ -59725,14 +60442,18 @@ components: ... -----END CERTIFICATE REQUEST----- type: string + keyAlgorithm: + $ref: "#/components/schemas/WebhookMtlsKeyAlgorithm" required: - csr + - keyAlgorithm type: object WebhookOauthCredentials: description: "A stored OAuth 2.0 client credential set, referenced by webhooks\ - \ through their `webhookOauthId`. When a webhook references one, the dispatcher\ - \ fetches a bearer token from `url` before each delivery and attaches it as\ - \ `Authorization: Bearer {token}`. Secret material is never returned: `clientSecret`\ + \ through their `webhookOauthId`. Deliveries for a webhook that references\ + \ one carry `Authorization: Bearer {token}`, using a token fetched from `url`\ + \ and cached until it expires, so your authorization server sees far fewer\ + \ token requests than deliveries. Secret material is never returned: `clientSecret`\ \ is absent from this schema entirely, and the `customJwtClaims`, `customBodyParams`\ \ and `customHeaders` fields are reduced to their names, without the configured\ \ values." @@ -59872,8 +60593,8 @@ components: additionalProperties: type: string description: |- - Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. Applies to every authentication method. - Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` is not sent when `authMethod` is `client_secret_basic`. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. + Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. + Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` can be set with `client_secret_post` or `client_secret_jwt`, which send the credentials in the body — useful when your token endpoint sits behind a gateway. It is rejected with `client_secret_basic`, which sends the credentials in that header. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. Values are write-only; responses return only the header names. On update this merges name by name rather than replacing — see `WebhookOauthCustomHeadersUpdate`. example: x-api-key: gateway-key @@ -59965,8 +60686,8 @@ components: additionalProperties: type: string description: |- - Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. Applies to every authentication method. - Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` is not sent when `authMethod` is `client_secret_basic`. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. + Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. + Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` can be set with `client_secret_post` or `client_secret_jwt`, which send the credentials in the body — useful when your token endpoint sits behind a gateway. It is rejected with `client_secret_basic`, which sends the credentials in that header. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. Values are write-only; responses return only the header names. On update this merges name by name rather than replacing — see `WebhookOauthCustomHeadersUpdate`. example: x-api-key: gateway-key @@ -60060,7 +60781,7 @@ components: description: |- A delta applied to the token request headers — not the webhook delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. So `{ "X-Api-Key": "new-key", "X-Tenant": null }` rotates `X-Api-Key`, drops `X-Tenant`, and changes nothing else. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another, and names are stored and returned lowercased. - Same rules as on create: string values only, `Content-Type`/`Content-Length`/`Host` reserved, resulting set under 16 KB, values write-only. + Same rules as on create: string values only, `Content-Type`, `Content-Length` and `Host` reserved, `Authorization` only with `client_secret_post` or `client_secret_jwt`, resulting set under 16 KB, values write-only. example: x-api-key: gateway-key x-tenant: null @@ -60070,7 +60791,7 @@ components: description: |- A partial update. Every field is optional and an omitted field is left as it is, so `{ "clientSecret": "new-secret" }` rotates the secret and changes nothing else. A rotation applies to every webhook referencing these credentials. - The three custom maps merge: a key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched. Because `null` inside a map means delete, none of the three is nullable as a whole — `customJwtClaims: null` and friends are rejected with a `400`. Clear a map by naming each key with a `null` value. `mtlsClientSignedCert` is a scalar, so `null` there does remove it. + The three custom maps merge. A key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched, and the whole field set to `null` clears the map. There is no ambiguity between the two uses of `null` — one names an entry, the other names the field. `mtlsClientSignedCert` is a scalar, so `null` there removes it. example: clientId: my-client-id customBodyParams: @@ -60158,7 +60879,7 @@ components: description: |- A delta applied to the token request headers — not the webhook delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. So `{ "X-Api-Key": "new-key", "X-Tenant": null }` rotates `X-Api-Key`, drops `X-Tenant`, and changes nothing else. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another, and names are stored and returned lowercased. - Same rules as on create: string values only, `Content-Type`/`Content-Length`/`Host` reserved, resulting set under 16 KB, values write-only. + Same rules as on create: string values only, `Content-Type`, `Content-Length` and `Host` reserved, `Authorization` only with `client_secret_post` or `client_secret_jwt`, resulting set under 16 KB, values write-only. example: x-api-key: gateway-key x-tenant: null @@ -60181,13 +60902,13 @@ components: \ as one header line per element, or `null` to delete the header. A string\ \ may be empty. A value has no length limit of its own and must not contain\ \ control characters. An array must not be empty and is not accepted for\ - \ `Cookie`." + \ `Cookie` or `Authorization`." example: abc123 description: |- A delta applied to the delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. A value replaces what is stored under that name rather than adding to it, so an array is the complete new set of lines for that header. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another. - Same rules as on create: string or non-empty array, `Cookie` string-only, 10 lines total and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit. + Same rules as on create: string or non-empty array, `Cookie` and `Authorization` string-only, 10 headers and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit. `Authorization` cannot be combined with `webhookOauthId`, though one request may add it and detach the credentials together. example: X-Gateway-Key: abc123 X-Forwarded-For: @@ -60247,7 +60968,9 @@ components: description: "The id of the OAuth credentials this webhook authenticates\ \ with, from `/v1/webhooks_settings/oauth`. Several webhooks may share\ \ one credential set, so rotating its client secret covers all of them\ - \ at once. Send `null` to stop using OAuth for this webhook." + \ at once. Send `null` to stop using OAuth for this webhook. Cannot be\ + \ combined with an `authorization` custom header on the same webhook;\ + \ a request that would leave both set is rejected." example: 123e4567-e89b-12d3-a456-426614174000 format: uuid nullable: true @@ -60258,13 +60981,13 @@ components: \ sent as one header line per element, or `null` to delete the header.\ \ A string may be empty. A value has no length limit of its own and\ \ must not contain control characters. An array must not be empty and\ - \ is not accepted for `Cookie`." + \ is not accepted for `Cookie` or `Authorization`." example: abc123 description: |- A delta applied to the delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. A value replaces what is stored under that name rather than adding to it, so an array is the complete new set of lines for that header. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another. - Same rules as on create: string or non-empty array, `Cookie` string-only, 10 lines total and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit. + Same rules as on create: string or non-empty array, `Cookie` and `Authorization` string-only, 10 headers and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit. `Authorization` cannot be combined with `webhookOauthId`, though one request may add it and detach the credentials together. example: X-Gateway-Key: abc123 X-Forwarded-For: @@ -61388,9 +62111,12 @@ components: $ref: "#/components/schemas/Parameter" type: array value: - description: The value of the parameter. can also be ParameterWithValue + description: "The value of the parameter. The shape follows the ABI `type`:\ + \ a string for `string`/`address`/`bytes*`, a number for `uint*`/`int*`,\ + \ a boolean for `bool`, an array for `T[]`, and for `tuple` an array of\ + \ nested ParameterWithValue objects (one per entry in `components`, in\ + \ ABI order)." example: "true" - type: string functionValue: allOf: - $ref: "#/components/schemas/LeanAbiFunction" @@ -64938,10 +65664,12 @@ components: cumulativeGasUsed: description: The cumulative gas used in the transaction example: 21000 + format: int64 type: integer effectiveGasPrice: description: The effective gas price example: 1000000000 + format: int64 type: integer from: description: Sender address @@ -64950,6 +65678,7 @@ components: gasUsed: description: Gas used by the transaction example: 21000 + format: int64 type: integer logs: description: Array of transaction logs @@ -77620,6 +78349,742 @@ components: policy rule on tenant configuration. type: boolean type: object + ScreeningOperationEnum: + description: | + What the caller wants Compliance Orchestrator to do. The target workflow must + have a step configured for the operation; the error names the supported set + when it does not. + + - `ADDRESS_SCREENING` — screen an address on its own, before anything exists + on-chain. Answers whether the address itself carries risk. + - `TRANSACTION_SCREENING` — screen a whole transfer: source and destination, + amount and direction, not the destination alone. + - `REGISTER_TRANSACTION` — record a confirmed transfer with the provider for + ongoing monitoring. Not a gate: it files the transfer so the provider's own + rules can raise alerts later, which is what feeds its AML model. + enum: + - ADDRESS_SCREENING + - TRANSACTION_SCREENING + - REGISTER_TRANSACTION + example: ADDRESS_SCREENING + type: string + TransferDirectionEnum: + description: "A transfer's direction relative to the workspace. Set for `TRANSACTION_SCREENING`\ + \ and `REGISTER_TRANSACTION`; it has no meaning for `ADDRESS_SCREENING`, which\ + \ screens an address on its own." + enum: + - INBOUND + - OUTBOUND + example: OUTBOUND + type: string + ScreeningPayload: + description: The subject of the screening. Which fields are required depends + on the operation and on the connectors configured on the workflow's step. + properties: + blockchain: + description: The blockchain network of the asset being screened. + example: ETH + type: string + asset: + description: The asset identifier being screened. + example: ETH + type: string + assetAmount: + description: "The amount of the asset involved in the transaction, as a\ + \ string." + example: "1.5" + type: string + usdValue: + description: "The USD value of the transaction amount, as a string." + example: "3000.00" + type: string + customerRefId: + description: Customer-provided reference identifier for tracking. + example: customer_ref_789 + type: string + externalId: + description: External identifier for the screening (provider-specific). + example: aml_screening_12345 + type: string + address: + description: The blockchain address to screen. Used for the `ADDRESS_SCREENING` + operation. + example: 0x9876543210fedcba9876543210fedcba98765432 + type: string + direction: + $ref: "#/components/schemas/TransferDirectionEnum" + sourceAddress: + description: The source blockchain address(es) of the transaction. + example: + - 0x9876543210fedcba9876543210fedcba98765432 + items: + type: string + type: array + destinationAddress: + description: The destination blockchain address(es) of the transaction. + example: + - 0x1234567890abcdef1234567890abcdef12345678 + items: + type: string + type: array + txHash: + description: The transaction hash on the blockchain. + example: 0xabc123... + type: string + type: object + ScreeningInput: + description: "What the caller wants screened, and how." + example: + payload: + - blockchain: ETH + asset: ETH + address: 0x9876543210fedcba9876543210fedcba98765432 + operation: ADDRESS_SCREENING + properties: + operation: + $ref: "#/components/schemas/ScreeningOperationEnum" + payload: + description: The screening subjects. Up to 100 per request — the provider's + own batch limit for address screening — so a bulk check does not need + one call per address. + example: + - blockchain: ETH + asset: ETH + address: 0x9876543210fedcba9876543210fedcba98765432 + items: + $ref: "#/components/schemas/ScreeningPayload" + maxItems: 100 + minItems: 1 + type: array + required: + - operation + - payload + type: object + TriggerScreeningRequest: + description: Request to trigger a screening against an active workflow. + example: + input: + payload: + - blockchain: ETH + asset: ETH + address: 0x9876543210fedcba9876543210fedcba98765432 + operation: ADDRESS_SCREENING + workflowId: b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e + properties: + workflowId: + description: The workflow to screen against. Must be in `ACTIVE` status. + example: b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e + type: string + input: + $ref: "#/components/schemas/ScreeningInput" + required: + - input + - workflowId + type: object + ComplianceScreeningStatusEnum: + description: | + A screening's lifecycle status. + + - `PENDING` — accepted, not started + - `RUNNING` — one or more steps in flight + - `COMPLETED` — every step finished and the workflow outcome is set + - `FAILED` — the screening could not be completed + enum: + - PENDING + - RUNNING + - COMPLETED + - FAILED + example: COMPLETED + type: string + TriggerScreeningResponse: + description: Acknowledgement that a screening was accepted and is now running. + example: + screeningId: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d + screeningStatus: COMPLETED + properties: + screeningId: + description: "Identifier of the screening that was created. Poll `GET /v1/compliance/orchestrator/screenings/{screeningId}`\ + \ with it for the verdict." + example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d + type: string + screeningStatus: + $ref: "#/components/schemas/ComplianceScreeningStatusEnum" + required: + - screeningId + - screeningStatus + type: object + ScreeningOutcomeEnum: + description: "An `ACCEPT`/`REJECT` decision — the workflow's own outcome, a\ + \ step's outcome, or the result of evaluating a step's outcome rules. `null`\ + \ on a workflow outcome that is not decided yet." + enum: + - ACCEPT + - REJECT + example: ACCEPT + nullable: true + type: string + TriggerRuleOutcomeEnum: + description: | + Whether the step's trigger rules caused its connector to run. This is a + decision about running, not about risk — `ACCEPT`/`REJECT` belong to the + outcome fields. + + - `EXECUTE` — a rule called for screening, so the connector ran + - `PASS` — a rule let the subject through without screening + - `FAIL` — the step could not run; see `bypassReason` + enum: + - EXECUTE + - PASS + - FAIL + example: EXECUTE + type: string + RuleConditionOperatorEnum: + description: The comparison applied between a rule condition's `field` and its + `value`. + enum: + - EQUALS + - NOT_EQUALS + - GT + - GTE + - LT + - LTE + example: EQUALS + type: string + RuleCondition: + description: A single condition within a rule. Conditions within a rule are + AND-ed together. + properties: + field: + description: The input context field this condition tests. Allowed values + depend on the rule set type (trigger vs. outcome) and the step's connector/operation. + example: blockchain + type: string + operator: + $ref: "#/components/schemas/RuleConditionOperatorEnum" + value: + description: "The value `field` is compared against, using `operator`." + example: ETH + type: string + required: + - field + - operator + - value + type: object + RuleActionEnum: + description: | + What happens when a rule matches. Which values are legal depends on the rule + set the rule belongs to — a trigger rule decides whether to screen, an + outcome rule decides what the answer means. The enum is the union of both + sets, so neither set accepts all of its values: `FREEZE` is the one value + shared by the two, and every other value belongs to exactly one of them. + + Trigger rules: + + - `SCREEN` — call the connector + - `PASS` — let the subject through without screening + - `FREEZE` — hold for manual action + + Outcome rules: + + - `ACCEPT` — the step passes + - `REJECT` — the step fails + - `ALERT` — the step passes but is flagged for review + - `FREEZE` — hold for manual action + - `WAIT` — come back later; refused once the deadline has passed + enum: + - SCREEN + - PASS + - FREEZE + - ACCEPT + - REJECT + - ALERT + - WAIT + example: SCREEN + type: string + Rule: + description: "A single rule within a rule set. The first rule whose conditions\ + \ match wins, and its `ruleAction` is applied." + nullable: true + properties: + ruleId: + description: "UUID, unique within the rule set." + example: f47ac10b-58cc-4372-a567-0e02b2c3d479 + type: string + conditions: + description: Conditions AND-ed together within this rule. + example: [] + items: + $ref: "#/components/schemas/RuleCondition" + type: array + ruleAction: + $ref: "#/components/schemas/RuleActionEnum" + order: + description: "Zero-based evaluation order among the rule set's rules, lowest\ + \ first." + example: 0 + type: integer + title: + description: User-facing label for the rule. Cosmetic only — not read by + rule evaluation. + example: High risk score + nullable: true + type: string + type: object + StepResultMetadata: + additionalProperties: true + description: "Connector-specific data, keyed by the connector's configured outcomeMetaParameters\ + \ for this operation." + example: + address: 0x9876543210fedcba9876543210fedcba98765432 + blockchain: ETH + type: object + ConnectorVerdictEnum: + description: "The connector's own verdict for a step, before the step's outcome\ + \ rules are applied. `null` on a step that did not reach the provider." + enum: + - ACCEPT + - REJECT + - ALERT + example: ACCEPT + nullable: true + type: string + ConnectorStatusEnum: + description: | + The connector's own processing status for a step. + + - `COMPLETED` — the provider answered + - `BYPASSED` — no provider call was made; see `bypassReason` + - `FAILED` — the provider call did not succeed + - `FROZEN` — the step is held pending manual action + enum: + - COMPLETED + - BYPASSED + - FAILED + - FROZEN + example: COMPLETED + nullable: true + type: string + BypassReasonEnum: + description: | + Why a step's screening did not run. A verbatim mirror of the platform's + `BypassReason` vocabulary, shared with the rest of Fireblocks screening. + + Only `PASSED_BY_POLICY` is an approval — the policy deliberately let the + subject through. Every other value means the check could not be performed, + and the step is rejected rather than passed. A bypass is not a pass. + + - `MANUAL` — a person bypassed it + - `UNSUPPORTED_ASSET` — the provider does not screen this asset or chain + - `UNSUPPORTED_ROUTE` — the provider does not screen this route + - `PASSED_BY_POLICY` — a policy rule let it through without screening + - `BYPASSED_FAILURE` — screening failed and policy allowed a bypass + - `TIMED_OUT` — the provider did not answer within the deadline + - `BAD_CREDENTIALS` — the tenant's provider credentials were rejected + - `CONFIGURATION_ERROR` — the connector is misconfigured for this tenant + - `DROPPED_BY_BLOCKCHAIN` — the transaction never confirmed + - `PROCESS_DISMISSED` — the surrounding process was cancelled + enum: + - MANUAL + - UNSUPPORTED_ASSET + - UNSUPPORTED_ROUTE + - PASSED_BY_POLICY + - BYPASSED_FAILURE + - TIMED_OUT + - BAD_CREDENTIALS + - CONFIGURATION_ERROR + - DROPPED_BY_BLOCKCHAIN + - PROCESS_DISMISSED + example: PASSED_BY_POLICY + nullable: true + type: string + RiskLevelEnum: + description: "The provider's risk assessment for a step, normalised across connectors.\ + \ `null` on a step that did not reach the provider — the absence of a risk\ + \ level is not the same as low risk." + enum: + - SEVERE + - HIGH + - MEDIUM + - LOW + - UNKNOWN + example: LOW + nullable: true + type: string + StepResult: + description: |- + The result of one workflow step's execution during a screening. + + Carries the step's outcome next to the two rule evaluations that produced it — which trigger rule decided the connector should run, and which outcome rule read the response — plus the provider's own verdict and risk level. + + A step that did not screen carries a `bypassReason` instead of a risk level. Only `PASSED_BY_POLICY` means the policy deliberately let it through; every other reason means the check could not be performed, and the step is rejected rather than passed. A bypass is not an approval. + properties: + stepId: + description: Identifier of this step within the workflow. + example: step-1 + type: string + connectorId: + description: Identifier of the connector that executed this step. + example: connector-kyt + type: string + operation: + $ref: "#/components/schemas/ScreeningOperationEnum" + triggerRuleOutcome: + $ref: "#/components/schemas/TriggerRuleOutcomeEnum" + matchedTriggerRule: + $ref: "#/components/schemas/Rule" + outcomeRuleOutcome: + $ref: "#/components/schemas/ScreeningOutcomeEnum" + matchedOutcomeRule: + $ref: "#/components/schemas/Rule" + outcome: + $ref: "#/components/schemas/ScreeningOutcomeEnum" + metadata: + additionalProperties: true + description: "Connector-specific data, keyed by the connector's configured\ + \ outcomeMetaParameters for this operation." + example: + address: 0x9876543210fedcba9876543210fedcba98765432 + blockchain: ETH + type: object + ticketId: + description: The connector-side screening ticket identifier. + example: ticket-12345 + nullable: true + type: string + verdict: + $ref: "#/components/schemas/ConnectorVerdictEnum" + connectorStatus: + $ref: "#/components/schemas/ConnectorStatusEnum" + bypassReason: + $ref: "#/components/schemas/BypassReasonEnum" + risk: + $ref: "#/components/schemas/RiskLevelEnum" + required: + - connectorId + - operation + - outcome + - outcomeRuleOutcome + - stepId + - triggerRuleOutcome + type: object + AuditEventTypeEnum: + description: | + The kind of event an audit entry records. + + - `STATUS_TRANSITION` — the screening moved between statuses + - `STEP_TRIGGER_RULE_EVALUATED` — a step's trigger rules were evaluated + - `CONNECTOR_CALL` — a connector was called; `data.phase` distinguishes the + request from its terminal result + - `STEP_OUTCOME_RULE_EVALUATED` — a step's outcome rules read the response + - `STEP_METADATA_RECORDED` — connector metadata was attached to a step + - `WORKFLOW_OUTCOME` — the workflow outcome was derived from its steps. + enum: + - STATUS_TRANSITION + - STEP_TRIGGER_RULE_EVALUATED + - CONNECTOR_CALL + - STEP_OUTCOME_RULE_EVALUATED + - STEP_METADATA_RECORDED + - WORKFLOW_OUTCOME + example: STATUS_TRANSITION + type: string + AuditLogEntry: + description: One entry in a screening's append-only audit trail. + properties: + timestamp: + description: "Unix timestamp in seconds when the event occurred, encoded\ + \ as a string." + example: "1700000000" + type: string + eventType: + $ref: "#/components/schemas/AuditEventTypeEnum" + data: + description: "The event payload, JSON serialised and then base64 encoded.\ + \ Its shape depends on `eventType` — decode it to read the event." + example: !!binary |- + ZXlKMGJ5STZJbEJGVGtSSlRrY2lmUT09 + format: byte + type: string + required: + - data + - eventType + - timestamp + type: object + GetScreeningResultResponse: + description: "The current status, outcome, per-step results, and audit log for\ + \ a screening." + example: + auditLog: [] + screeningId: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d + screeningStatus: COMPLETED + steps: [] + workflowId: b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e + outcome: ACCEPT + properties: + screeningId: + description: Identifier of the screening being queried. + example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d + type: string + workflowId: + description: Identifier of the workflow that produced this screening. + example: b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e + type: string + screeningStatus: + $ref: "#/components/schemas/ComplianceScreeningStatusEnum" + outcome: + $ref: "#/components/schemas/ScreeningOutcomeEnum" + steps: + description: Flat step list. + example: [] + items: + $ref: "#/components/schemas/StepResult" + type: array + auditLog: + description: Append-only audit trail for this screening. + example: [] + items: + $ref: "#/components/schemas/AuditLogEntry" + type: array + required: + - auditLog + - screeningId + - screeningStatus + - steps + - workflowId + type: object + WorkflowStatusEnum: + description: | + A workflow's status, which controls whether it can be screened against. + + - `DRAFT` — the editing state. Rules can be changed while nothing is + screening against them, so a screening never runs against a half-finished + configuration. + - `ACTIVE` — `POST /v1/compliance/orchestrator/screenings` accepts screenings against this workflow. + enum: + - ACTIVE + - DRAFT + example: ACTIVE + type: string + RuleSet: + description: "An ordered set of rules. Rules are evaluated top to bottom, and\ + \ the first one that matches wins." + properties: + rules: + description: "Ordered rule list, evaluated top to bottom; the first match\ + \ wins." + example: + - ruleId: f47ac10b-58cc-4372-a567-0e02b2c3d479 + conditions: + - field: blockchain + operator: EQUALS + value: ETH + ruleAction: SCREEN + order: 0 + items: + $ref: "#/components/schemas/Rule" + type: array + type: object + StepOperationConfig: + description: |- + Configuration for one operation the step's connector handles. The operation arrives on the screening request; the connector decides how to handle it. + + Two rule sets govern the step, and both are configured here rather than sent per request, so the same call behaves differently across workflows. Trigger rules decide whether the connector runs at all; outcome rules turn the provider's response into the step's verdict. With neither configured the step runs under the connector's own defaults, which for `kyt_trmlabs` are permissive: the screening completes without consulting the provider. + + The four parameter lists are the contract for writing those rules: a rule naming a field outside `triggerRuleParameters` or `outcomeEvaluationParameters` is rejected. They are derived from the connector registry rather than stored, so a connector gaining a field is reflected here without a migration. + properties: + operation: + $ref: "#/components/schemas/ScreeningOperationEnum" + requiredParameters: + description: "Resolved server-side on every `GetWorkflow` call from the\ + \ step's connector definition for this operation. Read-only: ignored on\ + \ write." + example: + - address + - blockchain + items: + type: string + type: array + optionalParameters: + description: "Like `requiredParameters`, but optional inputs to the operation." + example: + - asset + - assetAmount + - usdValue + items: + type: string + type: array + triggerRuleParameters: + description: Fields a condition in `triggerRuleSetStruct` may reference. + example: + - address + - blockchain + - asset + items: + type: string + type: array + outcomeEvaluationParameters: + description: Provider response fields a condition in `outcomeRuleSetStruct` + may reference. + example: + - addressHighestRiskScoreLevel + items: + type: string + type: array + outcomeMetaParameters: + description: Additional provider response fields returned with the result; + not usable in `outcomeRuleSetStruct` conditions. + example: + - address + - blockchain + items: + type: string + type: array + triggerRuleSetStruct: + $ref: "#/components/schemas/RuleSet" + triggerRuleSetJson: + description: "The tenant's trigger rules, as a JSON-encoded string. Set\ + \ for steps whose rules are still defined as a legacy screening policy\ + \ rather than natively in Compliance Orchestrator, and refreshed on every\ + \ read. Mutually exclusive with `triggerRuleSetStruct`." + example: "[{\"ruleId\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"action\"\ + :\"REJECT\"}]" + nullable: true + type: string + outcomeRuleSetStruct: + $ref: "#/components/schemas/RuleSet" + outcomeRuleSetJson: + description: "The tenant's outcome rules, as a JSON-encoded string. Set\ + \ for steps whose rules are still defined as a legacy screening policy\ + \ rather than natively in Compliance Orchestrator, and refreshed on every\ + \ read. Mutually exclusive with `outcomeRuleSetStruct`." + example: "[{\"ruleId\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"action\"\ + :\"REJECT\"}]" + nullable: true + type: string + type: object + StepConfig: + description: |- + One step in a workflow, backed by a single connector. + + A connector is the compliance provider integration that does the work — `kyt_trmlabs` is TRM Labs. The step declares which operations that connector handles; a screening naming an operation no step is configured for is refused, and the error reports the supported set. + properties: + stepId: + description: Unique within the workflow. + example: f47ac10b-58cc-4372-a567-0e02b2c3d479 + type: string + connectorId: + description: Identifies which connector this step invokes. + example: kyt_trmlabs + type: string + operations: + description: One entry per operation the step's connector handles. + example: + - operation: ADDRESS_SCREENING + requiredParameters: + - address + - blockchain + optionalParameters: [] + triggerRuleParameters: [] + outcomeEvaluationParameters: [] + outcomeMetaParameters: [] + items: + $ref: "#/components/schemas/StepOperationConfig" + type: array + order: + description: "Execution order among the workflow's steps, lowest first." + example: 0 + type: integer + required: + - connectorId + - operations + - order + - stepId + type: object + GetWorkflowResponse: + description: |- + A workflow's current definition, including its steps and each step's rule sets. + + A workflow is the configuration a screening runs against: an ordered list of steps, each backed by one connector. It must be `ACTIVE` before a screening will accept it — `DRAFT` is the editing state, so a screening never runs against a half-finished configuration. + example: + createdAt: "1735689600" + description: Screens EU customer addresses against KYT risk providers. + templateId: m1-kyt-workflow + title: KYT Screening - EU Customers + steps: + - stepId: f47ac10b-58cc-4372-a567-0e02b2c3d479 + connectorId: kyt_trmlabs + operations: [] + order: 0 + workflowId: f47ac10b-58cc-4372-a567-0e02b2c3d479 + status: ACTIVE + properties: + workflowId: + description: Unique identifier of the workflow. + example: f47ac10b-58cc-4372-a567-0e02b2c3d479 + type: string + templateId: + description: "The template this workflow was provisioned from, if any." + example: m1-kyt-workflow + nullable: true + type: string + status: + $ref: "#/components/schemas/WorkflowStatusEnum" + title: + description: User-facing display name for the workflow. + example: KYT Screening - EU Customers + type: string + description: + description: User-facing free-text description of the workflow's purpose. + example: Screens EU customer addresses against KYT risk providers. + nullable: true + type: string + createdAt: + description: "Unix timestamp in seconds when the workflow was provisioned,\ + \ encoded as a string." + example: "1735689600" + type: string + steps: + description: Flat list — one step per connector. + example: + - stepId: f47ac10b-58cc-4372-a567-0e02b2c3d479 + connectorId: kyt_trmlabs + operations: [] + order: 0 + items: + $ref: "#/components/schemas/StepConfig" + type: array + required: + - createdAt + - status + - steps + - title + - workflowId + type: object + UpdateWorkflowStatusRequest: + description: Request to change a workflow's status. + example: + status: ACTIVE + properties: + status: + $ref: "#/components/schemas/WorkflowStatusEnum" + required: + - status + type: object + UpdateWorkflowStatusResponse: + description: The workflow's status after the update. + example: + workflowId: f47ac10b-58cc-4372-a567-0e02b2c3d479 + status: ACTIVE + properties: + workflowId: + description: Unique identifier of the workflow. + example: f47ac10b-58cc-4372-a567-0e02b2c3d479 + type: string + status: + $ref: "#/components/schemas/WorkflowStatusEnum" + required: + - status + - workflowId + type: object RescreenTransactionRequest: example: resetTravelRuleMessage: false @@ -88454,6 +89919,145 @@ components: nullable: true type: array type: object + ApprovalApiPublicKey: + description: The public key material and its signing algorithm. + example: + publicKeyPem: |- + -----BEGIN PUBLIC KEY----- + MFkwEwYHKoZIzj0CAQ... + -----END PUBLIC KEY----- + algorithm: ECDSA_SECP256R1 + properties: + algorithm: + description: The signature algorithm of the public key. + enum: + - RSA_PS256 + - ECDSA_SECP256R1 + - ECDSA_SECP384R1 + - EDDSA_ED25519 + example: ECDSA_SECP256R1 + type: string + publicKeyPem: + description: The PEM-encoded public key. + example: |- + -----BEGIN PUBLIC KEY----- + MFkwEwYHKoZIzj0CAQ... + -----END PUBLIC KEY----- + type: string + required: + - algorithm + - publicKeyPem + type: object + ApprovalApiKey: + description: A registered approval API key for an API user. + properties: + id: + description: "The unique key ID, used to delete the key." + example: fab543c0-d6be-414c-aa05-5c6c84269d7a + type: string + name: + description: A human-readable label for the key. + example: primary signing key + type: string + createdAt: + description: Creation time as epoch time in seconds. + example: "1750000000" + type: string + lastUsedAt: + description: "Last time the key was used to sign, as epoch time in seconds\ + \ (0 if never used)." + example: "1750600000" + type: string + approvalApiPublicKey: + $ref: "#/components/schemas/ApprovalApiPublicKey" + userId: + description: The ID of the API user who owns this key. + example: 8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94 + type: string + required: + - approvalApiPublicKey + - createdAt + - id + - lastUsedAt + - name + - userId + type: object + ListApprovalApiKeysResponse: + description: The approval API keys registered for the API user. + example: + next: cursor for the next page + data: + - id: fab543c0-d6be-414c-aa05-5c6c84269d7a + name: primary signing key + createdAt: "1750000000" + lastUsedAt: "1750600000" + approvalApiPublicKey: + algorithm: ECDSA_SECP256R1 + publicKeyPem: |- + -----BEGIN PUBLIC KEY----- + MFkwEwYHKoZIzj0CAQ... + -----END PUBLIC KEY----- + userId: 8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94 + properties: + data: + description: The registered approval API keys. + example: + - id: fab543c0-d6be-414c-aa05-5c6c84269d7a + name: primary signing key + createdAt: "1750000000" + lastUsedAt: "1750600000" + approvalApiPublicKey: + algorithm: ECDSA_SECP256R1 + publicKeyPem: |- + -----BEGIN PUBLIC KEY----- + MFkwEwYHKoZIzj0CAQ... + -----END PUBLIC KEY----- + userId: 8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94 + items: + $ref: "#/components/schemas/ApprovalApiKey" + type: array + next: + description: Cursor for the next page of results. Pass it back as the `pageCursor` + query param to fetch the next page. Empty or absent when this is the last + page. + example: cursor for the next page + type: string + required: + - data + type: object + RegisterApprovalApiKeyRequest: + description: The approval API key to register. + example: + approvalApiPublicKey: + publicKeyPem: |- + -----BEGIN PUBLIC KEY----- + MFkwEwYHKoZIzj0CAQ... + -----END PUBLIC KEY----- + algorithm: ECDSA_SECP256R1 + name: primary signing key + properties: + name: + description: A human-readable label for the key. + example: primary signing key + type: string + approvalApiPublicKey: + $ref: "#/components/schemas/ApprovalApiPublicKey" + required: + - approvalApiPublicKey + - name + type: object + RegisterApprovalApiKeyResponse: + description: The result of registering an approval API key. + example: + keyId: fab543c0-d6be-414c-aa05-5c6c84269d7a + properties: + keyId: + description: "The server-generated ID of the registered key, used for deletion." + example: fab543c0-d6be-414c-aa05-5c6c84269d7a + type: string + required: + - keyId + type: object SmartTransferTicketTerm: description: Data object with result data example: diff --git a/build.gradle b/build.gradle index d9289d8e..d43e483e 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'eclipse' apply plugin: 'com.diffplug.spotless' group = 'com.fireblocks.sdk' -version = '31.0.0' +version = '0.0.0' buildscript { repositories { diff --git a/docs/ApprovalApiKey.md b/docs/ApprovalApiKey.md new file mode 100644 index 00000000..0ec442f6 --- /dev/null +++ b/docs/ApprovalApiKey.md @@ -0,0 +1,19 @@ + + +# ApprovalApiKey + +A registered approval API key for an API user. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**id** | **String** | The unique key ID, used to delete the key. | | +|**name** | **String** | A human-readable label for the key. | | +|**createdAt** | **String** | Creation time as epoch time in seconds. | | +|**lastUsedAt** | **String** | Last time the key was used to sign, as epoch time in seconds (0 if never used). | | +|**approvalApiPublicKey** | [**ApprovalApiPublicKey**](ApprovalApiPublicKey.md) | | | +|**userId** | **String** | The ID of the API user who owns this key. | | + + + diff --git a/docs/ApprovalApiPublicKey.md b/docs/ApprovalApiPublicKey.md new file mode 100644 index 00000000..005a5dbb --- /dev/null +++ b/docs/ApprovalApiPublicKey.md @@ -0,0 +1,26 @@ + + +# ApprovalApiPublicKey + +The public key material and its signing algorithm. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**algorithm** | [**AlgorithmEnum**](#AlgorithmEnum) | The signature algorithm of the public key. | | +|**publicKeyPem** | **String** | The PEM-encoded public key. | | + + + +## Enum: AlgorithmEnum + +| Name | Value | +|---- | -----| +| RSA_PS256 | "RSA_PS256" | +| ECDSA_SECP256_R1 | "ECDSA_SECP256R1" | +| ECDSA_SECP384_R1 | "ECDSA_SECP384R1" | +| EDDSA_ED25519 | "EDDSA_ED25519" | + + + diff --git a/docs/ApprovalsBetaApi.md b/docs/ApprovalsBetaApi.md index bf477412..6eeb0c4b 100644 --- a/docs/ApprovalsBetaApi.md +++ b/docs/ApprovalsBetaApi.md @@ -4,12 +4,257 @@ All URIs are relative to https://developers.fireblocks.com/reference/ | Method | HTTP request | Description | |------------- | ------------- | -------------| +| [**approveApproval**](ApprovalsBetaApi.md#approveApproval) | **POST** /approvals/{requestId}/approve | Approve an approval request | +| [**createApprovalKey**](ApprovalsBetaApi.md#createApprovalKey) | **POST** /management/api_users/{userId}/approval_keys | Register an approval key | +| [**deleteApprovalKey**](ApprovalsBetaApi.md#deleteApprovalKey) | **DELETE** /management/api_users/{userId}/approval_keys/{keyId} | Delete an approval key | | [**getApprovalById**](ApprovalsBetaApi.md#getApprovalById) | **GET** /approvals/{requestId} | Get a single approval request | +| [**getApprovalKeys**](ApprovalsBetaApi.md#getApprovalKeys) | **GET** /management/api_users/{userId}/approval_keys | List approval keys | | [**getApprovals**](ApprovalsBetaApi.md#getApprovals) | **GET** /approvals | List approval requests | | [**rejectApproval**](ApprovalsBetaApi.md#rejectApproval) | **POST** /approvals/{requestId}/reject | Reject an approval request | +## approveApproval + +> CompletableFuture> approveApproval approveApproval(approveApprovalRequest, requestId, idempotencyKey) + +Approve an approval request + +Approve a pending approval request as the authenticated API user. The caller signs the request's signable data with the private key of a registered approval API key and submits the base64url-encoded signature, optionally with the key ID. The server verifies the signature against the registered public key — using the given key ID, or matching against all of the user's registered keys when the key ID is omitted — and advances the approval quorum. Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin. + +### Example + +```java +// Import classes: +import com.fireblocks.sdk.ApiClient; +import com.fireblocks.sdk.ApiException; +import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.BasePath; +import com.fireblocks.sdk.Fireblocks; +import com.fireblocks.sdk.ConfigurationOptions; +import com.fireblocks.sdk.model.*; +import com.fireblocks.sdk.api.ApprovalsBetaApi; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +public class Example { + public static void main(String[] args) { + ConfigurationOptions configurationOptions = new ConfigurationOptions() + .basePath(BasePath.Sandbox) + .apiKey("my-api-key") + .secretKey("my-secret-key"); + Fireblocks fireblocks = new Fireblocks(configurationOptions); + + ApproveApprovalRequest approveApprovalRequest = new ApproveApprovalRequest(); // ApproveApprovalRequest | + String requestId = "18055"; // String | The approval request ID. + String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. + try { + CompletableFuture> response = fireblocks.approvalsBeta().approveApproval(approveApprovalRequest, requestId, idempotencyKey); + System.out.println("Status code: " + response.get().getStatusCode()); + System.out.println("Response headers: " + response.get().getHeaders()); + } catch (InterruptedException | ExecutionException e) { + ApiException apiException = (ApiException)e.getCause(); + System.err.println("Exception when calling ApprovalsBetaApi#approveApproval"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **approveApprovalRequest** | [**ApproveApprovalRequest**](ApproveApprovalRequest.md)| | | +| **requestId** | **String**| The approval request ID. | | +| **idempotencyKey** | **String**| A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. | [optional] | + +### Return type + + +CompletableFuture> + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **204** | The approval request was approved. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + +## createApprovalKey + +> CompletableFuture> createApprovalKey createApprovalKey(registerApprovalApiKeyRequest, userId, idempotencyKey) + +Register an approval key + +Register an approval public key for an API user, used to sign approval requests. Up to 2 active keys are supported per API user. Returns the server-generated key ID used for deletion. The `userId` must be the authenticated API user's own ID. Registering a key for another user is not supported and is rejected. Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin. + +### Example + +```java +// Import classes: +import com.fireblocks.sdk.ApiClient; +import com.fireblocks.sdk.ApiException; +import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.BasePath; +import com.fireblocks.sdk.Fireblocks; +import com.fireblocks.sdk.ConfigurationOptions; +import com.fireblocks.sdk.model.*; +import com.fireblocks.sdk.api.ApprovalsBetaApi; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +public class Example { + public static void main(String[] args) { + ConfigurationOptions configurationOptions = new ConfigurationOptions() + .basePath(BasePath.Sandbox) + .apiKey("my-api-key") + .secretKey("my-secret-key"); + Fireblocks fireblocks = new Fireblocks(configurationOptions); + + RegisterApprovalApiKeyRequest registerApprovalApiKeyRequest = new RegisterApprovalApiKeyRequest(); // RegisterApprovalApiKeyRequest | + String userId = "8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94"; // String | The ID of the API user to register the approval key for. + String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. + try { + CompletableFuture> response = fireblocks.approvalsBeta().createApprovalKey(registerApprovalApiKeyRequest, userId, idempotencyKey); + System.out.println("Status code: " + response.get().getStatusCode()); + System.out.println("Response headers: " + response.get().getHeaders()); + System.out.println("Response body: " + response.get().getData()); + } catch (InterruptedException | ExecutionException e) { + ApiException apiException = (ApiException)e.getCause(); + System.err.println("Exception when calling ApprovalsBetaApi#createApprovalKey"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **registerApprovalApiKeyRequest** | [**RegisterApprovalApiKeyRequest**](RegisterApprovalApiKeyRequest.md)| | | +| **userId** | **String**| The ID of the API user to register the approval key for. | | +| **idempotencyKey** | **String**| A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. | [optional] | + +### Return type + +CompletableFuture> + + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | The approval key was registered. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + +## deleteApprovalKey + +> CompletableFuture> deleteApprovalKey deleteApprovalKey(userId, keyId, idempotencyKey) + +Delete an approval key + +Delete (revoke) an approval public key for the specified API user. Revoking the last key disables the API user's ability to sign approvals. Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin. + +### Example + +```java +// Import classes: +import com.fireblocks.sdk.ApiClient; +import com.fireblocks.sdk.ApiException; +import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.BasePath; +import com.fireblocks.sdk.Fireblocks; +import com.fireblocks.sdk.ConfigurationOptions; +import com.fireblocks.sdk.model.*; +import com.fireblocks.sdk.api.ApprovalsBetaApi; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +public class Example { + public static void main(String[] args) { + ConfigurationOptions configurationOptions = new ConfigurationOptions() + .basePath(BasePath.Sandbox) + .apiKey("my-api-key") + .secretKey("my-secret-key"); + Fireblocks fireblocks = new Fireblocks(configurationOptions); + + String userId = "8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94"; // String | The ID of the API user whose approval key to delete. + String keyId = "fab543c0-d6be-414c-aa05-5c6c84269d7a"; // String | The ID of the approval key to delete. + String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. + try { + CompletableFuture> response = fireblocks.approvalsBeta().deleteApprovalKey(userId, keyId, idempotencyKey); + System.out.println("Status code: " + response.get().getStatusCode()); + System.out.println("Response headers: " + response.get().getHeaders()); + } catch (InterruptedException | ExecutionException e) { + ApiException apiException = (ApiException)e.getCause(); + System.err.println("Exception when calling ApprovalsBetaApi#deleteApprovalKey"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **userId** | **String**| The ID of the API user whose approval key to delete. | | +| **keyId** | **String**| The ID of the approval key to delete. | | +| **idempotencyKey** | **String**| A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. | [optional] | + +### Return type + + +CompletableFuture> + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **204** | The approval key was deleted. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + ## getApprovalById > CompletableFuture> getApprovalById getApprovalById(requestId, userId, quorumStatusMode) @@ -91,6 +336,87 @@ No authorization required | **0** | Error Response | * X-Request-ID -
| +## getApprovalKeys + +> CompletableFuture> getApprovalKeys getApprovalKeys(userId, pageSize, pageCursor) + +List approval keys + +List the approval public keys registered for the specified API user. Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin, Security Auditor. + +### Example + +```java +// Import classes: +import com.fireblocks.sdk.ApiClient; +import com.fireblocks.sdk.ApiException; +import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.BasePath; +import com.fireblocks.sdk.Fireblocks; +import com.fireblocks.sdk.ConfigurationOptions; +import com.fireblocks.sdk.model.*; +import com.fireblocks.sdk.api.ApprovalsBetaApi; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +public class Example { + public static void main(String[] args) { + ConfigurationOptions configurationOptions = new ConfigurationOptions() + .basePath(BasePath.Sandbox) + .apiKey("my-api-key") + .secretKey("my-secret-key"); + Fireblocks fireblocks = new Fireblocks(configurationOptions); + + String userId = "8f3c1a2e-4b7d-4c91-a0e5-2d6f8b1c3a94"; // String | The ID of the API user whose approval keys to list. + Integer pageSize = 10; // Integer | Number of results per page. Maximum 15. Defaults to 10. + String pageCursor = "pageCursor_example"; // String | Cursor returned from the previous response (the `next` field) to fetch the next page. + try { + CompletableFuture> response = fireblocks.approvalsBeta().getApprovalKeys(userId, pageSize, pageCursor); + System.out.println("Status code: " + response.get().getStatusCode()); + System.out.println("Response headers: " + response.get().getHeaders()); + System.out.println("Response body: " + response.get().getData()); + } catch (InterruptedException | ExecutionException e) { + ApiException apiException = (ApiException)e.getCause(); + System.err.println("Exception when calling ApprovalsBetaApi#getApprovalKeys"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **userId** | **String**| The ID of the API user whose approval keys to list. | | +| **pageSize** | **Integer**| Number of results per page. Maximum 15. Defaults to 10. | [optional] [default to 10] | +| **pageCursor** | **String**| Cursor returned from the previous response (the `next` field) to fetch the next page. | [optional] | + +### Return type + +CompletableFuture> + + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | The API user's approval keys. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + ## getApprovals > CompletableFuture> getApprovals getApprovals(includeUserApproved, userId, includeAllUsers, quorumStatusMode, pageSize, pageCursor) diff --git a/docs/ApproveApprovalRequest.md b/docs/ApproveApprovalRequest.md new file mode 100644 index 00000000..3068e53c --- /dev/null +++ b/docs/ApproveApprovalRequest.md @@ -0,0 +1,15 @@ + + +# ApproveApprovalRequest + +The signed approval of a pending request. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**keyId** | **String** | The ID of the approval API key used to sign the request. Optional — if omitted, the signature is verified against all of the user's registered approval API keys. | [optional] | +|**signature** | **String** | Base64url-encoded signature over the request's signable data, produced with the private key of a registered approval API key. If keyId is provided the signature must match that key; otherwise it is matched against all of the user's registered keys. | | + + + diff --git a/docs/AuditEventTypeEnum.md b/docs/AuditEventTypeEnum.md new file mode 100644 index 00000000..b481f5dc --- /dev/null +++ b/docs/AuditEventTypeEnum.md @@ -0,0 +1,21 @@ + + +# AuditEventTypeEnum + +## Enum + + +* `STATUS_TRANSITION` (value: `"STATUS_TRANSITION"`) + +* `STEP_TRIGGER_RULE_EVALUATED` (value: `"STEP_TRIGGER_RULE_EVALUATED"`) + +* `CONNECTOR_CALL` (value: `"CONNECTOR_CALL"`) + +* `STEP_OUTCOME_RULE_EVALUATED` (value: `"STEP_OUTCOME_RULE_EVALUATED"`) + +* `STEP_METADATA_RECORDED` (value: `"STEP_METADATA_RECORDED"`) + +* `WORKFLOW_OUTCOME` (value: `"WORKFLOW_OUTCOME"`) + + + diff --git a/docs/AuditLogEntry.md b/docs/AuditLogEntry.md new file mode 100644 index 00000000..fc21a67e --- /dev/null +++ b/docs/AuditLogEntry.md @@ -0,0 +1,16 @@ + + +# AuditLogEntry + +One entry in a screening's append-only audit trail. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**timestamp** | **String** | Unix timestamp in seconds when the event occurred, encoded as a string. | | +|**eventType** | **AuditEventTypeEnum** | | | +|**data** | **byte[]** | The event payload, JSON serialised and then base64 encoded. Its shape depends on `eventType` — decode it to read the event. | | + + + diff --git a/docs/BypassReasonEnum.md b/docs/BypassReasonEnum.md new file mode 100644 index 00000000..25e9db35 --- /dev/null +++ b/docs/BypassReasonEnum.md @@ -0,0 +1,29 @@ + + +# BypassReasonEnum + +## Enum + + +* `MANUAL` (value: `"MANUAL"`) + +* `UNSUPPORTED_ASSET` (value: `"UNSUPPORTED_ASSET"`) + +* `UNSUPPORTED_ROUTE` (value: `"UNSUPPORTED_ROUTE"`) + +* `PASSED_BY_POLICY` (value: `"PASSED_BY_POLICY"`) + +* `BYPASSED_FAILURE` (value: `"BYPASSED_FAILURE"`) + +* `TIMED_OUT` (value: `"TIMED_OUT"`) + +* `BAD_CREDENTIALS` (value: `"BAD_CREDENTIALS"`) + +* `CONFIGURATION_ERROR` (value: `"CONFIGURATION_ERROR"`) + +* `DROPPED_BY_BLOCKCHAIN` (value: `"DROPPED_BY_BLOCKCHAIN"`) + +* `PROCESS_DISMISSED` (value: `"PROCESS_DISMISSED"`) + + + diff --git a/docs/ComplianceOrchestratorBetaApi.md b/docs/ComplianceOrchestratorBetaApi.md new file mode 100644 index 00000000..988955f2 --- /dev/null +++ b/docs/ComplianceOrchestratorBetaApi.md @@ -0,0 +1,335 @@ +# ComplianceOrchestratorBetaApi + +All URIs are relative to https://developers.fireblocks.com/reference/ + +| Method | HTTP request | Description | +|------------- | ------------- | -------------| +| [**getScreeningResult**](ComplianceOrchestratorBetaApi.md#getScreeningResult) | **GET** /compliance/orchestrator/screenings/{screeningId} | Get a Compliance Orchestrator screening's result | +| [**getWorkflow**](ComplianceOrchestratorBetaApi.md#getWorkflow) | **GET** /compliance/orchestrator/workflows/{workflowId} | Get a Compliance Orchestrator workflow | +| [**triggerScreening**](ComplianceOrchestratorBetaApi.md#triggerScreening) | **POST** /compliance/orchestrator/screenings | Trigger a Compliance Orchestrator screening | +| [**updateWorkflowStatus**](ComplianceOrchestratorBetaApi.md#updateWorkflowStatus) | **PATCH** /compliance/orchestrator/workflows/{workflowId}/status | Update a Compliance Orchestrator workflow's status | + + + +## getScreeningResult + +> CompletableFuture> getScreeningResult getScreeningResult(screeningId) + +Get a Compliance Orchestrator screening's result + +Returns the result of a screening started by `POST /v1/compliance/orchestrator/screenings`, with a result per workflow step and an audit log. Safe to poll: a screening still in flight reports `PENDING` or `RUNNING`. Only screenings owned by the requesting tenant are returned. + +### Example + +```java +// Import classes: +import com.fireblocks.sdk.ApiClient; +import com.fireblocks.sdk.ApiException; +import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.BasePath; +import com.fireblocks.sdk.Fireblocks; +import com.fireblocks.sdk.ConfigurationOptions; +import com.fireblocks.sdk.model.*; +import com.fireblocks.sdk.api.ComplianceOrchestratorBetaApi; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +public class Example { + public static void main(String[] args) { + ConfigurationOptions configurationOptions = new ConfigurationOptions() + .basePath(BasePath.Sandbox) + .apiKey("my-api-key") + .secretKey("my-secret-key"); + Fireblocks fireblocks = new Fireblocks(configurationOptions); + + String screeningId = "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"; // String | The screening's identifier, returned by `POST /v1/compliance/orchestrator/screenings`. + try { + CompletableFuture> response = fireblocks.complianceOrchestratorBeta().getScreeningResult(screeningId); + System.out.println("Status code: " + response.get().getStatusCode()); + System.out.println("Response headers: " + response.get().getHeaders()); + System.out.println("Response body: " + response.get().getData()); + } catch (InterruptedException | ExecutionException e) { + ApiException apiException = (ApiException)e.getCause(); + System.err.println("Exception when calling ComplianceOrchestratorBetaApi#getScreeningResult"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **screeningId** | **String**| The screening's identifier, returned by `POST /v1/compliance/orchestrator/screenings`. | | + +### Return type + +CompletableFuture> + + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Screening result | * X-Request-ID -
| +| **400** | Invalid request arguments. | * X-Request-ID -
| +| **404** | Screening result not found. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + +## getWorkflow + +> CompletableFuture> getWorkflow getWorkflow(workflowId) + +Get a Compliance Orchestrator workflow + +Returns a workflow's status and its steps in execution order. Read it to see what a given `workflowId` will screen, and which fields its rules may reference. + +### Example + +```java +// Import classes: +import com.fireblocks.sdk.ApiClient; +import com.fireblocks.sdk.ApiException; +import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.BasePath; +import com.fireblocks.sdk.Fireblocks; +import com.fireblocks.sdk.ConfigurationOptions; +import com.fireblocks.sdk.model.*; +import com.fireblocks.sdk.api.ComplianceOrchestratorBetaApi; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +public class Example { + public static void main(String[] args) { + ConfigurationOptions configurationOptions = new ConfigurationOptions() + .basePath(BasePath.Sandbox) + .apiKey("my-api-key") + .secretKey("my-secret-key"); + Fireblocks fireblocks = new Fireblocks(configurationOptions); + + String workflowId = "f47ac10b-58cc-4372-a567-0e02b2c3d479"; // String | The workflow's identifier. + try { + CompletableFuture> response = fireblocks.complianceOrchestratorBeta().getWorkflow(workflowId); + System.out.println("Status code: " + response.get().getStatusCode()); + System.out.println("Response headers: " + response.get().getHeaders()); + System.out.println("Response body: " + response.get().getData()); + } catch (InterruptedException | ExecutionException e) { + ApiException apiException = (ApiException)e.getCause(); + System.err.println("Exception when calling ComplianceOrchestratorBetaApi#getWorkflow"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **workflowId** | **String**| The workflow's identifier. | | + +### Return type + +CompletableFuture> + + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Workflow | * X-Request-ID -
| +| **400** | Invalid request arguments. | * X-Request-ID -
| +| **404** | Workflow not found. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + +## triggerScreening + +> CompletableFuture> triggerScreening triggerScreening(triggerScreeningRequest, idempotencyKey) + +Trigger a Compliance Orchestrator screening + +Starts a compliance screening against an active workflow and returns a `screeningId`. The screening runs asynchronously — poll `GET /v1/compliance/orchestrator/screenings/{screeningId}` for the result. Unlike the screening that applies automatically to submitted transactions under `/v1/screening`, this is called on demand, before anything exists on-chain. + +### Example + +```java +// Import classes: +import com.fireblocks.sdk.ApiClient; +import com.fireblocks.sdk.ApiException; +import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.BasePath; +import com.fireblocks.sdk.Fireblocks; +import com.fireblocks.sdk.ConfigurationOptions; +import com.fireblocks.sdk.model.*; +import com.fireblocks.sdk.api.ComplianceOrchestratorBetaApi; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +public class Example { + public static void main(String[] args) { + ConfigurationOptions configurationOptions = new ConfigurationOptions() + .basePath(BasePath.Sandbox) + .apiKey("my-api-key") + .secretKey("my-secret-key"); + Fireblocks fireblocks = new Fireblocks(configurationOptions); + + TriggerScreeningRequest triggerScreeningRequest = new TriggerScreeningRequest(); // TriggerScreeningRequest | + String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. + try { + CompletableFuture> response = fireblocks.complianceOrchestratorBeta().triggerScreening(triggerScreeningRequest, idempotencyKey); + System.out.println("Status code: " + response.get().getStatusCode()); + System.out.println("Response headers: " + response.get().getHeaders()); + System.out.println("Response body: " + response.get().getData()); + } catch (InterruptedException | ExecutionException e) { + ApiException apiException = (ApiException)e.getCause(); + System.err.println("Exception when calling ComplianceOrchestratorBetaApi#triggerScreening"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **triggerScreeningRequest** | [**TriggerScreeningRequest**](TriggerScreeningRequest.md)| | | +| **idempotencyKey** | **String**| A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. | [optional] | + +### Return type + +CompletableFuture> + + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **202** | Screening accepted | * X-Request-ID -
| +| **400** | Invalid or missing required input fields. | * X-Request-ID -
| +| **404** | Workflow not found. | * X-Request-ID -
| +| **409** | Workflow is not active. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + +## updateWorkflowStatus + +> CompletableFuture> updateWorkflowStatus updateWorkflowStatus(updateWorkflowStatusRequest, workflowId, idempotencyKey) + +Update a Compliance Orchestrator workflow's status + +Moves a workflow between `DRAFT` and `ACTIVE`. A workflow must be `ACTIVE` before `POST /v1/compliance/orchestrator/screenings` will accept a screening against it. Returns the workflow's id and new status, not its full configuration. + +### Example + +```java +// Import classes: +import com.fireblocks.sdk.ApiClient; +import com.fireblocks.sdk.ApiException; +import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.BasePath; +import com.fireblocks.sdk.Fireblocks; +import com.fireblocks.sdk.ConfigurationOptions; +import com.fireblocks.sdk.model.*; +import com.fireblocks.sdk.api.ComplianceOrchestratorBetaApi; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +public class Example { + public static void main(String[] args) { + ConfigurationOptions configurationOptions = new ConfigurationOptions() + .basePath(BasePath.Sandbox) + .apiKey("my-api-key") + .secretKey("my-secret-key"); + Fireblocks fireblocks = new Fireblocks(configurationOptions); + + UpdateWorkflowStatusRequest updateWorkflowStatusRequest = new UpdateWorkflowStatusRequest(); // UpdateWorkflowStatusRequest | + String workflowId = "f47ac10b-58cc-4372-a567-0e02b2c3d479"; // String | The workflow's identifier. + String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. + try { + CompletableFuture> response = fireblocks.complianceOrchestratorBeta().updateWorkflowStatus(updateWorkflowStatusRequest, workflowId, idempotencyKey); + System.out.println("Status code: " + response.get().getStatusCode()); + System.out.println("Response headers: " + response.get().getHeaders()); + System.out.println("Response body: " + response.get().getData()); + } catch (InterruptedException | ExecutionException e) { + ApiException apiException = (ApiException)e.getCause(); + System.err.println("Exception when calling ComplianceOrchestratorBetaApi#updateWorkflowStatus"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **updateWorkflowStatusRequest** | [**UpdateWorkflowStatusRequest**](UpdateWorkflowStatusRequest.md)| | | +| **workflowId** | **String**| The workflow's identifier. | | +| **idempotencyKey** | **String**| A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. | [optional] | + +### Return type + +CompletableFuture> + + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Workflow status updated | * X-Request-ID -
| +| **400** | Invalid request arguments. | * X-Request-ID -
| +| **404** | Workflow not found. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + diff --git a/docs/ComplianceScreeningStatusEnum.md b/docs/ComplianceScreeningStatusEnum.md new file mode 100644 index 00000000..23069cd2 --- /dev/null +++ b/docs/ComplianceScreeningStatusEnum.md @@ -0,0 +1,17 @@ + + +# ComplianceScreeningStatusEnum + +## Enum + + +* `PENDING` (value: `"PENDING"`) + +* `RUNNING` (value: `"RUNNING"`) + +* `COMPLETED` (value: `"COMPLETED"`) + +* `FAILED` (value: `"FAILED"`) + + + diff --git a/docs/ConnectorStatusEnum.md b/docs/ConnectorStatusEnum.md new file mode 100644 index 00000000..375a7530 --- /dev/null +++ b/docs/ConnectorStatusEnum.md @@ -0,0 +1,17 @@ + + +# ConnectorStatusEnum + +## Enum + + +* `COMPLETED` (value: `"COMPLETED"`) + +* `BYPASSED` (value: `"BYPASSED"`) + +* `FAILED` (value: `"FAILED"`) + +* `FROZEN` (value: `"FROZEN"`) + + + diff --git a/docs/ConnectorVerdictEnum.md b/docs/ConnectorVerdictEnum.md new file mode 100644 index 00000000..bbfd9948 --- /dev/null +++ b/docs/ConnectorVerdictEnum.md @@ -0,0 +1,15 @@ + + +# ConnectorVerdictEnum + +## Enum + + +* `ACCEPT` (value: `"ACCEPT"`) + +* `REJECT` (value: `"REJECT"`) + +* `ALERT` (value: `"ALERT"`) + + + diff --git a/docs/CreateWebhookOauthRequest.md b/docs/CreateWebhookOauthRequest.md index 5495d5d5..2378e7e0 100644 --- a/docs/CreateWebhookOauthRequest.md +++ b/docs/CreateWebhookOauthRequest.md @@ -15,7 +15,7 @@ A new reusable OAuth 2.0 client credential set. Attach it to a webhook by passin |**authMethod** | **String** | How the client credentials reach the token endpoint. `client_secret_basic` uses an HTTP Basic header, `client_secret_post` uses form fields in the body, and `client_secret_jwt` sends a JWT assertion signed with the secret, so the secret itself is never transmitted. Defaults to `client_secret_basic`. | [optional] | |**customJwtClaims** | **Map<String, Object>** | Extra claims for the JWT assertion. Used only when `authMethod` is `client_secret_jwt`. The usual one to set is `aud`, which defaults to the token endpoint URL; some authorization servers expect their own identifier instead. A value may be any JSON type except `null` — `null` is reserved for deleting a claim on update. `iss`, `sub`, `jti`, `iat` and `exp` are set by Fireblocks and cannot be overridden. Names are case-sensitive. The whole object must be under 16 KB. Values are write-only; responses return only the claim names. On update this merges claim by claim rather than replacing — see `WebhookOauthCustomJwtClaimsUpdate`. | [optional] | |**customBodyParams** | **Map<String, String>** | Extra parameters for the token request body — `scope` most commonly, sometimes `audience` or `resource`. Applies to every authentication method. Values must be strings, because the token request body is form-encoded rather than JSON. An empty string is allowed. `grant_type`, `client_id`, `client_secret`, `client_assertion` and `client_assertion_type` are set by Fireblocks and cannot be overridden. Names are case-sensitive. The whole object must be under 16 KB. Values are write-only; responses return only the parameter names. On update this merges key by key rather than replacing — see `WebhookOauthCustomBodyParamsUpdate`. | [optional] | -|**customHeaders** | **Map<String, String>** | Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. Applies to every authentication method. Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` is not sent when `authMethod` is `client_secret_basic`. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. Values are write-only; responses return only the header names. On update this merges name by name rather than replacing — see `WebhookOauthCustomHeadersUpdate`. | [optional] | +|**customHeaders** | **Map<String, String>** | Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` can be set with `client_secret_post` or `client_secret_jwt`, which send the credentials in the body — useful when your token endpoint sits behind a gateway. It is rejected with `client_secret_basic`, which sends the credentials in that header. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. Values are write-only; responses return only the header names. On update this merges name by name rather than replacing — see `WebhookOauthCustomHeadersUpdate`. | [optional] | |**mtlsClientSignedCert** | **String** | PEM-encoded client certificate for mTLS when fetching tokens. Must be a valid X.509 certificate inside its validity window. | [optional] | diff --git a/docs/CreateWebhookRequest.md b/docs/CreateWebhookRequest.md index 964944ea..259b13f8 100644 --- a/docs/CreateWebhookRequest.md +++ b/docs/CreateWebhookRequest.md @@ -12,8 +12,8 @@ |**events** | **List<WebhookEvent>** | event types the webhook will subscribe to | | |**enabled** | **Boolean** | The status of the webhook. If false, the webhook will not receive notifications. | [optional] | |**mtls** | [**WebhookMtls**](WebhookMtls.md) | | [optional] | -|**webhookOauthId** | **UUID** | The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. | [optional] | -|**customHeaders** | **Map<String, Object>** | Custom HTTP headers attached to every notification delivered by this webhook. A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` accepts only a string. An empty array is rejected — leave the name out instead. At most 10 header lines in total, counted per array element rather than per name. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. When this webhook has OAuth credentials attached, an `Authorization` value you set and the bearer token are both sent as separate header lines. Values are write-only; responses return only the header names. | [optional] | +|**webhookOauthId** | **UUID** | The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. Cannot be combined with an `authorization` custom header on the same webhook; a request that would leave both set is rejected. | [optional] | +|**customHeaders** | **Map<String, Object>** | Custom HTTP headers attached to every notification delivered by this webhook. A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` and `Authorization` accept only a string. An empty array is rejected — leave the name out instead. At most 10 headers, counted by name — an array value counts once, however many lines it sends. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. `Authorization` may be set, but not together with `webhookOauthId`; a request that would leave both set is rejected. Values are write-only; responses return only the header names. | [optional] | diff --git a/docs/GetScreeningResultResponse.md b/docs/GetScreeningResultResponse.md new file mode 100644 index 00000000..fdf2ebbd --- /dev/null +++ b/docs/GetScreeningResultResponse.md @@ -0,0 +1,19 @@ + + +# GetScreeningResultResponse + +The current status, outcome, per-step results, and audit log for a screening. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**screeningId** | **String** | Identifier of the screening being queried. | | +|**workflowId** | **String** | Identifier of the workflow that produced this screening. | | +|**screeningStatus** | **ComplianceScreeningStatusEnum** | | | +|**outcome** | **ScreeningOutcomeEnum** | | [optional] | +|**steps** | [**List<StepResult>**](StepResult.md) | Flat step list. | | +|**auditLog** | [**List<AuditLogEntry>**](AuditLogEntry.md) | Append-only audit trail for this screening. | | + + + diff --git a/docs/GetWorkflowResponse.md b/docs/GetWorkflowResponse.md new file mode 100644 index 00000000..5a75f71a --- /dev/null +++ b/docs/GetWorkflowResponse.md @@ -0,0 +1,20 @@ + + +# GetWorkflowResponse + +A workflow's current definition, including its steps and each step's rule sets. A workflow is the configuration a screening runs against: an ordered list of steps, each backed by one connector. It must be `ACTIVE` before a screening will accept it — `DRAFT` is the editing state, so a screening never runs against a half-finished configuration. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**workflowId** | **String** | Unique identifier of the workflow. | | +|**templateId** | **String** | The template this workflow was provisioned from, if any. | [optional] | +|**status** | **WorkflowStatusEnum** | | | +|**title** | **String** | User-facing display name for the workflow. | | +|**description** | **String** | User-facing free-text description of the workflow's purpose. | [optional] | +|**createdAt** | **String** | Unix timestamp in seconds when the workflow was provisioned, encoded as a string. | | +|**steps** | [**List<StepConfig>**](StepConfig.md) | Flat list — one step per connector. | | + + + diff --git a/docs/InternalTransferResponse.md b/docs/InternalTransferResponse.md index 40d0fec2..8a963563 100644 --- a/docs/InternalTransferResponse.md +++ b/docs/InternalTransferResponse.md @@ -9,6 +9,8 @@ |------------ | ------------- | ------------- | -------------| |**success** | **Boolean** | Indicates whether the transfer was successful | | |**id** | **String** | The transaction ID of the internal transfer | [optional] | +|**status** | **String** | The transfer status returned by the transaction manager. Only present when the transfer was processed via the transaction manager flow. | [optional] | +|**systemMessages** | [**List<SystemMessageInfo>**](SystemMessageInfo.md) | System messages returned by the transaction manager about the health of the transfer being performed. Only present when the transfer was processed via the transaction manager flow. | [optional] | diff --git a/docs/ListApprovalApiKeysResponse.md b/docs/ListApprovalApiKeysResponse.md new file mode 100644 index 00000000..72783b65 --- /dev/null +++ b/docs/ListApprovalApiKeysResponse.md @@ -0,0 +1,15 @@ + + +# ListApprovalApiKeysResponse + +The approval API keys registered for the API user. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**List<ApprovalApiKey>**](ApprovalApiKey.md) | The registered approval API keys. | | +|**next** | **String** | Cursor for the next page of results. Pass it back as the `pageCursor` query param to fetch the next page. Empty or absent when this is the last page. | [optional] | + + + diff --git a/docs/ParameterWithValue.md b/docs/ParameterWithValue.md index 272888bc..1cd989dd 100644 --- a/docs/ParameterWithValue.md +++ b/docs/ParameterWithValue.md @@ -12,7 +12,7 @@ |**internalType** | **String** | The internal type of the parameter as it appears in the ABI | [optional] | |**type** | **String** | The type of the parameter as it appears in the ABI | | |**components** | [**List<Parameter>**](Parameter.md) | | [optional] | -|**value** | **String** | The value of the parameter. can also be ParameterWithValue | [optional] | +|**value** | **Object** | The value of the parameter. The shape follows the ABI `type`: a string for `string`/`address`/`bytes*`, a number for `uint*`/`int*`, a boolean for `bool`, an array for `T[]`, and for `tuple` an array of nested ParameterWithValue objects (one per entry in `components`, in ABI order). | [optional] | |**functionValue** | [**LeanAbiFunction**](LeanAbiFunction.md) | The function value of this param (if has one). If this is set, the `value` shouldn`t be. Used for proxies | [optional] | diff --git a/docs/RegisterApprovalApiKeyRequest.md b/docs/RegisterApprovalApiKeyRequest.md new file mode 100644 index 00000000..3fa5e6ef --- /dev/null +++ b/docs/RegisterApprovalApiKeyRequest.md @@ -0,0 +1,15 @@ + + +# RegisterApprovalApiKeyRequest + +The approval API key to register. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**name** | **String** | A human-readable label for the key. | | +|**approvalApiPublicKey** | [**ApprovalApiPublicKey**](ApprovalApiPublicKey.md) | | | + + + diff --git a/docs/RegisterApprovalApiKeyResponse.md b/docs/RegisterApprovalApiKeyResponse.md new file mode 100644 index 00000000..bf2c8d61 --- /dev/null +++ b/docs/RegisterApprovalApiKeyResponse.md @@ -0,0 +1,14 @@ + + +# RegisterApprovalApiKeyResponse + +The result of registering an approval API key. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**keyId** | **String** | The server-generated ID of the registered key, used for deletion. | | + + + diff --git a/docs/RiskLevelEnum.md b/docs/RiskLevelEnum.md new file mode 100644 index 00000000..db07d31a --- /dev/null +++ b/docs/RiskLevelEnum.md @@ -0,0 +1,19 @@ + + +# RiskLevelEnum + +## Enum + + +* `SEVERE` (value: `"SEVERE"`) + +* `HIGH` (value: `"HIGH"`) + +* `MEDIUM` (value: `"MEDIUM"`) + +* `LOW` (value: `"LOW"`) + +* `UNKNOWN` (value: `"UNKNOWN"`) + + + diff --git a/docs/Rule.md b/docs/Rule.md new file mode 100644 index 00000000..b987250f --- /dev/null +++ b/docs/Rule.md @@ -0,0 +1,18 @@ + + +# Rule + +A single rule within a rule set. The first rule whose conditions match wins, and its `ruleAction` is applied. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**ruleId** | **String** | UUID, unique within the rule set. | [optional] | +|**conditions** | [**List<RuleCondition>**](RuleCondition.md) | Conditions AND-ed together within this rule. | [optional] | +|**ruleAction** | **RuleActionEnum** | | [optional] | +|**order** | **Integer** | Zero-based evaluation order among the rule set's rules, lowest first. | [optional] | +|**title** | **String** | User-facing label for the rule. Cosmetic only — not read by rule evaluation. | [optional] | + + + diff --git a/docs/RuleActionEnum.md b/docs/RuleActionEnum.md new file mode 100644 index 00000000..24ac1a79 --- /dev/null +++ b/docs/RuleActionEnum.md @@ -0,0 +1,23 @@ + + +# RuleActionEnum + +## Enum + + +* `SCREEN` (value: `"SCREEN"`) + +* `PASS` (value: `"PASS"`) + +* `FREEZE` (value: `"FREEZE"`) + +* `ACCEPT` (value: `"ACCEPT"`) + +* `REJECT` (value: `"REJECT"`) + +* `ALERT` (value: `"ALERT"`) + +* `WAIT` (value: `"WAIT"`) + + + diff --git a/docs/RuleCondition.md b/docs/RuleCondition.md new file mode 100644 index 00000000..59ac0aad --- /dev/null +++ b/docs/RuleCondition.md @@ -0,0 +1,16 @@ + + +# RuleCondition + +A single condition within a rule. Conditions within a rule are AND-ed together. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**field** | **String** | The input context field this condition tests. Allowed values depend on the rule set type (trigger vs. outcome) and the step's connector/operation. | | +|**operator** | **RuleConditionOperatorEnum** | | | +|**value** | **String** | The value `field` is compared against, using `operator`. | | + + + diff --git a/docs/RuleConditionOperatorEnum.md b/docs/RuleConditionOperatorEnum.md new file mode 100644 index 00000000..858a69ab --- /dev/null +++ b/docs/RuleConditionOperatorEnum.md @@ -0,0 +1,21 @@ + + +# RuleConditionOperatorEnum + +## Enum + + +* `EQUALS` (value: `"EQUALS"`) + +* `NOT_EQUALS` (value: `"NOT_EQUALS"`) + +* `GT` (value: `"GT"`) + +* `GTE` (value: `"GTE"`) + +* `LT` (value: `"LT"`) + +* `LTE` (value: `"LTE"`) + + + diff --git a/docs/RuleSet.md b/docs/RuleSet.md new file mode 100644 index 00000000..57fcce2d --- /dev/null +++ b/docs/RuleSet.md @@ -0,0 +1,14 @@ + + +# RuleSet + +An ordered set of rules. Rules are evaluated top to bottom, and the first one that matches wins. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**rules** | [**List<Rule>**](Rule.md) | Ordered rule list, evaluated top to bottom; the first match wins. | [optional] | + + + diff --git a/docs/ScreeningInput.md b/docs/ScreeningInput.md new file mode 100644 index 00000000..31397e68 --- /dev/null +++ b/docs/ScreeningInput.md @@ -0,0 +1,15 @@ + + +# ScreeningInput + +What the caller wants screened, and how. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**operation** | **ScreeningOperationEnum** | | | +|**payload** | [**List<ScreeningPayload>**](ScreeningPayload.md) | The screening subjects. Up to 100 per request — the provider's own batch limit for address screening — so a bulk check does not need one call per address. | | + + + diff --git a/docs/ScreeningOperationEnum.md b/docs/ScreeningOperationEnum.md new file mode 100644 index 00000000..d0e822da --- /dev/null +++ b/docs/ScreeningOperationEnum.md @@ -0,0 +1,15 @@ + + +# ScreeningOperationEnum + +## Enum + + +* `ADDRESS_SCREENING` (value: `"ADDRESS_SCREENING"`) + +* `TRANSACTION_SCREENING` (value: `"TRANSACTION_SCREENING"`) + +* `REGISTER_TRANSACTION` (value: `"REGISTER_TRANSACTION"`) + + + diff --git a/docs/ScreeningOutcomeEnum.md b/docs/ScreeningOutcomeEnum.md new file mode 100644 index 00000000..fa38327b --- /dev/null +++ b/docs/ScreeningOutcomeEnum.md @@ -0,0 +1,13 @@ + + +# ScreeningOutcomeEnum + +## Enum + + +* `ACCEPT` (value: `"ACCEPT"`) + +* `REJECT` (value: `"REJECT"`) + + + diff --git a/docs/ScreeningPayload.md b/docs/ScreeningPayload.md new file mode 100644 index 00000000..ec51e118 --- /dev/null +++ b/docs/ScreeningPayload.md @@ -0,0 +1,24 @@ + + +# ScreeningPayload + +The subject of the screening. Which fields are required depends on the operation and on the connectors configured on the workflow's step. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**blockchain** | **String** | The blockchain network of the asset being screened. | [optional] | +|**asset** | **String** | The asset identifier being screened. | [optional] | +|**assetAmount** | **String** | The amount of the asset involved in the transaction, as a string. | [optional] | +|**usdValue** | **String** | The USD value of the transaction amount, as a string. | [optional] | +|**customerRefId** | **String** | Customer-provided reference identifier for tracking. | [optional] | +|**externalId** | **String** | External identifier for the screening (provider-specific). | [optional] | +|**address** | **String** | The blockchain address to screen. Used for the `ADDRESS_SCREENING` operation. | [optional] | +|**direction** | **TransferDirectionEnum** | | [optional] | +|**sourceAddress** | **List<String>** | The source blockchain address(es) of the transaction. | [optional] | +|**destinationAddress** | **List<String>** | The destination blockchain address(es) of the transaction. | [optional] | +|**txHash** | **String** | The transaction hash on the blockchain. | [optional] | + + + diff --git a/docs/StepConfig.md b/docs/StepConfig.md new file mode 100644 index 00000000..079bab83 --- /dev/null +++ b/docs/StepConfig.md @@ -0,0 +1,17 @@ + + +# StepConfig + +One step in a workflow, backed by a single connector. A connector is the compliance provider integration that does the work — `kyt_trmlabs` is TRM Labs. The step declares which operations that connector handles; a screening naming an operation no step is configured for is refused, and the error reports the supported set. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**stepId** | **String** | Unique within the workflow. | | +|**connectorId** | **String** | Identifies which connector this step invokes. | | +|**operations** | [**List<StepOperationConfig>**](StepOperationConfig.md) | One entry per operation the step's connector handles. | | +|**order** | **Integer** | Execution order among the workflow's steps, lowest first. | | + + + diff --git a/docs/StepOperationConfig.md b/docs/StepOperationConfig.md new file mode 100644 index 00000000..8d4d7522 --- /dev/null +++ b/docs/StepOperationConfig.md @@ -0,0 +1,23 @@ + + +# StepOperationConfig + +Configuration for one operation the step's connector handles. The operation arrives on the screening request; the connector decides how to handle it. Two rule sets govern the step, and both are configured here rather than sent per request, so the same call behaves differently across workflows. Trigger rules decide whether the connector runs at all; outcome rules turn the provider's response into the step's verdict. With neither configured the step runs under the connector's own defaults, which for `kyt_trmlabs` are permissive: the screening completes without consulting the provider. The four parameter lists are the contract for writing those rules: a rule naming a field outside `triggerRuleParameters` or `outcomeEvaluationParameters` is rejected. They are derived from the connector registry rather than stored, so a connector gaining a field is reflected here without a migration. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**operation** | **ScreeningOperationEnum** | | [optional] | +|**requiredParameters** | **List<String>** | Resolved server-side on every `GetWorkflow` call from the step's connector definition for this operation. Read-only: ignored on write. | [optional] | +|**optionalParameters** | **List<String>** | Like `requiredParameters`, but optional inputs to the operation. | [optional] | +|**triggerRuleParameters** | **List<String>** | Fields a condition in `triggerRuleSetStruct` may reference. | [optional] | +|**outcomeEvaluationParameters** | **List<String>** | Provider response fields a condition in `outcomeRuleSetStruct` may reference. | [optional] | +|**outcomeMetaParameters** | **List<String>** | Additional provider response fields returned with the result; not usable in `outcomeRuleSetStruct` conditions. | [optional] | +|**triggerRuleSetStruct** | [**RuleSet**](RuleSet.md) | | [optional] | +|**triggerRuleSetJson** | **String** | The tenant's trigger rules, as a JSON-encoded string. Set for steps whose rules are still defined as a legacy screening policy rather than natively in Compliance Orchestrator, and refreshed on every read. Mutually exclusive with `triggerRuleSetStruct`. | [optional] | +|**outcomeRuleSetStruct** | [**RuleSet**](RuleSet.md) | | [optional] | +|**outcomeRuleSetJson** | **String** | The tenant's outcome rules, as a JSON-encoded string. Set for steps whose rules are still defined as a legacy screening policy rather than natively in Compliance Orchestrator, and refreshed on every read. Mutually exclusive with `outcomeRuleSetStruct`. | [optional] | + + + diff --git a/docs/StepResult.md b/docs/StepResult.md new file mode 100644 index 00000000..e62b23aa --- /dev/null +++ b/docs/StepResult.md @@ -0,0 +1,27 @@ + + +# StepResult + +The result of one workflow step's execution during a screening. Carries the step's outcome next to the two rule evaluations that produced it — which trigger rule decided the connector should run, and which outcome rule read the response — plus the provider's own verdict and risk level. A step that did not screen carries a `bypassReason` instead of a risk level. Only `PASSED_BY_POLICY` means the policy deliberately let it through; every other reason means the check could not be performed, and the step is rejected rather than passed. A bypass is not an approval. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**stepId** | **String** | Identifier of this step within the workflow. | | +|**connectorId** | **String** | Identifier of the connector that executed this step. | | +|**operation** | **ScreeningOperationEnum** | | | +|**triggerRuleOutcome** | **TriggerRuleOutcomeEnum** | | | +|**matchedTriggerRule** | [**Rule**](Rule.md) | | [optional] | +|**outcomeRuleOutcome** | **ScreeningOutcomeEnum** | | | +|**matchedOutcomeRule** | [**Rule**](Rule.md) | | [optional] | +|**outcome** | **ScreeningOutcomeEnum** | | | +|**metadata** | **Map<String, Object>** | Connector-specific data, keyed by the connector's configured outcomeMetaParameters for this operation. | [optional] | +|**ticketId** | **String** | The connector-side screening ticket identifier. | [optional] | +|**verdict** | **ConnectorVerdictEnum** | | [optional] | +|**connectorStatus** | **ConnectorStatusEnum** | | [optional] | +|**bypassReason** | **BypassReasonEnum** | | [optional] | +|**risk** | **RiskLevelEnum** | | [optional] | + + + diff --git a/docs/TransactionReceiptResponse.md b/docs/TransactionReceiptResponse.md index 2938ed66..c5baf04f 100644 --- a/docs/TransactionReceiptResponse.md +++ b/docs/TransactionReceiptResponse.md @@ -10,10 +10,10 @@ |**blockHash** | **String** | The block hash | | |**blockNumber** | **Integer** | The block number | | |**contractAddress** | **String** | The address of deployed contract | [optional] | -|**cumulativeGasUsed** | **Integer** | The cumulative gas used in the transaction | | -|**effectiveGasPrice** | **Integer** | The effective gas price | | +|**cumulativeGasUsed** | **Long** | The cumulative gas used in the transaction | | +|**effectiveGasPrice** | **Long** | The effective gas price | | |**from** | **String** | Sender address | | -|**gasUsed** | **Integer** | Gas used by the transaction | | +|**gasUsed** | **Long** | Gas used by the transaction | | |**logs** | [**List<TxLog>**](TxLog.md) | Array of transaction logs | | |**logsBloom** | **String** | Logs bloom filter | | |**status** | **Integer** | Transaction status (1 for success, 0 for failure) | | diff --git a/docs/TransferDirectionEnum.md b/docs/TransferDirectionEnum.md new file mode 100644 index 00000000..9bdf0088 --- /dev/null +++ b/docs/TransferDirectionEnum.md @@ -0,0 +1,13 @@ + + +# TransferDirectionEnum + +## Enum + + +* `INBOUND` (value: `"INBOUND"`) + +* `OUTBOUND` (value: `"OUTBOUND"`) + + + diff --git a/docs/TriggerRuleOutcomeEnum.md b/docs/TriggerRuleOutcomeEnum.md new file mode 100644 index 00000000..9be3853c --- /dev/null +++ b/docs/TriggerRuleOutcomeEnum.md @@ -0,0 +1,15 @@ + + +# TriggerRuleOutcomeEnum + +## Enum + + +* `EXECUTE` (value: `"EXECUTE"`) + +* `PASS` (value: `"PASS"`) + +* `FAIL` (value: `"FAIL"`) + + + diff --git a/docs/TriggerScreeningRequest.md b/docs/TriggerScreeningRequest.md new file mode 100644 index 00000000..95e71555 --- /dev/null +++ b/docs/TriggerScreeningRequest.md @@ -0,0 +1,15 @@ + + +# TriggerScreeningRequest + +Request to trigger a screening against an active workflow. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**workflowId** | **String** | The workflow to screen against. Must be in `ACTIVE` status. | | +|**input** | [**ScreeningInput**](ScreeningInput.md) | | | + + + diff --git a/docs/TriggerScreeningResponse.md b/docs/TriggerScreeningResponse.md new file mode 100644 index 00000000..1b2688ff --- /dev/null +++ b/docs/TriggerScreeningResponse.md @@ -0,0 +1,15 @@ + + +# TriggerScreeningResponse + +Acknowledgement that a screening was accepted and is now running. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**screeningId** | **String** | Identifier of the screening that was created. Poll `GET /v1/compliance/orchestrator/screenings/{screeningId}` with it for the verdict. | | +|**screeningStatus** | **ComplianceScreeningStatusEnum** | | | + + + diff --git a/docs/UpdateWebhookOauthRequest.md b/docs/UpdateWebhookOauthRequest.md index 46eb8f8f..ebb4858b 100644 --- a/docs/UpdateWebhookOauthRequest.md +++ b/docs/UpdateWebhookOauthRequest.md @@ -2,7 +2,7 @@ # UpdateWebhookOauthRequest -A partial update. Every field is optional and an omitted field is left as it is, so `{ \"clientSecret\": \"new-secret\" }` rotates the secret and changes nothing else. A rotation applies to every webhook referencing these credentials. The three custom maps merge: a key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched. Because `null` inside a map means delete, none of the three is nullable as a whole — `customJwtClaims: null` and friends are rejected with a `400`. Clear a map by naming each key with a `null` value. `mtlsClientSignedCert` is a scalar, so `null` there does remove it. +A partial update. Every field is optional and an omitted field is left as it is, so `{ \"clientSecret\": \"new-secret\" }` rotates the secret and changes nothing else. A rotation applies to every webhook referencing these credentials. The three custom maps merge. A key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched, and the whole field set to `null` clears the map. There is no ambiguity between the two uses of `null` — one names an entry, the other names the field. `mtlsClientSignedCert` is a scalar, so `null` there removes it. ## Properties @@ -15,7 +15,7 @@ A partial update. Every field is optional and an omitted field is left as it is, |**authMethod** | **String** | `client_secret_basic`, `client_secret_post` or `client_secret_jwt`. Omit to leave it unchanged — it does not revert to the default. | [optional] | |**customJwtClaims** | **Map<String, Object>** | A delta applied to the JWT assertion claims. A claim with a value is added or replaced, a claim with `null` is deleted, and a claim you leave out is untouched. So `{ \"aud\": \"https://auth.example.com\", \"resource\": null }` sets `aud`, drops `resource`, and changes nothing else. Send `customJwtClaims: null` to clear every claim in one call. That does not collide with a `null` value on a name: one names the claim to delete, the other names the whole field. Same rules as on create: any JSON type except `null`, `iss`/`sub`/`jti`/`iat`/`exp` reserved, names case-sensitive, resulting set under 16 KB, values write-only. | [optional] | |**customBodyParams** | **Map<String, String>** | A delta applied to the token request body parameters. A parameter with a value is added or replaced, a parameter with `null` is deleted, and one you leave out is untouched. So `{ \"scope\": \"payments.read\", \"audience\": null }` sets `scope`, drops `audience`, and changes nothing else. Send `customBodyParams: null` to clear every parameter in one call. That does not collide with a `null` value on a name: one names the parameter to delete, the other names the whole field. Same rules as on create: string values only, `grant_type`/`client_id`/`client_secret`/ `client_assertion`/`client_assertion_type` reserved, names case-sensitive, resulting set under 16 KB, values write-only. | [optional] | -|**customHeaders** | **Map<String, String>** | A delta applied to the token request headers — not the webhook delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. So `{ \"X-Api-Key\": \"new-key\", \"X-Tenant\": null }` rotates `X-Api-Key`, drops `X-Tenant`, and changes nothing else. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another, and names are stored and returned lowercased. Same rules as on create: string values only, `Content-Type`/`Content-Length`/`Host` reserved, resulting set under 16 KB, values write-only. | [optional] | +|**customHeaders** | **Map<String, String>** | A delta applied to the token request headers — not the webhook delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. So `{ \"X-Api-Key\": \"new-key\", \"X-Tenant\": null }` rotates `X-Api-Key`, drops `X-Tenant`, and changes nothing else. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another, and names are stored and returned lowercased. Same rules as on create: string values only, `Content-Type`, `Content-Length` and `Host` reserved, `Authorization` only with `client_secret_post` or `client_secret_jwt`, resulting set under 16 KB, values write-only. | [optional] | |**mtlsClientSignedCert** | **String** | PEM-encoded client certificate for mTLS. Must be a valid X.509 certificate inside its validity window. Omit to leave it unchanged, or send `null` to remove it. | [optional] | diff --git a/docs/UpdateWebhookRequest.md b/docs/UpdateWebhookRequest.md index 6b5346b9..9aef5482 100644 --- a/docs/UpdateWebhookRequest.md +++ b/docs/UpdateWebhookRequest.md @@ -12,8 +12,8 @@ |**events** | **List<WebhookEvent>** | The events that the webhook will be subscribed to | [optional] | |**enabled** | **Boolean** | The status of the webhook | [optional] | |**mtls** | [**WebhookMtls**](WebhookMtls.md) | | [optional] | -|**webhookOauthId** | **UUID** | The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. | [optional] | -|**customHeaders** | **Map<String, Object>** | A delta applied to the delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. A value replaces what is stored under that name rather than adding to it, so an array is the complete new set of lines for that header. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another. Same rules as on create: string or non-empty array, `Cookie` string-only, 10 lines total and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit. | [optional] | +|**webhookOauthId** | **UUID** | The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. Cannot be combined with an `authorization` custom header on the same webhook; a request that would leave both set is rejected. | [optional] | +|**customHeaders** | **Map<String, Object>** | A delta applied to the delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. A value replaces what is stored under that name rather than adding to it, so an array is the complete new set of lines for that header. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another. Same rules as on create: string or non-empty array, `Cookie` and `Authorization` string-only, 10 headers and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit. `Authorization` cannot be combined with `webhookOauthId`, though one request may add it and detach the credentials together. | [optional] | diff --git a/docs/UpdateWorkflowStatusRequest.md b/docs/UpdateWorkflowStatusRequest.md new file mode 100644 index 00000000..8a7ad93f --- /dev/null +++ b/docs/UpdateWorkflowStatusRequest.md @@ -0,0 +1,14 @@ + + +# UpdateWorkflowStatusRequest + +Request to change a workflow's status. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**status** | **WorkflowStatusEnum** | | | + + + diff --git a/docs/UpdateWorkflowStatusResponse.md b/docs/UpdateWorkflowStatusResponse.md new file mode 100644 index 00000000..d9de0b1b --- /dev/null +++ b/docs/UpdateWorkflowStatusResponse.md @@ -0,0 +1,15 @@ + + +# UpdateWorkflowStatusResponse + +The workflow's status after the update. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**workflowId** | **String** | Unique identifier of the workflow. | | +|**status** | **WorkflowStatusEnum** | | | + + + diff --git a/docs/WebhookMtlsCsrResponse.md b/docs/WebhookMtlsCsrResponse.md index 473140b7..b9513835 100644 --- a/docs/WebhookMtlsCsrResponse.md +++ b/docs/WebhookMtlsCsrResponse.md @@ -9,6 +9,7 @@ mTLS Certificate Signing Request response | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| |**csr** | **String** | The Fireblocks PEM-encoded Certificate Signing Request (CSR). | | +|**keyAlgorithm** | **WebhookMtlsKeyAlgorithm** | | | diff --git a/docs/WebhookMtlsKeyAlgorithm.md b/docs/WebhookMtlsKeyAlgorithm.md new file mode 100644 index 00000000..f51280af --- /dev/null +++ b/docs/WebhookMtlsKeyAlgorithm.md @@ -0,0 +1,13 @@ + + +# WebhookMtlsKeyAlgorithm + +## Enum + + +* `RSA` (value: `"RSA"`) + +* `ECDSA` (value: `"ECDSA"`) + + + diff --git a/docs/WebhookOauthCredentials.md b/docs/WebhookOauthCredentials.md index 7fc4a206..84cadb35 100644 --- a/docs/WebhookOauthCredentials.md +++ b/docs/WebhookOauthCredentials.md @@ -2,7 +2,7 @@ # WebhookOauthCredentials -A stored OAuth 2.0 client credential set, referenced by webhooks through their `webhookOauthId`. When a webhook references one, the dispatcher fetches a bearer token from `url` before each delivery and attaches it as `Authorization: Bearer {token}`. Secret material is never returned: `clientSecret` is absent from this schema entirely, and the `customJwtClaims`, `customBodyParams` and `customHeaders` fields are reduced to their names, without the configured values. +A stored OAuth 2.0 client credential set, referenced by webhooks through their `webhookOauthId`. Deliveries for a webhook that references one carry `Authorization: Bearer {token}`, using a token fetched from `url` and cached until it expires, so your authorization server sees far fewer token requests than deliveries. Secret material is never returned: `clientSecret` is absent from this schema entirely, and the `customJwtClaims`, `customBodyParams` and `customHeaders` fields are reduced to their names, without the configured values. ## Properties diff --git a/docs/WebhooksV2Api.md b/docs/WebhooksV2Api.md index e91bc9c6..70f74c67 100644 --- a/docs/WebhooksV2Api.md +++ b/docs/WebhooksV2Api.md @@ -9,7 +9,7 @@ All URIs are relative to https://developers.fireblocks.com/reference/ | [**deleteWebhook**](WebhooksV2Api.md#deleteWebhook) | **DELETE** /webhooks/{webhookId} | Delete webhook | | [**deleteWebhookOauth**](WebhooksV2Api.md#deleteWebhookOauth) | **DELETE** /webhooks_settings/oauth/{webhookOauthId} | Delete OAuth credentials | | [**getMetrics**](WebhooksV2Api.md#getMetrics) | **GET** /webhooks/{webhookId}/metrics/{metricName} | Get webhook metrics | -| [**getMtlsCsr**](WebhooksV2Api.md#getMtlsCsr) | **GET** /webhooks/mtls/csr | Get mTLS CSR | +| [**getMtlsCsr**](WebhooksV2Api.md#getMtlsCsr) | **GET** /webhooks_settings/mtls_csr | Get mTLS CSR | | [**getNotification**](WebhooksV2Api.md#getNotification) | **GET** /webhooks/{webhookId}/notifications/{notificationId} | Get notification by id | | [**getNotificationAttempts**](WebhooksV2Api.md#getNotificationAttempts) | **GET** /webhooks/{webhookId}/notifications/{notificationId}/attempts | Get notification attempts | | [**getNotifications**](WebhooksV2Api.md#getNotifications) | **GET** /webhooks/{webhookId}/notifications | Get all notifications by webhook id | @@ -424,11 +424,11 @@ No authorization required ## getMtlsCsr -> CompletableFuture> getMtlsCsr getMtlsCsr() +> CompletableFuture> getMtlsCsr getMtlsCsr(keyAlgorithm) Get mTLS CSR -Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate. +Returns the Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate. The private key the CSR is built from is held by Fireblocks and is specific to this workspace. It is created on the first request for a given key type, and the same CSR is returned on subsequent requests for that type. Pass `keyAlgorithm` to choose RSA or ECDSA. A workspace may hold one key of each: the CSR returned is always the one for the type requested, so a certificate signed against it matches the key used at delivery time. ### Example @@ -453,8 +453,9 @@ public class Example { .secretKey("my-secret-key"); Fireblocks fireblocks = new Fireblocks(configurationOptions); + String keyAlgorithm = "RSA"; // String | Algorithm of the private key the CSR is generated for. ECDSA keys are smaller and quicker to issue, but the certificate authority signing the request has to accept an EC subject key, which some do not by default. try { - CompletableFuture> response = fireblocks.webhooksV2().getMtlsCsr(); + CompletableFuture> response = fireblocks.webhooksV2().getMtlsCsr(keyAlgorithm); System.out.println("Status code: " + response.get().getStatusCode()); System.out.println("Response headers: " + response.get().getHeaders()); System.out.println("Response body: " + response.get().getData()); @@ -472,7 +473,10 @@ public class Example { ### Parameters -This endpoint does not need any parameter. + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **keyAlgorithm** | **String**| Algorithm of the private key the CSR is generated for. ECDSA keys are smaller and quicker to issue, but the certificate authority signing the request has to accept an EC subject key, which some do not by default. | [optional] [default to RSA] [enum: RSA, ECDSA] | ### Return type @@ -1629,7 +1633,7 @@ No authorization required Update OAuth credentials -Updates only the fields present in the request; anything omitted is left as it is. Sending `clientSecret` on its own rotates the secret for every webhook using these credentials. `customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Since a `null` inside a map is the delete mechanism, none of the three accepts `null` for the whole field — `customJwtClaims: null`, `customBodyParams: null` or `customHeaders: null` is rejected with a `400` rather than ignored. Clear a map by listing each of its keys with a `null` value. Because `null` is spent on deletion, a claim cannot be set to JSON `null` either, on this endpoint or on create. `mtlsClientSignedCert` is a scalar rather than a map, so `null` there does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin. +Updates only the fields present in the request; anything omitted is left as it is. Sending `clientSecret` on its own rotates the secret for every webhook using these credentials. `customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Setting one of the three to `null` as a whole clears that map, which is the quick way to empty it without naming every key. There is no ambiguity between the two uses of `null` — one names an entry to delete, the other names the field. A claim cannot be set to JSON `null`, though, on this endpoint or on create, because `null` is spent on deletion. `mtlsClientSignedCert` is a scalar rather than a map, so `null` there does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin. ### Example diff --git a/docs/WorkflowStatusEnum.md b/docs/WorkflowStatusEnum.md new file mode 100644 index 00000000..ddd85e45 --- /dev/null +++ b/docs/WorkflowStatusEnum.md @@ -0,0 +1,13 @@ + + +# WorkflowStatusEnum + +## Enum + + +* `ACTIVE` (value: `"ACTIVE"`) + +* `DRAFT` (value: `"DRAFT"`) + + + diff --git a/pom.xml b/pom.xml index 522ec03b..5c58d835 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ fireblocks-sdk jar fireblocks-sdk - 31.0.0 + 0.0.0 https://github.com/fireblocks/java-sdk The Fireblocks Official SDK is a comprehensive software development kit that enables seamless integration and interaction with the Fireblocks platform. Fireblocks is a cutting-edge blockchain infrastructure platform that provides secure and scalable solutions for managing digital assets and transactions. This SDK empowers developers to build robust applications that can interact with the Fireblocks platform's features, including creating and managing vault accounts, initiating secure transactions, managing assets, and more. It abstracts complex interactions with the Fireblocks API, making it easier for developers to leverage the platform's capabilities while adhering to best practices in security and efficiency. diff --git a/src/main/java/com/fireblocks/sdk/Configuration.java b/src/main/java/com/fireblocks/sdk/Configuration.java index b6e239dc..aa53bae8 100644 --- a/src/main/java/com/fireblocks/sdk/Configuration.java +++ b/src/main/java/com/fireblocks/sdk/Configuration.java @@ -21,7 +21,7 @@ value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.14.0") public class Configuration { - public static final String VERSION = "31.0.0"; + public static final String VERSION = "0.0.0"; private static final AtomicReference defaultApiClient = new AtomicReference<>(); private static volatile Supplier apiClientFactory = ApiClient::new; diff --git a/src/main/java/com/fireblocks/sdk/Fireblocks.java b/src/main/java/com/fireblocks/sdk/Fireblocks.java index 1daaeb05..f1c0703f 100644 --- a/src/main/java/com/fireblocks/sdk/Fireblocks.java +++ b/src/main/java/com/fireblocks/sdk/Fireblocks.java @@ -42,6 +42,7 @@ public class Fireblocks { private BlockchainLinkBetaApi blockchainLinkBeta; private BlockchainsAssetsApi blockchainsAssets; private ComplianceApi compliance; + private ComplianceOrchestratorBetaApi complianceOrchestratorBeta; private ComplianceScreeningConfigurationApi complianceScreeningConfiguration; private ConnectedAccountsBetaApi connectedAccountsBeta; private ConsoleUserApi consoleUser; @@ -272,6 +273,13 @@ public ComplianceApi compliance() { return compliance; } + public ComplianceOrchestratorBetaApi complianceOrchestratorBeta() { + if (complianceOrchestratorBeta == null) { + complianceOrchestratorBeta = new ComplianceOrchestratorBetaApi(apiClient); + } + return complianceOrchestratorBeta; + } + public ComplianceScreeningConfigurationApi complianceScreeningConfiguration() { if (complianceScreeningConfiguration == null) { complianceScreeningConfiguration = new ComplianceScreeningConfigurationApi(apiClient); diff --git a/src/main/java/com/fireblocks/sdk/api/ApprovalsBetaApi.java b/src/main/java/com/fireblocks/sdk/api/ApprovalsBetaApi.java index df42161d..b5257f25 100644 --- a/src/main/java/com/fireblocks/sdk/api/ApprovalsBetaApi.java +++ b/src/main/java/com/fireblocks/sdk/api/ApprovalsBetaApi.java @@ -21,7 +21,11 @@ import com.fireblocks.sdk.Pair; import com.fireblocks.sdk.ValidationUtils; import com.fireblocks.sdk.model.ApprovalRequestItem; +import com.fireblocks.sdk.model.ApproveApprovalRequest; +import com.fireblocks.sdk.model.ListApprovalApiKeysResponse; import com.fireblocks.sdk.model.ListApprovalsResponse; +import com.fireblocks.sdk.model.RegisterApprovalApiKeyRequest; +import com.fireblocks.sdk.model.RegisterApprovalApiKeyResponse; import java.io.IOException; import java.io.InputStream; import java.net.URI; @@ -100,6 +104,278 @@ private String formatExceptionMessage(String operationId, int statusCode, String return operationId + " call failed with: " + statusCode + " - " + body; } + /** + * Approve an approval request Approve a pending approval request as the authenticated API user. + * The caller signs the request's signable data with the private key of a registered + * approval API key and submits the base64url-encoded signature, optionally with the key ID. The + * server verifies the signature against the registered public key — using the given key ID, or + * matching against all of the user's registered keys when the key ID is omitted — and + * advances the approval quorum. Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, + * Signer, Security Admin. + * + * @param approveApprovalRequest (required) + * @param requestId The approval request ID. (required) + * @param idempotencyKey A unique identifier for the request. If the request is sent multiple + * times with the same idempotency key, the server will return the same response as the + * first request. The idempotency key is valid for 24 hours. (optional) + * @return CompletableFuture<ApiResponse<Void>>, which completes exceptionally with + * an {@link ApiException} if the API call fails + */ + public CompletableFuture> approveApproval( + ApproveApprovalRequest approveApprovalRequest, + String requestId, + String idempotencyKey) { + try { + HttpRequest.Builder localVarRequestBuilder = + approveApprovalRequestBuilder( + approveApprovalRequest, requestId, idempotencyKey); + return memberVarHttpClient + .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()) + .thenComposeAsync( + localVarResponse -> { + if (memberVarAsyncResponseInterceptor != null) { + memberVarAsyncResponseInterceptor.accept(localVarResponse); + } + if (localVarResponse.statusCode() / 100 != 2) { + return CompletableFuture.failedFuture( + getApiException("approveApproval", localVarResponse)); + } + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + null)); + }) + .handle( + (localVarApiResponse, localVarThrowable) -> + localVarThrowable == null + ? CompletableFuture.completedFuture(localVarApiResponse) + : CompletableFuture.>failedFuture( + toApiFailure(localVarThrowable))) + .thenCompose(localVarNormalized -> localVarNormalized); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder approveApprovalRequestBuilder( + ApproveApprovalRequest approveApprovalRequest, String requestId, String idempotencyKey) + throws ApiException { + ValidationUtils.assertParamExists( + "approveApproval", "approveApprovalRequest", approveApprovalRequest); + ValidationUtils.assertParamExistsAndNotEmpty("approveApproval", "requestId", requestId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/approvals/{requestId}/approve" + .replace("{requestId}", ApiClient.urlEncode(requestId.toString())); + + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + + if (idempotencyKey != null) { + localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString()); + } + localVarRequestBuilder.header("Content-Type", "application/json"); + localVarRequestBuilder.header("Accept", "application/json"); + + try { + byte[] localVarPostBody = + memberVarObjectMapper.writeValueAsBytes(approveApprovalRequest); + localVarRequestBuilder.method( + "POST", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody)); + } catch (IOException e) { + throw new ApiException(e); + } + if (memberVarReadTimeout != null) { + localVarRequestBuilder.timeout(memberVarReadTimeout); + } + if (memberVarInterceptor != null) { + memberVarInterceptor.accept(localVarRequestBuilder); + } + return localVarRequestBuilder; + } + /** + * Register an approval key Register an approval public key for an API user, used to sign + * approval requests. Up to 2 active keys are supported per API user. Returns the + * server-generated key ID used for deletion. The `userId` must be the authenticated + * API user's own ID. Registering a key for another user is not supported and is rejected. + * Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin. + * + * @param registerApprovalApiKeyRequest (required) + * @param userId The ID of the API user to register the approval key for. (required) + * @param idempotencyKey A unique identifier for the request. If the request is sent multiple + * times with the same idempotency key, the server will return the same response as the + * first request. The idempotency key is valid for 24 hours. (optional) + * @return CompletableFuture<ApiResponse<RegisterApprovalApiKeyResponse>>, which + * completes exceptionally with an {@link ApiException} if the API call fails + */ + public CompletableFuture> createApprovalKey( + RegisterApprovalApiKeyRequest registerApprovalApiKeyRequest, + String userId, + String idempotencyKey) { + try { + HttpRequest.Builder localVarRequestBuilder = + createApprovalKeyRequestBuilder( + registerApprovalApiKeyRequest, userId, idempotencyKey); + return memberVarHttpClient + .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()) + .thenComposeAsync( + localVarResponse -> { + if (memberVarAsyncResponseInterceptor != null) { + memberVarAsyncResponseInterceptor.accept(localVarResponse); + } + if (localVarResponse.statusCode() / 100 != 2) { + return CompletableFuture.failedFuture( + getApiException("createApprovalKey", localVarResponse)); + } + try { + String responseBody = localVarResponse.body(); + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + responseBody == null || responseBody.isBlank() + ? null + : memberVarObjectMapper.readValue( + responseBody, + new TypeReference< + RegisterApprovalApiKeyResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }) + .handle( + (localVarApiResponse, localVarThrowable) -> + localVarThrowable == null + ? CompletableFuture.completedFuture(localVarApiResponse) + : CompletableFuture + .> + failedFuture( + toApiFailure( + localVarThrowable))) + .thenCompose(localVarNormalized -> localVarNormalized); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder createApprovalKeyRequestBuilder( + RegisterApprovalApiKeyRequest registerApprovalApiKeyRequest, + String userId, + String idempotencyKey) + throws ApiException { + ValidationUtils.assertParamExists( + "createApprovalKey", + "registerApprovalApiKeyRequest", + registerApprovalApiKeyRequest); + ValidationUtils.assertParamExistsAndNotEmpty("createApprovalKey", "userId", userId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/management/api_users/{userId}/approval_keys" + .replace("{userId}", ApiClient.urlEncode(userId.toString())); + + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + + if (idempotencyKey != null) { + localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString()); + } + localVarRequestBuilder.header("Content-Type", "application/json"); + localVarRequestBuilder.header("Accept", "application/json"); + + try { + byte[] localVarPostBody = + memberVarObjectMapper.writeValueAsBytes(registerApprovalApiKeyRequest); + localVarRequestBuilder.method( + "POST", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody)); + } catch (IOException e) { + throw new ApiException(e); + } + if (memberVarReadTimeout != null) { + localVarRequestBuilder.timeout(memberVarReadTimeout); + } + if (memberVarInterceptor != null) { + memberVarInterceptor.accept(localVarRequestBuilder); + } + return localVarRequestBuilder; + } + /** + * Delete an approval key Delete (revoke) an approval public key for the specified API user. + * Revoking the last key disables the API user's ability to sign approvals. Endpoint + * Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin. + * + * @param userId The ID of the API user whose approval key to delete. (required) + * @param keyId The ID of the approval key to delete. (required) + * @param idempotencyKey A unique identifier for the request. If the request is sent multiple + * times with the same idempotency key, the server will return the same response as the + * first request. The idempotency key is valid for 24 hours. (optional) + * @return CompletableFuture<ApiResponse<Void>>, which completes exceptionally with + * an {@link ApiException} if the API call fails + */ + public CompletableFuture> deleteApprovalKey( + String userId, String keyId, String idempotencyKey) { + try { + HttpRequest.Builder localVarRequestBuilder = + deleteApprovalKeyRequestBuilder(userId, keyId, idempotencyKey); + return memberVarHttpClient + .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()) + .thenComposeAsync( + localVarResponse -> { + if (memberVarAsyncResponseInterceptor != null) { + memberVarAsyncResponseInterceptor.accept(localVarResponse); + } + if (localVarResponse.statusCode() / 100 != 2) { + return CompletableFuture.failedFuture( + getApiException("deleteApprovalKey", localVarResponse)); + } + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + null)); + }) + .handle( + (localVarApiResponse, localVarThrowable) -> + localVarThrowable == null + ? CompletableFuture.completedFuture(localVarApiResponse) + : CompletableFuture.>failedFuture( + toApiFailure(localVarThrowable))) + .thenCompose(localVarNormalized -> localVarNormalized); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder deleteApprovalKeyRequestBuilder( + String userId, String keyId, String idempotencyKey) throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("deleteApprovalKey", "userId", userId); + ValidationUtils.assertParamExistsAndNotEmpty("deleteApprovalKey", "keyId", keyId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/management/api_users/{userId}/approval_keys/{keyId}" + .replace("{userId}", ApiClient.urlEncode(userId.toString())) + .replace("{keyId}", ApiClient.urlEncode(keyId.toString())); + + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + + if (idempotencyKey != null) { + localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString()); + } + localVarRequestBuilder.header("Accept", "application/json"); + + localVarRequestBuilder.method("DELETE", HttpRequest.BodyPublishers.noBody()); + if (memberVarReadTimeout != null) { + localVarRequestBuilder.timeout(memberVarReadTimeout); + } + if (memberVarInterceptor != null) { + memberVarInterceptor.accept(localVarRequestBuilder); + } + return localVarRequestBuilder; + } /** * Get a single approval request Retrieve full detail for a single approval request by ID, * including the payload to sign and, when requested, the request's @@ -210,6 +486,107 @@ private HttpRequest.Builder getApprovalByIdRequestBuilder( } return localVarRequestBuilder; } + /** + * List approval keys List the approval public keys registered for the specified API user. + * Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin, + * Security Auditor. + * + * @param userId The ID of the API user whose approval keys to list. (required) + * @param pageSize Number of results per page. Maximum 15. Defaults to 10. (optional, default to + * 10) + * @param pageCursor Cursor returned from the previous response (the `next` field) to + * fetch the next page. (optional) + * @return CompletableFuture<ApiResponse<ListApprovalApiKeysResponse>>, which + * completes exceptionally with an {@link ApiException} if the API call fails + */ + public CompletableFuture> getApprovalKeys( + String userId, Integer pageSize, String pageCursor) { + try { + HttpRequest.Builder localVarRequestBuilder = + getApprovalKeysRequestBuilder(userId, pageSize, pageCursor); + return memberVarHttpClient + .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()) + .thenComposeAsync( + localVarResponse -> { + if (memberVarAsyncResponseInterceptor != null) { + memberVarAsyncResponseInterceptor.accept(localVarResponse); + } + if (localVarResponse.statusCode() / 100 != 2) { + return CompletableFuture.failedFuture( + getApiException("getApprovalKeys", localVarResponse)); + } + try { + String responseBody = localVarResponse.body(); + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + responseBody == null || responseBody.isBlank() + ? null + : memberVarObjectMapper.readValue( + responseBody, + new TypeReference< + ListApprovalApiKeysResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }) + .handle( + (localVarApiResponse, localVarThrowable) -> + localVarThrowable == null + ? CompletableFuture.completedFuture(localVarApiResponse) + : CompletableFuture + .> + failedFuture( + toApiFailure( + localVarThrowable))) + .thenCompose(localVarNormalized -> localVarNormalized); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getApprovalKeysRequestBuilder( + String userId, Integer pageSize, String pageCursor) throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getApprovalKeys", "userId", userId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/management/api_users/{userId}/approval_keys" + .replace("{userId}", ApiClient.urlEncode(userId.toString())); + + List localVarQueryParams = new ArrayList<>(); + StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); + String localVarQueryParameterBaseName; + localVarQueryParameterBaseName = "pageSize"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageSize", pageSize)); + localVarQueryParameterBaseName = "pageCursor"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageCursor", pageCursor)); + + if (!localVarQueryParams.isEmpty() || localVarQueryStringJoiner.length() != 0) { + StringJoiner queryJoiner = new StringJoiner("&"); + localVarQueryParams.forEach(p -> queryJoiner.add(p.getName() + '=' + p.getValue())); + if (localVarQueryStringJoiner.length() != 0) { + queryJoiner.add(localVarQueryStringJoiner.toString()); + } + localVarRequestBuilder.uri( + URI.create(memberVarBaseUri + localVarPath + '?' + queryJoiner.toString())); + } else { + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + } + + localVarRequestBuilder.header("Accept", "application/json"); + + localVarRequestBuilder.method("GET", HttpRequest.BodyPublishers.noBody()); + if (memberVarReadTimeout != null) { + localVarRequestBuilder.timeout(memberVarReadTimeout); + } + if (memberVarInterceptor != null) { + memberVarInterceptor.accept(localVarRequestBuilder); + } + return localVarRequestBuilder; + } /** * List approval requests Retrieve the pending approval requests the authenticated API user is * eligible to act on, including requests the user has already approved that are still pending diff --git a/src/main/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApi.java b/src/main/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApi.java new file mode 100644 index 00000000..6066b9a4 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApi.java @@ -0,0 +1,461 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.api; + + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fireblocks.sdk.ApiClient; +import com.fireblocks.sdk.ApiException; +import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.ValidationUtils; +import com.fireblocks.sdk.model.GetScreeningResultResponse; +import com.fireblocks.sdk.model.GetWorkflowResponse; +import com.fireblocks.sdk.model.TriggerScreeningRequest; +import com.fireblocks.sdk.model.TriggerScreeningResponse; +import com.fireblocks.sdk.model.UpdateWorkflowStatusRequest; +import com.fireblocks.sdk.model.UpdateWorkflowStatusResponse; +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.time.Duration; +import java.util.concurrent.CancellationException; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.concurrent.ExecutionException; +import java.util.function.Consumer; + +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class ComplianceOrchestratorBetaApi { + private final HttpClient memberVarHttpClient; + private final ObjectMapper memberVarObjectMapper; + private final String memberVarBaseUri; + private final Consumer memberVarInterceptor; + private final Duration memberVarReadTimeout; + private final Consumer> memberVarResponseInterceptor; + private final Consumer> memberVarAsyncResponseInterceptor; + + public ComplianceOrchestratorBetaApi() { + this(new ApiClient()); + } + + public ComplianceOrchestratorBetaApi(ApiClient apiClient) { + memberVarHttpClient = apiClient.getHttpClient(); + memberVarObjectMapper = apiClient.getObjectMapper(); + memberVarBaseUri = apiClient.getBaseUri(); + memberVarInterceptor = apiClient.getRequestInterceptor(); + memberVarReadTimeout = apiClient.getReadTimeout(); + memberVarResponseInterceptor = apiClient.getResponseInterceptor(); + memberVarAsyncResponseInterceptor = apiClient.getAsyncResponseInterceptor(); + } + + private ApiException getApiException(String operationId, HttpResponse response) { + String message = + formatExceptionMessage(operationId, response.statusCode(), response.body()); + return new ApiException( + response.statusCode(), message, response.headers(), response.body()); + } + + /** + * Normalizes any failure raised while performing the call into the single failure type callers + * are told to expect. Transport-level errors surfaced by {@code HttpClient.sendAsync} - + * connection refused, DNS failures, TLS errors, timeouts - would otherwise reach the caller as + * a raw {@link java.io.IOException}, which makes the documented {@code (ApiException) + * e.getCause()} throw {@link ClassCastException}. + * + *

{@link CancellationException} is passed through unchanged: a cancelled call is not an API + * failure. + */ + private static Throwable toApiFailure(Throwable throwable) { + Throwable cause = throwable; + while ((cause instanceof CompletionException || cause instanceof ExecutionException) + && cause.getCause() != null) { + cause = cause.getCause(); + } + if (cause instanceof ApiException || cause instanceof CancellationException) { + return cause; + } + return new ApiException(cause); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; + } + return operationId + " call failed with: " + statusCode + " - " + body; + } + + /** + * Get a Compliance Orchestrator screening's result Returns the result of a screening + * started by `POST /v1/compliance/orchestrator/screenings`, with a result per + * workflow step and an audit log. Safe to poll: a screening still in flight reports + * `PENDING` or `RUNNING`. Only screenings owned by the requesting tenant + * are returned. + * + * @param screeningId The screening's identifier, returned by `POST + * /v1/compliance/orchestrator/screenings`. (required) + * @return CompletableFuture<ApiResponse<GetScreeningResultResponse>>, which + * completes exceptionally with an {@link ApiException} if the API call fails + */ + public CompletableFuture> getScreeningResult( + String screeningId) { + try { + HttpRequest.Builder localVarRequestBuilder = + getScreeningResultRequestBuilder(screeningId); + return memberVarHttpClient + .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()) + .thenComposeAsync( + localVarResponse -> { + if (memberVarAsyncResponseInterceptor != null) { + memberVarAsyncResponseInterceptor.accept(localVarResponse); + } + if (localVarResponse.statusCode() / 100 != 2) { + return CompletableFuture.failedFuture( + getApiException( + "getScreeningResult", localVarResponse)); + } + try { + String responseBody = localVarResponse.body(); + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + responseBody == null || responseBody.isBlank() + ? null + : memberVarObjectMapper.readValue( + responseBody, + new TypeReference< + GetScreeningResultResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }) + .handle( + (localVarApiResponse, localVarThrowable) -> + localVarThrowable == null + ? CompletableFuture.completedFuture(localVarApiResponse) + : CompletableFuture + .> + failedFuture( + toApiFailure( + localVarThrowable))) + .thenCompose(localVarNormalized -> localVarNormalized); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getScreeningResultRequestBuilder(String screeningId) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty( + "getScreeningResult", "screeningId", screeningId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/compliance/orchestrator/screenings/{screeningId}" + .replace("{screeningId}", ApiClient.urlEncode(screeningId.toString())); + + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + + localVarRequestBuilder.header("Accept", "application/json"); + + localVarRequestBuilder.method("GET", HttpRequest.BodyPublishers.noBody()); + if (memberVarReadTimeout != null) { + localVarRequestBuilder.timeout(memberVarReadTimeout); + } + if (memberVarInterceptor != null) { + memberVarInterceptor.accept(localVarRequestBuilder); + } + return localVarRequestBuilder; + } + /** + * Get a Compliance Orchestrator workflow Returns a workflow's status and its steps in + * execution order. Read it to see what a given `workflowId` will screen, and which + * fields its rules may reference. + * + * @param workflowId The workflow's identifier. (required) + * @return CompletableFuture<ApiResponse<GetWorkflowResponse>>, which completes + * exceptionally with an {@link ApiException} if the API call fails + */ + public CompletableFuture> getWorkflow(String workflowId) { + try { + HttpRequest.Builder localVarRequestBuilder = getWorkflowRequestBuilder(workflowId); + return memberVarHttpClient + .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()) + .thenComposeAsync( + localVarResponse -> { + if (memberVarAsyncResponseInterceptor != null) { + memberVarAsyncResponseInterceptor.accept(localVarResponse); + } + if (localVarResponse.statusCode() / 100 != 2) { + return CompletableFuture.failedFuture( + getApiException("getWorkflow", localVarResponse)); + } + try { + String responseBody = localVarResponse.body(); + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + responseBody == null || responseBody.isBlank() + ? null + : memberVarObjectMapper.readValue( + responseBody, + new TypeReference< + GetWorkflowResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }) + .handle( + (localVarApiResponse, localVarThrowable) -> + localVarThrowable == null + ? CompletableFuture.completedFuture(localVarApiResponse) + : CompletableFuture + .>failedFuture( + toApiFailure(localVarThrowable))) + .thenCompose(localVarNormalized -> localVarNormalized); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getWorkflowRequestBuilder(String workflowId) throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getWorkflow", "workflowId", workflowId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/compliance/orchestrator/workflows/{workflowId}" + .replace("{workflowId}", ApiClient.urlEncode(workflowId.toString())); + + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + + localVarRequestBuilder.header("Accept", "application/json"); + + localVarRequestBuilder.method("GET", HttpRequest.BodyPublishers.noBody()); + if (memberVarReadTimeout != null) { + localVarRequestBuilder.timeout(memberVarReadTimeout); + } + if (memberVarInterceptor != null) { + memberVarInterceptor.accept(localVarRequestBuilder); + } + return localVarRequestBuilder; + } + /** + * Trigger a Compliance Orchestrator screening Starts a compliance screening against an active + * workflow and returns a `screeningId`. The screening runs asynchronously — poll + * `GET /v1/compliance/orchestrator/screenings/{screeningId}` for the result. Unlike + * the screening that applies automatically to submitted transactions under + * `/v1/screening`, this is called on demand, before anything exists on-chain. + * + * @param triggerScreeningRequest (required) + * @param idempotencyKey A unique identifier for the request. If the request is sent multiple + * times with the same idempotency key, the server will return the same response as the + * first request. The idempotency key is valid for 24 hours. (optional) + * @return CompletableFuture<ApiResponse<TriggerScreeningResponse>>, which completes + * exceptionally with an {@link ApiException} if the API call fails + */ + public CompletableFuture> triggerScreening( + TriggerScreeningRequest triggerScreeningRequest, String idempotencyKey) { + try { + HttpRequest.Builder localVarRequestBuilder = + triggerScreeningRequestBuilder(triggerScreeningRequest, idempotencyKey); + return memberVarHttpClient + .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()) + .thenComposeAsync( + localVarResponse -> { + if (memberVarAsyncResponseInterceptor != null) { + memberVarAsyncResponseInterceptor.accept(localVarResponse); + } + if (localVarResponse.statusCode() / 100 != 2) { + return CompletableFuture.failedFuture( + getApiException("triggerScreening", localVarResponse)); + } + try { + String responseBody = localVarResponse.body(); + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + responseBody == null || responseBody.isBlank() + ? null + : memberVarObjectMapper.readValue( + responseBody, + new TypeReference< + TriggerScreeningResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }) + .handle( + (localVarApiResponse, localVarThrowable) -> + localVarThrowable == null + ? CompletableFuture.completedFuture(localVarApiResponse) + : CompletableFuture + .> + failedFuture( + toApiFailure( + localVarThrowable))) + .thenCompose(localVarNormalized -> localVarNormalized); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder triggerScreeningRequestBuilder( + TriggerScreeningRequest triggerScreeningRequest, String idempotencyKey) + throws ApiException { + ValidationUtils.assertParamExists( + "triggerScreening", "triggerScreeningRequest", triggerScreeningRequest); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = "/compliance/orchestrator/screenings"; + + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + + if (idempotencyKey != null) { + localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString()); + } + localVarRequestBuilder.header("Content-Type", "application/json"); + localVarRequestBuilder.header("Accept", "application/json"); + + try { + byte[] localVarPostBody = + memberVarObjectMapper.writeValueAsBytes(triggerScreeningRequest); + localVarRequestBuilder.method( + "POST", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody)); + } catch (IOException e) { + throw new ApiException(e); + } + if (memberVarReadTimeout != null) { + localVarRequestBuilder.timeout(memberVarReadTimeout); + } + if (memberVarInterceptor != null) { + memberVarInterceptor.accept(localVarRequestBuilder); + } + return localVarRequestBuilder; + } + /** + * Update a Compliance Orchestrator workflow's status Moves a workflow between + * `DRAFT` and `ACTIVE`. A workflow must be `ACTIVE` before + * `POST /v1/compliance/orchestrator/screenings` will accept a screening against it. + * Returns the workflow's id and new status, not its full configuration. + * + * @param updateWorkflowStatusRequest (required) + * @param workflowId The workflow's identifier. (required) + * @param idempotencyKey A unique identifier for the request. If the request is sent multiple + * times with the same idempotency key, the server will return the same response as the + * first request. The idempotency key is valid for 24 hours. (optional) + * @return CompletableFuture<ApiResponse<UpdateWorkflowStatusResponse>>, which + * completes exceptionally with an {@link ApiException} if the API call fails + */ + public CompletableFuture> updateWorkflowStatus( + UpdateWorkflowStatusRequest updateWorkflowStatusRequest, + String workflowId, + String idempotencyKey) { + try { + HttpRequest.Builder localVarRequestBuilder = + updateWorkflowStatusRequestBuilder( + updateWorkflowStatusRequest, workflowId, idempotencyKey); + return memberVarHttpClient + .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()) + .thenComposeAsync( + localVarResponse -> { + if (memberVarAsyncResponseInterceptor != null) { + memberVarAsyncResponseInterceptor.accept(localVarResponse); + } + if (localVarResponse.statusCode() / 100 != 2) { + return CompletableFuture.failedFuture( + getApiException( + "updateWorkflowStatus", localVarResponse)); + } + try { + String responseBody = localVarResponse.body(); + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + responseBody == null || responseBody.isBlank() + ? null + : memberVarObjectMapper.readValue( + responseBody, + new TypeReference< + UpdateWorkflowStatusResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }) + .handle( + (localVarApiResponse, localVarThrowable) -> + localVarThrowable == null + ? CompletableFuture.completedFuture(localVarApiResponse) + : CompletableFuture + .> + failedFuture( + toApiFailure( + localVarThrowable))) + .thenCompose(localVarNormalized -> localVarNormalized); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder updateWorkflowStatusRequestBuilder( + UpdateWorkflowStatusRequest updateWorkflowStatusRequest, + String workflowId, + String idempotencyKey) + throws ApiException { + ValidationUtils.assertParamExists( + "updateWorkflowStatus", "updateWorkflowStatusRequest", updateWorkflowStatusRequest); + ValidationUtils.assertParamExistsAndNotEmpty( + "updateWorkflowStatus", "workflowId", workflowId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/compliance/orchestrator/workflows/{workflowId}/status" + .replace("{workflowId}", ApiClient.urlEncode(workflowId.toString())); + + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + + if (idempotencyKey != null) { + localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString()); + } + localVarRequestBuilder.header("Content-Type", "application/json"); + localVarRequestBuilder.header("Accept", "application/json"); + + try { + byte[] localVarPostBody = + memberVarObjectMapper.writeValueAsBytes(updateWorkflowStatusRequest); + localVarRequestBuilder.method( + "PATCH", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody)); + } catch (IOException e) { + throw new ApiException(e); + } + if (memberVarReadTimeout != null) { + localVarRequestBuilder.timeout(memberVarReadTimeout); + } + if (memberVarInterceptor != null) { + memberVarInterceptor.accept(localVarRequestBuilder); + } + return localVarRequestBuilder; + } +} diff --git a/src/main/java/com/fireblocks/sdk/api/WebhooksV2Api.java b/src/main/java/com/fireblocks/sdk/api/WebhooksV2Api.java index f80211dd..dadbdfc6 100644 --- a/src/main/java/com/fireblocks/sdk/api/WebhooksV2Api.java +++ b/src/main/java/com/fireblocks/sdk/api/WebhooksV2Api.java @@ -569,15 +569,23 @@ private HttpRequest.Builder getMetricsRequestBuilder(UUID webhookId, String metr return localVarRequestBuilder; } /** - * Get mTLS CSR Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use - * to generate their signed client certificate. + * Get mTLS CSR Returns the Certificate Signing Request (CSR) PEM that customers use to generate + * their signed client certificate. The private key the CSR is built from is held by Fireblocks + * and is specific to this workspace. It is created on the first request for a given key type, + * and the same CSR is returned on subsequent requests for that type. Pass + * `keyAlgorithm` to choose RSA or ECDSA. A workspace may hold one key of each: the + * CSR returned is always the one for the type requested, so a certificate signed against it + * matches the key used at delivery time. * + * @param keyAlgorithm Algorithm of the private key the CSR is generated for. ECDSA keys are + * smaller and quicker to issue, but the certificate authority signing the request has to + * accept an EC subject key, which some do not by default. (optional, default to RSA) * @return CompletableFuture<ApiResponse<WebhookMtlsCsrResponse>>, which completes * exceptionally with an {@link ApiException} if the API call fails */ - public CompletableFuture> getMtlsCsr() { + public CompletableFuture> getMtlsCsr(String keyAlgorithm) { try { - HttpRequest.Builder localVarRequestBuilder = getMtlsCsrRequestBuilder(); + HttpRequest.Builder localVarRequestBuilder = getMtlsCsrRequestBuilder(keyAlgorithm); return memberVarHttpClient .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()) .thenComposeAsync( @@ -620,13 +628,29 @@ public CompletableFuture> getMtlsCsr() { } } - private HttpRequest.Builder getMtlsCsrRequestBuilder() throws ApiException { + private HttpRequest.Builder getMtlsCsrRequestBuilder(String keyAlgorithm) throws ApiException { HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); - String localVarPath = "/webhooks/mtls/csr"; + String localVarPath = "/webhooks_settings/mtls_csr"; - localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + List localVarQueryParams = new ArrayList<>(); + StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); + String localVarQueryParameterBaseName; + localVarQueryParameterBaseName = "keyAlgorithm"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("keyAlgorithm", keyAlgorithm)); + + if (!localVarQueryParams.isEmpty() || localVarQueryStringJoiner.length() != 0) { + StringJoiner queryJoiner = new StringJoiner("&"); + localVarQueryParams.forEach(p -> queryJoiner.add(p.getName() + '=' + p.getValue())); + if (localVarQueryStringJoiner.length() != 0) { + queryJoiner.add(localVarQueryStringJoiner.toString()); + } + localVarRequestBuilder.uri( + URI.create(memberVarBaseUri + localVarPath + '?' + queryJoiner.toString())); + } else { + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + } localVarRequestBuilder.header("Accept", "application/json"); @@ -1959,14 +1983,13 @@ private HttpRequest.Builder updateWebhookRequestBuilder( * and `customHeaders` are all merged key by key rather than replaced, the same way a * webhook's own `customHeaders` behaves: a key sent with a value is added or * overwritten, a key sent with a `null` value is deleted, and a key you omit is left - * alone. Since a `null` inside a map is the delete mechanism, none of the three - * accepts `null` for the whole field — `customJwtClaims: null`, - * `customBodyParams: null` or `customHeaders: null` is rejected with a - * `400` rather than ignored. Clear a map by listing each of its keys with a - * `null` value. Because `null` is spent on deletion, a claim cannot be set - * to JSON `null` either, on this endpoint or on create. - * `mtlsClientSignedCert` is a scalar rather than a map, so `null` there - * does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin. + * alone. Setting one of the three to `null` as a whole clears that map, which is the + * quick way to empty it without naming every key. There is no ambiguity between the two uses of + * `null` — one names an entry to delete, the other names the field. A claim cannot be + * set to JSON `null`, though, on this endpoint or on create, because `null` + * is spent on deletion. `mtlsClientSignedCert` is a scalar rather than a map, so + * `null` there does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing + * Admin. * * @param updateWebhookOauthRequest (required) * @param webhookOauthId The unique identifier of the OAuth credentials (required) diff --git a/src/main/java/com/fireblocks/sdk/model/ApprovalApiKey.java b/src/main/java/com/fireblocks/sdk/model/ApprovalApiKey.java new file mode 100644 index 00000000..d22eed8c --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ApprovalApiKey.java @@ -0,0 +1,353 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.Objects; +import java.util.StringJoiner; + +/** A registered approval API key for an API user. */ +@JsonPropertyOrder({ + ApprovalApiKey.JSON_PROPERTY_ID, + ApprovalApiKey.JSON_PROPERTY_NAME, + ApprovalApiKey.JSON_PROPERTY_CREATED_AT, + ApprovalApiKey.JSON_PROPERTY_LAST_USED_AT, + ApprovalApiKey.JSON_PROPERTY_APPROVAL_API_PUBLIC_KEY, + ApprovalApiKey.JSON_PROPERTY_USER_ID +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class ApprovalApiKey { + public static final String JSON_PROPERTY_ID = "id"; + @jakarta.annotation.Nonnull private String id; + + public static final String JSON_PROPERTY_NAME = "name"; + @jakarta.annotation.Nonnull private String name; + + public static final String JSON_PROPERTY_CREATED_AT = "createdAt"; + @jakarta.annotation.Nonnull private String createdAt; + + public static final String JSON_PROPERTY_LAST_USED_AT = "lastUsedAt"; + @jakarta.annotation.Nonnull private String lastUsedAt; + + public static final String JSON_PROPERTY_APPROVAL_API_PUBLIC_KEY = "approvalApiPublicKey"; + @jakarta.annotation.Nonnull private ApprovalApiPublicKey approvalApiPublicKey; + + public static final String JSON_PROPERTY_USER_ID = "userId"; + @jakarta.annotation.Nonnull private String userId; + + public ApprovalApiKey() {} + + @JsonCreator + public ApprovalApiKey( + @JsonProperty(value = JSON_PROPERTY_ID, required = true) String id, + @JsonProperty(value = JSON_PROPERTY_NAME, required = true) String name, + @JsonProperty(value = JSON_PROPERTY_CREATED_AT, required = true) String createdAt, + @JsonProperty(value = JSON_PROPERTY_LAST_USED_AT, required = true) String lastUsedAt, + @JsonProperty(value = JSON_PROPERTY_APPROVAL_API_PUBLIC_KEY, required = true) + ApprovalApiPublicKey approvalApiPublicKey, + @JsonProperty(value = JSON_PROPERTY_USER_ID, required = true) String userId) { + this.id = id; + this.name = name; + this.createdAt = createdAt; + this.lastUsedAt = lastUsedAt; + this.approvalApiPublicKey = approvalApiPublicKey; + this.userId = userId; + } + + public ApprovalApiKey id(@jakarta.annotation.Nonnull String id) { + this.id = id; + return this; + } + + /** + * The unique key ID, used to delete the key. + * + * @return id + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getId() { + return id; + } + + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setId(@jakarta.annotation.Nonnull String id) { + this.id = id; + } + + public ApprovalApiKey name(@jakarta.annotation.Nonnull String name) { + this.name = name; + return this; + } + + /** + * A human-readable label for the key. + * + * @return name + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getName() { + return name; + } + + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setName(@jakarta.annotation.Nonnull String name) { + this.name = name; + } + + public ApprovalApiKey createdAt(@jakarta.annotation.Nonnull String createdAt) { + this.createdAt = createdAt; + return this; + } + + /** + * Creation time as epoch time in seconds. + * + * @return createdAt + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_CREATED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getCreatedAt() { + return createdAt; + } + + @JsonProperty(JSON_PROPERTY_CREATED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setCreatedAt(@jakarta.annotation.Nonnull String createdAt) { + this.createdAt = createdAt; + } + + public ApprovalApiKey lastUsedAt(@jakarta.annotation.Nonnull String lastUsedAt) { + this.lastUsedAt = lastUsedAt; + return this; + } + + /** + * Last time the key was used to sign, as epoch time in seconds (0 if never used). + * + * @return lastUsedAt + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_LAST_USED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getLastUsedAt() { + return lastUsedAt; + } + + @JsonProperty(JSON_PROPERTY_LAST_USED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setLastUsedAt(@jakarta.annotation.Nonnull String lastUsedAt) { + this.lastUsedAt = lastUsedAt; + } + + public ApprovalApiKey approvalApiPublicKey( + @jakarta.annotation.Nonnull ApprovalApiPublicKey approvalApiPublicKey) { + this.approvalApiPublicKey = approvalApiPublicKey; + return this; + } + + /** + * Get approvalApiPublicKey + * + * @return approvalApiPublicKey + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_APPROVAL_API_PUBLIC_KEY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ApprovalApiPublicKey getApprovalApiPublicKey() { + return approvalApiPublicKey; + } + + @JsonProperty(JSON_PROPERTY_APPROVAL_API_PUBLIC_KEY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setApprovalApiPublicKey( + @jakarta.annotation.Nonnull ApprovalApiPublicKey approvalApiPublicKey) { + this.approvalApiPublicKey = approvalApiPublicKey; + } + + public ApprovalApiKey userId(@jakarta.annotation.Nonnull String userId) { + this.userId = userId; + return this; + } + + /** + * The ID of the API user who owns this key. + * + * @return userId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_USER_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getUserId() { + return userId; + } + + @JsonProperty(JSON_PROPERTY_USER_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setUserId(@jakarta.annotation.Nonnull String userId) { + this.userId = userId; + } + + /** Return true if this ApprovalApiKey object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApprovalApiKey approvalApiKey = (ApprovalApiKey) o; + return Objects.equals(this.id, approvalApiKey.id) + && Objects.equals(this.name, approvalApiKey.name) + && Objects.equals(this.createdAt, approvalApiKey.createdAt) + && Objects.equals(this.lastUsedAt, approvalApiKey.lastUsedAt) + && Objects.equals(this.approvalApiPublicKey, approvalApiKey.approvalApiPublicKey) + && Objects.equals(this.userId, approvalApiKey.userId); + } + + @Override + public int hashCode() { + return Objects.hash(id, name, createdAt, lastUsedAt, approvalApiPublicKey, userId); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApprovalApiKey {\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n"); + sb.append(" lastUsedAt: ").append(toIndentedString(lastUsedAt)).append("\n"); + sb.append(" approvalApiPublicKey: ") + .append(toIndentedString(approvalApiPublicKey)) + .append("\n"); + sb.append(" userId: ").append(toIndentedString(userId)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `id` to the URL query string + if (getId() != null) { + joiner.add( + String.format( + "%sid%s=%s", + prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getId())))); + } + + // add `name` to the URL query string + if (getName() != null) { + joiner.add( + String.format( + "%sname%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getName())))); + } + + // add `createdAt` to the URL query string + if (getCreatedAt() != null) { + joiner.add( + String.format( + "%screatedAt%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getCreatedAt())))); + } + + // add `lastUsedAt` to the URL query string + if (getLastUsedAt() != null) { + joiner.add( + String.format( + "%slastUsedAt%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getLastUsedAt())))); + } + + // add `approvalApiPublicKey` to the URL query string + if (getApprovalApiPublicKey() != null) { + joiner.add( + getApprovalApiPublicKey() + .toUrlQueryString(prefix + "approvalApiPublicKey" + suffix)); + } + + // add `userId` to the URL query string + if (getUserId() != null) { + joiner.add( + String.format( + "%suserId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getUserId())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ApprovalApiPublicKey.java b/src/main/java/com/fireblocks/sdk/model/ApprovalApiPublicKey.java new file mode 100644 index 00000000..eb199062 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ApprovalApiPublicKey.java @@ -0,0 +1,228 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fireblocks.sdk.ApiClient; +import java.util.Objects; +import java.util.StringJoiner; + +/** The public key material and its signing algorithm. */ +@JsonPropertyOrder({ + ApprovalApiPublicKey.JSON_PROPERTY_ALGORITHM, + ApprovalApiPublicKey.JSON_PROPERTY_PUBLIC_KEY_PEM +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class ApprovalApiPublicKey { + /** The signature algorithm of the public key. */ + public enum AlgorithmEnum { + RSA_PS256(String.valueOf("RSA_PS256")), + + ECDSA_SECP256_R1(String.valueOf("ECDSA_SECP256R1")), + + ECDSA_SECP384_R1(String.valueOf("ECDSA_SECP384R1")), + + EDDSA_ED25519(String.valueOf("EDDSA_ED25519")); + + private String value; + + AlgorithmEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static AlgorithmEnum fromValue(String value) { + for (AlgorithmEnum b : AlgorithmEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_ALGORITHM = "algorithm"; + @jakarta.annotation.Nonnull private AlgorithmEnum algorithm; + + public static final String JSON_PROPERTY_PUBLIC_KEY_PEM = "publicKeyPem"; + @jakarta.annotation.Nonnull private String publicKeyPem; + + public ApprovalApiPublicKey() {} + + @JsonCreator + public ApprovalApiPublicKey( + @JsonProperty(value = JSON_PROPERTY_ALGORITHM, required = true) AlgorithmEnum algorithm, + @JsonProperty(value = JSON_PROPERTY_PUBLIC_KEY_PEM, required = true) + String publicKeyPem) { + this.algorithm = algorithm; + this.publicKeyPem = publicKeyPem; + } + + public ApprovalApiPublicKey algorithm(@jakarta.annotation.Nonnull AlgorithmEnum algorithm) { + this.algorithm = algorithm; + return this; + } + + /** + * The signature algorithm of the public key. + * + * @return algorithm + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ALGORITHM) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public AlgorithmEnum getAlgorithm() { + return algorithm; + } + + @JsonProperty(JSON_PROPERTY_ALGORITHM) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setAlgorithm(@jakarta.annotation.Nonnull AlgorithmEnum algorithm) { + this.algorithm = algorithm; + } + + public ApprovalApiPublicKey publicKeyPem(@jakarta.annotation.Nonnull String publicKeyPem) { + this.publicKeyPem = publicKeyPem; + return this; + } + + /** + * The PEM-encoded public key. + * + * @return publicKeyPem + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_PUBLIC_KEY_PEM) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getPublicKeyPem() { + return publicKeyPem; + } + + @JsonProperty(JSON_PROPERTY_PUBLIC_KEY_PEM) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setPublicKeyPem(@jakarta.annotation.Nonnull String publicKeyPem) { + this.publicKeyPem = publicKeyPem; + } + + /** Return true if this ApprovalApiPublicKey object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApprovalApiPublicKey approvalApiPublicKey = (ApprovalApiPublicKey) o; + return Objects.equals(this.algorithm, approvalApiPublicKey.algorithm) + && Objects.equals(this.publicKeyPem, approvalApiPublicKey.publicKeyPem); + } + + @Override + public int hashCode() { + return Objects.hash(algorithm, publicKeyPem); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApprovalApiPublicKey {\n"); + sb.append(" algorithm: ").append(toIndentedString(algorithm)).append("\n"); + sb.append(" publicKeyPem: ").append(toIndentedString(publicKeyPem)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `algorithm` to the URL query string + if (getAlgorithm() != null) { + joiner.add( + String.format( + "%salgorithm%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getAlgorithm())))); + } + + // add `publicKeyPem` to the URL query string + if (getPublicKeyPem() != null) { + joiner.add( + String.format( + "%spublicKeyPem%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getPublicKeyPem())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ApproveApprovalRequest.java b/src/main/java/com/fireblocks/sdk/model/ApproveApprovalRequest.java new file mode 100644 index 00000000..29993b2c --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ApproveApprovalRequest.java @@ -0,0 +1,190 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.Objects; +import java.util.StringJoiner; + +/** The signed approval of a pending request. */ +@JsonPropertyOrder({ + ApproveApprovalRequest.JSON_PROPERTY_KEY_ID, + ApproveApprovalRequest.JSON_PROPERTY_SIGNATURE +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class ApproveApprovalRequest { + public static final String JSON_PROPERTY_KEY_ID = "keyId"; + @jakarta.annotation.Nullable private String keyId; + + public static final String JSON_PROPERTY_SIGNATURE = "signature"; + @jakarta.annotation.Nonnull private String signature; + + public ApproveApprovalRequest() {} + + @JsonCreator + public ApproveApprovalRequest( + @JsonProperty(value = JSON_PROPERTY_SIGNATURE, required = true) String signature) { + this.signature = signature; + } + + public ApproveApprovalRequest keyId(@jakarta.annotation.Nullable String keyId) { + this.keyId = keyId; + return this; + } + + /** + * The ID of the approval API key used to sign the request. Optional — if omitted, the signature + * is verified against all of the user's registered approval API keys. + * + * @return keyId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_KEY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getKeyId() { + return keyId; + } + + @JsonProperty(JSON_PROPERTY_KEY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setKeyId(@jakarta.annotation.Nullable String keyId) { + this.keyId = keyId; + } + + public ApproveApprovalRequest signature(@jakarta.annotation.Nonnull String signature) { + this.signature = signature; + return this; + } + + /** + * Base64url-encoded signature over the request's signable data, produced with the private + * key of a registered approval API key. If keyId is provided the signature must match that key; + * otherwise it is matched against all of the user's registered keys. + * + * @return signature + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_SIGNATURE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getSignature() { + return signature; + } + + @JsonProperty(JSON_PROPERTY_SIGNATURE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setSignature(@jakarta.annotation.Nonnull String signature) { + this.signature = signature; + } + + /** Return true if this ApproveApprovalRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApproveApprovalRequest approveApprovalRequest = (ApproveApprovalRequest) o; + return Objects.equals(this.keyId, approveApprovalRequest.keyId) + && Objects.equals(this.signature, approveApprovalRequest.signature); + } + + @Override + public int hashCode() { + return Objects.hash(keyId, signature); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApproveApprovalRequest {\n"); + sb.append(" keyId: ").append(toIndentedString(keyId)).append("\n"); + sb.append(" signature: ").append(toIndentedString(signature)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `keyId` to the URL query string + if (getKeyId() != null) { + joiner.add( + String.format( + "%skeyId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getKeyId())))); + } + + // add `signature` to the URL query string + if (getSignature() != null) { + joiner.add( + String.format( + "%ssignature%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getSignature())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/AuditEventTypeEnum.java b/src/main/java/com/fireblocks/sdk/model/AuditEventTypeEnum.java new file mode 100644 index 00000000..277e60cd --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/AuditEventTypeEnum.java @@ -0,0 +1,80 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * The kind of event an audit entry records. - `STATUS_TRANSITION` — the screening moved + * between statuses - `STEP_TRIGGER_RULE_EVALUATED` — a step's trigger rules were + * evaluated - `CONNECTOR_CALL` — a connector was called; `data.phase` + * distinguishes the request from its terminal result - `STEP_OUTCOME_RULE_EVALUATED` — a + * step's outcome rules read the response - `STEP_METADATA_RECORDED` — connector + * metadata was attached to a step - `WORKFLOW_OUTCOME` — the workflow outcome was derived + * from its steps. + */ +public enum AuditEventTypeEnum { + STATUS_TRANSITION("STATUS_TRANSITION"), + + STEP_TRIGGER_RULE_EVALUATED("STEP_TRIGGER_RULE_EVALUATED"), + + CONNECTOR_CALL("CONNECTOR_CALL"), + + STEP_OUTCOME_RULE_EVALUATED("STEP_OUTCOME_RULE_EVALUATED"), + + STEP_METADATA_RECORDED("STEP_METADATA_RECORDED"), + + WORKFLOW_OUTCOME("WORKFLOW_OUTCOME"); + + private String value; + + AuditEventTypeEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static AuditEventTypeEnum fromValue(String value) { + for (AuditEventTypeEnum b : AuditEventTypeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/AuditLogEntry.java b/src/main/java/com/fireblocks/sdk/model/AuditLogEntry.java new file mode 100644 index 00000000..7ddee6dd --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/AuditLogEntry.java @@ -0,0 +1,233 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.Arrays; +import java.util.Objects; +import java.util.StringJoiner; + +/** One entry in a screening's append-only audit trail. */ +@JsonPropertyOrder({ + AuditLogEntry.JSON_PROPERTY_TIMESTAMP, + AuditLogEntry.JSON_PROPERTY_EVENT_TYPE, + AuditLogEntry.JSON_PROPERTY_DATA +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class AuditLogEntry { + public static final String JSON_PROPERTY_TIMESTAMP = "timestamp"; + @jakarta.annotation.Nonnull private String timestamp; + + public static final String JSON_PROPERTY_EVENT_TYPE = "eventType"; + @jakarta.annotation.Nonnull private AuditEventTypeEnum eventType; + + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private byte[] data; + + public AuditLogEntry() {} + + @JsonCreator + public AuditLogEntry( + @JsonProperty(value = JSON_PROPERTY_TIMESTAMP, required = true) String timestamp, + @JsonProperty(value = JSON_PROPERTY_EVENT_TYPE, required = true) + AuditEventTypeEnum eventType, + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) byte[] data) { + this.timestamp = timestamp; + this.eventType = eventType; + this.data = data; + } + + public AuditLogEntry timestamp(@jakarta.annotation.Nonnull String timestamp) { + this.timestamp = timestamp; + return this; + } + + /** + * Unix timestamp in seconds when the event occurred, encoded as a string. + * + * @return timestamp + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_TIMESTAMP) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getTimestamp() { + return timestamp; + } + + @JsonProperty(JSON_PROPERTY_TIMESTAMP) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setTimestamp(@jakarta.annotation.Nonnull String timestamp) { + this.timestamp = timestamp; + } + + public AuditLogEntry eventType(@jakarta.annotation.Nonnull AuditEventTypeEnum eventType) { + this.eventType = eventType; + return this; + } + + /** + * Get eventType + * + * @return eventType + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_EVENT_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public AuditEventTypeEnum getEventType() { + return eventType; + } + + @JsonProperty(JSON_PROPERTY_EVENT_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setEventType(@jakarta.annotation.Nonnull AuditEventTypeEnum eventType) { + this.eventType = eventType; + } + + public AuditLogEntry data(@jakarta.annotation.Nonnull byte[] data) { + this.data = data; + return this; + } + + /** + * The event payload, JSON serialised and then base64 encoded. Its shape depends on + * `eventType` — decode it to read the event. + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public byte[] getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull byte[] data) { + this.data = data; + } + + /** Return true if this AuditLogEntry object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AuditLogEntry auditLogEntry = (AuditLogEntry) o; + return Objects.equals(this.timestamp, auditLogEntry.timestamp) + && Objects.equals(this.eventType, auditLogEntry.eventType) + && Arrays.equals(this.data, auditLogEntry.data); + } + + @Override + public int hashCode() { + return Objects.hash(timestamp, eventType, Arrays.hashCode(data)); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AuditLogEntry {\n"); + sb.append(" timestamp: ").append(toIndentedString(timestamp)).append("\n"); + sb.append(" eventType: ").append(toIndentedString(eventType)).append("\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `timestamp` to the URL query string + if (getTimestamp() != null) { + joiner.add( + String.format( + "%stimestamp%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTimestamp())))); + } + + // add `eventType` to the URL query string + if (getEventType() != null) { + joiner.add( + String.format( + "%seventType%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getEventType())))); + } + + // add `data` to the URL query string + if (getData() != null) { + joiner.add( + String.format( + "%sdata%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getData())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/BypassReasonEnum.java b/src/main/java/com/fireblocks/sdk/model/BypassReasonEnum.java new file mode 100644 index 00000000..3646ceff --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/BypassReasonEnum.java @@ -0,0 +1,95 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * Why a step's screening did not run. A verbatim mirror of the platform's + * `BypassReason` vocabulary, shared with the rest of Fireblocks screening. Only + * `PASSED_BY_POLICY` is an approval — the policy deliberately let the subject through. + * Every other value means the check could not be performed, and the step is rejected rather than + * passed. A bypass is not a pass. - `MANUAL` — a person bypassed it - + * `UNSUPPORTED_ASSET` — the provider does not screen this asset or chain - + * `UNSUPPORTED_ROUTE` — the provider does not screen this route - + * `PASSED_BY_POLICY` — a policy rule let it through without screening - + * `BYPASSED_FAILURE` — screening failed and policy allowed a bypass - + * `TIMED_OUT` — the provider did not answer within the deadline - + * `BAD_CREDENTIALS` — the tenant's provider credentials were rejected - + * `CONFIGURATION_ERROR` — the connector is misconfigured for this tenant - + * `DROPPED_BY_BLOCKCHAIN` — the transaction never confirmed - + * `PROCESS_DISMISSED` — the surrounding process was cancelled + */ +public enum BypassReasonEnum { + MANUAL("MANUAL"), + + UNSUPPORTED_ASSET("UNSUPPORTED_ASSET"), + + UNSUPPORTED_ROUTE("UNSUPPORTED_ROUTE"), + + PASSED_BY_POLICY("PASSED_BY_POLICY"), + + BYPASSED_FAILURE("BYPASSED_FAILURE"), + + TIMED_OUT("TIMED_OUT"), + + BAD_CREDENTIALS("BAD_CREDENTIALS"), + + CONFIGURATION_ERROR("CONFIGURATION_ERROR"), + + DROPPED_BY_BLOCKCHAIN("DROPPED_BY_BLOCKCHAIN"), + + PROCESS_DISMISSED("PROCESS_DISMISSED"); + + private String value; + + BypassReasonEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static BypassReasonEnum fromValue(String value) { + for (BypassReasonEnum b : BypassReasonEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + return null; + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ComplianceScreeningStatusEnum.java b/src/main/java/com/fireblocks/sdk/model/ComplianceScreeningStatusEnum.java new file mode 100644 index 00000000..86009115 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ComplianceScreeningStatusEnum.java @@ -0,0 +1,72 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * A screening's lifecycle status. - `PENDING` — accepted, not started - + * `RUNNING` — one or more steps in flight - `COMPLETED` — every step finished + * and the workflow outcome is set - `FAILED` — the screening could not be completed + */ +public enum ComplianceScreeningStatusEnum { + PENDING("PENDING"), + + RUNNING("RUNNING"), + + COMPLETED("COMPLETED"), + + FAILED("FAILED"); + + private String value; + + ComplianceScreeningStatusEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static ComplianceScreeningStatusEnum fromValue(String value) { + for (ComplianceScreeningStatusEnum b : ComplianceScreeningStatusEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ConnectorStatusEnum.java b/src/main/java/com/fireblocks/sdk/model/ConnectorStatusEnum.java new file mode 100644 index 00000000..e017cd6a --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ConnectorStatusEnum.java @@ -0,0 +1,73 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * The connector's own processing status for a step. - `COMPLETED` — the provider + * answered - `BYPASSED` — no provider call was made; see `bypassReason` - + * `FAILED` — the provider call did not succeed - `FROZEN` — the step is held + * pending manual action + */ +public enum ConnectorStatusEnum { + COMPLETED("COMPLETED"), + + BYPASSED("BYPASSED"), + + FAILED("FAILED"), + + FROZEN("FROZEN"); + + private String value; + + ConnectorStatusEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static ConnectorStatusEnum fromValue(String value) { + for (ConnectorStatusEnum b : ConnectorStatusEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + return null; + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ConnectorVerdictEnum.java b/src/main/java/com/fireblocks/sdk/model/ConnectorVerdictEnum.java new file mode 100644 index 00000000..984a6861 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ConnectorVerdictEnum.java @@ -0,0 +1,69 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * The connector's own verdict for a step, before the step's outcome rules are applied. + * `null` on a step that did not reach the provider. + */ +public enum ConnectorVerdictEnum { + ACCEPT("ACCEPT"), + + REJECT("REJECT"), + + ALERT("ALERT"); + + private String value; + + ConnectorVerdictEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static ConnectorVerdictEnum fromValue(String value) { + for (ConnectorVerdictEnum b : ConnectorVerdictEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + return null; + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/CreateWebhookOauthRequest.java b/src/main/java/com/fireblocks/sdk/model/CreateWebhookOauthRequest.java index 05915809..5ddcdd0f 100644 --- a/src/main/java/com/fireblocks/sdk/model/CreateWebhookOauthRequest.java +++ b/src/main/java/com/fireblocks/sdk/model/CreateWebhookOauthRequest.java @@ -304,12 +304,14 @@ public CreateWebhookOauthRequest putCustomHeadersItem(String key, String customH /** * Extra HTTP headers for **the token request to your authorization server** — not for the * webhook delivery, which has its own separate `customHeaders`. A gateway API key is - * the usual case. Applies to every authentication method. Values must be strings; an empty - * string is allowed. Names are matched case-insensitively, so two names differing only in case - * are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes - * back as `x-api-key`. `Content-Type`, `Content-Length` and - * `Host` are set by Fireblocks and cannot be overridden. `Authorization` is - * not sent when `authMethod` is `client_secret_basic`. Values have no + * the usual case. Values must be strings; an empty string is allowed. Names are matched + * case-insensitively, so two names differing only in case are a duplicate. Names are stored and + * returned lowercased, so `X-Api-Key` comes back as `x-api-key`. + * `Content-Type`, `Content-Length` and `Host` are set by + * Fireblocks and cannot be overridden. `Authorization` can be set with + * `client_secret_post` or `client_secret_jwt`, which send the credentials + * in the body — useful when your token endpoint sits behind a gateway. It is rejected with + * `client_secret_basic`, which sends the credentials in that header. Values have no * length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. * Values are write-only; responses return only the header names. On update this merges name by * name rather than replacing — see `WebhookOauthCustomHeadersUpdate`. diff --git a/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java b/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java index 54f7ae7d..2fec4969 100644 --- a/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java +++ b/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java @@ -204,7 +204,8 @@ public CreateWebhookRequest webhookOauthId(@jakarta.annotation.Nullable UUID web * The id of the OAuth credentials this webhook authenticates with, from * `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so * rotating its client secret covers all of them at once. Send `null` to stop using - * OAuth for this webhook. + * OAuth for this webhook. Cannot be combined with an `authorization` custom header on + * the same webhook; a request that would leave both set is rejected. * * @return webhookOauthId */ @@ -238,18 +239,19 @@ public CreateWebhookRequest putCustomHeadersItem(String key, Object customHeader /** * Custom HTTP headers attached to every notification delivered by this webhook. A value is a * string, sent as one header line, or an array of strings, sent as one header line per element - * under the same name. `Cookie` accepts only a string. An empty array is rejected — - * leave the name out instead. At most 10 header lines in total, counted per array element - * rather than per name. Names must be valid HTTP header tokens, are case-insensitive, and are - * at most 128 characters. A value may be empty and has no length limit of its own; the whole - * object must be under 16 KB when serialized as UTF-8. A value that large may still be refused - * by your own endpoint, since web servers commonly cap the whole request header block at around - * 8 KB. Reserved names: `Host`, `Content-Type`, `Content-Length`, - * `Transfer-Encoding`, `Connection`, `User-Agent`, - * `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, - * `Fireblocks-Webhook-Signature`. When this webhook has OAuth credentials attached, - * an `Authorization` value you set and the bearer token are both sent as separate - * header lines. Values are write-only; responses return only the header names. + * under the same name. `Cookie` and `Authorization` accept only a string. + * An empty array is rejected — leave the name out instead. At most 10 headers, counted by name + * — an array value counts once, however many lines it sends. Names must be valid HTTP header + * tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no + * length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A + * value that large may still be refused by your own endpoint, since web servers commonly cap + * the whole request header block at around 8 KB. Reserved names: `Host`, + * `Content-Type`, `Content-Length`, `Transfer-Encoding`, + * `Connection`, `User-Agent`, `Accept`, + * `Accept-Encoding`, `Fireblocks-Signature`, + * `Fireblocks-Webhook-Signature`. `Authorization` may be set, but not + * together with `webhookOauthId`; a request that would leave both set is rejected. + * Values are write-only; responses return only the header names. * * @return customHeaders */ diff --git a/src/main/java/com/fireblocks/sdk/model/GetScreeningResultResponse.java b/src/main/java/com/fireblocks/sdk/model/GetScreeningResultResponse.java new file mode 100644 index 00000000..bdd88871 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/GetScreeningResultResponse.java @@ -0,0 +1,401 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** The current status, outcome, per-step results, and audit log for a screening. */ +@JsonPropertyOrder({ + GetScreeningResultResponse.JSON_PROPERTY_SCREENING_ID, + GetScreeningResultResponse.JSON_PROPERTY_WORKFLOW_ID, + GetScreeningResultResponse.JSON_PROPERTY_SCREENING_STATUS, + GetScreeningResultResponse.JSON_PROPERTY_OUTCOME, + GetScreeningResultResponse.JSON_PROPERTY_STEPS, + GetScreeningResultResponse.JSON_PROPERTY_AUDIT_LOG +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class GetScreeningResultResponse { + public static final String JSON_PROPERTY_SCREENING_ID = "screeningId"; + @jakarta.annotation.Nonnull private String screeningId; + + public static final String JSON_PROPERTY_WORKFLOW_ID = "workflowId"; + @jakarta.annotation.Nonnull private String workflowId; + + public static final String JSON_PROPERTY_SCREENING_STATUS = "screeningStatus"; + @jakarta.annotation.Nonnull private ComplianceScreeningStatusEnum screeningStatus; + + public static final String JSON_PROPERTY_OUTCOME = "outcome"; + @jakarta.annotation.Nullable private ScreeningOutcomeEnum outcome; + + public static final String JSON_PROPERTY_STEPS = "steps"; + @jakarta.annotation.Nonnull private List steps; + + public static final String JSON_PROPERTY_AUDIT_LOG = "auditLog"; + @jakarta.annotation.Nonnull private List auditLog; + + public GetScreeningResultResponse() {} + + @JsonCreator + public GetScreeningResultResponse( + @JsonProperty(value = JSON_PROPERTY_SCREENING_ID, required = true) String screeningId, + @JsonProperty(value = JSON_PROPERTY_WORKFLOW_ID, required = true) String workflowId, + @JsonProperty(value = JSON_PROPERTY_SCREENING_STATUS, required = true) + ComplianceScreeningStatusEnum screeningStatus, + @JsonProperty(value = JSON_PROPERTY_STEPS, required = true) List steps, + @JsonProperty(value = JSON_PROPERTY_AUDIT_LOG, required = true) + List auditLog) { + this.screeningId = screeningId; + this.workflowId = workflowId; + this.screeningStatus = screeningStatus; + this.steps = steps; + this.auditLog = auditLog; + } + + public GetScreeningResultResponse screeningId(@jakarta.annotation.Nonnull String screeningId) { + this.screeningId = screeningId; + return this; + } + + /** + * Identifier of the screening being queried. + * + * @return screeningId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_SCREENING_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getScreeningId() { + return screeningId; + } + + @JsonProperty(JSON_PROPERTY_SCREENING_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setScreeningId(@jakarta.annotation.Nonnull String screeningId) { + this.screeningId = screeningId; + } + + public GetScreeningResultResponse workflowId(@jakarta.annotation.Nonnull String workflowId) { + this.workflowId = workflowId; + return this; + } + + /** + * Identifier of the workflow that produced this screening. + * + * @return workflowId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_WORKFLOW_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getWorkflowId() { + return workflowId; + } + + @JsonProperty(JSON_PROPERTY_WORKFLOW_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setWorkflowId(@jakarta.annotation.Nonnull String workflowId) { + this.workflowId = workflowId; + } + + public GetScreeningResultResponse screeningStatus( + @jakarta.annotation.Nonnull ComplianceScreeningStatusEnum screeningStatus) { + this.screeningStatus = screeningStatus; + return this; + } + + /** + * Get screeningStatus + * + * @return screeningStatus + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_SCREENING_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ComplianceScreeningStatusEnum getScreeningStatus() { + return screeningStatus; + } + + @JsonProperty(JSON_PROPERTY_SCREENING_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setScreeningStatus( + @jakarta.annotation.Nonnull ComplianceScreeningStatusEnum screeningStatus) { + this.screeningStatus = screeningStatus; + } + + public GetScreeningResultResponse outcome( + @jakarta.annotation.Nullable ScreeningOutcomeEnum outcome) { + this.outcome = outcome; + return this; + } + + /** + * Get outcome + * + * @return outcome + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_OUTCOME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ScreeningOutcomeEnum getOutcome() { + return outcome; + } + + @JsonProperty(JSON_PROPERTY_OUTCOME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOutcome(@jakarta.annotation.Nullable ScreeningOutcomeEnum outcome) { + this.outcome = outcome; + } + + public GetScreeningResultResponse steps(@jakarta.annotation.Nonnull List steps) { + this.steps = steps; + return this; + } + + public GetScreeningResultResponse addStepsItem(StepResult stepsItem) { + if (this.steps == null) { + this.steps = new ArrayList<>(); + } + this.steps.add(stepsItem); + return this; + } + + /** + * Flat step list. + * + * @return steps + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_STEPS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getSteps() { + return steps; + } + + @JsonProperty(JSON_PROPERTY_STEPS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setSteps(@jakarta.annotation.Nonnull List steps) { + this.steps = steps; + } + + public GetScreeningResultResponse auditLog( + @jakarta.annotation.Nonnull List auditLog) { + this.auditLog = auditLog; + return this; + } + + public GetScreeningResultResponse addAuditLogItem(AuditLogEntry auditLogItem) { + if (this.auditLog == null) { + this.auditLog = new ArrayList<>(); + } + this.auditLog.add(auditLogItem); + return this; + } + + /** + * Append-only audit trail for this screening. + * + * @return auditLog + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_AUDIT_LOG) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getAuditLog() { + return auditLog; + } + + @JsonProperty(JSON_PROPERTY_AUDIT_LOG) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setAuditLog(@jakarta.annotation.Nonnull List auditLog) { + this.auditLog = auditLog; + } + + /** Return true if this GetScreeningResultResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GetScreeningResultResponse getScreeningResultResponse = (GetScreeningResultResponse) o; + return Objects.equals(this.screeningId, getScreeningResultResponse.screeningId) + && Objects.equals(this.workflowId, getScreeningResultResponse.workflowId) + && Objects.equals(this.screeningStatus, getScreeningResultResponse.screeningStatus) + && Objects.equals(this.outcome, getScreeningResultResponse.outcome) + && Objects.equals(this.steps, getScreeningResultResponse.steps) + && Objects.equals(this.auditLog, getScreeningResultResponse.auditLog); + } + + @Override + public int hashCode() { + return Objects.hash(screeningId, workflowId, screeningStatus, outcome, steps, auditLog); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class GetScreeningResultResponse {\n"); + sb.append(" screeningId: ").append(toIndentedString(screeningId)).append("\n"); + sb.append(" workflowId: ").append(toIndentedString(workflowId)).append("\n"); + sb.append(" screeningStatus: ").append(toIndentedString(screeningStatus)).append("\n"); + sb.append(" outcome: ").append(toIndentedString(outcome)).append("\n"); + sb.append(" steps: ").append(toIndentedString(steps)).append("\n"); + sb.append(" auditLog: ").append(toIndentedString(auditLog)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `screeningId` to the URL query string + if (getScreeningId() != null) { + joiner.add( + String.format( + "%sscreeningId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getScreeningId())))); + } + + // add `workflowId` to the URL query string + if (getWorkflowId() != null) { + joiner.add( + String.format( + "%sworkflowId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getWorkflowId())))); + } + + // add `screeningStatus` to the URL query string + if (getScreeningStatus() != null) { + joiner.add( + String.format( + "%sscreeningStatus%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getScreeningStatus())))); + } + + // add `outcome` to the URL query string + if (getOutcome() != null) { + joiner.add( + String.format( + "%soutcome%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getOutcome())))); + } + + // add `steps` to the URL query string + if (getSteps() != null) { + for (int i = 0; i < getSteps().size(); i++) { + if (getSteps().get(i) != null) { + joiner.add( + getSteps() + .get(i) + .toUrlQueryString( + String.format( + "%ssteps%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `auditLog` to the URL query string + if (getAuditLog() != null) { + for (int i = 0; i < getAuditLog().size(); i++) { + if (getAuditLog().get(i) != null) { + joiner.add( + getAuditLog() + .get(i) + .toUrlQueryString( + String.format( + "%sauditLog%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/GetWorkflowResponse.java b/src/main/java/com/fireblocks/sdk/model/GetWorkflowResponse.java new file mode 100644 index 00000000..3c2c8f58 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/GetWorkflowResponse.java @@ -0,0 +1,419 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** + * A workflow's current definition, including its steps and each step's rule sets. A + * workflow is the configuration a screening runs against: an ordered list of steps, each backed by + * one connector. It must be `ACTIVE` before a screening will accept it — + * `DRAFT` is the editing state, so a screening never runs against a half-finished + * configuration. + */ +@JsonPropertyOrder({ + GetWorkflowResponse.JSON_PROPERTY_WORKFLOW_ID, + GetWorkflowResponse.JSON_PROPERTY_TEMPLATE_ID, + GetWorkflowResponse.JSON_PROPERTY_STATUS, + GetWorkflowResponse.JSON_PROPERTY_TITLE, + GetWorkflowResponse.JSON_PROPERTY_DESCRIPTION, + GetWorkflowResponse.JSON_PROPERTY_CREATED_AT, + GetWorkflowResponse.JSON_PROPERTY_STEPS +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class GetWorkflowResponse { + public static final String JSON_PROPERTY_WORKFLOW_ID = "workflowId"; + @jakarta.annotation.Nonnull private String workflowId; + + public static final String JSON_PROPERTY_TEMPLATE_ID = "templateId"; + @jakarta.annotation.Nullable private String templateId; + + public static final String JSON_PROPERTY_STATUS = "status"; + @jakarta.annotation.Nonnull private WorkflowStatusEnum status; + + public static final String JSON_PROPERTY_TITLE = "title"; + @jakarta.annotation.Nonnull private String title; + + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + @jakarta.annotation.Nullable private String description; + + public static final String JSON_PROPERTY_CREATED_AT = "createdAt"; + @jakarta.annotation.Nonnull private String createdAt; + + public static final String JSON_PROPERTY_STEPS = "steps"; + @jakarta.annotation.Nonnull private List steps; + + public GetWorkflowResponse() {} + + @JsonCreator + public GetWorkflowResponse( + @JsonProperty(value = JSON_PROPERTY_WORKFLOW_ID, required = true) String workflowId, + @JsonProperty(value = JSON_PROPERTY_STATUS, required = true) WorkflowStatusEnum status, + @JsonProperty(value = JSON_PROPERTY_TITLE, required = true) String title, + @JsonProperty(value = JSON_PROPERTY_CREATED_AT, required = true) String createdAt, + @JsonProperty(value = JSON_PROPERTY_STEPS, required = true) List steps) { + this.workflowId = workflowId; + this.status = status; + this.title = title; + this.createdAt = createdAt; + this.steps = steps; + } + + public GetWorkflowResponse workflowId(@jakarta.annotation.Nonnull String workflowId) { + this.workflowId = workflowId; + return this; + } + + /** + * Unique identifier of the workflow. + * + * @return workflowId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_WORKFLOW_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getWorkflowId() { + return workflowId; + } + + @JsonProperty(JSON_PROPERTY_WORKFLOW_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setWorkflowId(@jakarta.annotation.Nonnull String workflowId) { + this.workflowId = workflowId; + } + + public GetWorkflowResponse templateId(@jakarta.annotation.Nullable String templateId) { + this.templateId = templateId; + return this; + } + + /** + * The template this workflow was provisioned from, if any. + * + * @return templateId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TEMPLATE_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTemplateId() { + return templateId; + } + + @JsonProperty(JSON_PROPERTY_TEMPLATE_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTemplateId(@jakarta.annotation.Nullable String templateId) { + this.templateId = templateId; + } + + public GetWorkflowResponse status(@jakarta.annotation.Nonnull WorkflowStatusEnum status) { + this.status = status; + return this; + } + + /** + * Get status + * + * @return status + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WorkflowStatusEnum getStatus() { + return status; + } + + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setStatus(@jakarta.annotation.Nonnull WorkflowStatusEnum status) { + this.status = status; + } + + public GetWorkflowResponse title(@jakarta.annotation.Nonnull String title) { + this.title = title; + return this; + } + + /** + * User-facing display name for the workflow. + * + * @return title + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_TITLE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getTitle() { + return title; + } + + @JsonProperty(JSON_PROPERTY_TITLE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setTitle(@jakarta.annotation.Nonnull String title) { + this.title = title; + } + + public GetWorkflowResponse description(@jakarta.annotation.Nullable String description) { + this.description = description; + return this; + } + + /** + * User-facing free-text description of the workflow's purpose. + * + * @return description + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDescription() { + return description; + } + + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDescription(@jakarta.annotation.Nullable String description) { + this.description = description; + } + + public GetWorkflowResponse createdAt(@jakarta.annotation.Nonnull String createdAt) { + this.createdAt = createdAt; + return this; + } + + /** + * Unix timestamp in seconds when the workflow was provisioned, encoded as a string. + * + * @return createdAt + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_CREATED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getCreatedAt() { + return createdAt; + } + + @JsonProperty(JSON_PROPERTY_CREATED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setCreatedAt(@jakarta.annotation.Nonnull String createdAt) { + this.createdAt = createdAt; + } + + public GetWorkflowResponse steps(@jakarta.annotation.Nonnull List steps) { + this.steps = steps; + return this; + } + + public GetWorkflowResponse addStepsItem(StepConfig stepsItem) { + if (this.steps == null) { + this.steps = new ArrayList<>(); + } + this.steps.add(stepsItem); + return this; + } + + /** + * Flat list — one step per connector. + * + * @return steps + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_STEPS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getSteps() { + return steps; + } + + @JsonProperty(JSON_PROPERTY_STEPS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setSteps(@jakarta.annotation.Nonnull List steps) { + this.steps = steps; + } + + /** Return true if this GetWorkflowResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GetWorkflowResponse getWorkflowResponse = (GetWorkflowResponse) o; + return Objects.equals(this.workflowId, getWorkflowResponse.workflowId) + && Objects.equals(this.templateId, getWorkflowResponse.templateId) + && Objects.equals(this.status, getWorkflowResponse.status) + && Objects.equals(this.title, getWorkflowResponse.title) + && Objects.equals(this.description, getWorkflowResponse.description) + && Objects.equals(this.createdAt, getWorkflowResponse.createdAt) + && Objects.equals(this.steps, getWorkflowResponse.steps); + } + + @Override + public int hashCode() { + return Objects.hash(workflowId, templateId, status, title, description, createdAt, steps); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class GetWorkflowResponse {\n"); + sb.append(" workflowId: ").append(toIndentedString(workflowId)).append("\n"); + sb.append(" templateId: ").append(toIndentedString(templateId)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" title: ").append(toIndentedString(title)).append("\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n"); + sb.append(" steps: ").append(toIndentedString(steps)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `workflowId` to the URL query string + if (getWorkflowId() != null) { + joiner.add( + String.format( + "%sworkflowId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getWorkflowId())))); + } + + // add `templateId` to the URL query string + if (getTemplateId() != null) { + joiner.add( + String.format( + "%stemplateId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTemplateId())))); + } + + // add `status` to the URL query string + if (getStatus() != null) { + joiner.add( + String.format( + "%sstatus%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getStatus())))); + } + + // add `title` to the URL query string + if (getTitle() != null) { + joiner.add( + String.format( + "%stitle%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTitle())))); + } + + // add `description` to the URL query string + if (getDescription() != null) { + joiner.add( + String.format( + "%sdescription%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getDescription())))); + } + + // add `createdAt` to the URL query string + if (getCreatedAt() != null) { + joiner.add( + String.format( + "%screatedAt%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getCreatedAt())))); + } + + // add `steps` to the URL query string + if (getSteps() != null) { + for (int i = 0; i < getSteps().size(); i++) { + if (getSteps().get(i) != null) { + joiner.add( + getSteps() + .get(i) + .toUrlQueryString( + String.format( + "%ssteps%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/InternalTransferResponse.java b/src/main/java/com/fireblocks/sdk/model/InternalTransferResponse.java index 858a9f04..a943e125 100644 --- a/src/main/java/com/fireblocks/sdk/model/InternalTransferResponse.java +++ b/src/main/java/com/fireblocks/sdk/model/InternalTransferResponse.java @@ -18,13 +18,17 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fireblocks.sdk.ApiClient; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import java.util.StringJoiner; /** InternalTransferResponse */ @JsonPropertyOrder({ InternalTransferResponse.JSON_PROPERTY_SUCCESS, - InternalTransferResponse.JSON_PROPERTY_ID + InternalTransferResponse.JSON_PROPERTY_ID, + InternalTransferResponse.JSON_PROPERTY_STATUS, + InternalTransferResponse.JSON_PROPERTY_SYSTEM_MESSAGES }) @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", @@ -36,6 +40,12 @@ public class InternalTransferResponse { public static final String JSON_PROPERTY_ID = "id"; @jakarta.annotation.Nullable private String id; + public static final String JSON_PROPERTY_STATUS = "status"; + @jakarta.annotation.Nullable private String status; + + public static final String JSON_PROPERTY_SYSTEM_MESSAGES = "systemMessages"; + @jakarta.annotation.Nullable private List systemMessages; + public InternalTransferResponse() {} @JsonCreator @@ -90,6 +100,64 @@ public void setId(@jakarta.annotation.Nullable String id) { this.id = id; } + public InternalTransferResponse status(@jakarta.annotation.Nullable String status) { + this.status = status; + return this; + } + + /** + * The transfer status returned by the transaction manager. Only present when the transfer was + * processed via the transaction manager flow. + * + * @return status + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getStatus() { + return status; + } + + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setStatus(@jakarta.annotation.Nullable String status) { + this.status = status; + } + + public InternalTransferResponse systemMessages( + @jakarta.annotation.Nullable List systemMessages) { + this.systemMessages = systemMessages; + return this; + } + + public InternalTransferResponse addSystemMessagesItem(SystemMessageInfo systemMessagesItem) { + if (this.systemMessages == null) { + this.systemMessages = new ArrayList<>(); + } + this.systemMessages.add(systemMessagesItem); + return this; + } + + /** + * System messages returned by the transaction manager about the health of the transfer being + * performed. Only present when the transfer was processed via the transaction manager flow. + * + * @return systemMessages + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SYSTEM_MESSAGES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getSystemMessages() { + return systemMessages; + } + + @JsonProperty(JSON_PROPERTY_SYSTEM_MESSAGES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setSystemMessages( + @jakarta.annotation.Nullable List systemMessages) { + this.systemMessages = systemMessages; + } + /** Return true if this InternalTransferResponse object is equal to o. */ @Override public boolean equals(Object o) { @@ -101,12 +169,14 @@ public boolean equals(Object o) { } InternalTransferResponse internalTransferResponse = (InternalTransferResponse) o; return Objects.equals(this.success, internalTransferResponse.success) - && Objects.equals(this.id, internalTransferResponse.id); + && Objects.equals(this.id, internalTransferResponse.id) + && Objects.equals(this.status, internalTransferResponse.status) + && Objects.equals(this.systemMessages, internalTransferResponse.systemMessages); } @Override public int hashCode() { - return Objects.hash(success, id); + return Objects.hash(success, id, status, systemMessages); } @Override @@ -115,6 +185,8 @@ public String toString() { sb.append("class InternalTransferResponse {\n"); sb.append(" success: ").append(toIndentedString(success)).append("\n"); sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" systemMessages: ").append(toIndentedString(systemMessages)).append("\n"); sb.append("}"); return sb.toString(); } @@ -180,6 +252,39 @@ public String toUrlQueryString(String prefix) { prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getId())))); } + // add `status` to the URL query string + if (getStatus() != null) { + joiner.add( + String.format( + "%sstatus%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getStatus())))); + } + + // add `systemMessages` to the URL query string + if (getSystemMessages() != null) { + for (int i = 0; i < getSystemMessages().size(); i++) { + if (getSystemMessages().get(i) != null) { + joiner.add( + getSystemMessages() + .get(i) + .toUrlQueryString( + String.format( + "%ssystemMessages%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + return joiner.toString(); } } diff --git a/src/main/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponse.java b/src/main/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponse.java new file mode 100644 index 00000000..255615ac --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponse.java @@ -0,0 +1,211 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** The approval API keys registered for the API user. */ +@JsonPropertyOrder({ + ListApprovalApiKeysResponse.JSON_PROPERTY_DATA, + ListApprovalApiKeysResponse.JSON_PROPERTY_NEXT +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class ListApprovalApiKeysResponse { + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private List data; + + public static final String JSON_PROPERTY_NEXT = "next"; + @jakarta.annotation.Nullable private String next; + + public ListApprovalApiKeysResponse() {} + + @JsonCreator + public ListApprovalApiKeysResponse( + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) List data) { + this.data = data; + } + + public ListApprovalApiKeysResponse data(@jakarta.annotation.Nonnull List data) { + this.data = data; + return this; + } + + public ListApprovalApiKeysResponse addDataItem(ApprovalApiKey dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + return this; + } + + /** + * The registered approval API keys. + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull List data) { + this.data = data; + } + + public ListApprovalApiKeysResponse next(@jakarta.annotation.Nullable String next) { + this.next = next; + return this; + } + + /** + * Cursor for the next page of results. Pass it back as the `pageCursor` query param + * to fetch the next page. Empty or absent when this is the last page. + * + * @return next + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNext() { + return next; + } + + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setNext(@jakarta.annotation.Nullable String next) { + this.next = next; + } + + /** Return true if this ListApprovalApiKeysResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ListApprovalApiKeysResponse listApprovalApiKeysResponse = (ListApprovalApiKeysResponse) o; + return Objects.equals(this.data, listApprovalApiKeysResponse.data) + && Objects.equals(this.next, listApprovalApiKeysResponse.next); + } + + @Override + public int hashCode() { + return Objects.hash(data, next); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ListApprovalApiKeysResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" next: ").append(toIndentedString(next)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `data` to the URL query string + if (getData() != null) { + for (int i = 0; i < getData().size(); i++) { + if (getData().get(i) != null) { + joiner.add( + getData() + .get(i) + .toUrlQueryString( + String.format( + "%sdata%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `next` to the URL query string + if (getNext() != null) { + joiner.add( + String.format( + "%snext%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getNext())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ParameterWithValue.java b/src/main/java/com/fireblocks/sdk/model/ParameterWithValue.java index 975fe574..5cdcd3a1 100644 --- a/src/main/java/com/fireblocks/sdk/model/ParameterWithValue.java +++ b/src/main/java/com/fireblocks/sdk/model/ParameterWithValue.java @@ -53,7 +53,7 @@ public class ParameterWithValue { @jakarta.annotation.Nullable private List components; public static final String JSON_PROPERTY_VALUE = "value"; - @jakarta.annotation.Nullable private String value; + @jakarta.annotation.Nullable private Object value = null; public static final String JSON_PROPERTY_FUNCTION_VALUE = "functionValue"; @jakarta.annotation.Nullable private LeanAbiFunction functionValue; @@ -191,26 +191,30 @@ public void setComponents(@jakarta.annotation.Nullable List component this.components = components; } - public ParameterWithValue value(@jakarta.annotation.Nullable String value) { + public ParameterWithValue value(@jakarta.annotation.Nullable Object value) { this.value = value; return this; } /** - * The value of the parameter. can also be ParameterWithValue + * The value of the parameter. The shape follows the ABI `type`: a string for + * `string`/`address`/`bytes*`, a number for + * `uint*`/`int*`, a boolean for `bool`, an array for + * `T[]`, and for `tuple` an array of nested ParameterWithValue objects (one + * per entry in `components`, in ABI order). * * @return value */ @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_VALUE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getValue() { + public Object getValue() { return value; } @JsonProperty(JSON_PROPERTY_VALUE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setValue(@jakarta.annotation.Nullable String value) { + public void setValue(@jakarta.annotation.Nullable Object value) { this.value = value; } diff --git a/src/main/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyRequest.java b/src/main/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyRequest.java new file mode 100644 index 00000000..e6c4dda9 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyRequest.java @@ -0,0 +1,194 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.Objects; +import java.util.StringJoiner; + +/** The approval API key to register. */ +@JsonPropertyOrder({ + RegisterApprovalApiKeyRequest.JSON_PROPERTY_NAME, + RegisterApprovalApiKeyRequest.JSON_PROPERTY_APPROVAL_API_PUBLIC_KEY +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class RegisterApprovalApiKeyRequest { + public static final String JSON_PROPERTY_NAME = "name"; + @jakarta.annotation.Nonnull private String name; + + public static final String JSON_PROPERTY_APPROVAL_API_PUBLIC_KEY = "approvalApiPublicKey"; + @jakarta.annotation.Nonnull private ApprovalApiPublicKey approvalApiPublicKey; + + public RegisterApprovalApiKeyRequest() {} + + @JsonCreator + public RegisterApprovalApiKeyRequest( + @JsonProperty(value = JSON_PROPERTY_NAME, required = true) String name, + @JsonProperty(value = JSON_PROPERTY_APPROVAL_API_PUBLIC_KEY, required = true) + ApprovalApiPublicKey approvalApiPublicKey) { + this.name = name; + this.approvalApiPublicKey = approvalApiPublicKey; + } + + public RegisterApprovalApiKeyRequest name(@jakarta.annotation.Nonnull String name) { + this.name = name; + return this; + } + + /** + * A human-readable label for the key. + * + * @return name + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getName() { + return name; + } + + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setName(@jakarta.annotation.Nonnull String name) { + this.name = name; + } + + public RegisterApprovalApiKeyRequest approvalApiPublicKey( + @jakarta.annotation.Nonnull ApprovalApiPublicKey approvalApiPublicKey) { + this.approvalApiPublicKey = approvalApiPublicKey; + return this; + } + + /** + * Get approvalApiPublicKey + * + * @return approvalApiPublicKey + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_APPROVAL_API_PUBLIC_KEY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ApprovalApiPublicKey getApprovalApiPublicKey() { + return approvalApiPublicKey; + } + + @JsonProperty(JSON_PROPERTY_APPROVAL_API_PUBLIC_KEY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setApprovalApiPublicKey( + @jakarta.annotation.Nonnull ApprovalApiPublicKey approvalApiPublicKey) { + this.approvalApiPublicKey = approvalApiPublicKey; + } + + /** Return true if this RegisterApprovalApiKeyRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RegisterApprovalApiKeyRequest registerApprovalApiKeyRequest = + (RegisterApprovalApiKeyRequest) o; + return Objects.equals(this.name, registerApprovalApiKeyRequest.name) + && Objects.equals( + this.approvalApiPublicKey, + registerApprovalApiKeyRequest.approvalApiPublicKey); + } + + @Override + public int hashCode() { + return Objects.hash(name, approvalApiPublicKey); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RegisterApprovalApiKeyRequest {\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" approvalApiPublicKey: ") + .append(toIndentedString(approvalApiPublicKey)) + .append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `name` to the URL query string + if (getName() != null) { + joiner.add( + String.format( + "%sname%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getName())))); + } + + // add `approvalApiPublicKey` to the URL query string + if (getApprovalApiPublicKey() != null) { + joiner.add( + getApprovalApiPublicKey() + .toUrlQueryString(prefix + "approvalApiPublicKey" + suffix)); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyResponse.java b/src/main/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyResponse.java new file mode 100644 index 00000000..807460d4 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyResponse.java @@ -0,0 +1,147 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.Objects; +import java.util.StringJoiner; + +/** The result of registering an approval API key. */ +@JsonPropertyOrder({RegisterApprovalApiKeyResponse.JSON_PROPERTY_KEY_ID}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class RegisterApprovalApiKeyResponse { + public static final String JSON_PROPERTY_KEY_ID = "keyId"; + @jakarta.annotation.Nonnull private String keyId; + + public RegisterApprovalApiKeyResponse() {} + + @JsonCreator + public RegisterApprovalApiKeyResponse( + @JsonProperty(value = JSON_PROPERTY_KEY_ID, required = true) String keyId) { + this.keyId = keyId; + } + + public RegisterApprovalApiKeyResponse keyId(@jakarta.annotation.Nonnull String keyId) { + this.keyId = keyId; + return this; + } + + /** + * The server-generated ID of the registered key, used for deletion. + * + * @return keyId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_KEY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getKeyId() { + return keyId; + } + + @JsonProperty(JSON_PROPERTY_KEY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setKeyId(@jakarta.annotation.Nonnull String keyId) { + this.keyId = keyId; + } + + /** Return true if this RegisterApprovalApiKeyResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RegisterApprovalApiKeyResponse registerApprovalApiKeyResponse = + (RegisterApprovalApiKeyResponse) o; + return Objects.equals(this.keyId, registerApprovalApiKeyResponse.keyId); + } + + @Override + public int hashCode() { + return Objects.hash(keyId); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RegisterApprovalApiKeyResponse {\n"); + sb.append(" keyId: ").append(toIndentedString(keyId)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `keyId` to the URL query string + if (getKeyId() != null) { + joiner.add( + String.format( + "%skeyId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getKeyId())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/RiskLevelEnum.java b/src/main/java/com/fireblocks/sdk/model/RiskLevelEnum.java new file mode 100644 index 00000000..029d979e --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/RiskLevelEnum.java @@ -0,0 +1,73 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * The provider's risk assessment for a step, normalised across connectors. `null` on + * a step that did not reach the provider — the absence of a risk level is not the same as low risk. + */ +public enum RiskLevelEnum { + SEVERE("SEVERE"), + + HIGH("HIGH"), + + MEDIUM("MEDIUM"), + + LOW("LOW"), + + UNKNOWN("UNKNOWN"); + + private String value; + + RiskLevelEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static RiskLevelEnum fromValue(String value) { + for (RiskLevelEnum b : RiskLevelEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + return null; + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/Rule.java b/src/main/java/com/fireblocks/sdk/model/Rule.java new file mode 100644 index 00000000..67ffa195 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/Rule.java @@ -0,0 +1,323 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** + * A single rule within a rule set. The first rule whose conditions match wins, and its + * `ruleAction` is applied. + */ +@JsonPropertyOrder({ + Rule.JSON_PROPERTY_RULE_ID, + Rule.JSON_PROPERTY_CONDITIONS, + Rule.JSON_PROPERTY_RULE_ACTION, + Rule.JSON_PROPERTY_ORDER, + Rule.JSON_PROPERTY_TITLE +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class Rule { + public static final String JSON_PROPERTY_RULE_ID = "ruleId"; + @jakarta.annotation.Nullable private String ruleId; + + public static final String JSON_PROPERTY_CONDITIONS = "conditions"; + @jakarta.annotation.Nullable private List conditions; + + public static final String JSON_PROPERTY_RULE_ACTION = "ruleAction"; + @jakarta.annotation.Nullable private RuleActionEnum ruleAction; + + public static final String JSON_PROPERTY_ORDER = "order"; + @jakarta.annotation.Nullable private Integer order; + + public static final String JSON_PROPERTY_TITLE = "title"; + @jakarta.annotation.Nullable private String title; + + public Rule() {} + + public Rule ruleId(@jakarta.annotation.Nullable String ruleId) { + this.ruleId = ruleId; + return this; + } + + /** + * UUID, unique within the rule set. + * + * @return ruleId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RULE_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getRuleId() { + return ruleId; + } + + @JsonProperty(JSON_PROPERTY_RULE_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setRuleId(@jakarta.annotation.Nullable String ruleId) { + this.ruleId = ruleId; + } + + public Rule conditions(@jakarta.annotation.Nullable List conditions) { + this.conditions = conditions; + return this; + } + + public Rule addConditionsItem(RuleCondition conditionsItem) { + if (this.conditions == null) { + this.conditions = new ArrayList<>(); + } + this.conditions.add(conditionsItem); + return this; + } + + /** + * Conditions AND-ed together within this rule. + * + * @return conditions + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CONDITIONS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getConditions() { + return conditions; + } + + @JsonProperty(JSON_PROPERTY_CONDITIONS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setConditions(@jakarta.annotation.Nullable List conditions) { + this.conditions = conditions; + } + + public Rule ruleAction(@jakarta.annotation.Nullable RuleActionEnum ruleAction) { + this.ruleAction = ruleAction; + return this; + } + + /** + * Get ruleAction + * + * @return ruleAction + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RULE_ACTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RuleActionEnum getRuleAction() { + return ruleAction; + } + + @JsonProperty(JSON_PROPERTY_RULE_ACTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setRuleAction(@jakarta.annotation.Nullable RuleActionEnum ruleAction) { + this.ruleAction = ruleAction; + } + + public Rule order(@jakarta.annotation.Nullable Integer order) { + this.order = order; + return this; + } + + /** + * Zero-based evaluation order among the rule set's rules, lowest first. + * + * @return order + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ORDER) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Integer getOrder() { + return order; + } + + @JsonProperty(JSON_PROPERTY_ORDER) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOrder(@jakarta.annotation.Nullable Integer order) { + this.order = order; + } + + public Rule title(@jakarta.annotation.Nullable String title) { + this.title = title; + return this; + } + + /** + * User-facing label for the rule. Cosmetic only — not read by rule evaluation. + * + * @return title + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTitle() { + return title; + } + + @JsonProperty(JSON_PROPERTY_TITLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTitle(@jakarta.annotation.Nullable String title) { + this.title = title; + } + + /** Return true if this Rule object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Rule rule = (Rule) o; + return Objects.equals(this.ruleId, rule.ruleId) + && Objects.equals(this.conditions, rule.conditions) + && Objects.equals(this.ruleAction, rule.ruleAction) + && Objects.equals(this.order, rule.order) + && Objects.equals(this.title, rule.title); + } + + @Override + public int hashCode() { + return Objects.hash(ruleId, conditions, ruleAction, order, title); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Rule {\n"); + sb.append(" ruleId: ").append(toIndentedString(ruleId)).append("\n"); + sb.append(" conditions: ").append(toIndentedString(conditions)).append("\n"); + sb.append(" ruleAction: ").append(toIndentedString(ruleAction)).append("\n"); + sb.append(" order: ").append(toIndentedString(order)).append("\n"); + sb.append(" title: ").append(toIndentedString(title)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `ruleId` to the URL query string + if (getRuleId() != null) { + joiner.add( + String.format( + "%sruleId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getRuleId())))); + } + + // add `conditions` to the URL query string + if (getConditions() != null) { + for (int i = 0; i < getConditions().size(); i++) { + if (getConditions().get(i) != null) { + joiner.add( + getConditions() + .get(i) + .toUrlQueryString( + String.format( + "%sconditions%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `ruleAction` to the URL query string + if (getRuleAction() != null) { + joiner.add( + String.format( + "%sruleAction%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getRuleAction())))); + } + + // add `order` to the URL query string + if (getOrder() != null) { + joiner.add( + String.format( + "%sorder%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getOrder())))); + } + + // add `title` to the URL query string + if (getTitle() != null) { + joiner.add( + String.format( + "%stitle%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTitle())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/RuleActionEnum.java b/src/main/java/com/fireblocks/sdk/model/RuleActionEnum.java new file mode 100644 index 00000000..36bf705f --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/RuleActionEnum.java @@ -0,0 +1,84 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * What happens when a rule matches. Which values are legal depends on the rule set the rule belongs + * to — a trigger rule decides whether to screen, an outcome rule decides what the answer means. The + * enum is the union of both sets, so neither set accepts all of its values: `FREEZE` is + * the one value shared by the two, and every other value belongs to exactly one of them. Trigger + * rules: - `SCREEN` — call the connector - `PASS` — let the subject through + * without screening - `FREEZE` — hold for manual action Outcome rules: - + * `ACCEPT` — the step passes - `REJECT` — the step fails - `ALERT` — + * the step passes but is flagged for review - `FREEZE` — hold for manual action - + * `WAIT` — come back later; refused once the deadline has passed + */ +public enum RuleActionEnum { + SCREEN("SCREEN"), + + PASS("PASS"), + + FREEZE("FREEZE"), + + ACCEPT("ACCEPT"), + + REJECT("REJECT"), + + ALERT("ALERT"), + + WAIT("WAIT"); + + private String value; + + RuleActionEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static RuleActionEnum fromValue(String value) { + for (RuleActionEnum b : RuleActionEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/RuleCondition.java b/src/main/java/com/fireblocks/sdk/model/RuleCondition.java new file mode 100644 index 00000000..7eac2720 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/RuleCondition.java @@ -0,0 +1,232 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.Objects; +import java.util.StringJoiner; + +/** A single condition within a rule. Conditions within a rule are AND-ed together. */ +@JsonPropertyOrder({ + RuleCondition.JSON_PROPERTY_FIELD, + RuleCondition.JSON_PROPERTY_OPERATOR, + RuleCondition.JSON_PROPERTY_VALUE +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class RuleCondition { + public static final String JSON_PROPERTY_FIELD = "field"; + @jakarta.annotation.Nonnull private String field; + + public static final String JSON_PROPERTY_OPERATOR = "operator"; + @jakarta.annotation.Nonnull private RuleConditionOperatorEnum operator; + + public static final String JSON_PROPERTY_VALUE = "value"; + @jakarta.annotation.Nonnull private String value; + + public RuleCondition() {} + + @JsonCreator + public RuleCondition( + @JsonProperty(value = JSON_PROPERTY_FIELD, required = true) String field, + @JsonProperty(value = JSON_PROPERTY_OPERATOR, required = true) + RuleConditionOperatorEnum operator, + @JsonProperty(value = JSON_PROPERTY_VALUE, required = true) String value) { + this.field = field; + this.operator = operator; + this.value = value; + } + + public RuleCondition field(@jakarta.annotation.Nonnull String field) { + this.field = field; + return this; + } + + /** + * The input context field this condition tests. Allowed values depend on the rule set type + * (trigger vs. outcome) and the step's connector/operation. + * + * @return field + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_FIELD) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getField() { + return field; + } + + @JsonProperty(JSON_PROPERTY_FIELD) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setField(@jakarta.annotation.Nonnull String field) { + this.field = field; + } + + public RuleCondition operator(@jakarta.annotation.Nonnull RuleConditionOperatorEnum operator) { + this.operator = operator; + return this; + } + + /** + * Get operator + * + * @return operator + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_OPERATOR) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public RuleConditionOperatorEnum getOperator() { + return operator; + } + + @JsonProperty(JSON_PROPERTY_OPERATOR) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setOperator(@jakarta.annotation.Nonnull RuleConditionOperatorEnum operator) { + this.operator = operator; + } + + public RuleCondition value(@jakarta.annotation.Nonnull String value) { + this.value = value; + return this; + } + + /** + * The value `field` is compared against, using `operator`. + * + * @return value + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_VALUE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getValue() { + return value; + } + + @JsonProperty(JSON_PROPERTY_VALUE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setValue(@jakarta.annotation.Nonnull String value) { + this.value = value; + } + + /** Return true if this RuleCondition object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RuleCondition ruleCondition = (RuleCondition) o; + return Objects.equals(this.field, ruleCondition.field) + && Objects.equals(this.operator, ruleCondition.operator) + && Objects.equals(this.value, ruleCondition.value); + } + + @Override + public int hashCode() { + return Objects.hash(field, operator, value); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RuleCondition {\n"); + sb.append(" field: ").append(toIndentedString(field)).append("\n"); + sb.append(" operator: ").append(toIndentedString(operator)).append("\n"); + sb.append(" value: ").append(toIndentedString(value)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `field` to the URL query string + if (getField() != null) { + joiner.add( + String.format( + "%sfield%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getField())))); + } + + // add `operator` to the URL query string + if (getOperator() != null) { + joiner.add( + String.format( + "%soperator%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getOperator())))); + } + + // add `value` to the URL query string + if (getValue() != null) { + joiner.add( + String.format( + "%svalue%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getValue())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/RuleConditionOperatorEnum.java b/src/main/java/com/fireblocks/sdk/model/RuleConditionOperatorEnum.java new file mode 100644 index 00000000..471f03e0 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/RuleConditionOperatorEnum.java @@ -0,0 +1,75 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * The comparison applied between a rule condition's `field` and its + * `value`. + */ +public enum RuleConditionOperatorEnum { + EQUALS("EQUALS"), + + NOT_EQUALS("NOT_EQUALS"), + + GT("GT"), + + GTE("GTE"), + + LT("LT"), + + LTE("LTE"); + + private String value; + + RuleConditionOperatorEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static RuleConditionOperatorEnum fromValue(String value) { + for (RuleConditionOperatorEnum b : RuleConditionOperatorEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/RuleSet.java b/src/main/java/com/fireblocks/sdk/model/RuleSet.java new file mode 100644 index 00000000..da8c5425 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/RuleSet.java @@ -0,0 +1,163 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** + * An ordered set of rules. Rules are evaluated top to bottom, and the first one that matches wins. + */ +@JsonPropertyOrder({RuleSet.JSON_PROPERTY_RULES}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class RuleSet { + public static final String JSON_PROPERTY_RULES = "rules"; + @jakarta.annotation.Nullable private List rules; + + public RuleSet() {} + + public RuleSet rules(@jakarta.annotation.Nullable List rules) { + this.rules = rules; + return this; + } + + public RuleSet addRulesItem(Rule rulesItem) { + if (this.rules == null) { + this.rules = new ArrayList<>(); + } + this.rules.add(rulesItem); + return this; + } + + /** + * Ordered rule list, evaluated top to bottom; the first match wins. + * + * @return rules + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RULES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getRules() { + return rules; + } + + @JsonProperty(JSON_PROPERTY_RULES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setRules(@jakarta.annotation.Nullable List rules) { + this.rules = rules; + } + + /** Return true if this RuleSet object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RuleSet ruleSet = (RuleSet) o; + return Objects.equals(this.rules, ruleSet.rules); + } + + @Override + public int hashCode() { + return Objects.hash(rules); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RuleSet {\n"); + sb.append(" rules: ").append(toIndentedString(rules)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `rules` to the URL query string + if (getRules() != null) { + for (int i = 0; i < getRules().size(); i++) { + if (getRules().get(i) != null) { + joiner.add( + getRules() + .get(i) + .toUrlQueryString( + String.format( + "%srules%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ScreeningInput.java b/src/main/java/com/fireblocks/sdk/model/ScreeningInput.java new file mode 100644 index 00000000..b4eb399f --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ScreeningInput.java @@ -0,0 +1,212 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** What the caller wants screened, and how. */ +@JsonPropertyOrder({ScreeningInput.JSON_PROPERTY_OPERATION, ScreeningInput.JSON_PROPERTY_PAYLOAD}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class ScreeningInput { + public static final String JSON_PROPERTY_OPERATION = "operation"; + @jakarta.annotation.Nonnull private ScreeningOperationEnum operation; + + public static final String JSON_PROPERTY_PAYLOAD = "payload"; + @jakarta.annotation.Nonnull private List payload; + + public ScreeningInput() {} + + @JsonCreator + public ScreeningInput( + @JsonProperty(value = JSON_PROPERTY_OPERATION, required = true) + ScreeningOperationEnum operation, + @JsonProperty(value = JSON_PROPERTY_PAYLOAD, required = true) + List payload) { + this.operation = operation; + this.payload = payload; + } + + public ScreeningInput operation(@jakarta.annotation.Nonnull ScreeningOperationEnum operation) { + this.operation = operation; + return this; + } + + /** + * Get operation + * + * @return operation + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_OPERATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ScreeningOperationEnum getOperation() { + return operation; + } + + @JsonProperty(JSON_PROPERTY_OPERATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setOperation(@jakarta.annotation.Nonnull ScreeningOperationEnum operation) { + this.operation = operation; + } + + public ScreeningInput payload(@jakarta.annotation.Nonnull List payload) { + this.payload = payload; + return this; + } + + public ScreeningInput addPayloadItem(ScreeningPayload payloadItem) { + if (this.payload == null) { + this.payload = new ArrayList<>(); + } + this.payload.add(payloadItem); + return this; + } + + /** + * The screening subjects. Up to 100 per request — the provider's own batch limit for + * address screening — so a bulk check does not need one call per address. + * + * @return payload + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_PAYLOAD) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getPayload() { + return payload; + } + + @JsonProperty(JSON_PROPERTY_PAYLOAD) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setPayload(@jakarta.annotation.Nonnull List payload) { + this.payload = payload; + } + + /** Return true if this ScreeningInput object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ScreeningInput screeningInput = (ScreeningInput) o; + return Objects.equals(this.operation, screeningInput.operation) + && Objects.equals(this.payload, screeningInput.payload); + } + + @Override + public int hashCode() { + return Objects.hash(operation, payload); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ScreeningInput {\n"); + sb.append(" operation: ").append(toIndentedString(operation)).append("\n"); + sb.append(" payload: ").append(toIndentedString(payload)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `operation` to the URL query string + if (getOperation() != null) { + joiner.add( + String.format( + "%soperation%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getOperation())))); + } + + // add `payload` to the URL query string + if (getPayload() != null) { + for (int i = 0; i < getPayload().size(); i++) { + if (getPayload().get(i) != null) { + joiner.add( + getPayload() + .get(i) + .toUrlQueryString( + String.format( + "%spayload%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ScreeningOperationEnum.java b/src/main/java/com/fireblocks/sdk/model/ScreeningOperationEnum.java new file mode 100644 index 00000000..9f95ebda --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ScreeningOperationEnum.java @@ -0,0 +1,75 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * What the caller wants Compliance Orchestrator to do. The target workflow must have a step + * configured for the operation; the error names the supported set when it does not. - + * `ADDRESS_SCREENING` — screen an address on its own, before anything exists on-chain. + * Answers whether the address itself carries risk. - `TRANSACTION_SCREENING` — screen a + * whole transfer: source and destination, amount and direction, not the destination alone. - + * `REGISTER_TRANSACTION` — record a confirmed transfer with the provider for ongoing + * monitoring. Not a gate: it files the transfer so the provider's own rules can raise alerts + * later, which is what feeds its AML model. + */ +public enum ScreeningOperationEnum { + ADDRESS_SCREENING("ADDRESS_SCREENING"), + + TRANSACTION_SCREENING("TRANSACTION_SCREENING"), + + REGISTER_TRANSACTION("REGISTER_TRANSACTION"); + + private String value; + + ScreeningOperationEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static ScreeningOperationEnum fromValue(String value) { + for (ScreeningOperationEnum b : ScreeningOperationEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ScreeningOutcomeEnum.java b/src/main/java/com/fireblocks/sdk/model/ScreeningOutcomeEnum.java new file mode 100644 index 00000000..1fb3d36c --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ScreeningOutcomeEnum.java @@ -0,0 +1,68 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * An `ACCEPT`/`REJECT` decision — the workflow's own outcome, a step's + * outcome, or the result of evaluating a step's outcome rules. `null` on a workflow + * outcome that is not decided yet. + */ +public enum ScreeningOutcomeEnum { + ACCEPT("ACCEPT"), + + REJECT("REJECT"); + + private String value; + + ScreeningOutcomeEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static ScreeningOutcomeEnum fromValue(String value) { + for (ScreeningOutcomeEnum b : ScreeningOutcomeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + return null; + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ScreeningPayload.java b/src/main/java/com/fireblocks/sdk/model/ScreeningPayload.java new file mode 100644 index 00000000..130a14ac --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ScreeningPayload.java @@ -0,0 +1,582 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** + * The subject of the screening. Which fields are required depends on the operation and on the + * connectors configured on the workflow's step. + */ +@JsonPropertyOrder({ + ScreeningPayload.JSON_PROPERTY_BLOCKCHAIN, + ScreeningPayload.JSON_PROPERTY_ASSET, + ScreeningPayload.JSON_PROPERTY_ASSET_AMOUNT, + ScreeningPayload.JSON_PROPERTY_USD_VALUE, + ScreeningPayload.JSON_PROPERTY_CUSTOMER_REF_ID, + ScreeningPayload.JSON_PROPERTY_EXTERNAL_ID, + ScreeningPayload.JSON_PROPERTY_ADDRESS, + ScreeningPayload.JSON_PROPERTY_DIRECTION, + ScreeningPayload.JSON_PROPERTY_SOURCE_ADDRESS, + ScreeningPayload.JSON_PROPERTY_DESTINATION_ADDRESS, + ScreeningPayload.JSON_PROPERTY_TX_HASH +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class ScreeningPayload { + public static final String JSON_PROPERTY_BLOCKCHAIN = "blockchain"; + @jakarta.annotation.Nullable private String blockchain; + + public static final String JSON_PROPERTY_ASSET = "asset"; + @jakarta.annotation.Nullable private String asset; + + public static final String JSON_PROPERTY_ASSET_AMOUNT = "assetAmount"; + @jakarta.annotation.Nullable private String assetAmount; + + public static final String JSON_PROPERTY_USD_VALUE = "usdValue"; + @jakarta.annotation.Nullable private String usdValue; + + public static final String JSON_PROPERTY_CUSTOMER_REF_ID = "customerRefId"; + @jakarta.annotation.Nullable private String customerRefId; + + public static final String JSON_PROPERTY_EXTERNAL_ID = "externalId"; + @jakarta.annotation.Nullable private String externalId; + + public static final String JSON_PROPERTY_ADDRESS = "address"; + @jakarta.annotation.Nullable private String address; + + public static final String JSON_PROPERTY_DIRECTION = "direction"; + @jakarta.annotation.Nullable private TransferDirectionEnum direction; + + public static final String JSON_PROPERTY_SOURCE_ADDRESS = "sourceAddress"; + @jakarta.annotation.Nullable private List sourceAddress; + + public static final String JSON_PROPERTY_DESTINATION_ADDRESS = "destinationAddress"; + @jakarta.annotation.Nullable private List destinationAddress; + + public static final String JSON_PROPERTY_TX_HASH = "txHash"; + @jakarta.annotation.Nullable private String txHash; + + public ScreeningPayload() {} + + public ScreeningPayload blockchain(@jakarta.annotation.Nullable String blockchain) { + this.blockchain = blockchain; + return this; + } + + /** + * The blockchain network of the asset being screened. + * + * @return blockchain + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_BLOCKCHAIN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getBlockchain() { + return blockchain; + } + + @JsonProperty(JSON_PROPERTY_BLOCKCHAIN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setBlockchain(@jakarta.annotation.Nullable String blockchain) { + this.blockchain = blockchain; + } + + public ScreeningPayload asset(@jakarta.annotation.Nullable String asset) { + this.asset = asset; + return this; + } + + /** + * The asset identifier being screened. + * + * @return asset + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ASSET) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAsset() { + return asset; + } + + @JsonProperty(JSON_PROPERTY_ASSET) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setAsset(@jakarta.annotation.Nullable String asset) { + this.asset = asset; + } + + public ScreeningPayload assetAmount(@jakarta.annotation.Nullable String assetAmount) { + this.assetAmount = assetAmount; + return this; + } + + /** + * The amount of the asset involved in the transaction, as a string. + * + * @return assetAmount + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ASSET_AMOUNT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAssetAmount() { + return assetAmount; + } + + @JsonProperty(JSON_PROPERTY_ASSET_AMOUNT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setAssetAmount(@jakarta.annotation.Nullable String assetAmount) { + this.assetAmount = assetAmount; + } + + public ScreeningPayload usdValue(@jakarta.annotation.Nullable String usdValue) { + this.usdValue = usdValue; + return this; + } + + /** + * The USD value of the transaction amount, as a string. + * + * @return usdValue + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_USD_VALUE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getUsdValue() { + return usdValue; + } + + @JsonProperty(JSON_PROPERTY_USD_VALUE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setUsdValue(@jakarta.annotation.Nullable String usdValue) { + this.usdValue = usdValue; + } + + public ScreeningPayload customerRefId(@jakarta.annotation.Nullable String customerRefId) { + this.customerRefId = customerRefId; + return this; + } + + /** + * Customer-provided reference identifier for tracking. + * + * @return customerRefId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CUSTOMER_REF_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getCustomerRefId() { + return customerRefId; + } + + @JsonProperty(JSON_PROPERTY_CUSTOMER_REF_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setCustomerRefId(@jakarta.annotation.Nullable String customerRefId) { + this.customerRefId = customerRefId; + } + + public ScreeningPayload externalId(@jakarta.annotation.Nullable String externalId) { + this.externalId = externalId; + return this; + } + + /** + * External identifier for the screening (provider-specific). + * + * @return externalId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_EXTERNAL_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getExternalId() { + return externalId; + } + + @JsonProperty(JSON_PROPERTY_EXTERNAL_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setExternalId(@jakarta.annotation.Nullable String externalId) { + this.externalId = externalId; + } + + public ScreeningPayload address(@jakarta.annotation.Nullable String address) { + this.address = address; + return this; + } + + /** + * The blockchain address to screen. Used for the `ADDRESS_SCREENING` operation. + * + * @return address + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ADDRESS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAddress() { + return address; + } + + @JsonProperty(JSON_PROPERTY_ADDRESS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setAddress(@jakarta.annotation.Nullable String address) { + this.address = address; + } + + public ScreeningPayload direction( + @jakarta.annotation.Nullable TransferDirectionEnum direction) { + this.direction = direction; + return this; + } + + /** + * Get direction + * + * @return direction + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DIRECTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public TransferDirectionEnum getDirection() { + return direction; + } + + @JsonProperty(JSON_PROPERTY_DIRECTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDirection(@jakarta.annotation.Nullable TransferDirectionEnum direction) { + this.direction = direction; + } + + public ScreeningPayload sourceAddress(@jakarta.annotation.Nullable List sourceAddress) { + this.sourceAddress = sourceAddress; + return this; + } + + public ScreeningPayload addSourceAddressItem(String sourceAddressItem) { + if (this.sourceAddress == null) { + this.sourceAddress = new ArrayList<>(); + } + this.sourceAddress.add(sourceAddressItem); + return this; + } + + /** + * The source blockchain address(es) of the transaction. + * + * @return sourceAddress + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SOURCE_ADDRESS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getSourceAddress() { + return sourceAddress; + } + + @JsonProperty(JSON_PROPERTY_SOURCE_ADDRESS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setSourceAddress(@jakarta.annotation.Nullable List sourceAddress) { + this.sourceAddress = sourceAddress; + } + + public ScreeningPayload destinationAddress( + @jakarta.annotation.Nullable List destinationAddress) { + this.destinationAddress = destinationAddress; + return this; + } + + public ScreeningPayload addDestinationAddressItem(String destinationAddressItem) { + if (this.destinationAddress == null) { + this.destinationAddress = new ArrayList<>(); + } + this.destinationAddress.add(destinationAddressItem); + return this; + } + + /** + * The destination blockchain address(es) of the transaction. + * + * @return destinationAddress + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESTINATION_ADDRESS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getDestinationAddress() { + return destinationAddress; + } + + @JsonProperty(JSON_PROPERTY_DESTINATION_ADDRESS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDestinationAddress( + @jakarta.annotation.Nullable List destinationAddress) { + this.destinationAddress = destinationAddress; + } + + public ScreeningPayload txHash(@jakarta.annotation.Nullable String txHash) { + this.txHash = txHash; + return this; + } + + /** + * The transaction hash on the blockchain. + * + * @return txHash + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TX_HASH) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTxHash() { + return txHash; + } + + @JsonProperty(JSON_PROPERTY_TX_HASH) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTxHash(@jakarta.annotation.Nullable String txHash) { + this.txHash = txHash; + } + + /** Return true if this ScreeningPayload object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ScreeningPayload screeningPayload = (ScreeningPayload) o; + return Objects.equals(this.blockchain, screeningPayload.blockchain) + && Objects.equals(this.asset, screeningPayload.asset) + && Objects.equals(this.assetAmount, screeningPayload.assetAmount) + && Objects.equals(this.usdValue, screeningPayload.usdValue) + && Objects.equals(this.customerRefId, screeningPayload.customerRefId) + && Objects.equals(this.externalId, screeningPayload.externalId) + && Objects.equals(this.address, screeningPayload.address) + && Objects.equals(this.direction, screeningPayload.direction) + && Objects.equals(this.sourceAddress, screeningPayload.sourceAddress) + && Objects.equals(this.destinationAddress, screeningPayload.destinationAddress) + && Objects.equals(this.txHash, screeningPayload.txHash); + } + + @Override + public int hashCode() { + return Objects.hash( + blockchain, + asset, + assetAmount, + usdValue, + customerRefId, + externalId, + address, + direction, + sourceAddress, + destinationAddress, + txHash); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ScreeningPayload {\n"); + sb.append(" blockchain: ").append(toIndentedString(blockchain)).append("\n"); + sb.append(" asset: ").append(toIndentedString(asset)).append("\n"); + sb.append(" assetAmount: ").append(toIndentedString(assetAmount)).append("\n"); + sb.append(" usdValue: ").append(toIndentedString(usdValue)).append("\n"); + sb.append(" customerRefId: ").append(toIndentedString(customerRefId)).append("\n"); + sb.append(" externalId: ").append(toIndentedString(externalId)).append("\n"); + sb.append(" address: ").append(toIndentedString(address)).append("\n"); + sb.append(" direction: ").append(toIndentedString(direction)).append("\n"); + sb.append(" sourceAddress: ").append(toIndentedString(sourceAddress)).append("\n"); + sb.append(" destinationAddress: ") + .append(toIndentedString(destinationAddress)) + .append("\n"); + sb.append(" txHash: ").append(toIndentedString(txHash)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `blockchain` to the URL query string + if (getBlockchain() != null) { + joiner.add( + String.format( + "%sblockchain%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getBlockchain())))); + } + + // add `asset` to the URL query string + if (getAsset() != null) { + joiner.add( + String.format( + "%sasset%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getAsset())))); + } + + // add `assetAmount` to the URL query string + if (getAssetAmount() != null) { + joiner.add( + String.format( + "%sassetAmount%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getAssetAmount())))); + } + + // add `usdValue` to the URL query string + if (getUsdValue() != null) { + joiner.add( + String.format( + "%susdValue%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getUsdValue())))); + } + + // add `customerRefId` to the URL query string + if (getCustomerRefId() != null) { + joiner.add( + String.format( + "%scustomerRefId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getCustomerRefId())))); + } + + // add `externalId` to the URL query string + if (getExternalId() != null) { + joiner.add( + String.format( + "%sexternalId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getExternalId())))); + } + + // add `address` to the URL query string + if (getAddress() != null) { + joiner.add( + String.format( + "%saddress%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getAddress())))); + } + + // add `direction` to the URL query string + if (getDirection() != null) { + joiner.add( + String.format( + "%sdirection%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getDirection())))); + } + + // add `sourceAddress` to the URL query string + if (getSourceAddress() != null) { + for (int i = 0; i < getSourceAddress().size(); i++) { + joiner.add( + String.format( + "%ssourceAddress%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, i, containerSuffix), + ApiClient.urlEncode( + ApiClient.valueToString(getSourceAddress().get(i))))); + } + } + + // add `destinationAddress` to the URL query string + if (getDestinationAddress() != null) { + for (int i = 0; i < getDestinationAddress().size(); i++) { + joiner.add( + String.format( + "%sdestinationAddress%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, i, containerSuffix), + ApiClient.urlEncode( + ApiClient.valueToString(getDestinationAddress().get(i))))); + } + } + + // add `txHash` to the URL query string + if (getTxHash() != null) { + joiner.add( + String.format( + "%stxHash%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTxHash())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/StepConfig.java b/src/main/java/com/fireblocks/sdk/model/StepConfig.java new file mode 100644 index 00000000..897f04e0 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/StepConfig.java @@ -0,0 +1,300 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** + * One step in a workflow, backed by a single connector. A connector is the compliance provider + * integration that does the work — `kyt_trmlabs` is TRM Labs. The step declares which + * operations that connector handles; a screening naming an operation no step is configured for is + * refused, and the error reports the supported set. + */ +@JsonPropertyOrder({ + StepConfig.JSON_PROPERTY_STEP_ID, + StepConfig.JSON_PROPERTY_CONNECTOR_ID, + StepConfig.JSON_PROPERTY_OPERATIONS, + StepConfig.JSON_PROPERTY_ORDER +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class StepConfig { + public static final String JSON_PROPERTY_STEP_ID = "stepId"; + @jakarta.annotation.Nonnull private String stepId; + + public static final String JSON_PROPERTY_CONNECTOR_ID = "connectorId"; + @jakarta.annotation.Nonnull private String connectorId; + + public static final String JSON_PROPERTY_OPERATIONS = "operations"; + @jakarta.annotation.Nonnull private List operations; + + public static final String JSON_PROPERTY_ORDER = "order"; + @jakarta.annotation.Nonnull private Integer order; + + public StepConfig() {} + + @JsonCreator + public StepConfig( + @JsonProperty(value = JSON_PROPERTY_STEP_ID, required = true) String stepId, + @JsonProperty(value = JSON_PROPERTY_CONNECTOR_ID, required = true) String connectorId, + @JsonProperty(value = JSON_PROPERTY_OPERATIONS, required = true) + List operations, + @JsonProperty(value = JSON_PROPERTY_ORDER, required = true) Integer order) { + this.stepId = stepId; + this.connectorId = connectorId; + this.operations = operations; + this.order = order; + } + + public StepConfig stepId(@jakarta.annotation.Nonnull String stepId) { + this.stepId = stepId; + return this; + } + + /** + * Unique within the workflow. + * + * @return stepId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_STEP_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getStepId() { + return stepId; + } + + @JsonProperty(JSON_PROPERTY_STEP_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setStepId(@jakarta.annotation.Nonnull String stepId) { + this.stepId = stepId; + } + + public StepConfig connectorId(@jakarta.annotation.Nonnull String connectorId) { + this.connectorId = connectorId; + return this; + } + + /** + * Identifies which connector this step invokes. + * + * @return connectorId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_CONNECTOR_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getConnectorId() { + return connectorId; + } + + @JsonProperty(JSON_PROPERTY_CONNECTOR_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setConnectorId(@jakarta.annotation.Nonnull String connectorId) { + this.connectorId = connectorId; + } + + public StepConfig operations(@jakarta.annotation.Nonnull List operations) { + this.operations = operations; + return this; + } + + public StepConfig addOperationsItem(StepOperationConfig operationsItem) { + if (this.operations == null) { + this.operations = new ArrayList<>(); + } + this.operations.add(operationsItem); + return this; + } + + /** + * One entry per operation the step's connector handles. + * + * @return operations + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_OPERATIONS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getOperations() { + return operations; + } + + @JsonProperty(JSON_PROPERTY_OPERATIONS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setOperations(@jakarta.annotation.Nonnull List operations) { + this.operations = operations; + } + + public StepConfig order(@jakarta.annotation.Nonnull Integer order) { + this.order = order; + return this; + } + + /** + * Execution order among the workflow's steps, lowest first. + * + * @return order + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ORDER) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Integer getOrder() { + return order; + } + + @JsonProperty(JSON_PROPERTY_ORDER) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setOrder(@jakarta.annotation.Nonnull Integer order) { + this.order = order; + } + + /** Return true if this StepConfig object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + StepConfig stepConfig = (StepConfig) o; + return Objects.equals(this.stepId, stepConfig.stepId) + && Objects.equals(this.connectorId, stepConfig.connectorId) + && Objects.equals(this.operations, stepConfig.operations) + && Objects.equals(this.order, stepConfig.order); + } + + @Override + public int hashCode() { + return Objects.hash(stepId, connectorId, operations, order); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class StepConfig {\n"); + sb.append(" stepId: ").append(toIndentedString(stepId)).append("\n"); + sb.append(" connectorId: ").append(toIndentedString(connectorId)).append("\n"); + sb.append(" operations: ").append(toIndentedString(operations)).append("\n"); + sb.append(" order: ").append(toIndentedString(order)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `stepId` to the URL query string + if (getStepId() != null) { + joiner.add( + String.format( + "%sstepId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getStepId())))); + } + + // add `connectorId` to the URL query string + if (getConnectorId() != null) { + joiner.add( + String.format( + "%sconnectorId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getConnectorId())))); + } + + // add `operations` to the URL query string + if (getOperations() != null) { + for (int i = 0; i < getOperations().size(); i++) { + if (getOperations().get(i) != null) { + joiner.add( + getOperations() + .get(i) + .toUrlQueryString( + String.format( + "%soperations%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `order` to the URL query string + if (getOrder() != null) { + joiner.add( + String.format( + "%sorder%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getOrder())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/StepOperationConfig.java b/src/main/java/com/fireblocks/sdk/model/StepOperationConfig.java new file mode 100644 index 00000000..ddb86344 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/StepOperationConfig.java @@ -0,0 +1,634 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** + * Configuration for one operation the step's connector handles. The operation arrives on the + * screening request; the connector decides how to handle it. Two rule sets govern the step, and + * both are configured here rather than sent per request, so the same call behaves differently + * across workflows. Trigger rules decide whether the connector runs at all; outcome rules turn the + * provider's response into the step's verdict. With neither configured the step runs under + * the connector's own defaults, which for `kyt_trmlabs` are permissive: the screening + * completes without consulting the provider. The four parameter lists are the contract for writing + * those rules: a rule naming a field outside `triggerRuleParameters` or + * `outcomeEvaluationParameters` is rejected. They are derived from the connector registry + * rather than stored, so a connector gaining a field is reflected here without a migration. + */ +@JsonPropertyOrder({ + StepOperationConfig.JSON_PROPERTY_OPERATION, + StepOperationConfig.JSON_PROPERTY_REQUIRED_PARAMETERS, + StepOperationConfig.JSON_PROPERTY_OPTIONAL_PARAMETERS, + StepOperationConfig.JSON_PROPERTY_TRIGGER_RULE_PARAMETERS, + StepOperationConfig.JSON_PROPERTY_OUTCOME_EVALUATION_PARAMETERS, + StepOperationConfig.JSON_PROPERTY_OUTCOME_META_PARAMETERS, + StepOperationConfig.JSON_PROPERTY_TRIGGER_RULE_SET_STRUCT, + StepOperationConfig.JSON_PROPERTY_TRIGGER_RULE_SET_JSON, + StepOperationConfig.JSON_PROPERTY_OUTCOME_RULE_SET_STRUCT, + StepOperationConfig.JSON_PROPERTY_OUTCOME_RULE_SET_JSON +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class StepOperationConfig { + public static final String JSON_PROPERTY_OPERATION = "operation"; + @jakarta.annotation.Nullable private ScreeningOperationEnum operation; + + public static final String JSON_PROPERTY_REQUIRED_PARAMETERS = "requiredParameters"; + @jakarta.annotation.Nullable private List requiredParameters; + + public static final String JSON_PROPERTY_OPTIONAL_PARAMETERS = "optionalParameters"; + @jakarta.annotation.Nullable private List optionalParameters; + + public static final String JSON_PROPERTY_TRIGGER_RULE_PARAMETERS = "triggerRuleParameters"; + @jakarta.annotation.Nullable private List triggerRuleParameters; + + public static final String JSON_PROPERTY_OUTCOME_EVALUATION_PARAMETERS = + "outcomeEvaluationParameters"; + @jakarta.annotation.Nullable private List outcomeEvaluationParameters; + + public static final String JSON_PROPERTY_OUTCOME_META_PARAMETERS = "outcomeMetaParameters"; + @jakarta.annotation.Nullable private List outcomeMetaParameters; + + public static final String JSON_PROPERTY_TRIGGER_RULE_SET_STRUCT = "triggerRuleSetStruct"; + @jakarta.annotation.Nullable private RuleSet triggerRuleSetStruct; + + public static final String JSON_PROPERTY_TRIGGER_RULE_SET_JSON = "triggerRuleSetJson"; + @jakarta.annotation.Nullable private String triggerRuleSetJson; + + public static final String JSON_PROPERTY_OUTCOME_RULE_SET_STRUCT = "outcomeRuleSetStruct"; + @jakarta.annotation.Nullable private RuleSet outcomeRuleSetStruct; + + public static final String JSON_PROPERTY_OUTCOME_RULE_SET_JSON = "outcomeRuleSetJson"; + @jakarta.annotation.Nullable private String outcomeRuleSetJson; + + public StepOperationConfig() {} + + public StepOperationConfig operation( + @jakarta.annotation.Nullable ScreeningOperationEnum operation) { + this.operation = operation; + return this; + } + + /** + * Get operation + * + * @return operation + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_OPERATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ScreeningOperationEnum getOperation() { + return operation; + } + + @JsonProperty(JSON_PROPERTY_OPERATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOperation(@jakarta.annotation.Nullable ScreeningOperationEnum operation) { + this.operation = operation; + } + + public StepOperationConfig requiredParameters( + @jakarta.annotation.Nullable List requiredParameters) { + this.requiredParameters = requiredParameters; + return this; + } + + public StepOperationConfig addRequiredParametersItem(String requiredParametersItem) { + if (this.requiredParameters == null) { + this.requiredParameters = new ArrayList<>(); + } + this.requiredParameters.add(requiredParametersItem); + return this; + } + + /** + * Resolved server-side on every `GetWorkflow` call from the step's connector + * definition for this operation. Read-only: ignored on write. + * + * @return requiredParameters + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REQUIRED_PARAMETERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getRequiredParameters() { + return requiredParameters; + } + + @JsonProperty(JSON_PROPERTY_REQUIRED_PARAMETERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setRequiredParameters( + @jakarta.annotation.Nullable List requiredParameters) { + this.requiredParameters = requiredParameters; + } + + public StepOperationConfig optionalParameters( + @jakarta.annotation.Nullable List optionalParameters) { + this.optionalParameters = optionalParameters; + return this; + } + + public StepOperationConfig addOptionalParametersItem(String optionalParametersItem) { + if (this.optionalParameters == null) { + this.optionalParameters = new ArrayList<>(); + } + this.optionalParameters.add(optionalParametersItem); + return this; + } + + /** + * Like `requiredParameters`, but optional inputs to the operation. + * + * @return optionalParameters + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_OPTIONAL_PARAMETERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getOptionalParameters() { + return optionalParameters; + } + + @JsonProperty(JSON_PROPERTY_OPTIONAL_PARAMETERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOptionalParameters( + @jakarta.annotation.Nullable List optionalParameters) { + this.optionalParameters = optionalParameters; + } + + public StepOperationConfig triggerRuleParameters( + @jakarta.annotation.Nullable List triggerRuleParameters) { + this.triggerRuleParameters = triggerRuleParameters; + return this; + } + + public StepOperationConfig addTriggerRuleParametersItem(String triggerRuleParametersItem) { + if (this.triggerRuleParameters == null) { + this.triggerRuleParameters = new ArrayList<>(); + } + this.triggerRuleParameters.add(triggerRuleParametersItem); + return this; + } + + /** + * Fields a condition in `triggerRuleSetStruct` may reference. + * + * @return triggerRuleParameters + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TRIGGER_RULE_PARAMETERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getTriggerRuleParameters() { + return triggerRuleParameters; + } + + @JsonProperty(JSON_PROPERTY_TRIGGER_RULE_PARAMETERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTriggerRuleParameters( + @jakarta.annotation.Nullable List triggerRuleParameters) { + this.triggerRuleParameters = triggerRuleParameters; + } + + public StepOperationConfig outcomeEvaluationParameters( + @jakarta.annotation.Nullable List outcomeEvaluationParameters) { + this.outcomeEvaluationParameters = outcomeEvaluationParameters; + return this; + } + + public StepOperationConfig addOutcomeEvaluationParametersItem( + String outcomeEvaluationParametersItem) { + if (this.outcomeEvaluationParameters == null) { + this.outcomeEvaluationParameters = new ArrayList<>(); + } + this.outcomeEvaluationParameters.add(outcomeEvaluationParametersItem); + return this; + } + + /** + * Provider response fields a condition in `outcomeRuleSetStruct` may reference. + * + * @return outcomeEvaluationParameters + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_OUTCOME_EVALUATION_PARAMETERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getOutcomeEvaluationParameters() { + return outcomeEvaluationParameters; + } + + @JsonProperty(JSON_PROPERTY_OUTCOME_EVALUATION_PARAMETERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOutcomeEvaluationParameters( + @jakarta.annotation.Nullable List outcomeEvaluationParameters) { + this.outcomeEvaluationParameters = outcomeEvaluationParameters; + } + + public StepOperationConfig outcomeMetaParameters( + @jakarta.annotation.Nullable List outcomeMetaParameters) { + this.outcomeMetaParameters = outcomeMetaParameters; + return this; + } + + public StepOperationConfig addOutcomeMetaParametersItem(String outcomeMetaParametersItem) { + if (this.outcomeMetaParameters == null) { + this.outcomeMetaParameters = new ArrayList<>(); + } + this.outcomeMetaParameters.add(outcomeMetaParametersItem); + return this; + } + + /** + * Additional provider response fields returned with the result; not usable in + * `outcomeRuleSetStruct` conditions. + * + * @return outcomeMetaParameters + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_OUTCOME_META_PARAMETERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getOutcomeMetaParameters() { + return outcomeMetaParameters; + } + + @JsonProperty(JSON_PROPERTY_OUTCOME_META_PARAMETERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOutcomeMetaParameters( + @jakarta.annotation.Nullable List outcomeMetaParameters) { + this.outcomeMetaParameters = outcomeMetaParameters; + } + + public StepOperationConfig triggerRuleSetStruct( + @jakarta.annotation.Nullable RuleSet triggerRuleSetStruct) { + this.triggerRuleSetStruct = triggerRuleSetStruct; + return this; + } + + /** + * Get triggerRuleSetStruct + * + * @return triggerRuleSetStruct + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TRIGGER_RULE_SET_STRUCT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RuleSet getTriggerRuleSetStruct() { + return triggerRuleSetStruct; + } + + @JsonProperty(JSON_PROPERTY_TRIGGER_RULE_SET_STRUCT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTriggerRuleSetStruct(@jakarta.annotation.Nullable RuleSet triggerRuleSetStruct) { + this.triggerRuleSetStruct = triggerRuleSetStruct; + } + + public StepOperationConfig triggerRuleSetJson( + @jakarta.annotation.Nullable String triggerRuleSetJson) { + this.triggerRuleSetJson = triggerRuleSetJson; + return this; + } + + /** + * The tenant's trigger rules, as a JSON-encoded string. Set for steps whose rules are still + * defined as a legacy screening policy rather than natively in Compliance Orchestrator, and + * refreshed on every read. Mutually exclusive with `triggerRuleSetStruct`. + * + * @return triggerRuleSetJson + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TRIGGER_RULE_SET_JSON) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTriggerRuleSetJson() { + return triggerRuleSetJson; + } + + @JsonProperty(JSON_PROPERTY_TRIGGER_RULE_SET_JSON) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTriggerRuleSetJson(@jakarta.annotation.Nullable String triggerRuleSetJson) { + this.triggerRuleSetJson = triggerRuleSetJson; + } + + public StepOperationConfig outcomeRuleSetStruct( + @jakarta.annotation.Nullable RuleSet outcomeRuleSetStruct) { + this.outcomeRuleSetStruct = outcomeRuleSetStruct; + return this; + } + + /** + * Get outcomeRuleSetStruct + * + * @return outcomeRuleSetStruct + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_OUTCOME_RULE_SET_STRUCT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RuleSet getOutcomeRuleSetStruct() { + return outcomeRuleSetStruct; + } + + @JsonProperty(JSON_PROPERTY_OUTCOME_RULE_SET_STRUCT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOutcomeRuleSetStruct(@jakarta.annotation.Nullable RuleSet outcomeRuleSetStruct) { + this.outcomeRuleSetStruct = outcomeRuleSetStruct; + } + + public StepOperationConfig outcomeRuleSetJson( + @jakarta.annotation.Nullable String outcomeRuleSetJson) { + this.outcomeRuleSetJson = outcomeRuleSetJson; + return this; + } + + /** + * The tenant's outcome rules, as a JSON-encoded string. Set for steps whose rules are still + * defined as a legacy screening policy rather than natively in Compliance Orchestrator, and + * refreshed on every read. Mutually exclusive with `outcomeRuleSetStruct`. + * + * @return outcomeRuleSetJson + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_OUTCOME_RULE_SET_JSON) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getOutcomeRuleSetJson() { + return outcomeRuleSetJson; + } + + @JsonProperty(JSON_PROPERTY_OUTCOME_RULE_SET_JSON) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOutcomeRuleSetJson(@jakarta.annotation.Nullable String outcomeRuleSetJson) { + this.outcomeRuleSetJson = outcomeRuleSetJson; + } + + /** Return true if this StepOperationConfig object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + StepOperationConfig stepOperationConfig = (StepOperationConfig) o; + return Objects.equals(this.operation, stepOperationConfig.operation) + && Objects.equals(this.requiredParameters, stepOperationConfig.requiredParameters) + && Objects.equals(this.optionalParameters, stepOperationConfig.optionalParameters) + && Objects.equals( + this.triggerRuleParameters, stepOperationConfig.triggerRuleParameters) + && Objects.equals( + this.outcomeEvaluationParameters, + stepOperationConfig.outcomeEvaluationParameters) + && Objects.equals( + this.outcomeMetaParameters, stepOperationConfig.outcomeMetaParameters) + && Objects.equals( + this.triggerRuleSetStruct, stepOperationConfig.triggerRuleSetStruct) + && Objects.equals(this.triggerRuleSetJson, stepOperationConfig.triggerRuleSetJson) + && Objects.equals( + this.outcomeRuleSetStruct, stepOperationConfig.outcomeRuleSetStruct) + && Objects.equals(this.outcomeRuleSetJson, stepOperationConfig.outcomeRuleSetJson); + } + + @Override + public int hashCode() { + return Objects.hash( + operation, + requiredParameters, + optionalParameters, + triggerRuleParameters, + outcomeEvaluationParameters, + outcomeMetaParameters, + triggerRuleSetStruct, + triggerRuleSetJson, + outcomeRuleSetStruct, + outcomeRuleSetJson); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class StepOperationConfig {\n"); + sb.append(" operation: ").append(toIndentedString(operation)).append("\n"); + sb.append(" requiredParameters: ") + .append(toIndentedString(requiredParameters)) + .append("\n"); + sb.append(" optionalParameters: ") + .append(toIndentedString(optionalParameters)) + .append("\n"); + sb.append(" triggerRuleParameters: ") + .append(toIndentedString(triggerRuleParameters)) + .append("\n"); + sb.append(" outcomeEvaluationParameters: ") + .append(toIndentedString(outcomeEvaluationParameters)) + .append("\n"); + sb.append(" outcomeMetaParameters: ") + .append(toIndentedString(outcomeMetaParameters)) + .append("\n"); + sb.append(" triggerRuleSetStruct: ") + .append(toIndentedString(triggerRuleSetStruct)) + .append("\n"); + sb.append(" triggerRuleSetJson: ") + .append(toIndentedString(triggerRuleSetJson)) + .append("\n"); + sb.append(" outcomeRuleSetStruct: ") + .append(toIndentedString(outcomeRuleSetStruct)) + .append("\n"); + sb.append(" outcomeRuleSetJson: ") + .append(toIndentedString(outcomeRuleSetJson)) + .append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `operation` to the URL query string + if (getOperation() != null) { + joiner.add( + String.format( + "%soperation%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getOperation())))); + } + + // add `requiredParameters` to the URL query string + if (getRequiredParameters() != null) { + for (int i = 0; i < getRequiredParameters().size(); i++) { + joiner.add( + String.format( + "%srequiredParameters%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, i, containerSuffix), + ApiClient.urlEncode( + ApiClient.valueToString(getRequiredParameters().get(i))))); + } + } + + // add `optionalParameters` to the URL query string + if (getOptionalParameters() != null) { + for (int i = 0; i < getOptionalParameters().size(); i++) { + joiner.add( + String.format( + "%soptionalParameters%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, i, containerSuffix), + ApiClient.urlEncode( + ApiClient.valueToString(getOptionalParameters().get(i))))); + } + } + + // add `triggerRuleParameters` to the URL query string + if (getTriggerRuleParameters() != null) { + for (int i = 0; i < getTriggerRuleParameters().size(); i++) { + joiner.add( + String.format( + "%striggerRuleParameters%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, i, containerSuffix), + ApiClient.urlEncode( + ApiClient.valueToString( + getTriggerRuleParameters().get(i))))); + } + } + + // add `outcomeEvaluationParameters` to the URL query string + if (getOutcomeEvaluationParameters() != null) { + for (int i = 0; i < getOutcomeEvaluationParameters().size(); i++) { + joiner.add( + String.format( + "%soutcomeEvaluationParameters%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, i, containerSuffix), + ApiClient.urlEncode( + ApiClient.valueToString( + getOutcomeEvaluationParameters().get(i))))); + } + } + + // add `outcomeMetaParameters` to the URL query string + if (getOutcomeMetaParameters() != null) { + for (int i = 0; i < getOutcomeMetaParameters().size(); i++) { + joiner.add( + String.format( + "%soutcomeMetaParameters%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, i, containerSuffix), + ApiClient.urlEncode( + ApiClient.valueToString( + getOutcomeMetaParameters().get(i))))); + } + } + + // add `triggerRuleSetStruct` to the URL query string + if (getTriggerRuleSetStruct() != null) { + joiner.add( + getTriggerRuleSetStruct() + .toUrlQueryString(prefix + "triggerRuleSetStruct" + suffix)); + } + + // add `triggerRuleSetJson` to the URL query string + if (getTriggerRuleSetJson() != null) { + joiner.add( + String.format( + "%striggerRuleSetJson%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTriggerRuleSetJson())))); + } + + // add `outcomeRuleSetStruct` to the URL query string + if (getOutcomeRuleSetStruct() != null) { + joiner.add( + getOutcomeRuleSetStruct() + .toUrlQueryString(prefix + "outcomeRuleSetStruct" + suffix)); + } + + // add `outcomeRuleSetJson` to the URL query string + if (getOutcomeRuleSetJson() != null) { + joiner.add( + String.format( + "%soutcomeRuleSetJson%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getOutcomeRuleSetJson())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/StepResult.java b/src/main/java/com/fireblocks/sdk/model/StepResult.java new file mode 100644 index 00000000..856b157a --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/StepResult.java @@ -0,0 +1,718 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.StringJoiner; + +/** + * The result of one workflow step's execution during a screening. Carries the step's + * outcome next to the two rule evaluations that produced it — which trigger rule decided the + * connector should run, and which outcome rule read the response — plus the provider's own + * verdict and risk level. A step that did not screen carries a `bypassReason` instead of + * a risk level. Only `PASSED_BY_POLICY` means the policy deliberately let it through; + * every other reason means the check could not be performed, and the step is rejected rather than + * passed. A bypass is not an approval. + */ +@JsonPropertyOrder({ + StepResult.JSON_PROPERTY_STEP_ID, + StepResult.JSON_PROPERTY_CONNECTOR_ID, + StepResult.JSON_PROPERTY_OPERATION, + StepResult.JSON_PROPERTY_TRIGGER_RULE_OUTCOME, + StepResult.JSON_PROPERTY_MATCHED_TRIGGER_RULE, + StepResult.JSON_PROPERTY_OUTCOME_RULE_OUTCOME, + StepResult.JSON_PROPERTY_MATCHED_OUTCOME_RULE, + StepResult.JSON_PROPERTY_OUTCOME, + StepResult.JSON_PROPERTY_METADATA, + StepResult.JSON_PROPERTY_TICKET_ID, + StepResult.JSON_PROPERTY_VERDICT, + StepResult.JSON_PROPERTY_CONNECTOR_STATUS, + StepResult.JSON_PROPERTY_BYPASS_REASON, + StepResult.JSON_PROPERTY_RISK +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class StepResult { + public static final String JSON_PROPERTY_STEP_ID = "stepId"; + @jakarta.annotation.Nonnull private String stepId; + + public static final String JSON_PROPERTY_CONNECTOR_ID = "connectorId"; + @jakarta.annotation.Nonnull private String connectorId; + + public static final String JSON_PROPERTY_OPERATION = "operation"; + @jakarta.annotation.Nonnull private ScreeningOperationEnum operation; + + public static final String JSON_PROPERTY_TRIGGER_RULE_OUTCOME = "triggerRuleOutcome"; + @jakarta.annotation.Nonnull private TriggerRuleOutcomeEnum triggerRuleOutcome; + + public static final String JSON_PROPERTY_MATCHED_TRIGGER_RULE = "matchedTriggerRule"; + @jakarta.annotation.Nullable private Rule matchedTriggerRule; + + public static final String JSON_PROPERTY_OUTCOME_RULE_OUTCOME = "outcomeRuleOutcome"; + @jakarta.annotation.Nullable private ScreeningOutcomeEnum outcomeRuleOutcome; + + public static final String JSON_PROPERTY_MATCHED_OUTCOME_RULE = "matchedOutcomeRule"; + @jakarta.annotation.Nullable private Rule matchedOutcomeRule; + + public static final String JSON_PROPERTY_OUTCOME = "outcome"; + @jakarta.annotation.Nullable private ScreeningOutcomeEnum outcome; + + public static final String JSON_PROPERTY_METADATA = "metadata"; + @jakarta.annotation.Nullable private Map metadata; + + public static final String JSON_PROPERTY_TICKET_ID = "ticketId"; + @jakarta.annotation.Nullable private String ticketId; + + public static final String JSON_PROPERTY_VERDICT = "verdict"; + @jakarta.annotation.Nullable private ConnectorVerdictEnum verdict; + + public static final String JSON_PROPERTY_CONNECTOR_STATUS = "connectorStatus"; + @jakarta.annotation.Nullable private ConnectorStatusEnum connectorStatus; + + public static final String JSON_PROPERTY_BYPASS_REASON = "bypassReason"; + @jakarta.annotation.Nullable private BypassReasonEnum bypassReason; + + public static final String JSON_PROPERTY_RISK = "risk"; + @jakarta.annotation.Nullable private RiskLevelEnum risk; + + public StepResult() {} + + @JsonCreator + public StepResult( + @JsonProperty(value = JSON_PROPERTY_STEP_ID, required = true) String stepId, + @JsonProperty(value = JSON_PROPERTY_CONNECTOR_ID, required = true) String connectorId, + @JsonProperty(value = JSON_PROPERTY_OPERATION, required = true) + ScreeningOperationEnum operation, + @JsonProperty(value = JSON_PROPERTY_TRIGGER_RULE_OUTCOME, required = true) + TriggerRuleOutcomeEnum triggerRuleOutcome, + @JsonProperty(value = JSON_PROPERTY_OUTCOME_RULE_OUTCOME, required = true) + ScreeningOutcomeEnum outcomeRuleOutcome, + @JsonProperty(value = JSON_PROPERTY_OUTCOME, required = true) + ScreeningOutcomeEnum outcome) { + this.stepId = stepId; + this.connectorId = connectorId; + this.operation = operation; + this.triggerRuleOutcome = triggerRuleOutcome; + this.outcomeRuleOutcome = outcomeRuleOutcome; + this.outcome = outcome; + } + + public StepResult stepId(@jakarta.annotation.Nonnull String stepId) { + this.stepId = stepId; + return this; + } + + /** + * Identifier of this step within the workflow. + * + * @return stepId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_STEP_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getStepId() { + return stepId; + } + + @JsonProperty(JSON_PROPERTY_STEP_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setStepId(@jakarta.annotation.Nonnull String stepId) { + this.stepId = stepId; + } + + public StepResult connectorId(@jakarta.annotation.Nonnull String connectorId) { + this.connectorId = connectorId; + return this; + } + + /** + * Identifier of the connector that executed this step. + * + * @return connectorId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_CONNECTOR_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getConnectorId() { + return connectorId; + } + + @JsonProperty(JSON_PROPERTY_CONNECTOR_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setConnectorId(@jakarta.annotation.Nonnull String connectorId) { + this.connectorId = connectorId; + } + + public StepResult operation(@jakarta.annotation.Nonnull ScreeningOperationEnum operation) { + this.operation = operation; + return this; + } + + /** + * Get operation + * + * @return operation + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_OPERATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ScreeningOperationEnum getOperation() { + return operation; + } + + @JsonProperty(JSON_PROPERTY_OPERATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setOperation(@jakarta.annotation.Nonnull ScreeningOperationEnum operation) { + this.operation = operation; + } + + public StepResult triggerRuleOutcome( + @jakarta.annotation.Nonnull TriggerRuleOutcomeEnum triggerRuleOutcome) { + this.triggerRuleOutcome = triggerRuleOutcome; + return this; + } + + /** + * Get triggerRuleOutcome + * + * @return triggerRuleOutcome + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_TRIGGER_RULE_OUTCOME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TriggerRuleOutcomeEnum getTriggerRuleOutcome() { + return triggerRuleOutcome; + } + + @JsonProperty(JSON_PROPERTY_TRIGGER_RULE_OUTCOME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setTriggerRuleOutcome( + @jakarta.annotation.Nonnull TriggerRuleOutcomeEnum triggerRuleOutcome) { + this.triggerRuleOutcome = triggerRuleOutcome; + } + + public StepResult matchedTriggerRule(@jakarta.annotation.Nullable Rule matchedTriggerRule) { + this.matchedTriggerRule = matchedTriggerRule; + return this; + } + + /** + * Get matchedTriggerRule + * + * @return matchedTriggerRule + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MATCHED_TRIGGER_RULE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Rule getMatchedTriggerRule() { + return matchedTriggerRule; + } + + @JsonProperty(JSON_PROPERTY_MATCHED_TRIGGER_RULE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setMatchedTriggerRule(@jakarta.annotation.Nullable Rule matchedTriggerRule) { + this.matchedTriggerRule = matchedTriggerRule; + } + + public StepResult outcomeRuleOutcome( + @jakarta.annotation.Nullable ScreeningOutcomeEnum outcomeRuleOutcome) { + this.outcomeRuleOutcome = outcomeRuleOutcome; + return this; + } + + /** + * Get outcomeRuleOutcome + * + * @return outcomeRuleOutcome + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_OUTCOME_RULE_OUTCOME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ScreeningOutcomeEnum getOutcomeRuleOutcome() { + return outcomeRuleOutcome; + } + + @JsonProperty(JSON_PROPERTY_OUTCOME_RULE_OUTCOME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setOutcomeRuleOutcome( + @jakarta.annotation.Nullable ScreeningOutcomeEnum outcomeRuleOutcome) { + this.outcomeRuleOutcome = outcomeRuleOutcome; + } + + public StepResult matchedOutcomeRule(@jakarta.annotation.Nullable Rule matchedOutcomeRule) { + this.matchedOutcomeRule = matchedOutcomeRule; + return this; + } + + /** + * Get matchedOutcomeRule + * + * @return matchedOutcomeRule + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MATCHED_OUTCOME_RULE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Rule getMatchedOutcomeRule() { + return matchedOutcomeRule; + } + + @JsonProperty(JSON_PROPERTY_MATCHED_OUTCOME_RULE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setMatchedOutcomeRule(@jakarta.annotation.Nullable Rule matchedOutcomeRule) { + this.matchedOutcomeRule = matchedOutcomeRule; + } + + public StepResult outcome(@jakarta.annotation.Nullable ScreeningOutcomeEnum outcome) { + this.outcome = outcome; + return this; + } + + /** + * Get outcome + * + * @return outcome + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_OUTCOME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ScreeningOutcomeEnum getOutcome() { + return outcome; + } + + @JsonProperty(JSON_PROPERTY_OUTCOME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setOutcome(@jakarta.annotation.Nullable ScreeningOutcomeEnum outcome) { + this.outcome = outcome; + } + + public StepResult metadata(@jakarta.annotation.Nullable Map metadata) { + this.metadata = metadata; + return this; + } + + public StepResult putMetadataItem(String key, Object metadataItem) { + if (this.metadata == null) { + this.metadata = new HashMap<>(); + } + this.metadata.put(key, metadataItem); + return this; + } + + /** + * Connector-specific data, keyed by the connector's configured outcomeMetaParameters for + * this operation. + * + * @return metadata + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_METADATA) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.USE_DEFAULTS) + public Map getMetadata() { + return metadata; + } + + @JsonProperty(JSON_PROPERTY_METADATA) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.USE_DEFAULTS) + public void setMetadata(@jakarta.annotation.Nullable Map metadata) { + this.metadata = metadata; + } + + public StepResult ticketId(@jakarta.annotation.Nullable String ticketId) { + this.ticketId = ticketId; + return this; + } + + /** + * The connector-side screening ticket identifier. + * + * @return ticketId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TICKET_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTicketId() { + return ticketId; + } + + @JsonProperty(JSON_PROPERTY_TICKET_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTicketId(@jakarta.annotation.Nullable String ticketId) { + this.ticketId = ticketId; + } + + public StepResult verdict(@jakarta.annotation.Nullable ConnectorVerdictEnum verdict) { + this.verdict = verdict; + return this; + } + + /** + * Get verdict + * + * @return verdict + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_VERDICT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ConnectorVerdictEnum getVerdict() { + return verdict; + } + + @JsonProperty(JSON_PROPERTY_VERDICT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setVerdict(@jakarta.annotation.Nullable ConnectorVerdictEnum verdict) { + this.verdict = verdict; + } + + public StepResult connectorStatus( + @jakarta.annotation.Nullable ConnectorStatusEnum connectorStatus) { + this.connectorStatus = connectorStatus; + return this; + } + + /** + * Get connectorStatus + * + * @return connectorStatus + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CONNECTOR_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ConnectorStatusEnum getConnectorStatus() { + return connectorStatus; + } + + @JsonProperty(JSON_PROPERTY_CONNECTOR_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setConnectorStatus( + @jakarta.annotation.Nullable ConnectorStatusEnum connectorStatus) { + this.connectorStatus = connectorStatus; + } + + public StepResult bypassReason(@jakarta.annotation.Nullable BypassReasonEnum bypassReason) { + this.bypassReason = bypassReason; + return this; + } + + /** + * Get bypassReason + * + * @return bypassReason + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_BYPASS_REASON) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BypassReasonEnum getBypassReason() { + return bypassReason; + } + + @JsonProperty(JSON_PROPERTY_BYPASS_REASON) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setBypassReason(@jakarta.annotation.Nullable BypassReasonEnum bypassReason) { + this.bypassReason = bypassReason; + } + + public StepResult risk(@jakarta.annotation.Nullable RiskLevelEnum risk) { + this.risk = risk; + return this; + } + + /** + * Get risk + * + * @return risk + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RISK) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RiskLevelEnum getRisk() { + return risk; + } + + @JsonProperty(JSON_PROPERTY_RISK) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setRisk(@jakarta.annotation.Nullable RiskLevelEnum risk) { + this.risk = risk; + } + + /** Return true if this StepResult object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + StepResult stepResult = (StepResult) o; + return Objects.equals(this.stepId, stepResult.stepId) + && Objects.equals(this.connectorId, stepResult.connectorId) + && Objects.equals(this.operation, stepResult.operation) + && Objects.equals(this.triggerRuleOutcome, stepResult.triggerRuleOutcome) + && Objects.equals(this.matchedTriggerRule, stepResult.matchedTriggerRule) + && Objects.equals(this.outcomeRuleOutcome, stepResult.outcomeRuleOutcome) + && Objects.equals(this.matchedOutcomeRule, stepResult.matchedOutcomeRule) + && Objects.equals(this.outcome, stepResult.outcome) + && Objects.equals(this.metadata, stepResult.metadata) + && Objects.equals(this.ticketId, stepResult.ticketId) + && Objects.equals(this.verdict, stepResult.verdict) + && Objects.equals(this.connectorStatus, stepResult.connectorStatus) + && Objects.equals(this.bypassReason, stepResult.bypassReason) + && Objects.equals(this.risk, stepResult.risk); + } + + @Override + public int hashCode() { + return Objects.hash( + stepId, + connectorId, + operation, + triggerRuleOutcome, + matchedTriggerRule, + outcomeRuleOutcome, + matchedOutcomeRule, + outcome, + metadata, + ticketId, + verdict, + connectorStatus, + bypassReason, + risk); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class StepResult {\n"); + sb.append(" stepId: ").append(toIndentedString(stepId)).append("\n"); + sb.append(" connectorId: ").append(toIndentedString(connectorId)).append("\n"); + sb.append(" operation: ").append(toIndentedString(operation)).append("\n"); + sb.append(" triggerRuleOutcome: ") + .append(toIndentedString(triggerRuleOutcome)) + .append("\n"); + sb.append(" matchedTriggerRule: ") + .append(toIndentedString(matchedTriggerRule)) + .append("\n"); + sb.append(" outcomeRuleOutcome: ") + .append(toIndentedString(outcomeRuleOutcome)) + .append("\n"); + sb.append(" matchedOutcomeRule: ") + .append(toIndentedString(matchedOutcomeRule)) + .append("\n"); + sb.append(" outcome: ").append(toIndentedString(outcome)).append("\n"); + sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); + sb.append(" ticketId: ").append(toIndentedString(ticketId)).append("\n"); + sb.append(" verdict: ").append(toIndentedString(verdict)).append("\n"); + sb.append(" connectorStatus: ").append(toIndentedString(connectorStatus)).append("\n"); + sb.append(" bypassReason: ").append(toIndentedString(bypassReason)).append("\n"); + sb.append(" risk: ").append(toIndentedString(risk)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `stepId` to the URL query string + if (getStepId() != null) { + joiner.add( + String.format( + "%sstepId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getStepId())))); + } + + // add `connectorId` to the URL query string + if (getConnectorId() != null) { + joiner.add( + String.format( + "%sconnectorId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getConnectorId())))); + } + + // add `operation` to the URL query string + if (getOperation() != null) { + joiner.add( + String.format( + "%soperation%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getOperation())))); + } + + // add `triggerRuleOutcome` to the URL query string + if (getTriggerRuleOutcome() != null) { + joiner.add( + String.format( + "%striggerRuleOutcome%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTriggerRuleOutcome())))); + } + + // add `matchedTriggerRule` to the URL query string + if (getMatchedTriggerRule() != null) { + joiner.add( + getMatchedTriggerRule() + .toUrlQueryString(prefix + "matchedTriggerRule" + suffix)); + } + + // add `outcomeRuleOutcome` to the URL query string + if (getOutcomeRuleOutcome() != null) { + joiner.add( + String.format( + "%soutcomeRuleOutcome%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getOutcomeRuleOutcome())))); + } + + // add `matchedOutcomeRule` to the URL query string + if (getMatchedOutcomeRule() != null) { + joiner.add( + getMatchedOutcomeRule() + .toUrlQueryString(prefix + "matchedOutcomeRule" + suffix)); + } + + // add `outcome` to the URL query string + if (getOutcome() != null) { + joiner.add( + String.format( + "%soutcome%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getOutcome())))); + } + + // add `metadata` to the URL query string + if (getMetadata() != null) { + for (String _key : getMetadata().keySet()) { + joiner.add( + String.format( + "%smetadata%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, _key, containerSuffix), + getMetadata().get(_key), + ApiClient.urlEncode( + ApiClient.valueToString(getMetadata().get(_key))))); + } + } + + // add `ticketId` to the URL query string + if (getTicketId() != null) { + joiner.add( + String.format( + "%sticketId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTicketId())))); + } + + // add `verdict` to the URL query string + if (getVerdict() != null) { + joiner.add( + String.format( + "%sverdict%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getVerdict())))); + } + + // add `connectorStatus` to the URL query string + if (getConnectorStatus() != null) { + joiner.add( + String.format( + "%sconnectorStatus%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getConnectorStatus())))); + } + + // add `bypassReason` to the URL query string + if (getBypassReason() != null) { + joiner.add( + String.format( + "%sbypassReason%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getBypassReason())))); + } + + // add `risk` to the URL query string + if (getRisk() != null) { + joiner.add( + String.format( + "%srisk%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getRisk())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/TransactionReceiptResponse.java b/src/main/java/com/fireblocks/sdk/model/TransactionReceiptResponse.java index aa961179..ccc6ecd5 100644 --- a/src/main/java/com/fireblocks/sdk/model/TransactionReceiptResponse.java +++ b/src/main/java/com/fireblocks/sdk/model/TransactionReceiptResponse.java @@ -54,16 +54,16 @@ public class TransactionReceiptResponse { @jakarta.annotation.Nullable private String contractAddress; public static final String JSON_PROPERTY_CUMULATIVE_GAS_USED = "cumulativeGasUsed"; - @jakarta.annotation.Nonnull private Integer cumulativeGasUsed; + @jakarta.annotation.Nonnull private Long cumulativeGasUsed; public static final String JSON_PROPERTY_EFFECTIVE_GAS_PRICE = "effectiveGasPrice"; - @jakarta.annotation.Nonnull private Integer effectiveGasPrice; + @jakarta.annotation.Nonnull private Long effectiveGasPrice; public static final String JSON_PROPERTY_FROM = "from"; @jakarta.annotation.Nonnull private String from; public static final String JSON_PROPERTY_GAS_USED = "gasUsed"; - @jakarta.annotation.Nonnull private Integer gasUsed; + @jakarta.annotation.Nonnull private Long gasUsed; public static final String JSON_PROPERTY_LOGS = "logs"; @jakarta.annotation.Nonnull private List logs; @@ -93,11 +93,11 @@ public TransactionReceiptResponse( @JsonProperty(value = JSON_PROPERTY_BLOCK_HASH, required = true) String blockHash, @JsonProperty(value = JSON_PROPERTY_BLOCK_NUMBER, required = true) Integer blockNumber, @JsonProperty(value = JSON_PROPERTY_CUMULATIVE_GAS_USED, required = true) - Integer cumulativeGasUsed, + Long cumulativeGasUsed, @JsonProperty(value = JSON_PROPERTY_EFFECTIVE_GAS_PRICE, required = true) - Integer effectiveGasPrice, + Long effectiveGasPrice, @JsonProperty(value = JSON_PROPERTY_FROM, required = true) String from, - @JsonProperty(value = JSON_PROPERTY_GAS_USED, required = true) Integer gasUsed, + @JsonProperty(value = JSON_PROPERTY_GAS_USED, required = true) Long gasUsed, @JsonProperty(value = JSON_PROPERTY_LOGS, required = true) List logs, @JsonProperty(value = JSON_PROPERTY_LOGS_BLOOM, required = true) String logsBloom, @JsonProperty(value = JSON_PROPERTY_STATUS, required = true) Integer status, @@ -191,7 +191,7 @@ public void setContractAddress(@jakarta.annotation.Nullable String contractAddre } public TransactionReceiptResponse cumulativeGasUsed( - @jakarta.annotation.Nonnull Integer cumulativeGasUsed) { + @jakarta.annotation.Nonnull Long cumulativeGasUsed) { this.cumulativeGasUsed = cumulativeGasUsed; return this; } @@ -204,18 +204,18 @@ public TransactionReceiptResponse cumulativeGasUsed( @jakarta.annotation.Nonnull @JsonProperty(JSON_PROPERTY_CUMULATIVE_GAS_USED) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public Integer getCumulativeGasUsed() { + public Long getCumulativeGasUsed() { return cumulativeGasUsed; } @JsonProperty(JSON_PROPERTY_CUMULATIVE_GAS_USED) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setCumulativeGasUsed(@jakarta.annotation.Nonnull Integer cumulativeGasUsed) { + public void setCumulativeGasUsed(@jakarta.annotation.Nonnull Long cumulativeGasUsed) { this.cumulativeGasUsed = cumulativeGasUsed; } public TransactionReceiptResponse effectiveGasPrice( - @jakarta.annotation.Nonnull Integer effectiveGasPrice) { + @jakarta.annotation.Nonnull Long effectiveGasPrice) { this.effectiveGasPrice = effectiveGasPrice; return this; } @@ -228,13 +228,13 @@ public TransactionReceiptResponse effectiveGasPrice( @jakarta.annotation.Nonnull @JsonProperty(JSON_PROPERTY_EFFECTIVE_GAS_PRICE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public Integer getEffectiveGasPrice() { + public Long getEffectiveGasPrice() { return effectiveGasPrice; } @JsonProperty(JSON_PROPERTY_EFFECTIVE_GAS_PRICE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setEffectiveGasPrice(@jakarta.annotation.Nonnull Integer effectiveGasPrice) { + public void setEffectiveGasPrice(@jakarta.annotation.Nonnull Long effectiveGasPrice) { this.effectiveGasPrice = effectiveGasPrice; } @@ -261,7 +261,7 @@ public void setFrom(@jakarta.annotation.Nonnull String from) { this.from = from; } - public TransactionReceiptResponse gasUsed(@jakarta.annotation.Nonnull Integer gasUsed) { + public TransactionReceiptResponse gasUsed(@jakarta.annotation.Nonnull Long gasUsed) { this.gasUsed = gasUsed; return this; } @@ -274,13 +274,13 @@ public TransactionReceiptResponse gasUsed(@jakarta.annotation.Nonnull Integer ga @jakarta.annotation.Nonnull @JsonProperty(JSON_PROPERTY_GAS_USED) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public Integer getGasUsed() { + public Long getGasUsed() { return gasUsed; } @JsonProperty(JSON_PROPERTY_GAS_USED) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setGasUsed(@jakarta.annotation.Nonnull Integer gasUsed) { + public void setGasUsed(@jakarta.annotation.Nonnull Long gasUsed) { this.gasUsed = gasUsed; } diff --git a/src/main/java/com/fireblocks/sdk/model/TransferDirectionEnum.java b/src/main/java/com/fireblocks/sdk/model/TransferDirectionEnum.java new file mode 100644 index 00000000..426cfb1f --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/TransferDirectionEnum.java @@ -0,0 +1,68 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * A transfer's direction relative to the workspace. Set for `TRANSACTION_SCREENING` + * and `REGISTER_TRANSACTION`; it has no meaning for `ADDRESS_SCREENING`, which + * screens an address on its own. + */ +public enum TransferDirectionEnum { + INBOUND("INBOUND"), + + OUTBOUND("OUTBOUND"); + + private String value; + + TransferDirectionEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static TransferDirectionEnum fromValue(String value) { + for (TransferDirectionEnum b : TransferDirectionEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/TriggerRuleOutcomeEnum.java b/src/main/java/com/fireblocks/sdk/model/TriggerRuleOutcomeEnum.java new file mode 100644 index 00000000..f07f1f7d --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/TriggerRuleOutcomeEnum.java @@ -0,0 +1,72 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * Whether the step's trigger rules caused its connector to run. This is a decision about + * running, not about risk — `ACCEPT`/`REJECT` belong to the outcome fields. - + * `EXECUTE` — a rule called for screening, so the connector ran - `PASS` — a + * rule let the subject through without screening - `FAIL` — the step could not run; see + * `bypassReason` + */ +public enum TriggerRuleOutcomeEnum { + EXECUTE("EXECUTE"), + + PASS("PASS"), + + FAIL("FAIL"); + + private String value; + + TriggerRuleOutcomeEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static TriggerRuleOutcomeEnum fromValue(String value) { + for (TriggerRuleOutcomeEnum b : TriggerRuleOutcomeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/TriggerScreeningRequest.java b/src/main/java/com/fireblocks/sdk/model/TriggerScreeningRequest.java new file mode 100644 index 00000000..a09928cf --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/TriggerScreeningRequest.java @@ -0,0 +1,184 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.Objects; +import java.util.StringJoiner; + +/** Request to trigger a screening against an active workflow. */ +@JsonPropertyOrder({ + TriggerScreeningRequest.JSON_PROPERTY_WORKFLOW_ID, + TriggerScreeningRequest.JSON_PROPERTY_INPUT +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class TriggerScreeningRequest { + public static final String JSON_PROPERTY_WORKFLOW_ID = "workflowId"; + @jakarta.annotation.Nonnull private String workflowId; + + public static final String JSON_PROPERTY_INPUT = "input"; + @jakarta.annotation.Nonnull private ScreeningInput input; + + public TriggerScreeningRequest() {} + + @JsonCreator + public TriggerScreeningRequest( + @JsonProperty(value = JSON_PROPERTY_WORKFLOW_ID, required = true) String workflowId, + @JsonProperty(value = JSON_PROPERTY_INPUT, required = true) ScreeningInput input) { + this.workflowId = workflowId; + this.input = input; + } + + public TriggerScreeningRequest workflowId(@jakarta.annotation.Nonnull String workflowId) { + this.workflowId = workflowId; + return this; + } + + /** + * The workflow to screen against. Must be in `ACTIVE` status. + * + * @return workflowId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_WORKFLOW_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getWorkflowId() { + return workflowId; + } + + @JsonProperty(JSON_PROPERTY_WORKFLOW_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setWorkflowId(@jakarta.annotation.Nonnull String workflowId) { + this.workflowId = workflowId; + } + + public TriggerScreeningRequest input(@jakarta.annotation.Nonnull ScreeningInput input) { + this.input = input; + return this; + } + + /** + * Get input + * + * @return input + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_INPUT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ScreeningInput getInput() { + return input; + } + + @JsonProperty(JSON_PROPERTY_INPUT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setInput(@jakarta.annotation.Nonnull ScreeningInput input) { + this.input = input; + } + + /** Return true if this TriggerScreeningRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TriggerScreeningRequest triggerScreeningRequest = (TriggerScreeningRequest) o; + return Objects.equals(this.workflowId, triggerScreeningRequest.workflowId) + && Objects.equals(this.input, triggerScreeningRequest.input); + } + + @Override + public int hashCode() { + return Objects.hash(workflowId, input); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TriggerScreeningRequest {\n"); + sb.append(" workflowId: ").append(toIndentedString(workflowId)).append("\n"); + sb.append(" input: ").append(toIndentedString(input)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `workflowId` to the URL query string + if (getWorkflowId() != null) { + joiner.add( + String.format( + "%sworkflowId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getWorkflowId())))); + } + + // add `input` to the URL query string + if (getInput() != null) { + joiner.add(getInput().toUrlQueryString(prefix + "input" + suffix)); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/TriggerScreeningResponse.java b/src/main/java/com/fireblocks/sdk/model/TriggerScreeningResponse.java new file mode 100644 index 00000000..9f8c2500 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/TriggerScreeningResponse.java @@ -0,0 +1,193 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.Objects; +import java.util.StringJoiner; + +/** Acknowledgement that a screening was accepted and is now running. */ +@JsonPropertyOrder({ + TriggerScreeningResponse.JSON_PROPERTY_SCREENING_ID, + TriggerScreeningResponse.JSON_PROPERTY_SCREENING_STATUS +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class TriggerScreeningResponse { + public static final String JSON_PROPERTY_SCREENING_ID = "screeningId"; + @jakarta.annotation.Nonnull private String screeningId; + + public static final String JSON_PROPERTY_SCREENING_STATUS = "screeningStatus"; + @jakarta.annotation.Nonnull private ComplianceScreeningStatusEnum screeningStatus; + + public TriggerScreeningResponse() {} + + @JsonCreator + public TriggerScreeningResponse( + @JsonProperty(value = JSON_PROPERTY_SCREENING_ID, required = true) String screeningId, + @JsonProperty(value = JSON_PROPERTY_SCREENING_STATUS, required = true) + ComplianceScreeningStatusEnum screeningStatus) { + this.screeningId = screeningId; + this.screeningStatus = screeningStatus; + } + + public TriggerScreeningResponse screeningId(@jakarta.annotation.Nonnull String screeningId) { + this.screeningId = screeningId; + return this; + } + + /** + * Identifier of the screening that was created. Poll `GET + * /v1/compliance/orchestrator/screenings/{screeningId}` with it for the verdict. + * + * @return screeningId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_SCREENING_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getScreeningId() { + return screeningId; + } + + @JsonProperty(JSON_PROPERTY_SCREENING_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setScreeningId(@jakarta.annotation.Nonnull String screeningId) { + this.screeningId = screeningId; + } + + public TriggerScreeningResponse screeningStatus( + @jakarta.annotation.Nonnull ComplianceScreeningStatusEnum screeningStatus) { + this.screeningStatus = screeningStatus; + return this; + } + + /** + * Get screeningStatus + * + * @return screeningStatus + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_SCREENING_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ComplianceScreeningStatusEnum getScreeningStatus() { + return screeningStatus; + } + + @JsonProperty(JSON_PROPERTY_SCREENING_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setScreeningStatus( + @jakarta.annotation.Nonnull ComplianceScreeningStatusEnum screeningStatus) { + this.screeningStatus = screeningStatus; + } + + /** Return true if this TriggerScreeningResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TriggerScreeningResponse triggerScreeningResponse = (TriggerScreeningResponse) o; + return Objects.equals(this.screeningId, triggerScreeningResponse.screeningId) + && Objects.equals(this.screeningStatus, triggerScreeningResponse.screeningStatus); + } + + @Override + public int hashCode() { + return Objects.hash(screeningId, screeningStatus); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TriggerScreeningResponse {\n"); + sb.append(" screeningId: ").append(toIndentedString(screeningId)).append("\n"); + sb.append(" screeningStatus: ").append(toIndentedString(screeningStatus)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `screeningId` to the URL query string + if (getScreeningId() != null) { + joiner.add( + String.format( + "%sscreeningId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getScreeningId())))); + } + + // add `screeningStatus` to the URL query string + if (getScreeningStatus() != null) { + joiner.add( + String.format( + "%sscreeningStatus%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getScreeningStatus())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/UpdateWebhookOauthRequest.java b/src/main/java/com/fireblocks/sdk/model/UpdateWebhookOauthRequest.java index 8fc10a4e..d581a264 100644 --- a/src/main/java/com/fireblocks/sdk/model/UpdateWebhookOauthRequest.java +++ b/src/main/java/com/fireblocks/sdk/model/UpdateWebhookOauthRequest.java @@ -26,11 +26,10 @@ * A partial update. Every field is optional and an omitted field is left as it is, so `{ * \"clientSecret\": \"new-secret\" }` rotates the secret and changes * nothing else. A rotation applies to every webhook referencing these credentials. The three custom - * maps merge: a key with a value is upserted, a key with `null` is deleted, a key you - * leave out is untouched. Because `null` inside a map means delete, none of the three is - * nullable as a whole — `customJwtClaims: null` and friends are rejected with a - * `400`. Clear a map by naming each key with a `null` value. - * `mtlsClientSignedCert` is a scalar, so `null` there does remove it. + * maps merge. A key with a value is upserted, a key with `null` is deleted, a key you + * leave out is untouched, and the whole field set to `null` clears the map. There is no + * ambiguity between the two uses of `null` — one names an entry, the other names the + * field. `mtlsClientSignedCert` is a scalar, so `null` there removes it. */ @JsonPropertyOrder({ UpdateWebhookOauthRequest.JSON_PROPERTY_NAME, @@ -307,8 +306,9 @@ public UpdateWebhookOauthRequest putCustomHeadersItem(String key, String customH * names the header to delete, the other names the whole field. Names are case-insensitive, so a * `null` under one casing deletes a header stored under another, and names are stored * and returned lowercased. Same rules as on create: string values only, - * `Content-Type`/`Content-Length`/`Host` reserved, resulting set - * under 16 KB, values write-only. + * `Content-Type`, `Content-Length` and `Host` reserved, + * `Authorization` only with `client_secret_post` or + * `client_secret_jwt`, resulting set under 16 KB, values write-only. * * @return customHeaders */ diff --git a/src/main/java/com/fireblocks/sdk/model/UpdateWebhookRequest.java b/src/main/java/com/fireblocks/sdk/model/UpdateWebhookRequest.java index 5046a639..a3a80b8f 100644 --- a/src/main/java/com/fireblocks/sdk/model/UpdateWebhookRequest.java +++ b/src/main/java/com/fireblocks/sdk/model/UpdateWebhookRequest.java @@ -194,7 +194,8 @@ public UpdateWebhookRequest webhookOauthId(@jakarta.annotation.Nullable UUID web * The id of the OAuth credentials this webhook authenticates with, from * `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so * rotating its client secret covers all of them at once. Send `null` to stop using - * OAuth for this webhook. + * OAuth for this webhook. Cannot be combined with an `authorization` custom header on + * the same webhook; a request that would leave both set is rejected. * * @return webhookOauthId */ @@ -233,9 +234,11 @@ public UpdateWebhookRequest putCustomHeadersItem(String key, Object customHeader * call. That does not collide with a `null` value on a name: one names the header to * delete, the other names the whole field. Names are case-insensitive, so a `null` * under one casing deletes a header stored under another. Same rules as on create: string or - * non-empty array, `Cookie` string-only, 10 lines total and under 16 KB in the - * resulting set, the same reserved names, and values write-only. Entries set to - * `null` do not count towards the limit. + * non-empty array, `Cookie` and `Authorization` string-only, 10 headers and + * under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set + * to `null` do not count towards the limit. `Authorization` cannot be + * combined with `webhookOauthId`, though one request may add it and detach the + * credentials together. * * @return customHeaders */ diff --git a/src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequest.java b/src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequest.java new file mode 100644 index 00000000..65a2ce24 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequest.java @@ -0,0 +1,148 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.Objects; +import java.util.StringJoiner; + +/** Request to change a workflow's status. */ +@JsonPropertyOrder({UpdateWorkflowStatusRequest.JSON_PROPERTY_STATUS}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class UpdateWorkflowStatusRequest { + public static final String JSON_PROPERTY_STATUS = "status"; + @jakarta.annotation.Nonnull private WorkflowStatusEnum status; + + public UpdateWorkflowStatusRequest() {} + + @JsonCreator + public UpdateWorkflowStatusRequest( + @JsonProperty(value = JSON_PROPERTY_STATUS, required = true) + WorkflowStatusEnum status) { + this.status = status; + } + + public UpdateWorkflowStatusRequest status( + @jakarta.annotation.Nonnull WorkflowStatusEnum status) { + this.status = status; + return this; + } + + /** + * Get status + * + * @return status + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WorkflowStatusEnum getStatus() { + return status; + } + + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setStatus(@jakarta.annotation.Nonnull WorkflowStatusEnum status) { + this.status = status; + } + + /** Return true if this UpdateWorkflowStatusRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + UpdateWorkflowStatusRequest updateWorkflowStatusRequest = (UpdateWorkflowStatusRequest) o; + return Objects.equals(this.status, updateWorkflowStatusRequest.status); + } + + @Override + public int hashCode() { + return Objects.hash(status); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class UpdateWorkflowStatusRequest {\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `status` to the URL query string + if (getStatus() != null) { + joiner.add( + String.format( + "%sstatus%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getStatus())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponse.java b/src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponse.java new file mode 100644 index 00000000..da9c2eb6 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponse.java @@ -0,0 +1,192 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fireblocks.sdk.ApiClient; +import java.util.Objects; +import java.util.StringJoiner; + +/** The workflow's status after the update. */ +@JsonPropertyOrder({ + UpdateWorkflowStatusResponse.JSON_PROPERTY_WORKFLOW_ID, + UpdateWorkflowStatusResponse.JSON_PROPERTY_STATUS +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class UpdateWorkflowStatusResponse { + public static final String JSON_PROPERTY_WORKFLOW_ID = "workflowId"; + @jakarta.annotation.Nonnull private String workflowId; + + public static final String JSON_PROPERTY_STATUS = "status"; + @jakarta.annotation.Nonnull private WorkflowStatusEnum status; + + public UpdateWorkflowStatusResponse() {} + + @JsonCreator + public UpdateWorkflowStatusResponse( + @JsonProperty(value = JSON_PROPERTY_WORKFLOW_ID, required = true) String workflowId, + @JsonProperty(value = JSON_PROPERTY_STATUS, required = true) + WorkflowStatusEnum status) { + this.workflowId = workflowId; + this.status = status; + } + + public UpdateWorkflowStatusResponse workflowId(@jakarta.annotation.Nonnull String workflowId) { + this.workflowId = workflowId; + return this; + } + + /** + * Unique identifier of the workflow. + * + * @return workflowId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_WORKFLOW_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getWorkflowId() { + return workflowId; + } + + @JsonProperty(JSON_PROPERTY_WORKFLOW_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setWorkflowId(@jakarta.annotation.Nonnull String workflowId) { + this.workflowId = workflowId; + } + + public UpdateWorkflowStatusResponse status( + @jakarta.annotation.Nonnull WorkflowStatusEnum status) { + this.status = status; + return this; + } + + /** + * Get status + * + * @return status + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WorkflowStatusEnum getStatus() { + return status; + } + + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setStatus(@jakarta.annotation.Nonnull WorkflowStatusEnum status) { + this.status = status; + } + + /** Return true if this UpdateWorkflowStatusResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + UpdateWorkflowStatusResponse updateWorkflowStatusResponse = + (UpdateWorkflowStatusResponse) o; + return Objects.equals(this.workflowId, updateWorkflowStatusResponse.workflowId) + && Objects.equals(this.status, updateWorkflowStatusResponse.status); + } + + @Override + public int hashCode() { + return Objects.hash(workflowId, status); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class UpdateWorkflowStatusResponse {\n"); + sb.append(" workflowId: ").append(toIndentedString(workflowId)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first + * line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + // add `workflowId` to the URL query string + if (getWorkflowId() != null) { + joiner.add( + String.format( + "%sworkflowId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getWorkflowId())))); + } + + // add `status` to the URL query string + if (getStatus() != null) { + joiner.add( + String.format( + "%sstatus%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getStatus())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponse.java b/src/main/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponse.java index cb0ffdc6..6c1a97e8 100644 --- a/src/main/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponse.java +++ b/src/main/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponse.java @@ -22,7 +22,10 @@ import java.util.StringJoiner; /** mTLS Certificate Signing Request response */ -@JsonPropertyOrder({WebhookMtlsCsrResponse.JSON_PROPERTY_CSR}) +@JsonPropertyOrder({ + WebhookMtlsCsrResponse.JSON_PROPERTY_CSR, + WebhookMtlsCsrResponse.JSON_PROPERTY_KEY_ALGORITHM +}) @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.14.0") @@ -30,12 +33,18 @@ public class WebhookMtlsCsrResponse { public static final String JSON_PROPERTY_CSR = "csr"; @jakarta.annotation.Nonnull private String csr; + public static final String JSON_PROPERTY_KEY_ALGORITHM = "keyAlgorithm"; + @jakarta.annotation.Nonnull private WebhookMtlsKeyAlgorithm keyAlgorithm; + public WebhookMtlsCsrResponse() {} @JsonCreator public WebhookMtlsCsrResponse( - @JsonProperty(value = JSON_PROPERTY_CSR, required = true) String csr) { + @JsonProperty(value = JSON_PROPERTY_CSR, required = true) String csr, + @JsonProperty(value = JSON_PROPERTY_KEY_ALGORITHM, required = true) + WebhookMtlsKeyAlgorithm keyAlgorithm) { this.csr = csr; + this.keyAlgorithm = keyAlgorithm; } public WebhookMtlsCsrResponse csr(@jakarta.annotation.Nonnull String csr) { @@ -61,6 +70,30 @@ public void setCsr(@jakarta.annotation.Nonnull String csr) { this.csr = csr; } + public WebhookMtlsCsrResponse keyAlgorithm( + @jakarta.annotation.Nonnull WebhookMtlsKeyAlgorithm keyAlgorithm) { + this.keyAlgorithm = keyAlgorithm; + return this; + } + + /** + * Get keyAlgorithm + * + * @return keyAlgorithm + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_KEY_ALGORITHM) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebhookMtlsKeyAlgorithm getKeyAlgorithm() { + return keyAlgorithm; + } + + @JsonProperty(JSON_PROPERTY_KEY_ALGORITHM) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setKeyAlgorithm(@jakarta.annotation.Nonnull WebhookMtlsKeyAlgorithm keyAlgorithm) { + this.keyAlgorithm = keyAlgorithm; + } + /** Return true if this WebhookMtlsCsrResponse object is equal to o. */ @Override public boolean equals(Object o) { @@ -71,12 +104,13 @@ public boolean equals(Object o) { return false; } WebhookMtlsCsrResponse webhookMtlsCsrResponse = (WebhookMtlsCsrResponse) o; - return Objects.equals(this.csr, webhookMtlsCsrResponse.csr); + return Objects.equals(this.csr, webhookMtlsCsrResponse.csr) + && Objects.equals(this.keyAlgorithm, webhookMtlsCsrResponse.keyAlgorithm); } @Override public int hashCode() { - return Objects.hash(csr); + return Objects.hash(csr, keyAlgorithm); } @Override @@ -84,6 +118,7 @@ public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class WebhookMtlsCsrResponse {\n"); sb.append(" csr: ").append(toIndentedString(csr)).append("\n"); + sb.append(" keyAlgorithm: ").append(toIndentedString(keyAlgorithm)).append("\n"); sb.append("}"); return sb.toString(); } @@ -141,6 +176,16 @@ public String toUrlQueryString(String prefix) { ApiClient.urlEncode(ApiClient.valueToString(getCsr())))); } + // add `keyAlgorithm` to the URL query string + if (getKeyAlgorithm() != null) { + joiner.add( + String.format( + "%skeyAlgorithm%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getKeyAlgorithm())))); + } + return joiner.toString(); } } diff --git a/src/main/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithm.java b/src/main/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithm.java new file mode 100644 index 00000000..00f6c54c --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithm.java @@ -0,0 +1,69 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * Algorithm of the Fireblocks-held mTLS private key. A workspace may hold one key of each type, so + * a CSR is always returned for the type requested, and the type is echoed back on the response. + * ECDSA keys are smaller and quicker to issue, but the certificate authority signing the request + * has to accept an EC subject key, which some do not by default. + */ +public enum WebhookMtlsKeyAlgorithm { + RSA("RSA"), + + ECDSA("ECDSA"); + + private String value; + + WebhookMtlsKeyAlgorithm(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static WebhookMtlsKeyAlgorithm fromValue(String value) { + for (WebhookMtlsKeyAlgorithm b : WebhookMtlsKeyAlgorithm.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/WebhookOauthCredentials.java b/src/main/java/com/fireblocks/sdk/model/WebhookOauthCredentials.java index 9bb882ec..9ead7874 100644 --- a/src/main/java/com/fireblocks/sdk/model/WebhookOauthCredentials.java +++ b/src/main/java/com/fireblocks/sdk/model/WebhookOauthCredentials.java @@ -26,11 +26,12 @@ /** * A stored OAuth 2.0 client credential set, referenced by webhooks through their - * `webhookOauthId`. When a webhook references one, the dispatcher fetches a bearer token - * from `url` before each delivery and attaches it as `Authorization: Bearer - * {token}`. Secret material is never returned: `clientSecret` is absent from this - * schema entirely, and the `customJwtClaims`, `customBodyParams` and - * `customHeaders` fields are reduced to their names, without the configured values. + * `webhookOauthId`. Deliveries for a webhook that references one carry + * `Authorization: Bearer {token}`, using a token fetched from `url` and cached + * until it expires, so your authorization server sees far fewer token requests than deliveries. + * Secret material is never returned: `clientSecret` is absent from this schema entirely, + * and the `customJwtClaims`, `customBodyParams` and `customHeaders` + * fields are reduced to their names, without the configured values. */ @JsonPropertyOrder({ WebhookOauthCredentials.JSON_PROPERTY_ID, diff --git a/src/main/java/com/fireblocks/sdk/model/WorkflowStatusEnum.java b/src/main/java/com/fireblocks/sdk/model/WorkflowStatusEnum.java new file mode 100644 index 00000000..3fb0f030 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/WorkflowStatusEnum.java @@ -0,0 +1,69 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * A workflow's status, which controls whether it can be screened against. - `DRAFT` — + * the editing state. Rules can be changed while nothing is screening against them, so a screening + * never runs against a half-finished configuration. - `ACTIVE` — `POST + * /v1/compliance/orchestrator/screenings` accepts screenings against this workflow. + */ +public enum WorkflowStatusEnum { + ACTIVE("ACTIVE"), + + DRAFT("DRAFT"); + + private String value; + + WorkflowStatusEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static WorkflowStatusEnum fromValue(String value) { + for (WorkflowStatusEnum b : WorkflowStatusEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + if (prefix == null) { + prefix = ""; + } + + return String.format("%s=%s", prefix, this.toString()); + } +} diff --git a/src/test/java/com/fireblocks/sdk/FireblocksTest.java b/src/test/java/com/fireblocks/sdk/FireblocksTest.java index d1baf9ed..6d6e2e23 100644 --- a/src/test/java/com/fireblocks/sdk/FireblocksTest.java +++ b/src/test/java/com/fireblocks/sdk/FireblocksTest.java @@ -403,6 +403,15 @@ public void testGetComplianceApi() { Assert.assertSame(compliance, fireblocks.compliance()); } + @Test + public void testGetComplianceOrchestratorBetaApi() { + setupFireblocks(true, null, null); + ComplianceOrchestratorBetaApi complianceOrchestratorBeta = + fireblocks.complianceOrchestratorBeta(); + Assert.assertNotNull(complianceOrchestratorBeta); + Assert.assertSame(complianceOrchestratorBeta, fireblocks.complianceOrchestratorBeta()); + } + @Test public void testGetComplianceScreeningConfigurationApi() { setupFireblocks(true, null, null); diff --git a/src/test/java/com/fireblocks/sdk/api/ApprovalsBetaApiTest.java b/src/test/java/com/fireblocks/sdk/api/ApprovalsBetaApiTest.java index 3d64420e..3c8ace41 100644 --- a/src/test/java/com/fireblocks/sdk/api/ApprovalsBetaApiTest.java +++ b/src/test/java/com/fireblocks/sdk/api/ApprovalsBetaApiTest.java @@ -15,7 +15,11 @@ import com.fireblocks.sdk.ApiResponse; import com.fireblocks.sdk.model.ApprovalRequestItem; +import com.fireblocks.sdk.model.ApproveApprovalRequest; +import com.fireblocks.sdk.model.ListApprovalApiKeysResponse; import com.fireblocks.sdk.model.ListApprovalsResponse; +import com.fireblocks.sdk.model.RegisterApprovalApiKeyRequest; +import com.fireblocks.sdk.model.RegisterApprovalApiKeyResponse; import java.util.concurrent.CompletableFuture; import org.junit.Ignore; import org.junit.Test; @@ -26,6 +30,62 @@ public class ApprovalsBetaApiTest { private final ApprovalsBetaApi api = new ApprovalsBetaApi(); + /** + * Approve an approval request + * + *

Approve a pending approval request as the authenticated API user. The caller signs the + * request's signable data with the private key of a registered approval API key and submits + * the base64url-encoded signature, optionally with the key ID. The server verifies the + * signature against the registered public key — using the given key ID, or matching against all + * of the user's registered keys when the key ID is omitted — and advances the approval + * quorum. Endpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security + * Admin. + */ + @Test + public void approveApprovalTest() { + ApproveApprovalRequest approveApprovalRequest = null; + String requestId = null; + String idempotencyKey = null; + + CompletableFuture> response = + api.approveApproval(approveApprovalRequest, requestId, idempotencyKey); + } + + /** + * Register an approval key + * + *

Register an approval public key for an API user, used to sign approval requests. Up to 2 + * active keys are supported per API user. Returns the server-generated key ID used for + * deletion. The `userId` must be the authenticated API user's own ID. Registering + * a key for another user is not supported and is rejected. Endpoint Permission: Owner, Admin, + * Non-Signing Admin, Approver, Signer, Security Admin. + */ + @Test + public void createApprovalKeyTest() { + RegisterApprovalApiKeyRequest registerApprovalApiKeyRequest = null; + String userId = null; + String idempotencyKey = null; + CompletableFuture> response = + api.createApprovalKey(registerApprovalApiKeyRequest, userId, idempotencyKey); + } + + /** + * Delete an approval key + * + *

Delete (revoke) an approval public key for the specified API user. Revoking the last key + * disables the API user's ability to sign approvals. Endpoint Permission: Owner, Admin, + * Non-Signing Admin, Approver, Signer, Security Admin. + */ + @Test + public void deleteApprovalKeyTest() { + String userId = null; + String keyId = null; + String idempotencyKey = null; + + CompletableFuture> response = + api.deleteApprovalKey(userId, keyId, idempotencyKey); + } + /** * Get a single approval request * @@ -46,6 +106,21 @@ public void getApprovalByIdTest() { api.getApprovalById(requestId, userId, quorumStatusMode); } + /** + * List approval keys + * + *

List the approval public keys registered for the specified API user. Endpoint Permission: + * Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin, Security Auditor. + */ + @Test + public void getApprovalKeysTest() { + String userId = null; + Integer pageSize = null; + String pageCursor = null; + CompletableFuture> response = + api.getApprovalKeys(userId, pageSize, pageCursor); + } + /** * List approval requests * diff --git a/src/test/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApiTest.java b/src/test/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApiTest.java new file mode 100644 index 00000000..c813492f --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApiTest.java @@ -0,0 +1,93 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.api; + + +import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.model.GetScreeningResultResponse; +import com.fireblocks.sdk.model.GetWorkflowResponse; +import com.fireblocks.sdk.model.TriggerScreeningRequest; +import com.fireblocks.sdk.model.TriggerScreeningResponse; +import com.fireblocks.sdk.model.UpdateWorkflowStatusRequest; +import com.fireblocks.sdk.model.UpdateWorkflowStatusResponse; +import java.util.concurrent.CompletableFuture; +import org.junit.Ignore; +import org.junit.Test; + +/** API tests for ComplianceOrchestratorBetaApi */ +@Ignore +public class ComplianceOrchestratorBetaApiTest { + + private final ComplianceOrchestratorBetaApi api = new ComplianceOrchestratorBetaApi(); + + /** + * Get a Compliance Orchestrator screening's result + * + *

Returns the result of a screening started by `POST + * /v1/compliance/orchestrator/screenings`, with a result per workflow step and an audit + * log. Safe to poll: a screening still in flight reports `PENDING` or + * `RUNNING`. Only screenings owned by the requesting tenant are returned. + */ + @Test + public void getScreeningResultTest() { + String screeningId = null; + CompletableFuture> response = + api.getScreeningResult(screeningId); + } + + /** + * Get a Compliance Orchestrator workflow + * + *

Returns a workflow's status and its steps in execution order. Read it to see what a + * given `workflowId` will screen, and which fields its rules may reference. + */ + @Test + public void getWorkflowTest() { + String workflowId = null; + CompletableFuture> response = api.getWorkflow(workflowId); + } + + /** + * Trigger a Compliance Orchestrator screening + * + *

Starts a compliance screening against an active workflow and returns a + * `screeningId`. The screening runs asynchronously — poll `GET + * /v1/compliance/orchestrator/screenings/{screeningId}` for the result. Unlike the + * screening that applies automatically to submitted transactions under + * `/v1/screening`, this is called on demand, before anything exists on-chain. + */ + @Test + public void triggerScreeningTest() { + TriggerScreeningRequest triggerScreeningRequest = null; + String idempotencyKey = null; + CompletableFuture> response = + api.triggerScreening(triggerScreeningRequest, idempotencyKey); + } + + /** + * Update a Compliance Orchestrator workflow's status + * + *

Moves a workflow between `DRAFT` and `ACTIVE`. A workflow must be + * `ACTIVE` before `POST /v1/compliance/orchestrator/screenings` will accept + * a screening against it. Returns the workflow's id and new status, not its full + * configuration. + */ + @Test + public void updateWorkflowStatusTest() { + UpdateWorkflowStatusRequest updateWorkflowStatusRequest = null; + String workflowId = null; + String idempotencyKey = null; + CompletableFuture> response = + api.updateWorkflowStatus(updateWorkflowStatusRequest, workflowId, idempotencyKey); + } +} diff --git a/src/test/java/com/fireblocks/sdk/api/WebhooksV2ApiTest.java b/src/test/java/com/fireblocks/sdk/api/WebhooksV2ApiTest.java index 04a1b8d4..bf44c4a4 100644 --- a/src/test/java/com/fireblocks/sdk/api/WebhooksV2ApiTest.java +++ b/src/test/java/com/fireblocks/sdk/api/WebhooksV2ApiTest.java @@ -131,12 +131,19 @@ public void getMetricsTest() { /** * Get mTLS CSR * - *

Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use to - * generate their signed client certificate. + *

Returns the Certificate Signing Request (CSR) PEM that customers use to generate their + * signed client certificate. The private key the CSR is built from is held by Fireblocks and is + * specific to this workspace. It is created on the first request for a given key type, and the + * same CSR is returned on subsequent requests for that type. Pass `keyAlgorithm` to + * choose RSA or ECDSA. A workspace may hold one key of each: the CSR returned is always the one + * for the type requested, so a certificate signed against it matches the key used at delivery + * time. */ @Test public void getMtlsCsrTest() { - CompletableFuture> response = api.getMtlsCsr(); + String keyAlgorithm = null; + CompletableFuture> response = + api.getMtlsCsr(keyAlgorithm); } /** @@ -359,14 +366,13 @@ public void updateWebhookTest() { * `customHeaders` are all merged key by key rather than replaced, the same way a * webhook's own `customHeaders` behaves: a key sent with a value is added or * overwritten, a key sent with a `null` value is deleted, and a key you omit is left - * alone. Since a `null` inside a map is the delete mechanism, none of the three - * accepts `null` for the whole field — `customJwtClaims: null`, - * `customBodyParams: null` or `customHeaders: null` is rejected with a - * `400` rather than ignored. Clear a map by listing each of its keys with a - * `null` value. Because `null` is spent on deletion, a claim cannot be set - * to JSON `null` either, on this endpoint or on create. - * `mtlsClientSignedCert` is a scalar rather than a map, so `null` there - * does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin. + * alone. Setting one of the three to `null` as a whole clears that map, which is the + * quick way to empty it without naming every key. There is no ambiguity between the two uses of + * `null` — one names an entry to delete, the other names the field. A claim cannot be + * set to JSON `null`, though, on this endpoint or on create, because `null` + * is spent on deletion. `mtlsClientSignedCert` is a scalar rather than a map, so + * `null` there does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing + * Admin. */ @Test public void updateWebhookOauthTest() { diff --git a/src/test/java/com/fireblocks/sdk/model/ApprovalApiKeyTest.java b/src/test/java/com/fireblocks/sdk/model/ApprovalApiKeyTest.java new file mode 100644 index 00000000..67121595 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ApprovalApiKeyTest.java @@ -0,0 +1,63 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ApprovalApiKey */ +class ApprovalApiKeyTest { + private final ApprovalApiKey model = new ApprovalApiKey(); + + /** Model tests for ApprovalApiKey */ + @Test + void testApprovalApiKey() { + // TODO: test ApprovalApiKey + } + + /** Test the property 'id' */ + @Test + void idTest() { + // TODO: test id + } + + /** Test the property 'name' */ + @Test + void nameTest() { + // TODO: test name + } + + /** Test the property 'createdAt' */ + @Test + void createdAtTest() { + // TODO: test createdAt + } + + /** Test the property 'lastUsedAt' */ + @Test + void lastUsedAtTest() { + // TODO: test lastUsedAt + } + + /** Test the property 'approvalApiPublicKey' */ + @Test + void approvalApiPublicKeyTest() { + // TODO: test approvalApiPublicKey + } + + /** Test the property 'userId' */ + @Test + void userIdTest() { + // TODO: test userId + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ApprovalApiPublicKeyTest.java b/src/test/java/com/fireblocks/sdk/model/ApprovalApiPublicKeyTest.java new file mode 100644 index 00000000..cafb6ade --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ApprovalApiPublicKeyTest.java @@ -0,0 +1,39 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ApprovalApiPublicKey */ +class ApprovalApiPublicKeyTest { + private final ApprovalApiPublicKey model = new ApprovalApiPublicKey(); + + /** Model tests for ApprovalApiPublicKey */ + @Test + void testApprovalApiPublicKey() { + // TODO: test ApprovalApiPublicKey + } + + /** Test the property 'algorithm' */ + @Test + void algorithmTest() { + // TODO: test algorithm + } + + /** Test the property 'publicKeyPem' */ + @Test + void publicKeyPemTest() { + // TODO: test publicKeyPem + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ApproveApprovalRequestTest.java b/src/test/java/com/fireblocks/sdk/model/ApproveApprovalRequestTest.java new file mode 100644 index 00000000..2278d38d --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ApproveApprovalRequestTest.java @@ -0,0 +1,39 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ApproveApprovalRequest */ +class ApproveApprovalRequestTest { + private final ApproveApprovalRequest model = new ApproveApprovalRequest(); + + /** Model tests for ApproveApprovalRequest */ + @Test + void testApproveApprovalRequest() { + // TODO: test ApproveApprovalRequest + } + + /** Test the property 'keyId' */ + @Test + void keyIdTest() { + // TODO: test keyId + } + + /** Test the property 'signature' */ + @Test + void signatureTest() { + // TODO: test signature + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/AuditEventTypeEnumTest.java b/src/test/java/com/fireblocks/sdk/model/AuditEventTypeEnumTest.java new file mode 100644 index 00000000..ad99233b --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/AuditEventTypeEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for AuditEventTypeEnum */ +class AuditEventTypeEnumTest { + /** Model tests for AuditEventTypeEnum */ + @Test + void testAuditEventTypeEnum() { + // TODO: test AuditEventTypeEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/AuditLogEntryTest.java b/src/test/java/com/fireblocks/sdk/model/AuditLogEntryTest.java new file mode 100644 index 00000000..ad808b40 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/AuditLogEntryTest.java @@ -0,0 +1,45 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for AuditLogEntry */ +class AuditLogEntryTest { + private final AuditLogEntry model = new AuditLogEntry(); + + /** Model tests for AuditLogEntry */ + @Test + void testAuditLogEntry() { + // TODO: test AuditLogEntry + } + + /** Test the property 'timestamp' */ + @Test + void timestampTest() { + // TODO: test timestamp + } + + /** Test the property 'eventType' */ + @Test + void eventTypeTest() { + // TODO: test eventType + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/BypassReasonEnumTest.java b/src/test/java/com/fireblocks/sdk/model/BypassReasonEnumTest.java new file mode 100644 index 00000000..f9368c3c --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/BypassReasonEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for BypassReasonEnum */ +class BypassReasonEnumTest { + /** Model tests for BypassReasonEnum */ + @Test + void testBypassReasonEnum() { + // TODO: test BypassReasonEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ComplianceScreeningStatusEnumTest.java b/src/test/java/com/fireblocks/sdk/model/ComplianceScreeningStatusEnumTest.java new file mode 100644 index 00000000..1e6710fb --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ComplianceScreeningStatusEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ComplianceScreeningStatusEnum */ +class ComplianceScreeningStatusEnumTest { + /** Model tests for ComplianceScreeningStatusEnum */ + @Test + void testComplianceScreeningStatusEnum() { + // TODO: test ComplianceScreeningStatusEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ConnectorStatusEnumTest.java b/src/test/java/com/fireblocks/sdk/model/ConnectorStatusEnumTest.java new file mode 100644 index 00000000..3b6da5c0 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ConnectorStatusEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ConnectorStatusEnum */ +class ConnectorStatusEnumTest { + /** Model tests for ConnectorStatusEnum */ + @Test + void testConnectorStatusEnum() { + // TODO: test ConnectorStatusEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ConnectorVerdictEnumTest.java b/src/test/java/com/fireblocks/sdk/model/ConnectorVerdictEnumTest.java new file mode 100644 index 00000000..61caa0cd --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ConnectorVerdictEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ConnectorVerdictEnum */ +class ConnectorVerdictEnumTest { + /** Model tests for ConnectorVerdictEnum */ + @Test + void testConnectorVerdictEnum() { + // TODO: test ConnectorVerdictEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/GetScreeningResultResponseTest.java b/src/test/java/com/fireblocks/sdk/model/GetScreeningResultResponseTest.java new file mode 100644 index 00000000..14c8a6e0 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/GetScreeningResultResponseTest.java @@ -0,0 +1,63 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for GetScreeningResultResponse */ +class GetScreeningResultResponseTest { + private final GetScreeningResultResponse model = new GetScreeningResultResponse(); + + /** Model tests for GetScreeningResultResponse */ + @Test + void testGetScreeningResultResponse() { + // TODO: test GetScreeningResultResponse + } + + /** Test the property 'screeningId' */ + @Test + void screeningIdTest() { + // TODO: test screeningId + } + + /** Test the property 'workflowId' */ + @Test + void workflowIdTest() { + // TODO: test workflowId + } + + /** Test the property 'screeningStatus' */ + @Test + void screeningStatusTest() { + // TODO: test screeningStatus + } + + /** Test the property 'outcome' */ + @Test + void outcomeTest() { + // TODO: test outcome + } + + /** Test the property 'steps' */ + @Test + void stepsTest() { + // TODO: test steps + } + + /** Test the property 'auditLog' */ + @Test + void auditLogTest() { + // TODO: test auditLog + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/GetWorkflowResponseTest.java b/src/test/java/com/fireblocks/sdk/model/GetWorkflowResponseTest.java new file mode 100644 index 00000000..8a8d6ef4 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/GetWorkflowResponseTest.java @@ -0,0 +1,69 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for GetWorkflowResponse */ +class GetWorkflowResponseTest { + private final GetWorkflowResponse model = new GetWorkflowResponse(); + + /** Model tests for GetWorkflowResponse */ + @Test + void testGetWorkflowResponse() { + // TODO: test GetWorkflowResponse + } + + /** Test the property 'workflowId' */ + @Test + void workflowIdTest() { + // TODO: test workflowId + } + + /** Test the property 'templateId' */ + @Test + void templateIdTest() { + // TODO: test templateId + } + + /** Test the property 'status' */ + @Test + void statusTest() { + // TODO: test status + } + + /** Test the property 'title' */ + @Test + void titleTest() { + // TODO: test title + } + + /** Test the property 'description' */ + @Test + void descriptionTest() { + // TODO: test description + } + + /** Test the property 'createdAt' */ + @Test + void createdAtTest() { + // TODO: test createdAt + } + + /** Test the property 'steps' */ + @Test + void stepsTest() { + // TODO: test steps + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/InternalTransferResponseTest.java b/src/test/java/com/fireblocks/sdk/model/InternalTransferResponseTest.java index c902560c..6b76aff1 100644 --- a/src/test/java/com/fireblocks/sdk/model/InternalTransferResponseTest.java +++ b/src/test/java/com/fireblocks/sdk/model/InternalTransferResponseTest.java @@ -36,4 +36,16 @@ void successTest() { void idTest() { // TODO: test id } + + /** Test the property 'status' */ + @Test + void statusTest() { + // TODO: test status + } + + /** Test the property 'systemMessages' */ + @Test + void systemMessagesTest() { + // TODO: test systemMessages + } } diff --git a/src/test/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponseTest.java b/src/test/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponseTest.java new file mode 100644 index 00000000..c53d4705 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponseTest.java @@ -0,0 +1,39 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ListApprovalApiKeysResponse */ +class ListApprovalApiKeysResponseTest { + private final ListApprovalApiKeysResponse model = new ListApprovalApiKeysResponse(); + + /** Model tests for ListApprovalApiKeysResponse */ + @Test + void testListApprovalApiKeysResponse() { + // TODO: test ListApprovalApiKeysResponse + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } + + /** Test the property 'next' */ + @Test + void nextTest() { + // TODO: test next + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyRequestTest.java b/src/test/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyRequestTest.java new file mode 100644 index 00000000..0a8e1489 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyRequestTest.java @@ -0,0 +1,39 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for RegisterApprovalApiKeyRequest */ +class RegisterApprovalApiKeyRequestTest { + private final RegisterApprovalApiKeyRequest model = new RegisterApprovalApiKeyRequest(); + + /** Model tests for RegisterApprovalApiKeyRequest */ + @Test + void testRegisterApprovalApiKeyRequest() { + // TODO: test RegisterApprovalApiKeyRequest + } + + /** Test the property 'name' */ + @Test + void nameTest() { + // TODO: test name + } + + /** Test the property 'approvalApiPublicKey' */ + @Test + void approvalApiPublicKeyTest() { + // TODO: test approvalApiPublicKey + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyResponseTest.java b/src/test/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyResponseTest.java new file mode 100644 index 00000000..0f748c86 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/RegisterApprovalApiKeyResponseTest.java @@ -0,0 +1,33 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for RegisterApprovalApiKeyResponse */ +class RegisterApprovalApiKeyResponseTest { + private final RegisterApprovalApiKeyResponse model = new RegisterApprovalApiKeyResponse(); + + /** Model tests for RegisterApprovalApiKeyResponse */ + @Test + void testRegisterApprovalApiKeyResponse() { + // TODO: test RegisterApprovalApiKeyResponse + } + + /** Test the property 'keyId' */ + @Test + void keyIdTest() { + // TODO: test keyId + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/RiskLevelEnumTest.java b/src/test/java/com/fireblocks/sdk/model/RiskLevelEnumTest.java new file mode 100644 index 00000000..07256481 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/RiskLevelEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for RiskLevelEnum */ +class RiskLevelEnumTest { + /** Model tests for RiskLevelEnum */ + @Test + void testRiskLevelEnum() { + // TODO: test RiskLevelEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/RuleActionEnumTest.java b/src/test/java/com/fireblocks/sdk/model/RuleActionEnumTest.java new file mode 100644 index 00000000..c74278a7 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/RuleActionEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for RuleActionEnum */ +class RuleActionEnumTest { + /** Model tests for RuleActionEnum */ + @Test + void testRuleActionEnum() { + // TODO: test RuleActionEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/RuleConditionOperatorEnumTest.java b/src/test/java/com/fireblocks/sdk/model/RuleConditionOperatorEnumTest.java new file mode 100644 index 00000000..7eac876a --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/RuleConditionOperatorEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for RuleConditionOperatorEnum */ +class RuleConditionOperatorEnumTest { + /** Model tests for RuleConditionOperatorEnum */ + @Test + void testRuleConditionOperatorEnum() { + // TODO: test RuleConditionOperatorEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/RuleConditionTest.java b/src/test/java/com/fireblocks/sdk/model/RuleConditionTest.java new file mode 100644 index 00000000..472bd8f0 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/RuleConditionTest.java @@ -0,0 +1,45 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for RuleCondition */ +class RuleConditionTest { + private final RuleCondition model = new RuleCondition(); + + /** Model tests for RuleCondition */ + @Test + void testRuleCondition() { + // TODO: test RuleCondition + } + + /** Test the property 'field' */ + @Test + void fieldTest() { + // TODO: test field + } + + /** Test the property 'operator' */ + @Test + void operatorTest() { + // TODO: test operator + } + + /** Test the property 'value' */ + @Test + void valueTest() { + // TODO: test value + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/RuleSetTest.java b/src/test/java/com/fireblocks/sdk/model/RuleSetTest.java new file mode 100644 index 00000000..2330684c --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/RuleSetTest.java @@ -0,0 +1,33 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for RuleSet */ +class RuleSetTest { + private final RuleSet model = new RuleSet(); + + /** Model tests for RuleSet */ + @Test + void testRuleSet() { + // TODO: test RuleSet + } + + /** Test the property 'rules' */ + @Test + void rulesTest() { + // TODO: test rules + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/RuleTest.java b/src/test/java/com/fireblocks/sdk/model/RuleTest.java new file mode 100644 index 00000000..39c7ae7a --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/RuleTest.java @@ -0,0 +1,57 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for Rule */ +class RuleTest { + private final Rule model = new Rule(); + + /** Model tests for Rule */ + @Test + void testRule() { + // TODO: test Rule + } + + /** Test the property 'ruleId' */ + @Test + void ruleIdTest() { + // TODO: test ruleId + } + + /** Test the property 'conditions' */ + @Test + void conditionsTest() { + // TODO: test conditions + } + + /** Test the property 'ruleAction' */ + @Test + void ruleActionTest() { + // TODO: test ruleAction + } + + /** Test the property 'order' */ + @Test + void orderTest() { + // TODO: test order + } + + /** Test the property 'title' */ + @Test + void titleTest() { + // TODO: test title + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ScreeningInputTest.java b/src/test/java/com/fireblocks/sdk/model/ScreeningInputTest.java new file mode 100644 index 00000000..9607569a --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ScreeningInputTest.java @@ -0,0 +1,39 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ScreeningInput */ +class ScreeningInputTest { + private final ScreeningInput model = new ScreeningInput(); + + /** Model tests for ScreeningInput */ + @Test + void testScreeningInput() { + // TODO: test ScreeningInput + } + + /** Test the property 'operation' */ + @Test + void operationTest() { + // TODO: test operation + } + + /** Test the property 'payload' */ + @Test + void payloadTest() { + // TODO: test payload + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ScreeningOperationEnumTest.java b/src/test/java/com/fireblocks/sdk/model/ScreeningOperationEnumTest.java new file mode 100644 index 00000000..014ae95a --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ScreeningOperationEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ScreeningOperationEnum */ +class ScreeningOperationEnumTest { + /** Model tests for ScreeningOperationEnum */ + @Test + void testScreeningOperationEnum() { + // TODO: test ScreeningOperationEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ScreeningOutcomeEnumTest.java b/src/test/java/com/fireblocks/sdk/model/ScreeningOutcomeEnumTest.java new file mode 100644 index 00000000..b9d99f1e --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ScreeningOutcomeEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ScreeningOutcomeEnum */ +class ScreeningOutcomeEnumTest { + /** Model tests for ScreeningOutcomeEnum */ + @Test + void testScreeningOutcomeEnum() { + // TODO: test ScreeningOutcomeEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ScreeningPayloadTest.java b/src/test/java/com/fireblocks/sdk/model/ScreeningPayloadTest.java new file mode 100644 index 00000000..675fa6c7 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ScreeningPayloadTest.java @@ -0,0 +1,93 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for ScreeningPayload */ +class ScreeningPayloadTest { + private final ScreeningPayload model = new ScreeningPayload(); + + /** Model tests for ScreeningPayload */ + @Test + void testScreeningPayload() { + // TODO: test ScreeningPayload + } + + /** Test the property 'blockchain' */ + @Test + void blockchainTest() { + // TODO: test blockchain + } + + /** Test the property 'asset' */ + @Test + void assetTest() { + // TODO: test asset + } + + /** Test the property 'assetAmount' */ + @Test + void assetAmountTest() { + // TODO: test assetAmount + } + + /** Test the property 'usdValue' */ + @Test + void usdValueTest() { + // TODO: test usdValue + } + + /** Test the property 'customerRefId' */ + @Test + void customerRefIdTest() { + // TODO: test customerRefId + } + + /** Test the property 'externalId' */ + @Test + void externalIdTest() { + // TODO: test externalId + } + + /** Test the property 'address' */ + @Test + void addressTest() { + // TODO: test address + } + + /** Test the property 'direction' */ + @Test + void directionTest() { + // TODO: test direction + } + + /** Test the property 'sourceAddress' */ + @Test + void sourceAddressTest() { + // TODO: test sourceAddress + } + + /** Test the property 'destinationAddress' */ + @Test + void destinationAddressTest() { + // TODO: test destinationAddress + } + + /** Test the property 'txHash' */ + @Test + void txHashTest() { + // TODO: test txHash + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/StepConfigTest.java b/src/test/java/com/fireblocks/sdk/model/StepConfigTest.java new file mode 100644 index 00000000..de5b72a4 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/StepConfigTest.java @@ -0,0 +1,51 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for StepConfig */ +class StepConfigTest { + private final StepConfig model = new StepConfig(); + + /** Model tests for StepConfig */ + @Test + void testStepConfig() { + // TODO: test StepConfig + } + + /** Test the property 'stepId' */ + @Test + void stepIdTest() { + // TODO: test stepId + } + + /** Test the property 'connectorId' */ + @Test + void connectorIdTest() { + // TODO: test connectorId + } + + /** Test the property 'operations' */ + @Test + void operationsTest() { + // TODO: test operations + } + + /** Test the property 'order' */ + @Test + void orderTest() { + // TODO: test order + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/StepOperationConfigTest.java b/src/test/java/com/fireblocks/sdk/model/StepOperationConfigTest.java new file mode 100644 index 00000000..696eb244 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/StepOperationConfigTest.java @@ -0,0 +1,87 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for StepOperationConfig */ +class StepOperationConfigTest { + private final StepOperationConfig model = new StepOperationConfig(); + + /** Model tests for StepOperationConfig */ + @Test + void testStepOperationConfig() { + // TODO: test StepOperationConfig + } + + /** Test the property 'operation' */ + @Test + void operationTest() { + // TODO: test operation + } + + /** Test the property 'requiredParameters' */ + @Test + void requiredParametersTest() { + // TODO: test requiredParameters + } + + /** Test the property 'optionalParameters' */ + @Test + void optionalParametersTest() { + // TODO: test optionalParameters + } + + /** Test the property 'triggerRuleParameters' */ + @Test + void triggerRuleParametersTest() { + // TODO: test triggerRuleParameters + } + + /** Test the property 'outcomeEvaluationParameters' */ + @Test + void outcomeEvaluationParametersTest() { + // TODO: test outcomeEvaluationParameters + } + + /** Test the property 'outcomeMetaParameters' */ + @Test + void outcomeMetaParametersTest() { + // TODO: test outcomeMetaParameters + } + + /** Test the property 'triggerRuleSetStruct' */ + @Test + void triggerRuleSetStructTest() { + // TODO: test triggerRuleSetStruct + } + + /** Test the property 'triggerRuleSetJson' */ + @Test + void triggerRuleSetJsonTest() { + // TODO: test triggerRuleSetJson + } + + /** Test the property 'outcomeRuleSetStruct' */ + @Test + void outcomeRuleSetStructTest() { + // TODO: test outcomeRuleSetStruct + } + + /** Test the property 'outcomeRuleSetJson' */ + @Test + void outcomeRuleSetJsonTest() { + // TODO: test outcomeRuleSetJson + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/StepResultTest.java b/src/test/java/com/fireblocks/sdk/model/StepResultTest.java new file mode 100644 index 00000000..dc5c6b66 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/StepResultTest.java @@ -0,0 +1,111 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for StepResult */ +class StepResultTest { + private final StepResult model = new StepResult(); + + /** Model tests for StepResult */ + @Test + void testStepResult() { + // TODO: test StepResult + } + + /** Test the property 'stepId' */ + @Test + void stepIdTest() { + // TODO: test stepId + } + + /** Test the property 'connectorId' */ + @Test + void connectorIdTest() { + // TODO: test connectorId + } + + /** Test the property 'operation' */ + @Test + void operationTest() { + // TODO: test operation + } + + /** Test the property 'triggerRuleOutcome' */ + @Test + void triggerRuleOutcomeTest() { + // TODO: test triggerRuleOutcome + } + + /** Test the property 'matchedTriggerRule' */ + @Test + void matchedTriggerRuleTest() { + // TODO: test matchedTriggerRule + } + + /** Test the property 'outcomeRuleOutcome' */ + @Test + void outcomeRuleOutcomeTest() { + // TODO: test outcomeRuleOutcome + } + + /** Test the property 'matchedOutcomeRule' */ + @Test + void matchedOutcomeRuleTest() { + // TODO: test matchedOutcomeRule + } + + /** Test the property 'outcome' */ + @Test + void outcomeTest() { + // TODO: test outcome + } + + /** Test the property 'metadata' */ + @Test + void metadataTest() { + // TODO: test metadata + } + + /** Test the property 'ticketId' */ + @Test + void ticketIdTest() { + // TODO: test ticketId + } + + /** Test the property 'verdict' */ + @Test + void verdictTest() { + // TODO: test verdict + } + + /** Test the property 'connectorStatus' */ + @Test + void connectorStatusTest() { + // TODO: test connectorStatus + } + + /** Test the property 'bypassReason' */ + @Test + void bypassReasonTest() { + // TODO: test bypassReason + } + + /** Test the property 'risk' */ + @Test + void riskTest() { + // TODO: test risk + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/TransferDirectionEnumTest.java b/src/test/java/com/fireblocks/sdk/model/TransferDirectionEnumTest.java new file mode 100644 index 00000000..c7ad2b88 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/TransferDirectionEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for TransferDirectionEnum */ +class TransferDirectionEnumTest { + /** Model tests for TransferDirectionEnum */ + @Test + void testTransferDirectionEnum() { + // TODO: test TransferDirectionEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/TriggerRuleOutcomeEnumTest.java b/src/test/java/com/fireblocks/sdk/model/TriggerRuleOutcomeEnumTest.java new file mode 100644 index 00000000..178252b5 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/TriggerRuleOutcomeEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for TriggerRuleOutcomeEnum */ +class TriggerRuleOutcomeEnumTest { + /** Model tests for TriggerRuleOutcomeEnum */ + @Test + void testTriggerRuleOutcomeEnum() { + // TODO: test TriggerRuleOutcomeEnum + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/TriggerScreeningRequestTest.java b/src/test/java/com/fireblocks/sdk/model/TriggerScreeningRequestTest.java new file mode 100644 index 00000000..087c7bcc --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/TriggerScreeningRequestTest.java @@ -0,0 +1,39 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for TriggerScreeningRequest */ +class TriggerScreeningRequestTest { + private final TriggerScreeningRequest model = new TriggerScreeningRequest(); + + /** Model tests for TriggerScreeningRequest */ + @Test + void testTriggerScreeningRequest() { + // TODO: test TriggerScreeningRequest + } + + /** Test the property 'workflowId' */ + @Test + void workflowIdTest() { + // TODO: test workflowId + } + + /** Test the property 'input' */ + @Test + void inputTest() { + // TODO: test input + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/TriggerScreeningResponseTest.java b/src/test/java/com/fireblocks/sdk/model/TriggerScreeningResponseTest.java new file mode 100644 index 00000000..fc80dd5a --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/TriggerScreeningResponseTest.java @@ -0,0 +1,39 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for TriggerScreeningResponse */ +class TriggerScreeningResponseTest { + private final TriggerScreeningResponse model = new TriggerScreeningResponse(); + + /** Model tests for TriggerScreeningResponse */ + @Test + void testTriggerScreeningResponse() { + // TODO: test TriggerScreeningResponse + } + + /** Test the property 'screeningId' */ + @Test + void screeningIdTest() { + // TODO: test screeningId + } + + /** Test the property 'screeningStatus' */ + @Test + void screeningStatusTest() { + // TODO: test screeningStatus + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequestTest.java b/src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequestTest.java new file mode 100644 index 00000000..de44b87a --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequestTest.java @@ -0,0 +1,33 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for UpdateWorkflowStatusRequest */ +class UpdateWorkflowStatusRequestTest { + private final UpdateWorkflowStatusRequest model = new UpdateWorkflowStatusRequest(); + + /** Model tests for UpdateWorkflowStatusRequest */ + @Test + void testUpdateWorkflowStatusRequest() { + // TODO: test UpdateWorkflowStatusRequest + } + + /** Test the property 'status' */ + @Test + void statusTest() { + // TODO: test status + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponseTest.java b/src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponseTest.java new file mode 100644 index 00000000..79f99553 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponseTest.java @@ -0,0 +1,39 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for UpdateWorkflowStatusResponse */ +class UpdateWorkflowStatusResponseTest { + private final UpdateWorkflowStatusResponse model = new UpdateWorkflowStatusResponse(); + + /** Model tests for UpdateWorkflowStatusResponse */ + @Test + void testUpdateWorkflowStatusResponse() { + // TODO: test UpdateWorkflowStatusResponse + } + + /** Test the property 'workflowId' */ + @Test + void workflowIdTest() { + // TODO: test workflowId + } + + /** Test the property 'status' */ + @Test + void statusTest() { + // TODO: test status + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponseTest.java b/src/test/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponseTest.java index c22a5567..f7bb369e 100644 --- a/src/test/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponseTest.java +++ b/src/test/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponseTest.java @@ -30,4 +30,10 @@ void testWebhookMtlsCsrResponse() { void csrTest() { // TODO: test csr } + + /** Test the property 'keyAlgorithm' */ + @Test + void keyAlgorithmTest() { + // TODO: test keyAlgorithm + } } diff --git a/src/test/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithmTest.java b/src/test/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithmTest.java new file mode 100644 index 00000000..41e03e24 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithmTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for WebhookMtlsKeyAlgorithm */ +class WebhookMtlsKeyAlgorithmTest { + /** Model tests for WebhookMtlsKeyAlgorithm */ + @Test + void testWebhookMtlsKeyAlgorithm() { + // TODO: test WebhookMtlsKeyAlgorithm + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/WorkflowStatusEnumTest.java b/src/test/java/com/fireblocks/sdk/model/WorkflowStatusEnumTest.java new file mode 100644 index 00000000..32aa4396 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/WorkflowStatusEnumTest.java @@ -0,0 +1,25 @@ +/* + * Fireblocks API + * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) + * + * The version of the OpenAPI document: 1.6.2 + * Contact: developers@fireblocks.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package com.fireblocks.sdk.model; + + +import org.junit.jupiter.api.Test; + +/** Model tests for WorkflowStatusEnum */ +class WorkflowStatusEnumTest { + /** Model tests for WorkflowStatusEnum */ + @Test + void testWorkflowStatusEnum() { + // TODO: test WorkflowStatusEnum + } +}