From e094b95bb0b43a36e778f0d121aecfd29e6180a7 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 10 Jul 2026 14:25:19 +0530 Subject: [PATCH 01/26] SK-2967 split out the common things from v2 and v3 into common module --- common/pom.xml | 24 + .../main/java/com/skyflow/BaseSkyflow.java | 36 ++ .../java/com/skyflow/BaseVaultClient.java | 93 +++ .../com/skyflow/config/BaseCredentials.java | 36 +- .../com/skyflow/config/BaseVaultConfig.java | 18 +- .../src}/main/java/com/skyflow/enums/Env.java | 0 .../java/com/skyflow/enums/InterfaceName.java | 0 .../main/java/com/skyflow/enums/LogLevel.java | 0 .../java/com/skyflow/errors/ErrorCode.java | 0 .../java/com/skyflow/errors/ErrorMessage.java | 210 +++++++ .../java/com/skyflow/errors/HttpStatus.java | 0 .../com/skyflow/errors/SkyflowException.java | 135 +++++ .../generated/auth/rest/ApiClient.java | 29 + .../generated/auth/rest/ApiClientBuilder.java | 67 +++ .../generated/auth/rest/AsyncApiClient.java | 29 + .../auth/rest/AsyncApiClientBuilder.java | 67 +++ .../auth/rest/core/ApiClientApiException.java | 74 +++ .../auth/rest/core/ApiClientException.java | 17 + .../auth/rest/core/ApiClientHttpResponse.java | 38 ++ .../auth/rest/core/ClientOptions.java | 171 ++++++ .../auth/rest/core/DateTimeDeserializer.java | 56 ++ .../generated/auth/rest/core/Environment.java | 24 + .../generated/auth/rest/core/FileStream.java | 61 ++ .../rest/core/InputStreamRequestBody.java | 80 +++ .../generated/auth/rest/core/MediaTypes.java | 13 + .../generated/auth/rest/core/Nullable.java | 140 +++++ .../rest/core/NullableNonemptyFilter.java | 19 + .../auth/rest/core/ObjectMappers.java | 37 ++ .../auth/rest/core/QueryStringMapper.java | 139 +++++ .../auth/rest/core/RequestOptions.java | 101 ++++ .../rest/core/ResponseBodyInputStream.java | 46 ++ .../auth/rest/core/ResponseBodyReader.java | 45 ++ .../auth/rest/core/RetryInterceptor.java | 79 +++ .../generated/auth/rest/core/Stream.java | 97 ++++ .../generated/auth/rest/core/Suppliers.java | 23 + .../auth/rest/errors/BadRequestError.java | 34 ++ .../auth/rest/errors/HttpStatus.java | 15 + .../auth/rest/errors/NotFoundError.java | 34 ++ .../auth/rest/errors/UnauthorizedError.java | 34 ++ .../AsyncAuthenticationClient.java | 11 +- .../AsyncRawAuthenticationClient.java | 44 +- .../authentication/AuthenticationClient.java | 10 +- .../RawAuthenticationClient.java | 43 +- .../requests/V1GetAuthTokenRequest.java | 17 +- .../rest/types/V1GetAuthTokenResponse.java | 125 ++++ .../main/java/com/skyflow/logs/ErrorLogs.java | 185 ++++++ .../main/java/com/skyflow/logs/InfoLogs.java | 131 +++++ .../java/com/skyflow/logs/WarningLogs.java | 19 + .../serviceaccount/util/BearerToken.java | 26 +- .../util/SignedDataTokenResponse.java | 4 +- .../serviceaccount/util/SignedDataTokens.java | 14 +- .../skyflow/serviceaccount/util/Token.java | 0 .../java/com/skyflow/utils/BaseConstants.java | 34 ++ .../java/com/skyflow/utils/BaseUtils.java | 177 ++++++ .../java/com/skyflow/utils/SdkVersion.java | 13 + .../com/skyflow/utils/logger/LogUtil.java | 100 ++++ .../utils/validations/BaseValidations.java | 111 ++++ .../vault/controller/BaseVaultController.java | 21 + .../vault/controller/IVaultController.java | 9 + .../vault/data/BaseDetokenizeRequest.java | 4 + .../vault/data/BaseDetokenizeResponse.java | 4 + .../skyflow/vault/data/BaseInsertRequest.java | 4 + .../vault/data/BaseInsertResponse.java | 4 + flowvault/pom.xml | 128 +++++ .../src/main/java/com/skyflow/Skyflow.java | 144 +++++ .../main/java/com/skyflow/VaultClient.java | 73 +++ .../java/com/skyflow/config/Credentials.java | 9 + .../java/com/skyflow/config/VaultConfig.java | 33 ++ .../com/skyflow/enums/CustomHeaderKey.java | 18 + .../java/com/skyflow/enums/UpsertType.java | 18 + .../com/skyflow/generated/rest/ApiClient.java | 37 ++ .../generated/rest/ApiClientBuilder.java | 48 ++ .../generated/rest/AsyncApiClient.java | 37 ++ .../generated/rest/AsyncApiClientBuilder.java | 48 ++ .../rest/core/ApiClientApiException.java | 3 +- .../rest/core/ApiClientException.java | 0 .../rest/core/ApiClientHttpResponse.java | 3 +- .../generated/rest/core/ClientOptions.java | 171 ++++++ .../rest/core/DateTimeDeserializer.java | 1 + .../generated/rest/core/Environment.java | 20 + .../generated/rest/core/FileStream.java | 5 +- .../rest/core/InputStreamRequestBody.java | 7 +- .../generated/rest/core/MediaTypes.java | 0 .../skyflow/generated/rest/core/Nullable.java | 0 .../rest/core/NullableNonemptyFilter.java | 0 .../generated/rest/core/ObjectMappers.java | 1 + .../rest/core/QueryStringMapper.java | 7 +- .../generated/rest/core/RequestOptions.java | 87 +++ .../rest/core/ResponseBodyInputStream.java | 3 +- .../rest/core/ResponseBodyReader.java | 3 +- .../generated/rest/core/RetryInterceptor.java | 5 +- .../skyflow/generated/rest/core/Stream.java | 0 .../generated/rest/core/Suppliers.java | 0 .../flowservice/AsyncFlowserviceClient.java | 129 +++++ .../AsyncRawFlowserviceClient.java | 533 ++++++++++++++++++ .../flowservice/FlowserviceClient.java | 124 ++++ .../flowservice/RawFlowserviceClient.java | 412 ++++++++++++++ .../flowservice/requests/V1DeleteRequest.java | 186 ++++++ .../requests/V1FlowDeleteTokenRequest.java | 122 ++++ .../requests/V1FlowDetokenizeRequest.java | 156 +++++ .../requests/V1FlowTokenizeRequest.java | 125 ++++ .../requests/V1FlowVaultMetricsRequest.java | 96 ++++ .../flowservice/requests/V1GetRequest.java | 357 ++++++++++++ .../flowservice/requests/V1InsertRequest.java | 181 ++++++ .../flowservice/requests/V1UpdateRequest.java | 181 ++++++ .../records/AsyncRawRecordsClient.java | 96 ++++ .../resources/records/AsyncRecordsClient.java | 51 ++ .../resources/records/RawRecordsClient.java | 79 +++ .../rest/resources/records/RecordsClient.java | 49 ++ .../requests/V1ExecuteQueryRequest.java | 125 ++++ .../rest/types/FlowEnumUpdateType.java | 24 + .../FlowTokenizeResponseObjectToken.java | 188 ++++++ .../rest/types/GoogleprotobufAny.java | 146 +++++ .../generated/rest/types/RpcStatus.java | 135 +++++ .../rest/types/V1ColumnRedactions.java | 125 ++++ .../rest/types/V1DeleteResponse.java | 93 +++ .../rest/types/V1DeleteResponseObject.java | 156 +++++ .../types/V1DeleteTokenResponseObject.java | 156 +++++ .../types/V1ExecuteQueryRecordResponse.java | 96 ++++ .../rest/types/V1ExecuteQueryResponse.java | 118 ++++ .../types/V1ExecuteQueryResponseMetadata.java | 93 +++ .../rest/types/V1FlowDeleteTokenResponse.java | 94 +++ .../rest/types/V1FlowDetokenizeResponse.java | 94 +++ .../types/V1FlowDetokenizeResponseObject.java | 249 ++++++++ .../types/V1FlowTokenizeRequestObject.java | 153 +++++ .../rest/types/V1FlowTokenizeResponse.java | 94 +++ .../types/V1FlowTokenizeResponseObject.java | 124 ++++ .../rest/types/V1FlowVaultMetricsData.java | 96 ++++ .../types/V1FlowVaultMetricsResponse.java | 121 ++++ .../rest/types/V1GetRequestData.java | 216 +++++++ .../generated/rest/types/V1GetResponse.java | 93 +++ .../rest/types/V1InsertRecordData.java | 182 ++++++ .../rest/types/V1InsertResponse.java | 93 +++ .../rest/types/V1RecordResponseObject.java | 280 +++++++++ .../rest/types/V1TokenGroupRedactions.java | 125 ++++ .../generated/rest/types/V1UniqueValue.java | 96 ++++ .../rest/types/V1UpdateRecordData.java | 188 ++++++ .../rest/types/V1UpdateResponse.java | 93 +++ .../generated/rest/types/V1Upsert.java | 118 ++++ .../java/com/skyflow/utils/Constants.java | 49 ++ .../main/java/com/skyflow/utils/Utils.java | 111 ++++ .../utils/validations/Validations.java | 150 +++++ .../vault/controller/VaultController.java | 34 ++ .../skyflow/vault/data/DetokenizeRequest.java | 4 + .../vault/data/DetokenizeResponse.java | 4 + .../com/skyflow/vault/data/InsertRequest.java | 4 + .../skyflow/vault/data/InsertResponse.java | 4 + pom.xml | 113 +--- v2/pom.xml | 31 + .../java/com/skyflow/ConnectionClient.java | 0 .../src}/main/java/com/skyflow/Skyflow.java | 41 +- .../main/java/com/skyflow/VaultClient.java | 81 +-- .../com/skyflow/config/ConnectionConfig.java | 0 .../java/com/skyflow/config/Credentials.java | 10 + .../com/skyflow/config/ManagementConfig.java | 0 .../java/com/skyflow/config/VaultConfig.java | 16 + .../skyflow/enums/DeidentifyFileStatus.java | 0 .../com/skyflow/enums/DetectEntities.java | 0 .../enums/DetectOutputTranscriptions.java | 0 v2/src/main/java/com/skyflow/enums/Env.java | 8 + .../java/com/skyflow/enums/InterfaceName.java | 24 + .../main/java/com/skyflow/enums/LogLevel.java | 9 + .../java/com/skyflow/enums/MaskingMethod.java | 0 .../java/com/skyflow/enums/RedactionType.java | 0 .../java/com/skyflow/enums/RequestMethod.java | 0 .../java/com/skyflow/enums/TokenMode.java | 0 .../java/com/skyflow/enums/TokenType.java | 0 .../java/com/skyflow/errors/ErrorCode.java | 18 + .../java/com/skyflow/errors/ErrorMessage.java | 0 .../java/com/skyflow/errors/HttpStatus.java | 15 + .../com/skyflow/errors/SkyflowException.java | 0 .../com/skyflow/generated/rest/ApiClient.java | 2 + .../generated/rest/ApiClientBuilder.java | 0 .../generated/rest/AsyncApiClient.java | 2 + .../generated/rest/AsyncApiClientBuilder.java | 0 .../rest/core/ApiClientApiException.java | 74 +++ .../rest/core/ApiClientException.java | 17 + .../rest/core/ApiClientHttpResponse.java | 38 ++ .../generated/rest/core/ClientOptions.java | 3 +- .../rest/core/DateTimeDeserializer.java | 56 ++ .../generated/rest/core/Environment.java | 0 .../generated/rest/core/FileStream.java | 62 ++ .../rest/core/InputStreamRequestBody.java | 80 +++ .../generated/rest/core/MediaTypes.java | 13 + .../skyflow/generated/rest/core/Nullable.java | 140 +++++ .../rest/core/NullableNonemptyFilter.java | 19 + .../generated/rest/core/ObjectMappers.java | 38 ++ .../rest/core/QueryStringMapper.java | 139 +++++ .../generated/rest/core/RequestOptions.java | 0 .../rest/core/ResponseBodyInputStream.java | 46 ++ .../rest/core/ResponseBodyReader.java | 45 ++ .../generated/rest/core/RetryInterceptor.java | 79 +++ .../skyflow/generated/rest/core/Stream.java | 97 ++++ .../generated/rest/core/Suppliers.java | 23 + .../rest/errors/BadRequestError.java | 0 .../rest/errors/InternalServerError.java | 0 .../generated/rest/errors/NotFoundError.java | 0 .../rest/errors/UnauthorizedError.java | 0 .../resources/audit/AsyncAuditClient.java | 1 + .../resources/audit/AsyncRawAuditClient.java | 20 +- .../rest/resources/audit/AuditClient.java | 0 .../rest/resources/audit/RawAuditClient.java | 16 +- .../AuditServiceListAuditEventsRequest.java | 18 +- ...AuditEventsRequestFilterOpsActionType.java | 0 ...entsRequestFilterOpsContextAccessType.java | 0 ...ventsRequestFilterOpsContextActorType.java | 0 ...EventsRequestFilterOpsContextAuthMode.java | 0 ...ditEventsRequestFilterOpsResourceType.java | 0 ...eListAuditEventsRequestSortOpsOrderBy.java | 0 .../binlookup/AsyncBinLookupClient.java | 1 + .../binlookup/AsyncRawBinLookupClient.java | 21 +- .../resources/binlookup/BinLookupClient.java | 0 .../binlookup/RawBinLookupClient.java | 17 +- .../binlookup/requests/V1BinListRequest.java | 15 +- .../resources/files/AsyncFilesClient.java | 13 +- .../resources/files/AsyncRawFilesClient.java | 34 +- .../rest/resources/files/FilesClient.java | 12 +- .../rest/resources/files/RawFilesClient.java | 30 +- ...entifyFileAudioRequestDeidentifyAudio.java | 15 +- ...fyFileDocumentPdfRequestDeidentifyPdf.java | 15 +- ...entifyFileImageRequestDeidentifyImage.java | 15 +- .../files/requests/DeidentifyFileRequest.java | 15 +- ...identifyFileRequestDeidentifyDocument.java | 15 +- ...tifyFileRequestDeidentifyPresentation.java | 15 +- ...ntifyFileRequestDeidentifySpreadsheet.java | 15 +- ...fyFileRequestDeidentifyStructuredText.java | 15 +- .../DeidentifyFileRequestDeidentifyText.java | 15 +- .../files/requests/GetRunRequest.java | 9 +- .../ReidentifyFileRequestReidentifyFile.java | 11 +- ...RequestDeidentifyAudioEntityTypesItem.java | 0 ...estDeidentifyAudioOutputTranscription.java | 0 ...dfRequestDeidentifyPdfEntityTypesItem.java | 0 ...RequestDeidentifyImageEntityTypesItem.java | 0 ...geRequestDeidentifyImageMaskingMethod.java | 0 ...uestDeidentifyDocumentEntityTypesItem.java | 0 ...DeidentifyPresentationEntityTypesItem.java | 0 ...tDeidentifySpreadsheetEntityTypesItem.java | 0 ...identifyStructuredTextEntityTypesItem.java | 0 ...eRequestDeidentifyTextEntityTypesItem.java | 0 .../DeidentifyFileRequestEntityTypesItem.java | 0 .../guardrails/AsyncGuardrailsClient.java | 1 + .../guardrails/AsyncRawGuardrailsClient.java | 21 +- .../guardrails/GuardrailsClient.java | 0 .../guardrails/RawGuardrailsClient.java | 17 +- .../requests/DetectGuardrailsRequest.java | 15 +- .../resources/query/AsyncQueryClient.java | 1 + .../resources/query/AsyncRawQueryClient.java | 21 +- .../rest/resources/query/QueryClient.java | 0 .../rest/resources/query/RawQueryClient.java | 17 +- .../QueryServiceExecuteQueryBody.java | 9 +- .../records/AsyncRawRecordsClient.java | 45 +- .../resources/records/AsyncRecordsClient.java | 21 +- .../resources/records/RawRecordsClient.java | 41 +- .../rest/resources/records/RecordsClient.java | 22 +- .../FileServiceUploadFileRequest.java | 9 +- .../RecordServiceBatchOperationBody.java | 15 +- .../RecordServiceBulkDeleteRecordBody.java | 15 +- .../RecordServiceBulkGetRecordRequest.java | 16 +- .../RecordServiceGetRecordRequest.java | 16 +- .../RecordServiceInsertRecordBody.java | 15 +- .../RecordServiceUpdateRecordBody.java | 9 +- .../records/requests/UploadFileV2Request.java | 11 +- ...ordServiceBulkGetRecordRequestOrderBy.java | 0 ...dServiceBulkGetRecordRequestRedaction.java | 0 ...ecordServiceGetRecordRequestRedaction.java | 0 .../strings/AsyncRawStringsClient.java | 21 +- .../resources/strings/AsyncStringsClient.java | 1 + .../resources/strings/RawStringsClient.java | 17 +- .../rest/resources/strings/StringsClient.java | 0 .../requests/DeidentifyStringRequest.java | 15 +- .../requests/ReidentifyStringRequest.java | 9 +- ...eidentifyStringRequestEntityTypesItem.java | 0 .../tokens/AsyncRawTokensClient.java | 21 +- .../resources/tokens/AsyncTokensClient.java | 1 + .../resources/tokens/RawTokensClient.java | 17 +- .../rest/resources/tokens/TokensClient.java | 0 .../tokens/requests/V1DetokenizePayload.java | 15 +- .../tokens/requests/V1TokenizePayload.java | 15 +- .../types/AuditEventAuditResourceType.java | 0 .../rest/types/AuditEventContext.java | 9 +- .../generated/rest/types/AuditEventData.java | 9 +- .../rest/types/AuditEventHttpInfo.java | 9 +- .../rest/types/BatchRecordMethod.java | 0 .../rest/types/ContextAccessType.java | 0 .../generated/rest/types/ContextAuthMode.java | 0 .../rest/types/DeidentifiedFileOutput.java | 9 +- ...ifiedFileOutputProcessedFileExtension.java | 0 ...identifiedFileOutputProcessedFileType.java | 0 .../rest/types/DeidentifyFileResponse.java | 9 +- .../rest/types/DeidentifyStringResponse.java | 15 +- .../rest/types/DetectGuardrailsResponse.java | 11 +- .../DetectGuardrailsResponseValidation.java | 0 .../rest/types/DetectRunsResponse.java | 15 +- .../types/DetectRunsResponseOutputType.java | 0 .../rest/types/DetectRunsResponseStatus.java | 0 .../DetokenizeRecordResponseValueType.java | 0 .../generated/rest/types/ErrorResponse.java | 10 +- .../rest/types/ErrorResponseError.java | 15 +- .../generated/rest/types/FileData.java | 10 +- .../rest/types/FileDataDataFormat.java | 0 .../rest/types/FileDataDeidentifyAudio.java | 10 +- .../FileDataDeidentifyAudioDataFormat.java | 0 .../types/FileDataDeidentifyDocument.java | 10 +- .../FileDataDeidentifyDocumentDataFormat.java | 0 .../rest/types/FileDataDeidentifyImage.java | 10 +- .../FileDataDeidentifyImageDataFormat.java | 0 .../rest/types/FileDataDeidentifyPdf.java | 10 +- .../types/FileDataDeidentifyPresentation.java | 10 +- ...eDataDeidentifyPresentationDataFormat.java | 0 .../types/FileDataDeidentifySpreadsheet.java | 10 +- ...leDataDeidentifySpreadsheetDataFormat.java | 0 .../FileDataDeidentifyStructuredText.java | 10 +- ...ataDeidentifyStructuredTextDataFormat.java | 0 .../rest/types/FileDataDeidentifyText.java | 10 +- .../rest/types/FileDataReidentifyFile.java | 10 +- .../FileDataReidentifyFileDataFormat.java | 0 .../skyflow/generated/rest/types/Format.java | 15 +- .../rest/types/FormatMaskedItem.java | 0 .../rest/types/FormatPlaintextItem.java | 0 .../rest/types/FormatRedactedItem.java | 0 .../generated/rest/types/GooglerpcStatus.java | 15 +- .../rest/types/IdentifyResponse.java | 10 +- .../generated/rest/types/Locations.java | 9 +- .../generated/rest/types/ProtobufAny.java | 9 +- .../rest/types/RedactionEnumRedaction.java | 0 .../rest/types/ReidentifiedFileOutput.java | 9 +- ...ifiedFileOutputProcessedFileExtension.java | 0 .../rest/types/ReidentifyFileResponse.java | 9 +- .../ReidentifyFileResponseOutputType.java | 0 .../types/ReidentifyFileResponseStatus.java | 0 .../rest/types/RequestActionType.java | 0 .../generated/rest/types/ShiftDates.java | 15 +- .../rest/types/ShiftDatesEntityTypesItem.java | 0 .../rest/types/StringResponseEntities.java | 9 +- .../rest/types/TokenTypeMapping.java | 15 +- .../rest/types/TokenTypeMappingDefault.java | 0 .../types/TokenTypeMappingEntityOnlyItem.java | 0 .../TokenTypeMappingEntityUnqCounterItem.java | 0 .../types/TokenTypeMappingVaultTokenItem.java | 0 .../generated/rest/types/Transformations.java | 9 +- .../rest/types/UploadFileV2Response.java | 9 +- .../rest/types/V1AuditAfterOptions.java | 9 +- .../rest/types/V1AuditEventResponse.java | 9 +- .../generated/rest/types/V1AuditResponse.java | 15 +- .../rest/types/V1AuditResponseEvent.java | 15 +- .../types/V1AuditResponseEventRequest.java | 15 +- .../rest/types/V1BatchOperationResponse.java | 15 +- .../generated/rest/types/V1BatchRecord.java | 9 +- .../rest/types/V1BinListResponse.java | 15 +- .../types/V1BulkDeleteRecordResponse.java | 15 +- .../rest/types/V1BulkGetRecordResponse.java | 15 +- .../skyflow/generated/rest/types/V1Byot.java | 0 .../skyflow/generated/rest/types/V1Card.java | 9 +- .../rest/types/V1DeleteFileResponse.java | 9 +- .../rest/types/V1DeleteRecordResponse.java | 9 +- .../rest/types/V1DetokenizeRecordRequest.java | 9 +- .../types/V1DetokenizeRecordResponse.java | 9 +- .../rest/types/V1DetokenizeResponse.java | 15 +- .../generated/rest/types/V1FieldRecords.java | 9 +- .../rest/types/V1FileAvScanStatus.java | 0 .../rest/types/V1GetAuthTokenResponse.java | 9 +- .../types/V1GetFileScanStatusResponse.java | 9 +- .../rest/types/V1GetQueryResponse.java | 15 +- .../rest/types/V1InsertRecordResponse.java | 15 +- .../generated/rest/types/V1MemberType.java | 0 .../rest/types/V1RecordMetaProperties.java | 9 +- .../rest/types/V1TokenizeRecordRequest.java | 9 +- .../rest/types/V1TokenizeRecordResponse.java | 9 +- .../rest/types/V1TokenizeResponse.java | 15 +- .../rest/types/V1UpdateRecordResponse.java | 9 +- .../rest/types/V1VaultFieldMapping.java | 9 +- .../rest/types/V1VaultSchemaConfig.java | 9 +- .../rest/types/WordCharacterCount.java | 9 +- .../main/java/com/skyflow/logs/ErrorLogs.java | 0 .../main/java/com/skyflow/logs/InfoLogs.java | 0 .../java/com/skyflow/utils/Constants.java | 0 .../java/com/skyflow/utils/HttpUtility.java | 0 .../main/java/com/skyflow/utils/Utils.java | 0 .../com/skyflow/utils/logger/LogUtil.java | 0 .../utils/validations/Validations.java | 184 +++--- .../skyflow/vault/audit/ListEventRequest.java | 0 .../vault/audit/ListEventResponse.java | 0 .../com/skyflow/vault/bin/GetBinRequest.java | 0 .../com/skyflow/vault/bin/GetBinResponse.java | 0 .../connection/InvokeConnectionRequest.java | 0 .../connection/InvokeConnectionResponse.java | 0 .../vault/controller/AuditController.java | 0 .../vault/controller/BinLookupController.java | 0 .../controller/ConnectionController.java | 0 .../vault/controller/DetectController.java | 8 +- .../vault/controller/VaultController.java | 37 +- .../com/skyflow/vault/data/DeleteRequest.java | 0 .../skyflow/vault/data/DeleteResponse.java | 0 .../skyflow/vault/data/FileUploadRequest.java | 0 .../vault/data/FileUploadResponse.java | 0 .../com/skyflow/vault/data/GetRequest.java | 0 .../com/skyflow/vault/data/GetResponse.java | 0 .../com/skyflow/vault/data/InsertRequest.java | 0 .../skyflow/vault/data/InsertResponse.java | 0 .../com/skyflow/vault/data/QueryRequest.java | 0 .../com/skyflow/vault/data/QueryResponse.java | 0 .../com/skyflow/vault/data/UpdateRequest.java | 0 .../skyflow/vault/data/UpdateResponse.java | 0 .../com/skyflow/vault/detect/AudioBleep.java | 0 .../vault/detect/DateTransformation.java | 0 .../vault/detect/DeidentifyFileRequest.java | 0 .../vault/detect/DeidentifyFileResponse.java | 0 .../vault/detect/DeidentifyTextRequest.java | 0 .../vault/detect/DeidentifyTextResponse.java | 0 .../com/skyflow/vault/detect/EntityInfo.java | 0 .../skyflow/vault/detect/FileEntityInfo.java | 0 .../com/skyflow/vault/detect/FileInfo.java | 0 .../com/skyflow/vault/detect/FileInput.java | 0 .../vault/detect/GetDetectRunRequest.java | 0 .../vault/detect/ReidentifyTextRequest.java | 0 .../vault/detect/ReidentifyTextResponse.java | 0 .../com/skyflow/vault/detect/TextIndex.java | 0 .../com/skyflow/vault/detect/TokenFormat.java | 0 .../skyflow/vault/detect/Transformations.java | 0 .../com/skyflow/vault/tokens/ColumnValue.java | 0 .../skyflow/vault/tokens/DetokenizeData.java | 0 .../tokens/DetokenizeRecordResponse.java | 0 .../vault/tokens/DetokenizeRequest.java | 0 .../vault/tokens/DetokenizeResponse.java | 0 .../skyflow/vault/tokens/TokenizeRequest.java | 0 .../vault/tokens/TokenizeResponse.java | 0 {src => v2/src}/main/resources/sdk.properties | 0 .../skyflow/ConnectionClientDotenvTests.java | 0 .../com/skyflow/ConnectionClientTests.java | 0 .../test/java/com/skyflow/SkyflowTests.java | 56 +- .../com/skyflow/VaultClientDotenvTests.java | 1 + .../java/com/skyflow/VaultClientTests.java | 7 +- .../skyflow/config/ConnectionConfigTests.java | 0 .../com/skyflow/config/CredentialsTests.java | 0 .../skyflow/config/ManagementConfigTest.java | 0 .../com/skyflow/config/VaultConfigTests.java | 16 +- .../enums/DeidentifyFileStatusTest.java | 0 .../com/skyflow/enums/DetectEntitiesTest.java | 0 .../enums/DetectOutputTranscriptionsTest.java | 0 .../com/skyflow/enums/MaskingMethodTest.java | 0 .../java/com/skyflow/enums/TokenModeTest.java | 1 - .../java/com/skyflow/enums/TokenTypeTest.java | 0 .../skyflow/errors/SkyflowExceptionTest.java | 0 .../serviceaccount/util/BearerTokenTests.java | 0 .../util/SignedDataTokensTests.java | 0 .../serviceaccount/util/TokenTests.java | 0 .../com/skyflow/utils/HttpUtilityTests.java | 0 .../java/com/skyflow/utils/UtilsTests.java | 0 .../utils/logger/LogUtilLevelTests.java | 0 .../java/com/skyflow/vault/BinAuditTests.java | 0 .../connection/InvokeConnectionTests.java | 0 .../controller/ConnectionControllerTests.java | 1 - .../controller/DetectControllerFileTests.java | 1 + .../controller/DetectControllerTests.java | 9 +- .../controller/VaultControllerTests.java | 0 .../com/skyflow/vault/data/DeleteTests.java | 5 +- .../skyflow/vault/data/FileUploadTests.java | 0 .../java/com/skyflow/vault/data/GetTests.java | 5 +- .../com/skyflow/vault/data/InsertTests.java | 5 +- .../skyflow/vault/data/QueryResponseTest.java | 0 .../com/skyflow/vault/data/QueryTests.java | 5 +- .../com/skyflow/vault/data/UpdateTests.java | 5 +- .../detect/DeidentifyFileRequestTest.java | 0 .../detect/DeidentifyFileResponseTest.java | 0 .../vault/detect/DeidentifyTextTests.java | 0 .../vault/detect/FileEntityInfoTest.java | 0 .../skyflow/vault/detect/FileInfoTest.java | 0 .../vault/detect/ReidentifyTextTests.java | 0 .../skyflow/vault/tokens/DetokenizeTests.java | 0 .../skyflow/vault/tokens/TokenizeTests.java | 7 +- .../invalidPrivateKeyCredentials.json | 0 .../resources/invalidTokenURICredentials.json | 0 .../test/resources/noClientIDCredentials.json | 0 .../test/resources/noKeyIDCredentials.json | 0 .../resources/noPrivateKeyCredentials.json | 0 .../test/resources/noTokenURICredentials.json | 0 {src => v2/src}/test/resources/notJson.txt | 0 477 files changed, 12823 insertions(+), 1703 deletions(-) create mode 100644 common/pom.xml create mode 100644 common/src/main/java/com/skyflow/BaseSkyflow.java create mode 100644 common/src/main/java/com/skyflow/BaseVaultClient.java rename src/main/java/com/skyflow/config/Credentials.java => common/src/main/java/com/skyflow/config/BaseCredentials.java (87%) rename src/main/java/com/skyflow/config/VaultConfig.java => common/src/main/java/com/skyflow/config/BaseVaultConfig.java (70%) rename {src => common/src}/main/java/com/skyflow/enums/Env.java (100%) rename {src => common/src}/main/java/com/skyflow/enums/InterfaceName.java (100%) rename {src => common/src}/main/java/com/skyflow/enums/LogLevel.java (100%) rename {src => common/src}/main/java/com/skyflow/errors/ErrorCode.java (100%) create mode 100644 common/src/main/java/com/skyflow/errors/ErrorMessage.java rename {src => common/src}/main/java/com/skyflow/errors/HttpStatus.java (100%) create mode 100644 common/src/main/java/com/skyflow/errors/SkyflowException.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/ApiClient.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/ApiClientBuilder.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/AsyncApiClient.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/AsyncApiClientBuilder.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientApiException.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientException.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientHttpResponse.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/ClientOptions.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/DateTimeDeserializer.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/Environment.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/FileStream.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/InputStreamRequestBody.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/MediaTypes.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/Nullable.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/NullableNonemptyFilter.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/ObjectMappers.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/QueryStringMapper.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/RequestOptions.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/ResponseBodyInputStream.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/ResponseBodyReader.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/RetryInterceptor.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/Stream.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/core/Suppliers.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/errors/BadRequestError.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/errors/HttpStatus.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/errors/NotFoundError.java create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/errors/UnauthorizedError.java rename {src/main/java/com/skyflow/generated => common/src/main/java/com/skyflow/generated/auth}/rest/resources/authentication/AsyncAuthenticationClient.java (84%) rename {src/main/java/com/skyflow/generated => common/src/main/java/com/skyflow/generated/auth}/rest/resources/authentication/AsyncRawAuthenticationClient.java (82%) rename {src/main/java/com/skyflow/generated => common/src/main/java/com/skyflow/generated/auth}/rest/resources/authentication/AuthenticationClient.java (82%) rename {src/main/java/com/skyflow/generated => common/src/main/java/com/skyflow/generated/auth}/rest/resources/authentication/RawAuthenticationClient.java (78%) rename {src/main/java/com/skyflow/generated => common/src/main/java/com/skyflow/generated/auth}/rest/resources/authentication/requests/V1GetAuthTokenRequest.java (96%) create mode 100644 common/src/main/java/com/skyflow/generated/auth/rest/types/V1GetAuthTokenResponse.java create mode 100644 common/src/main/java/com/skyflow/logs/ErrorLogs.java create mode 100644 common/src/main/java/com/skyflow/logs/InfoLogs.java create mode 100644 common/src/main/java/com/skyflow/logs/WarningLogs.java rename {src => common/src}/main/java/com/skyflow/serviceaccount/util/BearerToken.java (92%) rename {src => common/src}/main/java/com/skyflow/serviceaccount/util/SignedDataTokenResponse.java (83%) rename {src => common/src}/main/java/com/skyflow/serviceaccount/util/SignedDataTokens.java (97%) rename {src => common/src}/main/java/com/skyflow/serviceaccount/util/Token.java (100%) create mode 100644 common/src/main/java/com/skyflow/utils/BaseConstants.java create mode 100644 common/src/main/java/com/skyflow/utils/BaseUtils.java create mode 100644 common/src/main/java/com/skyflow/utils/SdkVersion.java create mode 100644 common/src/main/java/com/skyflow/utils/logger/LogUtil.java create mode 100644 common/src/main/java/com/skyflow/utils/validations/BaseValidations.java create mode 100644 common/src/main/java/com/skyflow/vault/controller/BaseVaultController.java create mode 100644 common/src/main/java/com/skyflow/vault/controller/IVaultController.java create mode 100644 common/src/main/java/com/skyflow/vault/data/BaseDetokenizeRequest.java create mode 100644 common/src/main/java/com/skyflow/vault/data/BaseDetokenizeResponse.java create mode 100644 common/src/main/java/com/skyflow/vault/data/BaseInsertRequest.java create mode 100644 common/src/main/java/com/skyflow/vault/data/BaseInsertResponse.java create mode 100644 flowvault/pom.xml create mode 100644 flowvault/src/main/java/com/skyflow/Skyflow.java create mode 100644 flowvault/src/main/java/com/skyflow/VaultClient.java create mode 100644 flowvault/src/main/java/com/skyflow/config/Credentials.java create mode 100644 flowvault/src/main/java/com/skyflow/config/VaultConfig.java create mode 100644 flowvault/src/main/java/com/skyflow/enums/CustomHeaderKey.java create mode 100644 flowvault/src/main/java/com/skyflow/enums/UpsertType.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/ApiClient.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/ApiClientBuilder.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/AsyncApiClientBuilder.java rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java (99%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/ApiClientException.java (100%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java (99%) create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java (99%) create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/core/Environment.java rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/FileStream.java (99%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java (99%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/MediaTypes.java (100%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/Nullable.java (100%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/NullableNonemptyFilter.java (100%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/ObjectMappers.java (99%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java (97%) create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/core/RequestOptions.java rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java (99%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java (99%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java (99%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/Stream.java (100%) rename {src => flowvault/src}/main/java/com/skyflow/generated/rest/core/Suppliers.java (100%) create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/AsyncFlowserviceClient.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/AsyncRawFlowserviceClient.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/FlowserviceClient.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/RawFlowserviceClient.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1DeleteRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowDeleteTokenRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowDetokenizeRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowTokenizeRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowVaultMetricsRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1GetRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1InsertRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1UpdateRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/resources/records/requests/V1ExecuteQueryRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/FlowEnumUpdateType.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/FlowTokenizeResponseObjectToken.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/GoogleprotobufAny.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/RpcStatus.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1ColumnRedactions.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteResponseObject.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteTokenResponseObject.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryRecordResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryResponseMetadata.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDeleteTokenResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDetokenizeResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDetokenizeResponseObject.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeRequestObject.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeResponseObject.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowVaultMetricsData.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowVaultMetricsResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1GetRequestData.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1GetResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordData.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1InsertResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1RecordResponseObject.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1TokenGroupRedactions.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1UniqueValue.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordData.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1UpdateResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/generated/rest/types/V1Upsert.java create mode 100644 flowvault/src/main/java/com/skyflow/utils/Constants.java create mode 100644 flowvault/src/main/java/com/skyflow/utils/Utils.java create mode 100644 flowvault/src/main/java/com/skyflow/utils/validations/Validations.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/InsertResponse.java create mode 100644 v2/pom.xml rename {src => v2/src}/main/java/com/skyflow/ConnectionClient.java (100%) rename {src => v2/src}/main/java/com/skyflow/Skyflow.java (96%) rename {src => v2/src}/main/java/com/skyflow/VaultClient.java (92%) rename {src => v2/src}/main/java/com/skyflow/config/ConnectionConfig.java (100%) create mode 100644 v2/src/main/java/com/skyflow/config/Credentials.java rename {src => v2/src}/main/java/com/skyflow/config/ManagementConfig.java (100%) create mode 100644 v2/src/main/java/com/skyflow/config/VaultConfig.java rename {src => v2/src}/main/java/com/skyflow/enums/DeidentifyFileStatus.java (100%) rename {src => v2/src}/main/java/com/skyflow/enums/DetectEntities.java (100%) rename {src => v2/src}/main/java/com/skyflow/enums/DetectOutputTranscriptions.java (100%) create mode 100644 v2/src/main/java/com/skyflow/enums/Env.java create mode 100644 v2/src/main/java/com/skyflow/enums/InterfaceName.java create mode 100644 v2/src/main/java/com/skyflow/enums/LogLevel.java rename {src => v2/src}/main/java/com/skyflow/enums/MaskingMethod.java (100%) rename {src => v2/src}/main/java/com/skyflow/enums/RedactionType.java (100%) rename {src => v2/src}/main/java/com/skyflow/enums/RequestMethod.java (100%) rename {src => v2/src}/main/java/com/skyflow/enums/TokenMode.java (100%) rename {src => v2/src}/main/java/com/skyflow/enums/TokenType.java (100%) create mode 100644 v2/src/main/java/com/skyflow/errors/ErrorCode.java rename {src => v2/src}/main/java/com/skyflow/errors/ErrorMessage.java (100%) create mode 100644 v2/src/main/java/com/skyflow/errors/HttpStatus.java rename {src => v2/src}/main/java/com/skyflow/errors/SkyflowException.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/ApiClient.java (98%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/ApiClientBuilder.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/AsyncApiClient.java (98%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/AsyncApiClientBuilder.java (100%) create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/ApiClientException.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java rename {src => v2/src}/main/java/com/skyflow/generated/rest/core/ClientOptions.java (99%) create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java rename {src => v2/src}/main/java/com/skyflow/generated/rest/core/Environment.java (100%) create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/MediaTypes.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/Nullable.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/NullableNonemptyFilter.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java rename {src => v2/src}/main/java/com/skyflow/generated/rest/core/RequestOptions.java (100%) create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/Stream.java create mode 100644 v2/src/main/java/com/skyflow/generated/rest/core/Suppliers.java rename {src => v2/src}/main/java/com/skyflow/generated/rest/errors/BadRequestError.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/errors/InternalServerError.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/errors/NotFoundError.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/AsyncAuditClient.java (99%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java (95%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/AuditClient.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java (95%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java (98%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsActionType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextAccessType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextActorType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextAuthMode.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsResourceType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestSortOpsOrderBy.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncBinLookupClient.java (99%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java (88%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/binlookup/BinLookupClient.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java (87%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java (91%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java (96%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java (91%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java (96%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java (98%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java (86%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileAudioRequestDeidentifyAudioEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileAudioRequestDeidentifyAudioOutputTranscription.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileDocumentPdfRequestDeidentifyPdfEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileImageRequestDeidentifyImageEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileImageRequestDeidentifyImageMaskingMethod.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyDocumentEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyPresentationEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifySpreadsheetEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyStructuredTextEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyTextEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncGuardrailsClient.java (99%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java (89%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/guardrails/GuardrailsClient.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java (87%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java (93%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/query/AsyncQueryClient.java (99%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java (91%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/query/QueryClient.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java (91%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java (94%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java (96%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java (91%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java (95%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java (88%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java (85%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java (96%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java (93%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java (95%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceBulkGetRecordRequestOrderBy.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceBulkGetRecordRequestRedaction.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceGetRecordRequestRedaction.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java (94%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/strings/AsyncStringsClient.java (99%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/strings/StringsClient.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java (91%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/strings/types/DeidentifyStringRequestEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java (94%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java (99%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java (93%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/tokens/TokensClient.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java (91%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java (85%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/AuditEventAuditResourceType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/AuditEventContext.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/AuditEventData.java (87%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java (89%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/BatchRecordMethod.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ContextAccessType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ContextAuthMode.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java (93%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutputProcessedFileExtension.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutputProcessedFileType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java (87%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java (91%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java (94%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponseValidation.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java (95%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DetectRunsResponseOutputType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DetectRunsResponseStatus.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/DetokenizeRecordResponseValueType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ErrorResponse.java (88%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileData.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDataFormat.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudioDataFormat.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocumentDataFormat.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImageDataFormat.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentationDataFormat.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheetDataFormat.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredTextDataFormat.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFileDataFormat.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/Format.java (89%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FormatMaskedItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FormatPlaintextItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/FormatRedactedItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java (88%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java (89%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/Locations.java (94%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ProtobufAny.java (86%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/RedactionEnumRedaction.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java (93%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutputProcessedFileExtension.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponseOutputType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponseStatus.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/RequestActionType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ShiftDates.java (89%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/ShiftDatesEntityTypesItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java (94%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/TokenTypeMappingDefault.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/TokenTypeMappingEntityOnlyItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/TokenTypeMappingEntityUnqCounterItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/TokenTypeMappingVaultTokenItem.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/Transformations.java (87%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java (93%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java (86%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java (93%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java (95%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java (89%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java (97%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java (83%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java (85%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java (83%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1Byot.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1Card.java (96%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java (93%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java (84%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java (91%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1FileAvScanStatus.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java (87%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java (83%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java (84%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1MemberType.java (100%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java (87%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java (84%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java (90%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java (92%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java (91%) rename {src => v2/src}/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java (90%) rename {src => v2/src}/main/java/com/skyflow/logs/ErrorLogs.java (100%) rename {src => v2/src}/main/java/com/skyflow/logs/InfoLogs.java (100%) rename {src => v2/src}/main/java/com/skyflow/utils/Constants.java (100%) rename {src => v2/src}/main/java/com/skyflow/utils/HttpUtility.java (100%) rename {src => v2/src}/main/java/com/skyflow/utils/Utils.java (100%) rename {src => v2/src}/main/java/com/skyflow/utils/logger/LogUtil.java (100%) rename {src => v2/src}/main/java/com/skyflow/utils/validations/Validations.java (99%) rename {src => v2/src}/main/java/com/skyflow/vault/audit/ListEventRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/audit/ListEventResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/bin/GetBinRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/bin/GetBinResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/connection/InvokeConnectionRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/connection/InvokeConnectionResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/controller/AuditController.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/controller/BinLookupController.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/controller/ConnectionController.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/controller/DetectController.java (99%) rename {src => v2/src}/main/java/com/skyflow/vault/controller/VaultController.java (92%) rename {src => v2/src}/main/java/com/skyflow/vault/data/DeleteRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/DeleteResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/FileUploadRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/FileUploadResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/GetRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/GetResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/InsertRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/InsertResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/QueryRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/QueryResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/UpdateRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/data/UpdateResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/AudioBleep.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/DateTransformation.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/DeidentifyFileRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/DeidentifyFileResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/DeidentifyTextRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/DeidentifyTextResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/EntityInfo.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/FileEntityInfo.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/FileInfo.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/FileInput.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/GetDetectRunRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/ReidentifyTextRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/ReidentifyTextResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/TextIndex.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/TokenFormat.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/detect/Transformations.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/tokens/ColumnValue.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/tokens/DetokenizeData.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/tokens/DetokenizeRecordResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/tokens/DetokenizeRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/tokens/DetokenizeResponse.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/tokens/TokenizeRequest.java (100%) rename {src => v2/src}/main/java/com/skyflow/vault/tokens/TokenizeResponse.java (100%) rename {src => v2/src}/main/resources/sdk.properties (100%) rename {src => v2/src}/test/java/com/skyflow/ConnectionClientDotenvTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/ConnectionClientTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/SkyflowTests.java (94%) rename {src => v2/src}/test/java/com/skyflow/VaultClientDotenvTests.java (98%) rename {src => v2/src}/test/java/com/skyflow/VaultClientTests.java (99%) rename {src => v2/src}/test/java/com/skyflow/config/ConnectionConfigTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/config/CredentialsTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/config/ManagementConfigTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/config/VaultConfigTests.java (91%) rename {src => v2/src}/test/java/com/skyflow/enums/DeidentifyFileStatusTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/enums/DetectEntitiesTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/enums/DetectOutputTranscriptionsTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/enums/MaskingMethodTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/enums/TokenModeTest.java (98%) rename {src => v2/src}/test/java/com/skyflow/enums/TokenTypeTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/errors/SkyflowExceptionTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/serviceaccount/util/TokenTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/utils/HttpUtilityTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/utils/UtilsTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/utils/logger/LogUtilLevelTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/BinAuditTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/connection/InvokeConnectionTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java (99%) rename {src => v2/src}/test/java/com/skyflow/vault/controller/DetectControllerFileTests.java (99%) rename {src => v2/src}/test/java/com/skyflow/vault/controller/DetectControllerTests.java (99%) rename {src => v2/src}/test/java/com/skyflow/vault/controller/VaultControllerTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/data/DeleteTests.java (97%) rename {src => v2/src}/test/java/com/skyflow/vault/data/FileUploadTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/data/GetTests.java (99%) rename {src => v2/src}/test/java/com/skyflow/vault/data/InsertTests.java (99%) rename {src => v2/src}/test/java/com/skyflow/vault/data/QueryResponseTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/data/QueryTests.java (96%) rename {src => v2/src}/test/java/com/skyflow/vault/data/UpdateTests.java (99%) rename {src => v2/src}/test/java/com/skyflow/vault/detect/DeidentifyFileRequestTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/detect/DeidentifyFileResponseTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/detect/DeidentifyTextTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/detect/FileEntityInfoTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/detect/FileInfoTest.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/detect/ReidentifyTextTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/tokens/DetokenizeTests.java (100%) rename {src => v2/src}/test/java/com/skyflow/vault/tokens/TokenizeTests.java (97%) rename {src => v2/src}/test/resources/invalidPrivateKeyCredentials.json (100%) rename {src => v2/src}/test/resources/invalidTokenURICredentials.json (100%) rename {src => v2/src}/test/resources/noClientIDCredentials.json (100%) rename {src => v2/src}/test/resources/noKeyIDCredentials.json (100%) rename {src => v2/src}/test/resources/noPrivateKeyCredentials.json (100%) rename {src => v2/src}/test/resources/noTokenURICredentials.json (100%) rename {src => v2/src}/test/resources/notJson.txt (100%) diff --git a/common/pom.xml b/common/pom.xml new file mode 100644 index 00000000..72fff275 --- /dev/null +++ b/common/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + com.skyflow + skyflow + 1.0.0 + ../pom.xml + + + common + 1.0.0 + ${project.groupId}:${project.artifactId} + + + + true + 8 + 8 + UTF-8 + + \ No newline at end of file diff --git a/common/src/main/java/com/skyflow/BaseSkyflow.java b/common/src/main/java/com/skyflow/BaseSkyflow.java new file mode 100644 index 00000000..83e31c1e --- /dev/null +++ b/common/src/main/java/com/skyflow/BaseSkyflow.java @@ -0,0 +1,36 @@ +package com.skyflow; + +import com.skyflow.enums.LogLevel; +import com.skyflow.logs.InfoLogs; +import com.skyflow.utils.BaseUtils; +import com.skyflow.utils.logger.LogUtil; + +class BaseSkyflow { + private final BaseSkyflowClientBuilder builder; + + protected BaseSkyflow(BaseSkyflowClientBuilder builder) { + this.builder = builder; + LogUtil.printInfoLog(InfoLogs.CLIENT_INITIALIZED.getLog()); + } + + public LogLevel getLogLevel() { + return this.builder.logLevel; + } + + static class BaseSkyflowClientBuilder { + protected LogLevel logLevel = LogLevel.ERROR; + + protected BaseSkyflowClientBuilder() { + } + + protected BaseSkyflowClientBuilder setLogLevel(LogLevel logLevel) { + this.logLevel = logLevel == null ? LogLevel.ERROR : logLevel; + LogUtil.setupLogger(this.logLevel); + LogUtil.printInfoLog(BaseUtils.parameterizedString( + InfoLogs.CURRENT_LOG_LEVEL.getLog(), String.valueOf(this.logLevel) + )); + return this; + } + } + +} diff --git a/common/src/main/java/com/skyflow/BaseVaultClient.java b/common/src/main/java/com/skyflow/BaseVaultClient.java new file mode 100644 index 00000000..f0ea23d1 --- /dev/null +++ b/common/src/main/java/com/skyflow/BaseVaultClient.java @@ -0,0 +1,93 @@ +package com.skyflow; + +import com.skyflow.config.BaseCredentials; +import com.skyflow.errors.ErrorCode; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import com.skyflow.logs.InfoLogs; +import com.skyflow.serviceaccount.util.Token; +import com.skyflow.utils.BaseConstants; +import com.skyflow.utils.BaseUtils; +import com.skyflow.utils.logger.LogUtil; +import com.skyflow.utils.validations.BaseValidations; +import io.github.cdimascio.dotenv.Dotenv; +import io.github.cdimascio.dotenv.DotenvException; +import okhttp3.ConnectionPool; +import okhttp3.OkHttpClient; +import okhttp3.Request; + +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; + +class BaseVaultClient { + protected OkHttpClient sharedHttpClient; + protected String currentVaultURL; + protected BaseCredentials commonCredentials; + protected BaseCredentials finalCredentials; + protected String token; + protected String apiKey; + + public BaseVaultClient() { + } + + protected OkHttpClient buildSharedHttpClient(Supplier tokenSupplier) { + return new OkHttpClient.Builder() + .connectionPool(new ConnectionPool(10, 1, TimeUnit.MINUTES)) + .addInterceptor(chain -> { + Request requestWithAuth = chain.request().newBuilder() + .header("Authorization", "Bearer " + tokenSupplier.get()) + .build(); + return chain.proceed(requestWithAuth); + }) + .build(); + } + + protected void prioritiseCredentials(BaseCredentials vaultSpecificCredentials) throws SkyflowException { + try { + BaseCredentials original = this.finalCredentials; + if (vaultSpecificCredentials != null) { + this.finalCredentials = vaultSpecificCredentials; + } else if (this.commonCredentials != null) { + this.finalCredentials = this.commonCredentials; + } else { + String sysCredentials = System.getenv(BaseConstants.ENV_CREDENTIALS_KEY_NAME); + if (sysCredentials == null) { + Dotenv dotenv = Dotenv.load(); + sysCredentials = dotenv.get(BaseConstants.ENV_CREDENTIALS_KEY_NAME); + } + if (sysCredentials == null) { + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentials.getMessage()); + } else { + this.finalCredentials = new BaseCredentials(); + this.finalCredentials.setCredentialsString(sysCredentials); + } + } + if (original != null && !original.equals(this.finalCredentials)) { + token = null; + apiKey = null; + } + } catch (DotenvException e) { + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentials.getMessage()); + } catch (SkyflowException e) { + throw e; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + protected void setBearerToken(BaseCredentials vaultSpecificCredentials) throws SkyflowException { + prioritiseCredentials(vaultSpecificCredentials); + BaseValidations.validateCredentials(this.finalCredentials); + if (this.finalCredentials.getApiKey() != null) { + LogUtil.printInfoLog(InfoLogs.USE_API_KEY.getLog()); + token = this.finalCredentials.getApiKey(); + } else if (token == null || token.trim().isEmpty()) { + token = BaseUtils.generateBearerToken(this.finalCredentials); + } else if (Token.isExpired(token)) { + LogUtil.printInfoLog(InfoLogs.BEARER_TOKEN_EXPIRED.getLog()); + token = BaseUtils.generateBearerToken(this.finalCredentials); + } else { + LogUtil.printInfoLog(InfoLogs.REUSE_BEARER_TOKEN.getLog()); + } + } +} diff --git a/src/main/java/com/skyflow/config/Credentials.java b/common/src/main/java/com/skyflow/config/BaseCredentials.java similarity index 87% rename from src/main/java/com/skyflow/config/Credentials.java rename to common/src/main/java/com/skyflow/config/BaseCredentials.java index c2594ef6..34b2c117 100644 --- a/src/main/java/com/skyflow/config/Credentials.java +++ b/common/src/main/java/com/skyflow/config/BaseCredentials.java @@ -3,18 +3,18 @@ import java.util.ArrayList; import java.util.Map; -public class Credentials { +public class BaseCredentials implements Cloneable { private String path; private ArrayList roles; - private Object context; private String credentialsString; private String token; private String apiKey; + private Object context; - public Credentials() { + public BaseCredentials() { this.path = null; - this.context = null; this.credentialsString = null; + this.context = null; } public String getPath() { @@ -33,18 +33,6 @@ public void setRoles(ArrayList roles) { this.roles = roles; } - public Object getContext() { - return context; - } - - public void setContext(String context) { - this.context = context; - } - - public void setContext(Map context) { - this.context = context; - } - public String getCredentialsString() { return credentialsString; } @@ -68,4 +56,20 @@ public String getApiKey() { public void setApiKey(String apiKey) { this.apiKey = apiKey; } + public Object getContext() { + return context; + } + + public void setContext(String context) { + this.context = context; + } + + public void setContext(Map context) { + this.context = context; + } + + @Override + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } } diff --git a/src/main/java/com/skyflow/config/VaultConfig.java b/common/src/main/java/com/skyflow/config/BaseVaultConfig.java similarity index 70% rename from src/main/java/com/skyflow/config/VaultConfig.java rename to common/src/main/java/com/skyflow/config/BaseVaultConfig.java index 4f61af2a..e59aeb91 100644 --- a/src/main/java/com/skyflow/config/VaultConfig.java +++ b/common/src/main/java/com/skyflow/config/BaseVaultConfig.java @@ -2,17 +2,17 @@ import com.skyflow.enums.Env; -public class VaultConfig { +public class BaseVaultConfig { private String vaultId; private String clusterId; + private String vaultURL; private Env env; - private Credentials credentials; - public VaultConfig() { + public BaseVaultConfig() { this.vaultId = null; this.clusterId = null; + this.vaultURL = null; this.env = Env.PROD; - this.credentials = null; } public String getVaultId() { @@ -39,11 +39,13 @@ public void setEnv(Env env) { this.env = env == null ? Env.PROD : env; } - public Credentials getCredentials() { - return credentials; + + public String getVaultURL() { + return vaultURL; } - public void setCredentials(Credentials credentials) { - this.credentials = credentials; + public void setVaultURL(String vaultURL) { + this.vaultURL = vaultURL; } + } diff --git a/src/main/java/com/skyflow/enums/Env.java b/common/src/main/java/com/skyflow/enums/Env.java similarity index 100% rename from src/main/java/com/skyflow/enums/Env.java rename to common/src/main/java/com/skyflow/enums/Env.java diff --git a/src/main/java/com/skyflow/enums/InterfaceName.java b/common/src/main/java/com/skyflow/enums/InterfaceName.java similarity index 100% rename from src/main/java/com/skyflow/enums/InterfaceName.java rename to common/src/main/java/com/skyflow/enums/InterfaceName.java diff --git a/src/main/java/com/skyflow/enums/LogLevel.java b/common/src/main/java/com/skyflow/enums/LogLevel.java similarity index 100% rename from src/main/java/com/skyflow/enums/LogLevel.java rename to common/src/main/java/com/skyflow/enums/LogLevel.java diff --git a/src/main/java/com/skyflow/errors/ErrorCode.java b/common/src/main/java/com/skyflow/errors/ErrorCode.java similarity index 100% rename from src/main/java/com/skyflow/errors/ErrorCode.java rename to common/src/main/java/com/skyflow/errors/ErrorCode.java diff --git a/common/src/main/java/com/skyflow/errors/ErrorMessage.java b/common/src/main/java/com/skyflow/errors/ErrorMessage.java new file mode 100644 index 00000000..169880e9 --- /dev/null +++ b/common/src/main/java/com/skyflow/errors/ErrorMessage.java @@ -0,0 +1,210 @@ +package com.skyflow.errors; + +import com.skyflow.utils.SdkVersion; + +public enum ErrorMessage { + // Client initialization + VaultIdAlreadyInConfigList("%s0 Validation error. VaultId is present in an existing config. Specify a new vaultId in config."), + VaultIdNotInConfigList("%s0 Validation error. VaultId is missing from the config. Specify the vaultIds from configs."), + OnlySingleVaultConfigAllowed("%s0 Validation error. A vault config already exists. Cannot add another vault config."), + ConnectionIdAlreadyInConfigList("%s0 Validation error. ConnectionId is present in an existing config. Specify a connectionId in config."), + ConnectionIdNotInConfigList("%s0 Validation error. ConnectionId is missing from the config. Specify the connectionIds from configs."), + EmptyCredentials("%s0 Validation error. Invalid credentials. Credentials must not be empty."), + TableSpecifiedInRequestAndRecordObject("%s0 Validation error. Table name cannot be specified at both the request and record levels. Please specify the table name in only one place."), + UpsertTableRequestAtRecordLevel("%s0 Validation error. Table name should be present at each record level when upsert is present at record level."), + UpsertTableRequestAtRequestLevel("%s0 Validation error. Upsert should be present at each record level when table name is present at record level."), + TableNotSpecifiedInRequestAndRecordObject("%s0 Validation error. Table name is missing. Table name should be specified at one place either at the request level or record level. Please specify the table name at one place."), + // Vault config + InvalidVaultId("%s0 Initialization failed. Invalid vault ID. Specify a valid vault ID."), + EmptyVaultId("%s0 Initialization failed. Invalid vault ID. Vault ID must not be empty."), + InvalidClusterId("%s0 Initialization failed. Invalid cluster ID. Specify cluster ID."), + EmptyClusterId("%s0 Initialization failed. Invalid cluster ID. Specify a valid cluster ID."), + EmptyVaultUrl("%s0 Initialization failed. Vault URL is empty. Specify a valid vault URL."), + InvalidVaultUrlFormat("%s0 Initialization failed. Vault URL must start with 'https://'."), + EitherVaultUrlOrClusterIdRequired("%s0 Initialization failed. Specify either 'clusterId' or 'vaultURL'."), + + // Connection config + InvalidConnectionId("%s0 Initialization failed. Invalid connection ID. Specify a valid connection ID."), + EmptyConnectionId("%s0 Initialization failed. Invalid connection ID. Connection ID must not be empty."), + InvalidConnectionUrl("%s0 Initialization failed. Invalid connection URL. Specify a valid connection URL."), + EmptyConnectionUrl("%s0 Initialization failed. Invalid connection URL. Connection URL must not be empty."), + InvalidConnectionUrlFormat("%s0 Initialization failed. Connection URL is not a valid URL. Specify a valid connection URL."), + + // Credentials + MultipleTokenGenerationMeansPassed("%s0 Initialization failed. Invalid credentials. Specify only one from 'path', 'credentialsString', 'token' or 'apiKey'."), + NoTokenGenerationMeansPassed("%s0 Initialization failed. Invalid credentials. Specify any one from 'path', 'credentialsString', 'token' or 'apiKey'."), + EmptyCredentialFilePath("%s0 Initialization failed. Invalid credentials. Credentials file path must not be empty."), + EmptyCredentialsString("%s0 Initialization failed. Invalid credentials. Credentials string must not be empty."), + EmptyToken("%s0 Initialization failed. Invalid credentials. Token must not be empty."), + EmptyApikey("%s0 Initialization failed. Invalid credentials. Api key must not be empty."), + InvalidApikey("%s0 Initialization failed. Invalid credentials. Specify valid api key."), + EmptyRoles("%s0 Initialization failed. Invalid roles. Specify at least one role."), + EmptyRoleInRoles("%s0 Initialization failed. Invalid role. Specify a valid role."), + EmptyContext("%s0 Initialization failed. Invalid context. Specify a valid context."), + InvalidContextType("%s0 Initialization failed. Invalid context type. Specify context as a String or Map."), + InvalidContextMapKey("%s0 Initialization failed. Invalid key '%s1' in context map. Keys must contain only alphanumeric characters and underscores."), + + // Bearer token generation + FileNotFound("%s0 Initialization failed. Credential file not found at %s1. Verify the file path."), + FileInvalidJson("%s0 Initialization failed. File at %s1 is not in valid JSON format. Verify the file contents."), + CredentialsStringInvalidJson("%s0 Initialization failed. Credentials string is not in valid JSON format. Verify the credentials string contents."), + InvalidCredentials("%s0 Initialization failed. Invalid credentials provided. Specify valid credentials."), + MissingPrivateKey("%s0 Initialization failed. Unable to read private key in credentials. Verify your private key."), + MissingClientId("%s0 Initialization failed. Unable to read client ID in credentials. Verify your client ID."), + MissingKeyId("%s0 Initialization failed. Unable to read key ID in credentials. Verify your key ID."), + MissingTokenUri("%s0 Initialization failed. Unable to read token URI in credentials. Verify your token URI."), + InvalidTokenUri("%s0 Initialization failed. Token URI in not a valid URL in credentials. Verify your token URI."), + JwtInvalidFormat("%s0 Initialization failed. Invalid private key format. Verify your credentials."), + InvalidAlgorithm("%s0 Initialization failed. Invalid algorithm to parse private key. Specify valid algorithm."), + InvalidKeySpec("%s0 Initialization failed. Unable to parse RSA private key. Verify your credentials."), + JwtDecodeError("%s0 Validation error. Invalid access token. Verify your credentials."), + MissingAccessToken("%s0 Validation error. Access token not present in the response from bearer token generation. Verify your credentials."), + MissingTokenType("%s0 Validation error. Token type not present in the response from bearer token generation. Verify your credentials."), + BearerTokenExpired("%s0 Validation error. Bearer token is invalid or expired. Please provide a valid bearer token."), + + // Insert + TableKeyError("%s0 Validation error. 'table' key is missing from the payload. Specify a 'table' key."), + EmptyTable("%s0 Validation error. 'table' can't be empty. Specify a table."), + ValuesKeyError("%s0 Validation error. 'values' key is missing from the payload. Specify a 'values' key."), + EmptyRecords("%s0 Validation error. 'records' can't be empty. Specify records."), + EmptyKeyInRecords("%s0 Validation error. Invalid key in data in records. Specify a valid key."), + EmptyValueInRecords("%s0 Validation error. Invalid value in records. Specify a valid value."), + RecordsKeyError("%s0 Validation error. 'records' key is missing from the payload. Specify a 'records' key."), + EmptyValues("%s0 Validation error. 'values' can't be empty. Specify values."), + EmptyKeyInValues("%s0 Validation error. Invalid key in values. Specify a valid key."), + EmptyValueInValues("%s0 Validation error. Invalid value in values. Specify a valid value."), + TokensKeyError("%s0 Validation error. 'tokens' key is missing from the payload. Specify a 'tokens' key."), + EmptyTokens("%s0 Validation error. The 'tokens' field is empty. Specify tokens for one or more fields."), + EmptyKeyInTokens("%s0 Validation error. Invalid key tokens. Specify a valid key."), + EmptyValueInTokens("%s0 Validation error. Invalid value in tokens. Specify a valid value."), + EmptyUpsert("%s0 Validation error. 'upsert' key can't be empty. Specify an upsert column."), + EmptyUpsertValues("%s0 Validation error. Upsert column values can't be empty. Specify at least one upsert column."), + HomogenousNotSupportedWithUpsert("%s0 Validation error. 'homogenous' is not supported with 'upsert'. Specify either 'homogenous' or 'upsert'."), + TokensPassedForTokenModeDisable("%s0 Validation error. 'tokenMode' wasn't specified. Set 'tokenMode' to 'ENABLE' to insert tokens."), + NoTokensWithTokenMode("%s0 Validation error. Tokens weren't specified for records while 'tokenMode' was %s1. Specify tokens."), + MismatchOfFieldsAndTokens("%s0 Validation error. 'fields' and 'tokens' have different columns names. Verify that 'fields' and 'tokens' columns match."), + InsufficientTokensPassedForTokenModeEnableStrict("%s0 Validation error. 'tokenMode' is set to 'ENABLE_STRICT', but some fields are missing tokens. Specify tokens for all fields."), + BatchInsertPartialSuccess("%s0 Insert operation completed with partial success."), + BatchInsertFailure("%s0 Insert operation failed."), + RecordSizeExceedError("%s0 Maximum number of records exceeded. The limit is 10000."), + + // Detokenize + InvalidDetokenizeData("%s0 Validation error. Invalid detokenize data. Specify valid detokenize data."), + EmptyDetokenizeData("%s0 Validation error. Invalid data tokens. Specify at least one data token."), + EmptyTokenInDetokenizeData("%s0 Validation error. Invalid data tokens. Specify a valid data token."), + TokensSizeExceedError("%s0 Maximum number of tokens exceeded. The limit is 10000."), + + // Delete Tokens + DeleteTokensRequestNull("%s0 Validation error. DeleteTokensRequest object is null. Specify a valid DeleteTokensRequest object."), + EmptyDeleteTokensData("%s0 Validation error. Tokens list is empty. Specify at least one token to delete."), + EmptyTokenInDeleteTokensData("%s0 Validation error. Invalid token in delete tokens request. Specify a valid token."), + DeleteTokensSizeExceedError("%s0 Maximum number of tokens exceeded. The limit is 10000."), + + // Get + IdsKeyError("%s0 Validation error. 'ids' key is missing from the payload. Specify an 'ids' key."), + EmptyIds("%s0 Validation error. 'ids' can't be empty. Specify at least one id."), + EmptyIdInIds("%s0 Validation error. Invalid id in 'ids'. Specify a valid id."), + EmptyFields("%s0 Validation error. Fields are empty in get payload. Specify at least one field."), + EmptyFieldInFields("%s0 Validation error. Invalid field in 'fields'. Specify a valid field."), + RedactionKeyError("%s0 Validation error. 'redaction' key is missing from the payload. Specify a 'redaction' key."), + RedactionWithTokensNotSupported("%s0 Validation error. 'redaction' can't be used when 'returnTokens' is specified. Remove 'redaction' from payload if 'returnTokens' is specified."), + TokensGetColumnNotSupported("%s0 Validation error. Column name and/or column values can't be used when 'returnTokens' is specified. Remove unique column values or 'returnTokens' from the payload."), + EmptyOffset("%s0 Validation error. 'offset' can't be empty. Specify an offset."), + EmptyLimit("%s0 Validation error. 'limit' can't be empty. Specify a limit."), + UniqueColumnOrIdsKeyError("%s0 Validation error. 'ids' or 'columnName' key is missing from the payload. Specify the ids or unique 'columnName' in payload."), + BothIdsAndColumnDetailsSpecified("%s0 Validation error. Both Skyflow IDs and column details can't be specified. Either specify Skyflow IDs or unique column details."), + ColumnNameKeyError("%s0 Validation error. 'columnName' isn't specified whereas 'columnValues' are specified. Either add 'columnName' or remove 'columnValues'."), + EmptyColumnName("%s0 Validation error. 'columnName' can't be empty. Specify a column name."), + ColumnValuesKeyErrorGet("%s0 Validation error. 'columnValues' aren't specified whereas 'columnName' is specified. Either add 'columnValues' or remove 'columnName'."), + EmptyColumnValues("%s0 Validation error. 'columnValues' can't be empty. Specify at least one column value"), + EmptyValueInColumnValues("%s0 Validation error. Invalid value in column values. Specify a valid column value."), + + TokenKeyError("%s0 Validation error. 'token' key is missing from the payload. Specify a 'token' key."), + PartialSuccess("%s0 Validation error. Check 'SkyflowError.data' for details."), + + // Update + DataKeyError("%s0 Validation error. 'data' key is missing from the payload. Specify a 'data' key."), + EmptyData("%s0 Validation error. 'data' can't be empty. Specify data."), + SkyflowIdKeyError("%s0 Validation error. 'skyflow_id' is missing from the data payload. Specify a 'skyflow_id'."), + InvalidSkyflowIdType("%s0 Validation error. Invalid type for 'skyflow_id' in data payload. Specify 'skyflow_id' as a string."), + EmptySkyflowId("%s0 Validation error. 'skyflow_id' can't be empty. Specify a skyflow id."), + + // Query + QueryKeyError("%s0 Validation error. 'query' key is missing from the payload. Specify a 'query' key."), + EmptyQuery("%s0 Validation error. 'query' can't be empty. Specify a query"), + + // Tokenize + ColumnValuesKeyErrorTokenize("%s0 Validation error. 'columnValues' key is missing from the payload. Specify a 'columnValues' key."), + EmptyColumnGroupInColumnValue("%s0 Validation error. Invalid column group in column value. Specify a valid column group."), + TokenizeRequestNull("%s0 Validation error. TokenizeRequest object is null. Specify a valid TokenizeRequest object."), + EmptyTokenizeData("%s0 Validation error. Tokenize data is empty. Specify at least one tokenize record."), + TokenizeRecordNull("%s0 Validation error. TokenizeRecord in the list is null. Specify a valid TokenizeRecord object."), + EmptyValueInTokenizeRecord("%s0 Validation error. Value in TokenizeRecord is null or empty. Specify a valid value."), + EmptyTokenGroupNamesInTokenizeRecord("%s0 Validation error. TokenGroupNames in TokenizeRecord is null or empty. Specify at least one token group name."), + EmptyTokenGroupNameInTokenizeRecord("%s0 Validation error. Token group name in TokenizeRecord is null or empty. Specify a valid token group name."), + TokenizeDataSizeExceedError("%s0 Maximum number of tokenize records exceeded. The limit is 10000."), + + // Connection + InvalidRequestHeaders("%s0 Validation error. Request headers aren't valid. Specify valid request headers."), + EmptyRequestHeaders("%s0 Validation error. Request headers are empty. Specify valid request headers."), + InvalidPathParams("%s0 Validation error. Path parameters aren't valid. Specify valid path parameters."), + EmptyPathParams("%s0 Validation error. Path parameters are empty. Specify valid path parameters."), + InvalidQueryParams("%s0 Validation error. Query parameters aren't valid. Specify valid query parameters."), + EmptyQueryParams("%s0 Validation error. Query parameters are empty. Specify valid query parameters."), + InvalidRequestBody("%s0 Validation error. Invalid request body. Specify the request body as an object."), + EmptyRequestBody("%s0 Validation error. Request body can't be empty. Specify a valid request body."), + + // File upload + ColumnNameKeyErrorFileUpload("%s0 Validation error. columnName is missing from the payload. Specify a columnName key."), + MissingFileSourceInUploadFileRequest("%s0 Validation error. Provide exactly one of filePath, base64, or fileObject."), + FileNameMustBeProvidedWithFileObject("%s0 Validation error. fileName must be provided when using fileObject."), + InvalidFileObject("%s0 Validation error. Invalid file object in file upload request. Specify a valid file object."), + InvalidBase64("%s0 Validation error. Invalid base64 string in file upload request. Specify a valid base64 string."), + + // detect + InvalidTextInDeIdentify("%s0 Validation error. The text field is required and must be a non-empty string. Specify a valid text."), + InvalidTextInReIdentify("%s0 Validation error. The text field is required and must be a non-empty string. Specify a valid text."), + + //Detect Files + InvalidNullFileInDeIdentifyFile("%s0 Validation error. The file field is required and must not be null. Specify a valid file object."), + InvalidFilePath("%s0 Validation error. The file path is invalid. Specify a valid file path."), + BothFileAndFilePathProvided("%s0 Validation error. Both file and filePath are provided. Specify either file object or filePath, not both."), + FileNotFoundToDeidentify("%s0 Validation error. The file to deidentify was not found at the specified path. Verify the file path and try again."), + FileNotReadableToDeidentify("%s0 Validation error. The file to deidentify is not readable. Check the file permissions and try again."), + InvalidPixelDensityToDeidentifyFile("%s0 Validation error. Should be a positive integer. Specify a valid pixel density."), + InvalidMaxResolution("%s0 Validation error. Should be a positive integer. Specify a valid max resolution."), + OutputDirectoryNotFound("%s0 Validation error. The output directory for deidentified files was not found at the specified path. Verify the output directory path and try again."), + InvalidPermission("%s0 Validation error. The output directory for deidentified files is not writable. Check the directory permissions and try again."), + InvalidWaitTime("%s0 Validation error. The wait time for deidentify file operation should be a positive integer. Specify a valid wait time."), + WaitTimeExceedsLimit("%s0 Validation error. The wait time for deidentify file operation exceeds the maximum limit of 64 seconds. Specify a wait time less than or equal to 60 seconds."), + InvalidOrEmptyRunId("%s0 Validation error. The run ID is invalid or empty. Specify a valid run ID."), + FailedToEncodeFile("%s0 Validation error. Failed to encode the file. Ensure the file is in a supported format and try again."), + FailedToDecodeFileFromResponse("%s0 Failed to decode the file from the response. Ensure the response is valid and try again."), + EmptyFileAndFilePathInDeIdentifyFile("%s0 Validation error. Both file and filePath are empty. Specify either file object or filePath, not both."), + VaultTokenFormatIsNotAllowedForFiles("%s0 Validation error. Vault token format is not allowed for deidentify file request."), + PollingForResultsFailed("%s0 API error. Polling for results failed. Unable to retrieve the deidentified file"), + FailedToSaveProcessedFile("%s0 Validation error. Failed to save the processed file. Ensure the output directory is valid and writable."), + InvalidAudioFileType("%s0 Validation error. The file type is not supported. Specify a valid file type mp3 or wav."), + // Generic + ErrorOccurred("%s0 API error. Error occurred."), + + DetokenizeRequestNull("%s0 Validation error. DetokenizeRequest object is null. Specify a valid DetokenizeRequest object."), + + NullTokenGroupRedactions("%s0 Validation error. TokenGroupRedaction in the list is null. Specify a valid TokenGroupRedactions object."), + + NullRedactionInTokenGroup("%s0 Validation error. Redaction in TokenGroupRedactions is null or empty. Specify a valid redaction."), + + NullTokenGroupNameInTokenGroup("%s0 Validation error. TokenGroupName in TokenGroupRedactions is null or empty. Specify a valid tokenGroupName."), + InvalidRecord("%s0 Validation error. InsertRecord object in the list is invalid. Specify a valid InsertRecord object."), + ; + + private final String message; + + ErrorMessage(String message) { + this.message = message.replace("%s0", SdkVersion.getSdkPrefix()); + } + + public String getMessage() { + return message; + } +} diff --git a/src/main/java/com/skyflow/errors/HttpStatus.java b/common/src/main/java/com/skyflow/errors/HttpStatus.java similarity index 100% rename from src/main/java/com/skyflow/errors/HttpStatus.java rename to common/src/main/java/com/skyflow/errors/HttpStatus.java diff --git a/common/src/main/java/com/skyflow/errors/SkyflowException.java b/common/src/main/java/com/skyflow/errors/SkyflowException.java new file mode 100644 index 00000000..138fcc68 --- /dev/null +++ b/common/src/main/java/com/skyflow/errors/SkyflowException.java @@ -0,0 +1,135 @@ +package com.skyflow.errors; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.skyflow.utils.BaseConstants; + +import java.util.List; +import java.util.Map; + +public class SkyflowException extends Exception { + private String requestId; + private Integer grpcCode; + private Integer httpCode; + private String message; + private String httpStatus; + private JsonArray details; + private JsonObject responseBody; + + public SkyflowException(String message) { + super(message); + this.message = message; + } + + public SkyflowException(Throwable cause) { + super(cause); + this.message = cause.getMessage(); + } + + public SkyflowException(String message, Throwable cause) { + super(message, cause); + this.message = message; + } + + public SkyflowException(int code, String message) { + super(message); + this.httpCode = code; + this.message = message; + this.httpStatus = HttpStatus.BAD_REQUEST.getHttpStatus(); + this.details = new JsonArray(); + } + + public SkyflowException(int httpCode, Throwable cause, Map> responseHeaders, String responseBody) { + super(cause); + this.httpCode = httpCode > 0 ? httpCode : 400; + try { + setRequestId(responseHeaders); + setResponseBody(responseBody, responseHeaders); + } catch (Exception e) { + this.httpStatus = HttpStatus.BAD_REQUEST.getHttpStatus(); + String fullMessage = responseBody != null ? responseBody : + (cause.getLocalizedMessage() != null ? cause.getMessage() : ErrorMessage.ErrorOccurred.getMessage()); + this.message = fullMessage.split("HTTP response code:")[0].trim(); + } + } + + private void setResponseBody(String responseBody, Map> responseHeaders) { + this.responseBody = JsonParser.parseString(responseBody).getAsJsonObject(); + if (this.responseBody.get("error") != null) { + setGrpcCode(); + setHttpStatus(); + setMessage(); + setDetails(responseHeaders); + } + } + + public String getRequestId() { + return requestId; + } + + private void setRequestId(Map> responseHeaders) { + List ids = responseHeaders.get(BaseConstants.REQUEST_ID_HEADER_KEY); + this.requestId = ids == null ? null : ids.get(0); + } + + private void setMessage() { + JsonElement messageElement = ((JsonObject) responseBody.get("error")).get("message"); + this.message = messageElement == null ? null : messageElement.getAsString(); + } + + private void setGrpcCode() { + JsonElement grpcElement = ((JsonObject) responseBody.get("error")).get("grpc_code"); + this.grpcCode = grpcElement == null ? null : grpcElement.getAsInt(); + } + + private void setHttpStatus() { + JsonElement statusElement = ((JsonObject) responseBody.get("error")).get("http_status"); + this.httpStatus = statusElement == null ? null : statusElement.getAsString(); + } + + public int getHttpCode() { + return httpCode; + } + + public JsonArray getDetails() { + return details; + } + + private void setDetails(Map> responseHeaders) { + JsonElement detailsElement = ((JsonObject) responseBody.get("error")).get("details"); + List errorFromClientHeader = responseHeaders.get(BaseConstants.ERROR_FROM_CLIENT_HEADER_KEY); + if (detailsElement != null) { + this.details = detailsElement.getAsJsonArray(); + } + if (errorFromClientHeader != null) { + this.details = this.details == null ? new JsonArray() : this.details; + String errorFromClient = errorFromClientHeader.get(0); + JsonObject detailObject = new JsonObject(); + detailObject.addProperty("errorFromClient", errorFromClient); + this.details.add(detailObject); + } + } + + public Integer getGrpcCode() { + return grpcCode; + } + + public String getHttpStatus() { + return httpStatus; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String toString() { + return String.format( + "%n requestId: %s%n grpcCode: %s%n httpCode: %s%n httpStatus: %s%n message: %s%n details: %s", + this.requestId, this.grpcCode, this.httpCode, this.httpStatus, this.message, this.details + ); + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/ApiClient.java b/common/src/main/java/com/skyflow/generated/auth/rest/ApiClient.java new file mode 100644 index 00000000..a1dd3aae --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/ApiClient.java @@ -0,0 +1,29 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest; + +import com.skyflow.generated.auth.rest.core.ClientOptions; +import com.skyflow.generated.auth.rest.core.Suppliers; +import com.skyflow.generated.auth.rest.resources.authentication.AuthenticationClient; + +import java.util.function.Supplier; + +public class ApiClient { + protected final ClientOptions clientOptions; + + protected final Supplier authenticationClient; + + public ApiClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + this.authenticationClient = Suppliers.memoize(() -> new AuthenticationClient(clientOptions)); + } + + public AuthenticationClient authentication() { + return this.authenticationClient.get(); + } + + public static ApiClientBuilder builder() { + return new ApiClientBuilder(); + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/ApiClientBuilder.java b/common/src/main/java/com/skyflow/generated/auth/rest/ApiClientBuilder.java new file mode 100644 index 00000000..aed3ed24 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/ApiClientBuilder.java @@ -0,0 +1,67 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest; + +import com.skyflow.generated.auth.rest.core.ClientOptions; +import com.skyflow.generated.auth.rest.core.Environment; +import okhttp3.OkHttpClient; + +public final class ApiClientBuilder { + private ClientOptions.Builder clientOptionsBuilder = ClientOptions.builder(); + + private String token = null; + + private Environment environment = Environment.PRODUCTION; + + /** + * Sets token + */ + public ApiClientBuilder token(String token) { + this.token = token; + return this; + } + + public ApiClientBuilder environment(Environment environment) { + this.environment = environment; + return this; + } + + public ApiClientBuilder url(String url) { + this.environment = Environment.custom(url); + return this; + } + + /** + * Sets the timeout (in seconds) for the client. Defaults to 60 seconds. + */ + public ApiClientBuilder timeout(int timeout) { + this.clientOptionsBuilder.timeout(timeout); + return this; + } + + /** + * Sets the maximum number of retries for the client. Defaults to 2 retries. + */ + public ApiClientBuilder maxRetries(int maxRetries) { + this.clientOptionsBuilder.maxRetries(maxRetries); + return this; + } + + /** + * Sets the underlying OkHttp client + */ + public ApiClientBuilder httpClient(OkHttpClient httpClient) { + this.clientOptionsBuilder.httpClient(httpClient); + return this; + } + + public ApiClient build() { + if (token == null) { + throw new RuntimeException("Please provide token"); + } + this.clientOptionsBuilder.addHeader("Authorization", "Bearer " + this.token); + clientOptionsBuilder.environment(this.environment); + return new ApiClient(clientOptionsBuilder.build()); + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/AsyncApiClient.java b/common/src/main/java/com/skyflow/generated/auth/rest/AsyncApiClient.java new file mode 100644 index 00000000..748eb02e --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/AsyncApiClient.java @@ -0,0 +1,29 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest; + +import com.skyflow.generated.auth.rest.core.ClientOptions; +import com.skyflow.generated.auth.rest.core.Suppliers; +import com.skyflow.generated.auth.rest.resources.authentication.AsyncAuthenticationClient; + +import java.util.function.Supplier; + +public class AsyncApiClient { + protected final ClientOptions clientOptions; + + protected final Supplier authenticationClient; + + public AsyncApiClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + this.authenticationClient = Suppliers.memoize(() -> new AsyncAuthenticationClient(clientOptions)); + } + + public AsyncAuthenticationClient authentication() { + return this.authenticationClient.get(); + } + + public static AsyncApiClientBuilder builder() { + return new AsyncApiClientBuilder(); + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/AsyncApiClientBuilder.java b/common/src/main/java/com/skyflow/generated/auth/rest/AsyncApiClientBuilder.java new file mode 100644 index 00000000..2e30d45a --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/AsyncApiClientBuilder.java @@ -0,0 +1,67 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest; + +import com.skyflow.generated.auth.rest.core.ClientOptions; +import com.skyflow.generated.auth.rest.core.Environment; +import okhttp3.OkHttpClient; + +public final class AsyncApiClientBuilder { + private ClientOptions.Builder clientOptionsBuilder = ClientOptions.builder(); + + private String token = null; + + private Environment environment = Environment.PRODUCTION; + + /** + * Sets token + */ + public AsyncApiClientBuilder token(String token) { + this.token = token; + return this; + } + + public AsyncApiClientBuilder environment(Environment environment) { + this.environment = environment; + return this; + } + + public AsyncApiClientBuilder url(String url) { + this.environment = Environment.custom(url); + return this; + } + + /** + * Sets the timeout (in seconds) for the client. Defaults to 60 seconds. + */ + public AsyncApiClientBuilder timeout(int timeout) { + this.clientOptionsBuilder.timeout(timeout); + return this; + } + + /** + * Sets the maximum number of retries for the client. Defaults to 2 retries. + */ + public AsyncApiClientBuilder maxRetries(int maxRetries) { + this.clientOptionsBuilder.maxRetries(maxRetries); + return this; + } + + /** + * Sets the underlying OkHttp client + */ + public AsyncApiClientBuilder httpClient(OkHttpClient httpClient) { + this.clientOptionsBuilder.httpClient(httpClient); + return this; + } + + public AsyncApiClient build() { + if (token == null) { + throw new RuntimeException("Please provide token"); + } + this.clientOptionsBuilder.addHeader("Authorization", "Bearer " + this.token); + clientOptionsBuilder.environment(this.environment); + return new AsyncApiClient(clientOptionsBuilder.build()); + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientApiException.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientApiException.java new file mode 100644 index 00000000..53d67f0b --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientApiException.java @@ -0,0 +1,74 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import okhttp3.Response; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * This exception type will be thrown for any non-2XX API responses. + */ +public class ApiClientApiException extends ApiClientException { + /** + * The error code of the response that triggered the exception. + */ + private final int statusCode; + + /** + * The body of the response that triggered the exception. + */ + private final Object body; + + private final Map> headers; + + public ApiClientApiException(String message, int statusCode, Object body) { + super(message); + this.statusCode = statusCode; + this.body = body; + this.headers = new HashMap<>(); + } + + public ApiClientApiException(String message, int statusCode, Object body, Response rawResponse) { + super(message); + this.statusCode = statusCode; + this.body = body; + this.headers = new HashMap<>(); + rawResponse.headers().forEach(header -> { + String key = header.component1(); + String value = header.component2(); + this.headers.computeIfAbsent(key, _str -> new ArrayList<>()).add(value); + }); + } + + /** + * @return the statusCode + */ + public int statusCode() { + return this.statusCode; + } + + /** + * @return the body + */ + public Object body() { + return this.body; + } + + /** + * @return the headers + */ + public Map> headers() { + return this.headers; + } + + @Override + public String toString() { + return "ApiClientApiException{" + "message: " + getMessage() + ", statusCode: " + statusCode + ", body: " + body + + "}"; + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientException.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientException.java new file mode 100644 index 00000000..f08afa2e --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientException.java @@ -0,0 +1,17 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +/** + * This class serves as the base exception for all errors in the SDK. + */ +public class ApiClientException extends RuntimeException { + public ApiClientException(String message) { + super(message); + } + + public ApiClientException(String message, Exception e) { + super(message, e); + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientHttpResponse.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientHttpResponse.java new file mode 100644 index 00000000..8a28d22f --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/ApiClientHttpResponse.java @@ -0,0 +1,38 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import okhttp3.Response; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public final class ApiClientHttpResponse { + + private final T body; + + private final Map> headers; + + public ApiClientHttpResponse(T body, Response rawResponse) { + this.body = body; + + Map> headers = new HashMap<>(); + rawResponse.headers().forEach(header -> { + String key = header.component1(); + String value = header.component2(); + headers.computeIfAbsent(key, _str -> new ArrayList<>()).add(value); + }); + this.headers = headers; + } + + public T body() { + return this.body; + } + + public Map> headers() { + return headers; + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/ClientOptions.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/ClientOptions.java new file mode 100644 index 00000000..4eee6b92 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/ClientOptions.java @@ -0,0 +1,171 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import okhttp3.OkHttpClient; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; + +public final class ClientOptions { + private final Environment environment; + + private final Map headers; + + private final Map> headerSuppliers; + + private final OkHttpClient httpClient; + + private final int timeout; + + private ClientOptions( + Environment environment, + Map headers, + Map> headerSuppliers, + OkHttpClient httpClient, + int timeout) { + this.environment = environment; + this.headers = new HashMap<>(); + this.headers.putAll(headers); + this.headers.putAll(new HashMap() { + { + put("X-Fern-Language", "JAVA"); + put("X-Fern-SDK-Name", "com.skyflow.generated.rest.fern:api-sdk"); + put("X-Fern-SDK-Version", "0.0.279"); + } + }); + this.headerSuppliers = headerSuppliers; + this.httpClient = httpClient; + this.timeout = timeout; + } + + public Environment environment() { + return this.environment; + } + + public Map headers(RequestOptions requestOptions) { + Map values = new HashMap<>(this.headers); + headerSuppliers.forEach((key, supplier) -> { + values.put(key, supplier.get()); + }); + if (requestOptions != null) { + values.putAll(requestOptions.getHeaders()); + } + return values; + } + + public int timeout(RequestOptions requestOptions) { + if (requestOptions == null) { + return this.timeout; + } + return requestOptions.getTimeout().orElse(this.timeout); + } + + public OkHttpClient httpClient() { + return this.httpClient; + } + + public OkHttpClient httpClientWithTimeout(RequestOptions requestOptions) { + if (requestOptions == null) { + return this.httpClient; + } + return this.httpClient + .newBuilder() + .callTimeout(requestOptions.getTimeout().get(), requestOptions.getTimeoutTimeUnit()) + .connectTimeout(0, TimeUnit.SECONDS) + .writeTimeout(0, TimeUnit.SECONDS) + .readTimeout(0, TimeUnit.SECONDS) + .build(); + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private Environment environment; + + private final Map headers = new HashMap<>(); + + private final Map> headerSuppliers = new HashMap<>(); + + private int maxRetries = 2; + + private Optional timeout = Optional.empty(); + + private OkHttpClient httpClient = null; + + public Builder environment(Environment environment) { + this.environment = environment; + return this; + } + + public Builder addHeader(String key, String value) { + this.headers.put(key, value); + return this; + } + + public Builder addHeader(String key, Supplier value) { + this.headerSuppliers.put(key, value); + return this; + } + + /** + * Override the timeout in seconds. Defaults to 60 seconds. + */ + public Builder timeout(int timeout) { + this.timeout = Optional.of(timeout); + return this; + } + + /** + * Override the timeout in seconds. Defaults to 60 seconds. + */ + public Builder timeout(Optional timeout) { + this.timeout = timeout; + return this; + } + + /** + * Override the maximum number of retries. Defaults to 2 retries. + */ + public Builder maxRetries(int maxRetries) { + this.maxRetries = maxRetries; + return this; + } + + public Builder httpClient(OkHttpClient httpClient) { + this.httpClient = httpClient; + return this; + } + + public ClientOptions build() { + OkHttpClient.Builder httpClientBuilder = + this.httpClient != null ? this.httpClient.newBuilder() : new OkHttpClient.Builder(); + + if (this.httpClient != null) { + timeout.ifPresent(timeout -> httpClientBuilder + .callTimeout(timeout, TimeUnit.SECONDS) + .connectTimeout(0, TimeUnit.SECONDS) + .writeTimeout(0, TimeUnit.SECONDS) + .readTimeout(0, TimeUnit.SECONDS)); + } else { + httpClientBuilder + .callTimeout(this.timeout.orElse(60), TimeUnit.SECONDS) + .connectTimeout(0, TimeUnit.SECONDS) + .writeTimeout(0, TimeUnit.SECONDS) + .readTimeout(0, TimeUnit.SECONDS) + .addInterceptor(new RetryInterceptor(this.maxRetries)); + } + + this.httpClient = httpClientBuilder.build(); + this.timeout = Optional.of(httpClient.callTimeoutMillis() / 1000); + + return new ClientOptions(environment, headers, headerSuppliers, httpClient, this.timeout.get()); + } + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/DateTimeDeserializer.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/DateTimeDeserializer.java new file mode 100644 index 00000000..dfa25a82 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/DateTimeDeserializer.java @@ -0,0 +1,56 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.module.SimpleModule; + +import java.io.IOException; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAccessor; +import java.time.temporal.TemporalQueries; + +/** + * Custom deserializer that handles converting ISO8601 dates into {@link OffsetDateTime} objects. + */ +class DateTimeDeserializer extends JsonDeserializer { + private static final SimpleModule MODULE; + + static { + MODULE = new SimpleModule().addDeserializer(OffsetDateTime.class, new DateTimeDeserializer()); + } + + /** + * Gets a module wrapping this deserializer as an adapter for the Jackson ObjectMapper. + * + * @return A {@link SimpleModule} to be plugged onto Jackson ObjectMapper. + */ + public static SimpleModule getModule() { + return MODULE; + } + + @Override + public OffsetDateTime deserialize(JsonParser parser, DeserializationContext context) throws IOException { + JsonToken token = parser.currentToken(); + if (token == JsonToken.VALUE_NUMBER_INT) { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(parser.getValueAsLong()), ZoneOffset.UTC); + } else { + TemporalAccessor temporal = DateTimeFormatter.ISO_DATE_TIME.parseBest( + parser.getValueAsString(), OffsetDateTime::from, LocalDateTime::from); + + if (temporal.query(TemporalQueries.offset()) == null) { + return LocalDateTime.from(temporal).atOffset(ZoneOffset.UTC); + } else { + return OffsetDateTime.from(temporal); + } + } + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/Environment.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/Environment.java new file mode 100644 index 00000000..098667c0 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/Environment.java @@ -0,0 +1,24 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +public final class Environment { + public static final Environment PRODUCTION = new Environment("https://manage.skyflowapis.com"); + + public static final Environment SANDBOX = new Environment("https://manage.skyflowapis-preview.com"); + + private final String url; + + private Environment(String url) { + this.url = url; + } + + public String getUrl() { + return this.url; + } + + public static Environment custom(String url) { + return new Environment(url); + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/FileStream.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/FileStream.java new file mode 100644 index 00000000..0e878ed3 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/FileStream.java @@ -0,0 +1,61 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import okhttp3.MediaType; +import okhttp3.RequestBody; +import org.jetbrains.annotations.Nullable; + +import java.io.InputStream; +import java.util.Objects; + +/** + * Represents a file stream with associated metadata for file uploads. + */ +public class FileStream { + private final InputStream inputStream; + private final String fileName; + private final MediaType contentType; + + /** + * Constructs a FileStream with the given input stream and optional metadata. + * + * @param inputStream The input stream of the file content. Must not be null. + * @param fileName The name of the file, or null if unknown. + * @param contentType The MIME type of the file content, or null if unknown. + * @throws NullPointerException if inputStream is null + */ + public FileStream(InputStream inputStream, @Nullable String fileName, @Nullable MediaType contentType) { + this.inputStream = Objects.requireNonNull(inputStream, "Input stream cannot be null"); + this.fileName = fileName; + this.contentType = contentType; + } + + public FileStream(InputStream inputStream) { + this(inputStream, null, null); + } + + public InputStream getInputStream() { + return inputStream; + } + + @Nullable + public String getFileName() { + return fileName; + } + + @Nullable + public MediaType getContentType() { + return contentType; + } + + /** + * Creates a RequestBody suitable for use with OkHttp client. + * + * @return A RequestBody instance representing this file stream. + */ + public RequestBody toRequestBody() { + return new InputStreamRequestBody(contentType, inputStream); + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/InputStreamRequestBody.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/InputStreamRequestBody.java new file mode 100644 index 00000000..a94faec9 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/InputStreamRequestBody.java @@ -0,0 +1,80 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okhttp3.internal.Util; +import okio.BufferedSink; +import okio.Okio; +import okio.Source; +import org.jetbrains.annotations.Nullable; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Objects; + +/** + * A custom implementation of OkHttp's RequestBody that wraps an InputStream. + * This class allows streaming of data from an InputStream directly to an HTTP request body, + * which is useful for file uploads or sending large amounts of data without loading it all into memory. + */ +public class InputStreamRequestBody extends RequestBody { + private final InputStream inputStream; + private final MediaType contentType; + + /** + * Constructs an InputStreamRequestBody with the specified content type and input stream. + * + * @param contentType the MediaType of the content, or null if not known + * @param inputStream the InputStream containing the data to be sent + * @throws NullPointerException if inputStream is null + */ + public InputStreamRequestBody(@Nullable MediaType contentType, InputStream inputStream) { + this.contentType = contentType; + this.inputStream = Objects.requireNonNull(inputStream, "inputStream == null"); + } + + /** + * Returns the content type of this request body. + * + * @return the MediaType of the content, or null if not specified + */ + @Nullable + @Override + public MediaType contentType() { + return contentType; + } + + /** + * Returns the content length of this request body, if known. + * This method attempts to determine the length using the InputStream's available() method, + * which may not always accurately reflect the total length of the stream. + * + * @return the content length, or -1 if the length is unknown + * @throws IOException if an I/O error occurs + */ + @Override + public long contentLength() throws IOException { + return inputStream.available() == 0 ? -1 : inputStream.available(); + } + + /** + * Writes the content of the InputStream to the given BufferedSink. + * This method is responsible for transferring the data from the InputStream to the network request. + * + * @param sink the BufferedSink to write the content to + * @throws IOException if an I/O error occurs during writing + */ + @Override + public void writeTo(BufferedSink sink) throws IOException { + Source source = null; + try { + source = Okio.source(inputStream); + sink.writeAll(source); + } finally { + Util.closeQuietly(Objects.requireNonNull(source)); + } + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/MediaTypes.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/MediaTypes.java new file mode 100644 index 00000000..d4374647 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/MediaTypes.java @@ -0,0 +1,13 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import okhttp3.MediaType; + +public final class MediaTypes { + + public static final MediaType APPLICATION_JSON = MediaType.parse("application/json"); + + private MediaTypes() {} +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/Nullable.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/Nullable.java new file mode 100644 index 00000000..efabe806 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/Nullable.java @@ -0,0 +1,140 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import java.util.Optional; +import java.util.function.Function; + +public final class Nullable { + + private final Either, Null> value; + + private Nullable() { + this.value = Either.left(Optional.empty()); + } + + private Nullable(T value) { + if (value == null) { + this.value = Either.right(Null.INSTANCE); + } else { + this.value = Either.left(Optional.of(value)); + } + } + + public static Nullable ofNull() { + return new Nullable<>(null); + } + + public static Nullable of(T value) { + return new Nullable<>(value); + } + + public static Nullable empty() { + return new Nullable<>(); + } + + public static Nullable ofOptional(Optional value) { + if (value.isPresent()) { + return of(value.get()); + } else { + return empty(); + } + } + + public boolean isNull() { + return this.value.isRight(); + } + + public boolean isEmpty() { + return this.value.isLeft() && !this.value.getLeft().isPresent(); + } + + public T get() { + if (this.isNull()) { + return null; + } + + return this.value.getLeft().get(); + } + + public Nullable map(Function mapper) { + if (this.isNull()) { + return Nullable.ofNull(); + } + + return Nullable.ofOptional(this.value.getLeft().map(mapper)); + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof Nullable)) { + return false; + } + + if (((Nullable) other).isNull() && this.isNull()) { + return true; + } + + return this.value.getLeft().equals(((Nullable) other).value.getLeft()); + } + + private static final class Either { + private L left = null; + private R right = null; + + private Either(L left, R right) { + if (left != null && right != null) { + throw new IllegalArgumentException("Left and right argument cannot both be non-null."); + } + + if (left == null && right == null) { + throw new IllegalArgumentException("Left and right argument cannot both be null."); + } + + if (left != null) { + this.left = left; + } + + if (right != null) { + this.right = right; + } + } + + public static Either left(L left) { + return new Either<>(left, null); + } + + public static Either right(R right) { + return new Either<>(null, right); + } + + public boolean isLeft() { + return this.left != null; + } + + public boolean isRight() { + return this.right != null; + } + + public L getLeft() { + if (!this.isLeft()) { + throw new IllegalArgumentException("Cannot get left from right Either."); + } + return this.left; + } + + public R getRight() { + if (!this.isRight()) { + throw new IllegalArgumentException("Cannot get right from left Either."); + } + return this.right; + } + } + + private static final class Null { + private static final Null INSTANCE = new Null(); + + private Null() {} + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/NullableNonemptyFilter.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/NullableNonemptyFilter.java new file mode 100644 index 00000000..dd32d66c --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/NullableNonemptyFilter.java @@ -0,0 +1,19 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import java.util.Optional; + +public final class NullableNonemptyFilter { + @Override + public boolean equals(Object o) { + boolean isOptionalEmpty = isOptionalEmpty(o); + + return isOptionalEmpty; + } + + private boolean isOptionalEmpty(Object o) { + return o instanceof Optional && !((Optional) o).isPresent(); + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/ObjectMappers.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/ObjectMappers.java new file mode 100644 index 00000000..4997b3ca --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/ObjectMappers.java @@ -0,0 +1,37 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.json.JsonMapper; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + +import java.io.IOException; + +public final class ObjectMappers { + public static final ObjectMapper JSON_MAPPER = JsonMapper.builder() + .addModule(new Jdk8Module()) + .addModule(new JavaTimeModule()) + .addModule(DateTimeDeserializer.getModule()) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + .build(); + + private ObjectMappers() {} + + public static String stringify(Object o) { + try { + return JSON_MAPPER + .setSerializationInclusion(JsonInclude.Include.ALWAYS) + .writerWithDefaultPrettyPrinter() + .writeValueAsString(o); + } catch (IOException e) { + return o.getClass().getName() + "@" + Integer.toHexString(o.hashCode()); + } + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/QueryStringMapper.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/QueryStringMapper.java new file mode 100644 index 00000000..8b1f9f7e --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/QueryStringMapper.java @@ -0,0 +1,139 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import okhttp3.HttpUrl; +import okhttp3.MultipartBody; + +import java.util.*; + +public class QueryStringMapper { + + private static final ObjectMapper MAPPER = ObjectMappers.JSON_MAPPER; + + public static void addQueryParameter(HttpUrl.Builder httpUrl, String key, Object value, boolean arraysAsRepeats) { + JsonNode valueNode = MAPPER.valueToTree(value); + + List> flat; + if (valueNode.isObject()) { + flat = flattenObject((ObjectNode) valueNode, arraysAsRepeats); + } else if (valueNode.isArray()) { + flat = flattenArray((ArrayNode) valueNode, "", arraysAsRepeats); + } else { + if (valueNode.isTextual()) { + httpUrl.addQueryParameter(key, valueNode.textValue()); + } else { + httpUrl.addQueryParameter(key, valueNode.toString()); + } + return; + } + + for (Map.Entry field : flat) { + if (field.getValue().isTextual()) { + httpUrl.addQueryParameter(key + field.getKey(), field.getValue().textValue()); + } else { + httpUrl.addQueryParameter(key + field.getKey(), field.getValue().toString()); + } + } + } + + public static void addFormDataPart( + MultipartBody.Builder multipartBody, String key, Object value, boolean arraysAsRepeats) { + JsonNode valueNode = MAPPER.valueToTree(value); + + List> flat; + if (valueNode.isObject()) { + flat = flattenObject((ObjectNode) valueNode, arraysAsRepeats); + } else if (valueNode.isArray()) { + flat = flattenArray((ArrayNode) valueNode, "", arraysAsRepeats); + } else { + if (valueNode.isTextual()) { + multipartBody.addFormDataPart(key, valueNode.textValue()); + } else { + multipartBody.addFormDataPart(key, valueNode.toString()); + } + return; + } + + for (Map.Entry field : flat) { + if (field.getValue().isTextual()) { + multipartBody.addFormDataPart( + key + field.getKey(), field.getValue().textValue()); + } else { + multipartBody.addFormDataPart( + key + field.getKey(), field.getValue().toString()); + } + } + } + + public static List> flattenObject(ObjectNode object, boolean arraysAsRepeats) { + List> flat = new ArrayList<>(); + + Iterator> fields = object.fields(); + while (fields.hasNext()) { + Map.Entry field = fields.next(); + + String key = "[" + field.getKey() + "]"; + + if (field.getValue().isObject()) { + List> flatField = + flattenObject((ObjectNode) field.getValue(), arraysAsRepeats); + addAll(flat, flatField, key); + } else if (field.getValue().isArray()) { + List> flatField = + flattenArray((ArrayNode) field.getValue(), key, arraysAsRepeats); + addAll(flat, flatField, ""); + } else { + flat.add(new AbstractMap.SimpleEntry<>(key, field.getValue())); + } + } + + return flat; + } + + private static List> flattenArray( + ArrayNode array, String key, boolean arraysAsRepeats) { + List> flat = new ArrayList<>(); + + Iterator elements = array.elements(); + + int index = 0; + while (elements.hasNext()) { + JsonNode element = elements.next(); + + String indexKey = key + "[" + index + "]"; + + if (arraysAsRepeats) { + indexKey = key; + } + + if (element.isObject()) { + List> flatField = flattenObject((ObjectNode) element, arraysAsRepeats); + addAll(flat, flatField, indexKey); + } else if (element.isArray()) { + List> flatField = flattenArray((ArrayNode) element, "", arraysAsRepeats); + addAll(flat, flatField, indexKey); + } else { + flat.add(new AbstractMap.SimpleEntry<>(indexKey, element)); + } + + index++; + } + + return flat; + } + + private static void addAll( + List> target, List> source, String prefix) { + for (Map.Entry entry : source) { + Map.Entry entryToAdd = + new AbstractMap.SimpleEntry<>(prefix + entry.getKey(), entry.getValue()); + target.add(entryToAdd); + } + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/RequestOptions.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/RequestOptions.java new file mode 100644 index 00000000..b70c02df --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/RequestOptions.java @@ -0,0 +1,101 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; + +public final class RequestOptions { + private final String token; + + private final Optional timeout; + + private final TimeUnit timeoutTimeUnit; + + private final Map headers; + + private final Map> headerSuppliers; + + private RequestOptions( + String token, + Optional timeout, + TimeUnit timeoutTimeUnit, + Map headers, + Map> headerSuppliers) { + this.token = token; + this.timeout = timeout; + this.timeoutTimeUnit = timeoutTimeUnit; + this.headers = headers; + this.headerSuppliers = headerSuppliers; + } + + public Optional getTimeout() { + return timeout; + } + + public TimeUnit getTimeoutTimeUnit() { + return timeoutTimeUnit; + } + + public Map getHeaders() { + Map headers = new HashMap<>(); + if (this.token != null) { + headers.put("Authorization", "Bearer " + this.token); + } + headers.putAll(this.headers); + this.headerSuppliers.forEach((key, supplier) -> { + headers.put(key, supplier.get()); + }); + return headers; + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private String token = null; + + private Optional timeout = Optional.empty(); + + private TimeUnit timeoutTimeUnit = TimeUnit.SECONDS; + + private final Map headers = new HashMap<>(); + + private final Map> headerSuppliers = new HashMap<>(); + + public Builder token(String token) { + this.token = token; + return this; + } + + public Builder timeout(Integer timeout) { + this.timeout = Optional.of(timeout); + return this; + } + + public Builder timeout(Integer timeout, TimeUnit timeoutTimeUnit) { + this.timeout = Optional.of(timeout); + this.timeoutTimeUnit = timeoutTimeUnit; + return this; + } + + public Builder addHeader(String key, String value) { + this.headers.put(key, value); + return this; + } + + public Builder addHeader(String key, Supplier value) { + this.headerSuppliers.put(key, value); + return this; + } + + public RequestOptions build() { + return new RequestOptions(token, timeout, timeoutTimeUnit, headers, headerSuppliers); + } + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/ResponseBodyInputStream.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/ResponseBodyInputStream.java new file mode 100644 index 00000000..1d0a9110 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/ResponseBodyInputStream.java @@ -0,0 +1,46 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import okhttp3.Response; + +import java.io.FilterInputStream; +import java.io.IOException; + +/** + * A custom InputStream that wraps the InputStream from the OkHttp Response and ensures that the + * OkHttp Response object is properly closed when the stream is closed. + * + * This class extends FilterInputStream and takes an OkHttp Response object as a parameter. + * It retrieves the InputStream from the Response and overrides the close method to close + * both the InputStream and the Response object, ensuring proper resource management and preventing + * premature closure of the underlying HTTP connection. + */ +public class ResponseBodyInputStream extends FilterInputStream { + private final Response response; + + /** + * Constructs a ResponseBodyInputStream that wraps the InputStream from the given OkHttp + * Response object. + * + * @param response the OkHttp Response object from which the InputStream is retrieved + * @throws IOException if an I/O error occurs while retrieving the InputStream + */ + public ResponseBodyInputStream(Response response) throws IOException { + super(response.body().byteStream()); + this.response = response; + } + + /** + * Closes the InputStream and the associated OkHttp Response object. This ensures that the + * underlying HTTP connection is properly closed after the stream is no longer needed. + * + * @throws IOException if an I/O error occurs + */ + @Override + public void close() throws IOException { + super.close(); + response.close(); // Ensure the response is closed when the stream is closed + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/ResponseBodyReader.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/ResponseBodyReader.java new file mode 100644 index 00000000..f4dfb17b --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/ResponseBodyReader.java @@ -0,0 +1,45 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import okhttp3.Response; + +import java.io.FilterReader; +import java.io.IOException; + +/** + * A custom Reader that wraps the Reader from the OkHttp Response and ensures that the + * OkHttp Response object is properly closed when the reader is closed. + * + * This class extends FilterReader and takes an OkHttp Response object as a parameter. + * It retrieves the Reader from the Response and overrides the close method to close + * both the Reader and the Response object, ensuring proper resource management and preventing + * premature closure of the underlying HTTP connection. + */ +public class ResponseBodyReader extends FilterReader { + private final Response response; + + /** + * Constructs a ResponseBodyReader that wraps the Reader from the given OkHttp Response object. + * + * @param response the OkHttp Response object from which the Reader is retrieved + * @throws IOException if an I/O error occurs while retrieving the Reader + */ + public ResponseBodyReader(Response response) throws IOException { + super(response.body().charStream()); + this.response = response; + } + + /** + * Closes the Reader and the associated OkHttp Response object. This ensures that the + * underlying HTTP connection is properly closed after the reader is no longer needed. + * + * @throws IOException if an I/O error occurs + */ + @Override + public void close() throws IOException { + super.close(); + response.close(); // Ensure the response is closed when the reader is closed + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/RetryInterceptor.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/RetryInterceptor.java new file mode 100644 index 00000000..8344b974 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/RetryInterceptor.java @@ -0,0 +1,79 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import okhttp3.Interceptor; +import okhttp3.Response; + +import java.io.IOException; +import java.time.Duration; +import java.util.Optional; +import java.util.Random; + +public class RetryInterceptor implements Interceptor { + + private static final Duration ONE_SECOND = Duration.ofSeconds(1); + private final ExponentialBackoff backoff; + private final Random random = new Random(); + + public RetryInterceptor(int maxRetries) { + this.backoff = new ExponentialBackoff(maxRetries); + } + + @Override + public Response intercept(Chain chain) throws IOException { + Response response = chain.proceed(chain.request()); + + if (shouldRetry(response.code())) { + return retryChain(response, chain); + } + + return response; + } + + private Response retryChain(Response response, Chain chain) throws IOException { + Optional nextBackoff = this.backoff.nextBackoff(); + while (nextBackoff.isPresent()) { + try { + Thread.sleep(nextBackoff.get().toMillis()); + } catch (InterruptedException e) { + throw new IOException("Interrupted while trying request", e); + } + response.close(); + response = chain.proceed(chain.request()); + if (shouldRetry(response.code())) { + nextBackoff = this.backoff.nextBackoff(); + } else { + return response; + } + } + + return response; + } + + private static boolean shouldRetry(int statusCode) { + return statusCode == 408 || statusCode == 429 || statusCode >= 500; + } + + private final class ExponentialBackoff { + + private final int maxNumRetries; + + private int retryNumber = 0; + + ExponentialBackoff(int maxNumRetries) { + this.maxNumRetries = maxNumRetries; + } + + public Optional nextBackoff() { + retryNumber += 1; + if (retryNumber > maxNumRetries) { + return Optional.empty(); + } + + int upperBound = (int) Math.pow(2, retryNumber); + return Optional.of(ONE_SECOND.multipliedBy(random.nextInt(upperBound))); + } + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/Stream.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/Stream.java new file mode 100644 index 00000000..4a984faa --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/Stream.java @@ -0,0 +1,97 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import java.io.Reader; +import java.util.Iterator; +import java.util.NoSuchElementException; +import java.util.Scanner; + +/** + * The {@code Stream} class implements {@link Iterable} to provide a simple mechanism for reading and parsing + * objects of a given type from data streamed via a {@link Reader} using a specified delimiter. + *

+ * {@code Stream} assumes that data is being pushed to the provided {@link Reader} asynchronously and utilizes a + * {@code Scanner} to block during iteration if the next object is not available. + * + * @param The type of objects in the stream. + */ +public final class Stream implements Iterable { + /** + * The {@link Class} of the objects in the stream. + */ + private final Class valueType; + /** + * The {@link Scanner} used for reading from the input stream and blocking when needed during iteration. + */ + private final Scanner scanner; + + /** + * Constructs a new {@code Stream} with the specified value type, reader, and delimiter. + * + * @param valueType The class of the objects in the stream. + * @param reader The reader that provides the streamed data. + * @param delimiter The delimiter used to separate elements in the stream. + */ + public Stream(Class valueType, Reader reader, String delimiter) { + this.scanner = new Scanner(reader).useDelimiter(delimiter); + this.valueType = valueType; + } + + /** + * Returns an iterator over the elements in this stream that blocks during iteration when the next object is + * not yet available. + * + * @return An iterator that can be used to traverse the elements in the stream. + */ + @Override + public Iterator iterator() { + return new Iterator() { + /** + * Returns {@code true} if there are more elements in the stream. + *

+ * Will block and wait for input if the stream has not ended and the next object is not yet available. + * + * @return {@code true} if there are more elements, {@code false} otherwise. + */ + @Override + public boolean hasNext() { + return scanner.hasNext(); + } + + /** + * Returns the next element in the stream. + *

+ * Will block and wait for input if the stream has not ended and the next object is not yet available. + * + * @return The next element in the stream. + * @throws NoSuchElementException If there are no more elements in the stream. + */ + @Override + public T next() { + if (!scanner.hasNext()) { + throw new NoSuchElementException(); + } else { + try { + T parsedResponse = ObjectMappers.JSON_MAPPER.readValue( + scanner.next().trim(), valueType); + return parsedResponse; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + /** + * Removing elements from {@code Stream} is not supported. + * + * @throws UnsupportedOperationException Always, as removal is not supported. + */ + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/core/Suppliers.java b/common/src/main/java/com/skyflow/generated/auth/rest/core/Suppliers.java new file mode 100644 index 00000000..d3ab5e53 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/core/Suppliers.java @@ -0,0 +1,23 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.core; + +import java.util.Objects; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; + +public final class Suppliers { + private Suppliers() {} + + public static Supplier memoize(Supplier delegate) { + AtomicReference value = new AtomicReference<>(); + return () -> { + T val = value.get(); + if (val == null) { + val = value.updateAndGet(cur -> cur == null ? Objects.requireNonNull(delegate.get()) : cur); + } + return val; + }; + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/errors/BadRequestError.java b/common/src/main/java/com/skyflow/generated/auth/rest/errors/BadRequestError.java new file mode 100644 index 00000000..4517200d --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/errors/BadRequestError.java @@ -0,0 +1,34 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.errors; + +import com.skyflow.generated.auth.rest.core.ApiClientApiException; +import okhttp3.Response; + +import java.util.Map; + +public final class BadRequestError extends ApiClientApiException { + /** + * The body of the response that triggered the exception. + */ + private final Map body; + + public BadRequestError(Map body) { + super("BadRequestError", 400, body); + this.body = body; + } + + public BadRequestError(Map body, Response rawResponse) { + super("BadRequestError", 400, body, rawResponse); + this.body = body; + } + + /** + * @return the body + */ + @Override + public Map body() { + return this.body; + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/errors/HttpStatus.java b/common/src/main/java/com/skyflow/generated/auth/rest/errors/HttpStatus.java new file mode 100644 index 00000000..2e1c45d2 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/errors/HttpStatus.java @@ -0,0 +1,15 @@ +package com.skyflow.generated.auth.rest.errors; + +public enum HttpStatus { + BAD_REQUEST("Bad Request"); + + private final String httpStatus; + + HttpStatus(String httpStatus) { + this.httpStatus = httpStatus; + } + + public String getHttpStatus() { + return httpStatus; + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/errors/NotFoundError.java b/common/src/main/java/com/skyflow/generated/auth/rest/errors/NotFoundError.java new file mode 100644 index 00000000..60a1771c --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/errors/NotFoundError.java @@ -0,0 +1,34 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.errors; + +import com.skyflow.generated.auth.rest.core.ApiClientApiException; +import okhttp3.Response; + +import java.util.Map; + +public final class NotFoundError extends ApiClientApiException { + /** + * The body of the response that triggered the exception. + */ + private final Map body; + + public NotFoundError(Map body) { + super("NotFoundError", 404, body); + this.body = body; + } + + public NotFoundError(Map body, Response rawResponse) { + super("NotFoundError", 404, body, rawResponse); + this.body = body; + } + + /** + * @return the body + */ + @Override + public Map body() { + return this.body; + } +} diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/errors/UnauthorizedError.java b/common/src/main/java/com/skyflow/generated/auth/rest/errors/UnauthorizedError.java new file mode 100644 index 00000000..42f1c624 --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/errors/UnauthorizedError.java @@ -0,0 +1,34 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.errors; + +import com.skyflow.generated.auth.rest.core.ApiClientApiException; +import okhttp3.Response; + +import java.util.Map; + +public final class UnauthorizedError extends ApiClientApiException { + /** + * The body of the response that triggered the exception. + */ + private final Map body; + + public UnauthorizedError(Map body) { + super("UnauthorizedError", 401, body); + this.body = body; + } + + public UnauthorizedError(Map body, Response rawResponse) { + super("UnauthorizedError", 401, body, rawResponse); + this.body = body; + } + + /** + * @return the body + */ + @Override + public Map body() { + return this.body; + } +} diff --git a/src/main/java/com/skyflow/generated/rest/resources/authentication/AsyncAuthenticationClient.java b/common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/AsyncAuthenticationClient.java similarity index 84% rename from src/main/java/com/skyflow/generated/rest/resources/authentication/AsyncAuthenticationClient.java rename to common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/AsyncAuthenticationClient.java index 43ffab73..c742b239 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/authentication/AsyncAuthenticationClient.java +++ b/common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/AsyncAuthenticationClient.java @@ -1,12 +1,13 @@ /** * This file was auto-generated by Fern from our API Definition. */ -package com.skyflow.generated.rest.resources.authentication; +package com.skyflow.generated.auth.rest.resources.authentication; + +import com.skyflow.generated.auth.rest.core.ClientOptions; +import com.skyflow.generated.auth.rest.core.RequestOptions; +import com.skyflow.generated.auth.rest.resources.authentication.requests.V1GetAuthTokenRequest; +import com.skyflow.generated.auth.rest.types.V1GetAuthTokenResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.authentication.requests.V1GetAuthTokenRequest; -import com.skyflow.generated.rest.types.V1GetAuthTokenResponse; import java.util.concurrent.CompletableFuture; public class AsyncAuthenticationClient { diff --git a/src/main/java/com/skyflow/generated/rest/resources/authentication/AsyncRawAuthenticationClient.java b/common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/AsyncRawAuthenticationClient.java similarity index 82% rename from src/main/java/com/skyflow/generated/rest/resources/authentication/AsyncRawAuthenticationClient.java rename to common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/AsyncRawAuthenticationClient.java index eca4ab90..56a47dc0 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/authentication/AsyncRawAuthenticationClient.java +++ b/common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/AsyncRawAuthenticationClient.java @@ -1,33 +1,22 @@ /** * This file was auto-generated by Fern from our API Definition. */ -package com.skyflow.generated.rest.resources.authentication; +package com.skyflow.generated.auth.rest.resources.authentication; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.errors.BadRequestError; -import com.skyflow.generated.rest.errors.NotFoundError; -import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.authentication.requests.V1GetAuthTokenRequest; -import com.skyflow.generated.rest.types.V1GetAuthTokenResponse; +import com.fasterxml.jackson.core.type.TypeReference; +import com.skyflow.generated.auth.rest.core.*; +import com.skyflow.generated.auth.rest.errors.BadRequestError; +import com.skyflow.generated.auth.rest.errors.NotFoundError; +import com.skyflow.generated.auth.rest.errors.UnauthorizedError; +import com.skyflow.generated.auth.rest.resources.authentication.requests.V1GetAuthTokenRequest; +import com.skyflow.generated.auth.rest.types.V1GetAuthTokenResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; +import java.util.Map; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawAuthenticationClient { protected final ClientOptions clientOptions; @@ -88,17 +77,20 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue( + responseBodyString, new TypeReference>() {}), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue( + responseBodyString, new TypeReference>() {}), response)); return; case 404: future.completeExceptionally(new NotFoundError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue( + responseBodyString, new TypeReference>() {}), response)); return; } diff --git a/src/main/java/com/skyflow/generated/rest/resources/authentication/AuthenticationClient.java b/common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/AuthenticationClient.java similarity index 82% rename from src/main/java/com/skyflow/generated/rest/resources/authentication/AuthenticationClient.java rename to common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/AuthenticationClient.java index 662bfb3d..a0ba860a 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/authentication/AuthenticationClient.java +++ b/common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/AuthenticationClient.java @@ -1,12 +1,12 @@ /** * This file was auto-generated by Fern from our API Definition. */ -package com.skyflow.generated.rest.resources.authentication; +package com.skyflow.generated.auth.rest.resources.authentication; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.authentication.requests.V1GetAuthTokenRequest; -import com.skyflow.generated.rest.types.V1GetAuthTokenResponse; +import com.skyflow.generated.auth.rest.core.ClientOptions; +import com.skyflow.generated.auth.rest.core.RequestOptions; +import com.skyflow.generated.auth.rest.resources.authentication.requests.V1GetAuthTokenRequest; +import com.skyflow.generated.auth.rest.types.V1GetAuthTokenResponse; public class AuthenticationClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/authentication/RawAuthenticationClient.java b/common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/RawAuthenticationClient.java similarity index 78% rename from src/main/java/com/skyflow/generated/rest/resources/authentication/RawAuthenticationClient.java rename to common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/RawAuthenticationClient.java index 3d242eff..6c52c048 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/authentication/RawAuthenticationClient.java +++ b/common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/RawAuthenticationClient.java @@ -1,29 +1,20 @@ /** * This file was auto-generated by Fern from our API Definition. */ -package com.skyflow.generated.rest.resources.authentication; +package com.skyflow.generated.auth.rest.resources.authentication; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.errors.BadRequestError; -import com.skyflow.generated.rest.errors.NotFoundError; -import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.authentication.requests.V1GetAuthTokenRequest; -import com.skyflow.generated.rest.types.V1GetAuthTokenResponse; +import com.fasterxml.jackson.core.type.TypeReference; +import com.skyflow.generated.auth.rest.core.*; +import com.skyflow.generated.auth.rest.errors.BadRequestError; +import com.skyflow.generated.auth.rest.errors.NotFoundError; +import com.skyflow.generated.auth.rest.errors.UnauthorizedError; +import com.skyflow.generated.auth.rest.resources.authentication.requests.V1GetAuthTokenRequest; +import com.skyflow.generated.auth.rest.types.V1GetAuthTokenResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; +import java.util.Map; public class RawAuthenticationClient { protected final ClientOptions clientOptions; @@ -79,13 +70,19 @@ public ApiClientHttpResponse authenticationServiceGetAut switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue( + responseBodyString, new TypeReference>() {}), + response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue( + responseBodyString, new TypeReference>() {}), + response); case 404: throw new NotFoundError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue( + responseBodyString, new TypeReference>() {}), + response); } } catch (JsonProcessingException ignored) { // unable to map error response, throwing generic error diff --git a/src/main/java/com/skyflow/generated/rest/resources/authentication/requests/V1GetAuthTokenRequest.java b/common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/requests/V1GetAuthTokenRequest.java similarity index 96% rename from src/main/java/com/skyflow/generated/rest/resources/authentication/requests/V1GetAuthTokenRequest.java rename to common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/requests/V1GetAuthTokenRequest.java index 182952bc..382c5431 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/authentication/requests/V1GetAuthTokenRequest.java +++ b/common/src/main/java/com/skyflow/generated/auth/rest/resources/authentication/requests/V1GetAuthTokenRequest.java @@ -1,22 +1,17 @@ /** * This file was auto-generated by Fern from our API Definition. */ -package com.skyflow.generated.rest.resources.authentication.requests; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +package com.skyflow.generated.auth.rest.resources.authentication.requests; + +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.auth.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1GetAuthTokenRequest.Builder.class) diff --git a/common/src/main/java/com/skyflow/generated/auth/rest/types/V1GetAuthTokenResponse.java b/common/src/main/java/com/skyflow/generated/auth/rest/types/V1GetAuthTokenResponse.java new file mode 100644 index 00000000..3db2f22b --- /dev/null +++ b/common/src/main/java/com/skyflow/generated/auth/rest/types/V1GetAuthTokenResponse.java @@ -0,0 +1,125 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.auth.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.auth.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1GetAuthTokenResponse.Builder.class) +public final class V1GetAuthTokenResponse { + private final Optional accessToken; + + private final Optional tokenType; + + private final Map additionalProperties; + + private V1GetAuthTokenResponse( + Optional accessToken, Optional tokenType, Map additionalProperties) { + this.accessToken = accessToken; + this.tokenType = tokenType; + this.additionalProperties = additionalProperties; + } + + /** + * @return AccessToken. + */ + @JsonProperty("accessToken") + public Optional getAccessToken() { + return accessToken; + } + + /** + * @return TokenType : Bearer. + */ + @JsonProperty("tokenType") + public Optional getTokenType() { + return tokenType; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1GetAuthTokenResponse && equalTo((V1GetAuthTokenResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1GetAuthTokenResponse other) { + return accessToken.equals(other.accessToken) && tokenType.equals(other.tokenType); + } + + @Override + public int hashCode() { + return Objects.hash(this.accessToken, this.tokenType); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional accessToken = Optional.empty(); + + private Optional tokenType = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1GetAuthTokenResponse other) { + accessToken(other.getAccessToken()); + tokenType(other.getTokenType()); + return this; + } + + /** + *

AccessToken.

+ */ + @JsonSetter(value = "accessToken", nulls = Nulls.SKIP) + public Builder accessToken(Optional accessToken) { + this.accessToken = accessToken; + return this; + } + + public Builder accessToken(String accessToken) { + this.accessToken = Optional.ofNullable(accessToken); + return this; + } + + /** + *

TokenType : Bearer.

+ */ + @JsonSetter(value = "tokenType", nulls = Nulls.SKIP) + public Builder tokenType(Optional tokenType) { + this.tokenType = tokenType; + return this; + } + + public Builder tokenType(String tokenType) { + this.tokenType = Optional.ofNullable(tokenType); + return this; + } + + public V1GetAuthTokenResponse build() { + return new V1GetAuthTokenResponse(accessToken, tokenType, additionalProperties); + } + } +} diff --git a/common/src/main/java/com/skyflow/logs/ErrorLogs.java b/common/src/main/java/com/skyflow/logs/ErrorLogs.java new file mode 100644 index 00000000..0028a5c6 --- /dev/null +++ b/common/src/main/java/com/skyflow/logs/ErrorLogs.java @@ -0,0 +1,185 @@ +package com.skyflow.logs; + +public enum ErrorLogs { + // Client initialization + VAULT_CONFIG_EXISTS("Vault config with vault ID %s1 already exists."), + VAULT_CONFIG_DOES_NOT_EXIST("Vault config with vault ID %s1 doesn't exist."), + VAULT_ID_IS_REQUIRED("Invalid vault config. Vault ID is required."), + EMPTY_VAULT_ID("Invalid vault config. Vault ID can not be empty."), + CLUSTER_ID_IS_REQUIRED("Invalid vault config. Cluster ID is required."), + EMPTY_CLUSTER_ID("Invalid vault config. Cluster ID can not be empty."), + EITHER_VAULT_URL_OR_CLUSTER_ID_REQUIRED("Invalid vault config. At least one of \"clusterId\" or \"vaultURL\" must be provided."), + CONNECTION_CONFIG_EXISTS("Connection config with connection ID %s1 already exists."), + CONNECTION_CONFIG_DOES_NOT_EXIST("Connection config with connection ID %s1 doesn't exist."), + CONNECTION_ID_IS_REQUIRED("Invalid connection config. Connection ID is required."), + EMPTY_CONNECTION_ID("Invalid connection config. Connection ID can not be empty."), + CONNECTION_URL_IS_REQUIRED("Invalid connection config. Connection URL is required."), + EMPTY_CONNECTION_URL("Invalid connection config. Connection URL can not be empty."), + INVALID_CONNECTION_URL("Invalid connection config. Connection URL is not a valid URL."), + MULTIPLE_TOKEN_GENERATION_MEANS_PASSED("Invalid credentials. Only one of 'path', 'credentialsString', 'token' or 'apiKey' is allowed."), + NO_TOKEN_GENERATION_MEANS_PASSED("Invalid credentials. Any one of 'path', 'credentialsString', 'token' or 'apiKey' is required."), + EMPTY_CREDENTIALS_PATH("Invalid credentials. Credentials path can not be empty."), + EMPTY_CREDENTIALS_STRING("Invalid credentials. Credentials string can not be empty."), + EMPTY_TOKEN_VALUE("Invalid credentials. Token can not be empty."), + EMPTY_API_KEY_VALUE("Invalid credentials. Api key can not be empty."), + INVALID_API_KEY("Invalid credentials. Api key is invalid."), + EMPTY_ROLES("Invalid credentials. Roles can not be empty."), + EMPTY_OR_NULL_ROLE_IN_ROLES("Invalid credentials. Role can not be null or empty in roles at index %s1."), + EMPTY_OR_NULL_CONTEXT("Invalid credentials. Context can not be empty."), + INVALID_CONTEXT_TYPE("Invalid credentials. Context must be a String or Map."), + INVALID_CONTEXT_MAP_KEY("Invalid credentials. Context map key '%s1' contains invalid characters."), + EMPTY_VAULT_URL("Invalid vault config. Vault URL can not be empty."), + INVALID_VAULT_URL_FORMAT("Invalid vault config. Vault URL format is incorrect"), + + // Bearer token generation + INVALID_BEARER_TOKEN("Bearer token is invalid or expired."), + INVALID_CREDENTIALS_FILE("Credentials file is either null or an invalid file."), + INVALID_CREDENTIALS_STRING("Credentials string is either null or empty."), + INVALID_CREDENTIALS_FILE_FORMAT("Credentials file is not in a valid JSON format."), + CREDENTIALS_FILE_NOT_FOUND("Credentials file not found at specified path."), + INVALID_CREDENTIALS_STRING_FORMAT("Credentials string is not in a valid JSON string format."), + PRIVATE_KEY_IS_REQUIRED("Private key is required."), + CLIENT_ID_IS_REQUIRED("Client ID is required."), + KEY_ID_IS_REQUIRED("Key ID is required."), + TOKEN_URI_IS_REQUIRED("Token URI is required."), + INVALID_TOKEN_URI("Invalid value for token URI in credentials."), + JWT_INVALID_FORMAT("Private key is not in a valid format."), + INVALID_ALGORITHM("Algorithm for parsing private key is invalid or does not exist."), + INVALID_KEY_SPEC("Unable to parse RSA private key."), + BEARER_TOKEN_REJECTED("Bearer token request resulted in failure."), + SIGNED_DATA_TOKENS_REJECTED("Signed data tokens request resulted in failure."), + + // Vault api interfaces + TABLE_IS_REQUIRED("Invalid %s1 request. Table is required."), + EMPTY_TABLE_NAME("Invalid %s1 request. Table name can not be empty."), + VALUES_IS_REQUIRED("Invalid %s1 request. Values are required."), + EMPTY_VALUES("Invalid %s1 request. Values can not be empty."), + RECORDS_IS_REQUIRED("Invalid %s1 request. Records are required."), + EMPTY_RECORDS("Invalid %s1 request. Records can not be empty."), + INVALID_RECORD("Invalid %s1 request. Invalid record. Specify a valid record."), + RECORD_SIZE_EXCEED("Maximum number of records exceeded. The limit is 10000."), + TOKENS_SIZE_EXCEED("Maximum number of tokens exceeded. The limit is 10000."), + EMPTY_OR_NULL_VALUE_IN_VALUES("Invalid %s1 request. Value can not be null or empty in values for key \"%s2\"."), + EMPTY_OR_NULL_KEY_IN_VALUES("Invalid %s1 request. Key can not be null or empty in values"), + EMPTY_UPSERT("Invalid %s1 request. Upsert can not be empty."), + EMPTY_UPSERT_VALUES("Invalid %s1 request. Upsert values can not be empty."), + HOMOGENOUS_NOT_SUPPORTED_WITH_UPSERT("Invalid %s1 request. Homogenous is not supported when upsert is passed."), + TOKENS_NOT_ALLOWED_WITH_TOKEN_MODE_DISABLE("Invalid %s1 request. Tokens are not allowed when tokenMode is DISABLE."), + TOKENS_REQUIRED_WITH_TOKEN_MODE("Invalid %s1 request. Tokens are required when tokenMode is %s2."), + EMPTY_TOKENS("Invalid %s1 request. Tokens can not be empty."), + EMPTY_OR_NULL_VALUE_IN_TOKENS("Invalid %s1 request. Value can not be null or empty in tokens for key \"%s2\"."), + EMPTY_OR_NULL_KEY_IN_TOKENS("Invalid %s1 request. Key can not be null or empty in tokens."), + INSUFFICIENT_TOKENS_PASSED_FOR_TOKEN_MODE_ENABLE_STRICT("Invalid %s1 request. For tokenMode as ENABLE_STRICT, tokens should be passed for all fields."), + MISMATCH_OF_FIELDS_AND_TOKENS("Invalid %s1 request. Keys for values and tokens are not matching."), + INSERT_RECORDS_REJECTED("Insert request resulted in failure."), + DETOKENIZE_DATA_REQUIRED("Invalid %s1 request. Detokenize data is required."), + EMPTY_DETOKENIZE_DATA("Invalid %s1 request. Detokenize data can not be empty."), + EMPTY_OR_NULL_TOKEN_IN_DETOKENIZE_DATA("Invalid %s1 request. Token can not be null or empty in detokenize data at index %s2."), + REDACTION_IS_REQUIRED("Invalid %s1 request. Redaction is required."), + DETOKENIZE_REQUEST_REJECTED("Detokenize request resulted in failure."), + DETOKENIZE_REQUEST_NULL("Invalid %s1 request. Detokenize request can not be null."), + + NULL_TOKEN_REDACTION_GROUP_OBJECT("Invalid %s1 request. Token Redaction group object can not be null or empty."), + + NULL_REDACTION_IN_TOKEN_GROUP("Invalid %s1 request. Redaction can not be null in token redaction group"), + + NULL_TOKEN_GROUP_NAME_IN_TOKEN_GROUP("Invalid %s1 request. Token group name can not be null in token redaction group"), + + EMPTY_OR_NULL_REDACTION_IN_TOKEN_GROUP("Invalid %s1 request. Redaction can not be null or empty in token redaction group"), + IDS_IS_REQUIRED("Invalid %s1 request. Ids are required."), + EMPTY_IDS("Invalid %s1 request. Ids can not be empty."), + EMPTY_OR_NULL_ID_IN_IDS("Invalid %s1 request. Id can not be null or empty in ids at index %s2."), + EMPTY_FIELDS("Invalid %s1 request. Fields can not be empty."), + EMPTY_OR_NULL_FIELD_IN_FIELDS("Invalid %s1 request. Field can not be null or empty in fields at index %s2."), + TOKENIZATION_NOT_SUPPORTED_WITH_REDACTION("Invalid %s1 request. Return tokens is not supported when redaction is applied."), + TOKENIZATION_SUPPORTED_ONLY_WITH_IDS("Invalid %s1 request. Return tokens is not supported when column name and values are passed."), + EMPTY_OFFSET("Invalid %s1 request. Offset can not be empty."), + EMPTY_LIMIT("Invalid %s1 request. Limit can not be empty."), + NEITHER_IDS_NOR_COLUMN_NAME_PASSED("Invalid %s1 request. Neither ids nor column name and values are passed."), + BOTH_IDS_AND_COLUMN_NAME_PASSED("Invalid %s1 request. Both ids and column name and values are passed."), + COLUMN_NAME_IS_REQUIRED("Invalid %s1 request. Column name is required when column values are passed."), + EMPTY_COLUMN_NAME("Invalid %s1 request. Column name can not be empty."), + COLUMN_VALUES_IS_REQUIRED_GET("Invalid %s1 request. Column values are required when column name is passed."), + EMPTY_COLUMN_VALUES("Invalid %s1 request. Column values can not be empty."), + EMPTY_OR_NULL_COLUMN_VALUE_IN_COLUMN_VALUES("Invalid %s1 request. Column value can not by null or empty in column values at index %s2."), + GET_REQUEST_REJECTED("Get request resulted in failure."), + DATA_IS_REQUIRED("Invalid %s1 request. Data is required."), + EMPTY_DATA("Invalid %s1 request. Data can not be empty."), + SKYFLOW_ID_IS_REQUIRED("Invalid %s1 request. Skyflow Id is required."), + INVALID_SKYFLOW_ID_TYPE("Invalid %s1 request. Skyflow Id should of type String."), + EMPTY_SKYFLOW_ID("Invalid %s1 request. Skyflow Id can not be empty."), + UPDATE_REQUEST_REJECTED("Update request resulted in failure."), + QUERY_IS_REQUIRED("Invalid %s1 request. Query is required."), + EMPTY_QUERY("Invalid %s1 request. Query can not be empty."), + QUERY_REQUEST_REJECTED("Query request resulted in failure."), + COLUMN_VALUES_IS_REQUIRED_TOKENIZE("Invalid %s1 request. ColumnValues are required."), + EMPTY_OR_NULL_COLUMN_GROUP_IN_COLUMN_VALUES("Invalid %s1 request. Column group can not be null or empty in column values at index %s2."), + TOKENIZE_REQUEST_REJECTED("Tokenize request resulted in failure."), + TOKENIZE_REQUEST_NULL("Invalid %s1 request. Tokenize request can not be null."), + EMPTY_TOKENIZE_DATA("Invalid %s1 request. Tokenize data can not be empty."), + TOKENIZE_RECORD_NULL("Invalid %s1 request. TokenizeRecord in list can not be null."), + EMPTY_VALUE_IN_TOKENIZE_RECORD("Invalid %s1 request. Value in TokenizeRecord can not be null or empty."), + EMPTY_TOKEN_GROUP_NAMES_IN_TOKENIZE_RECORD("Invalid %s1 request. TokenGroupNames in TokenizeRecord can not be null or empty."), + EMPTY_TOKEN_GROUP_NAME_IN_TOKENIZE_RECORD("Invalid %s1 request. Token group name in TokenizeRecord can not be null or empty at index %s2."), + TOKENIZE_DATA_SIZE_EXCEED("Maximum number of tokenize records exceeded. The limit is 10000."), + DELETE_REQUEST_REJECTED("Delete request resulted in failure."), + DELETE_TOKENS_REQUEST_NULL("Invalid %s1 request. DeleteTokens request can not be null."), + EMPTY_DELETE_TOKENS_DATA("Invalid %s1 request. Delete tokens data can not be empty."), + EMPTY_OR_NULL_TOKEN_IN_DELETE_TOKENS_DATA("Invalid %s1 request. Token can not be null or empty in delete tokens data at index %s2."), + DELETE_TOKENS_SIZE_EXCEED("Maximum number of tokens exceeded. The limit is 10000."), + + // invoke connection interface + INVOKE_CONNECTION_INVALID_CONNECTION_URL("Invalid %s1 request. Connection URL is not a valid URL."), + EMPTY_REQUEST_HEADERS("Invalid %s1 request. Request headers can not be empty."), + INVALID_REQUEST_HEADERS("Invalid %s1 request. Request header can not be null or empty in request headers."), + EMPTY_PATH_PARAMS("Invalid %s1 request. Path params can not be empty."), + INVALID_PATH_PARAM("Invalid %s1 request. Path parameter can not be null or empty in path params."), + EMPTY_QUERY_PARAMS("Invalid %s1 request. Query params can not be empty."), + INVALID_QUERY_PARAM("Invalid %s1 request. Query parameter can not be null or empty in query params."), + EMPTY_REQUEST_BODY("Invalid %s1 request. Request body can not be empty."), + INVALID_REQUEST_BODY("Invalid %s1 request. Request body can not be empty."), + INVOKE_CONNECTION_REQUEST_REJECTED("Invoke connection request resulted in failure."), + + // File upload interface + COLUMN_NAME_IS_REQUIRED_FILE_UPLOAD("Invalid %s1 request. Column name is required."), + EMPTY_COLUMN_NAME_FILE_UPLOAD("Invalid %s1 request. Column name can not be empty."), + FILE_IS_REQUIRED("Invalid %s1 request. File is required."), + EMPTY_FILE("Invalid %s1 request. File can not be empty."), + INVALID_FILE_TYPE("Invalid %s1 request. File should be of type java.io.File"), + MISSING_FILE_SOURCE_IN_UPLOAD_FILE("Invalid %s1 request. Provide exactly one of filePath, base64, or fileObject."), + UPLOAD_FILE_REQUEST_REJECTED("Upload file request resulted in failure."), + + // detect interface + INVALID_TEXT_IN_DEIDENTIFY("Invalid %s1 request. The text field is required and must be a non-empty string. Specify a valid text."), + DEIDENTIFY_TEXT_REQUEST_REJECTED("DeIdentify text request resulted in failure."), + INVALID_TEXT_IN_REIDENTIFY("Invalid %s1 request. The text field is required and must be a non-empty string. Specify a valid text."), + REIDENTIFY_TEXT_REQUEST_REJECTED("ReIdentify text request resulted in failure."), + DEIDENTIFY_FILE_REQUEST_REJECTED("DeIdentify file request resulted in failure."), + GET_DETECT_RUN_REQUEST_REJECTED("Get detect run request resulted in failure."), + INVALID_NULL_FILE_IN_DEIDENTIFY_FILE("Invalid %s1 request. The file field is required and must not be null. Specify a valid file."), + FILE_NOT_FOUND_TO_DEIDENTIFY("Invalid %s1 request. The file field is required and must not be empty. Specify a valid file."), + FILE_NOT_READABLE_TO_DEIDENTIFY("Invalid %s1 request. The file is not readable. Please check the file permissions or path."), + INVALID_PIXEL_DENSITY_TO_DEIDENTIFY_FILE("Invalid %s1 request. Pixel density must be a positive integer greater than 0. Specify a valid pixel density."), + INVALID_MAX_RESOLUTION("Invalid %s1 request. Max resolution must be a positive integer greater than 0. Specify a valid max resolution."), + INVALID_BLEEP_TO_DEIDENTIFY_AUDIO("Invalid %s1 request. Specify a valid bleep as AudioBleep"), + OUTPUT_DIRECTORY_NOT_FOUND("Invalid %s1 request. The output directory does not exist. Please specify a valid output directory."), + INVALID_PERMISSIONS_FOR_OUTPUT_DIRECTORY("Invalid %s1 request. The output directory is not writable. Please check the permissions or specify a valid output directory."), + EMPTY_FILE_AND_FILE_PATH_IN_DEIDENTIFY_FILE("Invalid %s1 request. The file and file path fields are both empty. Specify a valid file object or file path."), + + UNEXPECTED_ERROR_DURING_BATCH_PROCESSING("Unexpected error occurred during batch processing. Error: %s1"), + + PROCESSING_ERROR_RESPONSE("Processing error response."), + TABLE_SPECIFIED_AT_BOTH_PLACE("Invalid %s1 request. Table name cannot be specified at both the request and record levels. Please specify the table name at only one place."), + TABLE_NOT_SPECIFIED_AT_BOTH_PLACE("Invalid %s1 request. Table name is missing. Table name should be specified at one place either at the request level or record level. Please specify the table name at one place."), + UPSERT_TABLE_REQUEST_AT_RECORD_LEVEL("Invalid %s1 request. Table name should be present at each record level when upsert is present at record level."), + UPSERT_TABLE_REQUEST_AT_REQUEST_LEVEL("Invalid %s1 request. Upsert should be present at each record level when table name is present at record level."); + private final String log; + + ErrorLogs(String log) { + this.log = log; + } + + public final String getLog() { + return log; + } +} diff --git a/common/src/main/java/com/skyflow/logs/InfoLogs.java b/common/src/main/java/com/skyflow/logs/InfoLogs.java new file mode 100644 index 00000000..6d6a8211 --- /dev/null +++ b/common/src/main/java/com/skyflow/logs/InfoLogs.java @@ -0,0 +1,131 @@ +package com.skyflow.logs; + +public enum InfoLogs { + // Client initialization + CLIENT_INITIALIZED("Initialized skyflow client."), + VALIDATING_VAULT_CONFIG("Validating vault config."), + VALIDATING_CONNECTION_CONFIG("Validating connection config."), + UNABLE_TO_GENERATE_SDK_METRIC("Unable to generate %s1 metric."), + VAULT_CONTROLLER_INITIALIZED("Initialized vault controller with vault ID %s1."), + DETECT_CONTROLLER_INITIALIZED("Initialized detect controller with vault ID %s1."), + CONNECTION_CONTROLLER_INITIALIZED("Initialized connection controller with connection ID %s1."), + LOGGER_SETUP_DONE("Set up logger."), + CURRENT_LOG_LEVEL("Current log level is %s1."), + + // Bearer token generation + EMPTY_BEARER_TOKEN("Bearer token is empty."), + BEARER_TOKEN_EXPIRED("Bearer token is expired."), + GET_BEARER_TOKEN_TRIGGERED("getBearerToken method triggered."), + GET_BEARER_TOKEN_SUCCESS("Bearer token generated."), + GET_SIGNED_DATA_TOKENS_TRIGGERED("getSignedDataTokens method triggered."), + GET_SIGNED_DATA_TOKEN_SUCCESS("Signed data tokens generated."), + REUSE_BEARER_TOKEN("Reusing bearer token."), + USE_CLIENT_PROVIDED_BEARER_TOKEN("Using bearer token provided by client."), + USE_API_KEY("Using api key."), + REUSE_API_KEY("Reusing api key."), + GENERATE_BEARER_TOKEN_FROM_CREDENTIALS_TRIGGERED("generateBearerTokenFromCredentials method triggered."), + GENERATE_BEARER_TOKEN_FROM_CREDENTIALS_STRING_TRIGGERED("generateBearerTokenFromCredentialString method triggered."), + GENERATE_SIGNED_TOKENS_FROM_CREDENTIALS_FILE_TRIGGERED("generateSignedTokensFromCredentialsFile method triggered."), + GENERATE_SIGNED_TOKENS_FROM_CREDENTIALS_STRING_TRIGGERED("generateSignedTokensFromCredentialsString method triggered."), + + // Insert interface + INSERT_TRIGGERED("Insert method triggered."), + VALIDATE_INSERT_REQUEST("Validating insert request."), + INSERT_REQUEST_RESOLVED("Insert request resolved."), + INSERT_SUCCESS("Data inserted."), + + // Detokenize interface + DETOKENIZE_TRIGGERED("Detokenize method triggered."), + VALIDATE_DETOKENIZE_REQUEST("Validating detokenize request."), + DETOKENIZE_REQUEST_RESOLVED("Detokenize request resolved."), + DETOKENIZE_PARTIAL_SUCCESS("Data detokenized partially."), + DETOKENIZE_SUCCESS("Data detokenized."), + + // Get interface + GET_TRIGGERED("Get method triggered."), + VALIDATE_GET_REQUEST("Validating get request."), + GET_REQUEST_RESOLVED("Get request resolved."), + GET_SUCCESS("Data revealed."), + + // Update interface + UPDATE_TRIGGERED("Update method triggered."), + VALIDATE_UPDATE_REQUEST("Validating update request."), + UPDATE_REQUEST_RESOLVED("Update request resolved."), + UPDATE_SUCCESS("Data updated."), + + // Delete interface + DELETE_TRIGGERED("Delete method triggered."), + VALIDATING_DELETE_REQUEST("Validating delete request."), + DELETE_REQUEST_RESOLVED("Delete request resolved."), + DELETE_SUCCESS("Data deleted."), + + // Delete Tokens interface + DELETE_TOKENS_TRIGGERED("DeleteTokens method triggered."), + VALIDATE_DELETE_TOKENS_REQUEST("Validating delete tokens request."), + DELETE_TOKENS_REQUEST_RESOLVED("DeleteTokens request resolved."), + DELETE_TOKENS_SUCCESS("Tokens deleted."), + + // Query interface + QUERY_TRIGGERED("Query method triggered."), + VALIDATING_QUERY_REQUEST("Validating query request."), + QUERY_REQUEST_RESOLVED("Query request resolved."), + QUERY_SUCCESS("Query executed."), + + // Tokenize interface + TOKENIZE_TRIGGERED("Tokenize method triggered."), + VALIDATING_TOKENIZE_REQUEST("Validating tokenize request."), + TOKENIZE_REQUEST_RESOLVED("Tokenize request resolved."), + TOKENIZE_SUCCESS("Data tokenized."), + + + // Invoke connection interface + INVOKE_CONNECTION_TRIGGERED("Invoke connection method triggered."), + VALIDATING_INVOKE_CONNECTION_REQUEST("Validating invoke connection request."), + INVOKE_CONNECTION_REQUEST_RESOLVED("Invoke connection request resolved."), + + // detect + VALIDATE_DEIDENTIFY_TEXT_REQUEST("Validating deidentify text request."), + DEIDENTIFY_TEXT_SUCCESS("Text data de-identified."), + DEIDENTIFY_TEXT_TRIGGERED("DeIdentify text method triggered."), + DEIDENTIFY_TEXT_REQUEST_RESOLVED("DeIdentify text request resolved."), + VALIDATE_REIDENTIFY_TEXT_REQUEST("Validating reidentify text request."), + REIDENTIFY_TEXT_TRIGGERED("ReIdentify text method triggered."), + REIDENTIFY_TEXT_REQUEST_RESOLVED("ReIdentify text request resolved."), + DEIDENTIFY_FILE_TRIGGERED("DeIdentify file method triggered."), + VALIDATE_DEIDENTIFY_FILE_REQUEST("Validating deidentify file request."), + DEIDENTIFY_FILE_REQUEST_RESOLVED("DeIdentify file request resolved."), + DEIDENTIFY_FILE_SUCCESS("File deidentified successfully."), + GET_DETECT_RUN_TRIGGERED("Get detect run method triggered."), + VALIDATE_GET_DETECT_RUN_REQUEST("Validating get detect run request."), + REIDENTIFY_TEXT_SUCCESS("Text data re-identified."), + + // File upload interface + FILE_UPLOAD_TRIGGERED("File upload method triggered."), + VALIDATING_FILE_UPLOAD_REQUEST("Validating file upload request."), + FILE_UPLOAD_REQUEST_RESOLVED("File upload request resolved."), + FILE_UPLOAD_SUCCESS("File uploaded successfully."), + + PROCESSING_BATCHES("Processing batch"), + + // Deprecation warnings — v2 backward compat + DEPRECATED_SKYFLOW_ID_KEY("[DEPRECATED] Response key 'skyflow_id' is deprecated and will be removed in an upcoming release. Use 'skyflowId' instead."), + DEPRECATED_SKYFLOW_ID_REQUEST_KEY("[DEPRECATED] Request data key 'skyflow_id' is deprecated and will be removed in an upcoming release. Use 'skyflowId' instead."), + DEPRECATED_DOWNLOAD_URL("[DEPRECATED] Method 'downloadURL()' is deprecated and will be removed in an upcoming release. Use 'downloadUrl()' instead."), + DEPRECATED_GET_BYOT("[DEPRECATED] Method 'getBYOT()' is deprecated and will be removed in an upcoming release. Use 'getByot()' instead."), + DEPRECATED_UPDATE_LOG_LEVEL("[DEPRECATED] Method 'updateLogLevel()' is deprecated and will be removed in an upcoming release. Use 'setLogLevel()' instead."), + DEPRECATED_CREDENTIAL_CLIENT_ID("[DEPRECATED] Credential field 'clientID' is deprecated and will be removed in an upcoming release. Use 'clientId' instead."), + DEPRECATED_CREDENTIAL_KEY_ID("[DEPRECATED] Credential field 'keyID' is deprecated and will be removed in an upcoming release. Use 'keyId' instead."), + DEPRECATED_CREDENTIAL_TOKEN_URI("[DEPRECATED] Credential field 'tokenURI' is deprecated and will be removed in an upcoming release. Use 'tokenUri' instead.") + ; + + + private final String log; + + InfoLogs(String log) { + this.log = log; + } + + public final String getLog() { + return log; + } +} diff --git a/common/src/main/java/com/skyflow/logs/WarningLogs.java b/common/src/main/java/com/skyflow/logs/WarningLogs.java new file mode 100644 index 00000000..5f80a728 --- /dev/null +++ b/common/src/main/java/com/skyflow/logs/WarningLogs.java @@ -0,0 +1,19 @@ +package com.skyflow.logs; + +public enum WarningLogs { + INVALID_BATCH_SIZE_PROVIDED("Invalid value for batch size provided, switching to default value."), + INVALID_CONCURRENCY_LIMIT_PROVIDED("Invalid value for concurrency limit provided, switching to default value."), + BATCH_SIZE_EXCEEDS_MAX_LIMIT("Provided batch size exceeds the maximum limit, switching to max limit."), + CONCURRENCY_EXCEEDS_MAX_LIMIT("Provided concurrency limit exceeds the maximum limit, switching to max limit.") + ; + + private final String log; + + WarningLogs(String log) { + this.log = log; + } + + public final String getLog() { + return log; + } +} diff --git a/src/main/java/com/skyflow/serviceaccount/util/BearerToken.java b/common/src/main/java/com/skyflow/serviceaccount/util/BearerToken.java similarity index 92% rename from src/main/java/com/skyflow/serviceaccount/util/BearerToken.java rename to common/src/main/java/com/skyflow/serviceaccount/util/BearerToken.java index ad7cae30..317847e5 100644 --- a/src/main/java/com/skyflow/serviceaccount/util/BearerToken.java +++ b/common/src/main/java/com/skyflow/serviceaccount/util/BearerToken.java @@ -4,16 +4,16 @@ import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; -import com.skyflow.generated.rest.ApiClient; -import com.skyflow.generated.rest.ApiClientBuilder; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.resources.authentication.AuthenticationClient; -import com.skyflow.generated.rest.resources.authentication.requests.V1GetAuthTokenRequest; -import com.skyflow.generated.rest.types.V1GetAuthTokenResponse; +import com.skyflow.generated.auth.rest.ApiClient; +import com.skyflow.generated.auth.rest.ApiClientBuilder; +import com.skyflow.generated.auth.rest.core.ApiClientApiException; +import com.skyflow.generated.auth.rest.resources.authentication.AuthenticationClient; +import com.skyflow.generated.auth.rest.resources.authentication.requests.V1GetAuthTokenRequest; +import com.skyflow.generated.auth.rest.types.V1GetAuthTokenResponse; import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; -import com.skyflow.utils.Constants; -import com.skyflow.utils.Utils; +import com.skyflow.utils.BaseConstants; +import com.skyflow.utils.BaseUtils; import com.skyflow.utils.logger.LogUtil; import io.jsonwebtoken.Jwts; @@ -67,11 +67,11 @@ private static V1GetAuthTokenResponse generateBearerTokenFromCredentials( } } catch (JsonSyntaxException e) { LogUtil.printErrorLog(ErrorLogs.INVALID_CREDENTIALS_FILE_FORMAT.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), Utils.parameterizedString( + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), BaseUtils.parameterizedString( ErrorMessage.FileInvalidJson.getMessage(), credentialsFile.getPath())); } catch (FileNotFoundException e) { LogUtil.printErrorLog(ErrorLogs.CREDENTIALS_FILE_NOT_FOUND.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), Utils.parameterizedString( + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), BaseUtils.parameterizedString( ErrorMessage.FileNotFound.getMessage(), credentialsFile.getPath())); } } @@ -141,17 +141,17 @@ private static V1GetAuthTokenResponse getBearerTokenFromCredentials( throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.MissingTokenUri.getMessage()); } - PrivateKey pvtKey = Utils.getPrivateKeyFromPem(privateKey.getAsString()); + PrivateKey pvtKey = BaseUtils.getPrivateKeyFromPem(privateKey.getAsString()); String signedUserJWT = getSignedToken( clientId.getAsString(), keyId.getAsString(), tokenUri.getAsString(), pvtKey, context ); - String basePath = Utils.getBaseURL(tokenUri.getAsString()); + String basePath = BaseUtils.getBaseURL(tokenUri.getAsString()); API_CLIENT_BUILDER.url(basePath); ApiClient apiClient = API_CLIENT_BUILDER.token("token").build(); AuthenticationClient authenticationApi = apiClient.authentication(); - V1GetAuthTokenRequest._FinalStage authTokenBuilder = V1GetAuthTokenRequest.builder().grantType(Constants.GRANT_TYPE).assertion(signedUserJWT); + V1GetAuthTokenRequest._FinalStage authTokenBuilder = V1GetAuthTokenRequest.builder().grantType(BaseConstants.GRANT_TYPE).assertion(signedUserJWT); if (roles != null) { String scopedRoles = getScopeUsingRoles(roles); diff --git a/src/main/java/com/skyflow/serviceaccount/util/SignedDataTokenResponse.java b/common/src/main/java/com/skyflow/serviceaccount/util/SignedDataTokenResponse.java similarity index 83% rename from src/main/java/com/skyflow/serviceaccount/util/SignedDataTokenResponse.java rename to common/src/main/java/com/skyflow/serviceaccount/util/SignedDataTokenResponse.java index 3d35b541..c4618ae6 100644 --- a/src/main/java/com/skyflow/serviceaccount/util/SignedDataTokenResponse.java +++ b/common/src/main/java/com/skyflow/serviceaccount/util/SignedDataTokenResponse.java @@ -1,10 +1,10 @@ package com.skyflow.serviceaccount.util; import com.google.gson.Gson; -import com.skyflow.utils.Constants; +import com.skyflow.utils.BaseConstants; public class SignedDataTokenResponse { - private static final String PREFIX = Constants.SIGNED_DATA_TOKEN_PREFIX; + private static final String PREFIX = BaseConstants.SIGNED_DATA_TOKEN_PREFIX; private final String token; private final String signedToken; diff --git a/src/main/java/com/skyflow/serviceaccount/util/SignedDataTokens.java b/common/src/main/java/com/skyflow/serviceaccount/util/SignedDataTokens.java similarity index 97% rename from src/main/java/com/skyflow/serviceaccount/util/SignedDataTokens.java rename to common/src/main/java/com/skyflow/serviceaccount/util/SignedDataTokens.java index b909e45b..630a0aee 100644 --- a/src/main/java/com/skyflow/serviceaccount/util/SignedDataTokens.java +++ b/common/src/main/java/com/skyflow/serviceaccount/util/SignedDataTokens.java @@ -9,7 +9,7 @@ import com.skyflow.errors.SkyflowException; import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; -import com.skyflow.utils.Utils; +import com.skyflow.utils.BaseUtils; import com.skyflow.utils.logger.LogUtil; import io.jsonwebtoken.Jwts; @@ -18,11 +18,7 @@ import java.io.FileReader; import java.io.IOException; import java.security.PrivateKey; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; public class SignedDataTokens { private final File credentialsFile; @@ -64,11 +60,11 @@ private static List generateSignedTokenFromCredentialsF } } catch (JsonSyntaxException e) { LogUtil.printErrorLog(ErrorLogs.INVALID_CREDENTIALS_FILE_FORMAT.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), Utils.parameterizedString( + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), BaseUtils.parameterizedString( ErrorMessage.FileInvalidJson.getMessage(), credentialsFile.getPath())); } catch (FileNotFoundException e) { LogUtil.printErrorLog(ErrorLogs.CREDENTIALS_FILE_NOT_FOUND.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), Utils.parameterizedString( + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), BaseUtils.parameterizedString( ErrorMessage.FileNotFound.getMessage(), credentialsFile.getPath())); } return responseToken; @@ -129,7 +125,7 @@ private static List generateSignedTokensFromCredentials LogUtil.printErrorLog(ErrorLogs.KEY_ID_IS_REQUIRED.getLog()); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.MissingKeyId.getMessage()); } - PrivateKey pvtKey = Utils.getPrivateKeyFromPem(privateKey.getAsString()); + PrivateKey pvtKey = BaseUtils.getPrivateKeyFromPem(privateKey.getAsString()); signedDataTokens = getSignedToken( clientId.getAsString(), keyId.getAsString(), pvtKey, dataTokens, timeToLive, context); } catch (RuntimeException e) { diff --git a/src/main/java/com/skyflow/serviceaccount/util/Token.java b/common/src/main/java/com/skyflow/serviceaccount/util/Token.java similarity index 100% rename from src/main/java/com/skyflow/serviceaccount/util/Token.java rename to common/src/main/java/com/skyflow/serviceaccount/util/Token.java diff --git a/common/src/main/java/com/skyflow/utils/BaseConstants.java b/common/src/main/java/com/skyflow/utils/BaseConstants.java new file mode 100644 index 00000000..8aeb9f95 --- /dev/null +++ b/common/src/main/java/com/skyflow/utils/BaseConstants.java @@ -0,0 +1,34 @@ +package com.skyflow.utils; + +public class BaseConstants { + public static final String SDK_NAME= "Skyflow Java SDK "; + public static final String SDK_VERSION = "1.0.0"; + public static final String SDK_PREFIX = SDK_NAME + SDK_VERSION; + public static final String ORDER_ASCENDING = "ASCENDING"; + public static final String ENV_CREDENTIALS_KEY_NAME = "SKYFLOW_CREDENTIALS"; + public static final String SECURE_PROTOCOL = "https://"; + + public static final String V2_VAULT_DOMAIN = ".vault."; + public static final String V3_VAULT_DOMAIN = ".skyvault."; + public static final String DEV_DOMAIN = "skyflowapis.dev"; + public static final String STAGE_DOMAIN = "skyflowapis.tech"; + public static final String SANDBOX_DOMAIN = "skyflowapis-preview.com"; + public static final String PROD_DOMAIN = "skyflowapis.com"; + public static final String PKCS8_PRIVATE_HEADER = "-----BEGIN PRIVATE KEY-----"; + public static final String PKCS8_PRIVATE_FOOTER = "-----END PRIVATE KEY-----"; + public static final String GRANT_TYPE = "urn:ietf:params:oauth:grant-type:jwt-bearer"; + public static final String SIGNED_DATA_TOKEN_PREFIX = "signed_token_"; + public static final String API_KEY_REGEX = "^sky-[a-zA-Z0-9]{5}-[a-fA-F0-9]{32}$"; + public static final String CONTEXT_KEY_REGEX = "^[a-zA-Z0-9_]+$"; + public static final String SDK_METRIC_NAME_VERSION = "sdk_name_version"; + public static final String SDK_METRIC_NAME_VERSION_PREFIX = "skyflow-java@"; + public static final String SDK_METRIC_CLIENT_DEVICE_MODEL = "sdk_client_device_model"; + public static final String SDK_METRIC_CLIENT_OS_DETAILS = "sdk_client_os_details"; + public static final String SDK_METRIC_RUNTIME_DETAILS = "sdk_runtime_details"; + public static final String SDK_METRIC_RUNTIME_DETAILS_PREFIX = "Java@"; + public static final String SDK_AUTH_HEADER_KEY = "x-skyflow-authorization"; + public static final String SDK_METRICS_HEADER_KEY = "sky-metadata"; + public static final String REQUEST_ID_HEADER_KEY = "x-request-id"; + public static final String ERROR_FROM_CLIENT_HEADER_KEY = "error-from-client"; + +} diff --git a/common/src/main/java/com/skyflow/utils/BaseUtils.java b/common/src/main/java/com/skyflow/utils/BaseUtils.java new file mode 100644 index 00000000..05db73f5 --- /dev/null +++ b/common/src/main/java/com/skyflow/utils/BaseUtils.java @@ -0,0 +1,177 @@ +package com.skyflow.utils; + +import com.google.gson.JsonObject; +import com.skyflow.config.BaseCredentials; +import com.skyflow.enums.Env; +import com.skyflow.errors.ErrorCode; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import com.skyflow.logs.ErrorLogs; +import com.skyflow.logs.InfoLogs; +import com.skyflow.serviceaccount.util.BearerToken; +import com.skyflow.utils.logger.LogUtil; +import org.apache.commons.codec.binary.Base64; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.security.KeyFactory; +import java.security.NoSuchAlgorithmException; +import java.security.PrivateKey; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.PKCS8EncodedKeySpec; +import java.util.Map; + +public class BaseUtils { + public static String generateBearerToken(BaseCredentials credentials) throws SkyflowException { + if (credentials.getPath() != null) { + BearerToken.BearerTokenBuilder builder = BearerToken.builder() + .setCredentials(new File(credentials.getPath())) + .setRoles(credentials.getRoles()); + Object ctx = credentials.getContext(); + if (ctx instanceof String) { + builder.setCtx((String) ctx); + } else if (ctx instanceof Map) { + builder.setCtx((Map) ctx); + } + return builder.build().getBearerToken(); + } else if (credentials.getCredentialsString() != null) { + BearerToken.BearerTokenBuilder builder = BearerToken.builder() + .setCredentials(credentials.getCredentialsString()) + .setRoles(credentials.getRoles()); + Object ctx = credentials.getContext(); + if (ctx instanceof String) { + builder.setCtx((String) ctx); + } else if (ctx instanceof Map) { + builder.setCtx((Map) ctx); + } + return builder.build().getBearerToken(); + } else { + return credentials.getToken(); + } + } + + public static String getVaultURL(String clusterId, Env env, String vaultDomain) { + StringBuilder sb = buildBaseUrl(clusterId, vaultDomain); + switch (env) { + case DEV: + sb.append(BaseConstants.DEV_DOMAIN); + break; + case STAGE: + sb.append(BaseConstants.STAGE_DOMAIN); + break; + case SANDBOX: + sb.append(BaseConstants.SANDBOX_DOMAIN); + break; + case PROD: + default: + sb.append(BaseConstants.PROD_DOMAIN); + break; + } + return sb.toString(); + } + + public static PrivateKey getPrivateKeyFromPem(String pemKey) throws SkyflowException { + String PKCS8PrivateHeader = BaseConstants.PKCS8_PRIVATE_HEADER; + String PKCS8PrivateFooter = BaseConstants.PKCS8_PRIVATE_FOOTER; + + String privateKeyContent = pemKey; + PrivateKey privateKey = null; + + if (pemKey.contains(PKCS8PrivateHeader)) { + privateKeyContent = privateKeyContent.replace(PKCS8PrivateHeader, ""); + privateKeyContent = privateKeyContent.replace(PKCS8PrivateFooter, ""); + privateKeyContent = privateKeyContent.replace("\n", ""); + privateKeyContent = privateKeyContent.replace("\r\n", ""); + privateKey = parsePkcs8PrivateKey(Base64.decodeBase64(privateKeyContent)); + } else { + LogUtil.printErrorLog(ErrorLogs.JWT_INVALID_FORMAT.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.JwtInvalidFormat.getMessage()); + } + return privateKey; + } + + public static String getBaseURL(String url) throws MalformedURLException { + URL parsedUrl = new URL(url); + String protocol = parsedUrl.getProtocol(); + String host = parsedUrl.getHost(); + return String.format("%s://%s", protocol, host); + } + + public static String parameterizedString(String base, String... args) { + for (int index = 0; index < args.length; index++) { + base = base.replace("%s" + (index + 1), args[index]); + } + return base; + } + + protected static JsonObject getCommonMetrics() { + JsonObject details = new JsonObject(); + String deviceModel; + String osDetails; + String javaVersion; + // Retrieve device model + try { + deviceModel = System.getProperty("os.name"); + if (deviceModel == null) throw new Exception(); + } catch (Exception e) { + LogUtil.printInfoLog(parameterizedString( + InfoLogs.UNABLE_TO_GENERATE_SDK_METRIC.getLog(), + BaseConstants.SDK_METRIC_CLIENT_DEVICE_MODEL + )); + deviceModel = ""; + } + + // Retrieve OS details + try { + osDetails = System.getProperty("os.version"); + if (osDetails == null) throw new Exception(); + } catch (Exception e) { + LogUtil.printInfoLog(parameterizedString( + InfoLogs.UNABLE_TO_GENERATE_SDK_METRIC.getLog(), + BaseConstants.SDK_METRIC_CLIENT_OS_DETAILS + )); + osDetails = ""; + } + + // Retrieve Java version details + try { + javaVersion = System.getProperty("java.version"); + if (javaVersion == null) throw new Exception(); + } catch (Exception e) { + LogUtil.printInfoLog(parameterizedString( + InfoLogs.UNABLE_TO_GENERATE_SDK_METRIC.getLog(), + BaseConstants.SDK_METRIC_RUNTIME_DETAILS + )); + javaVersion = ""; + } + details.addProperty(BaseConstants.SDK_METRIC_CLIENT_DEVICE_MODEL, deviceModel); + details.addProperty(BaseConstants.SDK_METRIC_RUNTIME_DETAILS, BaseConstants.SDK_METRIC_RUNTIME_DETAILS_PREFIX + javaVersion); + details.addProperty(BaseConstants.SDK_METRIC_CLIENT_OS_DETAILS, osDetails); + return details; + } + + private static PrivateKey parsePkcs8PrivateKey(byte[] pkcs8Bytes) throws SkyflowException { + KeyFactory keyFactory; + PrivateKey privateKey = null; + try { + PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(pkcs8Bytes); + keyFactory = KeyFactory.getInstance("RSA"); + privateKey = keyFactory.generatePrivate(keySpec); + } catch (NoSuchAlgorithmException e) { + LogUtil.printErrorLog(ErrorLogs.INVALID_ALGORITHM.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidAlgorithm.getMessage()); + } catch (InvalidKeySpecException e) { + LogUtil.printErrorLog(ErrorLogs.INVALID_KEY_SPEC.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidKeySpec.getMessage()); + } + return privateKey; + } + + private static StringBuilder buildBaseUrl(String clusterId, String vaultDomain) { + StringBuilder sb = new StringBuilder(BaseConstants.SECURE_PROTOCOL); + sb.append(clusterId); + sb.append(vaultDomain); + return sb; + } +} diff --git a/common/src/main/java/com/skyflow/utils/SdkVersion.java b/common/src/main/java/com/skyflow/utils/SdkVersion.java new file mode 100644 index 00000000..8136d8c9 --- /dev/null +++ b/common/src/main/java/com/skyflow/utils/SdkVersion.java @@ -0,0 +1,13 @@ +package com.skyflow.utils; + +public class SdkVersion { + private static String sdkPrefix = BaseConstants.SDK_PREFIX; + + public static String getSdkPrefix() { + return sdkPrefix; + } + + public static void setSdkPrefix(String sdkPrefix) { + SdkVersion.sdkPrefix = sdkPrefix; + } +} diff --git a/common/src/main/java/com/skyflow/utils/logger/LogUtil.java b/common/src/main/java/com/skyflow/utils/logger/LogUtil.java new file mode 100644 index 00000000..54fc7d47 --- /dev/null +++ b/common/src/main/java/com/skyflow/utils/logger/LogUtil.java @@ -0,0 +1,100 @@ +package com.skyflow.utils.logger; + +import com.skyflow.enums.LogLevel; +import com.skyflow.logs.InfoLogs; +import com.skyflow.utils.SdkVersion; + +import java.util.logging.*; + +public final class LogUtil { + private static final Logger LOGGER = Logger.getLogger(LogUtil.class.getName()); + private static final String SDK_LOG_PREFIX = "[" + SdkVersion.getSdkPrefix() + "] "; + private static boolean IS_LOGGER_SETUP_DONE = false; + + synchronized public static void setupLogger(LogLevel logLevel) { + IS_LOGGER_SETUP_DONE = true; + LogManager.getLogManager().reset(); + LOGGER.setUseParentHandlers(false); + Formatter formatter = new SimpleFormatter() { + private static final String format = "%s: %s %n"; + + // Override format method + @Override + public synchronized String format(LogRecord logRecord) { + return String.format( + format, + loggerLevelToLogLevelMap(logRecord.getLevel()), + logRecord.getMessage() + ); + } + }; + ConsoleHandler consoleHandler = new ConsoleHandler(); + consoleHandler.setFormatter(formatter); + consoleHandler.setLevel(Level.CONFIG); + + LOGGER.addHandler(consoleHandler); + LOGGER.setLevel(logLevelToLoggerLevelMap(logLevel)); + printInfoLog(InfoLogs.LOGGER_SETUP_DONE.getLog()); + } + + public static void printErrorLog(String message) { + if (IS_LOGGER_SETUP_DONE) + LOGGER.severe(SDK_LOG_PREFIX + message); + else { + setupLogger(LogLevel.ERROR); + LOGGER.severe(SDK_LOG_PREFIX + message); + } + } + + public static void printDebugLog(String message) { + if (IS_LOGGER_SETUP_DONE) + LOGGER.config(SDK_LOG_PREFIX + message); + } + + public static void printWarningLog(String message) { + if (IS_LOGGER_SETUP_DONE) + LOGGER.warning(SDK_LOG_PREFIX + message); + } + + public static void printInfoLog(String message) { + if (IS_LOGGER_SETUP_DONE) + LOGGER.info(SDK_LOG_PREFIX + message); + } + + + private static Level logLevelToLoggerLevelMap(LogLevel logLevel) { + Level loggerLevel; + switch (logLevel) { + case ERROR: + loggerLevel = Level.SEVERE; + break; + case WARN: + loggerLevel = Level.WARNING; + break; + case INFO: + loggerLevel = Level.INFO; + break; + case DEBUG: + loggerLevel = Level.CONFIG; + break; + default: + loggerLevel = Level.OFF; + } + return loggerLevel; + } + + private static LogLevel loggerLevelToLogLevelMap(Level loggerLevel) { + LogLevel logLevel; + if (Level.SEVERE.equals(loggerLevel)) { + logLevel = LogLevel.ERROR; + } else if (Level.WARNING.equals(loggerLevel)) { + logLevel = LogLevel.WARN; + } else if (Level.INFO.equals(loggerLevel)) { + logLevel = LogLevel.INFO; + } else if (Level.CONFIG.equals(loggerLevel)) { + logLevel = LogLevel.DEBUG; + } else + logLevel = LogLevel.OFF; + return logLevel; + } +} diff --git a/common/src/main/java/com/skyflow/utils/validations/BaseValidations.java b/common/src/main/java/com/skyflow/utils/validations/BaseValidations.java new file mode 100644 index 00000000..c2ee2df9 --- /dev/null +++ b/common/src/main/java/com/skyflow/utils/validations/BaseValidations.java @@ -0,0 +1,111 @@ +package com.skyflow.utils.validations; + +import com.skyflow.config.BaseCredentials; +import com.skyflow.errors.ErrorCode; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import com.skyflow.logs.ErrorLogs; +import com.skyflow.utils.BaseConstants; +import com.skyflow.utils.BaseUtils; +import com.skyflow.utils.logger.LogUtil; + +import java.util.ArrayList; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class BaseValidations { + BaseValidations() { + } + + public static void validateCredentials(BaseCredentials credentials) throws SkyflowException { + int nonNullMembers = 0; + String path = credentials.getPath(); + String credentialsString = credentials.getCredentialsString(); + String token = credentials.getToken(); + String apiKey = credentials.getApiKey(); + Object context = credentials.getContext(); + ArrayList roles = credentials.getRoles(); + + if (path != null) nonNullMembers++; + if (credentialsString != null) nonNullMembers++; + if (token != null) nonNullMembers++; + if (apiKey != null) nonNullMembers++; + + if (nonNullMembers > 1) { + LogUtil.printErrorLog(ErrorLogs.MULTIPLE_TOKEN_GENERATION_MEANS_PASSED.getLog()); + throw new SkyflowException( + ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.MultipleTokenGenerationMeansPassed.getMessage() + ); + } else if (nonNullMembers < 1) { + LogUtil.printErrorLog(ErrorLogs.NO_TOKEN_GENERATION_MEANS_PASSED.getLog()); + throw new SkyflowException( + ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NoTokenGenerationMeansPassed.getMessage() + ); + } else if (path != null && path.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_CREDENTIALS_PATH.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentialFilePath.getMessage()); + } else if (credentialsString != null && credentialsString.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_CREDENTIALS_STRING.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentialsString.getMessage()); + } else if (token != null && token.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_TOKEN_VALUE.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyToken.getMessage()); + } else if (apiKey != null) { + if (apiKey.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_API_KEY_VALUE.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyApikey.getMessage()); + } else { + Pattern pattern = Pattern.compile(BaseConstants.API_KEY_REGEX); + Matcher matcher = pattern.matcher(apiKey); + if (!matcher.matches()) { + LogUtil.printErrorLog(ErrorLogs.INVALID_API_KEY.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidApikey.getMessage()); + } + } + } else if (roles != null) { + if (roles.isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_ROLES.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRoles.getMessage()); + } else { + for (int index = 0; index < roles.size(); index++) { + String role = roles.get(index); + if (role == null || role.trim().isEmpty()) { + LogUtil.printErrorLog(BaseUtils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_ROLE_IN_ROLES.getLog(), Integer.toString(index) + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRoleInRoles.getMessage()); + } + } + } + } + if (context != null) { + if (context instanceof String) { + String ctxStr = (String) context; + if (ctxStr.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_OR_NULL_CONTEXT.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyContext.getMessage()); + } + } else if (context instanceof Map) { + Map ctxMap = (Map) context; + if (ctxMap.isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_OR_NULL_CONTEXT.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyContext.getMessage()); + } + Pattern ctxKeyPattern = Pattern.compile(BaseConstants.CONTEXT_KEY_REGEX); + for (Object key : ctxMap.keySet()) { + if (key == null || !ctxKeyPattern.matcher(key.toString()).matches()) { + String keyStr = key == null ? "null" : key.toString(); + LogUtil.printErrorLog(BaseUtils.parameterizedString( + ErrorLogs.INVALID_CONTEXT_MAP_KEY.getLog(), keyStr)); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), + BaseUtils.parameterizedString(ErrorMessage.InvalidContextMapKey.getMessage(), keyStr)); + } + } + } else { + LogUtil.printErrorLog(ErrorLogs.INVALID_CONTEXT_TYPE.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidContextType.getMessage()); + } + } + } +} diff --git a/common/src/main/java/com/skyflow/vault/controller/BaseVaultController.java b/common/src/main/java/com/skyflow/vault/controller/BaseVaultController.java new file mode 100644 index 00000000..d6cd31ae --- /dev/null +++ b/common/src/main/java/com/skyflow/vault/controller/BaseVaultController.java @@ -0,0 +1,21 @@ +package com.skyflow.vault.controller; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.skyflow.errors.SkyflowException; +import com.skyflow.logs.ErrorLogs; +import com.skyflow.utils.logger.LogUtil; + +import java.util.List; +import java.util.Map; + +public class BaseVaultController { + protected static final Gson GSON = new GsonBuilder().serializeNulls().create(); + + protected static SkyflowException wrapApiException(int statusCode, Throwable cause, + Map> headers, + Object responseBody, ErrorLogs errorLog) { + LogUtil.printErrorLog(errorLog.getLog()); + return new SkyflowException(statusCode, cause, headers, GSON.toJson(responseBody)); + } +} diff --git a/common/src/main/java/com/skyflow/vault/controller/IVaultController.java b/common/src/main/java/com/skyflow/vault/controller/IVaultController.java new file mode 100644 index 00000000..1c4f907f --- /dev/null +++ b/common/src/main/java/com/skyflow/vault/controller/IVaultController.java @@ -0,0 +1,9 @@ +package com.skyflow.vault.controller; + +import com.skyflow.errors.SkyflowException; + +// Common interface — ONLY operations supported on both vault types. +public interface IVaultController { + InsertResp insert(InsertReq request) throws SkyflowException; + DetokenizeResp detokenize(DetokenizeReq request) throws SkyflowException; +} \ No newline at end of file diff --git a/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeRequest.java b/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeRequest.java new file mode 100644 index 00000000..d19d0432 --- /dev/null +++ b/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeRequest.java @@ -0,0 +1,4 @@ +package com.skyflow.vault.data; + +public class BaseDetokenizeRequest { +} diff --git a/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeResponse.java b/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeResponse.java new file mode 100644 index 00000000..ad158145 --- /dev/null +++ b/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeResponse.java @@ -0,0 +1,4 @@ +package com.skyflow.vault.data; + +public class BaseDetokenizeResponse { +} diff --git a/common/src/main/java/com/skyflow/vault/data/BaseInsertRequest.java b/common/src/main/java/com/skyflow/vault/data/BaseInsertRequest.java new file mode 100644 index 00000000..9f463b6f --- /dev/null +++ b/common/src/main/java/com/skyflow/vault/data/BaseInsertRequest.java @@ -0,0 +1,4 @@ +package com.skyflow.vault.data; + +public class BaseInsertRequest { +} diff --git a/common/src/main/java/com/skyflow/vault/data/BaseInsertResponse.java b/common/src/main/java/com/skyflow/vault/data/BaseInsertResponse.java new file mode 100644 index 00000000..7b5efb9b --- /dev/null +++ b/common/src/main/java/com/skyflow/vault/data/BaseInsertResponse.java @@ -0,0 +1,4 @@ +package com.skyflow.vault.data; + +public class BaseInsertResponse { +} diff --git a/flowvault/pom.xml b/flowvault/pom.xml new file mode 100644 index 00000000..9f36f6c4 --- /dev/null +++ b/flowvault/pom.xml @@ -0,0 +1,128 @@ + + + 4.0.0 + + com.skyflow + skyflow + 1.0.0 + ../pom.xml + + + skyflow-flowvault-java + 1.0.0 + jar + ${project.groupId}:${project.artifactId} + Skyflow V3 SDK for the Java programming language + https://github.com/skyflowapi/skyflow-java/tree/main + + + + The MIT License (MIT) + https://github.com/skyflowapi/skyflow-java/blob/main/LICENSE + + + + + skyflow + skyflow + + + + + 8 + 8 + UTF-8 + false + ${project.version} + + + + + + + com.skyflow + common + 1.0.1 + + + + + + + src/main/resources + true + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + + + com.skyflow:common + + + + + + + + + + + + jfrog + + + central + prekarilabs.jfrog.io-releases + https://prekarilabs.jfrog.io/artifactory/skyflow-java + + + snapshots + prekarilabs.jfrog.io-snapshots + https://prekarilabs.jfrog.io/artifactory/skyflow-java + + + + + maven-central + + + central + https://central.sonatype.com/api/v1/publisher/upload + + + central-snapshots + https://central.sonatype.com/api/v1/publisher/upload + + + + + + org.sonatype.central + central-publishing-maven-plugin + 0.4.0 + true + + central + true + true + + + + + + + + diff --git a/flowvault/src/main/java/com/skyflow/Skyflow.java b/flowvault/src/main/java/com/skyflow/Skyflow.java new file mode 100644 index 00000000..ff1eff08 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/Skyflow.java @@ -0,0 +1,144 @@ +package com.skyflow; + +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; +import com.skyflow.enums.LogLevel; +import com.skyflow.errors.ErrorCode; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import com.skyflow.logs.ErrorLogs; +import com.skyflow.logs.InfoLogs; +import com.skyflow.utils.Constants; +import com.skyflow.utils.SdkVersion; +import com.skyflow.utils.Utils; +import com.skyflow.utils.logger.LogUtil; +import com.skyflow.utils.validations.Validations; +import com.skyflow.vault.controller.VaultController; + +import java.util.LinkedHashMap; + +public final class Skyflow extends BaseSkyflow { + private final SkyflowClientBuilder builder; + + private Skyflow(SkyflowClientBuilder builder) { + super(builder); + this.builder = builder; + } + + public static SkyflowClientBuilder builder() { + SdkVersion.setSdkPrefix(Constants.SDK_PREFIX); + return new SkyflowClientBuilder(); + } + + public VaultConfig getVaultConfig() { + Object[] array = this.builder.vaultConfigMap.values().toArray(); + return (VaultConfig) array[0]; + } + + public VaultController vault() throws SkyflowException { + Object[] array = this.builder.vaultClientsMap.keySet().toArray(); + if (array.length < 1) { + LogUtil.printErrorLog(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); + } + String vaultId = (String) array[0]; + VaultController controller = this.builder.vaultClientsMap.get(vaultId); + if (controller == null) { + LogUtil.printErrorLog(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); + } + + return controller; + } + + public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { + private final LinkedHashMap vaultConfigMap; + private final LinkedHashMap vaultClientsMap; + protected Credentials skyflowCredentials; + public SkyflowClientBuilder() { + this.vaultConfigMap = new LinkedHashMap<>(); + this.vaultClientsMap = new LinkedHashMap<>(); + } + + public SkyflowClientBuilder addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); + Validations.validateVaultConfiguration(vaultConfig); + VaultConfig vaultConfigCopy; + try { + vaultConfigCopy = (VaultConfig) vaultConfig.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + if (!this.vaultClientsMap.isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultConfigCopy.getVaultId() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), + ErrorMessage.VaultIdAlreadyInConfigList.getMessage()); + } else { + this.vaultConfigMap.put(vaultConfigCopy.getVaultId(), vaultConfigCopy); // add new config in map + this.vaultClientsMap.put(vaultConfigCopy.getVaultId(), new VaultController(vaultConfigCopy, this.skyflowCredentials)); // add new controller with new config + LogUtil.printInfoLog(Utils.parameterizedString( + InfoLogs.VAULT_CONTROLLER_INITIALIZED.getLog(), vaultConfigCopy.getVaultId())); + } + return this; + } + + public SkyflowClientBuilder updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); + Validations.validateVaultConfiguration(vaultConfig); + if (this.vaultClientsMap.containsKey(vaultConfig.getVaultId())) { + VaultConfig existing = this.vaultConfigMap.get(vaultConfig.getVaultId()); + if (vaultConfig.getEnv() != null) existing.setEnv(vaultConfig.getEnv()); + if (vaultConfig.getClusterId() != null) existing.setClusterId(vaultConfig.getClusterId()); + if (vaultConfig.getCredentials() != null) existing.setCredentials(vaultConfig.getCredentials()); + this.vaultClientsMap.put(existing.getVaultId(), new VaultController(existing, this.skyflowCredentials)); + } else { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultConfig.getVaultId() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); + } + return this; + } + + public SkyflowClientBuilder removeVaultConfig(String vaultId) throws SkyflowException { + if (this.vaultClientsMap.containsKey(vaultId)) { + this.vaultClientsMap.remove(vaultId); + this.vaultConfigMap.remove(vaultId); + } else { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); + } + return this; + } + + public SkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throws SkyflowException { + Validations.validateCredentials(credentials); + Credentials credentialsCopy; + try { + credentialsCopy = (Credentials) credentials.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + this.skyflowCredentials = credentialsCopy; + for (VaultController vault : this.vaultClientsMap.values()) { + vault.setCommonCredentials(this.skyflowCredentials); + } + return this; + } + + @Override + public SkyflowClientBuilder setLogLevel(LogLevel logLevel) { + super.setLogLevel(logLevel); + return this; + } + + public Skyflow build() { + return new Skyflow(this); + } + } + +} \ No newline at end of file diff --git a/flowvault/src/main/java/com/skyflow/VaultClient.java b/flowvault/src/main/java/com/skyflow/VaultClient.java new file mode 100644 index 00000000..00a3d57d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/VaultClient.java @@ -0,0 +1,73 @@ +package com.skyflow; + +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; +import com.skyflow.errors.SkyflowException; +import com.skyflow.generated.rest.ApiClient; +import com.skyflow.generated.rest.ApiClientBuilder; +import com.skyflow.generated.rest.resources.flowservice.FlowserviceClient; +import com.skyflow.utils.Utils; + + +public class VaultClient extends BaseVaultClient { + private final VaultConfig vaultConfig; + private final ApiClientBuilder apiClientBuilder; + private ApiClient apiClient; + + protected VaultClient(VaultConfig vaultConfig, Credentials credentials) throws SkyflowException { + this.vaultConfig = vaultConfig; + this.commonCredentials = credentials; + this.apiClientBuilder = new ApiClientBuilder(); + this.apiClient = null; + updateVaultURL(); + } + + protected FlowserviceClient getRecordsApi() { + return this.apiClient.flowservice(); + } + + protected VaultConfig getVaultConfig() { + return vaultConfig; + } + + protected void setCommonCredentials(Credentials commonCredentials) throws SkyflowException { + this.commonCredentials = commonCredentials; + super.prioritiseCredentials(this.vaultConfig.getCredentials()); + } + + protected void setBearerToken() throws SkyflowException { + super.setBearerToken(this.vaultConfig.getCredentials()); + if (apiClient == null) { + updateExecutorInHTTP(); + this.apiClient = this.apiClientBuilder.build(); + } + } + + private void updateVaultURL() throws SkyflowException { + // Fetch vaultURL from ENV + String vaultURL = Utils.getEnvVaultURL(); + + // If vaultURL from ENV is null or empty, fetch vaultURL from vault config + if (vaultURL == null || vaultURL.isEmpty()) { + vaultURL = this.vaultConfig.getVaultURL(); + } + + // If vaultURL from vault config is also null or empty, construct vaultURL from clusterId passed in vault config + if (vaultURL == null || vaultURL.isEmpty()) { + vaultURL = Utils.getVaultURL(this.vaultConfig.getClusterId(), this.vaultConfig.getEnv()); + } + this.apiClientBuilder.url(vaultURL); + if (!vaultURL.equals(this.currentVaultURL)) { + this.currentVaultURL = vaultURL; + this.apiClient = null; + } + } + + protected void updateExecutorInHTTP() { + if (sharedHttpClient == null) { + sharedHttpClient = buildSharedHttpClient(() -> this.token); + apiClientBuilder.httpClient(sharedHttpClient); + } + } + +} diff --git a/flowvault/src/main/java/com/skyflow/config/Credentials.java b/flowvault/src/main/java/com/skyflow/config/Credentials.java new file mode 100644 index 00000000..1e13c146 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/config/Credentials.java @@ -0,0 +1,9 @@ +package com.skyflow.config; + +public class Credentials extends BaseCredentials { + public Credentials() { + super(); + } + + +} diff --git a/flowvault/src/main/java/com/skyflow/config/VaultConfig.java b/flowvault/src/main/java/com/skyflow/config/VaultConfig.java new file mode 100644 index 00000000..f90fa76c --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/config/VaultConfig.java @@ -0,0 +1,33 @@ +package com.skyflow.config; + +import com.skyflow.enums.Env; + +public class VaultConfig extends BaseVaultConfig implements Cloneable { + + private Credentials credentials; + + public VaultConfig() { + super(); + this.credentials = null; + } + + public Credentials getCredentials() { + return credentials; + } + + public void setCredentials(Credentials credentials) { + this.credentials = credentials; + } + + + @Override + public Object clone() throws CloneNotSupportedException { + VaultConfig cloned = (VaultConfig) super.clone(); + if (this.credentials != null) { + cloned.credentials = (Credentials) this.credentials.clone(); + } + + return cloned; + } + +} \ No newline at end of file diff --git a/flowvault/src/main/java/com/skyflow/enums/CustomHeaderKey.java b/flowvault/src/main/java/com/skyflow/enums/CustomHeaderKey.java new file mode 100644 index 00000000..8e6190c6 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/enums/CustomHeaderKey.java @@ -0,0 +1,18 @@ +package com.skyflow.enums; + +public enum CustomHeaderKey { + SkyflowAccountID("x-skyflow-account-id"), + SkyflowAccountName("x-skyflow-account-name"), + RequestIDHeader("x-request-id"); + + private final String value; + + CustomHeaderKey(String value) { + this.value = value; + } + + @Override + public String toString() { + return this.value; + } +} \ No newline at end of file diff --git a/flowvault/src/main/java/com/skyflow/enums/UpsertType.java b/flowvault/src/main/java/com/skyflow/enums/UpsertType.java new file mode 100644 index 00000000..fa2350d2 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/enums/UpsertType.java @@ -0,0 +1,18 @@ +package com.skyflow.enums; + +public enum UpsertType { + UPDATE("UPDATE"), + + REPLACE("REPLACE"); + + private final String value; + + UpsertType(String value) { + this.value = value; + } + + @Override + public String toString() { + return this.value; + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/ApiClient.java b/flowvault/src/main/java/com/skyflow/generated/rest/ApiClient.java new file mode 100644 index 00000000..02b972dd --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/ApiClient.java @@ -0,0 +1,37 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest; + +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.Suppliers; +import com.skyflow.generated.rest.resources.flowservice.FlowserviceClient; +import com.skyflow.generated.rest.resources.records.RecordsClient; + +import java.util.function.Supplier; + +public class ApiClient { + protected final ClientOptions clientOptions; + + protected final Supplier recordsClient; + + protected final Supplier flowserviceClient; + + public ApiClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + this.recordsClient = Suppliers.memoize(() -> new RecordsClient(clientOptions)); + this.flowserviceClient = Suppliers.memoize(() -> new FlowserviceClient(clientOptions)); + } + + public RecordsClient records() { + return this.recordsClient.get(); + } + + public FlowserviceClient flowservice() { + return this.flowserviceClient.get(); + } + + public static ApiClientBuilder builder() { + return new ApiClientBuilder(); + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/ApiClientBuilder.java b/flowvault/src/main/java/com/skyflow/generated/rest/ApiClientBuilder.java new file mode 100644 index 00000000..fa3d6e9d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/ApiClientBuilder.java @@ -0,0 +1,48 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest; + +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.Environment; +import okhttp3.OkHttpClient; + +public final class ApiClientBuilder { + private ClientOptions.Builder clientOptionsBuilder = ClientOptions.builder(); + + private Environment environment; + + public ApiClientBuilder url(String url) { + this.environment = Environment.custom(url); + return this; + } + + /** + * Sets the timeout (in seconds) for the client. Defaults to 60 seconds. + */ + public ApiClientBuilder timeout(int timeout) { + this.clientOptionsBuilder.timeout(timeout); + return this; + } + + /** + * Sets the maximum number of retries for the client. Defaults to 2 retries. + */ + public ApiClientBuilder maxRetries(int maxRetries) { + this.clientOptionsBuilder.maxRetries(maxRetries); + return this; + } + + /** + * Sets the underlying OkHttp client + */ + public ApiClientBuilder httpClient(OkHttpClient httpClient) { + this.clientOptionsBuilder.httpClient(httpClient); + return this; + } + + public ApiClient build() { + clientOptionsBuilder.environment(this.environment); + return new ApiClient(clientOptionsBuilder.build()); + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java b/flowvault/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java new file mode 100644 index 00000000..840c0bad --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java @@ -0,0 +1,37 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest; + +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.Suppliers; +import com.skyflow.generated.rest.resources.flowservice.AsyncFlowserviceClient; +import com.skyflow.generated.rest.resources.records.AsyncRecordsClient; + +import java.util.function.Supplier; + +public class AsyncApiClient { + protected final ClientOptions clientOptions; + + protected final Supplier recordsClient; + + protected final Supplier flowserviceClient; + + public AsyncApiClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + this.recordsClient = Suppliers.memoize(() -> new AsyncRecordsClient(clientOptions)); + this.flowserviceClient = Suppliers.memoize(() -> new AsyncFlowserviceClient(clientOptions)); + } + + public AsyncRecordsClient records() { + return this.recordsClient.get(); + } + + public AsyncFlowserviceClient flowservice() { + return this.flowserviceClient.get(); + } + + public static AsyncApiClientBuilder builder() { + return new AsyncApiClientBuilder(); + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/AsyncApiClientBuilder.java b/flowvault/src/main/java/com/skyflow/generated/rest/AsyncApiClientBuilder.java new file mode 100644 index 00000000..10c08d51 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/AsyncApiClientBuilder.java @@ -0,0 +1,48 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest; + +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.Environment; +import okhttp3.OkHttpClient; + +public final class AsyncApiClientBuilder { + private ClientOptions.Builder clientOptionsBuilder = ClientOptions.builder(); + + private Environment environment; + + public AsyncApiClientBuilder url(String url) { + this.environment = Environment.custom(url); + return this; + } + + /** + * Sets the timeout (in seconds) for the client. Defaults to 60 seconds. + */ + public AsyncApiClientBuilder timeout(int timeout) { + this.clientOptionsBuilder.timeout(timeout); + return this; + } + + /** + * Sets the maximum number of retries for the client. Defaults to 2 retries. + */ + public AsyncApiClientBuilder maxRetries(int maxRetries) { + this.clientOptionsBuilder.maxRetries(maxRetries); + return this; + } + + /** + * Sets the underlying OkHttp client + */ + public AsyncApiClientBuilder httpClient(OkHttpClient httpClient) { + this.clientOptionsBuilder.httpClient(httpClient); + return this; + } + + public AsyncApiClient build() { + clientOptionsBuilder.environment(this.environment); + return new AsyncApiClient(clientOptionsBuilder.build()); + } +} diff --git a/src/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java index 4fab1d41..be5247eb 100644 --- a/src/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java @@ -3,11 +3,12 @@ */ package com.skyflow.generated.rest.core; +import okhttp3.Response; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import okhttp3.Response; /** * This exception type will be thrown for any non-2XX API responses. diff --git a/src/main/java/com/skyflow/generated/rest/core/ApiClientException.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/ApiClientException.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/core/ApiClientException.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/ApiClientException.java diff --git a/src/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java index 9c81f1f5..c743352c 100644 --- a/src/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java @@ -3,11 +3,12 @@ */ package com.skyflow.generated.rest.core; +import okhttp3.Response; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import okhttp3.Response; public final class ApiClientHttpResponse { diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java new file mode 100644 index 00000000..2a5f0710 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java @@ -0,0 +1,171 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import okhttp3.OkHttpClient; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; + +public final class ClientOptions { + private final Environment environment; + + private final Map headers; + + private final Map> headerSuppliers; + + private final OkHttpClient httpClient; + + private final int timeout; + + private ClientOptions( + Environment environment, + Map headers, + Map> headerSuppliers, + OkHttpClient httpClient, + int timeout) { + this.environment = environment; + this.headers = new HashMap<>(); + this.headers.putAll(headers); + this.headers.putAll(new HashMap() { + { + put("X-Fern-Language", "JAVA"); + put("X-Fern-SDK-Name", "com.skyflow.fern:api-sdk"); + put("X-Fern-SDK-Version", "0.0.98"); + } + }); + this.headerSuppliers = headerSuppliers; + this.httpClient = httpClient; + this.timeout = timeout; + } + + public Environment environment() { + return this.environment; + } + + public Map headers(RequestOptions requestOptions) { + Map values = new HashMap<>(this.headers); + headerSuppliers.forEach((key, supplier) -> { + values.put(key, supplier.get()); + }); + if (requestOptions != null) { + values.putAll(requestOptions.getHeaders()); + } + return values; + } + + public int timeout(RequestOptions requestOptions) { + if (requestOptions == null) { + return this.timeout; + } + return requestOptions.getTimeout().orElse(this.timeout); + } + + public OkHttpClient httpClient() { + return this.httpClient; + } + + public OkHttpClient httpClientWithTimeout(RequestOptions requestOptions) { + if (requestOptions == null) { + return this.httpClient; + } + return this.httpClient + .newBuilder() + .callTimeout(requestOptions.getTimeout().get(), requestOptions.getTimeoutTimeUnit()) + .connectTimeout(0, TimeUnit.SECONDS) + .writeTimeout(0, TimeUnit.SECONDS) + .readTimeout(0, TimeUnit.SECONDS) + .build(); + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private Environment environment; + + private final Map headers = new HashMap<>(); + + private final Map> headerSuppliers = new HashMap<>(); + + private int maxRetries = 2; + + private Optional timeout = Optional.empty(); + + private OkHttpClient httpClient = null; + + public Builder environment(Environment environment) { + this.environment = environment; + return this; + } + + public Builder addHeader(String key, String value) { + this.headers.put(key, value); + return this; + } + + public Builder addHeader(String key, Supplier value) { + this.headerSuppliers.put(key, value); + return this; + } + + /** + * Override the timeout in seconds. Defaults to 60 seconds. + */ + public Builder timeout(int timeout) { + this.timeout = Optional.of(timeout); + return this; + } + + /** + * Override the timeout in seconds. Defaults to 60 seconds. + */ + public Builder timeout(Optional timeout) { + this.timeout = timeout; + return this; + } + + /** + * Override the maximum number of retries. Defaults to 2 retries. + */ + public Builder maxRetries(int maxRetries) { + this.maxRetries = maxRetries; + return this; + } + + public Builder httpClient(OkHttpClient httpClient) { + this.httpClient = httpClient; + return this; + } + + public ClientOptions build() { + OkHttpClient.Builder httpClientBuilder = + this.httpClient != null ? this.httpClient.newBuilder() : new OkHttpClient.Builder(); + + if (this.httpClient != null) { + timeout.ifPresent(timeout -> httpClientBuilder + .callTimeout(timeout, TimeUnit.SECONDS) + .connectTimeout(0, TimeUnit.SECONDS) + .writeTimeout(0, TimeUnit.SECONDS) + .readTimeout(0, TimeUnit.SECONDS)); + } else { + httpClientBuilder + .callTimeout(this.timeout.orElse(60), TimeUnit.SECONDS) + .connectTimeout(0, TimeUnit.SECONDS) + .writeTimeout(0, TimeUnit.SECONDS) + .readTimeout(0, TimeUnit.SECONDS) + .addInterceptor(new RetryInterceptor(this.maxRetries)); + } + + this.httpClient = httpClientBuilder.build(); + this.timeout = Optional.of(httpClient.callTimeoutMillis() / 1000); + + return new ClientOptions(environment, headers, headerSuppliers, httpClient, this.timeout.get()); + } + } +} diff --git a/src/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java index 6be10979..a0a6d7c4 100644 --- a/src/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.module.SimpleModule; + import java.io.IOException; import java.time.Instant; import java.time.LocalDateTime; diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/core/Environment.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/Environment.java new file mode 100644 index 00000000..2fc27c36 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/Environment.java @@ -0,0 +1,20 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +public final class Environment { + private final String url; + + private Environment(String url) { + this.url = url; + } + + public String getUrl() { + return this.url; + } + + public static Environment custom(String url) { + return new Environment(url); + } +} diff --git a/src/main/java/com/skyflow/generated/rest/core/FileStream.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/FileStream.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/core/FileStream.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/FileStream.java index 6b459431..2131b0a4 100644 --- a/src/main/java/com/skyflow/generated/rest/core/FileStream.java +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/FileStream.java @@ -3,12 +3,13 @@ */ package com.skyflow.generated.rest.core; -import java.io.InputStream; -import java.util.Objects; import okhttp3.MediaType; import okhttp3.RequestBody; import org.jetbrains.annotations.Nullable; +import java.io.InputStream; +import java.util.Objects; + /** * Represents a file stream with associated metadata for file uploads. */ diff --git a/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java index 545f6088..55c3c971 100644 --- a/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java @@ -3,9 +3,6 @@ */ package com.skyflow.generated.rest.core; -import java.io.IOException; -import java.io.InputStream; -import java.util.Objects; import okhttp3.MediaType; import okhttp3.RequestBody; import okhttp3.internal.Util; @@ -14,6 +11,10 @@ import okio.Source; import org.jetbrains.annotations.Nullable; +import java.io.IOException; +import java.io.InputStream; +import java.util.Objects; + /** * A custom implementation of OkHttp's RequestBody that wraps an InputStream. * This class allows streaming of data from an InputStream directly to an HTTP request body, diff --git a/src/main/java/com/skyflow/generated/rest/core/MediaTypes.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/MediaTypes.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/core/MediaTypes.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/MediaTypes.java diff --git a/src/main/java/com/skyflow/generated/rest/core/Nullable.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/Nullable.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/core/Nullable.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/Nullable.java diff --git a/src/main/java/com/skyflow/generated/rest/core/NullableNonemptyFilter.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/NullableNonemptyFilter.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/core/NullableNonemptyFilter.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/NullableNonemptyFilter.java diff --git a/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java index 3b7894e0..acec32b4 100644 --- a/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java @@ -10,6 +10,7 @@ import com.fasterxml.jackson.databind.json.JsonMapper; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + import java.io.IOException; public final class ObjectMappers { diff --git a/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java index e9e18fb9..c0687736 100644 --- a/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java @@ -7,14 +7,11 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; -import java.util.AbstractMap; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; import okhttp3.HttpUrl; import okhttp3.MultipartBody; +import java.util.*; + public class QueryStringMapper { private static final ObjectMapper MAPPER = ObjectMappers.JSON_MAPPER; diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/core/RequestOptions.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/RequestOptions.java new file mode 100644 index 00000000..b8a8d14b --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/RequestOptions.java @@ -0,0 +1,87 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; + +public final class RequestOptions { + private final Optional timeout; + + private final TimeUnit timeoutTimeUnit; + + private final Map headers; + + private final Map> headerSuppliers; + + private RequestOptions( + Optional timeout, + TimeUnit timeoutTimeUnit, + Map headers, + Map> headerSuppliers) { + this.timeout = timeout; + this.timeoutTimeUnit = timeoutTimeUnit; + this.headers = headers; + this.headerSuppliers = headerSuppliers; + } + + public Optional getTimeout() { + return timeout; + } + + public TimeUnit getTimeoutTimeUnit() { + return timeoutTimeUnit; + } + + public Map getHeaders() { + Map headers = new HashMap<>(); + headers.putAll(this.headers); + this.headerSuppliers.forEach((key, supplier) -> { + headers.put(key, supplier.get()); + }); + return headers; + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private Optional timeout = Optional.empty(); + + private TimeUnit timeoutTimeUnit = TimeUnit.SECONDS; + + private final Map headers = new HashMap<>(); + + private final Map> headerSuppliers = new HashMap<>(); + + public Builder timeout(Integer timeout) { + this.timeout = Optional.of(timeout); + return this; + } + + public Builder timeout(Integer timeout, TimeUnit timeoutTimeUnit) { + this.timeout = Optional.of(timeout); + this.timeoutTimeUnit = timeoutTimeUnit; + return this; + } + + public Builder addHeader(String key, String value) { + this.headers.put(key, value); + return this; + } + + public Builder addHeader(String key, Supplier value) { + this.headerSuppliers.put(key, value); + return this; + } + + public RequestOptions build() { + return new RequestOptions(timeout, timeoutTimeUnit, headers, headerSuppliers); + } + } +} diff --git a/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java index d8df7715..1bb0b5dc 100644 --- a/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java @@ -3,9 +3,10 @@ */ package com.skyflow.generated.rest.core; +import okhttp3.Response; + import java.io.FilterInputStream; import java.io.IOException; -import okhttp3.Response; /** * A custom InputStream that wraps the InputStream from the OkHttp Response and ensures that the diff --git a/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java index ed894407..e6c1a525 100644 --- a/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java @@ -3,9 +3,10 @@ */ package com.skyflow.generated.rest.core; +import okhttp3.Response; + import java.io.FilterReader; import java.io.IOException; -import okhttp3.Response; /** * A custom Reader that wraps the Reader from the OkHttp Response and ensures that the diff --git a/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java index eda7d265..7a28c3c9 100644 --- a/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java +++ b/flowvault/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java @@ -3,12 +3,13 @@ */ package com.skyflow.generated.rest.core; +import okhttp3.Interceptor; +import okhttp3.Response; + import java.io.IOException; import java.time.Duration; import java.util.Optional; import java.util.Random; -import okhttp3.Interceptor; -import okhttp3.Response; public class RetryInterceptor implements Interceptor { diff --git a/src/main/java/com/skyflow/generated/rest/core/Stream.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/Stream.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/core/Stream.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/Stream.java diff --git a/src/main/java/com/skyflow/generated/rest/core/Suppliers.java b/flowvault/src/main/java/com/skyflow/generated/rest/core/Suppliers.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/core/Suppliers.java rename to flowvault/src/main/java/com/skyflow/generated/rest/core/Suppliers.java diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/AsyncFlowserviceClient.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/AsyncFlowserviceClient.java new file mode 100644 index 00000000..1fd59fe9 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/AsyncFlowserviceClient.java @@ -0,0 +1,129 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice; + +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.resources.flowservice.requests.*; +import com.skyflow.generated.rest.types.*; + +import java.util.concurrent.CompletableFuture; + +public class AsyncFlowserviceClient { + protected final ClientOptions clientOptions; + + private final AsyncRawFlowserviceClient rawClient; + + public AsyncFlowserviceClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + this.rawClient = new AsyncRawFlowserviceClient(clientOptions); + } + + /** + * Get responses with HTTP metadata like headers + */ + public AsyncRawFlowserviceClient withRawResponse() { + return this.rawClient; + } + + public CompletableFuture delete() { + return this.rawClient.delete().thenApply(response -> response.body()); + } + + public CompletableFuture delete(V1DeleteRequest request) { + return this.rawClient.delete(request).thenApply(response -> response.body()); + } + + public CompletableFuture delete(V1DeleteRequest request, RequestOptions requestOptions) { + return this.rawClient.delete(request, requestOptions).thenApply(response -> response.body()); + } + + public CompletableFuture get() { + return this.rawClient.get().thenApply(response -> response.body()); + } + + public CompletableFuture get(V1GetRequest request) { + return this.rawClient.get(request).thenApply(response -> response.body()); + } + + public CompletableFuture get(V1GetRequest request, RequestOptions requestOptions) { + return this.rawClient.get(request, requestOptions).thenApply(response -> response.body()); + } + + public CompletableFuture insert() { + return this.rawClient.insert().thenApply(response -> response.body()); + } + + public CompletableFuture insert(V1InsertRequest request) { + return this.rawClient.insert(request).thenApply(response -> response.body()); + } + + public CompletableFuture insert(V1InsertRequest request, RequestOptions requestOptions) { + return this.rawClient.insert(request, requestOptions).thenApply(response -> response.body()); + } + + public CompletableFuture update() { + return this.rawClient.update().thenApply(response -> response.body()); + } + + public CompletableFuture update(V1UpdateRequest request) { + return this.rawClient.update(request).thenApply(response -> response.body()); + } + + public CompletableFuture update(V1UpdateRequest request, RequestOptions requestOptions) { + return this.rawClient.update(request, requestOptions).thenApply(response -> response.body()); + } + + public CompletableFuture deletetoken() { + return this.rawClient.deletetoken().thenApply(response -> response.body()); + } + + public CompletableFuture deletetoken(V1FlowDeleteTokenRequest request) { + return this.rawClient.deletetoken(request).thenApply(response -> response.body()); + } + + public CompletableFuture deletetoken( + V1FlowDeleteTokenRequest request, RequestOptions requestOptions) { + return this.rawClient.deletetoken(request, requestOptions).thenApply(response -> response.body()); + } + + public CompletableFuture detokenize() { + return this.rawClient.detokenize().thenApply(response -> response.body()); + } + + public CompletableFuture detokenize(V1FlowDetokenizeRequest request) { + return this.rawClient.detokenize(request).thenApply(response -> response.body()); + } + + public CompletableFuture detokenize( + V1FlowDetokenizeRequest request, RequestOptions requestOptions) { + return this.rawClient.detokenize(request, requestOptions).thenApply(response -> response.body()); + } + + public CompletableFuture tokenize() { + return this.rawClient.tokenize().thenApply(response -> response.body()); + } + + public CompletableFuture tokenize(V1FlowTokenizeRequest request) { + return this.rawClient.tokenize(request).thenApply(response -> response.body()); + } + + public CompletableFuture tokenize( + V1FlowTokenizeRequest request, RequestOptions requestOptions) { + return this.rawClient.tokenize(request, requestOptions).thenApply(response -> response.body()); + } + + public CompletableFuture flowvaultmetrics() { + return this.rawClient.flowvaultmetrics().thenApply(response -> response.body()); + } + + public CompletableFuture flowvaultmetrics(V1FlowVaultMetricsRequest request) { + return this.rawClient.flowvaultmetrics(request).thenApply(response -> response.body()); + } + + public CompletableFuture flowvaultmetrics( + V1FlowVaultMetricsRequest request, RequestOptions requestOptions) { + return this.rawClient.flowvaultmetrics(request, requestOptions).thenApply(response -> response.body()); + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/AsyncRawFlowserviceClient.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/AsyncRawFlowserviceClient.java new file mode 100644 index 00000000..17f85d0c --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/AsyncRawFlowserviceClient.java @@ -0,0 +1,533 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.resources.flowservice.requests.*; +import com.skyflow.generated.rest.types.*; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.CompletableFuture; + +public class AsyncRawFlowserviceClient { + protected final ClientOptions clientOptions; + + public AsyncRawFlowserviceClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + } + + public CompletableFuture> delete() { + return delete(V1DeleteRequest.builder().build()); + } + + public CompletableFuture> delete(V1DeleteRequest request) { + return delete(request, null); + } + + public CompletableFuture> delete( + V1DeleteRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/records/delete") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + CompletableFuture> future = new CompletableFuture<>(); + client.newCall(okhttpRequest).enqueue(new Callback() { + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + try (ResponseBody responseBody = response.body()) { + if (response.isSuccessful()) { + future.complete(new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1DeleteResponse.class), + response)); + return; + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + future.completeExceptionally(new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response)); + return; + } catch (IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + } + + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + }); + return future; + } + + public CompletableFuture> get() { + return get(V1GetRequest.builder().build()); + } + + public CompletableFuture> get(V1GetRequest request) { + return get(request, null); + } + + public CompletableFuture> get( + V1GetRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/records/get") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + CompletableFuture> future = new CompletableFuture<>(); + client.newCall(okhttpRequest).enqueue(new Callback() { + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + try (ResponseBody responseBody = response.body()) { + if (response.isSuccessful()) { + future.complete(new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1GetResponse.class), + response)); + return; + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + future.completeExceptionally(new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response)); + return; + } catch (IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + } + + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + }); + return future; + } + + public CompletableFuture> insert() { + return insert(V1InsertRequest.builder().build()); + } + + public CompletableFuture> insert(V1InsertRequest request) { + return insert(request, null); + } + + public CompletableFuture> insert( + V1InsertRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/records/insert") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + CompletableFuture> future = new CompletableFuture<>(); + client.newCall(okhttpRequest).enqueue(new Callback() { + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + try (ResponseBody responseBody = response.body()) { + if (response.isSuccessful()) { + future.complete(new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1InsertResponse.class), + response)); + return; + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + future.completeExceptionally(new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response)); + return; + } catch (IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + } + + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + }); + return future; + } + + public CompletableFuture> update() { + return update(V1UpdateRequest.builder().build()); + } + + public CompletableFuture> update(V1UpdateRequest request) { + return update(request, null); + } + + public CompletableFuture> update( + V1UpdateRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/records/update") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + CompletableFuture> future = new CompletableFuture<>(); + client.newCall(okhttpRequest).enqueue(new Callback() { + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + try (ResponseBody responseBody = response.body()) { + if (response.isSuccessful()) { + future.complete(new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1UpdateResponse.class), + response)); + return; + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + future.completeExceptionally(new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response)); + return; + } catch (IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + } + + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + }); + return future; + } + + public CompletableFuture> deletetoken() { + return deletetoken(V1FlowDeleteTokenRequest.builder().build()); + } + + public CompletableFuture> deletetoken( + V1FlowDeleteTokenRequest request) { + return deletetoken(request, null); + } + + public CompletableFuture> deletetoken( + V1FlowDeleteTokenRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/tokens/delete") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + CompletableFuture> future = new CompletableFuture<>(); + client.newCall(okhttpRequest).enqueue(new Callback() { + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + try (ResponseBody responseBody = response.body()) { + if (response.isSuccessful()) { + future.complete(new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue( + responseBody.string(), V1FlowDeleteTokenResponse.class), + response)); + return; + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + future.completeExceptionally(new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response)); + return; + } catch (IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + } + + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + }); + return future; + } + + public CompletableFuture> detokenize() { + return detokenize(V1FlowDetokenizeRequest.builder().build()); + } + + public CompletableFuture> detokenize( + V1FlowDetokenizeRequest request) { + return detokenize(request, null); + } + + public CompletableFuture> detokenize( + V1FlowDetokenizeRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/tokens/detokenize") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + CompletableFuture> future = new CompletableFuture<>(); + client.newCall(okhttpRequest).enqueue(new Callback() { + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + try (ResponseBody responseBody = response.body()) { + if (response.isSuccessful()) { + future.complete(new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue( + responseBody.string(), V1FlowDetokenizeResponse.class), + response)); + return; + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + future.completeExceptionally(new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response)); + return; + } catch (IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + } + + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + }); + return future; + } + + public CompletableFuture> tokenize() { + return tokenize(V1FlowTokenizeRequest.builder().build()); + } + + public CompletableFuture> tokenize(V1FlowTokenizeRequest request) { + return tokenize(request, null); + } + + public CompletableFuture> tokenize( + V1FlowTokenizeRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/tokens/tokenize") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + CompletableFuture> future = new CompletableFuture<>(); + client.newCall(okhttpRequest).enqueue(new Callback() { + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + try (ResponseBody responseBody = response.body()) { + if (response.isSuccessful()) { + future.complete(new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue( + responseBody.string(), V1FlowTokenizeResponse.class), + response)); + return; + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + future.completeExceptionally(new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response)); + return; + } catch (IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + } + + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + }); + return future; + } + + public CompletableFuture> flowvaultmetrics() { + return flowvaultmetrics(V1FlowVaultMetricsRequest.builder().build()); + } + + public CompletableFuture> flowvaultmetrics( + V1FlowVaultMetricsRequest request) { + return flowvaultmetrics(request, null); + } + + public CompletableFuture> flowvaultmetrics( + V1FlowVaultMetricsRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/vaults/metrics") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + CompletableFuture> future = new CompletableFuture<>(); + client.newCall(okhttpRequest).enqueue(new Callback() { + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + try (ResponseBody responseBody = response.body()) { + if (response.isSuccessful()) { + future.complete(new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue( + responseBody.string(), V1FlowVaultMetricsResponse.class), + response)); + return; + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + future.completeExceptionally(new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response)); + return; + } catch (IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + } + + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + }); + return future; + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/FlowserviceClient.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/FlowserviceClient.java new file mode 100644 index 00000000..8da9c9a5 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/FlowserviceClient.java @@ -0,0 +1,124 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice; + +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.resources.flowservice.requests.*; +import com.skyflow.generated.rest.types.*; + +public class FlowserviceClient { + protected final ClientOptions clientOptions; + + private final RawFlowserviceClient rawClient; + + public FlowserviceClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + this.rawClient = new RawFlowserviceClient(clientOptions); + } + + /** + * Get responses with HTTP metadata like headers + */ + public RawFlowserviceClient withRawResponse() { + return this.rawClient; + } + + public V1DeleteResponse delete() { + return this.rawClient.delete().body(); + } + + public V1DeleteResponse delete(V1DeleteRequest request) { + return this.rawClient.delete(request).body(); + } + + public V1DeleteResponse delete(V1DeleteRequest request, RequestOptions requestOptions) { + return this.rawClient.delete(request, requestOptions).body(); + } + + public V1GetResponse get() { + return this.rawClient.get().body(); + } + + public V1GetResponse get(V1GetRequest request) { + return this.rawClient.get(request).body(); + } + + public V1GetResponse get(V1GetRequest request, RequestOptions requestOptions) { + return this.rawClient.get(request, requestOptions).body(); + } + + public V1InsertResponse insert() { + return this.rawClient.insert().body(); + } + + public V1InsertResponse insert(V1InsertRequest request) { + return this.rawClient.insert(request).body(); + } + + public V1InsertResponse insert(V1InsertRequest request, RequestOptions requestOptions) { + return this.rawClient.insert(request, requestOptions).body(); + } + + public V1UpdateResponse update() { + return this.rawClient.update().body(); + } + + public V1UpdateResponse update(V1UpdateRequest request) { + return this.rawClient.update(request).body(); + } + + public V1UpdateResponse update(V1UpdateRequest request, RequestOptions requestOptions) { + return this.rawClient.update(request, requestOptions).body(); + } + + public V1FlowDeleteTokenResponse deletetoken() { + return this.rawClient.deletetoken().body(); + } + + public V1FlowDeleteTokenResponse deletetoken(V1FlowDeleteTokenRequest request) { + return this.rawClient.deletetoken(request).body(); + } + + public V1FlowDeleteTokenResponse deletetoken(V1FlowDeleteTokenRequest request, RequestOptions requestOptions) { + return this.rawClient.deletetoken(request, requestOptions).body(); + } + + public V1FlowDetokenizeResponse detokenize() { + return this.rawClient.detokenize().body(); + } + + public V1FlowDetokenizeResponse detokenize(V1FlowDetokenizeRequest request) { + return this.rawClient.detokenize(request).body(); + } + + public V1FlowDetokenizeResponse detokenize(V1FlowDetokenizeRequest request, RequestOptions requestOptions) { + return this.rawClient.detokenize(request, requestOptions).body(); + } + + public V1FlowTokenizeResponse tokenize() { + return this.rawClient.tokenize().body(); + } + + public V1FlowTokenizeResponse tokenize(V1FlowTokenizeRequest request) { + return this.rawClient.tokenize(request).body(); + } + + public V1FlowTokenizeResponse tokenize(V1FlowTokenizeRequest request, RequestOptions requestOptions) { + return this.rawClient.tokenize(request, requestOptions).body(); + } + + public V1FlowVaultMetricsResponse flowvaultmetrics() { + return this.rawClient.flowvaultmetrics().body(); + } + + public V1FlowVaultMetricsResponse flowvaultmetrics(V1FlowVaultMetricsRequest request) { + return this.rawClient.flowvaultmetrics(request).body(); + } + + public V1FlowVaultMetricsResponse flowvaultmetrics( + V1FlowVaultMetricsRequest request, RequestOptions requestOptions) { + return this.rawClient.flowvaultmetrics(request, requestOptions).body(); + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/RawFlowserviceClient.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/RawFlowserviceClient.java new file mode 100644 index 00000000..f1203085 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/RawFlowserviceClient.java @@ -0,0 +1,412 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.resources.flowservice.requests.*; +import com.skyflow.generated.rest.types.*; +import okhttp3.*; + +import java.io.IOException; + +public class RawFlowserviceClient { + protected final ClientOptions clientOptions; + + public RawFlowserviceClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + } + + public ApiClientHttpResponse delete() { + return delete(V1DeleteRequest.builder().build()); + } + + public ApiClientHttpResponse delete(V1DeleteRequest request) { + return delete(request, null); + } + + public ApiClientHttpResponse delete(V1DeleteRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/records/delete") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + try (Response response = client.newCall(okhttpRequest).execute()) { + ResponseBody responseBody = response.body(); + if (response.isSuccessful()) { + return new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1DeleteResponse.class), response); + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + throw new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response); + } catch (IOException e) { + throw new ApiClientException("Network error executing HTTP request", e); + } + } + + public ApiClientHttpResponse get() { + return get(V1GetRequest.builder().build()); + } + + public ApiClientHttpResponse get(V1GetRequest request) { + return get(request, null); + } + + public ApiClientHttpResponse get(V1GetRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/records/get") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + try (Response response = client.newCall(okhttpRequest).execute()) { + ResponseBody responseBody = response.body(); + if (response.isSuccessful()) { + return new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1GetResponse.class), response); + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + throw new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response); + } catch (IOException e) { + throw new ApiClientException("Network error executing HTTP request", e); + } + } + + public ApiClientHttpResponse insert() { + return insert(V1InsertRequest.builder().build()); + } + + public ApiClientHttpResponse insert(V1InsertRequest request) { + return insert(request, null); + } + + public ApiClientHttpResponse insert(V1InsertRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/records/insert") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + try (Response response = client.newCall(okhttpRequest).execute()) { + ResponseBody responseBody = response.body(); + if (response.isSuccessful()) { + return new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1InsertResponse.class), response); + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + throw new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response); + } catch (IOException e) { + throw new ApiClientException("Network error executing HTTP request", e); + } + } + + public ApiClientHttpResponse update() { + return update(V1UpdateRequest.builder().build()); + } + + public ApiClientHttpResponse update(V1UpdateRequest request) { + return update(request, null); + } + + public ApiClientHttpResponse update(V1UpdateRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/records/update") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + try (Response response = client.newCall(okhttpRequest).execute()) { + ResponseBody responseBody = response.body(); + if (response.isSuccessful()) { + return new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1UpdateResponse.class), response); + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + throw new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response); + } catch (IOException e) { + throw new ApiClientException("Network error executing HTTP request", e); + } + } + + public ApiClientHttpResponse deletetoken() { + return deletetoken(V1FlowDeleteTokenRequest.builder().build()); + } + + public ApiClientHttpResponse deletetoken(V1FlowDeleteTokenRequest request) { + return deletetoken(request, null); + } + + public ApiClientHttpResponse deletetoken( + V1FlowDeleteTokenRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/tokens/delete") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + try (Response response = client.newCall(okhttpRequest).execute()) { + ResponseBody responseBody = response.body(); + if (response.isSuccessful()) { + return new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1FlowDeleteTokenResponse.class), + response); + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + throw new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response); + } catch (IOException e) { + throw new ApiClientException("Network error executing HTTP request", e); + } + } + + public ApiClientHttpResponse detokenize() { + return detokenize(V1FlowDetokenizeRequest.builder().build()); + } + + public ApiClientHttpResponse detokenize(V1FlowDetokenizeRequest request) { + return detokenize(request, null); + } + + public ApiClientHttpResponse detokenize( + V1FlowDetokenizeRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/tokens/detokenize") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + try (Response response = client.newCall(okhttpRequest).execute()) { + ResponseBody responseBody = response.body(); + if (response.isSuccessful()) { + return new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1FlowDetokenizeResponse.class), + response); + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + throw new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response); + } catch (IOException e) { + throw new ApiClientException("Network error executing HTTP request", e); + } + } + + public ApiClientHttpResponse tokenize() { + return tokenize(V1FlowTokenizeRequest.builder().build()); + } + + public ApiClientHttpResponse tokenize(V1FlowTokenizeRequest request) { + return tokenize(request, null); + } + + public ApiClientHttpResponse tokenize( + V1FlowTokenizeRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/tokens/tokenize") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + try (Response response = client.newCall(okhttpRequest).execute()) { + ResponseBody responseBody = response.body(); + if (response.isSuccessful()) { + return new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1FlowTokenizeResponse.class), + response); + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + throw new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response); + } catch (IOException e) { + throw new ApiClientException("Network error executing HTTP request", e); + } + } + + public ApiClientHttpResponse flowvaultmetrics() { + return flowvaultmetrics(V1FlowVaultMetricsRequest.builder().build()); + } + + public ApiClientHttpResponse flowvaultmetrics(V1FlowVaultMetricsRequest request) { + return flowvaultmetrics(request, null); + } + + public ApiClientHttpResponse flowvaultmetrics( + V1FlowVaultMetricsRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/vaults/metrics") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + try (Response response = client.newCall(okhttpRequest).execute()) { + ResponseBody responseBody = response.body(); + if (response.isSuccessful()) { + return new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1FlowVaultMetricsResponse.class), + response); + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + throw new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response); + } catch (IOException e) { + throw new ApiClientException("Network error executing HTTP request", e); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1DeleteRequest.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1DeleteRequest.java new file mode 100644 index 00000000..27e22a8d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1DeleteRequest.java @@ -0,0 +1,186 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice.requests; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.types.V1UniqueValue; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1DeleteRequest.Builder.class) +public final class V1DeleteRequest { + private final Optional vaultId; + + private final Optional tableName; + + private final Optional> skyflowIDs; + + private final Optional> uniqueValues; + + private final Map additionalProperties; + + private V1DeleteRequest( + Optional vaultId, + Optional tableName, + Optional> skyflowIDs, + Optional> uniqueValues, + Map additionalProperties) { + this.vaultId = vaultId; + this.tableName = tableName; + this.skyflowIDs = skyflowIDs; + this.uniqueValues = uniqueValues; + this.additionalProperties = additionalProperties; + } + + /** + * @return ID of the vault where data is being deleted + */ + @JsonProperty("vaultID") + public Optional getVaultId() { + return vaultId; + } + + /** + * @return Name of the table where data is being deleted + */ + @JsonProperty("tableName") + public Optional getTableName() { + return tableName; + } + + /** + * @return Skyflow ID for the record to be deleted + */ + @JsonProperty("skyflowIDs") + public Optional> getSkyflowIDs() { + return skyflowIDs; + } + + /** + * @return List of unique constraint values to query records by data + */ + @JsonProperty("uniqueValues") + public Optional> getUniqueValues() { + return uniqueValues; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1DeleteRequest && equalTo((V1DeleteRequest) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1DeleteRequest other) { + return vaultId.equals(other.vaultId) + && tableName.equals(other.tableName) + && skyflowIDs.equals(other.skyflowIDs) + && uniqueValues.equals(other.uniqueValues); + } + + @Override + public int hashCode() { + return Objects.hash(this.vaultId, this.tableName, this.skyflowIDs, this.uniqueValues); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional vaultId = Optional.empty(); + + private Optional tableName = Optional.empty(); + + private Optional> skyflowIDs = Optional.empty(); + + private Optional> uniqueValues = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1DeleteRequest other) { + vaultId(other.getVaultId()); + tableName(other.getTableName()); + skyflowIDs(other.getSkyflowIDs()); + uniqueValues(other.getUniqueValues()); + return this; + } + + /** + *

ID of the vault where data is being deleted

+ */ + @JsonSetter(value = "vaultID", nulls = Nulls.SKIP) + public Builder vaultId(Optional vaultId) { + this.vaultId = vaultId; + return this; + } + + public Builder vaultId(String vaultId) { + this.vaultId = Optional.ofNullable(vaultId); + return this; + } + + /** + *

Name of the table where data is being deleted

+ */ + @JsonSetter(value = "tableName", nulls = Nulls.SKIP) + public Builder tableName(Optional tableName) { + this.tableName = tableName; + return this; + } + + public Builder tableName(String tableName) { + this.tableName = Optional.ofNullable(tableName); + return this; + } + + /** + *

Skyflow ID for the record to be deleted

+ */ + @JsonSetter(value = "skyflowIDs", nulls = Nulls.SKIP) + public Builder skyflowIDs(Optional> skyflowIDs) { + this.skyflowIDs = skyflowIDs; + return this; + } + + public Builder skyflowIDs(List skyflowIDs) { + this.skyflowIDs = Optional.ofNullable(skyflowIDs); + return this; + } + + /** + *

List of unique constraint values to query records by data

+ */ + @JsonSetter(value = "uniqueValues", nulls = Nulls.SKIP) + public Builder uniqueValues(Optional> uniqueValues) { + this.uniqueValues = uniqueValues; + return this; + } + + public Builder uniqueValues(List uniqueValues) { + this.uniqueValues = Optional.ofNullable(uniqueValues); + return this; + } + + public V1DeleteRequest build() { + return new V1DeleteRequest(vaultId, tableName, skyflowIDs, uniqueValues, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowDeleteTokenRequest.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowDeleteTokenRequest.java new file mode 100644 index 00000000..6bc8a4e6 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowDeleteTokenRequest.java @@ -0,0 +1,122 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice.requests; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowDeleteTokenRequest.Builder.class) +public final class V1FlowDeleteTokenRequest { + private final Optional vaultId; + + private final Optional> tokens; + + private final Map additionalProperties; + + private V1FlowDeleteTokenRequest( + Optional vaultId, Optional> tokens, Map additionalProperties) { + this.vaultId = vaultId; + this.tokens = tokens; + this.additionalProperties = additionalProperties; + } + + /** + * @return Vault ID + */ + @JsonProperty("vaultID") + public Optional getVaultId() { + return vaultId; + } + + /** + * @return Token value + */ + @JsonProperty("tokens") + public Optional> getTokens() { + return tokens; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowDeleteTokenRequest && equalTo((V1FlowDeleteTokenRequest) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowDeleteTokenRequest other) { + return vaultId.equals(other.vaultId) && tokens.equals(other.tokens); + } + + @Override + public int hashCode() { + return Objects.hash(this.vaultId, this.tokens); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional vaultId = Optional.empty(); + + private Optional> tokens = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowDeleteTokenRequest other) { + vaultId(other.getVaultId()); + tokens(other.getTokens()); + return this; + } + + /** + *

Vault ID

+ */ + @JsonSetter(value = "vaultID", nulls = Nulls.SKIP) + public Builder vaultId(Optional vaultId) { + this.vaultId = vaultId; + return this; + } + + public Builder vaultId(String vaultId) { + this.vaultId = Optional.ofNullable(vaultId); + return this; + } + + /** + *

Token value

+ */ + @JsonSetter(value = "tokens", nulls = Nulls.SKIP) + public Builder tokens(Optional> tokens) { + this.tokens = tokens; + return this; + } + + public Builder tokens(List tokens) { + this.tokens = Optional.ofNullable(tokens); + return this; + } + + public V1FlowDeleteTokenRequest build() { + return new V1FlowDeleteTokenRequest(vaultId, tokens, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowDetokenizeRequest.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowDetokenizeRequest.java new file mode 100644 index 00000000..bdbe3bf2 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowDetokenizeRequest.java @@ -0,0 +1,156 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice.requests; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.types.V1TokenGroupRedactions; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowDetokenizeRequest.Builder.class) +public final class V1FlowDetokenizeRequest { + private final Optional vaultId; + + private final Optional> tokens; + + private final Optional> tokenGroupRedactions; + + private final Map additionalProperties; + + private V1FlowDetokenizeRequest( + Optional vaultId, + Optional> tokens, + Optional> tokenGroupRedactions, + Map additionalProperties) { + this.vaultId = vaultId; + this.tokens = tokens; + this.tokenGroupRedactions = tokenGroupRedactions; + this.additionalProperties = additionalProperties; + } + + /** + * @return ID of the vault where detokenizing + */ + @JsonProperty("vaultID") + public Optional getVaultId() { + return vaultId; + } + + /** + * @return Token to be detokenized + */ + @JsonProperty("tokens") + public Optional> getTokens() { + return tokens; + } + + /** + * @return List of token groups to be redacted. + */ + @JsonProperty("tokenGroupRedactions") + public Optional> getTokenGroupRedactions() { + return tokenGroupRedactions; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowDetokenizeRequest && equalTo((V1FlowDetokenizeRequest) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowDetokenizeRequest other) { + return vaultId.equals(other.vaultId) + && tokens.equals(other.tokens) + && tokenGroupRedactions.equals(other.tokenGroupRedactions); + } + + @Override + public int hashCode() { + return Objects.hash(this.vaultId, this.tokens, this.tokenGroupRedactions); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional vaultId = Optional.empty(); + + private Optional> tokens = Optional.empty(); + + private Optional> tokenGroupRedactions = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowDetokenizeRequest other) { + vaultId(other.getVaultId()); + tokens(other.getTokens()); + tokenGroupRedactions(other.getTokenGroupRedactions()); + return this; + } + + /** + *

ID of the vault where detokenizing

+ */ + @JsonSetter(value = "vaultID", nulls = Nulls.SKIP) + public Builder vaultId(Optional vaultId) { + this.vaultId = vaultId; + return this; + } + + public Builder vaultId(String vaultId) { + this.vaultId = Optional.ofNullable(vaultId); + return this; + } + + /** + *

Token to be detokenized

+ */ + @JsonSetter(value = "tokens", nulls = Nulls.SKIP) + public Builder tokens(Optional> tokens) { + this.tokens = tokens; + return this; + } + + public Builder tokens(List tokens) { + this.tokens = Optional.ofNullable(tokens); + return this; + } + + /** + *

List of token groups to be redacted.

+ */ + @JsonSetter(value = "tokenGroupRedactions", nulls = Nulls.SKIP) + public Builder tokenGroupRedactions(Optional> tokenGroupRedactions) { + this.tokenGroupRedactions = tokenGroupRedactions; + return this; + } + + public Builder tokenGroupRedactions(List tokenGroupRedactions) { + this.tokenGroupRedactions = Optional.ofNullable(tokenGroupRedactions); + return this; + } + + public V1FlowDetokenizeRequest build() { + return new V1FlowDetokenizeRequest(vaultId, tokens, tokenGroupRedactions, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowTokenizeRequest.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowTokenizeRequest.java new file mode 100644 index 00000000..a27d7b62 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowTokenizeRequest.java @@ -0,0 +1,125 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice.requests; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowTokenizeRequest.Builder.class) +public final class V1FlowTokenizeRequest { + private final Optional vaultId; + + private final Optional> data; + + private final Map additionalProperties; + + private V1FlowTokenizeRequest( + Optional vaultId, + Optional> data, + Map additionalProperties) { + this.vaultId = vaultId; + this.data = data; + this.additionalProperties = additionalProperties; + } + + /** + * @return Vault ID. + */ + @JsonProperty("vaultID") + public Optional getVaultId() { + return vaultId; + } + + /** + * @return Data to be tokenized + */ + @JsonProperty("data") + public Optional> getData() { + return data; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowTokenizeRequest && equalTo((V1FlowTokenizeRequest) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowTokenizeRequest other) { + return vaultId.equals(other.vaultId) && data.equals(other.data); + } + + @Override + public int hashCode() { + return Objects.hash(this.vaultId, this.data); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional vaultId = Optional.empty(); + + private Optional> data = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowTokenizeRequest other) { + vaultId(other.getVaultId()); + data(other.getData()); + return this; + } + + /** + *

Vault ID.

+ */ + @JsonSetter(value = "vaultID", nulls = Nulls.SKIP) + public Builder vaultId(Optional vaultId) { + this.vaultId = vaultId; + return this; + } + + public Builder vaultId(String vaultId) { + this.vaultId = Optional.ofNullable(vaultId); + return this; + } + + /** + *

Data to be tokenized

+ */ + @JsonSetter(value = "data", nulls = Nulls.SKIP) + public Builder data(Optional> data) { + this.data = data; + return this; + } + + public Builder data(List data) { + this.data = Optional.ofNullable(data); + return this; + } + + public V1FlowTokenizeRequest build() { + return new V1FlowTokenizeRequest(vaultId, data, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowVaultMetricsRequest.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowVaultMetricsRequest.java new file mode 100644 index 00000000..026d2d30 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1FlowVaultMetricsRequest.java @@ -0,0 +1,96 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice.requests; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowVaultMetricsRequest.Builder.class) +public final class V1FlowVaultMetricsRequest { + private final Optional vaultId; + + private final Map additionalProperties; + + private V1FlowVaultMetricsRequest(Optional vaultId, Map additionalProperties) { + this.vaultId = vaultId; + this.additionalProperties = additionalProperties; + } + + /** + * @return ID of the vault to get metrics for + */ + @JsonProperty("vaultID") + public Optional getVaultId() { + return vaultId; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowVaultMetricsRequest && equalTo((V1FlowVaultMetricsRequest) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowVaultMetricsRequest other) { + return vaultId.equals(other.vaultId); + } + + @Override + public int hashCode() { + return Objects.hash(this.vaultId); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional vaultId = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowVaultMetricsRequest other) { + vaultId(other.getVaultId()); + return this; + } + + /** + *

ID of the vault to get metrics for

+ */ + @JsonSetter(value = "vaultID", nulls = Nulls.SKIP) + public Builder vaultId(Optional vaultId) { + this.vaultId = vaultId; + return this; + } + + public Builder vaultId(String vaultId) { + this.vaultId = Optional.ofNullable(vaultId); + return this; + } + + public V1FlowVaultMetricsRequest build() { + return new V1FlowVaultMetricsRequest(vaultId, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1GetRequest.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1GetRequest.java new file mode 100644 index 00000000..415f5291 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1GetRequest.java @@ -0,0 +1,357 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice.requests; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.types.V1ColumnRedactions; +import com.skyflow.generated.rest.types.V1GetRequestData; +import com.skyflow.generated.rest.types.V1UniqueValue; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1GetRequest.Builder.class) +public final class V1GetRequest { + private final Optional vaultId; + + private final Optional tableName; + + private final Optional> skyflowIDs; + + private final Optional> columnRedactions; + + private final Optional> columns; + + private final Optional limit; + + private final Optional offset; + + private final Optional> uniqueValues; + + private final Optional> records; + + private final Map additionalProperties; + + private V1GetRequest( + Optional vaultId, + Optional tableName, + Optional> skyflowIDs, + Optional> columnRedactions, + Optional> columns, + Optional limit, + Optional offset, + Optional> uniqueValues, + Optional> records, + Map additionalProperties) { + this.vaultId = vaultId; + this.tableName = tableName; + this.skyflowIDs = skyflowIDs; + this.columnRedactions = columnRedactions; + this.columns = columns; + this.limit = limit; + this.offset = offset; + this.uniqueValues = uniqueValues; + this.records = records; + this.additionalProperties = additionalProperties; + } + + /** + * @return ID of the vault where data is being fetched + */ + @JsonProperty("vaultID") + public Optional getVaultId() { + return vaultId; + } + + /** + * @return Name of the table where data is being fetched + */ + @JsonProperty("tableName") + public Optional getTableName() { + return tableName; + } + + /** + * @return Skyflow ID for the record to be fetched + */ + @JsonProperty("skyflowIDs") + public Optional> getSkyflowIDs() { + return skyflowIDs; + } + + /** + * @return List of columns to be redacted. + */ + @JsonProperty("columnRedactions") + public Optional> getColumnRedactions() { + return columnRedactions; + } + + /** + * @return List of columns to be fetched. + */ + @JsonProperty("columns") + public Optional> getColumns() { + return columns; + } + + /** + * @return Limit for the number of records to be fetched + */ + @JsonProperty("limit") + public Optional getLimit() { + return limit; + } + + /** + * @return Offset for the number of records to be fetched + */ + @JsonProperty("offset") + public Optional getOffset() { + return offset; + } + + /** + * @return List of unique constraint values to query records by data + */ + @JsonProperty("uniqueValues") + public Optional> getUniqueValues() { + return uniqueValues; + } + + /** + * @return List of records to be fetched. This field contains tableName and skyflowIDs belonging to the table. + */ + @JsonProperty("records") + public Optional> getRecords() { + return records; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1GetRequest && equalTo((V1GetRequest) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1GetRequest other) { + return vaultId.equals(other.vaultId) + && tableName.equals(other.tableName) + && skyflowIDs.equals(other.skyflowIDs) + && columnRedactions.equals(other.columnRedactions) + && columns.equals(other.columns) + && limit.equals(other.limit) + && offset.equals(other.offset) + && uniqueValues.equals(other.uniqueValues) + && records.equals(other.records); + } + + @Override + public int hashCode() { + return Objects.hash( + this.vaultId, + this.tableName, + this.skyflowIDs, + this.columnRedactions, + this.columns, + this.limit, + this.offset, + this.uniqueValues, + this.records); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional vaultId = Optional.empty(); + + private Optional tableName = Optional.empty(); + + private Optional> skyflowIDs = Optional.empty(); + + private Optional> columnRedactions = Optional.empty(); + + private Optional> columns = Optional.empty(); + + private Optional limit = Optional.empty(); + + private Optional offset = Optional.empty(); + + private Optional> uniqueValues = Optional.empty(); + + private Optional> records = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1GetRequest other) { + vaultId(other.getVaultId()); + tableName(other.getTableName()); + skyflowIDs(other.getSkyflowIDs()); + columnRedactions(other.getColumnRedactions()); + columns(other.getColumns()); + limit(other.getLimit()); + offset(other.getOffset()); + uniqueValues(other.getUniqueValues()); + records(other.getRecords()); + return this; + } + + /** + *

ID of the vault where data is being fetched

+ */ + @JsonSetter(value = "vaultID", nulls = Nulls.SKIP) + public Builder vaultId(Optional vaultId) { + this.vaultId = vaultId; + return this; + } + + public Builder vaultId(String vaultId) { + this.vaultId = Optional.ofNullable(vaultId); + return this; + } + + /** + *

Name of the table where data is being fetched

+ */ + @JsonSetter(value = "tableName", nulls = Nulls.SKIP) + public Builder tableName(Optional tableName) { + this.tableName = tableName; + return this; + } + + public Builder tableName(String tableName) { + this.tableName = Optional.ofNullable(tableName); + return this; + } + + /** + *

Skyflow ID for the record to be fetched

+ */ + @JsonSetter(value = "skyflowIDs", nulls = Nulls.SKIP) + public Builder skyflowIDs(Optional> skyflowIDs) { + this.skyflowIDs = skyflowIDs; + return this; + } + + public Builder skyflowIDs(List skyflowIDs) { + this.skyflowIDs = Optional.ofNullable(skyflowIDs); + return this; + } + + /** + *

List of columns to be redacted.

+ */ + @JsonSetter(value = "columnRedactions", nulls = Nulls.SKIP) + public Builder columnRedactions(Optional> columnRedactions) { + this.columnRedactions = columnRedactions; + return this; + } + + public Builder columnRedactions(List columnRedactions) { + this.columnRedactions = Optional.ofNullable(columnRedactions); + return this; + } + + /** + *

List of columns to be fetched.

+ */ + @JsonSetter(value = "columns", nulls = Nulls.SKIP) + public Builder columns(Optional> columns) { + this.columns = columns; + return this; + } + + public Builder columns(List columns) { + this.columns = Optional.ofNullable(columns); + return this; + } + + /** + *

Limit for the number of records to be fetched

+ */ + @JsonSetter(value = "limit", nulls = Nulls.SKIP) + public Builder limit(Optional limit) { + this.limit = limit; + return this; + } + + public Builder limit(Integer limit) { + this.limit = Optional.ofNullable(limit); + return this; + } + + /** + *

Offset for the number of records to be fetched

+ */ + @JsonSetter(value = "offset", nulls = Nulls.SKIP) + public Builder offset(Optional offset) { + this.offset = offset; + return this; + } + + public Builder offset(Integer offset) { + this.offset = Optional.ofNullable(offset); + return this; + } + + /** + *

List of unique constraint values to query records by data

+ */ + @JsonSetter(value = "uniqueValues", nulls = Nulls.SKIP) + public Builder uniqueValues(Optional> uniqueValues) { + this.uniqueValues = uniqueValues; + return this; + } + + public Builder uniqueValues(List uniqueValues) { + this.uniqueValues = Optional.ofNullable(uniqueValues); + return this; + } + + /** + *

List of records to be fetched. This field contains tableName and skyflowIDs belonging to the table.

+ */ + @JsonSetter(value = "records", nulls = Nulls.SKIP) + public Builder records(Optional> records) { + this.records = records; + return this; + } + + public Builder records(List records) { + this.records = Optional.ofNullable(records); + return this; + } + + public V1GetRequest build() { + return new V1GetRequest( + vaultId, + tableName, + skyflowIDs, + columnRedactions, + columns, + limit, + offset, + uniqueValues, + records, + additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1InsertRequest.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1InsertRequest.java new file mode 100644 index 00000000..47a58cb2 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1InsertRequest.java @@ -0,0 +1,181 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice.requests; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.types.V1InsertRecordData; +import com.skyflow.generated.rest.types.V1Upsert; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1InsertRequest.Builder.class) +public final class V1InsertRequest { + private final Optional vaultId; + + private final Optional tableName; + + private final Optional> records; + + private final Optional upsert; + + private final Map additionalProperties; + + private V1InsertRequest( + Optional vaultId, + Optional tableName, + Optional> records, + Optional upsert, + Map additionalProperties) { + this.vaultId = vaultId; + this.tableName = tableName; + this.records = records; + this.upsert = upsert; + this.additionalProperties = additionalProperties; + } + + /** + * @return ID of the vault where data is being inserted + */ + @JsonProperty("vaultID") + public Optional getVaultId() { + return vaultId; + } + + /** + * @return Name of the table where data is being inserted + */ + @JsonProperty("tableName") + public Optional getTableName() { + return tableName; + } + + /** + * @return List of data row wise that is to be inserted in the vault + */ + @JsonProperty("records") + public Optional> getRecords() { + return records; + } + + @JsonProperty("upsert") + public Optional getUpsert() { + return upsert; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1InsertRequest && equalTo((V1InsertRequest) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1InsertRequest other) { + return vaultId.equals(other.vaultId) + && tableName.equals(other.tableName) + && records.equals(other.records) + && upsert.equals(other.upsert); + } + + @Override + public int hashCode() { + return Objects.hash(this.vaultId, this.tableName, this.records, this.upsert); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional vaultId = Optional.empty(); + + private Optional tableName = Optional.empty(); + + private Optional> records = Optional.empty(); + + private Optional upsert = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1InsertRequest other) { + vaultId(other.getVaultId()); + tableName(other.getTableName()); + records(other.getRecords()); + upsert(other.getUpsert()); + return this; + } + + /** + *

ID of the vault where data is being inserted

+ */ + @JsonSetter(value = "vaultID", nulls = Nulls.SKIP) + public Builder vaultId(Optional vaultId) { + this.vaultId = vaultId; + return this; + } + + public Builder vaultId(String vaultId) { + this.vaultId = Optional.ofNullable(vaultId); + return this; + } + + /** + *

Name of the table where data is being inserted

+ */ + @JsonSetter(value = "tableName", nulls = Nulls.SKIP) + public Builder tableName(Optional tableName) { + this.tableName = tableName; + return this; + } + + public Builder tableName(String tableName) { + this.tableName = Optional.ofNullable(tableName); + return this; + } + + /** + *

List of data row wise that is to be inserted in the vault

+ */ + @JsonSetter(value = "records", nulls = Nulls.SKIP) + public Builder records(Optional> records) { + this.records = records; + return this; + } + + public Builder records(List records) { + this.records = Optional.ofNullable(records); + return this; + } + + @JsonSetter(value = "upsert", nulls = Nulls.SKIP) + public Builder upsert(Optional upsert) { + this.upsert = upsert; + return this; + } + + public Builder upsert(V1Upsert upsert) { + this.upsert = Optional.ofNullable(upsert); + return this; + } + + public V1InsertRequest build() { + return new V1InsertRequest(vaultId, tableName, records, upsert, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1UpdateRequest.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1UpdateRequest.java new file mode 100644 index 00000000..6f8b303e --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/flowservice/requests/V1UpdateRequest.java @@ -0,0 +1,181 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.flowservice.requests; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.types.FlowEnumUpdateType; +import com.skyflow.generated.rest.types.V1UpdateRecordData; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1UpdateRequest.Builder.class) +public final class V1UpdateRequest { + private final Optional vaultId; + + private final Optional tableName; + + private final Optional> records; + + private final Optional updateType; + + private final Map additionalProperties; + + private V1UpdateRequest( + Optional vaultId, + Optional tableName, + Optional> records, + Optional updateType, + Map additionalProperties) { + this.vaultId = vaultId; + this.tableName = tableName; + this.records = records; + this.updateType = updateType; + this.additionalProperties = additionalProperties; + } + + /** + * @return ID of the vault where data is being updated + */ + @JsonProperty("vaultID") + public Optional getVaultId() { + return vaultId; + } + + /** + * @return Name of the table where data is being updated + */ + @JsonProperty("tableName") + public Optional getTableName() { + return tableName; + } + + /** + * @return List of data row wise that is to be updated in the vault + */ + @JsonProperty("records") + public Optional> getRecords() { + return records; + } + + @JsonProperty("updateType") + public Optional getUpdateType() { + return updateType; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1UpdateRequest && equalTo((V1UpdateRequest) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1UpdateRequest other) { + return vaultId.equals(other.vaultId) + && tableName.equals(other.tableName) + && records.equals(other.records) + && updateType.equals(other.updateType); + } + + @Override + public int hashCode() { + return Objects.hash(this.vaultId, this.tableName, this.records, this.updateType); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional vaultId = Optional.empty(); + + private Optional tableName = Optional.empty(); + + private Optional> records = Optional.empty(); + + private Optional updateType = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1UpdateRequest other) { + vaultId(other.getVaultId()); + tableName(other.getTableName()); + records(other.getRecords()); + updateType(other.getUpdateType()); + return this; + } + + /** + *

ID of the vault where data is being updated

+ */ + @JsonSetter(value = "vaultID", nulls = Nulls.SKIP) + public Builder vaultId(Optional vaultId) { + this.vaultId = vaultId; + return this; + } + + public Builder vaultId(String vaultId) { + this.vaultId = Optional.ofNullable(vaultId); + return this; + } + + /** + *

Name of the table where data is being updated

+ */ + @JsonSetter(value = "tableName", nulls = Nulls.SKIP) + public Builder tableName(Optional tableName) { + this.tableName = tableName; + return this; + } + + public Builder tableName(String tableName) { + this.tableName = Optional.ofNullable(tableName); + return this; + } + + /** + *

List of data row wise that is to be updated in the vault

+ */ + @JsonSetter(value = "records", nulls = Nulls.SKIP) + public Builder records(Optional> records) { + this.records = records; + return this; + } + + public Builder records(List records) { + this.records = Optional.ofNullable(records); + return this; + } + + @JsonSetter(value = "updateType", nulls = Nulls.SKIP) + public Builder updateType(Optional updateType) { + this.updateType = updateType; + return this; + } + + public Builder updateType(FlowEnumUpdateType updateType) { + this.updateType = Optional.ofNullable(updateType); + return this; + } + + public V1UpdateRequest build() { + return new V1UpdateRequest(vaultId, tableName, records, updateType, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java new file mode 100644 index 00000000..c91ad763 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java @@ -0,0 +1,96 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.records; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.resources.records.requests.V1ExecuteQueryRequest; +import com.skyflow.generated.rest.types.V1ExecuteQueryResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.CompletableFuture; + +public class AsyncRawRecordsClient { + protected final ClientOptions clientOptions; + + public AsyncRawRecordsClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + } + + /** + * Executes a query on the specified vault. + */ + public CompletableFuture> flowServiceExecuteQuery() { + return flowServiceExecuteQuery(V1ExecuteQueryRequest.builder().build()); + } + + /** + * Executes a query on the specified vault. + */ + public CompletableFuture> flowServiceExecuteQuery( + V1ExecuteQueryRequest request) { + return flowServiceExecuteQuery(request, null); + } + + /** + * Executes a query on the specified vault. + */ + public CompletableFuture> flowServiceExecuteQuery( + V1ExecuteQueryRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/query") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + CompletableFuture> future = new CompletableFuture<>(); + client.newCall(okhttpRequest).enqueue(new Callback() { + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + try (ResponseBody responseBody = response.body()) { + if (response.isSuccessful()) { + future.complete(new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue( + responseBody.string(), V1ExecuteQueryResponse.class), + response)); + return; + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + future.completeExceptionally(new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response)); + return; + } catch (IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + } + + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + future.completeExceptionally(new ApiClientException("Network error executing HTTP request", e)); + } + }); + return future; + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java new file mode 100644 index 00000000..9af54869 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java @@ -0,0 +1,51 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.records; + +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.resources.records.requests.V1ExecuteQueryRequest; +import com.skyflow.generated.rest.types.V1ExecuteQueryResponse; + +import java.util.concurrent.CompletableFuture; + +public class AsyncRecordsClient { + protected final ClientOptions clientOptions; + + private final AsyncRawRecordsClient rawClient; + + public AsyncRecordsClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + this.rawClient = new AsyncRawRecordsClient(clientOptions); + } + + /** + * Get responses with HTTP metadata like headers + */ + public AsyncRawRecordsClient withRawResponse() { + return this.rawClient; + } + + /** + * Executes a query on the specified vault. + */ + public CompletableFuture flowServiceExecuteQuery() { + return this.rawClient.flowServiceExecuteQuery().thenApply(response -> response.body()); + } + + /** + * Executes a query on the specified vault. + */ + public CompletableFuture flowServiceExecuteQuery(V1ExecuteQueryRequest request) { + return this.rawClient.flowServiceExecuteQuery(request).thenApply(response -> response.body()); + } + + /** + * Executes a query on the specified vault. + */ + public CompletableFuture flowServiceExecuteQuery( + V1ExecuteQueryRequest request, RequestOptions requestOptions) { + return this.rawClient.flowServiceExecuteQuery(request, requestOptions).thenApply(response -> response.body()); + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java new file mode 100644 index 00000000..cf9a1db1 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java @@ -0,0 +1,79 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.records; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.resources.records.requests.V1ExecuteQueryRequest; +import com.skyflow.generated.rest.types.V1ExecuteQueryResponse; +import okhttp3.*; + +import java.io.IOException; + +public class RawRecordsClient { + protected final ClientOptions clientOptions; + + public RawRecordsClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + } + + /** + * Executes a query on the specified vault. + */ + public ApiClientHttpResponse flowServiceExecuteQuery() { + return flowServiceExecuteQuery(V1ExecuteQueryRequest.builder().build()); + } + + /** + * Executes a query on the specified vault. + */ + public ApiClientHttpResponse flowServiceExecuteQuery(V1ExecuteQueryRequest request) { + return flowServiceExecuteQuery(request, null); + } + + /** + * Executes a query on the specified vault. + */ + public ApiClientHttpResponse flowServiceExecuteQuery( + V1ExecuteQueryRequest request, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("v2/query") + .build(); + RequestBody body; + try { + body = RequestBody.create( + ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON); + } catch (JsonProcessingException e) { + throw new ApiClientException("Failed to serialize request", e); + } + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("POST", body) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + try (Response response = client.newCall(okhttpRequest).execute()) { + ResponseBody responseBody = response.body(); + if (response.isSuccessful()) { + return new ApiClientHttpResponse<>( + ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), V1ExecuteQueryResponse.class), + response); + } + String responseBodyString = responseBody != null ? responseBody.string() : "{}"; + throw new ApiClientApiException( + "Error with status code " + response.code(), + response.code(), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + response); + } catch (IOException e) { + throw new ApiClientException("Network error executing HTTP request", e); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java new file mode 100644 index 00000000..332c0e1b --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java @@ -0,0 +1,49 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.records; + +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.resources.records.requests.V1ExecuteQueryRequest; +import com.skyflow.generated.rest.types.V1ExecuteQueryResponse; + +public class RecordsClient { + protected final ClientOptions clientOptions; + + private final RawRecordsClient rawClient; + + public RecordsClient(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + this.rawClient = new RawRecordsClient(clientOptions); + } + + /** + * Get responses with HTTP metadata like headers + */ + public RawRecordsClient withRawResponse() { + return this.rawClient; + } + + /** + * Executes a query on the specified vault. + */ + public V1ExecuteQueryResponse flowServiceExecuteQuery() { + return this.rawClient.flowServiceExecuteQuery().body(); + } + + /** + * Executes a query on the specified vault. + */ + public V1ExecuteQueryResponse flowServiceExecuteQuery(V1ExecuteQueryRequest request) { + return this.rawClient.flowServiceExecuteQuery(request).body(); + } + + /** + * Executes a query on the specified vault. + */ + public V1ExecuteQueryResponse flowServiceExecuteQuery( + V1ExecuteQueryRequest request, RequestOptions requestOptions) { + return this.rawClient.flowServiceExecuteQuery(request, requestOptions).body(); + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/requests/V1ExecuteQueryRequest.java b/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/requests/V1ExecuteQueryRequest.java new file mode 100644 index 00000000..2857faca --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/resources/records/requests/V1ExecuteQueryRequest.java @@ -0,0 +1,125 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.resources.records.requests; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1ExecuteQueryRequest.Builder.class) +public final class V1ExecuteQueryRequest { + private final Optional vaultId; + + private final Optional query; + + private final Map additionalProperties; + + private V1ExecuteQueryRequest( + Optional vaultId, Optional query, Map additionalProperties) { + this.vaultId = vaultId; + this.query = query; + this.additionalProperties = additionalProperties; + } + + /** + * @return ID of the vault where data is being inserted + */ + @JsonProperty("vaultID") + public Optional getVaultId() { + return vaultId; + } + + /** + * @return Query to execute. + */ + @JsonProperty("query") + public Optional getQuery() { + return query; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1ExecuteQueryRequest && equalTo((V1ExecuteQueryRequest) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1ExecuteQueryRequest other) { + return vaultId.equals(other.vaultId) && query.equals(other.query); + } + + @Override + public int hashCode() { + return Objects.hash(this.vaultId, this.query); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional vaultId = Optional.empty(); + + private Optional query = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1ExecuteQueryRequest other) { + vaultId(other.getVaultId()); + query(other.getQuery()); + return this; + } + + /** + *

ID of the vault where data is being inserted

+ */ + @JsonSetter(value = "vaultID", nulls = Nulls.SKIP) + public Builder vaultId(Optional vaultId) { + this.vaultId = vaultId; + return this; + } + + public Builder vaultId(String vaultId) { + this.vaultId = Optional.ofNullable(vaultId); + return this; + } + + /** + *

Query to execute.

+ */ + @JsonSetter(value = "query", nulls = Nulls.SKIP) + public Builder query(Optional query) { + this.query = query; + return this; + } + + public Builder query(String query) { + this.query = Optional.ofNullable(query); + return this; + } + + public V1ExecuteQueryRequest build() { + return new V1ExecuteQueryRequest(vaultId, query, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/FlowEnumUpdateType.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/FlowEnumUpdateType.java new file mode 100644 index 00000000..d3c1cea0 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/FlowEnumUpdateType.java @@ -0,0 +1,24 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum FlowEnumUpdateType { + UPDATE("UPDATE"), + + REPLACE("REPLACE"); + + private final String value; + + FlowEnumUpdateType(String value) { + this.value = value; + } + + @JsonValue + @Override + public String toString() { + return this.value; + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/FlowTokenizeResponseObjectToken.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/FlowTokenizeResponseObjectToken.java new file mode 100644 index 00000000..0edfd9a8 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/FlowTokenizeResponseObjectToken.java @@ -0,0 +1,188 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = FlowTokenizeResponseObjectToken.Builder.class) +public final class FlowTokenizeResponseObjectToken { + private final Optional tokenGroupName; + + private final Optional token; + + private final Optional error; + + private final Optional httpCode; + + private final Map additionalProperties; + + private FlowTokenizeResponseObjectToken( + Optional tokenGroupName, + Optional token, + Optional error, + Optional httpCode, + Map additionalProperties) { + this.tokenGroupName = tokenGroupName; + this.token = token; + this.error = error; + this.httpCode = httpCode; + this.additionalProperties = additionalProperties; + } + + /** + * @return Token group Name + */ + @JsonProperty("tokenGroupName") + public Optional getTokenGroupName() { + return tokenGroupName; + } + + /** + * @return Token value + */ + @JsonProperty("token") + public Optional getToken() { + return token; + } + + /** + * @return Error if tokenization failed + */ + @JsonProperty("error") + public Optional getError() { + return error; + } + + /** + * @return HTTP status code of the response + */ + @JsonProperty("httpCode") + public Optional getHttpCode() { + return httpCode; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof FlowTokenizeResponseObjectToken && equalTo((FlowTokenizeResponseObjectToken) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(FlowTokenizeResponseObjectToken other) { + return tokenGroupName.equals(other.tokenGroupName) + && token.equals(other.token) + && error.equals(other.error) + && httpCode.equals(other.httpCode); + } + + @Override + public int hashCode() { + return Objects.hash(this.tokenGroupName, this.token, this.error, this.httpCode); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional tokenGroupName = Optional.empty(); + + private Optional token = Optional.empty(); + + private Optional error = Optional.empty(); + + private Optional httpCode = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(FlowTokenizeResponseObjectToken other) { + tokenGroupName(other.getTokenGroupName()); + token(other.getToken()); + error(other.getError()); + httpCode(other.getHttpCode()); + return this; + } + + /** + *

Token group Name

+ */ + @JsonSetter(value = "tokenGroupName", nulls = Nulls.SKIP) + public Builder tokenGroupName(Optional tokenGroupName) { + this.tokenGroupName = tokenGroupName; + return this; + } + + public Builder tokenGroupName(String tokenGroupName) { + this.tokenGroupName = Optional.ofNullable(tokenGroupName); + return this; + } + + /** + *

Token value

+ */ + @JsonSetter(value = "token", nulls = Nulls.SKIP) + public Builder token(Optional token) { + this.token = token; + return this; + } + + public Builder token(String token) { + this.token = Optional.ofNullable(token); + return this; + } + + /** + *

Error if tokenization failed

+ */ + @JsonSetter(value = "error", nulls = Nulls.SKIP) + public Builder error(Optional error) { + this.error = error; + return this; + } + + public Builder error(String error) { + this.error = Optional.ofNullable(error); + return this; + } + + /** + *

HTTP status code of the response

+ */ + @JsonSetter(value = "httpCode", nulls = Nulls.SKIP) + public Builder httpCode(Optional httpCode) { + this.httpCode = httpCode; + return this; + } + + public Builder httpCode(Integer httpCode) { + this.httpCode = Optional.ofNullable(httpCode); + return this; + } + + public FlowTokenizeResponseObjectToken build() { + return new FlowTokenizeResponseObjectToken(tokenGroupName, token, error, httpCode, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/GoogleprotobufAny.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/GoogleprotobufAny.java new file mode 100644 index 00000000..06205978 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/GoogleprotobufAny.java @@ -0,0 +1,146 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = GoogleprotobufAny.Builder.class) +public final class GoogleprotobufAny { + private final Optional type; + + private final Map additionalProperties; + + private GoogleprotobufAny(Optional type, Map additionalProperties) { + this.type = type; + this.additionalProperties = additionalProperties; + } + + /** + * @return A URL/resource name that uniquely identifies the type of the serialized + * protocol buffer message. This string must contain at least + * one "/" character. The last segment of the URL's path must represent + * the fully qualified name of the type (as in + * path/google.protobuf.Duration). The name should be in a canonical form + * (e.g., leading "." is not accepted). + *

In practice, teams usually precompile into the binary all types that they + * expect it to use in the context of Any. However, for URLs which use the + * scheme http, https, or no scheme, one can optionally set up a type + * server that maps type URLs to message definitions as follows:

+ *
    + *
  • If no scheme is provided, https is assumed.
  • + *
  • An HTTP GET on the URL must yield a [google.protobuf.Type][] + * value in binary format, or produce an error.
  • + *
  • Applications are allowed to cache lookup results based on the + * URL, or have them precompiled into a binary to avoid any + * lookup. Therefore, binary compatibility needs to be preserved + * on changes to types. (Use versioned type names to manage + * breaking changes.)
  • + *
+ *

Note: this functionality is not currently available in the official + * protobuf release, and it is not used for type URLs beginning with + * type.googleapis.com. As of May 2023, there are no widely used type server + * implementations and no plans to implement one.

+ *

Schemes other than http, https (or the empty scheme) might be + * used with implementation specific semantics.

+ */ + @JsonProperty("@type") + public Optional getType() { + return type; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof GoogleprotobufAny && equalTo((GoogleprotobufAny) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(GoogleprotobufAny other) { + return type.equals(other.type); + } + + @Override + public int hashCode() { + return Objects.hash(this.type); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional type = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(GoogleprotobufAny other) { + type(other.getType()); + return this; + } + + /** + *

A URL/resource name that uniquely identifies the type of the serialized + * protocol buffer message. This string must contain at least + * one "/" character. The last segment of the URL's path must represent + * the fully qualified name of the type (as in + * path/google.protobuf.Duration). The name should be in a canonical form + * (e.g., leading "." is not accepted).

+ *

In practice, teams usually precompile into the binary all types that they + * expect it to use in the context of Any. However, for URLs which use the + * scheme http, https, or no scheme, one can optionally set up a type + * server that maps type URLs to message definitions as follows:

+ *
    + *
  • If no scheme is provided, https is assumed.
  • + *
  • An HTTP GET on the URL must yield a [google.protobuf.Type][] + * value in binary format, or produce an error.
  • + *
  • Applications are allowed to cache lookup results based on the + * URL, or have them precompiled into a binary to avoid any + * lookup. Therefore, binary compatibility needs to be preserved + * on changes to types. (Use versioned type names to manage + * breaking changes.)
  • + *
+ *

Note: this functionality is not currently available in the official + * protobuf release, and it is not used for type URLs beginning with + * type.googleapis.com. As of May 2023, there are no widely used type server + * implementations and no plans to implement one.

+ *

Schemes other than http, https (or the empty scheme) might be + * used with implementation specific semantics.

+ */ + @JsonSetter(value = "@type", nulls = Nulls.SKIP) + public Builder type(Optional type) { + this.type = type; + return this; + } + + public Builder type(String type) { + this.type = Optional.ofNullable(type); + return this; + } + + public GoogleprotobufAny build() { + return new GoogleprotobufAny(type, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/RpcStatus.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/RpcStatus.java new file mode 100644 index 00000000..347ce5c4 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/RpcStatus.java @@ -0,0 +1,135 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = RpcStatus.Builder.class) +public final class RpcStatus { + private final Optional code; + + private final Optional message; + + private final Optional> details; + + private final Map additionalProperties; + + private RpcStatus( + Optional code, + Optional message, + Optional> details, + Map additionalProperties) { + this.code = code; + this.message = message; + this.details = details; + this.additionalProperties = additionalProperties; + } + + @JsonProperty("code") + public Optional getCode() { + return code; + } + + @JsonProperty("message") + public Optional getMessage() { + return message; + } + + @JsonProperty("details") + public Optional> getDetails() { + return details; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof RpcStatus && equalTo((RpcStatus) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(RpcStatus other) { + return code.equals(other.code) && message.equals(other.message) && details.equals(other.details); + } + + @Override + public int hashCode() { + return Objects.hash(this.code, this.message, this.details); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional code = Optional.empty(); + + private Optional message = Optional.empty(); + + private Optional> details = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(RpcStatus other) { + code(other.getCode()); + message(other.getMessage()); + details(other.getDetails()); + return this; + } + + @JsonSetter(value = "code", nulls = Nulls.SKIP) + public Builder code(Optional code) { + this.code = code; + return this; + } + + public Builder code(Integer code) { + this.code = Optional.ofNullable(code); + return this; + } + + @JsonSetter(value = "message", nulls = Nulls.SKIP) + public Builder message(Optional message) { + this.message = message; + return this; + } + + public Builder message(String message) { + this.message = Optional.ofNullable(message); + return this; + } + + @JsonSetter(value = "details", nulls = Nulls.SKIP) + public Builder details(Optional> details) { + this.details = details; + return this; + } + + public Builder details(List details) { + this.details = Optional.ofNullable(details); + return this; + } + + public RpcStatus build() { + return new RpcStatus(code, message, details, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ColumnRedactions.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ColumnRedactions.java new file mode 100644 index 00000000..b467a8c0 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ColumnRedactions.java @@ -0,0 +1,125 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1ColumnRedactions.Builder.class) +public final class V1ColumnRedactions { + private final Optional columnName; + + private final Optional redaction; + + private final Map additionalProperties; + + private V1ColumnRedactions( + Optional columnName, Optional redaction, Map additionalProperties) { + this.columnName = columnName; + this.redaction = redaction; + this.additionalProperties = additionalProperties; + } + + /** + * @return Name of the column to be redacted + */ + @JsonProperty("columnName") + public Optional getColumnName() { + return columnName; + } + + /** + * @return Name of the redaction. Eg: plain_text, redacted, mask1 + */ + @JsonProperty("redaction") + public Optional getRedaction() { + return redaction; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1ColumnRedactions && equalTo((V1ColumnRedactions) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1ColumnRedactions other) { + return columnName.equals(other.columnName) && redaction.equals(other.redaction); + } + + @Override + public int hashCode() { + return Objects.hash(this.columnName, this.redaction); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional columnName = Optional.empty(); + + private Optional redaction = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1ColumnRedactions other) { + columnName(other.getColumnName()); + redaction(other.getRedaction()); + return this; + } + + /** + *

Name of the column to be redacted

+ */ + @JsonSetter(value = "columnName", nulls = Nulls.SKIP) + public Builder columnName(Optional columnName) { + this.columnName = columnName; + return this; + } + + public Builder columnName(String columnName) { + this.columnName = Optional.ofNullable(columnName); + return this; + } + + /** + *

Name of the redaction. Eg: plain_text, redacted, mask1

+ */ + @JsonSetter(value = "redaction", nulls = Nulls.SKIP) + public Builder redaction(Optional redaction) { + this.redaction = redaction; + return this; + } + + public Builder redaction(String redaction) { + this.redaction = Optional.ofNullable(redaction); + return this; + } + + public V1ColumnRedactions build() { + return new V1ColumnRedactions(columnName, redaction, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteResponse.java new file mode 100644 index 00000000..24bd865d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteResponse.java @@ -0,0 +1,93 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1DeleteResponse.Builder.class) +public final class V1DeleteResponse { + private final Optional> records; + + private final Map additionalProperties; + + private V1DeleteResponse(Optional> records, Map additionalProperties) { + this.records = records; + this.additionalProperties = additionalProperties; + } + + /** + * @return List of deleted records with skyflow ID and any partial errors. + */ + @JsonProperty("records") + public Optional> getRecords() { + return records; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1DeleteResponse && equalTo((V1DeleteResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1DeleteResponse other) { + return records.equals(other.records); + } + + @Override + public int hashCode() { + return Objects.hash(this.records); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> records = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1DeleteResponse other) { + records(other.getRecords()); + return this; + } + + /** + *

List of deleted records with skyflow ID and any partial errors.

+ */ + @JsonSetter(value = "records", nulls = Nulls.SKIP) + public Builder records(Optional> records) { + this.records = records; + return this; + } + + public Builder records(List records) { + this.records = Optional.ofNullable(records); + return this; + } + + public V1DeleteResponse build() { + return new V1DeleteResponse(records, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteResponseObject.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteResponseObject.java new file mode 100644 index 00000000..087ce4c7 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteResponseObject.java @@ -0,0 +1,156 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1DeleteResponseObject.Builder.class) +public final class V1DeleteResponseObject { + private final Optional skyflowId; + + private final Optional error; + + private final Optional httpCode; + + private final Map additionalProperties; + + private V1DeleteResponseObject( + Optional skyflowId, + Optional error, + Optional httpCode, + Map additionalProperties) { + this.skyflowId = skyflowId; + this.error = error; + this.httpCode = httpCode; + this.additionalProperties = additionalProperties; + } + + /** + * @return Skyflow ID for the deleted record + */ + @JsonProperty("skyflowID") + public Optional getSkyflowId() { + return skyflowId; + } + + /** + * @return Partial Error message if any + */ + @JsonProperty("error") + public Optional getError() { + return error; + } + + /** + * @return HTTP status code of the response + */ + @JsonProperty("httpCode") + public Optional getHttpCode() { + return httpCode; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1DeleteResponseObject && equalTo((V1DeleteResponseObject) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1DeleteResponseObject other) { + return skyflowId.equals(other.skyflowId) && error.equals(other.error) && httpCode.equals(other.httpCode); + } + + @Override + public int hashCode() { + return Objects.hash(this.skyflowId, this.error, this.httpCode); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional skyflowId = Optional.empty(); + + private Optional error = Optional.empty(); + + private Optional httpCode = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1DeleteResponseObject other) { + skyflowId(other.getSkyflowId()); + error(other.getError()); + httpCode(other.getHttpCode()); + return this; + } + + /** + *

Skyflow ID for the deleted record

+ */ + @JsonSetter(value = "skyflowID", nulls = Nulls.SKIP) + public Builder skyflowId(Optional skyflowId) { + this.skyflowId = skyflowId; + return this; + } + + public Builder skyflowId(String skyflowId) { + this.skyflowId = Optional.ofNullable(skyflowId); + return this; + } + + /** + *

Partial Error message if any

+ */ + @JsonSetter(value = "error", nulls = Nulls.SKIP) + public Builder error(Optional error) { + this.error = error; + return this; + } + + public Builder error(String error) { + this.error = Optional.ofNullable(error); + return this; + } + + /** + *

HTTP status code of the response

+ */ + @JsonSetter(value = "httpCode", nulls = Nulls.SKIP) + public Builder httpCode(Optional httpCode) { + this.httpCode = httpCode; + return this; + } + + public Builder httpCode(Integer httpCode) { + this.httpCode = Optional.ofNullable(httpCode); + return this; + } + + public V1DeleteResponseObject build() { + return new V1DeleteResponseObject(skyflowId, error, httpCode, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteTokenResponseObject.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteTokenResponseObject.java new file mode 100644 index 00000000..f2e1dacd --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1DeleteTokenResponseObject.java @@ -0,0 +1,156 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1DeleteTokenResponseObject.Builder.class) +public final class V1DeleteTokenResponseObject { + private final Optional value; + + private final Optional error; + + private final Optional httpCode; + + private final Map additionalProperties; + + private V1DeleteTokenResponseObject( + Optional value, + Optional error, + Optional httpCode, + Map additionalProperties) { + this.value = value; + this.error = error; + this.httpCode = httpCode; + this.additionalProperties = additionalProperties; + } + + /** + * @return Token value + */ + @JsonProperty("value") + public Optional getValue() { + return value; + } + + /** + * @return Error if deletion failed + */ + @JsonProperty("error") + public Optional getError() { + return error; + } + + /** + * @return HTTP status code of the response + */ + @JsonProperty("httpCode") + public Optional getHttpCode() { + return httpCode; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1DeleteTokenResponseObject && equalTo((V1DeleteTokenResponseObject) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1DeleteTokenResponseObject other) { + return value.equals(other.value) && error.equals(other.error) && httpCode.equals(other.httpCode); + } + + @Override + public int hashCode() { + return Objects.hash(this.value, this.error, this.httpCode); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional value = Optional.empty(); + + private Optional error = Optional.empty(); + + private Optional httpCode = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1DeleteTokenResponseObject other) { + value(other.getValue()); + error(other.getError()); + httpCode(other.getHttpCode()); + return this; + } + + /** + *

Token value

+ */ + @JsonSetter(value = "value", nulls = Nulls.SKIP) + public Builder value(Optional value) { + this.value = value; + return this; + } + + public Builder value(String value) { + this.value = Optional.ofNullable(value); + return this; + } + + /** + *

Error if deletion failed

+ */ + @JsonSetter(value = "error", nulls = Nulls.SKIP) + public Builder error(Optional error) { + this.error = error; + return this; + } + + public Builder error(String error) { + this.error = Optional.ofNullable(error); + return this; + } + + /** + *

HTTP status code of the response

+ */ + @JsonSetter(value = "httpCode", nulls = Nulls.SKIP) + public Builder httpCode(Optional httpCode) { + this.httpCode = httpCode; + return this; + } + + public Builder httpCode(Integer httpCode) { + this.httpCode = Optional.ofNullable(httpCode); + return this; + } + + public V1DeleteTokenResponseObject build() { + return new V1DeleteTokenResponseObject(value, error, httpCode, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryRecordResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryRecordResponse.java new file mode 100644 index 00000000..9de3418b --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryRecordResponse.java @@ -0,0 +1,96 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1ExecuteQueryRecordResponse.Builder.class) +public final class V1ExecuteQueryRecordResponse { + private final Optional> data; + + private final Map additionalProperties; + + private V1ExecuteQueryRecordResponse(Optional> data, Map additionalProperties) { + this.data = data; + this.additionalProperties = additionalProperties; + } + + /** + * @return Fields and values for the record. For example, {'field_1':'value_1', 'field_2':'value_2'}. + */ + @JsonProperty("data") + public Optional> getData() { + return data; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1ExecuteQueryRecordResponse && equalTo((V1ExecuteQueryRecordResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1ExecuteQueryRecordResponse other) { + return data.equals(other.data); + } + + @Override + public int hashCode() { + return Objects.hash(this.data); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> data = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1ExecuteQueryRecordResponse other) { + data(other.getData()); + return this; + } + + /** + *

Fields and values for the record. For example, {'field_1':'value_1', 'field_2':'value_2'}.

+ */ + @JsonSetter(value = "data", nulls = Nulls.SKIP) + public Builder data(Optional> data) { + this.data = data; + return this; + } + + public Builder data(Map data) { + this.data = Optional.ofNullable(data); + return this; + } + + public V1ExecuteQueryRecordResponse build() { + return new V1ExecuteQueryRecordResponse(data, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryResponse.java new file mode 100644 index 00000000..f80b54e0 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryResponse.java @@ -0,0 +1,118 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1ExecuteQueryResponse.Builder.class) +public final class V1ExecuteQueryResponse { + private final Optional> records; + + private final Optional metadata; + + private final Map additionalProperties; + + private V1ExecuteQueryResponse( + Optional> records, + Optional metadata, + Map additionalProperties) { + this.records = records; + this.metadata = metadata; + this.additionalProperties = additionalProperties; + } + + /** + * @return Records corresponding to the specified query. + */ + @JsonProperty("records") + public Optional> getRecords() { + return records; + } + + @JsonProperty("metadata") + public Optional getMetadata() { + return metadata; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1ExecuteQueryResponse && equalTo((V1ExecuteQueryResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1ExecuteQueryResponse other) { + return records.equals(other.records) && metadata.equals(other.metadata); + } + + @Override + public int hashCode() { + return Objects.hash(this.records, this.metadata); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> records = Optional.empty(); + + private Optional metadata = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1ExecuteQueryResponse other) { + records(other.getRecords()); + metadata(other.getMetadata()); + return this; + } + + /** + *

Records corresponding to the specified query.

+ */ + @JsonSetter(value = "records", nulls = Nulls.SKIP) + public Builder records(Optional> records) { + this.records = records; + return this; + } + + public Builder records(List records) { + this.records = Optional.ofNullable(records); + return this; + } + + @JsonSetter(value = "metadata", nulls = Nulls.SKIP) + public Builder metadata(Optional metadata) { + this.metadata = metadata; + return this; + } + + public Builder metadata(V1ExecuteQueryResponseMetadata metadata) { + this.metadata = Optional.ofNullable(metadata); + return this; + } + + public V1ExecuteQueryResponse build() { + return new V1ExecuteQueryResponse(records, metadata, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryResponseMetadata.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryResponseMetadata.java new file mode 100644 index 00000000..c23da3bd --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1ExecuteQueryResponseMetadata.java @@ -0,0 +1,93 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1ExecuteQueryResponseMetadata.Builder.class) +public final class V1ExecuteQueryResponseMetadata { + private final Optional> columns; + + private final Map additionalProperties; + + private V1ExecuteQueryResponseMetadata(Optional> columns, Map additionalProperties) { + this.columns = columns; + this.additionalProperties = additionalProperties; + } + + /** + * @return Return columns for the query + */ + @JsonProperty("columns") + public Optional> getColumns() { + return columns; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1ExecuteQueryResponseMetadata && equalTo((V1ExecuteQueryResponseMetadata) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1ExecuteQueryResponseMetadata other) { + return columns.equals(other.columns); + } + + @Override + public int hashCode() { + return Objects.hash(this.columns); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> columns = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1ExecuteQueryResponseMetadata other) { + columns(other.getColumns()); + return this; + } + + /** + *

Return columns for the query

+ */ + @JsonSetter(value = "columns", nulls = Nulls.SKIP) + public Builder columns(Optional> columns) { + this.columns = columns; + return this; + } + + public Builder columns(List columns) { + this.columns = Optional.ofNullable(columns); + return this; + } + + public V1ExecuteQueryResponseMetadata build() { + return new V1ExecuteQueryResponseMetadata(columns, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDeleteTokenResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDeleteTokenResponse.java new file mode 100644 index 00000000..34ca245c --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDeleteTokenResponse.java @@ -0,0 +1,94 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowDeleteTokenResponse.Builder.class) +public final class V1FlowDeleteTokenResponse { + private final Optional> tokens; + + private final Map additionalProperties; + + private V1FlowDeleteTokenResponse( + Optional> tokens, Map additionalProperties) { + this.tokens = tokens; + this.additionalProperties = additionalProperties; + } + + /** + * @return Tokens data for Delete + */ + @JsonProperty("tokens") + public Optional> getTokens() { + return tokens; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowDeleteTokenResponse && equalTo((V1FlowDeleteTokenResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowDeleteTokenResponse other) { + return tokens.equals(other.tokens); + } + + @Override + public int hashCode() { + return Objects.hash(this.tokens); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> tokens = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowDeleteTokenResponse other) { + tokens(other.getTokens()); + return this; + } + + /** + *

Tokens data for Delete

+ */ + @JsonSetter(value = "tokens", nulls = Nulls.SKIP) + public Builder tokens(Optional> tokens) { + this.tokens = tokens; + return this; + } + + public Builder tokens(List tokens) { + this.tokens = Optional.ofNullable(tokens); + return this; + } + + public V1FlowDeleteTokenResponse build() { + return new V1FlowDeleteTokenResponse(tokens, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDetokenizeResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDetokenizeResponse.java new file mode 100644 index 00000000..defe1dad --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDetokenizeResponse.java @@ -0,0 +1,94 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowDetokenizeResponse.Builder.class) +public final class V1FlowDetokenizeResponse { + private final Optional> response; + + private final Map additionalProperties; + + private V1FlowDetokenizeResponse( + Optional> response, Map additionalProperties) { + this.response = response; + this.additionalProperties = additionalProperties; + } + + /** + * @return Detokenized data + */ + @JsonProperty("response") + public Optional> getResponse() { + return response; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowDetokenizeResponse && equalTo((V1FlowDetokenizeResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowDetokenizeResponse other) { + return response.equals(other.response); + } + + @Override + public int hashCode() { + return Objects.hash(this.response); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> response = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowDetokenizeResponse other) { + response(other.getResponse()); + return this; + } + + /** + *

Detokenized data

+ */ + @JsonSetter(value = "response", nulls = Nulls.SKIP) + public Builder response(Optional> response) { + this.response = response; + return this; + } + + public Builder response(List response) { + this.response = Optional.ofNullable(response); + return this; + } + + public V1FlowDetokenizeResponse build() { + return new V1FlowDetokenizeResponse(response, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDetokenizeResponseObject.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDetokenizeResponseObject.java new file mode 100644 index 00000000..f0cf909d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowDetokenizeResponseObject.java @@ -0,0 +1,249 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowDetokenizeResponseObject.Builder.class) +public final class V1FlowDetokenizeResponseObject { + private final Optional token; + + private final Optional value; + + private final Optional tokenGroupName; + + private final Optional error; + + private final Optional httpCode; + + private final Optional> metadata; + + private final Map additionalProperties; + + private V1FlowDetokenizeResponseObject( + Optional token, + Optional value, + Optional tokenGroupName, + Optional error, + Optional httpCode, + Optional> metadata, + Map additionalProperties) { + this.token = token; + this.value = value; + this.tokenGroupName = tokenGroupName; + this.error = error; + this.httpCode = httpCode; + this.metadata = metadata; + this.additionalProperties = additionalProperties; + } + + /** + * @return Token to be detokenized + */ + @JsonProperty("token") + public Optional getToken() { + return token; + } + + /** + * @return Detokenized value for the token + */ + @JsonProperty("value") + public Optional getValue() { + return value; + } + + /** + * @return Token group name + */ + @JsonProperty("tokenGroupName") + public Optional getTokenGroupName() { + return tokenGroupName; + } + + /** + * @return Error if detokenization failed + */ + @JsonProperty("error") + public Optional getError() { + return error; + } + + /** + * @return HTTP status code of the response + */ + @JsonProperty("httpCode") + public Optional getHttpCode() { + return httpCode; + } + + /** + * @return Additional metadata associated with the token, such as tableName or skyflowID + */ + @JsonProperty("metadata") + public Optional> getMetadata() { + return metadata; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowDetokenizeResponseObject && equalTo((V1FlowDetokenizeResponseObject) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowDetokenizeResponseObject other) { + return token.equals(other.token) + && value.equals(other.value) + && tokenGroupName.equals(other.tokenGroupName) + && error.equals(other.error) + && httpCode.equals(other.httpCode) + && metadata.equals(other.metadata); + } + + @Override + public int hashCode() { + return Objects.hash(this.token, this.value, this.tokenGroupName, this.error, this.httpCode, this.metadata); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional token = Optional.empty(); + + private Optional value = Optional.empty(); + + private Optional tokenGroupName = Optional.empty(); + + private Optional error = Optional.empty(); + + private Optional httpCode = Optional.empty(); + + private Optional> metadata = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowDetokenizeResponseObject other) { + token(other.getToken()); + value(other.getValue()); + tokenGroupName(other.getTokenGroupName()); + error(other.getError()); + httpCode(other.getHttpCode()); + metadata(other.getMetadata()); + return this; + } + + /** + *

Token to be detokenized

+ */ + @JsonSetter(value = "token", nulls = Nulls.SKIP) + public Builder token(Optional token) { + this.token = token; + return this; + } + + public Builder token(String token) { + this.token = Optional.ofNullable(token); + return this; + } + + /** + *

Detokenized value for the token

+ */ + @JsonSetter(value = "value", nulls = Nulls.SKIP) + public Builder value(Optional value) { + this.value = value; + return this; + } + + public Builder value(Object value) { + this.value = Optional.ofNullable(value); + return this; + } + + /** + *

Token group name

+ */ + @JsonSetter(value = "tokenGroupName", nulls = Nulls.SKIP) + public Builder tokenGroupName(Optional tokenGroupName) { + this.tokenGroupName = tokenGroupName; + return this; + } + + public Builder tokenGroupName(String tokenGroupName) { + this.tokenGroupName = Optional.ofNullable(tokenGroupName); + return this; + } + + /** + *

Error if detokenization failed

+ */ + @JsonSetter(value = "error", nulls = Nulls.SKIP) + public Builder error(Optional error) { + this.error = error; + return this; + } + + public Builder error(String error) { + this.error = Optional.ofNullable(error); + return this; + } + + /** + *

HTTP status code of the response

+ */ + @JsonSetter(value = "httpCode", nulls = Nulls.SKIP) + public Builder httpCode(Optional httpCode) { + this.httpCode = httpCode; + return this; + } + + public Builder httpCode(Integer httpCode) { + this.httpCode = Optional.ofNullable(httpCode); + return this; + } + + /** + *

Additional metadata associated with the token, such as tableName or skyflowID

+ */ + @JsonSetter(value = "metadata", nulls = Nulls.SKIP) + public Builder metadata(Optional> metadata) { + this.metadata = metadata; + return this; + } + + public Builder metadata(Map metadata) { + this.metadata = Optional.ofNullable(metadata); + return this; + } + + public V1FlowDetokenizeResponseObject build() { + return new V1FlowDetokenizeResponseObject( + token, value, tokenGroupName, error, httpCode, metadata, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeRequestObject.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeRequestObject.java new file mode 100644 index 00000000..adefcaed --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeRequestObject.java @@ -0,0 +1,153 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowTokenizeRequestObject.Builder.class) +public final class V1FlowTokenizeRequestObject { + private final Optional value; + + private final Optional> tokenGroupNames; + + private final Optional token; + + private final Map additionalProperties; + + private V1FlowTokenizeRequestObject( + Optional value, + Optional> tokenGroupNames, + Optional token, + Map additionalProperties) { + this.value = value; + this.tokenGroupNames = tokenGroupNames; + this.token = token; + this.additionalProperties = additionalProperties; + } + + /** + * @return Token Value + */ + @JsonProperty("value") + public Optional getValue() { + return value; + } + + /** + * @return List of token group names + */ + @JsonProperty("tokenGroupNames") + public Optional> getTokenGroupNames() { + return tokenGroupNames; + } + + /** + * @return Token for the value, in case of BYOT. + */ + @JsonProperty("token") + public Optional getToken() { + return token; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowTokenizeRequestObject && equalTo((V1FlowTokenizeRequestObject) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowTokenizeRequestObject other) { + return value.equals(other.value) && tokenGroupNames.equals(other.tokenGroupNames) && token.equals(other.token); + } + + @Override + public int hashCode() { + return Objects.hash(this.value, this.tokenGroupNames, this.token); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional value = Optional.empty(); + + private Optional> tokenGroupNames = Optional.empty(); + + private Optional token = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowTokenizeRequestObject other) { + value(other.getValue()); + tokenGroupNames(other.getTokenGroupNames()); + token(other.getToken()); + return this; + } + + /** + *

Token Value

+ */ + @JsonSetter(value = "value", nulls = Nulls.SKIP) + public Builder value(Optional value) { + this.value = value; + return this; + } + + public Builder value(Object value) { + this.value = Optional.ofNullable(value); + return this; + } + + /** + *

List of token group names

+ */ + @JsonSetter(value = "tokenGroupNames", nulls = Nulls.SKIP) + public Builder tokenGroupNames(Optional> tokenGroupNames) { + this.tokenGroupNames = tokenGroupNames; + return this; + } + + public Builder tokenGroupNames(List tokenGroupNames) { + this.tokenGroupNames = Optional.ofNullable(tokenGroupNames); + return this; + } + + /** + *

Token for the value, in case of BYOT.

+ */ + @JsonSetter(value = "token", nulls = Nulls.SKIP) + public Builder token(Optional token) { + this.token = token; + return this; + } + + public Builder token(Object token) { + this.token = Optional.ofNullable(token); + return this; + } + + public V1FlowTokenizeRequestObject build() { + return new V1FlowTokenizeRequestObject(value, tokenGroupNames, token, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeResponse.java new file mode 100644 index 00000000..cf071b86 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeResponse.java @@ -0,0 +1,94 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowTokenizeResponse.Builder.class) +public final class V1FlowTokenizeResponse { + private final Optional> response; + + private final Map additionalProperties; + + private V1FlowTokenizeResponse( + Optional> response, Map additionalProperties) { + this.response = response; + this.additionalProperties = additionalProperties; + } + + /** + * @return Tokenized data + */ + @JsonProperty("response") + public Optional> getResponse() { + return response; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowTokenizeResponse && equalTo((V1FlowTokenizeResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowTokenizeResponse other) { + return response.equals(other.response); + } + + @Override + public int hashCode() { + return Objects.hash(this.response); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> response = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowTokenizeResponse other) { + response(other.getResponse()); + return this; + } + + /** + *

Tokenized data

+ */ + @JsonSetter(value = "response", nulls = Nulls.SKIP) + public Builder response(Optional> response) { + this.response = response; + return this; + } + + public Builder response(List response) { + this.response = Optional.ofNullable(response); + return this; + } + + public V1FlowTokenizeResponse build() { + return new V1FlowTokenizeResponse(response, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeResponseObject.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeResponseObject.java new file mode 100644 index 00000000..eb4a15ac --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowTokenizeResponseObject.java @@ -0,0 +1,124 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowTokenizeResponseObject.Builder.class) +public final class V1FlowTokenizeResponseObject { + private final Optional value; + + private final Optional> tokens; + + private final Map additionalProperties; + + private V1FlowTokenizeResponseObject( + Optional value, + Optional> tokens, + Map additionalProperties) { + this.value = value; + this.tokens = tokens; + this.additionalProperties = additionalProperties; + } + + /** + * @return Value of token + */ + @JsonProperty("value") + public Optional getValue() { + return value; + } + + /** + * @return Token value + */ + @JsonProperty("tokens") + public Optional> getTokens() { + return tokens; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowTokenizeResponseObject && equalTo((V1FlowTokenizeResponseObject) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowTokenizeResponseObject other) { + return value.equals(other.value) && tokens.equals(other.tokens); + } + + @Override + public int hashCode() { + return Objects.hash(this.value, this.tokens); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional value = Optional.empty(); + + private Optional> tokens = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowTokenizeResponseObject other) { + value(other.getValue()); + tokens(other.getTokens()); + return this; + } + + /** + *

Value of token

+ */ + @JsonSetter(value = "value", nulls = Nulls.SKIP) + public Builder value(Optional value) { + this.value = value; + return this; + } + + public Builder value(Object value) { + this.value = Optional.ofNullable(value); + return this; + } + + /** + *

Token value

+ */ + @JsonSetter(value = "tokens", nulls = Nulls.SKIP) + public Builder tokens(Optional> tokens) { + this.tokens = tokens; + return this; + } + + public Builder tokens(List tokens) { + this.tokens = Optional.ofNullable(tokens); + return this; + } + + public V1FlowTokenizeResponseObject build() { + return new V1FlowTokenizeResponseObject(value, tokens, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowVaultMetricsData.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowVaultMetricsData.java new file mode 100644 index 00000000..5345de38 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowVaultMetricsData.java @@ -0,0 +1,96 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowVaultMetricsData.Builder.class) +public final class V1FlowVaultMetricsData { + private final Optional> tables; + + private final Map additionalProperties; + + private V1FlowVaultMetricsData(Optional> tables, Map additionalProperties) { + this.tables = tables; + this.additionalProperties = additionalProperties; + } + + /** + * @return Map of table names to their metrics + */ + @JsonProperty("tables") + public Optional> getTables() { + return tables; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowVaultMetricsData && equalTo((V1FlowVaultMetricsData) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowVaultMetricsData other) { + return tables.equals(other.tables); + } + + @Override + public int hashCode() { + return Objects.hash(this.tables); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> tables = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowVaultMetricsData other) { + tables(other.getTables()); + return this; + } + + /** + *

Map of table names to their metrics

+ */ + @JsonSetter(value = "tables", nulls = Nulls.SKIP) + public Builder tables(Optional> tables) { + this.tables = tables; + return this; + } + + public Builder tables(Map tables) { + this.tables = Optional.ofNullable(tables); + return this; + } + + public V1FlowVaultMetricsData build() { + return new V1FlowVaultMetricsData(tables, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowVaultMetricsResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowVaultMetricsResponse.java new file mode 100644 index 00000000..f933bce5 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1FlowVaultMetricsResponse.java @@ -0,0 +1,121 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1FlowVaultMetricsResponse.Builder.class) +public final class V1FlowVaultMetricsResponse { + private final Optional data; + + private final Optional> error; + + private final Map additionalProperties; + + private V1FlowVaultMetricsResponse( + Optional data, + Optional> error, + Map additionalProperties) { + this.data = data; + this.error = error; + this.additionalProperties = additionalProperties; + } + + @JsonProperty("data") + public Optional getData() { + return data; + } + + /** + * @return Error information, if any + */ + @JsonProperty("error") + public Optional> getError() { + return error; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1FlowVaultMetricsResponse && equalTo((V1FlowVaultMetricsResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1FlowVaultMetricsResponse other) { + return data.equals(other.data) && error.equals(other.error); + } + + @Override + public int hashCode() { + return Objects.hash(this.data, this.error); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional data = Optional.empty(); + + private Optional> error = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1FlowVaultMetricsResponse other) { + data(other.getData()); + error(other.getError()); + return this; + } + + @JsonSetter(value = "data", nulls = Nulls.SKIP) + public Builder data(Optional data) { + this.data = data; + return this; + } + + public Builder data(V1FlowVaultMetricsData data) { + this.data = Optional.ofNullable(data); + return this; + } + + /** + *

Error information, if any

+ */ + @JsonSetter(value = "error", nulls = Nulls.SKIP) + public Builder error(Optional> error) { + this.error = error; + return this; + } + + public Builder error(Map error) { + this.error = Optional.ofNullable(error); + return this; + } + + public V1FlowVaultMetricsResponse build() { + return new V1FlowVaultMetricsResponse(data, error, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1GetRequestData.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1GetRequestData.java new file mode 100644 index 00000000..0c0cfab9 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1GetRequestData.java @@ -0,0 +1,216 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1GetRequestData.Builder.class) +public final class V1GetRequestData { + private final Optional tableName; + + private final Optional> skyflowIDs; + + private final Optional> columnRedactions; + + private final Optional> columns; + + private final Optional> uniqueValues; + + private final Map additionalProperties; + + private V1GetRequestData( + Optional tableName, + Optional> skyflowIDs, + Optional> columnRedactions, + Optional> columns, + Optional> uniqueValues, + Map additionalProperties) { + this.tableName = tableName; + this.skyflowIDs = skyflowIDs; + this.columnRedactions = columnRedactions; + this.columns = columns; + this.uniqueValues = uniqueValues; + this.additionalProperties = additionalProperties; + } + + /** + * @return Name of the table where data is being fetched + */ + @JsonProperty("tableName") + public Optional getTableName() { + return tableName; + } + + /** + * @return Skyflow ID for the record to be fetched + */ + @JsonProperty("skyflowIDs") + public Optional> getSkyflowIDs() { + return skyflowIDs; + } + + /** + * @return List of columns to be redacted. + */ + @JsonProperty("columnRedactions") + public Optional> getColumnRedactions() { + return columnRedactions; + } + + /** + * @return List of columns to be fetched. + */ + @JsonProperty("columns") + public Optional> getColumns() { + return columns; + } + + /** + * @return List of unique constraint values to query records by data + */ + @JsonProperty("uniqueValues") + public Optional> getUniqueValues() { + return uniqueValues; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1GetRequestData && equalTo((V1GetRequestData) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1GetRequestData other) { + return tableName.equals(other.tableName) + && skyflowIDs.equals(other.skyflowIDs) + && columnRedactions.equals(other.columnRedactions) + && columns.equals(other.columns) + && uniqueValues.equals(other.uniqueValues); + } + + @Override + public int hashCode() { + return Objects.hash(this.tableName, this.skyflowIDs, this.columnRedactions, this.columns, this.uniqueValues); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional tableName = Optional.empty(); + + private Optional> skyflowIDs = Optional.empty(); + + private Optional> columnRedactions = Optional.empty(); + + private Optional> columns = Optional.empty(); + + private Optional> uniqueValues = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1GetRequestData other) { + tableName(other.getTableName()); + skyflowIDs(other.getSkyflowIDs()); + columnRedactions(other.getColumnRedactions()); + columns(other.getColumns()); + uniqueValues(other.getUniqueValues()); + return this; + } + + /** + *

Name of the table where data is being fetched

+ */ + @JsonSetter(value = "tableName", nulls = Nulls.SKIP) + public Builder tableName(Optional tableName) { + this.tableName = tableName; + return this; + } + + public Builder tableName(String tableName) { + this.tableName = Optional.ofNullable(tableName); + return this; + } + + /** + *

Skyflow ID for the record to be fetched

+ */ + @JsonSetter(value = "skyflowIDs", nulls = Nulls.SKIP) + public Builder skyflowIDs(Optional> skyflowIDs) { + this.skyflowIDs = skyflowIDs; + return this; + } + + public Builder skyflowIDs(List skyflowIDs) { + this.skyflowIDs = Optional.ofNullable(skyflowIDs); + return this; + } + + /** + *

List of columns to be redacted.

+ */ + @JsonSetter(value = "columnRedactions", nulls = Nulls.SKIP) + public Builder columnRedactions(Optional> columnRedactions) { + this.columnRedactions = columnRedactions; + return this; + } + + public Builder columnRedactions(List columnRedactions) { + this.columnRedactions = Optional.ofNullable(columnRedactions); + return this; + } + + /** + *

List of columns to be fetched.

+ */ + @JsonSetter(value = "columns", nulls = Nulls.SKIP) + public Builder columns(Optional> columns) { + this.columns = columns; + return this; + } + + public Builder columns(List columns) { + this.columns = Optional.ofNullable(columns); + return this; + } + + /** + *

List of unique constraint values to query records by data

+ */ + @JsonSetter(value = "uniqueValues", nulls = Nulls.SKIP) + public Builder uniqueValues(Optional> uniqueValues) { + this.uniqueValues = uniqueValues; + return this; + } + + public Builder uniqueValues(List uniqueValues) { + this.uniqueValues = Optional.ofNullable(uniqueValues); + return this; + } + + public V1GetRequestData build() { + return new V1GetRequestData( + tableName, skyflowIDs, columnRedactions, columns, uniqueValues, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1GetResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1GetResponse.java new file mode 100644 index 00000000..a64a7588 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1GetResponse.java @@ -0,0 +1,93 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1GetResponse.Builder.class) +public final class V1GetResponse { + private final Optional> records; + + private final Map additionalProperties; + + private V1GetResponse(Optional> records, Map additionalProperties) { + this.records = records; + this.additionalProperties = additionalProperties; + } + + /** + * @return List of fetched records with skyflow ID, tokens, data, and any partial errors + */ + @JsonProperty("records") + public Optional> getRecords() { + return records; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1GetResponse && equalTo((V1GetResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1GetResponse other) { + return records.equals(other.records); + } + + @Override + public int hashCode() { + return Objects.hash(this.records); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> records = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1GetResponse other) { + records(other.getRecords()); + return this; + } + + /** + *

List of fetched records with skyflow ID, tokens, data, and any partial errors

+ */ + @JsonSetter(value = "records", nulls = Nulls.SKIP) + public Builder records(Optional> records) { + this.records = records; + return this; + } + + public Builder records(List records) { + this.records = Optional.ofNullable(records); + return this; + } + + public V1GetResponse build() { + return new V1GetResponse(records, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordData.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordData.java new file mode 100644 index 00000000..7de162cc --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordData.java @@ -0,0 +1,182 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1InsertRecordData.Builder.class) +public final class V1InsertRecordData { + private final Optional> data; + + private final Optional> tokens; + + private final Optional tableName; + + private final Optional upsert; + + private final Map additionalProperties; + + private V1InsertRecordData( + Optional> data, + Optional> tokens, + Optional tableName, + Optional upsert, + Map additionalProperties) { + this.data = data; + this.tokens = tokens; + this.tableName = tableName; + this.upsert = upsert; + this.additionalProperties = additionalProperties; + } + + /** + * @return Columns names and values + */ + @JsonProperty("data") + public Optional> getData() { + return data; + } + + /** + * @return undocumented_field; Tokens data for the columns if any + */ + @JsonProperty("tokens") + public Optional> getTokens() { + return tokens; + } + + /** + * @return Table name for the record + */ + @JsonProperty("tableName") + public Optional getTableName() { + return tableName; + } + + @JsonProperty("upsert") + public Optional getUpsert() { + return upsert; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1InsertRecordData && equalTo((V1InsertRecordData) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1InsertRecordData other) { + return data.equals(other.data) + && tokens.equals(other.tokens) + && tableName.equals(other.tableName) + && upsert.equals(other.upsert); + } + + @Override + public int hashCode() { + return Objects.hash(this.data, this.tokens, this.tableName, this.upsert); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> data = Optional.empty(); + + private Optional> tokens = Optional.empty(); + + private Optional tableName = Optional.empty(); + + private Optional upsert = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1InsertRecordData other) { + data(other.getData()); + tokens(other.getTokens()); + tableName(other.getTableName()); + upsert(other.getUpsert()); + return this; + } + + /** + *

Columns names and values

+ */ + @JsonSetter(value = "data", nulls = Nulls.SKIP) + public Builder data(Optional> data) { + this.data = data; + return this; + } + + public Builder data(Map data) { + this.data = Optional.ofNullable(data); + return this; + } + + /** + *

undocumented_field; Tokens data for the columns if any

+ */ + @JsonSetter(value = "tokens", nulls = Nulls.SKIP) + public Builder tokens(Optional> tokens) { + this.tokens = tokens; + return this; + } + + public Builder tokens(Map tokens) { + this.tokens = Optional.ofNullable(tokens); + return this; + } + + /** + *

Table name for the record

+ */ + @JsonSetter(value = "tableName", nulls = Nulls.SKIP) + public Builder tableName(Optional tableName) { + this.tableName = tableName; + return this; + } + + public Builder tableName(String tableName) { + this.tableName = Optional.ofNullable(tableName); + return this; + } + + @JsonSetter(value = "upsert", nulls = Nulls.SKIP) + public Builder upsert(Optional upsert) { + this.upsert = upsert; + return this; + } + + public Builder upsert(V1Upsert upsert) { + this.upsert = Optional.ofNullable(upsert); + return this; + } + + public V1InsertRecordData build() { + return new V1InsertRecordData(data, tokens, tableName, upsert, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1InsertResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1InsertResponse.java new file mode 100644 index 00000000..4ff3ff2d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1InsertResponse.java @@ -0,0 +1,93 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1InsertResponse.Builder.class) +public final class V1InsertResponse { + private final Optional> records; + + private final Map additionalProperties; + + private V1InsertResponse(Optional> records, Map additionalProperties) { + this.records = records; + this.additionalProperties = additionalProperties; + } + + /** + * @return List of inserted records with skyflow ID, tokens, data, and any partial errors. + */ + @JsonProperty("records") + public Optional> getRecords() { + return records; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1InsertResponse && equalTo((V1InsertResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1InsertResponse other) { + return records.equals(other.records); + } + + @Override + public int hashCode() { + return Objects.hash(this.records); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> records = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1InsertResponse other) { + records(other.getRecords()); + return this; + } + + /** + *

List of inserted records with skyflow ID, tokens, data, and any partial errors.

+ */ + @JsonSetter(value = "records", nulls = Nulls.SKIP) + public Builder records(Optional> records) { + this.records = records; + return this; + } + + public Builder records(List records) { + this.records = Optional.ofNullable(records); + return this; + } + + public V1InsertResponse build() { + return new V1InsertResponse(records, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1RecordResponseObject.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1RecordResponseObject.java new file mode 100644 index 00000000..b6c2467c --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1RecordResponseObject.java @@ -0,0 +1,280 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1RecordResponseObject.Builder.class) +public final class V1RecordResponseObject { + private final Optional skyflowId; + + private final Optional> tokens; + + private final Optional> data; + + private final Optional> hashedData; + + private final Optional error; + + private final Optional httpCode; + + private final Optional tableName; + + private final Map additionalProperties; + + private V1RecordResponseObject( + Optional skyflowId, + Optional> tokens, + Optional> data, + Optional> hashedData, + Optional error, + Optional httpCode, + Optional tableName, + Map additionalProperties) { + this.skyflowId = skyflowId; + this.tokens = tokens; + this.data = data; + this.hashedData = hashedData; + this.error = error; + this.httpCode = httpCode; + this.tableName = tableName; + this.additionalProperties = additionalProperties; + } + + /** + * @return Skyflow ID for the inserted record + */ + @JsonProperty("skyflowID") + public Optional getSkyflowId() { + return skyflowId; + } + + /** + * @return Tokens data for the columns if any + */ + @JsonProperty("tokens") + public Optional> getTokens() { + return tokens; + } + + /** + * @return Columns names and values + */ + @JsonProperty("data") + public Optional> getData() { + return data; + } + + /** + * @return Hashed Data for the columns if any + */ + @JsonProperty("hashedData") + public Optional> getHashedData() { + return hashedData; + } + + /** + * @return Partial Error message if any + */ + @JsonProperty("error") + public Optional getError() { + return error; + } + + /** + * @return HTTP status code of the response + */ + @JsonProperty("httpCode") + public Optional getHttpCode() { + return httpCode; + } + + /** + * @return Name of the table record belongs to + */ + @JsonProperty("tableName") + public Optional getTableName() { + return tableName; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1RecordResponseObject && equalTo((V1RecordResponseObject) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1RecordResponseObject other) { + return skyflowId.equals(other.skyflowId) + && tokens.equals(other.tokens) + && data.equals(other.data) + && hashedData.equals(other.hashedData) + && error.equals(other.error) + && httpCode.equals(other.httpCode) + && tableName.equals(other.tableName); + } + + @Override + public int hashCode() { + return Objects.hash( + this.skyflowId, this.tokens, this.data, this.hashedData, this.error, this.httpCode, this.tableName); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional skyflowId = Optional.empty(); + + private Optional> tokens = Optional.empty(); + + private Optional> data = Optional.empty(); + + private Optional> hashedData = Optional.empty(); + + private Optional error = Optional.empty(); + + private Optional httpCode = Optional.empty(); + + private Optional tableName = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1RecordResponseObject other) { + skyflowId(other.getSkyflowId()); + tokens(other.getTokens()); + data(other.getData()); + hashedData(other.getHashedData()); + error(other.getError()); + httpCode(other.getHttpCode()); + tableName(other.getTableName()); + return this; + } + + /** + *

Skyflow ID for the inserted record

+ */ + @JsonSetter(value = "skyflowID", nulls = Nulls.SKIP) + public Builder skyflowId(Optional skyflowId) { + this.skyflowId = skyflowId; + return this; + } + + public Builder skyflowId(String skyflowId) { + this.skyflowId = Optional.ofNullable(skyflowId); + return this; + } + + /** + *

Tokens data for the columns if any

+ */ + @JsonSetter(value = "tokens", nulls = Nulls.SKIP) + public Builder tokens(Optional> tokens) { + this.tokens = tokens; + return this; + } + + public Builder tokens(Map tokens) { + this.tokens = Optional.ofNullable(tokens); + return this; + } + + /** + *

Columns names and values

+ */ + @JsonSetter(value = "data", nulls = Nulls.SKIP) + public Builder data(Optional> data) { + this.data = data; + return this; + } + + public Builder data(Map data) { + this.data = Optional.ofNullable(data); + return this; + } + + /** + *

Hashed Data for the columns if any

+ */ + @JsonSetter(value = "hashedData", nulls = Nulls.SKIP) + public Builder hashedData(Optional> hashedData) { + this.hashedData = hashedData; + return this; + } + + public Builder hashedData(Map hashedData) { + this.hashedData = Optional.ofNullable(hashedData); + return this; + } + + /** + *

Partial Error message if any

+ */ + @JsonSetter(value = "error", nulls = Nulls.SKIP) + public Builder error(Optional error) { + this.error = error; + return this; + } + + public Builder error(String error) { + this.error = Optional.ofNullable(error); + return this; + } + + /** + *

HTTP status code of the response

+ */ + @JsonSetter(value = "httpCode", nulls = Nulls.SKIP) + public Builder httpCode(Optional httpCode) { + this.httpCode = httpCode; + return this; + } + + public Builder httpCode(Integer httpCode) { + this.httpCode = Optional.ofNullable(httpCode); + return this; + } + + /** + *

Name of the table record belongs to

+ */ + @JsonSetter(value = "tableName", nulls = Nulls.SKIP) + public Builder tableName(Optional tableName) { + this.tableName = tableName; + return this; + } + + public Builder tableName(String tableName) { + this.tableName = Optional.ofNullable(tableName); + return this; + } + + public V1RecordResponseObject build() { + return new V1RecordResponseObject( + skyflowId, tokens, data, hashedData, error, httpCode, tableName, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1TokenGroupRedactions.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1TokenGroupRedactions.java new file mode 100644 index 00000000..5d5fc97f --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1TokenGroupRedactions.java @@ -0,0 +1,125 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1TokenGroupRedactions.Builder.class) +public final class V1TokenGroupRedactions { + private final Optional tokenGroupName; + + private final Optional redaction; + + private final Map additionalProperties; + + private V1TokenGroupRedactions( + Optional tokenGroupName, Optional redaction, Map additionalProperties) { + this.tokenGroupName = tokenGroupName; + this.redaction = redaction; + this.additionalProperties = additionalProperties; + } + + /** + * @return Name of the token group to be redacted + */ + @JsonProperty("tokenGroupName") + public Optional getTokenGroupName() { + return tokenGroupName; + } + + /** + * @return Name of the redaction. Eg: plain_text, redacted, mask1 + */ + @JsonProperty("redaction") + public Optional getRedaction() { + return redaction; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1TokenGroupRedactions && equalTo((V1TokenGroupRedactions) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1TokenGroupRedactions other) { + return tokenGroupName.equals(other.tokenGroupName) && redaction.equals(other.redaction); + } + + @Override + public int hashCode() { + return Objects.hash(this.tokenGroupName, this.redaction); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional tokenGroupName = Optional.empty(); + + private Optional redaction = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1TokenGroupRedactions other) { + tokenGroupName(other.getTokenGroupName()); + redaction(other.getRedaction()); + return this; + } + + /** + *

Name of the token group to be redacted

+ */ + @JsonSetter(value = "tokenGroupName", nulls = Nulls.SKIP) + public Builder tokenGroupName(Optional tokenGroupName) { + this.tokenGroupName = tokenGroupName; + return this; + } + + public Builder tokenGroupName(String tokenGroupName) { + this.tokenGroupName = Optional.ofNullable(tokenGroupName); + return this; + } + + /** + *

Name of the redaction. Eg: plain_text, redacted, mask1

+ */ + @JsonSetter(value = "redaction", nulls = Nulls.SKIP) + public Builder redaction(Optional redaction) { + this.redaction = redaction; + return this; + } + + public Builder redaction(String redaction) { + this.redaction = Optional.ofNullable(redaction); + return this; + } + + public V1TokenGroupRedactions build() { + return new V1TokenGroupRedactions(tokenGroupName, redaction, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1UniqueValue.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1UniqueValue.java new file mode 100644 index 00000000..3b188c6d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1UniqueValue.java @@ -0,0 +1,96 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1UniqueValue.Builder.class) +public final class V1UniqueValue { + private final Optional> data; + + private final Map additionalProperties; + + private V1UniqueValue(Optional> data, Map additionalProperties) { + this.data = data; + this.additionalProperties = additionalProperties; + } + + /** + * @return Columns names and values for unique value entry + */ + @JsonProperty("data") + public Optional> getData() { + return data; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1UniqueValue && equalTo((V1UniqueValue) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1UniqueValue other) { + return data.equals(other.data); + } + + @Override + public int hashCode() { + return Objects.hash(this.data); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> data = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1UniqueValue other) { + data(other.getData()); + return this; + } + + /** + *

Columns names and values for unique value entry

+ */ + @JsonSetter(value = "data", nulls = Nulls.SKIP) + public Builder data(Optional> data) { + this.data = data; + return this; + } + + public Builder data(Map data) { + this.data = Optional.ofNullable(data); + return this; + } + + public V1UniqueValue build() { + return new V1UniqueValue(data, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordData.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordData.java new file mode 100644 index 00000000..5a904005 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordData.java @@ -0,0 +1,188 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1UpdateRecordData.Builder.class) +public final class V1UpdateRecordData { + private final Optional skyflowId; + + private final Optional> data; + + private final Optional> tokens; + + private final Optional tableName; + + private final Map additionalProperties; + + private V1UpdateRecordData( + Optional skyflowId, + Optional> data, + Optional> tokens, + Optional tableName, + Map additionalProperties) { + this.skyflowId = skyflowId; + this.data = data; + this.tokens = tokens; + this.tableName = tableName; + this.additionalProperties = additionalProperties; + } + + /** + * @return Skyflow ID for the record to be updated + */ + @JsonProperty("skyflowID") + public Optional getSkyflowId() { + return skyflowId; + } + + /** + * @return List of data row wise that is to be updated in the vault + */ + @JsonProperty("data") + public Optional> getData() { + return data; + } + + /** + * @return undocumented_field; Tokens data for the columns if any + */ + @JsonProperty("tokens") + public Optional> getTokens() { + return tokens; + } + + /** + * @return Table name for the record + */ + @JsonProperty("tableName") + public Optional getTableName() { + return tableName; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1UpdateRecordData && equalTo((V1UpdateRecordData) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1UpdateRecordData other) { + return skyflowId.equals(other.skyflowId) + && data.equals(other.data) + && tokens.equals(other.tokens) + && tableName.equals(other.tableName); + } + + @Override + public int hashCode() { + return Objects.hash(this.skyflowId, this.data, this.tokens, this.tableName); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional skyflowId = Optional.empty(); + + private Optional> data = Optional.empty(); + + private Optional> tokens = Optional.empty(); + + private Optional tableName = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1UpdateRecordData other) { + skyflowId(other.getSkyflowId()); + data(other.getData()); + tokens(other.getTokens()); + tableName(other.getTableName()); + return this; + } + + /** + *

Skyflow ID for the record to be updated

+ */ + @JsonSetter(value = "skyflowID", nulls = Nulls.SKIP) + public Builder skyflowId(Optional skyflowId) { + this.skyflowId = skyflowId; + return this; + } + + public Builder skyflowId(String skyflowId) { + this.skyflowId = Optional.ofNullable(skyflowId); + return this; + } + + /** + *

List of data row wise that is to be updated in the vault

+ */ + @JsonSetter(value = "data", nulls = Nulls.SKIP) + public Builder data(Optional> data) { + this.data = data; + return this; + } + + public Builder data(Map data) { + this.data = Optional.ofNullable(data); + return this; + } + + /** + *

undocumented_field; Tokens data for the columns if any

+ */ + @JsonSetter(value = "tokens", nulls = Nulls.SKIP) + public Builder tokens(Optional> tokens) { + this.tokens = tokens; + return this; + } + + public Builder tokens(Map tokens) { + this.tokens = Optional.ofNullable(tokens); + return this; + } + + /** + *

Table name for the record

+ */ + @JsonSetter(value = "tableName", nulls = Nulls.SKIP) + public Builder tableName(Optional tableName) { + this.tableName = tableName; + return this; + } + + public Builder tableName(String tableName) { + this.tableName = Optional.ofNullable(tableName); + return this; + } + + public V1UpdateRecordData build() { + return new V1UpdateRecordData(skyflowId, data, tokens, tableName, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1UpdateResponse.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1UpdateResponse.java new file mode 100644 index 00000000..38dfe0ab --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1UpdateResponse.java @@ -0,0 +1,93 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1UpdateResponse.Builder.class) +public final class V1UpdateResponse { + private final Optional> records; + + private final Map additionalProperties; + + private V1UpdateResponse(Optional> records, Map additionalProperties) { + this.records = records; + this.additionalProperties = additionalProperties; + } + + /** + * @return List of updated records with skyflow ID, tokens, data, and any partial errors + */ + @JsonProperty("records") + public Optional> getRecords() { + return records; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1UpdateResponse && equalTo((V1UpdateResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1UpdateResponse other) { + return records.equals(other.records); + } + + @Override + public int hashCode() { + return Objects.hash(this.records); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional> records = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1UpdateResponse other) { + records(other.getRecords()); + return this; + } + + /** + *

List of updated records with skyflow ID, tokens, data, and any partial errors

+ */ + @JsonSetter(value = "records", nulls = Nulls.SKIP) + public Builder records(Optional> records) { + this.records = records; + return this; + } + + public Builder records(List records) { + this.records = Optional.ofNullable(records); + return this; + } + + public V1UpdateResponse build() { + return new V1UpdateResponse(records, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/generated/rest/types/V1Upsert.java b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1Upsert.java new file mode 100644 index 00000000..a0c27b0e --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/generated/rest/types/V1Upsert.java @@ -0,0 +1,118 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.*; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1Upsert.Builder.class) +public final class V1Upsert { + private final Optional updateType; + + private final Optional> uniqueColumns; + + private final Map additionalProperties; + + private V1Upsert( + Optional updateType, + Optional> uniqueColumns, + Map additionalProperties) { + this.updateType = updateType; + this.uniqueColumns = uniqueColumns; + this.additionalProperties = additionalProperties; + } + + @JsonProperty("updateType") + public Optional getUpdateType() { + return updateType; + } + + /** + * @return Name of a unique columns in the table. Uses upsert operations to check if a record exists based on the unique column's value. If a matching record exists, the record updates with the values you provide. If a matching record doesn't exist, the upsert operation inserts a new record. + */ + @JsonProperty("uniqueColumns") + public Optional> getUniqueColumns() { + return uniqueColumns; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1Upsert && equalTo((V1Upsert) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1Upsert other) { + return updateType.equals(other.updateType) && uniqueColumns.equals(other.uniqueColumns); + } + + @Override + public int hashCode() { + return Objects.hash(this.updateType, this.uniqueColumns); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional updateType = Optional.empty(); + + private Optional> uniqueColumns = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1Upsert other) { + updateType(other.getUpdateType()); + uniqueColumns(other.getUniqueColumns()); + return this; + } + + @JsonSetter(value = "updateType", nulls = Nulls.SKIP) + public Builder updateType(Optional updateType) { + this.updateType = updateType; + return this; + } + + public Builder updateType(FlowEnumUpdateType updateType) { + this.updateType = Optional.ofNullable(updateType); + return this; + } + + /** + *

Name of a unique columns in the table. Uses upsert operations to check if a record exists based on the unique column's value. If a matching record exists, the record updates with the values you provide. If a matching record doesn't exist, the upsert operation inserts a new record.

+ */ + @JsonSetter(value = "uniqueColumns", nulls = Nulls.SKIP) + public Builder uniqueColumns(Optional> uniqueColumns) { + this.uniqueColumns = uniqueColumns; + return this; + } + + public Builder uniqueColumns(List uniqueColumns) { + this.uniqueColumns = Optional.ofNullable(uniqueColumns); + return this; + } + + public V1Upsert build() { + return new V1Upsert(updateType, uniqueColumns, additionalProperties); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/utils/Constants.java b/flowvault/src/main/java/com/skyflow/utils/Constants.java new file mode 100644 index 00000000..ff5f9eb2 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/utils/Constants.java @@ -0,0 +1,49 @@ +package com.skyflow.utils; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public final class Constants extends BaseConstants { + public static final String SDK_NAME = "Skyflow Java SDK "; + public static final String SDK_VERSION; + public static final String VAULT_DOMAIN = ".skyvault."; + public static final String SDK_PREFIX; + public static final Integer INSERT_BATCH_SIZE = 50; + public static final Integer MAX_INSERT_BATCH_SIZE = 1000; + public static final Integer INSERT_CONCURRENCY_LIMIT = 1; + public static final Integer MAX_INSERT_CONCURRENCY_LIMIT = 10; + public static final Integer DETOKENIZE_BATCH_SIZE = 50; + public static final Integer DETOKENIZE_CONCURRENCY_LIMIT = 1; + public static final Integer MAX_DETOKENIZE_BATCH_SIZE = 1000; + public static final Integer MAX_DETOKENIZE_CONCURRENCY_LIMIT = 10; + public static final Integer DELETE_TOKENS_BATCH_SIZE = 50; + public static final Integer DELETE_TOKENS_CONCURRENCY_LIMIT = 1; + public static final Integer MAX_DELETE_TOKENS_BATCH_SIZE = 1000; + public static final Integer MAX_DELETE_TOKENS_CONCURRENCY_LIMIT = 10; + public static final Integer TOKENIZE_BATCH_SIZE = 50; + public static final Integer TOKENIZE_CONCURRENCY_LIMIT = 1; + public static final Integer MAX_TOKENIZE_BATCH_SIZE = 1000; + public static final Integer MAX_TOKENIZE_CONCURRENCY_LIMIT = 10; + public static final String DEFAULT_SDK_VERSION = "v3"; + public static final String CONTEXT_KEY_REGEX = "^[a-zA-Z0-9_]+$"; + + static { + String sdkVersion; + // Use a static initializer block to read the properties file + Properties properties = new Properties(); + try (InputStream input = Constants.class.getClassLoader().getResourceAsStream("sdk.properties")) { + if (input == null) { + sdkVersion = DEFAULT_SDK_VERSION; + } else { + properties.load(input); + sdkVersion = properties.getProperty("sdk.version", DEFAULT_SDK_VERSION); + } + } catch (IOException ex) { + sdkVersion = DEFAULT_SDK_VERSION; + } + SDK_VERSION = sdkVersion; + SDK_PREFIX = SDK_NAME + " " + SDK_VERSION; + } + +} diff --git a/flowvault/src/main/java/com/skyflow/utils/Utils.java b/flowvault/src/main/java/com/skyflow/utils/Utils.java new file mode 100644 index 00000000..207edae6 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/utils/Utils.java @@ -0,0 +1,111 @@ +package com.skyflow.utils; + +import com.google.gson.JsonObject; +import com.skyflow.config.Credentials; +import com.skyflow.enums.Env; +import com.skyflow.errors.ErrorCode; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest; +import com.skyflow.generated.rest.types.V1InsertRecordData; +import com.skyflow.generated.rest.types.V1InsertResponse; +import com.skyflow.generated.rest.types.V1RecordResponseObject; +import com.skyflow.generated.rest.types.V1TokenGroupRedactions; +import com.skyflow.logs.ErrorLogs; +import com.skyflow.logs.InfoLogs; +import com.skyflow.serviceaccount.util.BearerToken; +import com.skyflow.serviceaccount.util.Token; +import com.skyflow.utils.logger.LogUtil; +import com.skyflow.vault.data.*; +import io.github.cdimascio.dotenv.Dotenv; +import io.github.cdimascio.dotenv.DotenvException; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public final class Utils extends BaseUtils { + + public static String getVaultURL(String clusterId, Env env) { + return getVaultURL(clusterId, env, Constants.VAULT_DOMAIN); + } + + public static JsonObject getMetrics() { + JsonObject details = getCommonMetrics(); + String sdkVersion = Constants.SDK_VERSION; + details.addProperty(Constants.SDK_METRIC_NAME_VERSION, Constants.SDK_METRIC_NAME_VERSION_PREFIX + sdkVersion); + return details; + } + + + public static String getEnvVaultURL() throws SkyflowException { + try { + String vaultURL = System.getenv("VAULT_URL"); + if (vaultURL == null) { + Dotenv dotenv = Dotenv.load(); + vaultURL = dotenv.get("VAULT_URL"); + } + if (vaultURL != null && vaultURL.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_VAULT_URL.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyVaultUrl.getMessage()); + } else if (vaultURL != null && !isValidURL(vaultURL)) { + LogUtil.printErrorLog(ErrorLogs.INVALID_VAULT_URL_FORMAT.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidVaultUrlFormat.getMessage()); + } + return vaultURL; + } catch (DotenvException e) { + return null; + } + } + + public static boolean isValidURL(String url) { + URL parsedUrl; + try { + parsedUrl = new URL(url); + } catch (MalformedURLException e) { + return false; + } + + if (!parsedUrl.getProtocol().equalsIgnoreCase("https")) { + return false; + } else { + return parsedUrl.getHost() != null && !parsedUrl.getHost().isEmpty(); + } + } + + + public static String generateBearerToken(Credentials credentials) throws SkyflowException { + if (credentials.getPath() != null) { + BearerToken.BearerTokenBuilder builder = BearerToken.builder() + .setCredentials(new File(credentials.getPath())) + .setRoles(credentials.getRoles()); + Object ctx = credentials.getContext(); + if (ctx instanceof String) { + builder.setCtx((String) ctx); + } else if (ctx instanceof Map) { + builder.setCtx((Map) ctx); + } + return builder.build().getBearerToken(); + } else if (credentials.getCredentialsString() != null) { + BearerToken.BearerTokenBuilder builder = BearerToken.builder() + .setCredentials(credentials.getCredentialsString()) + .setRoles(credentials.getRoles()); + Object ctx = credentials.getContext(); + if (ctx instanceof String) { + builder.setCtx((String) ctx); + } else if (ctx instanceof Map) { + builder.setCtx((Map) ctx); + } + return builder.build().getBearerToken(); + } else { + return credentials.getToken(); + } + } + + +} diff --git a/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java b/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java new file mode 100644 index 00000000..06995825 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java @@ -0,0 +1,150 @@ +package com.skyflow.utils.validations; + +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; +import com.skyflow.errors.ErrorCode; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import com.skyflow.logs.ErrorLogs; +import com.skyflow.utils.Constants; +import com.skyflow.utils.Utils; +import com.skyflow.utils.logger.LogUtil; + +import java.util.ArrayList; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Validations extends BaseValidations { + private Validations() { + super(); + } + + public static void validateCredentials(Credentials credentials) throws SkyflowException { + int nonNullMembers = 0; + String path = credentials.getPath(); + String credentialsString = credentials.getCredentialsString(); + String token = credentials.getToken(); + String apiKey = credentials.getApiKey(); + Object context = credentials.getContext(); + ArrayList roles = credentials.getRoles(); + + if (path != null) nonNullMembers++; + if (credentialsString != null) nonNullMembers++; + if (token != null) nonNullMembers++; + if (apiKey != null) nonNullMembers++; + + if (nonNullMembers > 1) { + LogUtil.printErrorLog(ErrorLogs.MULTIPLE_TOKEN_GENERATION_MEANS_PASSED.getLog()); + throw new SkyflowException( + ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.MultipleTokenGenerationMeansPassed.getMessage() + ); + } else if (nonNullMembers < 1) { + LogUtil.printErrorLog(ErrorLogs.NO_TOKEN_GENERATION_MEANS_PASSED.getLog()); + throw new SkyflowException( + ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NoTokenGenerationMeansPassed.getMessage() + ); + } else if (path != null && path.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_CREDENTIALS_PATH.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentialFilePath.getMessage()); + } else if (credentialsString != null && credentialsString.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_CREDENTIALS_STRING.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentialsString.getMessage()); + } else if (token != null && token.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_TOKEN_VALUE.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyToken.getMessage()); + } else if (apiKey != null) { + if (apiKey.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_API_KEY_VALUE.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyApikey.getMessage()); + } else { + Pattern pattern = Pattern.compile(Constants.API_KEY_REGEX); + Matcher matcher = pattern.matcher(apiKey); + if (!matcher.matches()) { + LogUtil.printErrorLog(ErrorLogs.INVALID_API_KEY.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidApikey.getMessage()); + } + } + } else if (roles != null) { + if (roles.isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_ROLES.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRoles.getMessage()); + } else { + for (int index = 0; index < roles.size(); index++) { + String role = roles.get(index); + if (role == null || role.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_ROLE_IN_ROLES.getLog(), Integer.toString(index) + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRoleInRoles.getMessage()); + } + } + } + } + if (context != null) { + if (context instanceof String) { + String ctxStr = (String) context; + if (ctxStr.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_OR_NULL_CONTEXT.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyContext.getMessage()); + } + } else if (context instanceof Map) { + Map ctxMap = (Map) context; + if (ctxMap.isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_OR_NULL_CONTEXT.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyContext.getMessage()); + } + Pattern ctxKeyPattern = Pattern.compile(Constants.CONTEXT_KEY_REGEX); + for (Object key : ctxMap.keySet()) { + if (key == null || !ctxKeyPattern.matcher(key.toString()).matches()) { + String keyStr = key == null ? "null" : key.toString(); + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.INVALID_CONTEXT_MAP_KEY.getLog(), keyStr)); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), + Utils.parameterizedString(ErrorMessage.InvalidContextMapKey.getMessage(), keyStr)); + } + } + } else { + LogUtil.printErrorLog(ErrorLogs.INVALID_CONTEXT_TYPE.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidContextType.getMessage()); + } + } + } + + + public static void validateVaultConfiguration(VaultConfig vaultConfig) throws SkyflowException { + String vaultId = vaultConfig.getVaultId(); + String clusterId = vaultConfig.getClusterId(); + String vaultURL = vaultConfig.getVaultURL(); + Credentials credentials = vaultConfig.getCredentials(); + + if (vaultId == null) { + LogUtil.printErrorLog(ErrorLogs.VAULT_ID_IS_REQUIRED.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidVaultId.getMessage()); + } else if (vaultId.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_VAULT_ID.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyVaultId.getMessage()); + } else if (credentials != null) { + validateCredentials(credentials); + } + + if (vaultURL != null) { + if (vaultURL.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_VAULT_URL.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyVaultUrl.getMessage()); + } else if (!Utils.isValidURL(vaultURL)) { + LogUtil.printErrorLog(ErrorLogs.INVALID_VAULT_URL_FORMAT.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidVaultUrlFormat.getMessage()); + } + } else if (Utils.getEnvVaultURL() == null) { + if (clusterId == null) { + LogUtil.printErrorLog(ErrorLogs.EITHER_VAULT_URL_OR_CLUSTER_ID_REQUIRED.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EitherVaultUrlOrClusterIdRequired.getMessage()); + } else if (clusterId.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_CLUSTER_ID.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyClusterId.getMessage()); + } + } + } + +} diff --git a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java new file mode 100644 index 00000000..62f8f2cb --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java @@ -0,0 +1,34 @@ +package com.skyflow.vault.controller; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import com.skyflow.VaultClient; +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; +import com.skyflow.errors.SkyflowException; +import com.skyflow.utils.Utils; +import com.skyflow.vault.data.DetokenizeRequest; +import com.skyflow.vault.data.DetokenizeResponse; +import com.skyflow.vault.data.InsertRequest; +import com.skyflow.vault.data.InsertResponse; + +public final class VaultController extends VaultClient implements IVaultController{ + private static final Gson gson = new GsonBuilder().serializeNulls().create(); + private JsonObject metrics = Utils.getMetrics(); + + public VaultController(VaultConfig vaultConfig, Credentials credentials) throws SkyflowException { + super(vaultConfig, credentials); + } + + + @Override + public InsertResponse insert(InsertRequest request) throws SkyflowException { + return null; + } + + @Override + public DetokenizeResponse detokenize(DetokenizeRequest request) throws SkyflowException { + return null; + } +} \ No newline at end of file diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRequest.java new file mode 100644 index 00000000..0cd8b159 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRequest.java @@ -0,0 +1,4 @@ +package com.skyflow.vault.data; + +public class DetokenizeRequest extends BaseDetokenizeRequest{ +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponse.java new file mode 100644 index 00000000..91dbe710 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponse.java @@ -0,0 +1,4 @@ +package com.skyflow.vault.data; + +public class DetokenizeResponse extends BaseDetokenizeResponse{ +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java new file mode 100644 index 00000000..b3c82df0 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java @@ -0,0 +1,4 @@ +package com.skyflow.vault.data; + +public class InsertRequest extends BaseInsertRequest{ +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/InsertResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/InsertResponse.java new file mode 100644 index 00000000..2d7e6e32 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/InsertResponse.java @@ -0,0 +1,4 @@ +package com.skyflow.vault.data; + +public class InsertResponse extends BaseInsertResponse{ +} diff --git a/pom.xml b/pom.xml index 585350f7..1066c387 100644 --- a/pom.xml +++ b/pom.xml @@ -5,9 +5,9 @@ 4.0.0 com.skyflow - skyflow-java - 2.1.0 - jar + skyflow + 1.0.0 + pom ${project.groupId}:${project.artifactId} Skyflow SDK for the Java programming language @@ -25,6 +25,11 @@ skyflow + + common + v2 + flowvault + scm:git:git://github.com:skyflowapi/skyflow-java.git scm:git:ssh://github.com:skyflowapi/skyflow-java.git @@ -32,6 +37,7 @@ + true 8 8 4.12.0 @@ -42,14 +48,13 @@ 4.13.2 2.3.1 1.3.5 - ${project.version} com.fasterxml.jackson.core jackson-databind - 2.18.6 + 2.17.2 compile @@ -124,7 +129,6 @@ 4.13.2 test - org.powermock powermock-module-junit4 @@ -140,12 +144,6 @@ - - - src/main/resources - true - - org.apache.maven.plugins @@ -166,7 +164,8 @@ 3.2.0 - com.skyflow.generated.rest.* + com.skyflow.generated.rest.*: + com.skyflow.generated.auth.*: @@ -175,50 +174,14 @@ jar + org.apache.maven.plugins maven-surefire-plugin - 3.2.5 - - false - - @{argLine} - --add-opens java.base/java.lang=ALL-UNNAMED - --add-opens java.base/java.net=ALL-UNNAMED - --add-opens java.base/java.util=ALL-UNNAMED - --add-opens java.base/java.io=ALL-UNNAMED - --add-opens java.base/sun.net.www.protocol.https=ALL-UNNAMED - - - **/*Test.java - **/*Tests.java - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - 3.3.1 - - checkstyle.xml - - false - true - - **/generated/** - - - - validate - validate - - check - - - + 2.22.2 org.jacoco @@ -290,50 +253,4 @@ https://repo.maven.apache.org/maven2/ - - - - maven-central - - - central - https://central.sonatype.com/api/v1/publisher/upload - - - central-snapshots - https://central.sonatype.com/api/v1/publisher/upload - - - - - - org.sonatype.central - central-publishing-maven-plugin - 0.4.0 - true - - central - true - true - - - - - - - jfrog - - - central - prekarilabs.jfrog.io-releases - https://prekarilabs.jfrog.io/artifactory/skyflow-java - - - snapshots - prekarilabs.jfrog.io-snapshots - https://prekarilabs.jfrog.io/artifactory/skyflow-java - - - - - + \ No newline at end of file diff --git a/v2/pom.xml b/v2/pom.xml new file mode 100644 index 00000000..cf5a35b6 --- /dev/null +++ b/v2/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + com.skyflow + skyflow + 1.0.0 + ../pom.xml + + + skyflow-java + 2.1.1 + com.skyflow + + + 8 + 8 + UTF-8 + + + + + com.skyflow + common + 1.0.0 + + + + \ No newline at end of file diff --git a/src/main/java/com/skyflow/ConnectionClient.java b/v2/src/main/java/com/skyflow/ConnectionClient.java similarity index 100% rename from src/main/java/com/skyflow/ConnectionClient.java rename to v2/src/main/java/com/skyflow/ConnectionClient.java diff --git a/src/main/java/com/skyflow/Skyflow.java b/v2/src/main/java/com/skyflow/Skyflow.java similarity index 96% rename from src/main/java/com/skyflow/Skyflow.java rename to v2/src/main/java/com/skyflow/Skyflow.java index eba8d6fd..3889b0bf 100644 --- a/src/main/java/com/skyflow/Skyflow.java +++ b/v2/src/main/java/com/skyflow/Skyflow.java @@ -19,12 +19,12 @@ import java.util.LinkedHashMap; -public final class Skyflow { +public final class Skyflow extends BaseSkyflow { private final SkyflowClientBuilder builder; private Skyflow(SkyflowClientBuilder builder) { + super(builder); this.builder = builder; - LogUtil.printInfoLog(InfoLogs.CLIENT_INITIALIZED.getLog()); } public static SkyflowClientBuilder builder() { @@ -50,6 +50,16 @@ public Skyflow removeVaultConfig(String vaultId) throws SkyflowException { return this; } + public Skyflow updateSkyflowCredentials(Credentials credentials) throws SkyflowException { + this.builder.addSkyflowCredentials(credentials); + return this; + } + + public Skyflow setLogLevel(LogLevel logLevel) { + this.builder.setLogLevel(logLevel); + return this; + } + public Skyflow addConnectionConfig(ConnectionConfig connectionConfig) throws SkyflowException { this.builder.addConnectionConfig(connectionConfig); return this; @@ -69,15 +79,6 @@ public Skyflow removeConnectionConfig(String connectionId) throws SkyflowExcepti return this; } - public Skyflow updateSkyflowCredentials(Credentials credentials) throws SkyflowException { - this.builder.addSkyflowCredentials(credentials); - return this; - } - - public Skyflow setLogLevel(LogLevel logLevel) { - this.builder.setLogLevel(logLevel); - return this; - } /** @deprecated Use {@link #setLogLevel(LogLevel)} instead. */ @Deprecated(since = "2.1", forRemoval = true) @@ -86,10 +87,6 @@ public Skyflow updateLogLevel(LogLevel logLevel) { return setLogLevel(logLevel); } - public LogLevel getLogLevel() { - return this.builder.logLevel; - } - public VaultController vault() throws SkyflowException { Object[] array = this.builder.vaultClientsMap.keySet().toArray(); if (array.length < 1) { @@ -148,15 +145,13 @@ public DetectController detect(String vaultId) throws SkyflowException { return controller; } - public static final class SkyflowClientBuilder { + public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { private final LinkedHashMap connectionsMap; private final LinkedHashMap vaultClientsMap; private final LinkedHashMap detectClientsMap; private final LinkedHashMap vaultConfigMap; private final LinkedHashMap connectionConfigMap; private Credentials skyflowCredentials; - private LogLevel logLevel; - public SkyflowClientBuilder() { this.vaultClientsMap = new LinkedHashMap<>(); this.detectClientsMap = new LinkedHashMap<>(); @@ -164,7 +159,6 @@ public SkyflowClientBuilder() { this.connectionsMap = new LinkedHashMap<>(); this.connectionConfigMap = new LinkedHashMap<>(); this.skyflowCredentials = null; - this.logLevel = LogLevel.ERROR; } public SkyflowClientBuilder addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { @@ -278,12 +272,9 @@ public SkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throw return this; } + @Override public SkyflowClientBuilder setLogLevel(LogLevel logLevel) { - this.logLevel = logLevel == null ? LogLevel.ERROR : logLevel; - LogUtil.setupLogger(this.logLevel); - LogUtil.printInfoLog(Utils.parameterizedString( - InfoLogs.CURRENT_LOG_LEVEL.getLog(), String.valueOf(logLevel) - )); + super.setLogLevel(logLevel); return this; } @@ -311,4 +302,4 @@ private ConnectionConfig findAndUpdateConnectionConfig(ConnectionConfig connecti return previousConfig; } } -} +} \ No newline at end of file diff --git a/src/main/java/com/skyflow/VaultClient.java b/v2/src/main/java/com/skyflow/VaultClient.java similarity index 92% rename from src/main/java/com/skyflow/VaultClient.java rename to v2/src/main/java/com/skyflow/VaultClient.java index 1d5e5d74..ff8088eb 100644 --- a/src/main/java/com/skyflow/VaultClient.java +++ b/v2/src/main/java/com/skyflow/VaultClient.java @@ -26,12 +26,7 @@ import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; import com.skyflow.generated.rest.types.Transformations; import com.skyflow.generated.rest.types.*; -import com.skyflow.logs.InfoLogs; -import com.skyflow.serviceaccount.util.Token; -import com.skyflow.utils.Constants; import com.skyflow.utils.Utils; -import com.skyflow.utils.logger.LogUtil; -import com.skyflow.utils.validations.Validations; import com.skyflow.vault.data.FileUploadRequest; import com.skyflow.vault.data.InsertRequest; import com.skyflow.vault.data.UpdateRequest; @@ -41,33 +36,20 @@ import com.skyflow.vault.tokens.DetokenizeData; import com.skyflow.vault.tokens.DetokenizeRequest; import com.skyflow.vault.tokens.TokenizeRequest; -import io.github.cdimascio.dotenv.Dotenv; -import io.github.cdimascio.dotenv.DotenvException; -import okhttp3.ConnectionPool; -import okhttp3.OkHttpClient; -import okhttp3.Request; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.*; -import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -public class VaultClient { +public class VaultClient extends BaseVaultClient { private final VaultConfig vaultConfig; private final ApiClientBuilder apiClientBuilder; private ApiClient apiClient; - private OkHttpClient sharedHttpClient; - private String currentVaultURL; - private Credentials commonCredentials; - private Credentials finalCredentials; - private String token; - private String apiKey; protected VaultClient(VaultConfig vaultConfig, Credentials credentials) { - super(); this.vaultConfig = vaultConfig; this.commonCredentials = credentials; this.apiClientBuilder = new ApiClientBuilder(); @@ -101,12 +83,12 @@ protected VaultConfig getVaultConfig() { protected void setCommonCredentials(Credentials commonCredentials) throws SkyflowException { this.commonCredentials = commonCredentials; - prioritiseCredentials(); + super.prioritiseCredentials(this.vaultConfig.getCredentials()); } protected void updateVaultConfig() throws SkyflowException { updateVaultURL(); - prioritiseCredentials(); + super.prioritiseCredentials(this.vaultConfig.getCredentials()); } protected V1DetokenizePayload getDetokenizePayload(DetokenizeRequest request) { @@ -233,19 +215,7 @@ protected File getFileForFileUpload(FileUploadRequest fileUploadRequest) throws } protected void setBearerToken() throws SkyflowException { - prioritiseCredentials(); - Validations.validateCredentials(this.finalCredentials); - if (this.finalCredentials.getApiKey() != null) { - LogUtil.printInfoLog(InfoLogs.REUSE_API_KEY.getLog()); - token = this.finalCredentials.getApiKey(); - } else if (token == null || token.trim().isEmpty()) { - token = Utils.generateBearerToken(this.finalCredentials); - } else if (Token.isExpired(token)) { - LogUtil.printInfoLog(InfoLogs.BEARER_TOKEN_EXPIRED.getLog()); - token = Utils.generateBearerToken(this.finalCredentials); - } else { - LogUtil.printInfoLog(InfoLogs.REUSE_BEARER_TOKEN.getLog()); - } + super.setBearerToken(this.vaultConfig.getCredentials()); if (apiClient == null) { updateExecutorInHTTP(); this.apiClient = this.apiClientBuilder.build(); @@ -838,48 +808,9 @@ private void updateVaultURL() { private void updateExecutorInHTTP() { if (sharedHttpClient == null) { - sharedHttpClient = new OkHttpClient.Builder() - .connectionPool(new ConnectionPool(10, 1, TimeUnit.MINUTES)) - .addInterceptor(chain -> { - Request requestWithAuth = chain.request().newBuilder() - .header("Authorization", "Bearer " + this.token) - .build(); - return chain.proceed(requestWithAuth); - }) - .build(); + sharedHttpClient = buildSharedHttpClient(() -> this.token); apiClientBuilder.httpClient(sharedHttpClient); } } - private void prioritiseCredentials() throws SkyflowException { - try { - Credentials original = this.finalCredentials; - if (this.vaultConfig.getCredentials() != null) { - this.finalCredentials = this.vaultConfig.getCredentials(); - } else if (this.commonCredentials != null) { - this.finalCredentials = this.commonCredentials; - } else { - Dotenv dotenv = Dotenv.load(); - String sysCredentials = dotenv.get(Constants.ENV_CREDENTIALS_KEY_NAME); - if (sysCredentials == null) { - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), - ErrorMessage.EmptyCredentials.getMessage()); - } else { - this.finalCredentials = new Credentials(); - this.finalCredentials.setCredentialsString(sysCredentials); - } - } - if (original != null && !original.equals(this.finalCredentials)) { - token = null; - apiKey = null; - } - } catch (DotenvException e) { - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), - ErrorMessage.EmptyCredentials.getMessage()); - } catch (SkyflowException e) { - throw e; - } catch (Exception e) { - throw new RuntimeException(e); - } - } -} +} \ No newline at end of file diff --git a/src/main/java/com/skyflow/config/ConnectionConfig.java b/v2/src/main/java/com/skyflow/config/ConnectionConfig.java similarity index 100% rename from src/main/java/com/skyflow/config/ConnectionConfig.java rename to v2/src/main/java/com/skyflow/config/ConnectionConfig.java diff --git a/v2/src/main/java/com/skyflow/config/Credentials.java b/v2/src/main/java/com/skyflow/config/Credentials.java new file mode 100644 index 00000000..5d1a7859 --- /dev/null +++ b/v2/src/main/java/com/skyflow/config/Credentials.java @@ -0,0 +1,10 @@ +package com.skyflow.config; + +import java.util.Map; + +public class Credentials extends BaseCredentials { + + public Credentials() { + super(); + } +} diff --git a/src/main/java/com/skyflow/config/ManagementConfig.java b/v2/src/main/java/com/skyflow/config/ManagementConfig.java similarity index 100% rename from src/main/java/com/skyflow/config/ManagementConfig.java rename to v2/src/main/java/com/skyflow/config/ManagementConfig.java diff --git a/v2/src/main/java/com/skyflow/config/VaultConfig.java b/v2/src/main/java/com/skyflow/config/VaultConfig.java new file mode 100644 index 00000000..36d86668 --- /dev/null +++ b/v2/src/main/java/com/skyflow/config/VaultConfig.java @@ -0,0 +1,16 @@ +package com.skyflow.config; + +public class VaultConfig extends BaseVaultConfig { + Credentials credentials; + public VaultConfig() { + super(); + } + + public Credentials getCredentials() { + return credentials; + } + + public void setCredentials(Credentials credentials) { + this.credentials = credentials; + } +} diff --git a/src/main/java/com/skyflow/enums/DeidentifyFileStatus.java b/v2/src/main/java/com/skyflow/enums/DeidentifyFileStatus.java similarity index 100% rename from src/main/java/com/skyflow/enums/DeidentifyFileStatus.java rename to v2/src/main/java/com/skyflow/enums/DeidentifyFileStatus.java diff --git a/src/main/java/com/skyflow/enums/DetectEntities.java b/v2/src/main/java/com/skyflow/enums/DetectEntities.java similarity index 100% rename from src/main/java/com/skyflow/enums/DetectEntities.java rename to v2/src/main/java/com/skyflow/enums/DetectEntities.java diff --git a/src/main/java/com/skyflow/enums/DetectOutputTranscriptions.java b/v2/src/main/java/com/skyflow/enums/DetectOutputTranscriptions.java similarity index 100% rename from src/main/java/com/skyflow/enums/DetectOutputTranscriptions.java rename to v2/src/main/java/com/skyflow/enums/DetectOutputTranscriptions.java diff --git a/v2/src/main/java/com/skyflow/enums/Env.java b/v2/src/main/java/com/skyflow/enums/Env.java new file mode 100644 index 00000000..3d1466e9 --- /dev/null +++ b/v2/src/main/java/com/skyflow/enums/Env.java @@ -0,0 +1,8 @@ +package com.skyflow.enums; + +public enum Env { + DEV, + STAGE, + SANDBOX, + PROD +} diff --git a/v2/src/main/java/com/skyflow/enums/InterfaceName.java b/v2/src/main/java/com/skyflow/enums/InterfaceName.java new file mode 100644 index 00000000..98992f21 --- /dev/null +++ b/v2/src/main/java/com/skyflow/enums/InterfaceName.java @@ -0,0 +1,24 @@ +package com.skyflow.enums; + +public enum InterfaceName { + INSERT("insert"), + DETOKENIZE("detokenize"), + GET("get"), + UPDATE("update"), + DELETE("delete"), + QUERY("query"), + TOKENIZE("tokenize"), + FILE_UPLOAD("file upload"), + DETECT("detect"), + INVOKE_CONNECTION("invoke connection"); + + private final String interfaceName; + + InterfaceName(String interfaceName) { + this.interfaceName = interfaceName; + } + + public String getName() { + return interfaceName; + } +} diff --git a/v2/src/main/java/com/skyflow/enums/LogLevel.java b/v2/src/main/java/com/skyflow/enums/LogLevel.java new file mode 100644 index 00000000..a605b520 --- /dev/null +++ b/v2/src/main/java/com/skyflow/enums/LogLevel.java @@ -0,0 +1,9 @@ +package com.skyflow.enums; + +public enum LogLevel { + OFF, + ERROR, + WARN, + INFO, + DEBUG +} diff --git a/src/main/java/com/skyflow/enums/MaskingMethod.java b/v2/src/main/java/com/skyflow/enums/MaskingMethod.java similarity index 100% rename from src/main/java/com/skyflow/enums/MaskingMethod.java rename to v2/src/main/java/com/skyflow/enums/MaskingMethod.java diff --git a/src/main/java/com/skyflow/enums/RedactionType.java b/v2/src/main/java/com/skyflow/enums/RedactionType.java similarity index 100% rename from src/main/java/com/skyflow/enums/RedactionType.java rename to v2/src/main/java/com/skyflow/enums/RedactionType.java diff --git a/src/main/java/com/skyflow/enums/RequestMethod.java b/v2/src/main/java/com/skyflow/enums/RequestMethod.java similarity index 100% rename from src/main/java/com/skyflow/enums/RequestMethod.java rename to v2/src/main/java/com/skyflow/enums/RequestMethod.java diff --git a/src/main/java/com/skyflow/enums/TokenMode.java b/v2/src/main/java/com/skyflow/enums/TokenMode.java similarity index 100% rename from src/main/java/com/skyflow/enums/TokenMode.java rename to v2/src/main/java/com/skyflow/enums/TokenMode.java diff --git a/src/main/java/com/skyflow/enums/TokenType.java b/v2/src/main/java/com/skyflow/enums/TokenType.java similarity index 100% rename from src/main/java/com/skyflow/enums/TokenType.java rename to v2/src/main/java/com/skyflow/enums/TokenType.java diff --git a/v2/src/main/java/com/skyflow/errors/ErrorCode.java b/v2/src/main/java/com/skyflow/errors/ErrorCode.java new file mode 100644 index 00000000..943913c6 --- /dev/null +++ b/v2/src/main/java/com/skyflow/errors/ErrorCode.java @@ -0,0 +1,18 @@ +package com.skyflow.errors; + +public enum ErrorCode { + INVALID_INPUT(400), + INVALID_INDEX(404), + SERVER_ERROR(500), + PARTIAL_SUCCESS(500); + + private final int code; + + ErrorCode(int code) { + this.code = code; + } + + public int getCode() { + return code; + } +} diff --git a/src/main/java/com/skyflow/errors/ErrorMessage.java b/v2/src/main/java/com/skyflow/errors/ErrorMessage.java similarity index 100% rename from src/main/java/com/skyflow/errors/ErrorMessage.java rename to v2/src/main/java/com/skyflow/errors/ErrorMessage.java diff --git a/v2/src/main/java/com/skyflow/errors/HttpStatus.java b/v2/src/main/java/com/skyflow/errors/HttpStatus.java new file mode 100644 index 00000000..2cdadbb0 --- /dev/null +++ b/v2/src/main/java/com/skyflow/errors/HttpStatus.java @@ -0,0 +1,15 @@ +package com.skyflow.errors; + +public enum HttpStatus { + BAD_REQUEST("Bad Request"); + + private final String httpStatus; + + HttpStatus(String httpStatus) { + this.httpStatus = httpStatus; + } + + public String getHttpStatus() { + return httpStatus; + } +} diff --git a/src/main/java/com/skyflow/errors/SkyflowException.java b/v2/src/main/java/com/skyflow/errors/SkyflowException.java similarity index 100% rename from src/main/java/com/skyflow/errors/SkyflowException.java rename to v2/src/main/java/com/skyflow/errors/SkyflowException.java diff --git a/src/main/java/com/skyflow/generated/rest/ApiClient.java b/v2/src/main/java/com/skyflow/generated/rest/ApiClient.java similarity index 98% rename from src/main/java/com/skyflow/generated/rest/ApiClient.java rename to v2/src/main/java/com/skyflow/generated/rest/ApiClient.java index 1eb1e429..eb4c2020 100644 --- a/src/main/java/com/skyflow/generated/rest/ApiClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/ApiClient.java @@ -3,6 +3,7 @@ */ package com.skyflow.generated.rest; +import com.skyflow.generated.rest.ApiClientBuilder; import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.Suppliers; import com.skyflow.generated.rest.resources.audit.AuditClient; @@ -14,6 +15,7 @@ import com.skyflow.generated.rest.resources.records.RecordsClient; import com.skyflow.generated.rest.resources.strings.StringsClient; import com.skyflow.generated.rest.resources.tokens.TokensClient; + import java.util.function.Supplier; public class ApiClient { diff --git a/src/main/java/com/skyflow/generated/rest/ApiClientBuilder.java b/v2/src/main/java/com/skyflow/generated/rest/ApiClientBuilder.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/ApiClientBuilder.java rename to v2/src/main/java/com/skyflow/generated/rest/ApiClientBuilder.java diff --git a/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java b/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java similarity index 98% rename from src/main/java/com/skyflow/generated/rest/AsyncApiClient.java rename to v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java index 405d0208..ec3543a3 100644 --- a/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java @@ -3,6 +3,7 @@ */ package com.skyflow.generated.rest; +import com.skyflow.generated.rest.AsyncApiClientBuilder; import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.Suppliers; import com.skyflow.generated.rest.resources.audit.AsyncAuditClient; @@ -14,6 +15,7 @@ import com.skyflow.generated.rest.resources.records.AsyncRecordsClient; import com.skyflow.generated.rest.resources.strings.AsyncStringsClient; import com.skyflow.generated.rest.resources.tokens.AsyncTokensClient; + import java.util.function.Supplier; public class AsyncApiClient { diff --git a/src/main/java/com/skyflow/generated/rest/AsyncApiClientBuilder.java b/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClientBuilder.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/AsyncApiClientBuilder.java rename to v2/src/main/java/com/skyflow/generated/rest/AsyncApiClientBuilder.java diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java b/v2/src/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java new file mode 100644 index 00000000..be5247eb --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ApiClientApiException.java @@ -0,0 +1,74 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import okhttp3.Response; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * This exception type will be thrown for any non-2XX API responses. + */ +public class ApiClientApiException extends ApiClientException { + /** + * The error code of the response that triggered the exception. + */ + private final int statusCode; + + /** + * The body of the response that triggered the exception. + */ + private final Object body; + + private final Map> headers; + + public ApiClientApiException(String message, int statusCode, Object body) { + super(message); + this.statusCode = statusCode; + this.body = body; + this.headers = new HashMap<>(); + } + + public ApiClientApiException(String message, int statusCode, Object body, Response rawResponse) { + super(message); + this.statusCode = statusCode; + this.body = body; + this.headers = new HashMap<>(); + rawResponse.headers().forEach(header -> { + String key = header.component1(); + String value = header.component2(); + this.headers.computeIfAbsent(key, _str -> new ArrayList<>()).add(value); + }); + } + + /** + * @return the statusCode + */ + public int statusCode() { + return this.statusCode; + } + + /** + * @return the body + */ + public Object body() { + return this.body; + } + + /** + * @return the headers + */ + public Map> headers() { + return this.headers; + } + + @Override + public String toString() { + return "ApiClientApiException{" + "message: " + getMessage() + ", statusCode: " + statusCode + ", body: " + body + + "}"; + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ApiClientException.java b/v2/src/main/java/com/skyflow/generated/rest/core/ApiClientException.java new file mode 100644 index 00000000..7987eba6 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ApiClientException.java @@ -0,0 +1,17 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +/** + * This class serves as the base exception for all errors in the SDK. + */ +public class ApiClientException extends RuntimeException { + public ApiClientException(String message) { + super(message); + } + + public ApiClientException(String message, Exception e) { + super(message, e); + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java b/v2/src/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java new file mode 100644 index 00000000..c743352c --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ApiClientHttpResponse.java @@ -0,0 +1,38 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import okhttp3.Response; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public final class ApiClientHttpResponse { + + private final T body; + + private final Map> headers; + + public ApiClientHttpResponse(T body, Response rawResponse) { + this.body = body; + + Map> headers = new HashMap<>(); + rawResponse.headers().forEach(header -> { + String key = header.component1(); + String value = header.component2(); + headers.computeIfAbsent(key, _str -> new ArrayList<>()).add(value); + }); + this.headers = headers; + } + + public T body() { + return this.body; + } + + public Map> headers() { + return headers; + } +} diff --git a/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java b/v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/core/ClientOptions.java rename to v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java index ddb0e107..da41fb25 100644 --- a/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java @@ -3,12 +3,13 @@ */ package com.skyflow.generated.rest.core; +import okhttp3.OkHttpClient; + import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; -import okhttp3.OkHttpClient; public final class ClientOptions { private final Environment environment; diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java b/v2/src/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java new file mode 100644 index 00000000..a0a6d7c4 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/DateTimeDeserializer.java @@ -0,0 +1,56 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.module.SimpleModule; + +import java.io.IOException; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAccessor; +import java.time.temporal.TemporalQueries; + +/** + * Custom deserializer that handles converting ISO8601 dates into {@link OffsetDateTime} objects. + */ +class DateTimeDeserializer extends JsonDeserializer { + private static final SimpleModule MODULE; + + static { + MODULE = new SimpleModule().addDeserializer(OffsetDateTime.class, new DateTimeDeserializer()); + } + + /** + * Gets a module wrapping this deserializer as an adapter for the Jackson ObjectMapper. + * + * @return A {@link SimpleModule} to be plugged onto Jackson ObjectMapper. + */ + public static SimpleModule getModule() { + return MODULE; + } + + @Override + public OffsetDateTime deserialize(JsonParser parser, DeserializationContext context) throws IOException { + JsonToken token = parser.currentToken(); + if (token == JsonToken.VALUE_NUMBER_INT) { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(parser.getValueAsLong()), ZoneOffset.UTC); + } else { + TemporalAccessor temporal = DateTimeFormatter.ISO_DATE_TIME.parseBest( + parser.getValueAsString(), OffsetDateTime::from, LocalDateTime::from); + + if (temporal.query(TemporalQueries.offset()) == null) { + return LocalDateTime.from(temporal).atOffset(ZoneOffset.UTC); + } else { + return OffsetDateTime.from(temporal); + } + } + } +} diff --git a/src/main/java/com/skyflow/generated/rest/core/Environment.java b/v2/src/main/java/com/skyflow/generated/rest/core/Environment.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/core/Environment.java rename to v2/src/main/java/com/skyflow/generated/rest/core/Environment.java diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java b/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java new file mode 100644 index 00000000..c27d39a0 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java @@ -0,0 +1,62 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import com.skyflow.generated.rest.core.InputStreamRequestBody; +import okhttp3.MediaType; +import okhttp3.RequestBody; +import org.jetbrains.annotations.Nullable; + +import java.io.InputStream; +import java.util.Objects; + +/** + * Represents a file stream with associated metadata for file uploads. + */ +public class FileStream { + private final InputStream inputStream; + private final String fileName; + private final MediaType contentType; + + /** + * Constructs a FileStream with the given input stream and optional metadata. + * + * @param inputStream The input stream of the file content. Must not be null. + * @param fileName The name of the file, or null if unknown. + * @param contentType The MIME type of the file content, or null if unknown. + * @throws NullPointerException if inputStream is null + */ + public FileStream(InputStream inputStream, @Nullable String fileName, @Nullable MediaType contentType) { + this.inputStream = Objects.requireNonNull(inputStream, "Input stream cannot be null"); + this.fileName = fileName; + this.contentType = contentType; + } + + public FileStream(InputStream inputStream) { + this(inputStream, null, null); + } + + public InputStream getInputStream() { + return inputStream; + } + + @Nullable + public String getFileName() { + return fileName; + } + + @Nullable + public MediaType getContentType() { + return contentType; + } + + /** + * Creates a RequestBody suitable for use with OkHttp client. + * + * @return A RequestBody instance representing this file stream. + */ + public RequestBody toRequestBody() { + return new InputStreamRequestBody(contentType, inputStream); + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java b/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java new file mode 100644 index 00000000..55c3c971 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java @@ -0,0 +1,80 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okhttp3.internal.Util; +import okio.BufferedSink; +import okio.Okio; +import okio.Source; +import org.jetbrains.annotations.Nullable; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Objects; + +/** + * A custom implementation of OkHttp's RequestBody that wraps an InputStream. + * This class allows streaming of data from an InputStream directly to an HTTP request body, + * which is useful for file uploads or sending large amounts of data without loading it all into memory. + */ +public class InputStreamRequestBody extends RequestBody { + private final InputStream inputStream; + private final MediaType contentType; + + /** + * Constructs an InputStreamRequestBody with the specified content type and input stream. + * + * @param contentType the MediaType of the content, or null if not known + * @param inputStream the InputStream containing the data to be sent + * @throws NullPointerException if inputStream is null + */ + public InputStreamRequestBody(@Nullable MediaType contentType, InputStream inputStream) { + this.contentType = contentType; + this.inputStream = Objects.requireNonNull(inputStream, "inputStream == null"); + } + + /** + * Returns the content type of this request body. + * + * @return the MediaType of the content, or null if not specified + */ + @Nullable + @Override + public MediaType contentType() { + return contentType; + } + + /** + * Returns the content length of this request body, if known. + * This method attempts to determine the length using the InputStream's available() method, + * which may not always accurately reflect the total length of the stream. + * + * @return the content length, or -1 if the length is unknown + * @throws IOException if an I/O error occurs + */ + @Override + public long contentLength() throws IOException { + return inputStream.available() == 0 ? -1 : inputStream.available(); + } + + /** + * Writes the content of the InputStream to the given BufferedSink. + * This method is responsible for transferring the data from the InputStream to the network request. + * + * @param sink the BufferedSink to write the content to + * @throws IOException if an I/O error occurs during writing + */ + @Override + public void writeTo(BufferedSink sink) throws IOException { + Source source = null; + try { + source = Okio.source(inputStream); + sink.writeAll(source); + } finally { + Util.closeQuietly(Objects.requireNonNull(source)); + } + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/MediaTypes.java b/v2/src/main/java/com/skyflow/generated/rest/core/MediaTypes.java new file mode 100644 index 00000000..11714cb8 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/MediaTypes.java @@ -0,0 +1,13 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import okhttp3.MediaType; + +public final class MediaTypes { + + public static final MediaType APPLICATION_JSON = MediaType.parse("application/json"); + + private MediaTypes() {} +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/Nullable.java b/v2/src/main/java/com/skyflow/generated/rest/core/Nullable.java new file mode 100644 index 00000000..5929c12d --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/Nullable.java @@ -0,0 +1,140 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import java.util.Optional; +import java.util.function.Function; + +public final class Nullable { + + private final Either, Null> value; + + private Nullable() { + this.value = Either.left(Optional.empty()); + } + + private Nullable(T value) { + if (value == null) { + this.value = Either.right(Null.INSTANCE); + } else { + this.value = Either.left(Optional.of(value)); + } + } + + public static Nullable ofNull() { + return new Nullable<>(null); + } + + public static Nullable of(T value) { + return new Nullable<>(value); + } + + public static Nullable empty() { + return new Nullable<>(); + } + + public static Nullable ofOptional(Optional value) { + if (value.isPresent()) { + return of(value.get()); + } else { + return empty(); + } + } + + public boolean isNull() { + return this.value.isRight(); + } + + public boolean isEmpty() { + return this.value.isLeft() && !this.value.getLeft().isPresent(); + } + + public T get() { + if (this.isNull()) { + return null; + } + + return this.value.getLeft().get(); + } + + public Nullable map(Function mapper) { + if (this.isNull()) { + return Nullable.ofNull(); + } + + return Nullable.ofOptional(this.value.getLeft().map(mapper)); + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof Nullable)) { + return false; + } + + if (((Nullable) other).isNull() && this.isNull()) { + return true; + } + + return this.value.getLeft().equals(((Nullable) other).value.getLeft()); + } + + private static final class Either { + private L left = null; + private R right = null; + + private Either(L left, R right) { + if (left != null && right != null) { + throw new IllegalArgumentException("Left and right argument cannot both be non-null."); + } + + if (left == null && right == null) { + throw new IllegalArgumentException("Left and right argument cannot both be null."); + } + + if (left != null) { + this.left = left; + } + + if (right != null) { + this.right = right; + } + } + + public static Either left(L left) { + return new Either<>(left, null); + } + + public static Either right(R right) { + return new Either<>(null, right); + } + + public boolean isLeft() { + return this.left != null; + } + + public boolean isRight() { + return this.right != null; + } + + public L getLeft() { + if (!this.isLeft()) { + throw new IllegalArgumentException("Cannot get left from right Either."); + } + return this.left; + } + + public R getRight() { + if (!this.isRight()) { + throw new IllegalArgumentException("Cannot get right from left Either."); + } + return this.right; + } + } + + private static final class Null { + private static final Null INSTANCE = new Null(); + + private Null() {} + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/NullableNonemptyFilter.java b/v2/src/main/java/com/skyflow/generated/rest/core/NullableNonemptyFilter.java new file mode 100644 index 00000000..98c33be4 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/NullableNonemptyFilter.java @@ -0,0 +1,19 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import java.util.Optional; + +public final class NullableNonemptyFilter { + @Override + public boolean equals(Object o) { + boolean isOptionalEmpty = isOptionalEmpty(o); + + return isOptionalEmpty; + } + + private boolean isOptionalEmpty(Object o) { + return o instanceof Optional && !((Optional) o).isPresent(); + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java b/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java new file mode 100644 index 00000000..3f3a2213 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java @@ -0,0 +1,38 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.json.JsonMapper; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.skyflow.generated.rest.core.DateTimeDeserializer; + +import java.io.IOException; + +public final class ObjectMappers { + public static final ObjectMapper JSON_MAPPER = JsonMapper.builder() + .addModule(new Jdk8Module()) + .addModule(new JavaTimeModule()) + .addModule(DateTimeDeserializer.getModule()) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + .build(); + + private ObjectMappers() {} + + public static String stringify(Object o) { + try { + return JSON_MAPPER + .setSerializationInclusion(JsonInclude.Include.ALWAYS) + .writerWithDefaultPrettyPrinter() + .writeValueAsString(o); + } catch (IOException e) { + return o.getClass().getName() + "@" + Integer.toHexString(o.hashCode()); + } + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java b/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java new file mode 100644 index 00000000..c0687736 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java @@ -0,0 +1,139 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import okhttp3.HttpUrl; +import okhttp3.MultipartBody; + +import java.util.*; + +public class QueryStringMapper { + + private static final ObjectMapper MAPPER = ObjectMappers.JSON_MAPPER; + + public static void addQueryParameter(HttpUrl.Builder httpUrl, String key, Object value, boolean arraysAsRepeats) { + JsonNode valueNode = MAPPER.valueToTree(value); + + List> flat; + if (valueNode.isObject()) { + flat = flattenObject((ObjectNode) valueNode, arraysAsRepeats); + } else if (valueNode.isArray()) { + flat = flattenArray((ArrayNode) valueNode, "", arraysAsRepeats); + } else { + if (valueNode.isTextual()) { + httpUrl.addQueryParameter(key, valueNode.textValue()); + } else { + httpUrl.addQueryParameter(key, valueNode.toString()); + } + return; + } + + for (Map.Entry field : flat) { + if (field.getValue().isTextual()) { + httpUrl.addQueryParameter(key + field.getKey(), field.getValue().textValue()); + } else { + httpUrl.addQueryParameter(key + field.getKey(), field.getValue().toString()); + } + } + } + + public static void addFormDataPart( + MultipartBody.Builder multipartBody, String key, Object value, boolean arraysAsRepeats) { + JsonNode valueNode = MAPPER.valueToTree(value); + + List> flat; + if (valueNode.isObject()) { + flat = flattenObject((ObjectNode) valueNode, arraysAsRepeats); + } else if (valueNode.isArray()) { + flat = flattenArray((ArrayNode) valueNode, "", arraysAsRepeats); + } else { + if (valueNode.isTextual()) { + multipartBody.addFormDataPart(key, valueNode.textValue()); + } else { + multipartBody.addFormDataPart(key, valueNode.toString()); + } + return; + } + + for (Map.Entry field : flat) { + if (field.getValue().isTextual()) { + multipartBody.addFormDataPart( + key + field.getKey(), field.getValue().textValue()); + } else { + multipartBody.addFormDataPart( + key + field.getKey(), field.getValue().toString()); + } + } + } + + public static List> flattenObject(ObjectNode object, boolean arraysAsRepeats) { + List> flat = new ArrayList<>(); + + Iterator> fields = object.fields(); + while (fields.hasNext()) { + Map.Entry field = fields.next(); + + String key = "[" + field.getKey() + "]"; + + if (field.getValue().isObject()) { + List> flatField = + flattenObject((ObjectNode) field.getValue(), arraysAsRepeats); + addAll(flat, flatField, key); + } else if (field.getValue().isArray()) { + List> flatField = + flattenArray((ArrayNode) field.getValue(), key, arraysAsRepeats); + addAll(flat, flatField, ""); + } else { + flat.add(new AbstractMap.SimpleEntry<>(key, field.getValue())); + } + } + + return flat; + } + + private static List> flattenArray( + ArrayNode array, String key, boolean arraysAsRepeats) { + List> flat = new ArrayList<>(); + + Iterator elements = array.elements(); + + int index = 0; + while (elements.hasNext()) { + JsonNode element = elements.next(); + + String indexKey = key + "[" + index + "]"; + + if (arraysAsRepeats) { + indexKey = key; + } + + if (element.isObject()) { + List> flatField = flattenObject((ObjectNode) element, arraysAsRepeats); + addAll(flat, flatField, indexKey); + } else if (element.isArray()) { + List> flatField = flattenArray((ArrayNode) element, "", arraysAsRepeats); + addAll(flat, flatField, indexKey); + } else { + flat.add(new AbstractMap.SimpleEntry<>(indexKey, element)); + } + + index++; + } + + return flat; + } + + private static void addAll( + List> target, List> source, String prefix) { + for (Map.Entry entry : source) { + Map.Entry entryToAdd = + new AbstractMap.SimpleEntry<>(prefix + entry.getKey(), entry.getValue()); + target.add(entryToAdd); + } + } +} diff --git a/src/main/java/com/skyflow/generated/rest/core/RequestOptions.java b/v2/src/main/java/com/skyflow/generated/rest/core/RequestOptions.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/core/RequestOptions.java rename to v2/src/main/java/com/skyflow/generated/rest/core/RequestOptions.java diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java new file mode 100644 index 00000000..1bb0b5dc --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java @@ -0,0 +1,46 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import okhttp3.Response; + +import java.io.FilterInputStream; +import java.io.IOException; + +/** + * A custom InputStream that wraps the InputStream from the OkHttp Response and ensures that the + * OkHttp Response object is properly closed when the stream is closed. + * + * This class extends FilterInputStream and takes an OkHttp Response object as a parameter. + * It retrieves the InputStream from the Response and overrides the close method to close + * both the InputStream and the Response object, ensuring proper resource management and preventing + * premature closure of the underlying HTTP connection. + */ +public class ResponseBodyInputStream extends FilterInputStream { + private final Response response; + + /** + * Constructs a ResponseBodyInputStream that wraps the InputStream from the given OkHttp + * Response object. + * + * @param response the OkHttp Response object from which the InputStream is retrieved + * @throws IOException if an I/O error occurs while retrieving the InputStream + */ + public ResponseBodyInputStream(Response response) throws IOException { + super(response.body().byteStream()); + this.response = response; + } + + /** + * Closes the InputStream and the associated OkHttp Response object. This ensures that the + * underlying HTTP connection is properly closed after the stream is no longer needed. + * + * @throws IOException if an I/O error occurs + */ + @Override + public void close() throws IOException { + super.close(); + response.close(); // Ensure the response is closed when the stream is closed + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java new file mode 100644 index 00000000..e6c1a525 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java @@ -0,0 +1,45 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import okhttp3.Response; + +import java.io.FilterReader; +import java.io.IOException; + +/** + * A custom Reader that wraps the Reader from the OkHttp Response and ensures that the + * OkHttp Response object is properly closed when the reader is closed. + * + * This class extends FilterReader and takes an OkHttp Response object as a parameter. + * It retrieves the Reader from the Response and overrides the close method to close + * both the Reader and the Response object, ensuring proper resource management and preventing + * premature closure of the underlying HTTP connection. + */ +public class ResponseBodyReader extends FilterReader { + private final Response response; + + /** + * Constructs a ResponseBodyReader that wraps the Reader from the given OkHttp Response object. + * + * @param response the OkHttp Response object from which the Reader is retrieved + * @throws IOException if an I/O error occurs while retrieving the Reader + */ + public ResponseBodyReader(Response response) throws IOException { + super(response.body().charStream()); + this.response = response; + } + + /** + * Closes the Reader and the associated OkHttp Response object. This ensures that the + * underlying HTTP connection is properly closed after the reader is no longer needed. + * + * @throws IOException if an I/O error occurs + */ + @Override + public void close() throws IOException { + super.close(); + response.close(); // Ensure the response is closed when the reader is closed + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java b/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java new file mode 100644 index 00000000..7a28c3c9 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java @@ -0,0 +1,79 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import okhttp3.Interceptor; +import okhttp3.Response; + +import java.io.IOException; +import java.time.Duration; +import java.util.Optional; +import java.util.Random; + +public class RetryInterceptor implements Interceptor { + + private static final Duration ONE_SECOND = Duration.ofSeconds(1); + private final ExponentialBackoff backoff; + private final Random random = new Random(); + + public RetryInterceptor(int maxRetries) { + this.backoff = new ExponentialBackoff(maxRetries); + } + + @Override + public Response intercept(Chain chain) throws IOException { + Response response = chain.proceed(chain.request()); + + if (shouldRetry(response.code())) { + return retryChain(response, chain); + } + + return response; + } + + private Response retryChain(Response response, Chain chain) throws IOException { + Optional nextBackoff = this.backoff.nextBackoff(); + while (nextBackoff.isPresent()) { + try { + Thread.sleep(nextBackoff.get().toMillis()); + } catch (InterruptedException e) { + throw new IOException("Interrupted while trying request", e); + } + response.close(); + response = chain.proceed(chain.request()); + if (shouldRetry(response.code())) { + nextBackoff = this.backoff.nextBackoff(); + } else { + return response; + } + } + + return response; + } + + private static boolean shouldRetry(int statusCode) { + return statusCode == 408 || statusCode == 429 || statusCode >= 500; + } + + private final class ExponentialBackoff { + + private final int maxNumRetries; + + private int retryNumber = 0; + + ExponentialBackoff(int maxNumRetries) { + this.maxNumRetries = maxNumRetries; + } + + public Optional nextBackoff() { + retryNumber += 1; + if (retryNumber > maxNumRetries) { + return Optional.empty(); + } + + int upperBound = (int) Math.pow(2, retryNumber); + return Optional.of(ONE_SECOND.multipliedBy(random.nextInt(upperBound))); + } + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/Stream.java b/v2/src/main/java/com/skyflow/generated/rest/core/Stream.java new file mode 100644 index 00000000..f037712a --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/Stream.java @@ -0,0 +1,97 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import java.io.Reader; +import java.util.Iterator; +import java.util.NoSuchElementException; +import java.util.Scanner; + +/** + * The {@code Stream} class implements {@link Iterable} to provide a simple mechanism for reading and parsing + * objects of a given type from data streamed via a {@link Reader} using a specified delimiter. + *

+ * {@code Stream} assumes that data is being pushed to the provided {@link Reader} asynchronously and utilizes a + * {@code Scanner} to block during iteration if the next object is not available. + * + * @param The type of objects in the stream. + */ +public final class Stream implements Iterable { + /** + * The {@link Class} of the objects in the stream. + */ + private final Class valueType; + /** + * The {@link Scanner} used for reading from the input stream and blocking when needed during iteration. + */ + private final Scanner scanner; + + /** + * Constructs a new {@code Stream} with the specified value type, reader, and delimiter. + * + * @param valueType The class of the objects in the stream. + * @param reader The reader that provides the streamed data. + * @param delimiter The delimiter used to separate elements in the stream. + */ + public Stream(Class valueType, Reader reader, String delimiter) { + this.scanner = new Scanner(reader).useDelimiter(delimiter); + this.valueType = valueType; + } + + /** + * Returns an iterator over the elements in this stream that blocks during iteration when the next object is + * not yet available. + * + * @return An iterator that can be used to traverse the elements in the stream. + */ + @Override + public Iterator iterator() { + return new Iterator() { + /** + * Returns {@code true} if there are more elements in the stream. + *

+ * Will block and wait for input if the stream has not ended and the next object is not yet available. + * + * @return {@code true} if there are more elements, {@code false} otherwise. + */ + @Override + public boolean hasNext() { + return scanner.hasNext(); + } + + /** + * Returns the next element in the stream. + *

+ * Will block and wait for input if the stream has not ended and the next object is not yet available. + * + * @return The next element in the stream. + * @throws NoSuchElementException If there are no more elements in the stream. + */ + @Override + public T next() { + if (!scanner.hasNext()) { + throw new NoSuchElementException(); + } else { + try { + T parsedResponse = ObjectMappers.JSON_MAPPER.readValue( + scanner.next().trim(), valueType); + return parsedResponse; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + /** + * Removing elements from {@code Stream} is not supported. + * + * @throws UnsupportedOperationException Always, as removal is not supported. + */ + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/Suppliers.java b/v2/src/main/java/com/skyflow/generated/rest/core/Suppliers.java new file mode 100644 index 00000000..307d5852 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/core/Suppliers.java @@ -0,0 +1,23 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.core; + +import java.util.Objects; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; + +public final class Suppliers { + private Suppliers() {} + + public static Supplier memoize(Supplier delegate) { + AtomicReference value = new AtomicReference<>(); + return () -> { + T val = value.get(); + if (val == null) { + val = value.updateAndGet(cur -> cur == null ? Objects.requireNonNull(delegate.get()) : cur); + } + return val; + }; + } +} diff --git a/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java b/v2/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java rename to v2/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java diff --git a/src/main/java/com/skyflow/generated/rest/errors/InternalServerError.java b/v2/src/main/java/com/skyflow/generated/rest/errors/InternalServerError.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/errors/InternalServerError.java rename to v2/src/main/java/com/skyflow/generated/rest/errors/InternalServerError.java diff --git a/src/main/java/com/skyflow/generated/rest/errors/NotFoundError.java b/v2/src/main/java/com/skyflow/generated/rest/errors/NotFoundError.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/errors/NotFoundError.java rename to v2/src/main/java/com/skyflow/generated/rest/errors/NotFoundError.java diff --git a/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java b/v2/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java rename to v2/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncAuditClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncAuditClient.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/resources/audit/AsyncAuditClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncAuditClient.java index 0064558d..7e2719f2 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncAuditClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncAuditClient.java @@ -7,6 +7,7 @@ import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.resources.audit.requests.AuditServiceListAuditEventsRequest; import com.skyflow.generated.rest.types.V1AuditResponse; + import java.util.concurrent.CompletableFuture; public class AsyncAuditClient { diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java similarity index 95% rename from src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java index 875ca259..e1516eaf 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java @@ -4,27 +4,15 @@ package com.skyflow.generated.rest.resources.audit; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.audit.requests.AuditServiceListAuditEventsRequest; import com.skyflow.generated.rest.types.V1AuditResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawAuditClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/AuditClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AuditClient.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/audit/AuditClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/AuditClient.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java similarity index 95% rename from src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java index bfec3bf2..68cd5e3b 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java @@ -4,23 +4,13 @@ package com.skyflow.generated.rest.resources.audit; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.audit.requests.AuditServiceListAuditEventsRequest; import com.skyflow.generated.rest.types.V1AuditResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawAuditClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java similarity index 98% rename from src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java index 8b6686e4..e9f8cf12 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java @@ -3,26 +3,16 @@ */ package com.skyflow.generated.rest.resources.audit.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsActionType; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsContextAccessType; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsContextActorType; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsContextAuthMode; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsResourceType; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestSortOpsOrderBy; +import com.skyflow.generated.rest.resources.audit.types.*; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = AuditServiceListAuditEventsRequest.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsActionType.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsActionType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsActionType.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsActionType.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextAccessType.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextAccessType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextAccessType.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextAccessType.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextActorType.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextActorType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextActorType.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextActorType.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextAuthMode.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextAuthMode.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextAuthMode.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsContextAuthMode.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsResourceType.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsResourceType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsResourceType.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestFilterOpsResourceType.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestSortOpsOrderBy.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestSortOpsOrderBy.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestSortOpsOrderBy.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/audit/types/AuditServiceListAuditEventsRequestSortOpsOrderBy.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncBinLookupClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncBinLookupClient.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncBinLookupClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncBinLookupClient.java index f10ed979..fb2d07d0 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncBinLookupClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncBinLookupClient.java @@ -7,6 +7,7 @@ import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.resources.binlookup.requests.V1BinListRequest; import com.skyflow.generated.rest.types.V1BinListResponse; + import java.util.concurrent.CompletableFuture; public class AsyncBinLookupClient { diff --git a/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java similarity index 88% rename from src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java index 2a3f5f4f..9cf03c7d 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java @@ -4,28 +4,15 @@ package com.skyflow.generated.rest.resources.binlookup; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.binlookup.requests.V1BinListRequest; import com.skyflow.generated.rest.types.V1BinListResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawBinLookupClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/binlookup/BinLookupClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/BinLookupClient.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/binlookup/BinLookupClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/BinLookupClient.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java similarity index 87% rename from src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java index bb08039b..21e77017 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java @@ -4,24 +4,13 @@ package com.skyflow.generated.rest.resources.binlookup; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.binlookup.requests.V1BinListRequest; import com.skyflow.generated.rest.types.V1BinListResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawBinLookupClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java similarity index 91% rename from src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java index af827e01..def40293 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java @@ -3,21 +3,12 @@ */ package com.skyflow.generated.rest.resources.binlookup.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1VaultSchemaConfig; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BinListRequest.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java index 1f157223..01031423 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java @@ -5,20 +5,11 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; -import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; -import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; +import com.skyflow.generated.rest.resources.files.requests.*; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; + import java.util.concurrent.CompletableFuture; public class AsyncFilesClient { diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java similarity index 96% rename from src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java index 014f3cf8..e7f008e8 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java @@ -4,44 +4,20 @@ package com.skyflow.generated.rest.resources.files; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; -import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; -import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; +import com.skyflow.generated.rest.resources.files.requests.*; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawFilesClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java similarity index 91% rename from src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java index 8d083d76..bcda96e6 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java @@ -5,17 +5,7 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; -import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; -import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; +import com.skyflow.generated.rest.resources.files.requests.*; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java similarity index 96% rename from src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java index 164c4d18..d277d224 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java @@ -4,40 +4,18 @@ package com.skyflow.generated.rest.resources.files; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; -import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; -import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; +import com.skyflow.generated.rest.resources.files.requests.*; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawFilesClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java similarity index 98% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java index d1cadca3..c2baa931 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java @@ -3,13 +3,7 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileAudioRequestDeidentifyAudioEntityTypesItem; @@ -17,13 +11,10 @@ import com.skyflow.generated.rest.types.FileDataDeidentifyAudio; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileAudioRequestDeidentifyAudio.Builder.class) public final class DeidentifyFileAudioRequestDeidentifyAudio { diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java index 5b6a653f..1844a116 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileDocumentPdfRequestDeidentifyPdfEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyPdf; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileDocumentPdfRequestDeidentifyPdf.Builder.class) public final class DeidentifyFileDocumentPdfRequestDeidentifyPdf { diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java index 015bba9e..25ddea9c 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java @@ -3,13 +3,7 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileImageRequestDeidentifyImageEntityTypesItem; @@ -17,13 +11,10 @@ import com.skyflow.generated.rest.types.FileDataDeidentifyImage; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileImageRequestDeidentifyImage.Builder.class) public final class DeidentifyFileImageRequestDeidentifyImage { diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java index c2cdcfb5..62d77229 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestEntityTypesItem; import com.skyflow.generated.rest.types.FileData; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequest.Builder.class) public final class DeidentifyFileRequest { diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java index fc3db52a..c4d9841d 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyDocumentEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyDocument; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyDocument.Builder.class) public final class DeidentifyFileRequestDeidentifyDocument { diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java index f45802ec..e1cea77f 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyPresentationEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyPresentation; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyPresentation.Builder.class) public final class DeidentifyFileRequestDeidentifyPresentation { diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java index 93ea921a..10ca8feb 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifySpreadsheetEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifySpreadsheet; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifySpreadsheet.Builder.class) public final class DeidentifyFileRequestDeidentifySpreadsheet { diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java index b579fe1b..e3f555b8 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyStructuredTextEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyStructuredText; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyStructuredText.Builder.class) public final class DeidentifyFileRequestDeidentifyStructuredText { diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java index 7a7c6615..8457c790 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyTextEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyText; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyText.Builder.class) public final class DeidentifyFileRequestDeidentifyText { diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java similarity index 86% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java index 490392f1..cde24227 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java index 0f5e79ab..5cd22747 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java @@ -3,22 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.FileDataReidentifyFile; import com.skyflow.generated.rest.types.Format; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ReidentifyFileRequestReidentifyFile.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileAudioRequestDeidentifyAudioEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileAudioRequestDeidentifyAudioEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileAudioRequestDeidentifyAudioEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileAudioRequestDeidentifyAudioEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileAudioRequestDeidentifyAudioOutputTranscription.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileAudioRequestDeidentifyAudioOutputTranscription.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileAudioRequestDeidentifyAudioOutputTranscription.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileAudioRequestDeidentifyAudioOutputTranscription.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileDocumentPdfRequestDeidentifyPdfEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileDocumentPdfRequestDeidentifyPdfEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileDocumentPdfRequestDeidentifyPdfEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileDocumentPdfRequestDeidentifyPdfEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileImageRequestDeidentifyImageEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileImageRequestDeidentifyImageEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileImageRequestDeidentifyImageEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileImageRequestDeidentifyImageEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileImageRequestDeidentifyImageMaskingMethod.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileImageRequestDeidentifyImageMaskingMethod.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileImageRequestDeidentifyImageMaskingMethod.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileImageRequestDeidentifyImageMaskingMethod.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyDocumentEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyDocumentEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyDocumentEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyDocumentEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyPresentationEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyPresentationEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyPresentationEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyPresentationEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifySpreadsheetEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifySpreadsheetEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifySpreadsheetEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifySpreadsheetEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyStructuredTextEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyStructuredTextEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyStructuredTextEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyStructuredTextEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyTextEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyTextEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyTextEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestDeidentifyTextEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/files/types/DeidentifyFileRequestEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncGuardrailsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncGuardrailsClient.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncGuardrailsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncGuardrailsClient.java index af874ecd..fa45ee60 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncGuardrailsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncGuardrailsClient.java @@ -7,6 +7,7 @@ import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.resources.guardrails.requests.DetectGuardrailsRequest; import com.skyflow.generated.rest.types.DetectGuardrailsResponse; + import java.util.concurrent.CompletableFuture; public class AsyncGuardrailsClient { diff --git a/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java similarity index 89% rename from src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java index 0088d7a3..80853472 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java @@ -4,31 +4,18 @@ package com.skyflow.generated.rest.resources.guardrails; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; import com.skyflow.generated.rest.resources.guardrails.requests.DetectGuardrailsRequest; import com.skyflow.generated.rest.types.DetectGuardrailsResponse; import com.skyflow.generated.rest.types.ErrorResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawGuardrailsClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/guardrails/GuardrailsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/GuardrailsClient.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/guardrails/GuardrailsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/GuardrailsClient.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java similarity index 87% rename from src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java index 0223134b..5bf5c31a 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java @@ -4,27 +4,16 @@ package com.skyflow.generated.rest.resources.guardrails; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; import com.skyflow.generated.rest.resources.guardrails.requests.DetectGuardrailsRequest; import com.skyflow.generated.rest.types.DetectGuardrailsResponse; import com.skyflow.generated.rest.types.ErrorResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawGuardrailsClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java similarity index 93% rename from src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java index 9063fed8..75250f8c 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java @@ -3,22 +3,13 @@ */ package com.skyflow.generated.rest.resources.guardrails.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DetectGuardrailsRequest.Builder.class) public final class DetectGuardrailsRequest { diff --git a/src/main/java/com/skyflow/generated/rest/resources/query/AsyncQueryClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncQueryClient.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/resources/query/AsyncQueryClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncQueryClient.java index 894c97b5..cab967a7 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/query/AsyncQueryClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncQueryClient.java @@ -7,6 +7,7 @@ import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.resources.query.requests.QueryServiceExecuteQueryBody; import com.skyflow.generated.rest.types.V1GetQueryResponse; + import java.util.concurrent.CompletableFuture; public class AsyncQueryClient { diff --git a/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java similarity index 91% rename from src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java index 96e2dc0b..7b8c9383 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java @@ -4,28 +4,15 @@ package com.skyflow.generated.rest.resources.query; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.query.requests.QueryServiceExecuteQueryBody; import com.skyflow.generated.rest.types.V1GetQueryResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawQueryClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/query/QueryClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/QueryClient.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/query/QueryClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/query/QueryClient.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java similarity index 91% rename from src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java index 3e5bee51..ec88ae93 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java @@ -4,24 +4,13 @@ package com.skyflow.generated.rest.resources.query; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.query.requests.QueryServiceExecuteQueryBody; import com.skyflow.generated.rest.types.V1GetQueryResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawQueryClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java similarity index 94% rename from src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java index 60565eb5..000cd685 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.resources.query.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java similarity index 96% rename from src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java index a810f142..b1c9ae18 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java @@ -4,54 +4,21 @@ package com.skyflow.generated.rest.resources.records; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; -import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; -import com.skyflow.generated.rest.types.ErrorResponse; -import com.skyflow.generated.rest.types.UploadFileV2Response; -import com.skyflow.generated.rest.types.V1BatchOperationResponse; -import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; -import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; -import com.skyflow.generated.rest.types.V1DeleteFileResponse; -import com.skyflow.generated.rest.types.V1DeleteRecordResponse; -import com.skyflow.generated.rest.types.V1FieldRecords; -import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; -import com.skyflow.generated.rest.types.V1InsertRecordResponse; -import com.skyflow.generated.rest.types.V1UpdateRecordResponse; +import com.skyflow.generated.rest.resources.records.requests.*; +import com.skyflow.generated.rest.types.*; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Optional; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.MediaType; -import okhttp3.MultipartBody; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawRecordsClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java similarity index 91% rename from src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java index c6925b50..ed7240c9 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java @@ -5,24 +5,9 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; -import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; -import com.skyflow.generated.rest.types.UploadFileV2Response; -import com.skyflow.generated.rest.types.V1BatchOperationResponse; -import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; -import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; -import com.skyflow.generated.rest.types.V1DeleteFileResponse; -import com.skyflow.generated.rest.types.V1DeleteRecordResponse; -import com.skyflow.generated.rest.types.V1FieldRecords; -import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; -import com.skyflow.generated.rest.types.V1InsertRecordResponse; -import com.skyflow.generated.rest.types.V1UpdateRecordResponse; +import com.skyflow.generated.rest.resources.records.requests.*; +import com.skyflow.generated.rest.types.*; + import java.io.File; import java.util.Optional; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java similarity index 95% rename from src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java index d1b607a0..29530b56 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java @@ -4,50 +4,19 @@ package com.skyflow.generated.rest.resources.records; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; -import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; -import com.skyflow.generated.rest.types.ErrorResponse; -import com.skyflow.generated.rest.types.UploadFileV2Response; -import com.skyflow.generated.rest.types.V1BatchOperationResponse; -import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; -import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; -import com.skyflow.generated.rest.types.V1DeleteFileResponse; -import com.skyflow.generated.rest.types.V1DeleteRecordResponse; -import com.skyflow.generated.rest.types.V1FieldRecords; -import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; -import com.skyflow.generated.rest.types.V1InsertRecordResponse; -import com.skyflow.generated.rest.types.V1UpdateRecordResponse; +import com.skyflow.generated.rest.resources.records.requests.*; +import com.skyflow.generated.rest.types.*; +import okhttp3.*; + import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Optional; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.MediaType; -import okhttp3.MultipartBody; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawRecordsClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java index 7b4599c6..7cf3e02b 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java @@ -5,24 +5,10 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; -import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; -import com.skyflow.generated.rest.types.UploadFileV2Response; -import com.skyflow.generated.rest.types.V1BatchOperationResponse; -import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; -import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; -import com.skyflow.generated.rest.types.V1DeleteFileResponse; -import com.skyflow.generated.rest.types.V1DeleteRecordResponse; -import com.skyflow.generated.rest.types.V1FieldRecords; -import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; -import com.skyflow.generated.rest.types.V1InsertRecordResponse; -import com.skyflow.generated.rest.types.V1UpdateRecordResponse; +import com.skyflow.generated.rest.resources.records.RawRecordsClient; +import com.skyflow.generated.rest.resources.records.requests.*; +import com.skyflow.generated.rest.types.*; + import java.io.File; import java.util.Optional; diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java similarity index 88% rename from src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java index fe805970..3efb0a98 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java index 48586839..c1997213 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java @@ -3,22 +3,13 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1BatchRecord; import com.skyflow.generated.rest.types.V1Byot; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceBatchOperationBody.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java similarity index 85% rename from src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java index b417adbb..4b9dcced 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceBulkDeleteRecordBody.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java similarity index 96% rename from src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java index 22c9090c..9b59168a 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java @@ -3,23 +3,13 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.records.types.RecordServiceBulkGetRecordRequestOrderBy; import com.skyflow.generated.rest.resources.records.types.RecordServiceBulkGetRecordRequestRedaction; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceBulkGetRecordRequest.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java index eef17665..91317d02 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java @@ -3,22 +3,12 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.records.types.RecordServiceGetRecordRequestRedaction; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceGetRecordRequest.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java similarity index 93% rename from src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java index e1de00f7..e832e396 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java @@ -3,22 +3,13 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1Byot; import com.skyflow.generated.rest.types.V1FieldRecords; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceInsertRecordBody.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java index e52af2e4..f5c7a229 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java @@ -3,17 +3,12 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1Byot; import com.skyflow.generated.rest.types.V1FieldRecords; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java similarity index 95% rename from src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java index f162530c..81a9f837 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java @@ -3,20 +3,15 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = UploadFileV2Request.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceBulkGetRecordRequestOrderBy.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceBulkGetRecordRequestOrderBy.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceBulkGetRecordRequestOrderBy.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceBulkGetRecordRequestOrderBy.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceBulkGetRecordRequestRedaction.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceBulkGetRecordRequestRedaction.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceBulkGetRecordRequestRedaction.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceBulkGetRecordRequestRedaction.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceGetRecordRequestRedaction.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceGetRecordRequestRedaction.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceGetRecordRequestRedaction.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/records/types/RecordServiceGetRecordRequestRedaction.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java similarity index 94% rename from src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java index 96428263..36b364b5 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java @@ -4,13 +4,7 @@ package com.skyflow.generated.rest.resources.strings; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; @@ -19,18 +13,11 @@ import com.skyflow.generated.rest.types.DeidentifyStringResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.IdentifyResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawStringsClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncStringsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncStringsClient.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/resources/strings/AsyncStringsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncStringsClient.java index 046bb289..66ef72c5 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncStringsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncStringsClient.java @@ -9,6 +9,7 @@ import com.skyflow.generated.rest.resources.strings.requests.ReidentifyStringRequest; import com.skyflow.generated.rest.types.DeidentifyStringResponse; import com.skyflow.generated.rest.types.IdentifyResponse; + import java.util.concurrent.CompletableFuture; public class AsyncStringsClient { diff --git a/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java index a5e16949..da6bec56 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java @@ -4,13 +4,7 @@ package com.skyflow.generated.rest.resources.strings; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; @@ -19,14 +13,9 @@ import com.skyflow.generated.rest.types.DeidentifyStringResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.IdentifyResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawStringsClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/strings/StringsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/StringsClient.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/strings/StringsClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/strings/StringsClient.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java index 943ddde4..06ec6cec 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java @@ -3,25 +3,16 @@ */ package com.skyflow.generated.rest.resources.strings.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.strings.types.DeidentifyStringRequestEntityTypesItem; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyStringRequest.Builder.class) public final class DeidentifyStringRequest { diff --git a/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java similarity index 91% rename from src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java index 59c1aaf2..3c42390c 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java @@ -3,16 +3,11 @@ */ package com.skyflow.generated.rest.resources.strings.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.Format; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/resources/strings/types/DeidentifyStringRequestEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/types/DeidentifyStringRequestEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/strings/types/DeidentifyStringRequestEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/strings/types/DeidentifyStringRequestEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java similarity index 94% rename from src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java index fbf69580..794035bd 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java @@ -4,30 +4,17 @@ package com.skyflow.generated.rest.resources.tokens; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.tokens.requests.V1DetokenizePayload; import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; import com.skyflow.generated.rest.types.V1DetokenizeResponse; import com.skyflow.generated.rest.types.V1TokenizeResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawTokensClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java similarity index 99% rename from src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java index 26d5ea05..621701af 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java @@ -9,6 +9,7 @@ import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; import com.skyflow.generated.rest.types.V1DetokenizeResponse; import com.skyflow.generated.rest.types.V1TokenizeResponse; + import java.util.concurrent.CompletableFuture; public class AsyncTokensClient { diff --git a/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java similarity index 93% rename from src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java index 5ed17d28..7ad69d11 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java @@ -4,26 +4,15 @@ package com.skyflow.generated.rest.resources.tokens; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.tokens.requests.V1DetokenizePayload; import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; import com.skyflow.generated.rest.types.V1DetokenizeResponse; import com.skyflow.generated.rest.types.V1TokenizeResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawTokensClient { protected final ClientOptions clientOptions; diff --git a/src/main/java/com/skyflow/generated/rest/resources/tokens/TokensClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/TokensClient.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/resources/tokens/TokensClient.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/tokens/TokensClient.java diff --git a/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java similarity index 91% rename from src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java index 59318aa8..52571f64 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java @@ -3,21 +3,12 @@ */ package com.skyflow.generated.rest.resources.tokens.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1DetokenizeRecordRequest; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1DetokenizePayload.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java similarity index 85% rename from src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java rename to v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java index 9729023e..e5fc08f4 100644 --- a/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java @@ -3,21 +3,12 @@ */ package com.skyflow.generated.rest.resources.tokens.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1TokenizeRecordRequest; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1TokenizePayload.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/AuditEventAuditResourceType.java b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventAuditResourceType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/AuditEventAuditResourceType.java rename to v2/src/main/java/com/skyflow/generated/rest/types/AuditEventAuditResourceType.java diff --git a/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java rename to v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java index 210f96c0..73aed9c1 100644 --- a/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java similarity index 87% rename from src/main/java/com/skyflow/generated/rest/types/AuditEventData.java rename to v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java index e2028fba..bab4b42a 100644 --- a/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java similarity index 89% rename from src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java rename to v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java index 1352c42f..9d3bbaed 100644 --- a/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/BatchRecordMethod.java b/v2/src/main/java/com/skyflow/generated/rest/types/BatchRecordMethod.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/BatchRecordMethod.java rename to v2/src/main/java/com/skyflow/generated/rest/types/BatchRecordMethod.java diff --git a/src/main/java/com/skyflow/generated/rest/types/ContextAccessType.java b/v2/src/main/java/com/skyflow/generated/rest/types/ContextAccessType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/ContextAccessType.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ContextAccessType.java diff --git a/src/main/java/com/skyflow/generated/rest/types/ContextAuthMode.java b/v2/src/main/java/com/skyflow/generated/rest/types/ContextAuthMode.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/ContextAuthMode.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ContextAuthMode.java diff --git a/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java similarity index 93% rename from src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java index a7dd7c68..dc244be8 100644 --- a/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutputProcessedFileExtension.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutputProcessedFileExtension.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutputProcessedFileExtension.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutputProcessedFileExtension.java diff --git a/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutputProcessedFileType.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutputProcessedFileType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutputProcessedFileType.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutputProcessedFileType.java diff --git a/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java similarity index 87% rename from src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java index d2b8e5b6..d5a2ebd5 100644 --- a/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java similarity index 91% rename from src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java index e831f142..1389fa0f 100644 --- a/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyStringResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java similarity index 94% rename from src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java index 9773dcc3..9cb2d319 100644 --- a/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java @@ -3,20 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DetectGuardrailsResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponseValidation.java b/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponseValidation.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponseValidation.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponseValidation.java diff --git a/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java similarity index 95% rename from src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java index c97f7635..b73f7845 100644 --- a/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DetectRunsResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponseOutputType.java b/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponseOutputType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/DetectRunsResponseOutputType.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponseOutputType.java diff --git a/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponseStatus.java b/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponseStatus.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/DetectRunsResponseStatus.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponseStatus.java diff --git a/src/main/java/com/skyflow/generated/rest/types/DetokenizeRecordResponseValueType.java b/v2/src/main/java/com/skyflow/generated/rest/types/DetokenizeRecordResponseValueType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/DetokenizeRecordResponseValueType.java rename to v2/src/main/java/com/skyflow/generated/rest/types/DetokenizeRecordResponseValueType.java diff --git a/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java similarity index 88% rename from src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java index 565714eb..4113b998 100644 --- a/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ErrorResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java index bcc23f03..4774fa57 100644 --- a/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java @@ -3,22 +3,13 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ErrorResponseError.Builder.class) public final class ErrorResponseError { diff --git a/src/main/java/com/skyflow/generated/rest/types/FileData.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileData.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/FileData.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileData.java index 7f58332e..fd6fa822 100644 --- a/src/main/java/com/skyflow/generated/rest/types/FileData.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileData.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileData.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDataFormat.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDataFormat.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDataFormat.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDataFormat.java diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java index 2aa88f7b..b6a5ea11 100644 --- a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyAudio.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudioDataFormat.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudioDataFormat.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudioDataFormat.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudioDataFormat.java diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java index e6390e28..5fb12fba 100644 --- a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyDocument.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocumentDataFormat.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocumentDataFormat.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocumentDataFormat.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocumentDataFormat.java diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java index 127c5f4c..bc5e2c6b 100644 --- a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyImage.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImageDataFormat.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImageDataFormat.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImageDataFormat.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImageDataFormat.java diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java index 20b0314f..5606e917 100644 --- a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyPdf.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java index e808f0b2..0bedabc5 100644 --- a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyPresentation.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentationDataFormat.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentationDataFormat.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentationDataFormat.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentationDataFormat.java diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java index 33478d20..dd017bb8 100644 --- a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifySpreadsheet.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheetDataFormat.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheetDataFormat.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheetDataFormat.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheetDataFormat.java diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java index dad188ce..814d51c3 100644 --- a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyStructuredText.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredTextDataFormat.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredTextDataFormat.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredTextDataFormat.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredTextDataFormat.java diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java index 79045d7a..e5c88180 100644 --- a/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyText.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java index edea3145..9148703c 100644 --- a/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataReidentifyFile.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFileDataFormat.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFileDataFormat.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFileDataFormat.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFileDataFormat.java diff --git a/src/main/java/com/skyflow/generated/rest/types/Format.java b/v2/src/main/java/com/skyflow/generated/rest/types/Format.java similarity index 89% rename from src/main/java/com/skyflow/generated/rest/types/Format.java rename to v2/src/main/java/com/skyflow/generated/rest/types/Format.java index 68ac94ca..1563b90a 100644 --- a/src/main/java/com/skyflow/generated/rest/types/Format.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/Format.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = Format.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/FormatMaskedItem.java b/v2/src/main/java/com/skyflow/generated/rest/types/FormatMaskedItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FormatMaskedItem.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FormatMaskedItem.java diff --git a/src/main/java/com/skyflow/generated/rest/types/FormatPlaintextItem.java b/v2/src/main/java/com/skyflow/generated/rest/types/FormatPlaintextItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FormatPlaintextItem.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FormatPlaintextItem.java diff --git a/src/main/java/com/skyflow/generated/rest/types/FormatRedactedItem.java b/v2/src/main/java/com/skyflow/generated/rest/types/FormatRedactedItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/FormatRedactedItem.java rename to v2/src/main/java/com/skyflow/generated/rest/types/FormatRedactedItem.java diff --git a/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java b/v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java similarity index 88% rename from src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java rename to v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java index 807aee4e..55be5699 100644 --- a/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = GooglerpcStatus.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java similarity index 89% rename from src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java index e7ae30fc..c1bd23c6 100644 --- a/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = IdentifyResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/Locations.java b/v2/src/main/java/com/skyflow/generated/rest/types/Locations.java similarity index 94% rename from src/main/java/com/skyflow/generated/rest/types/Locations.java rename to v2/src/main/java/com/skyflow/generated/rest/types/Locations.java index 9864541a..4b95c485 100644 --- a/src/main/java/com/skyflow/generated/rest/types/Locations.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/Locations.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java b/v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java similarity index 86% rename from src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java index 9f019b66..40e73b99 100644 --- a/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/RedactionEnumRedaction.java b/v2/src/main/java/com/skyflow/generated/rest/types/RedactionEnumRedaction.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/RedactionEnumRedaction.java rename to v2/src/main/java/com/skyflow/generated/rest/types/RedactionEnumRedaction.java diff --git a/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java similarity index 93% rename from src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java index b5a4f6f5..a12660cb 100644 --- a/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutputProcessedFileExtension.java b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutputProcessedFileExtension.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutputProcessedFileExtension.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutputProcessedFileExtension.java diff --git a/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java index 024200d1..b7bc22ca 100644 --- a/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponseOutputType.java b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponseOutputType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponseOutputType.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponseOutputType.java diff --git a/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponseStatus.java b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponseStatus.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponseStatus.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponseStatus.java diff --git a/src/main/java/com/skyflow/generated/rest/types/RequestActionType.java b/v2/src/main/java/com/skyflow/generated/rest/types/RequestActionType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/RequestActionType.java rename to v2/src/main/java/com/skyflow/generated/rest/types/RequestActionType.java diff --git a/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java b/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java similarity index 89% rename from src/main/java/com/skyflow/generated/rest/types/ShiftDates.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java index 2fc4b11a..37ef8cdf 100644 --- a/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ShiftDates.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/ShiftDatesEntityTypesItem.java b/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDatesEntityTypesItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/ShiftDatesEntityTypesItem.java rename to v2/src/main/java/com/skyflow/generated/rest/types/ShiftDatesEntityTypesItem.java diff --git a/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java b/v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java similarity index 94% rename from src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java rename to v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java index 81c1e58d..78df8838 100644 --- a/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java b/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java rename to v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java index f8c1edb4..b703895d 100644 --- a/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = TokenTypeMapping.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingDefault.java b/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingDefault.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingDefault.java rename to v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingDefault.java diff --git a/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingEntityOnlyItem.java b/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingEntityOnlyItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingEntityOnlyItem.java rename to v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingEntityOnlyItem.java diff --git a/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingEntityUnqCounterItem.java b/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingEntityUnqCounterItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingEntityUnqCounterItem.java rename to v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingEntityUnqCounterItem.java diff --git a/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingVaultTokenItem.java b/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingVaultTokenItem.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingVaultTokenItem.java rename to v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMappingVaultTokenItem.java diff --git a/src/main/java/com/skyflow/generated/rest/types/Transformations.java b/v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java similarity index 87% rename from src/main/java/com/skyflow/generated/rest/types/Transformations.java rename to v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java index 12a5afc7..c9165409 100644 --- a/src/main/java/com/skyflow/generated/rest/types/Transformations.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java b/v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java rename to v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java index c1ddbd58..8f5fea5a 100644 --- a/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java index d942fdcd..037b80bf 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java similarity index 93% rename from src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java index c582d06d..f7ca73f0 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java similarity index 86% rename from src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java index dd23d77c..36d7ccce 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1AuditResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java similarity index 93% rename from src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java index ca2bfdc2..a54eec6c 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1AuditResponseEvent.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java similarity index 95% rename from src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java index 046c8fb4..90d9c538 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1AuditResponseEventRequest.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java similarity index 89% rename from src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java index a557da82..8f5fb775 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BatchOperationResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java similarity index 97% rename from src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java index afc572cf..3f0455cc 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java similarity index 83% rename from src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java index 58472a8b..88c1c125 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BinListResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java similarity index 85% rename from src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java index ddb0d213..b7151598 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BulkDeleteRecordResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java similarity index 83% rename from src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java index c2d3790a..27878fab 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BulkGetRecordResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1Byot.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1Byot.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/V1Byot.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1Byot.java diff --git a/src/main/java/com/skyflow/generated/rest/types/V1Card.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java similarity index 96% rename from src/main/java/com/skyflow/generated/rest/types/V1Card.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java index f2a9db90..ba4f7349 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1Card.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java index 4ec85903..4d9b24eb 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java index 2f3bde14..5351d897 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java index 3cf5b59c..b6fb9cb6 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java similarity index 93% rename from src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java index ba0abbfa..dd3a9c1f 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java similarity index 84% rename from src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java index 74f4f6e6..53660cbe 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1DetokenizeResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java similarity index 91% rename from src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java index dfbccb8b..b64b8792 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1FileAvScanStatus.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1FileAvScanStatus.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/V1FileAvScanStatus.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1FileAvScanStatus.java diff --git a/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java index f5669085..43a86ae0 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java similarity index 87% rename from src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java index 4bd67013..3138c766 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java similarity index 83% rename from src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java index 821d1f06..a44b0f62 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1GetQueryResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java similarity index 84% rename from src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java index 0addf786..f8a00001 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1InsertRecordResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1MemberType.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1MemberType.java similarity index 100% rename from src/main/java/com/skyflow/generated/rest/types/V1MemberType.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1MemberType.java diff --git a/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java index f69719cf..17f77df6 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java index 2c15ceac..43fe264a 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java similarity index 87% rename from src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java index 201a4f60..66721fa1 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java similarity index 84% rename from src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java index 62d77bed..05e64bc0 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1TokenizeResponse.Builder.class) diff --git a/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java index 03ed7b58..d2fcbf1b 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java similarity index 92% rename from src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java index c19d1cb5..6fc09854 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java similarity index 91% rename from src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java rename to v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java index cd838305..1542ab0f 100644 --- a/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java b/v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java similarity index 90% rename from src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java rename to v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java index 594b6d11..314b5942 100644 --- a/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/src/main/java/com/skyflow/logs/ErrorLogs.java b/v2/src/main/java/com/skyflow/logs/ErrorLogs.java similarity index 100% rename from src/main/java/com/skyflow/logs/ErrorLogs.java rename to v2/src/main/java/com/skyflow/logs/ErrorLogs.java diff --git a/src/main/java/com/skyflow/logs/InfoLogs.java b/v2/src/main/java/com/skyflow/logs/InfoLogs.java similarity index 100% rename from src/main/java/com/skyflow/logs/InfoLogs.java rename to v2/src/main/java/com/skyflow/logs/InfoLogs.java diff --git a/src/main/java/com/skyflow/utils/Constants.java b/v2/src/main/java/com/skyflow/utils/Constants.java similarity index 100% rename from src/main/java/com/skyflow/utils/Constants.java rename to v2/src/main/java/com/skyflow/utils/Constants.java diff --git a/src/main/java/com/skyflow/utils/HttpUtility.java b/v2/src/main/java/com/skyflow/utils/HttpUtility.java similarity index 100% rename from src/main/java/com/skyflow/utils/HttpUtility.java rename to v2/src/main/java/com/skyflow/utils/HttpUtility.java diff --git a/src/main/java/com/skyflow/utils/Utils.java b/v2/src/main/java/com/skyflow/utils/Utils.java similarity index 100% rename from src/main/java/com/skyflow/utils/Utils.java rename to v2/src/main/java/com/skyflow/utils/Utils.java diff --git a/src/main/java/com/skyflow/utils/logger/LogUtil.java b/v2/src/main/java/com/skyflow/utils/logger/LogUtil.java similarity index 100% rename from src/main/java/com/skyflow/utils/logger/LogUtil.java rename to v2/src/main/java/com/skyflow/utils/logger/LogUtil.java diff --git a/src/main/java/com/skyflow/utils/validations/Validations.java b/v2/src/main/java/com/skyflow/utils/validations/Validations.java similarity index 99% rename from src/main/java/com/skyflow/utils/validations/Validations.java rename to v2/src/main/java/com/skyflow/utils/validations/Validations.java index 5e528a6a..2fc748f0 100644 --- a/src/main/java/com/skyflow/utils/validations/Validations.java +++ b/v2/src/main/java/com/skyflow/utils/validations/Validations.java @@ -11,6 +11,7 @@ import com.google.gson.Gson; import com.google.gson.JsonObject; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.config.ConnectionConfig; import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; @@ -21,6 +22,8 @@ import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; import com.skyflow.logs.ErrorLogs; +import com.skyflow.utils.BaseConstants; +import com.skyflow.utils.BaseUtils; import com.skyflow.utils.Constants; import com.skyflow.utils.Utils; import com.skyflow.utils.logger.LogUtil; @@ -44,6 +47,96 @@ public class Validations { private Validations() { } + public static void validateCredentials(Credentials credentials) throws SkyflowException { + int nonNullMembers = 0; + String path = credentials.getPath(); + String credentialsString = credentials.getCredentialsString(); + String token = credentials.getToken(); + String apiKey = credentials.getApiKey(); + Object context = credentials.getContext(); + ArrayList roles = credentials.getRoles(); + + if (path != null) nonNullMembers++; + if (credentialsString != null) nonNullMembers++; + if (token != null) nonNullMembers++; + if (apiKey != null) nonNullMembers++; + + if (nonNullMembers > 1) { + LogUtil.printErrorLog(ErrorLogs.MULTIPLE_TOKEN_GENERATION_MEANS_PASSED.getLog()); + throw new SkyflowException( + ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.MultipleTokenGenerationMeansPassed.getMessage() + ); + } else if (nonNullMembers < 1) { + LogUtil.printErrorLog(ErrorLogs.NO_TOKEN_GENERATION_MEANS_PASSED.getLog()); + throw new SkyflowException( + ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NoTokenGenerationMeansPassed.getMessage() + ); + } else if (path != null && path.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_CREDENTIALS_PATH.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentialFilePath.getMessage()); + } else if (credentialsString != null && credentialsString.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_CREDENTIALS_STRING.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentialsString.getMessage()); + } else if (token != null && token.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_TOKEN_VALUE.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyToken.getMessage()); + } else if (apiKey != null) { + if (apiKey.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_API_KEY_VALUE.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyApikey.getMessage()); + } else { + Pattern pattern = Pattern.compile(Constants.API_KEY_REGEX); + Matcher matcher = pattern.matcher(apiKey); + if (!matcher.matches()) { + LogUtil.printErrorLog(ErrorLogs.INVALID_API_KEY.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidApikey.getMessage()); + } + } + } else if (roles != null) { + if (roles.isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_ROLES.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRoles.getMessage()); + } else { + for (int index = 0; index < roles.size(); index++) { + String role = roles.get(index); + if (role == null || role.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_ROLE_IN_ROLES.getLog(), Integer.toString(index) + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRoleInRoles.getMessage()); + } + } + } + } + if (context != null) { + if (context instanceof String) { + String ctxStr = (String) context; + if (ctxStr.trim().isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_OR_NULL_CONTEXT.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyContext.getMessage()); + } + } else if (context instanceof Map) { + Map ctxMap = (Map) context; + if (ctxMap.isEmpty()) { + LogUtil.printErrorLog(ErrorLogs.EMPTY_OR_NULL_CONTEXT.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyContext.getMessage()); + } + Pattern ctxKeyPattern = Pattern.compile(Constants.CONTEXT_KEY_REGEX); + for (Object key : ctxMap.keySet()) { + if (key == null || !ctxKeyPattern.matcher(key.toString()).matches()) { + String keyStr = key == null ? "null" : key.toString(); + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.INVALID_CONTEXT_MAP_KEY.getLog(), keyStr)); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), + Utils.parameterizedString(ErrorMessage.InvalidContextMapKey.getMessage(), keyStr)); + } + } + } else { + LogUtil.printErrorLog(ErrorLogs.INVALID_CONTEXT_TYPE.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidContextType.getMessage()); + } + } + } public static void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { String vaultId = vaultConfig.getVaultId(); @@ -159,97 +252,6 @@ public static void validateInvokeConnectionRequest(InvokeConnectionRequest invok } } - public static void validateCredentials(Credentials credentials) throws SkyflowException { - int nonNullMembers = 0; - String path = credentials.getPath(); - String credentialsString = credentials.getCredentialsString(); - String token = credentials.getToken(); - String apiKey = credentials.getApiKey(); - Object context = credentials.getContext(); - ArrayList roles = credentials.getRoles(); - - if (path != null) nonNullMembers++; - if (credentialsString != null) nonNullMembers++; - if (token != null) nonNullMembers++; - if (apiKey != null) nonNullMembers++; - - if (nonNullMembers > 1) { - LogUtil.printErrorLog(ErrorLogs.MULTIPLE_TOKEN_GENERATION_MEANS_PASSED.getLog()); - throw new SkyflowException( - ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.MultipleTokenGenerationMeansPassed.getMessage() - ); - } else if (nonNullMembers < 1) { - LogUtil.printErrorLog(ErrorLogs.NO_TOKEN_GENERATION_MEANS_PASSED.getLog()); - throw new SkyflowException( - ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NoTokenGenerationMeansPassed.getMessage() - ); - } else if (path != null && path.trim().isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_CREDENTIALS_PATH.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentialFilePath.getMessage()); - } else if (credentialsString != null && credentialsString.trim().isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_CREDENTIALS_STRING.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentialsString.getMessage()); - } else if (token != null && token.trim().isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_TOKEN_VALUE.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyToken.getMessage()); - } else if (apiKey != null) { - if (apiKey.trim().isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_API_KEY_VALUE.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyApikey.getMessage()); - } else { - Pattern pattern = Pattern.compile(Constants.API_KEY_REGEX); - Matcher matcher = pattern.matcher(apiKey); - if (!matcher.matches()) { - LogUtil.printErrorLog(ErrorLogs.INVALID_API_KEY.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidApikey.getMessage()); - } - } - } else if (roles != null) { - if (roles.isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_ROLES.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRoles.getMessage()); - } else { - for (int index = 0; index < roles.size(); index++) { - String role = roles.get(index); - if (role == null || role.trim().isEmpty()) { - LogUtil.printErrorLog(Utils.parameterizedString( - ErrorLogs.EMPTY_OR_NULL_ROLE_IN_ROLES.getLog(), Integer.toString(index) - )); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRoleInRoles.getMessage()); - } - } - } - } - if (context != null) { - if (context instanceof String) { - String ctxStr = (String) context; - if (ctxStr.trim().isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_OR_NULL_CONTEXT.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyContext.getMessage()); - } - } else if (context instanceof Map) { - Map ctxMap = (Map) context; - if (ctxMap.isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_OR_NULL_CONTEXT.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyContext.getMessage()); - } - Pattern ctxKeyPattern = Pattern.compile(Constants.CONTEXT_KEY_REGEX); - for (Object key : ctxMap.keySet()) { - if (key == null || !ctxKeyPattern.matcher(key.toString()).matches()) { - String keyStr = key == null ? "null" : key.toString(); - LogUtil.printErrorLog(Utils.parameterizedString( - ErrorLogs.INVALID_CONTEXT_MAP_KEY.getLog(), keyStr)); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), - Utils.parameterizedString(ErrorMessage.InvalidContextMapKey.getMessage(), keyStr)); - } - } - } else { - LogUtil.printErrorLog(ErrorLogs.INVALID_CONTEXT_TYPE.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidContextType.getMessage()); - } - } - } - public static void validateDetokenizeRequest(DetokenizeRequest detokenizeRequest) throws SkyflowException { ArrayList detokenizeData = detokenizeRequest.getDetokenizeData(); if (detokenizeData == null) { diff --git a/src/main/java/com/skyflow/vault/audit/ListEventRequest.java b/v2/src/main/java/com/skyflow/vault/audit/ListEventRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/audit/ListEventRequest.java rename to v2/src/main/java/com/skyflow/vault/audit/ListEventRequest.java diff --git a/src/main/java/com/skyflow/vault/audit/ListEventResponse.java b/v2/src/main/java/com/skyflow/vault/audit/ListEventResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/audit/ListEventResponse.java rename to v2/src/main/java/com/skyflow/vault/audit/ListEventResponse.java diff --git a/src/main/java/com/skyflow/vault/bin/GetBinRequest.java b/v2/src/main/java/com/skyflow/vault/bin/GetBinRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/bin/GetBinRequest.java rename to v2/src/main/java/com/skyflow/vault/bin/GetBinRequest.java diff --git a/src/main/java/com/skyflow/vault/bin/GetBinResponse.java b/v2/src/main/java/com/skyflow/vault/bin/GetBinResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/bin/GetBinResponse.java rename to v2/src/main/java/com/skyflow/vault/bin/GetBinResponse.java diff --git a/src/main/java/com/skyflow/vault/connection/InvokeConnectionRequest.java b/v2/src/main/java/com/skyflow/vault/connection/InvokeConnectionRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/connection/InvokeConnectionRequest.java rename to v2/src/main/java/com/skyflow/vault/connection/InvokeConnectionRequest.java diff --git a/src/main/java/com/skyflow/vault/connection/InvokeConnectionResponse.java b/v2/src/main/java/com/skyflow/vault/connection/InvokeConnectionResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/connection/InvokeConnectionResponse.java rename to v2/src/main/java/com/skyflow/vault/connection/InvokeConnectionResponse.java diff --git a/src/main/java/com/skyflow/vault/controller/AuditController.java b/v2/src/main/java/com/skyflow/vault/controller/AuditController.java similarity index 100% rename from src/main/java/com/skyflow/vault/controller/AuditController.java rename to v2/src/main/java/com/skyflow/vault/controller/AuditController.java diff --git a/src/main/java/com/skyflow/vault/controller/BinLookupController.java b/v2/src/main/java/com/skyflow/vault/controller/BinLookupController.java similarity index 100% rename from src/main/java/com/skyflow/vault/controller/BinLookupController.java rename to v2/src/main/java/com/skyflow/vault/controller/BinLookupController.java diff --git a/src/main/java/com/skyflow/vault/controller/ConnectionController.java b/v2/src/main/java/com/skyflow/vault/controller/ConnectionController.java similarity index 100% rename from src/main/java/com/skyflow/vault/controller/ConnectionController.java rename to v2/src/main/java/com/skyflow/vault/controller/ConnectionController.java diff --git a/src/main/java/com/skyflow/vault/controller/DetectController.java b/v2/src/main/java/com/skyflow/vault/controller/DetectController.java similarity index 99% rename from src/main/java/com/skyflow/vault/controller/DetectController.java rename to v2/src/main/java/com/skyflow/vault/controller/DetectController.java index 873c83e1..ad25d7e2 100644 --- a/src/main/java/com/skyflow/vault/controller/DetectController.java +++ b/v2/src/main/java/com/skyflow/vault/controller/DetectController.java @@ -8,12 +8,12 @@ import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; +import com.skyflow.generated.rest.resources.files.requests.*; +import com.skyflow.generated.rest.types.*; import com.skyflow.generated.rest.core.ApiClientApiException; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.files.requests.*; import com.skyflow.generated.rest.resources.strings.requests.DeidentifyStringRequest; import com.skyflow.generated.rest.resources.strings.requests.ReidentifyStringRequest; -import com.skyflow.generated.rest.types.*; import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; import com.skyflow.utils.Constants; @@ -352,7 +352,7 @@ private String extractBodyAsString(ApiClientApiException e) { private com.skyflow.generated.rest.types.DeidentifyFileResponse processFileByType(String fileExtension, String base64Content, DeidentifyFileRequest request, String vaultId) throws SkyflowException { switch (fileExtension.toLowerCase()) { case "txt": - com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText textFileRequest = + DeidentifyFileRequestDeidentifyText textFileRequest = super.getDeidentifyTextFileRequest(request, vaultId, base64Content); return super.getDetectFileAPi().deidentifyText(textFileRequest); @@ -424,7 +424,7 @@ public DeidentifyFileResponse getDetectRun(GetDetectRunRequest request) throws S .vaultId(vaultId) .build(); - com.skyflow.generated.rest.types.DetectRunsResponse apiResponse = + DetectRunsResponse apiResponse = super.getDetectFileAPi().getRun(runId, getRunRequest); return parseDeidentifyFileResponse(apiResponse, runId, apiResponse.getStatus().toString()); diff --git a/src/main/java/com/skyflow/vault/controller/VaultController.java b/v2/src/main/java/com/skyflow/vault/controller/VaultController.java similarity index 92% rename from src/main/java/com/skyflow/vault/controller/VaultController.java rename to v2/src/main/java/com/skyflow/vault/controller/VaultController.java index 1812b83b..2f74a584 100644 --- a/src/main/java/com/skyflow/vault/controller/VaultController.java +++ b/v2/src/main/java/com/skyflow/vault/controller/VaultController.java @@ -17,6 +17,7 @@ import com.google.gson.JsonParser; import com.google.gson.JsonPrimitive; import com.skyflow.VaultClient; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; import com.skyflow.enums.RedactionType; @@ -73,7 +74,8 @@ import com.skyflow.vault.tokens.TokenizeRequest; import com.skyflow.vault.tokens.TokenizeResponse; -public final class VaultController extends VaultClient { +public final class VaultController extends VaultClient + implements IVaultController { private static final Gson GSON = new GsonBuilder().serializeNulls().create(); private static final JsonObject SKY_METADATA = Utils.getMetrics(); @@ -181,6 +183,7 @@ private static synchronized HashMap getFormattedQueryRecord(V1Fi return queryRecord; } + @Override public InsertResponse insert(InsertRequest insertRequest) throws SkyflowException { LogUtil.printInfoLog(InfoLogs.INSERT_TRIGGERED.getLog()); V1InsertRecordResponse bulkInsertResult = null; @@ -229,9 +232,7 @@ public InsertResponse insert(InsertRequest insertRequest) throws SkyflowExceptio } } } catch (ApiClientApiException e) { - String bodyString = GSON.toJson(e.body()); - LogUtil.printErrorLog(ErrorLogs.INSERT_RECORDS_REJECTED.getLog()); - throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.INSERT_RECORDS_REJECTED); } LogUtil.printInfoLog(InfoLogs.INSERT_SUCCESS.getLog()); if (insertedFields.isEmpty()) { @@ -274,9 +275,7 @@ public DetokenizeResponse detokenize(DetokenizeRequest detokenizeRequest) throws } } } catch (ApiClientApiException e) { - String bodyString = GSON.toJson(e.body()); - LogUtil.printErrorLog(ErrorLogs.DETOKENIZE_REQUEST_REJECTED.getLog()); - throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.DETOKENIZE_REQUEST_REJECTED); } if (!errorRecords.isEmpty()) { @@ -331,9 +330,7 @@ public GetResponse get(GetRequest getRequest) throws SkyflowException { } } } catch (ApiClientApiException e) { - String bodyString = GSON.toJson(e.body()); - LogUtil.printErrorLog(ErrorLogs.GET_REQUEST_REJECTED.getLog()); - throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.GET_REQUEST_REJECTED); } LogUtil.printInfoLog(InfoLogs.GET_SUCCESS.getLog()); return new GetResponse(data, null); @@ -361,9 +358,7 @@ public UpdateResponse update(UpdateRequest updateRequest) throws SkyflowExceptio skyflowId = String.valueOf(result.getSkyflowId()); tokensMap = getFormattedUpdateRecord(result); } catch (ApiClientApiException e) { - String bodyString = GSON.toJson(e.body()); - LogUtil.printErrorLog(ErrorLogs.UPDATE_REQUEST_REJECTED.getLog()); - throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.UPDATE_REQUEST_REJECTED); } LogUtil.printInfoLog(InfoLogs.UPDATE_SUCCESS.getLog()); return new UpdateResponse(skyflowId, tokensMap); @@ -384,9 +379,7 @@ public DeleteResponse delete(DeleteRequest deleteRequest) throws SkyflowExceptio super.getVaultConfig().getVaultId(), deleteRequest.getTable(), deleteBody, requestOptions); LogUtil.printInfoLog(InfoLogs.DELETE_REQUEST_RESOLVED.getLog()); } catch (ApiClientApiException e) { - String bodyString = GSON.toJson(e.body()); - LogUtil.printErrorLog(ErrorLogs.DELETE_REQUEST_REJECTED.getLog()); - throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.DELETE_REQUEST_REJECTED); } LogUtil.printInfoLog(InfoLogs.DELETE_SUCCESS.getLog()); return new DeleteResponse(result.getRecordIdResponse().orElse(Collections.emptyList())); @@ -414,9 +407,7 @@ public QueryResponse query(QueryRequest queryRequest) throws SkyflowException { } } } catch (ApiClientApiException e) { - String bodyString = GSON.toJson(e.body()); - LogUtil.printErrorLog(ErrorLogs.QUERY_REQUEST_REJECTED.getLog()); - throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.QUERY_REQUEST_REJECTED); } LogUtil.printInfoLog(InfoLogs.QUERY_SUCCESS.getLog()); return new QueryResponse(fields); @@ -442,9 +433,7 @@ public TokenizeResponse tokenize(TokenizeRequest tokenizeRequest) throws Skyflow } } } catch (ApiClientApiException e) { - String bodyString = GSON.toJson(e.body()); - LogUtil.printErrorLog(ErrorLogs.TOKENIZE_REQUEST_REJECTED.getLog()); - throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.TOKENIZE_REQUEST_REJECTED); } LogUtil.printInfoLog(InfoLogs.TOKENIZE_SUCCESS.getLog()); return new TokenizeResponse(list); @@ -481,9 +470,7 @@ public FileUploadResponse uploadFile(FileUploadRequest fileUploadRequest) throws ); } catch (ApiClientApiException e) { - String bodyString = GSON.toJson(e.body()); - LogUtil.printErrorLog(ErrorLogs.UPLOAD_FILE_REQUEST_REJECTED.getLog()); - throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.UPLOAD_FILE_REQUEST_REJECTED); } catch (IOException e) { LogUtil.printErrorLog(ErrorLogs.UPLOAD_FILE_REQUEST_REJECTED.getLog()); throw new SkyflowException(e.getMessage(), e); diff --git a/src/main/java/com/skyflow/vault/data/DeleteRequest.java b/v2/src/main/java/com/skyflow/vault/data/DeleteRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/DeleteRequest.java rename to v2/src/main/java/com/skyflow/vault/data/DeleteRequest.java diff --git a/src/main/java/com/skyflow/vault/data/DeleteResponse.java b/v2/src/main/java/com/skyflow/vault/data/DeleteResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/DeleteResponse.java rename to v2/src/main/java/com/skyflow/vault/data/DeleteResponse.java diff --git a/src/main/java/com/skyflow/vault/data/FileUploadRequest.java b/v2/src/main/java/com/skyflow/vault/data/FileUploadRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/FileUploadRequest.java rename to v2/src/main/java/com/skyflow/vault/data/FileUploadRequest.java diff --git a/src/main/java/com/skyflow/vault/data/FileUploadResponse.java b/v2/src/main/java/com/skyflow/vault/data/FileUploadResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/FileUploadResponse.java rename to v2/src/main/java/com/skyflow/vault/data/FileUploadResponse.java diff --git a/src/main/java/com/skyflow/vault/data/GetRequest.java b/v2/src/main/java/com/skyflow/vault/data/GetRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/GetRequest.java rename to v2/src/main/java/com/skyflow/vault/data/GetRequest.java diff --git a/src/main/java/com/skyflow/vault/data/GetResponse.java b/v2/src/main/java/com/skyflow/vault/data/GetResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/GetResponse.java rename to v2/src/main/java/com/skyflow/vault/data/GetResponse.java diff --git a/src/main/java/com/skyflow/vault/data/InsertRequest.java b/v2/src/main/java/com/skyflow/vault/data/InsertRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/InsertRequest.java rename to v2/src/main/java/com/skyflow/vault/data/InsertRequest.java diff --git a/src/main/java/com/skyflow/vault/data/InsertResponse.java b/v2/src/main/java/com/skyflow/vault/data/InsertResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/InsertResponse.java rename to v2/src/main/java/com/skyflow/vault/data/InsertResponse.java diff --git a/src/main/java/com/skyflow/vault/data/QueryRequest.java b/v2/src/main/java/com/skyflow/vault/data/QueryRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/QueryRequest.java rename to v2/src/main/java/com/skyflow/vault/data/QueryRequest.java diff --git a/src/main/java/com/skyflow/vault/data/QueryResponse.java b/v2/src/main/java/com/skyflow/vault/data/QueryResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/QueryResponse.java rename to v2/src/main/java/com/skyflow/vault/data/QueryResponse.java diff --git a/src/main/java/com/skyflow/vault/data/UpdateRequest.java b/v2/src/main/java/com/skyflow/vault/data/UpdateRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/UpdateRequest.java rename to v2/src/main/java/com/skyflow/vault/data/UpdateRequest.java diff --git a/src/main/java/com/skyflow/vault/data/UpdateResponse.java b/v2/src/main/java/com/skyflow/vault/data/UpdateResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/data/UpdateResponse.java rename to v2/src/main/java/com/skyflow/vault/data/UpdateResponse.java diff --git a/src/main/java/com/skyflow/vault/detect/AudioBleep.java b/v2/src/main/java/com/skyflow/vault/detect/AudioBleep.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/AudioBleep.java rename to v2/src/main/java/com/skyflow/vault/detect/AudioBleep.java diff --git a/src/main/java/com/skyflow/vault/detect/DateTransformation.java b/v2/src/main/java/com/skyflow/vault/detect/DateTransformation.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/DateTransformation.java rename to v2/src/main/java/com/skyflow/vault/detect/DateTransformation.java diff --git a/src/main/java/com/skyflow/vault/detect/DeidentifyFileRequest.java b/v2/src/main/java/com/skyflow/vault/detect/DeidentifyFileRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/DeidentifyFileRequest.java rename to v2/src/main/java/com/skyflow/vault/detect/DeidentifyFileRequest.java diff --git a/src/main/java/com/skyflow/vault/detect/DeidentifyFileResponse.java b/v2/src/main/java/com/skyflow/vault/detect/DeidentifyFileResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/DeidentifyFileResponse.java rename to v2/src/main/java/com/skyflow/vault/detect/DeidentifyFileResponse.java diff --git a/src/main/java/com/skyflow/vault/detect/DeidentifyTextRequest.java b/v2/src/main/java/com/skyflow/vault/detect/DeidentifyTextRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/DeidentifyTextRequest.java rename to v2/src/main/java/com/skyflow/vault/detect/DeidentifyTextRequest.java diff --git a/src/main/java/com/skyflow/vault/detect/DeidentifyTextResponse.java b/v2/src/main/java/com/skyflow/vault/detect/DeidentifyTextResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/DeidentifyTextResponse.java rename to v2/src/main/java/com/skyflow/vault/detect/DeidentifyTextResponse.java diff --git a/src/main/java/com/skyflow/vault/detect/EntityInfo.java b/v2/src/main/java/com/skyflow/vault/detect/EntityInfo.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/EntityInfo.java rename to v2/src/main/java/com/skyflow/vault/detect/EntityInfo.java diff --git a/src/main/java/com/skyflow/vault/detect/FileEntityInfo.java b/v2/src/main/java/com/skyflow/vault/detect/FileEntityInfo.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/FileEntityInfo.java rename to v2/src/main/java/com/skyflow/vault/detect/FileEntityInfo.java diff --git a/src/main/java/com/skyflow/vault/detect/FileInfo.java b/v2/src/main/java/com/skyflow/vault/detect/FileInfo.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/FileInfo.java rename to v2/src/main/java/com/skyflow/vault/detect/FileInfo.java diff --git a/src/main/java/com/skyflow/vault/detect/FileInput.java b/v2/src/main/java/com/skyflow/vault/detect/FileInput.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/FileInput.java rename to v2/src/main/java/com/skyflow/vault/detect/FileInput.java diff --git a/src/main/java/com/skyflow/vault/detect/GetDetectRunRequest.java b/v2/src/main/java/com/skyflow/vault/detect/GetDetectRunRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/GetDetectRunRequest.java rename to v2/src/main/java/com/skyflow/vault/detect/GetDetectRunRequest.java diff --git a/src/main/java/com/skyflow/vault/detect/ReidentifyTextRequest.java b/v2/src/main/java/com/skyflow/vault/detect/ReidentifyTextRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/ReidentifyTextRequest.java rename to v2/src/main/java/com/skyflow/vault/detect/ReidentifyTextRequest.java diff --git a/src/main/java/com/skyflow/vault/detect/ReidentifyTextResponse.java b/v2/src/main/java/com/skyflow/vault/detect/ReidentifyTextResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/ReidentifyTextResponse.java rename to v2/src/main/java/com/skyflow/vault/detect/ReidentifyTextResponse.java diff --git a/src/main/java/com/skyflow/vault/detect/TextIndex.java b/v2/src/main/java/com/skyflow/vault/detect/TextIndex.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/TextIndex.java rename to v2/src/main/java/com/skyflow/vault/detect/TextIndex.java diff --git a/src/main/java/com/skyflow/vault/detect/TokenFormat.java b/v2/src/main/java/com/skyflow/vault/detect/TokenFormat.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/TokenFormat.java rename to v2/src/main/java/com/skyflow/vault/detect/TokenFormat.java diff --git a/src/main/java/com/skyflow/vault/detect/Transformations.java b/v2/src/main/java/com/skyflow/vault/detect/Transformations.java similarity index 100% rename from src/main/java/com/skyflow/vault/detect/Transformations.java rename to v2/src/main/java/com/skyflow/vault/detect/Transformations.java diff --git a/src/main/java/com/skyflow/vault/tokens/ColumnValue.java b/v2/src/main/java/com/skyflow/vault/tokens/ColumnValue.java similarity index 100% rename from src/main/java/com/skyflow/vault/tokens/ColumnValue.java rename to v2/src/main/java/com/skyflow/vault/tokens/ColumnValue.java diff --git a/src/main/java/com/skyflow/vault/tokens/DetokenizeData.java b/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeData.java similarity index 100% rename from src/main/java/com/skyflow/vault/tokens/DetokenizeData.java rename to v2/src/main/java/com/skyflow/vault/tokens/DetokenizeData.java diff --git a/src/main/java/com/skyflow/vault/tokens/DetokenizeRecordResponse.java b/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeRecordResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/tokens/DetokenizeRecordResponse.java rename to v2/src/main/java/com/skyflow/vault/tokens/DetokenizeRecordResponse.java diff --git a/src/main/java/com/skyflow/vault/tokens/DetokenizeRequest.java b/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/tokens/DetokenizeRequest.java rename to v2/src/main/java/com/skyflow/vault/tokens/DetokenizeRequest.java diff --git a/src/main/java/com/skyflow/vault/tokens/DetokenizeResponse.java b/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/tokens/DetokenizeResponse.java rename to v2/src/main/java/com/skyflow/vault/tokens/DetokenizeResponse.java diff --git a/src/main/java/com/skyflow/vault/tokens/TokenizeRequest.java b/v2/src/main/java/com/skyflow/vault/tokens/TokenizeRequest.java similarity index 100% rename from src/main/java/com/skyflow/vault/tokens/TokenizeRequest.java rename to v2/src/main/java/com/skyflow/vault/tokens/TokenizeRequest.java diff --git a/src/main/java/com/skyflow/vault/tokens/TokenizeResponse.java b/v2/src/main/java/com/skyflow/vault/tokens/TokenizeResponse.java similarity index 100% rename from src/main/java/com/skyflow/vault/tokens/TokenizeResponse.java rename to v2/src/main/java/com/skyflow/vault/tokens/TokenizeResponse.java diff --git a/src/main/resources/sdk.properties b/v2/src/main/resources/sdk.properties similarity index 100% rename from src/main/resources/sdk.properties rename to v2/src/main/resources/sdk.properties diff --git a/src/test/java/com/skyflow/ConnectionClientDotenvTests.java b/v2/src/test/java/com/skyflow/ConnectionClientDotenvTests.java similarity index 100% rename from src/test/java/com/skyflow/ConnectionClientDotenvTests.java rename to v2/src/test/java/com/skyflow/ConnectionClientDotenvTests.java diff --git a/src/test/java/com/skyflow/ConnectionClientTests.java b/v2/src/test/java/com/skyflow/ConnectionClientTests.java similarity index 100% rename from src/test/java/com/skyflow/ConnectionClientTests.java rename to v2/src/test/java/com/skyflow/ConnectionClientTests.java diff --git a/src/test/java/com/skyflow/SkyflowTests.java b/v2/src/test/java/com/skyflow/SkyflowTests.java similarity index 94% rename from src/test/java/com/skyflow/SkyflowTests.java rename to v2/src/test/java/com/skyflow/SkyflowTests.java index 983419a7..360daddd 100644 --- a/src/test/java/com/skyflow/SkyflowTests.java +++ b/v2/src/test/java/com/skyflow/SkyflowTests.java @@ -1,7 +1,7 @@ package com.skyflow; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.config.ConnectionConfig; -import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; import com.skyflow.enums.Env; import com.skyflow.enums.LogLevel; @@ -60,7 +60,7 @@ public static void setup() { @Test public void testAddingInvalidVaultConfigInSkyflowBuilder() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(""); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -75,7 +75,7 @@ public void testAddingInvalidVaultConfigInSkyflowBuilder() { @Test public void testAddingInvalidVaultConfigInSkyflowClient() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(""); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -91,7 +91,7 @@ public void testAddingInvalidVaultConfigInSkyflowClient() { @Test public void testAddingValidVaultConfigInSkyflowClient() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -105,7 +105,7 @@ public void testAddingValidVaultConfigInSkyflowClient() { @Test public void testAddingExistingVaultConfigInSkyflowClient() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -121,7 +121,7 @@ public void testAddingExistingVaultConfigInSkyflowClient() { @Test public void testUpdatingNonExistentVaultConfigInSkyflowBuilder() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -136,7 +136,7 @@ public void testUpdatingNonExistentVaultConfigInSkyflowBuilder() { @Test public void testUpdatingNonExistentVaultConfigInSkyflowClient() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -154,7 +154,7 @@ public void testUpdatingNonExistentVaultConfigInSkyflowClient() { @Test public void testUpdatingValidVaultConfigInSkyflowClient() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -176,7 +176,7 @@ public void testUpdatingValidVaultConfigInSkyflowClient() { @Test public void testUpdateVaultConfigNullCredentialsFallsBackToPrevious() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -188,7 +188,7 @@ public void testUpdateVaultConfigNullCredentialsFallsBackToPrevious() { Skyflow skyflowClient = Skyflow.builder().addVaultConfig(config).build(); // Update with null credentials — should retain previous credentials value - VaultConfig partialUpdate = new VaultConfig(); + BaseVaultConfig partialUpdate = new BaseVaultConfig(); partialUpdate.setVaultId(vaultID); partialUpdate.setClusterId(clusterID); skyflowClient.updateVaultConfig(partialUpdate); @@ -212,7 +212,7 @@ public void testRemovingNonExistentVaultConfigInSkyflowBuilder() { @Test public void testRemovingNonExistentVaultConfigInSkyflowClient() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -239,7 +239,7 @@ public void testRemovingValidVaultConfigInSkyflowClient() { public void testGettingNonExistentVaultConfigInSkyflowClient() { try { Skyflow skyflowClient = Skyflow.builder().build(); - VaultConfig config = skyflowClient.getVaultConfig(vaultID); + BaseVaultConfig config = skyflowClient.getVaultConfig(vaultID); Assert.assertNull(config); } catch (Exception e) { Assert.fail(INVALID_EXCEPTION_THROWN); @@ -261,12 +261,12 @@ public void testGettingAlreadyRemovedVaultFromEmptyConfigs() { @Test public void testGettingAlreadyRemovedVaultFromNonEmptyConfigs() { try { - VaultConfig primaryConfig = new VaultConfig(); + BaseVaultConfig primaryConfig = new BaseVaultConfig(); primaryConfig.setVaultId(vaultID); primaryConfig.setClusterId(clusterID); primaryConfig.setEnv(Env.SANDBOX); - VaultConfig secondaryConfig = new VaultConfig(); + BaseVaultConfig secondaryConfig = new BaseVaultConfig(); secondaryConfig.setVaultId(vaultID + "123"); secondaryConfig.setClusterId(clusterID); secondaryConfig.setEnv(Env.SANDBOX); @@ -475,7 +475,7 @@ public void testAddingInvalidSkyflowCredentialsInSkyflowBuilder() { @Test public void testUpdatingValidSkyflowCredentialsInSkyflowClient() { try { - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); @@ -574,7 +574,7 @@ public void testVaultMethodWithNoConfig() { @Test public void testVaultMethodWithValidConfig() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -589,7 +589,7 @@ public void testVaultMethodWithValidConfig() { @Test public void testVaultMethodWithInvalidVaultId() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -658,7 +658,7 @@ public void testDetectMethodWithNoConfig() { @Test public void testDetectMethodWithValidConfig() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -673,7 +673,7 @@ public void testDetectMethodWithValidConfig() { @Test public void testDetectMethodWithInvalidVaultId() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -689,7 +689,7 @@ public void testDetectMethodWithInvalidVaultId() { @Test public void testUpdateVaultConfig_withNewClusterIdAndCredentials_updatesAllFields() { try { - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.DEV); @@ -702,7 +702,7 @@ public void testUpdateVaultConfig_withNewClusterIdAndCredentials_updatesAllField // the non-null (true) branches for all three ternaries in findAndUpdateVaultConfig Credentials newCreds = new Credentials(); newCreds.setToken("updated-token-value"); - VaultConfig update = new VaultConfig(); + BaseVaultConfig update = new BaseVaultConfig(); update.setVaultId(vaultID); update.setClusterId(newClusterID); update.setEnv(Env.PROD); @@ -751,14 +751,14 @@ public void testUpdateVaultConfig_withNullEnv_fallsBackToPreviousEnv() { try { Credentials creds = new Credentials(); creds.setToken(token); - VaultConfig initial = new VaultConfig(); + BaseVaultConfig initial = new BaseVaultConfig(); initial.setVaultId(vaultID); initial.setClusterId(clusterID); initial.setEnv(Env.SANDBOX); initial.setCredentials(creds); Skyflow skyflowClient = Skyflow.builder().addVaultConfig(initial).build(); - VaultConfig updateWithNullEnv = new VaultConfig() { + BaseVaultConfig updateWithNullEnv = new BaseVaultConfig() { @Override public Env getEnv() { return null; } }; updateWithNullEnv.setVaultId(vaultID); @@ -781,7 +781,7 @@ public void testFindAndUpdateVaultConfig_withNullClusterId_fallsBackToPreviousCl try { Credentials creds = new Credentials(); creds.setToken(token); - VaultConfig initial = new VaultConfig(); + BaseVaultConfig initial = new BaseVaultConfig(); initial.setVaultId(vaultID); initial.setClusterId(clusterID); initial.setEnv(Env.DEV); @@ -792,17 +792,17 @@ public void testFindAndUpdateVaultConfig_withNullClusterId_fallsBackToPreviousCl builderField.setAccessible(true); Object builder = builderField.get(skyflowClient); - VaultConfig nullClusterConfig = new VaultConfig(); + BaseVaultConfig nullClusterConfig = new BaseVaultConfig(); nullClusterConfig.setVaultId(vaultID); // Override clusterId field to null via reflection (setter enforces non-null) - java.lang.reflect.Field clusterIdField = VaultConfig.class.getDeclaredField("clusterId"); + java.lang.reflect.Field clusterIdField = BaseVaultConfig.class.getDeclaredField("clusterId"); clusterIdField.setAccessible(true); clusterIdField.set(nullClusterConfig, null); java.lang.reflect.Method method = builder.getClass().getDeclaredMethod( - "findAndUpdateVaultConfig", VaultConfig.class); + "findAndUpdateVaultConfig", BaseVaultConfig.class); method.setAccessible(true); - VaultConfig result = (VaultConfig) method.invoke(builder, nullClusterConfig); + BaseVaultConfig result = (BaseVaultConfig) method.invoke(builder, nullClusterConfig); Assert.assertEquals(clusterID, result.getClusterId()); } catch (SkyflowException e) { diff --git a/src/test/java/com/skyflow/VaultClientDotenvTests.java b/v2/src/test/java/com/skyflow/VaultClientDotenvTests.java similarity index 98% rename from src/test/java/com/skyflow/VaultClientDotenvTests.java rename to v2/src/test/java/com/skyflow/VaultClientDotenvTests.java index 1a54b13d..2e71816a 100644 --- a/src/test/java/com/skyflow/VaultClientDotenvTests.java +++ b/v2/src/test/java/com/skyflow/VaultClientDotenvTests.java @@ -1,5 +1,6 @@ package com.skyflow; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; import com.skyflow.enums.Env; diff --git a/src/test/java/com/skyflow/VaultClientTests.java b/v2/src/test/java/com/skyflow/VaultClientTests.java similarity index 99% rename from src/test/java/com/skyflow/VaultClientTests.java rename to v2/src/test/java/com/skyflow/VaultClientTests.java index d98f5964..db04cae4 100644 --- a/src/test/java/com/skyflow/VaultClientTests.java +++ b/v2/src/test/java/com/skyflow/VaultClientTests.java @@ -1,12 +1,14 @@ package com.skyflow; +import com.skyflow.config.VaultConfig; import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; import com.skyflow.enums.*; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.SkyflowException; -import com.skyflow.generated.rest.resources.files.FilesClient; import com.skyflow.generated.rest.resources.files.requests.*; +import com.skyflow.generated.rest.resources.files.FilesClient; +import com.skyflow.generated.rest.types.*; import com.skyflow.generated.rest.resources.query.QueryClient; import com.skyflow.generated.rest.resources.records.RecordsClient; import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; @@ -18,7 +20,6 @@ import com.skyflow.generated.rest.resources.tokens.TokensClient; import com.skyflow.generated.rest.resources.tokens.requests.V1DetokenizePayload; import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; -import com.skyflow.generated.rest.types.*; import com.skyflow.vault.data.InsertRequest; import com.skyflow.vault.data.UpdateRequest; import com.skyflow.vault.detect.*; @@ -707,7 +708,7 @@ public void testGetDeidentifyTextFileRequest() { String vaultId = "vault123"; String base64Content = "base64string"; - com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText textRequest = + DeidentifyFileRequestDeidentifyText textRequest = vaultClient.getDeidentifyTextFileRequest(request, vaultId, base64Content); Assert.assertEquals(vaultId, textRequest.getVaultId()); diff --git a/src/test/java/com/skyflow/config/ConnectionConfigTests.java b/v2/src/test/java/com/skyflow/config/ConnectionConfigTests.java similarity index 100% rename from src/test/java/com/skyflow/config/ConnectionConfigTests.java rename to v2/src/test/java/com/skyflow/config/ConnectionConfigTests.java diff --git a/src/test/java/com/skyflow/config/CredentialsTests.java b/v2/src/test/java/com/skyflow/config/CredentialsTests.java similarity index 100% rename from src/test/java/com/skyflow/config/CredentialsTests.java rename to v2/src/test/java/com/skyflow/config/CredentialsTests.java diff --git a/src/test/java/com/skyflow/config/ManagementConfigTest.java b/v2/src/test/java/com/skyflow/config/ManagementConfigTest.java similarity index 100% rename from src/test/java/com/skyflow/config/ManagementConfigTest.java rename to v2/src/test/java/com/skyflow/config/ManagementConfigTest.java diff --git a/src/test/java/com/skyflow/config/VaultConfigTests.java b/v2/src/test/java/com/skyflow/config/VaultConfigTests.java similarity index 91% rename from src/test/java/com/skyflow/config/VaultConfigTests.java rename to v2/src/test/java/com/skyflow/config/VaultConfigTests.java index b99f6c9b..31305c0c 100644 --- a/src/test/java/com/skyflow/config/VaultConfigTests.java +++ b/v2/src/test/java/com/skyflow/config/VaultConfigTests.java @@ -30,7 +30,7 @@ public static void setup() { @Test public void testValidVaultConfigWithCredentialsInValidations() { try { - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.SANDBOX); @@ -49,7 +49,7 @@ public void testValidVaultConfigWithCredentialsInValidations() { @Test public void testValidVaultConfigWithoutCredentialsInValidations() { try { - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.SANDBOX); @@ -67,7 +67,7 @@ public void testValidVaultConfigWithoutCredentialsInValidations() { @Test public void testDefaultEnvInVaultConfigWithCredentialsInValidations() { try { - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setCredentials(credentials); @@ -85,7 +85,7 @@ public void testDefaultEnvInVaultConfigWithCredentialsInValidations() { @Test public void testDefaultEnvInVaultConfigWithoutCredentialsInValidations() { try { - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(null); @@ -102,7 +102,7 @@ public void testDefaultEnvInVaultConfigWithoutCredentialsInValidations() { @Test public void testNoVaultIdInVaultConfigInValidations() { - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); try { vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.SANDBOX); @@ -117,7 +117,7 @@ public void testNoVaultIdInVaultConfigInValidations() { @Test public void testEmptyVaultIdInVaultConfigInValidations() { try { - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(""); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.SANDBOX); @@ -132,7 +132,7 @@ public void testEmptyVaultIdInVaultConfigInValidations() { @Test public void testNoClusterIdInVaultConfigInValidations() { try { - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setEnv(Env.SANDBOX); Validations.validateVaultConfig(vaultConfig); @@ -146,7 +146,7 @@ public void testNoClusterIdInVaultConfigInValidations() { @Test public void testEmptyClusterIdInVaultConfigInValidations() { try { - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(""); vaultConfig.setEnv(Env.SANDBOX); diff --git a/src/test/java/com/skyflow/enums/DeidentifyFileStatusTest.java b/v2/src/test/java/com/skyflow/enums/DeidentifyFileStatusTest.java similarity index 100% rename from src/test/java/com/skyflow/enums/DeidentifyFileStatusTest.java rename to v2/src/test/java/com/skyflow/enums/DeidentifyFileStatusTest.java diff --git a/src/test/java/com/skyflow/enums/DetectEntitiesTest.java b/v2/src/test/java/com/skyflow/enums/DetectEntitiesTest.java similarity index 100% rename from src/test/java/com/skyflow/enums/DetectEntitiesTest.java rename to v2/src/test/java/com/skyflow/enums/DetectEntitiesTest.java diff --git a/src/test/java/com/skyflow/enums/DetectOutputTranscriptionsTest.java b/v2/src/test/java/com/skyflow/enums/DetectOutputTranscriptionsTest.java similarity index 100% rename from src/test/java/com/skyflow/enums/DetectOutputTranscriptionsTest.java rename to v2/src/test/java/com/skyflow/enums/DetectOutputTranscriptionsTest.java diff --git a/src/test/java/com/skyflow/enums/MaskingMethodTest.java b/v2/src/test/java/com/skyflow/enums/MaskingMethodTest.java similarity index 100% rename from src/test/java/com/skyflow/enums/MaskingMethodTest.java rename to v2/src/test/java/com/skyflow/enums/MaskingMethodTest.java diff --git a/src/test/java/com/skyflow/enums/TokenModeTest.java b/v2/src/test/java/com/skyflow/enums/TokenModeTest.java similarity index 98% rename from src/test/java/com/skyflow/enums/TokenModeTest.java rename to v2/src/test/java/com/skyflow/enums/TokenModeTest.java index 72236a16..b65a72cb 100644 --- a/src/test/java/com/skyflow/enums/TokenModeTest.java +++ b/v2/src/test/java/com/skyflow/enums/TokenModeTest.java @@ -1,6 +1,5 @@ package com.skyflow.enums; -import com.skyflow.enums.LogLevel; import com.skyflow.generated.rest.types.V1Byot; import com.skyflow.logs.InfoLogs; import com.skyflow.utils.logger.LogUtil; diff --git a/src/test/java/com/skyflow/enums/TokenTypeTest.java b/v2/src/test/java/com/skyflow/enums/TokenTypeTest.java similarity index 100% rename from src/test/java/com/skyflow/enums/TokenTypeTest.java rename to v2/src/test/java/com/skyflow/enums/TokenTypeTest.java diff --git a/src/test/java/com/skyflow/errors/SkyflowExceptionTest.java b/v2/src/test/java/com/skyflow/errors/SkyflowExceptionTest.java similarity index 100% rename from src/test/java/com/skyflow/errors/SkyflowExceptionTest.java rename to v2/src/test/java/com/skyflow/errors/SkyflowExceptionTest.java diff --git a/src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java b/v2/src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java similarity index 100% rename from src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java rename to v2/src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java diff --git a/src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java b/v2/src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java similarity index 100% rename from src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java rename to v2/src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java diff --git a/src/test/java/com/skyflow/serviceaccount/util/TokenTests.java b/v2/src/test/java/com/skyflow/serviceaccount/util/TokenTests.java similarity index 100% rename from src/test/java/com/skyflow/serviceaccount/util/TokenTests.java rename to v2/src/test/java/com/skyflow/serviceaccount/util/TokenTests.java diff --git a/src/test/java/com/skyflow/utils/HttpUtilityTests.java b/v2/src/test/java/com/skyflow/utils/HttpUtilityTests.java similarity index 100% rename from src/test/java/com/skyflow/utils/HttpUtilityTests.java rename to v2/src/test/java/com/skyflow/utils/HttpUtilityTests.java diff --git a/src/test/java/com/skyflow/utils/UtilsTests.java b/v2/src/test/java/com/skyflow/utils/UtilsTests.java similarity index 100% rename from src/test/java/com/skyflow/utils/UtilsTests.java rename to v2/src/test/java/com/skyflow/utils/UtilsTests.java diff --git a/src/test/java/com/skyflow/utils/logger/LogUtilLevelTests.java b/v2/src/test/java/com/skyflow/utils/logger/LogUtilLevelTests.java similarity index 100% rename from src/test/java/com/skyflow/utils/logger/LogUtilLevelTests.java rename to v2/src/test/java/com/skyflow/utils/logger/LogUtilLevelTests.java diff --git a/src/test/java/com/skyflow/vault/BinAuditTests.java b/v2/src/test/java/com/skyflow/vault/BinAuditTests.java similarity index 100% rename from src/test/java/com/skyflow/vault/BinAuditTests.java rename to v2/src/test/java/com/skyflow/vault/BinAuditTests.java diff --git a/src/test/java/com/skyflow/vault/connection/InvokeConnectionTests.java b/v2/src/test/java/com/skyflow/vault/connection/InvokeConnectionTests.java similarity index 100% rename from src/test/java/com/skyflow/vault/connection/InvokeConnectionTests.java rename to v2/src/test/java/com/skyflow/vault/connection/InvokeConnectionTests.java diff --git a/src/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java b/v2/src/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java similarity index 99% rename from src/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java rename to v2/src/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java index a258e01d..ddbe519e 100644 --- a/src/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java +++ b/v2/src/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java @@ -2,7 +2,6 @@ import com.skyflow.Skyflow; import com.skyflow.config.ConnectionConfig; -import com.skyflow.config.Credentials; import com.skyflow.enums.LogLevel; import com.skyflow.enums.RequestMethod; import com.skyflow.errors.ErrorCode; diff --git a/src/test/java/com/skyflow/vault/controller/DetectControllerFileTests.java b/v2/src/test/java/com/skyflow/vault/controller/DetectControllerFileTests.java similarity index 99% rename from src/test/java/com/skyflow/vault/controller/DetectControllerFileTests.java rename to v2/src/test/java/com/skyflow/vault/controller/DetectControllerFileTests.java index 2b8379bc..f0347eeb 100644 --- a/src/test/java/com/skyflow/vault/controller/DetectControllerFileTests.java +++ b/v2/src/test/java/com/skyflow/vault/controller/DetectControllerFileTests.java @@ -1,5 +1,6 @@ package com.skyflow.vault.controller; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; import com.skyflow.errors.ErrorCode; diff --git a/src/test/java/com/skyflow/vault/controller/DetectControllerTests.java b/v2/src/test/java/com/skyflow/vault/controller/DetectControllerTests.java similarity index 99% rename from src/test/java/com/skyflow/vault/controller/DetectControllerTests.java rename to v2/src/test/java/com/skyflow/vault/controller/DetectControllerTests.java index 52bb2be4..83ad9d5c 100644 --- a/src/test/java/com/skyflow/vault/controller/DetectControllerTests.java +++ b/v2/src/test/java/com/skyflow/vault/controller/DetectControllerTests.java @@ -2,8 +2,7 @@ import com.skyflow.Skyflow; import com.skyflow.VaultClient; -import com.skyflow.config.Credentials; -import com.skyflow.config.VaultConfig; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.enums.DetectEntities; import com.skyflow.enums.Env; import com.skyflow.enums.LogLevel; @@ -56,7 +55,7 @@ public class DetectControllerTests { private static final String INVALID_EXCEPTION_THROWN = "Should not have thrown any exception"; private static String vaultID = null; private static String clusterID = null; - private static VaultConfig vaultConfig = null; + private static BaseVaultConfig vaultConfig = null; private static Skyflow skyflowClient = null; @BeforeClass @@ -67,7 +66,7 @@ public static void setup() throws SkyflowException { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - vaultConfig = new VaultConfig(); + vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); @@ -85,7 +84,7 @@ private static DetectController createDetectControllerWithMock(ApiClient mockApi Credentials creds = new Credentials(); creds.setApiKey("sky-ab123-abcd1234cdef1234abcd4321cdef4321"); - VaultConfig config = new VaultConfig(); + BaseVaultConfig config = new BaseVaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.DEV); diff --git a/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java b/v2/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java similarity index 100% rename from src/test/java/com/skyflow/vault/controller/VaultControllerTests.java rename to v2/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java diff --git a/src/test/java/com/skyflow/vault/data/DeleteTests.java b/v2/src/test/java/com/skyflow/vault/data/DeleteTests.java similarity index 97% rename from src/test/java/com/skyflow/vault/data/DeleteTests.java rename to v2/src/test/java/com/skyflow/vault/data/DeleteTests.java index befc3d26..1cef1c17 100644 --- a/src/test/java/com/skyflow/vault/data/DeleteTests.java +++ b/v2/src/test/java/com/skyflow/vault/data/DeleteTests.java @@ -1,8 +1,7 @@ package com.skyflow.vault.data; import com.skyflow.Skyflow; -import com.skyflow.config.Credentials; -import com.skyflow.config.VaultConfig; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.enums.Env; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; @@ -35,7 +34,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); diff --git a/src/test/java/com/skyflow/vault/data/FileUploadTests.java b/v2/src/test/java/com/skyflow/vault/data/FileUploadTests.java similarity index 100% rename from src/test/java/com/skyflow/vault/data/FileUploadTests.java rename to v2/src/test/java/com/skyflow/vault/data/FileUploadTests.java diff --git a/src/test/java/com/skyflow/vault/data/GetTests.java b/v2/src/test/java/com/skyflow/vault/data/GetTests.java similarity index 99% rename from src/test/java/com/skyflow/vault/data/GetTests.java rename to v2/src/test/java/com/skyflow/vault/data/GetTests.java index e62c605f..ec0f112e 100644 --- a/src/test/java/com/skyflow/vault/data/GetTests.java +++ b/v2/src/test/java/com/skyflow/vault/data/GetTests.java @@ -1,8 +1,7 @@ package com.skyflow.vault.data; import com.skyflow.Skyflow; -import com.skyflow.config.Credentials; -import com.skyflow.config.VaultConfig; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.enums.Env; import com.skyflow.enums.RedactionType; import com.skyflow.errors.ErrorCode; @@ -43,7 +42,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); diff --git a/src/test/java/com/skyflow/vault/data/InsertTests.java b/v2/src/test/java/com/skyflow/vault/data/InsertTests.java similarity index 99% rename from src/test/java/com/skyflow/vault/data/InsertTests.java rename to v2/src/test/java/com/skyflow/vault/data/InsertTests.java index 030bc5ea..43211f4c 100644 --- a/src/test/java/com/skyflow/vault/data/InsertTests.java +++ b/v2/src/test/java/com/skyflow/vault/data/InsertTests.java @@ -1,8 +1,7 @@ package com.skyflow.vault.data; import com.skyflow.Skyflow; -import com.skyflow.config.Credentials; -import com.skyflow.config.VaultConfig; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.enums.Env; import com.skyflow.enums.TokenMode; import com.skyflow.errors.ErrorCode; @@ -42,7 +41,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); diff --git a/src/test/java/com/skyflow/vault/data/QueryResponseTest.java b/v2/src/test/java/com/skyflow/vault/data/QueryResponseTest.java similarity index 100% rename from src/test/java/com/skyflow/vault/data/QueryResponseTest.java rename to v2/src/test/java/com/skyflow/vault/data/QueryResponseTest.java diff --git a/src/test/java/com/skyflow/vault/data/QueryTests.java b/v2/src/test/java/com/skyflow/vault/data/QueryTests.java similarity index 96% rename from src/test/java/com/skyflow/vault/data/QueryTests.java rename to v2/src/test/java/com/skyflow/vault/data/QueryTests.java index c8e453f5..862006f4 100644 --- a/src/test/java/com/skyflow/vault/data/QueryTests.java +++ b/v2/src/test/java/com/skyflow/vault/data/QueryTests.java @@ -1,8 +1,7 @@ package com.skyflow.vault.data; import com.skyflow.Skyflow; -import com.skyflow.config.Credentials; -import com.skyflow.config.VaultConfig; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.enums.Env; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; @@ -34,7 +33,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); diff --git a/src/test/java/com/skyflow/vault/data/UpdateTests.java b/v2/src/test/java/com/skyflow/vault/data/UpdateTests.java similarity index 99% rename from src/test/java/com/skyflow/vault/data/UpdateTests.java rename to v2/src/test/java/com/skyflow/vault/data/UpdateTests.java index 8ae1db8d..0523d6cc 100644 --- a/src/test/java/com/skyflow/vault/data/UpdateTests.java +++ b/v2/src/test/java/com/skyflow/vault/data/UpdateTests.java @@ -1,8 +1,7 @@ package com.skyflow.vault.data; import com.skyflow.Skyflow; -import com.skyflow.config.Credentials; -import com.skyflow.config.VaultConfig; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.enums.Env; import com.skyflow.enums.TokenMode; import com.skyflow.errors.ErrorCode; @@ -37,7 +36,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - VaultConfig vaultConfig = new VaultConfig(); + BaseVaultConfig vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); diff --git a/src/test/java/com/skyflow/vault/detect/DeidentifyFileRequestTest.java b/v2/src/test/java/com/skyflow/vault/detect/DeidentifyFileRequestTest.java similarity index 100% rename from src/test/java/com/skyflow/vault/detect/DeidentifyFileRequestTest.java rename to v2/src/test/java/com/skyflow/vault/detect/DeidentifyFileRequestTest.java diff --git a/src/test/java/com/skyflow/vault/detect/DeidentifyFileResponseTest.java b/v2/src/test/java/com/skyflow/vault/detect/DeidentifyFileResponseTest.java similarity index 100% rename from src/test/java/com/skyflow/vault/detect/DeidentifyFileResponseTest.java rename to v2/src/test/java/com/skyflow/vault/detect/DeidentifyFileResponseTest.java diff --git a/src/test/java/com/skyflow/vault/detect/DeidentifyTextTests.java b/v2/src/test/java/com/skyflow/vault/detect/DeidentifyTextTests.java similarity index 100% rename from src/test/java/com/skyflow/vault/detect/DeidentifyTextTests.java rename to v2/src/test/java/com/skyflow/vault/detect/DeidentifyTextTests.java diff --git a/src/test/java/com/skyflow/vault/detect/FileEntityInfoTest.java b/v2/src/test/java/com/skyflow/vault/detect/FileEntityInfoTest.java similarity index 100% rename from src/test/java/com/skyflow/vault/detect/FileEntityInfoTest.java rename to v2/src/test/java/com/skyflow/vault/detect/FileEntityInfoTest.java diff --git a/src/test/java/com/skyflow/vault/detect/FileInfoTest.java b/v2/src/test/java/com/skyflow/vault/detect/FileInfoTest.java similarity index 100% rename from src/test/java/com/skyflow/vault/detect/FileInfoTest.java rename to v2/src/test/java/com/skyflow/vault/detect/FileInfoTest.java diff --git a/src/test/java/com/skyflow/vault/detect/ReidentifyTextTests.java b/v2/src/test/java/com/skyflow/vault/detect/ReidentifyTextTests.java similarity index 100% rename from src/test/java/com/skyflow/vault/detect/ReidentifyTextTests.java rename to v2/src/test/java/com/skyflow/vault/detect/ReidentifyTextTests.java diff --git a/src/test/java/com/skyflow/vault/tokens/DetokenizeTests.java b/v2/src/test/java/com/skyflow/vault/tokens/DetokenizeTests.java similarity index 100% rename from src/test/java/com/skyflow/vault/tokens/DetokenizeTests.java rename to v2/src/test/java/com/skyflow/vault/tokens/DetokenizeTests.java diff --git a/src/test/java/com/skyflow/vault/tokens/TokenizeTests.java b/v2/src/test/java/com/skyflow/vault/tokens/TokenizeTests.java similarity index 97% rename from src/test/java/com/skyflow/vault/tokens/TokenizeTests.java rename to v2/src/test/java/com/skyflow/vault/tokens/TokenizeTests.java index 4c279fde..debfe10a 100644 --- a/src/test/java/com/skyflow/vault/tokens/TokenizeTests.java +++ b/v2/src/test/java/com/skyflow/vault/tokens/TokenizeTests.java @@ -1,8 +1,7 @@ package com.skyflow.vault.tokens; import com.skyflow.Skyflow; -import com.skyflow.config.Credentials; -import com.skyflow.config.VaultConfig; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.enums.Env; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; @@ -21,7 +20,7 @@ public class TokenizeTests { private static final String EXCEPTION_NOT_THROWN = "Should have thrown an exception"; private static String vaultID = null; private static String clusterID = null; - private static VaultConfig vaultConfig = null; + private static BaseVaultConfig vaultConfig = null; private static String token = null; private static ArrayList tokens = null; private static Skyflow skyflowClient = null; @@ -38,7 +37,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - vaultConfig = new VaultConfig(); + vaultConfig = new BaseVaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); diff --git a/src/test/resources/invalidPrivateKeyCredentials.json b/v2/src/test/resources/invalidPrivateKeyCredentials.json similarity index 100% rename from src/test/resources/invalidPrivateKeyCredentials.json rename to v2/src/test/resources/invalidPrivateKeyCredentials.json diff --git a/src/test/resources/invalidTokenURICredentials.json b/v2/src/test/resources/invalidTokenURICredentials.json similarity index 100% rename from src/test/resources/invalidTokenURICredentials.json rename to v2/src/test/resources/invalidTokenURICredentials.json diff --git a/src/test/resources/noClientIDCredentials.json b/v2/src/test/resources/noClientIDCredentials.json similarity index 100% rename from src/test/resources/noClientIDCredentials.json rename to v2/src/test/resources/noClientIDCredentials.json diff --git a/src/test/resources/noKeyIDCredentials.json b/v2/src/test/resources/noKeyIDCredentials.json similarity index 100% rename from src/test/resources/noKeyIDCredentials.json rename to v2/src/test/resources/noKeyIDCredentials.json diff --git a/src/test/resources/noPrivateKeyCredentials.json b/v2/src/test/resources/noPrivateKeyCredentials.json similarity index 100% rename from src/test/resources/noPrivateKeyCredentials.json rename to v2/src/test/resources/noPrivateKeyCredentials.json diff --git a/src/test/resources/noTokenURICredentials.json b/v2/src/test/resources/noTokenURICredentials.json similarity index 100% rename from src/test/resources/noTokenURICredentials.json rename to v2/src/test/resources/noTokenURICredentials.json diff --git a/src/test/resources/notJson.txt b/v2/src/test/resources/notJson.txt similarity index 100% rename from src/test/resources/notJson.txt rename to v2/src/test/resources/notJson.txt From 05c58d2927f3581f5bdf76345f9d184d3d02fb10 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 10 Jul 2026 16:50:22 +0530 Subject: [PATCH 02/26] SK-2967 add interface for skyflow --- .../src/main/java/com/skyflow/ISkyflow.java | 23 +++++++++++++ .../src/main/java/com/skyflow/Skyflow.java | 34 ++++++++++++++++++- v2/src/main/java/com/skyflow/Skyflow.java | 9 ++++- 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 common/src/main/java/com/skyflow/ISkyflow.java diff --git a/common/src/main/java/com/skyflow/ISkyflow.java b/common/src/main/java/com/skyflow/ISkyflow.java new file mode 100644 index 00000000..9d0af8e5 --- /dev/null +++ b/common/src/main/java/com/skyflow/ISkyflow.java @@ -0,0 +1,23 @@ +package com.skyflow; + +import com.skyflow.config.BaseCredentials; +import com.skyflow.config.BaseVaultConfig; +import com.skyflow.enums.LogLevel; +import com.skyflow.errors.SkyflowException; + +// Common interface — ONLY operations supported on both vault types. +public interface ISkyflow, V extends BaseVaultConfig, C extends BaseCredentials, VC> { + Self addVaultConfig(V vaultConfig) throws SkyflowException; + + Self updateVaultConfig(V vaultConfig) throws SkyflowException; + + Self removeVaultConfig(String vaultId) throws SkyflowException; + + Self updateSkyflowCredentials(C credentials) throws SkyflowException; + + Self setLogLevel(LogLevel logLevel); + + LogLevel getLogLevel(); + + VC vault() throws SkyflowException; +} diff --git a/flowvault/src/main/java/com/skyflow/Skyflow.java b/flowvault/src/main/java/com/skyflow/Skyflow.java index ff1eff08..3608b463 100644 --- a/flowvault/src/main/java/com/skyflow/Skyflow.java +++ b/flowvault/src/main/java/com/skyflow/Skyflow.java @@ -17,7 +17,8 @@ import java.util.LinkedHashMap; -public final class Skyflow extends BaseSkyflow { +public final class Skyflow extends BaseSkyflow + implements ISkyflow { private final SkyflowClientBuilder builder; private Skyflow(SkyflowClientBuilder builder) { @@ -35,6 +36,37 @@ public VaultConfig getVaultConfig() { return (VaultConfig) array[0]; } + @Override + public Skyflow addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + this.builder.addVaultConfig(vaultConfig); + return this; + } + + @Override + public Skyflow updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + this.builder.updateVaultConfig(vaultConfig); + return this; + } + + @Override + public Skyflow removeVaultConfig(String vaultId) throws SkyflowException { + this.builder.removeVaultConfig(vaultId); + return this; + } + + @Override + public Skyflow updateSkyflowCredentials(Credentials credentials) throws SkyflowException { + this.builder.addSkyflowCredentials(credentials); + return this; + } + + @Override + public Skyflow setLogLevel(LogLevel logLevel) { + this.builder.setLogLevel(logLevel); + return this; + } + + @Override public VaultController vault() throws SkyflowException { Object[] array = this.builder.vaultClientsMap.keySet().toArray(); if (array.length < 1) { diff --git a/v2/src/main/java/com/skyflow/Skyflow.java b/v2/src/main/java/com/skyflow/Skyflow.java index 3889b0bf..c4381e3e 100644 --- a/v2/src/main/java/com/skyflow/Skyflow.java +++ b/v2/src/main/java/com/skyflow/Skyflow.java @@ -19,7 +19,8 @@ import java.util.LinkedHashMap; -public final class Skyflow extends BaseSkyflow { +public final class Skyflow extends BaseSkyflow + implements ISkyflow { private final SkyflowClientBuilder builder; private Skyflow(SkyflowClientBuilder builder) { @@ -31,6 +32,7 @@ public static SkyflowClientBuilder builder() { return new SkyflowClientBuilder(); } + @Override public Skyflow addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { this.builder.addVaultConfig(vaultConfig); return this; @@ -40,21 +42,25 @@ public VaultConfig getVaultConfig(String vaultId) { return this.builder.vaultConfigMap.get(vaultId); } + @Override public Skyflow updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { this.builder.updateVaultConfig(vaultConfig); return this; } + @Override public Skyflow removeVaultConfig(String vaultId) throws SkyflowException { this.builder.removeVaultConfig(vaultId); return this; } + @Override public Skyflow updateSkyflowCredentials(Credentials credentials) throws SkyflowException { this.builder.addSkyflowCredentials(credentials); return this; } + @Override public Skyflow setLogLevel(LogLevel logLevel) { this.builder.setLogLevel(logLevel); return this; @@ -87,6 +93,7 @@ public Skyflow updateLogLevel(LogLevel logLevel) { return setLogLevel(logLevel); } + @Override public VaultController vault() throws SkyflowException { Object[] array = this.builder.vaultClientsMap.keySet().toArray(); if (array.length < 1) { From f92349cfca3542678d2d4f78aaf975d2ed7f79de Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Mon, 13 Jul 2026 23:57:50 +0530 Subject: [PATCH 03/26] SK-2967 move common code from v2 and flowvault --- .../java/com/skyflow/BaseVaultClient.java | 23 ++- .../src/main/java/com/skyflow/ISkyflow.java | 1 - .../java/com/skyflow/config/Credentials.java | 2 - .../java/com/skyflow/config/VaultConfig.java | 5 +- .../java/com/skyflow/enums/InterfaceName.java | 24 --- .../java/com/skyflow/errors/ErrorMessage.java | 4 +- .../java/com/skyflow/utils/BaseConstants.java | 1 - .../com/skyflow/utils/logger/LogUtil.java | 15 +- .../vault/controller/BaseVaultController.java | 21 --- flowvault/pom.xml | 3 +- .../src/main/java/com/skyflow/Skyflow.java | 11 +- .../main/java/com/skyflow/VaultClient.java | 9 +- .../java/com/skyflow/utils/Constants.java | 3 +- .../vault/controller/VaultController.java | 4 +- flowvault/src/main/resources/sdk.properties | 1 + v2/pom.xml | 10 ++ v2/src/main/java/com/skyflow/Skyflow.java | 40 ++++- v2/src/main/java/com/skyflow/VaultClient.java | 8 +- .../java/com/skyflow/config/Credentials.java | 10 -- .../java/com/skyflow/config/VaultConfig.java | 16 -- .../java/com/skyflow/errors/ErrorCode.java | 18 -- .../java/com/skyflow/errors/HttpStatus.java | 15 -- .../java/com/skyflow/utils/Constants.java | 24 +-- v2/src/main/java/com/skyflow/utils/Utils.java | 166 +----------------- .../utils/validations/Validations.java | 96 +--------- .../vault/controller/VaultController.java | 36 ++-- 26 files changed, 119 insertions(+), 447 deletions(-) rename {flowvault => common}/src/main/java/com/skyflow/config/Credentials.java (98%) rename {flowvault => common}/src/main/java/com/skyflow/config/VaultConfig.java (95%) delete mode 100644 common/src/main/java/com/skyflow/enums/InterfaceName.java delete mode 100644 common/src/main/java/com/skyflow/vault/controller/BaseVaultController.java create mode 100644 flowvault/src/main/resources/sdk.properties delete mode 100644 v2/src/main/java/com/skyflow/config/Credentials.java delete mode 100644 v2/src/main/java/com/skyflow/config/VaultConfig.java delete mode 100644 v2/src/main/java/com/skyflow/errors/ErrorCode.java delete mode 100644 v2/src/main/java/com/skyflow/errors/HttpStatus.java diff --git a/common/src/main/java/com/skyflow/BaseVaultClient.java b/common/src/main/java/com/skyflow/BaseVaultClient.java index f0ea23d1..2ce32997 100644 --- a/common/src/main/java/com/skyflow/BaseVaultClient.java +++ b/common/src/main/java/com/skyflow/BaseVaultClient.java @@ -1,9 +1,13 @@ package com.skyflow; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.skyflow.config.BaseCredentials; +import com.skyflow.config.VaultConfig; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; +import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; import com.skyflow.serviceaccount.util.Token; import com.skyflow.utils.BaseConstants; @@ -16,10 +20,13 @@ import okhttp3.OkHttpClient; import okhttp3.Request; +import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; class BaseVaultClient { + protected VaultConfig vaultConfig; protected OkHttpClient sharedHttpClient; protected String currentVaultURL; protected BaseCredentials commonCredentials; @@ -27,7 +34,13 @@ class BaseVaultClient { protected String token; protected String apiKey; - public BaseVaultClient() { + protected BaseVaultClient(VaultConfig vaultConfig, BaseCredentials credentials) { + this.vaultConfig = vaultConfig; + this.commonCredentials = credentials; + } + + protected VaultConfig getVaultConfig() { + return vaultConfig; } protected OkHttpClient buildSharedHttpClient(Supplier tokenSupplier) { @@ -90,4 +103,12 @@ protected void setBearerToken(BaseCredentials vaultSpecificCredentials) throws S LogUtil.printInfoLog(InfoLogs.REUSE_BEARER_TOKEN.getLog()); } } + + protected static SkyflowException wrapApiException(int statusCode, Throwable cause, + Map> headers, + Object responseBody, ErrorLogs errorLog) { + LogUtil.printErrorLog(errorLog.getLog()); + Gson gson = new GsonBuilder().serializeNulls().create(); + return new SkyflowException(statusCode, cause, headers, gson.toJson(responseBody)); + } } diff --git a/common/src/main/java/com/skyflow/ISkyflow.java b/common/src/main/java/com/skyflow/ISkyflow.java index 9d0af8e5..f756ed2f 100644 --- a/common/src/main/java/com/skyflow/ISkyflow.java +++ b/common/src/main/java/com/skyflow/ISkyflow.java @@ -5,7 +5,6 @@ import com.skyflow.enums.LogLevel; import com.skyflow.errors.SkyflowException; -// Common interface — ONLY operations supported on both vault types. public interface ISkyflow, V extends BaseVaultConfig, C extends BaseCredentials, VC> { Self addVaultConfig(V vaultConfig) throws SkyflowException; diff --git a/flowvault/src/main/java/com/skyflow/config/Credentials.java b/common/src/main/java/com/skyflow/config/Credentials.java similarity index 98% rename from flowvault/src/main/java/com/skyflow/config/Credentials.java rename to common/src/main/java/com/skyflow/config/Credentials.java index 1e13c146..b0d6b888 100644 --- a/flowvault/src/main/java/com/skyflow/config/Credentials.java +++ b/common/src/main/java/com/skyflow/config/Credentials.java @@ -4,6 +4,4 @@ public class Credentials extends BaseCredentials { public Credentials() { super(); } - - } diff --git a/flowvault/src/main/java/com/skyflow/config/VaultConfig.java b/common/src/main/java/com/skyflow/config/VaultConfig.java similarity index 95% rename from flowvault/src/main/java/com/skyflow/config/VaultConfig.java rename to common/src/main/java/com/skyflow/config/VaultConfig.java index f90fa76c..bcb376a2 100644 --- a/flowvault/src/main/java/com/skyflow/config/VaultConfig.java +++ b/common/src/main/java/com/skyflow/config/VaultConfig.java @@ -1,7 +1,5 @@ package com.skyflow.config; -import com.skyflow.enums.Env; - public class VaultConfig extends BaseVaultConfig implements Cloneable { private Credentials credentials; @@ -19,7 +17,6 @@ public void setCredentials(Credentials credentials) { this.credentials = credentials; } - @Override public Object clone() throws CloneNotSupportedException { VaultConfig cloned = (VaultConfig) super.clone(); @@ -30,4 +27,4 @@ public Object clone() throws CloneNotSupportedException { return cloned; } -} \ No newline at end of file +} diff --git a/common/src/main/java/com/skyflow/enums/InterfaceName.java b/common/src/main/java/com/skyflow/enums/InterfaceName.java deleted file mode 100644 index 98992f21..00000000 --- a/common/src/main/java/com/skyflow/enums/InterfaceName.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.skyflow.enums; - -public enum InterfaceName { - INSERT("insert"), - DETOKENIZE("detokenize"), - GET("get"), - UPDATE("update"), - DELETE("delete"), - QUERY("query"), - TOKENIZE("tokenize"), - FILE_UPLOAD("file upload"), - DETECT("detect"), - INVOKE_CONNECTION("invoke connection"); - - private final String interfaceName; - - InterfaceName(String interfaceName) { - this.interfaceName = interfaceName; - } - - public String getName() { - return interfaceName; - } -} diff --git a/common/src/main/java/com/skyflow/errors/ErrorMessage.java b/common/src/main/java/com/skyflow/errors/ErrorMessage.java index 169880e9..e3b5924b 100644 --- a/common/src/main/java/com/skyflow/errors/ErrorMessage.java +++ b/common/src/main/java/com/skyflow/errors/ErrorMessage.java @@ -201,10 +201,10 @@ public enum ErrorMessage { private final String message; ErrorMessage(String message) { - this.message = message.replace("%s0", SdkVersion.getSdkPrefix()); + this.message = message; } public String getMessage() { - return message; + return message.replace("%s0", SdkVersion.getSdkPrefix()); } } diff --git a/common/src/main/java/com/skyflow/utils/BaseConstants.java b/common/src/main/java/com/skyflow/utils/BaseConstants.java index 8aeb9f95..1f05fe13 100644 --- a/common/src/main/java/com/skyflow/utils/BaseConstants.java +++ b/common/src/main/java/com/skyflow/utils/BaseConstants.java @@ -21,7 +21,6 @@ public class BaseConstants { public static final String API_KEY_REGEX = "^sky-[a-zA-Z0-9]{5}-[a-fA-F0-9]{32}$"; public static final String CONTEXT_KEY_REGEX = "^[a-zA-Z0-9_]+$"; public static final String SDK_METRIC_NAME_VERSION = "sdk_name_version"; - public static final String SDK_METRIC_NAME_VERSION_PREFIX = "skyflow-java@"; public static final String SDK_METRIC_CLIENT_DEVICE_MODEL = "sdk_client_device_model"; public static final String SDK_METRIC_CLIENT_OS_DETAILS = "sdk_client_os_details"; public static final String SDK_METRIC_RUNTIME_DETAILS = "sdk_runtime_details"; diff --git a/common/src/main/java/com/skyflow/utils/logger/LogUtil.java b/common/src/main/java/com/skyflow/utils/logger/LogUtil.java index 54fc7d47..ed2b7671 100644 --- a/common/src/main/java/com/skyflow/utils/logger/LogUtil.java +++ b/common/src/main/java/com/skyflow/utils/logger/LogUtil.java @@ -8,9 +8,12 @@ public final class LogUtil { private static final Logger LOGGER = Logger.getLogger(LogUtil.class.getName()); - private static final String SDK_LOG_PREFIX = "[" + SdkVersion.getSdkPrefix() + "] "; private static boolean IS_LOGGER_SETUP_DONE = false; + private static String logPrefix() { + return "[" + SdkVersion.getSdkPrefix() + "] "; + } + synchronized public static void setupLogger(LogLevel logLevel) { IS_LOGGER_SETUP_DONE = true; LogManager.getLogManager().reset(); @@ -39,26 +42,26 @@ public synchronized String format(LogRecord logRecord) { public static void printErrorLog(String message) { if (IS_LOGGER_SETUP_DONE) - LOGGER.severe(SDK_LOG_PREFIX + message); + LOGGER.severe(logPrefix() + message); else { setupLogger(LogLevel.ERROR); - LOGGER.severe(SDK_LOG_PREFIX + message); + LOGGER.severe(logPrefix() + message); } } public static void printDebugLog(String message) { if (IS_LOGGER_SETUP_DONE) - LOGGER.config(SDK_LOG_PREFIX + message); + LOGGER.config(logPrefix() + message); } public static void printWarningLog(String message) { if (IS_LOGGER_SETUP_DONE) - LOGGER.warning(SDK_LOG_PREFIX + message); + LOGGER.warning(logPrefix() + message); } public static void printInfoLog(String message) { if (IS_LOGGER_SETUP_DONE) - LOGGER.info(SDK_LOG_PREFIX + message); + LOGGER.info(logPrefix() + message); } diff --git a/common/src/main/java/com/skyflow/vault/controller/BaseVaultController.java b/common/src/main/java/com/skyflow/vault/controller/BaseVaultController.java deleted file mode 100644 index d6cd31ae..00000000 --- a/common/src/main/java/com/skyflow/vault/controller/BaseVaultController.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.skyflow.vault.controller; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.skyflow.errors.SkyflowException; -import com.skyflow.logs.ErrorLogs; -import com.skyflow.utils.logger.LogUtil; - -import java.util.List; -import java.util.Map; - -public class BaseVaultController { - protected static final Gson GSON = new GsonBuilder().serializeNulls().create(); - - protected static SkyflowException wrapApiException(int statusCode, Throwable cause, - Map> headers, - Object responseBody, ErrorLogs errorLog) { - LogUtil.printErrorLog(errorLog.getLog()); - return new SkyflowException(statusCode, cause, headers, GSON.toJson(responseBody)); - } -} diff --git a/flowvault/pom.xml b/flowvault/pom.xml index 9f36f6c4..1efc6173 100644 --- a/flowvault/pom.xml +++ b/flowvault/pom.xml @@ -44,7 +44,8 @@ com.skyflow common - 1.0.1 + 1.0.0 + compile diff --git a/flowvault/src/main/java/com/skyflow/Skyflow.java b/flowvault/src/main/java/com/skyflow/Skyflow.java index 3608b463..cb5676e4 100644 --- a/flowvault/src/main/java/com/skyflow/Skyflow.java +++ b/flowvault/src/main/java/com/skyflow/Skyflow.java @@ -36,6 +36,10 @@ public VaultConfig getVaultConfig() { return (VaultConfig) array[0]; } + public VaultConfig getVaultConfig(String vaultId) { + return this.builder.vaultConfigMap.get(vaultId); + } + @Override public Skyflow addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { this.builder.addVaultConfig(vaultConfig); @@ -74,12 +78,15 @@ public VaultController vault() throws SkyflowException { throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); } String vaultId = (String) array[0]; + return this.vault(vaultId); + } + + public VaultController vault(String vaultId) throws SkyflowException { VaultController controller = this.builder.vaultClientsMap.get(vaultId); if (controller == null) { LogUtil.printErrorLog(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog()); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); } - return controller; } @@ -101,7 +108,7 @@ public SkyflowClientBuilder addVaultConfig(VaultConfig vaultConfig) throws Skyfl } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } - if (!this.vaultClientsMap.isEmpty()) { + if (this.vaultClientsMap.containsKey(vaultConfigCopy.getVaultId())) { LogUtil.printErrorLog(Utils.parameterizedString( ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultConfigCopy.getVaultId() )); diff --git a/flowvault/src/main/java/com/skyflow/VaultClient.java b/flowvault/src/main/java/com/skyflow/VaultClient.java index 00a3d57d..e7d395a7 100644 --- a/flowvault/src/main/java/com/skyflow/VaultClient.java +++ b/flowvault/src/main/java/com/skyflow/VaultClient.java @@ -8,15 +8,12 @@ import com.skyflow.generated.rest.resources.flowservice.FlowserviceClient; import com.skyflow.utils.Utils; - public class VaultClient extends BaseVaultClient { - private final VaultConfig vaultConfig; private final ApiClientBuilder apiClientBuilder; private ApiClient apiClient; protected VaultClient(VaultConfig vaultConfig, Credentials credentials) throws SkyflowException { - this.vaultConfig = vaultConfig; - this.commonCredentials = credentials; + super(vaultConfig, credentials); this.apiClientBuilder = new ApiClientBuilder(); this.apiClient = null; updateVaultURL(); @@ -26,10 +23,6 @@ protected FlowserviceClient getRecordsApi() { return this.apiClient.flowservice(); } - protected VaultConfig getVaultConfig() { - return vaultConfig; - } - protected void setCommonCredentials(Credentials commonCredentials) throws SkyflowException { this.commonCredentials = commonCredentials; super.prioritiseCredentials(this.vaultConfig.getCredentials()); diff --git a/flowvault/src/main/java/com/skyflow/utils/Constants.java b/flowvault/src/main/java/com/skyflow/utils/Constants.java index ff5f9eb2..983e82b3 100644 --- a/flowvault/src/main/java/com/skyflow/utils/Constants.java +++ b/flowvault/src/main/java/com/skyflow/utils/Constants.java @@ -5,10 +5,11 @@ import java.util.Properties; public final class Constants extends BaseConstants { - public static final String SDK_NAME = "Skyflow Java SDK "; + public static final String SDK_NAME = "Skyflow Java SDK"; public static final String SDK_VERSION; public static final String VAULT_DOMAIN = ".skyvault."; public static final String SDK_PREFIX; + public static final String SDK_METRIC_NAME_VERSION_PREFIX = "skyflow-flowvault-java@"; public static final Integer INSERT_BATCH_SIZE = 50; public static final Integer MAX_INSERT_BATCH_SIZE = 1000; public static final Integer INSERT_CONCURRENCY_LIMIT = 1; diff --git a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java index 62f8f2cb..6afd5cdb 100644 --- a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java +++ b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java @@ -13,7 +13,8 @@ import com.skyflow.vault.data.InsertRequest; import com.skyflow.vault.data.InsertResponse; -public final class VaultController extends VaultClient implements IVaultController{ +public final class VaultController extends VaultClient + implements IVaultController { private static final Gson gson = new GsonBuilder().serializeNulls().create(); private JsonObject metrics = Utils.getMetrics(); @@ -21,7 +22,6 @@ public VaultController(VaultConfig vaultConfig, Credentials credentials) throws super(vaultConfig, credentials); } - @Override public InsertResponse insert(InsertRequest request) throws SkyflowException { return null; diff --git a/flowvault/src/main/resources/sdk.properties b/flowvault/src/main/resources/sdk.properties new file mode 100644 index 00000000..a33c65cd --- /dev/null +++ b/flowvault/src/main/resources/sdk.properties @@ -0,0 +1 @@ +sdk.version=${sdk.version} diff --git a/v2/pom.xml b/v2/pom.xml index cf5a35b6..b2145ec6 100644 --- a/v2/pom.xml +++ b/v2/pom.xml @@ -18,6 +18,7 @@ 8 8 UTF-8 + ${project.version} @@ -28,4 +29,13 @@ + + + + + src/main/resources + true + + + \ No newline at end of file diff --git a/v2/src/main/java/com/skyflow/Skyflow.java b/v2/src/main/java/com/skyflow/Skyflow.java index c4381e3e..d36c24e3 100644 --- a/v2/src/main/java/com/skyflow/Skyflow.java +++ b/v2/src/main/java/com/skyflow/Skyflow.java @@ -10,6 +10,8 @@ import com.skyflow.errors.SkyflowException; import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; +import com.skyflow.utils.Constants; +import com.skyflow.utils.SdkVersion; import com.skyflow.utils.Utils; import com.skyflow.utils.logger.LogUtil; import com.skyflow.utils.validations.Validations; @@ -29,6 +31,7 @@ private Skyflow(SkyflowClientBuilder builder) { } public static SkyflowClientBuilder builder() { + SdkVersion.setSdkPrefix(Constants.SDK_PREFIX); return new SkyflowClientBuilder(); } @@ -171,20 +174,26 @@ public SkyflowClientBuilder() { public SkyflowClientBuilder addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); Validations.validateVaultConfig(vaultConfig); - if (this.vaultClientsMap.containsKey(vaultConfig.getVaultId())) { + VaultConfig vaultConfigCopy; + try { + vaultConfigCopy = (VaultConfig) vaultConfig.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + if (this.vaultClientsMap.containsKey(vaultConfigCopy.getVaultId())) { LogUtil.printErrorLog(Utils.parameterizedString( - ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultConfig.getVaultId() + ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultConfigCopy.getVaultId() )); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdAlreadyInConfigList.getMessage()); } else { - this.vaultConfigMap.put(vaultConfig.getVaultId(), vaultConfig); - this.vaultClientsMap.put(vaultConfig.getVaultId(), new VaultController(vaultConfig, this.skyflowCredentials)); - this.detectClientsMap.put(vaultConfig.getVaultId(), new DetectController(vaultConfig, this.skyflowCredentials)); + this.vaultConfigMap.put(vaultConfigCopy.getVaultId(), vaultConfigCopy); + this.vaultClientsMap.put(vaultConfigCopy.getVaultId(), new VaultController(vaultConfigCopy, this.skyflowCredentials)); + this.detectClientsMap.put(vaultConfigCopy.getVaultId(), new DetectController(vaultConfigCopy, this.skyflowCredentials)); LogUtil.printInfoLog(Utils.parameterizedString( - InfoLogs.VAULT_CONTROLLER_INITIALIZED.getLog(), vaultConfig.getVaultId())); + InfoLogs.VAULT_CONTROLLER_INITIALIZED.getLog(), vaultConfigCopy.getVaultId())); LogUtil.printInfoLog(Utils.parameterizedString( - InfoLogs.DETECT_CONTROLLER_INITIALIZED.getLog(), vaultConfig.getVaultId())); + InfoLogs.DETECT_CONTROLLER_INITIALIZED.getLog(), vaultConfigCopy.getVaultId())); } return this; } @@ -266,7 +275,13 @@ public SkyflowClientBuilder removeConnectionConfig(String connectionId) throws S public SkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throws SkyflowException { Validations.validateCredentials(credentials); - this.skyflowCredentials = credentials; + Credentials credentialsCopy; + try { + credentialsCopy = (Credentials) credentials.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + this.skyflowCredentials = credentialsCopy; for (VaultController vault : this.vaultClientsMap.values()) { vault.setCommonCredentials(this.skyflowCredentials); } @@ -293,7 +308,14 @@ private VaultConfig findAndUpdateVaultConfig(VaultConfig vaultConfig) { VaultConfig previousConfig = this.vaultConfigMap.get(vaultConfig.getVaultId()); Env env = vaultConfig.getEnv() != null ? vaultConfig.getEnv() : previousConfig.getEnv(); String clusterId = vaultConfig.getClusterId() != null ? vaultConfig.getClusterId() : previousConfig.getClusterId(); - Credentials credentials = vaultConfig.getCredentials() != null ? vaultConfig.getCredentials() : previousConfig.getCredentials(); + Credentials credentials = previousConfig.getCredentials(); + if (vaultConfig.getCredentials() != null) { + try { + credentials = (Credentials) vaultConfig.getCredentials().clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } previousConfig.setEnv(env); previousConfig.setClusterId(clusterId); previousConfig.setCredentials(credentials); diff --git a/v2/src/main/java/com/skyflow/VaultClient.java b/v2/src/main/java/com/skyflow/VaultClient.java index ff8088eb..ef6381b5 100644 --- a/v2/src/main/java/com/skyflow/VaultClient.java +++ b/v2/src/main/java/com/skyflow/VaultClient.java @@ -45,13 +45,11 @@ public class VaultClient extends BaseVaultClient { - private final VaultConfig vaultConfig; private final ApiClientBuilder apiClientBuilder; private ApiClient apiClient; protected VaultClient(VaultConfig vaultConfig, Credentials credentials) { - this.vaultConfig = vaultConfig; - this.commonCredentials = credentials; + super(vaultConfig, credentials); this.apiClientBuilder = new ApiClientBuilder(); this.apiClient = null; updateVaultURL(); @@ -77,10 +75,6 @@ protected QueryClient getQueryApi() { return this.apiClient.query(); } - protected VaultConfig getVaultConfig() { - return vaultConfig; - } - protected void setCommonCredentials(Credentials commonCredentials) throws SkyflowException { this.commonCredentials = commonCredentials; super.prioritiseCredentials(this.vaultConfig.getCredentials()); diff --git a/v2/src/main/java/com/skyflow/config/Credentials.java b/v2/src/main/java/com/skyflow/config/Credentials.java deleted file mode 100644 index 5d1a7859..00000000 --- a/v2/src/main/java/com/skyflow/config/Credentials.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.skyflow.config; - -import java.util.Map; - -public class Credentials extends BaseCredentials { - - public Credentials() { - super(); - } -} diff --git a/v2/src/main/java/com/skyflow/config/VaultConfig.java b/v2/src/main/java/com/skyflow/config/VaultConfig.java deleted file mode 100644 index 36d86668..00000000 --- a/v2/src/main/java/com/skyflow/config/VaultConfig.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.skyflow.config; - -public class VaultConfig extends BaseVaultConfig { - Credentials credentials; - public VaultConfig() { - super(); - } - - public Credentials getCredentials() { - return credentials; - } - - public void setCredentials(Credentials credentials) { - this.credentials = credentials; - } -} diff --git a/v2/src/main/java/com/skyflow/errors/ErrorCode.java b/v2/src/main/java/com/skyflow/errors/ErrorCode.java deleted file mode 100644 index 943913c6..00000000 --- a/v2/src/main/java/com/skyflow/errors/ErrorCode.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.skyflow.errors; - -public enum ErrorCode { - INVALID_INPUT(400), - INVALID_INDEX(404), - SERVER_ERROR(500), - PARTIAL_SUCCESS(500); - - private final int code; - - ErrorCode(int code) { - this.code = code; - } - - public int getCode() { - return code; - } -} diff --git a/v2/src/main/java/com/skyflow/errors/HttpStatus.java b/v2/src/main/java/com/skyflow/errors/HttpStatus.java deleted file mode 100644 index 2cdadbb0..00000000 --- a/v2/src/main/java/com/skyflow/errors/HttpStatus.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.skyflow.errors; - -public enum HttpStatus { - BAD_REQUEST("Bad Request"); - - private final String httpStatus; - - HttpStatus(String httpStatus) { - this.httpStatus = httpStatus; - } - - public String getHttpStatus() { - return httpStatus; - } -} diff --git a/v2/src/main/java/com/skyflow/utils/Constants.java b/v2/src/main/java/com/skyflow/utils/Constants.java index aa3a3f14..2ca105d5 100644 --- a/v2/src/main/java/com/skyflow/utils/Constants.java +++ b/v2/src/main/java/com/skyflow/utils/Constants.java @@ -4,35 +4,13 @@ import java.io.InputStream; import java.util.Properties; -public final class Constants { - public static final String SECURE_PROTOCOL = "https://"; - public static final String DEV_DOMAIN = ".vault.skyflowapis.dev"; - public static final String STAGE_DOMAIN = ".vault.skyflowapis.tech"; - public static final String SANDBOX_DOMAIN = ".vault.skyflowapis-preview.com"; - public static final String PROD_DOMAIN = ".vault.skyflowapis.com"; - public static final String PKCS8_PRIVATE_HEADER = "-----BEGIN PRIVATE KEY-----"; - public static final String PKCS8_PRIVATE_FOOTER = "-----END PRIVATE KEY-----"; - public static final String GRANT_TYPE = "urn:ietf:params:oauth:grant-type:jwt-bearer"; - public static final String SIGNED_DATA_TOKEN_PREFIX = "signed_token_"; - public static final String ORDER_ASCENDING = "ASCENDING"; - public static final String API_KEY_REGEX = "^sky-[a-zA-Z0-9]{5}-[a-fA-F0-9]{32}$"; - public static final String CONTEXT_KEY_REGEX = "^[a-zA-Z0-9_]+$"; - public static final String ENV_CREDENTIALS_KEY_NAME = "SKYFLOW_CREDENTIALS"; +public final class Constants extends BaseConstants { public static final String SDK_NAME = "Skyflow Java SDK"; public static final String DEFAULT_SDK_VERSION = "v2"; public static final String SDK_VERSION; public static final String SDK_PREFIX; - public static final String SDK_METRIC_NAME_VERSION = "sdk_name_version"; public static final String SDK_METRIC_NAME_VERSION_PREFIX = "skyflow-java@"; - public static final String SDK_METRIC_CLIENT_DEVICE_MODEL = "sdk_client_device_model"; - public static final String SDK_METRIC_CLIENT_OS_DETAILS = "sdk_client_os_details"; - public static final String SDK_METRIC_RUNTIME_DETAILS = "sdk_runtime_details"; - public static final String SDK_METRIC_RUNTIME_DETAILS_PREFIX = "Java@"; - public static final String SDK_AUTH_HEADER_KEY = "x-skyflow-authorization"; - public static final String SDK_METRICS_HEADER_KEY = "sky-metadata"; - public static final String REQUEST_ID_HEADER_KEY = "x-request-id"; public static final String PROCESSED_FILE_NAME_PREFIX = "processed-"; - public static final String ERROR_FROM_CLIENT_HEADER_KEY = "error-from-client"; public static final String DEIDENTIFIED_FILE_PREFIX = "deidentified"; public static final String HTTPS_PROTOCOL = "https"; public static final String CURLY_PLACEHOLDER = "{%s}"; diff --git a/v2/src/main/java/com/skyflow/utils/Utils.java b/v2/src/main/java/com/skyflow/utils/Utils.java index ae5854cd..b5f81769 100644 --- a/v2/src/main/java/com/skyflow/utils/Utils.java +++ b/v2/src/main/java/com/skyflow/utils/Utils.java @@ -2,114 +2,15 @@ import com.google.gson.JsonObject; import com.skyflow.config.ConnectionConfig; -import com.skyflow.config.Credentials; import com.skyflow.enums.Env; -import com.skyflow.errors.ErrorCode; -import com.skyflow.errors.ErrorMessage; -import com.skyflow.errors.SkyflowException; -import com.skyflow.logs.ErrorLogs; -import com.skyflow.logs.InfoLogs; -import com.skyflow.serviceaccount.util.BearerToken; -import com.skyflow.utils.logger.LogUtil; import com.skyflow.vault.connection.InvokeConnectionRequest; -import org.apache.commons.codec.binary.Base64; -import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; -import java.security.KeyFactory; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.PKCS8EncodedKeySpec; import java.util.HashMap; import java.util.Map; -public final class Utils { +public final class Utils extends BaseUtils { public static String getVaultURL(String clusterId, Env env) { - StringBuilder sb = new StringBuilder(Constants.SECURE_PROTOCOL); - sb.append(clusterId); - switch (env) { - case DEV: - sb.append(Constants.DEV_DOMAIN); - break; - case STAGE: - sb.append(Constants.STAGE_DOMAIN); - break; - case SANDBOX: - sb.append(Constants.SANDBOX_DOMAIN); - break; - case PROD: - default: - sb.append(Constants.PROD_DOMAIN); - break; - } - return sb.toString(); - } - - @SuppressWarnings("unchecked") - public static String generateBearerToken(Credentials credentials) throws SkyflowException { - if (credentials.getPath() != null) { - BearerToken.BearerTokenBuilder builder = BearerToken.builder() - .setCredentials(new File(credentials.getPath())) - .setRoles(credentials.getRoles()); - Object ctx = credentials.getContext(); - if (ctx instanceof String) { - builder.setCtx((String) ctx); - } else if (ctx instanceof Map) { - builder.setCtx((Map) ctx); - } - return builder.build().getBearerToken(); - } else if (credentials.getCredentialsString() != null) { - BearerToken.BearerTokenBuilder builder = BearerToken.builder() - .setCredentials(credentials.getCredentialsString()) - .setRoles(credentials.getRoles()); - Object ctx = credentials.getContext(); - if (ctx instanceof String) { - builder.setCtx((String) ctx); - } else if (ctx instanceof Map) { - builder.setCtx((Map) ctx); - } - return builder.build().getBearerToken(); - } else { - return credentials.getToken(); - } - } - - public static PrivateKey getPrivateKeyFromPem(String pemKey) throws SkyflowException { - @SuppressWarnings("checkstyle:LocalVariableName") - String PKCS8PrivateHeader = Constants.PKCS8_PRIVATE_HEADER; - @SuppressWarnings("checkstyle:LocalVariableName") - String PKCS8PrivateFooter = Constants.PKCS8_PRIVATE_FOOTER; - - String privateKeyContent = pemKey; - PrivateKey privateKey = null; - - if (pemKey.contains(PKCS8PrivateHeader)) { - privateKeyContent = privateKeyContent.replace(PKCS8PrivateHeader, ""); - privateKeyContent = privateKeyContent.replace(PKCS8PrivateFooter, ""); - privateKeyContent = privateKeyContent.replace("\n", ""); - privateKeyContent = privateKeyContent.replace("\r\n", ""); - privateKey = parsePkcs8PrivateKey(Base64.decodeBase64(privateKeyContent)); - } else { - LogUtil.printErrorLog(ErrorLogs.JWT_INVALID_FORMAT.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.JwtInvalidFormat.getMessage()); - } - return privateKey; - } - - public static String getBaseURL(String url) throws MalformedURLException { - URL parsedUrl = new URL(url); - String protocol = parsedUrl.getProtocol(); - String host = parsedUrl.getHost(); - return String.format("%s://%s", protocol, host); - } - - public static String parameterizedString(String base, String... args) { - for (int index = 0; index < args.length; index++) { - base = base.replace("%s" + (index + 1), args[index]); - } - return base; + return getVaultURL(clusterId, env, BaseConstants.V2_VAULT_DOMAIN); } public static String constructConnectionURL(ConnectionConfig config, InvokeConnectionRequest invokeConnectionRequest) { @@ -147,67 +48,8 @@ public static Map constructConnectionHeadersMap(Map roles = credentials.getRoles(); - - if (path != null) nonNullMembers++; - if (credentialsString != null) nonNullMembers++; - if (token != null) nonNullMembers++; - if (apiKey != null) nonNullMembers++; - - if (nonNullMembers > 1) { - LogUtil.printErrorLog(ErrorLogs.MULTIPLE_TOKEN_GENERATION_MEANS_PASSED.getLog()); - throw new SkyflowException( - ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.MultipleTokenGenerationMeansPassed.getMessage() - ); - } else if (nonNullMembers < 1) { - LogUtil.printErrorLog(ErrorLogs.NO_TOKEN_GENERATION_MEANS_PASSED.getLog()); - throw new SkyflowException( - ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NoTokenGenerationMeansPassed.getMessage() - ); - } else if (path != null && path.trim().isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_CREDENTIALS_PATH.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentialFilePath.getMessage()); - } else if (credentialsString != null && credentialsString.trim().isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_CREDENTIALS_STRING.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentialsString.getMessage()); - } else if (token != null && token.trim().isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_TOKEN_VALUE.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyToken.getMessage()); - } else if (apiKey != null) { - if (apiKey.trim().isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_API_KEY_VALUE.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyApikey.getMessage()); - } else { - Pattern pattern = Pattern.compile(Constants.API_KEY_REGEX); - Matcher matcher = pattern.matcher(apiKey); - if (!matcher.matches()) { - LogUtil.printErrorLog(ErrorLogs.INVALID_API_KEY.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidApikey.getMessage()); - } - } - } else if (roles != null) { - if (roles.isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_ROLES.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRoles.getMessage()); - } else { - for (int index = 0; index < roles.size(); index++) { - String role = roles.get(index); - if (role == null || role.trim().isEmpty()) { - LogUtil.printErrorLog(Utils.parameterizedString( - ErrorLogs.EMPTY_OR_NULL_ROLE_IN_ROLES.getLog(), Integer.toString(index) - )); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRoleInRoles.getMessage()); - } - } - } - } - if (context != null) { - if (context instanceof String) { - String ctxStr = (String) context; - if (ctxStr.trim().isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_OR_NULL_CONTEXT.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyContext.getMessage()); - } - } else if (context instanceof Map) { - Map ctxMap = (Map) context; - if (ctxMap.isEmpty()) { - LogUtil.printErrorLog(ErrorLogs.EMPTY_OR_NULL_CONTEXT.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyContext.getMessage()); - } - Pattern ctxKeyPattern = Pattern.compile(Constants.CONTEXT_KEY_REGEX); - for (Object key : ctxMap.keySet()) { - if (key == null || !ctxKeyPattern.matcher(key.toString()).matches()) { - String keyStr = key == null ? "null" : key.toString(); - LogUtil.printErrorLog(Utils.parameterizedString( - ErrorLogs.INVALID_CONTEXT_MAP_KEY.getLog(), keyStr)); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), - Utils.parameterizedString(ErrorMessage.InvalidContextMapKey.getMessage(), keyStr)); - } - } - } else { - LogUtil.printErrorLog(ErrorLogs.INVALID_CONTEXT_TYPE.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidContextType.getMessage()); - } - } - } public static void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { String vaultId = vaultConfig.getVaultId(); diff --git a/v2/src/main/java/com/skyflow/vault/controller/VaultController.java b/v2/src/main/java/com/skyflow/vault/controller/VaultController.java index 2f74a584..1d82ac12 100644 --- a/v2/src/main/java/com/skyflow/vault/controller/VaultController.java +++ b/v2/src/main/java/com/skyflow/vault/controller/VaultController.java @@ -79,6 +79,10 @@ public final class VaultController extends VaultClient private static final Gson GSON = new GsonBuilder().serializeNulls().create(); private static final JsonObject SKY_METADATA = Utils.getMetrics(); + private static RequestOptions buildRequestOptions() { + return RequestOptions.builder().addHeader(Constants.SDK_METRICS_HEADER_KEY, SKY_METADATA.toString()).build(); + } + public VaultController(VaultConfig vaultConfig, Credentials credentials) { super(vaultConfig, credentials); } @@ -197,7 +201,7 @@ public InsertResponse insert(InsertRequest insertRequest) throws SkyflowExceptio setBearerToken(); if (continueOnError) { RecordServiceBatchOperationBody insertBody = super.getBatchInsertRequestBody(insertRequest); - RequestOptions requestOptions = RequestOptions.builder().addHeader(Constants.SDK_METRICS_HEADER_KEY, SKY_METADATA.toString()).build(); + RequestOptions requestOptions = buildRequestOptions(); batchInsertResult = super.getRecordsApi().withRawResponse().recordServiceBatchOperation(super.getVaultConfig().getVaultId(), insertBody, requestOptions); LogUtil.printInfoLog(InfoLogs.INSERT_REQUEST_RESOLVED.getLog()); Optional>> records = batchInsertResult.body().getResponses(); @@ -232,7 +236,7 @@ public InsertResponse insert(InsertRequest insertRequest) throws SkyflowExceptio } } } catch (ApiClientApiException e) { - throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.INSERT_RECORDS_REJECTED); + throw wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.INSERT_RECORDS_REJECTED); } LogUtil.printInfoLog(InfoLogs.INSERT_SUCCESS.getLog()); if (insertedFields.isEmpty()) { @@ -254,7 +258,7 @@ public DetokenizeResponse detokenize(DetokenizeRequest detokenizeRequest) throws Validations.validateDetokenizeRequest(detokenizeRequest); setBearerToken(); V1DetokenizePayload payload = super.getDetokenizePayload(detokenizeRequest); - RequestOptions requestOptions = RequestOptions.builder().addHeader(Constants.SDK_METRICS_HEADER_KEY, SKY_METADATA.toString()).build(); + RequestOptions requestOptions = buildRequestOptions(); result = super.getTokensApi().withRawResponse().recordServiceDetokenize(super.getVaultConfig().getVaultId(), payload, requestOptions); LogUtil.printInfoLog(InfoLogs.DETOKENIZE_REQUEST_RESOLVED.getLog()); Map> responseHeaders = result.headers(); @@ -275,7 +279,7 @@ public DetokenizeResponse detokenize(DetokenizeRequest detokenizeRequest) throws } } } catch (ApiClientApiException e) { - throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.DETOKENIZE_REQUEST_REJECTED); + throw wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.DETOKENIZE_REQUEST_REJECTED); } if (!errorRecords.isEmpty()) { @@ -315,7 +319,7 @@ public GetResponse get(GetRequest getRequest) throws SkyflowException { .orderBy(RecordServiceBulkGetRecordRequestOrderBy.valueOf(getRequest.getOrderBy())) .build(); - RequestOptions requestOptions = RequestOptions.builder().addHeader(Constants.SDK_METRICS_HEADER_KEY, SKY_METADATA.toString()).build(); + RequestOptions requestOptions = buildRequestOptions(); result = super.getRecordsApi().recordServiceBulkGetRecord( super.getVaultConfig().getVaultId(), getRequest.getTable(), @@ -330,7 +334,7 @@ public GetResponse get(GetRequest getRequest) throws SkyflowException { } } } catch (ApiClientApiException e) { - throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.GET_REQUEST_REJECTED); + throw wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.GET_REQUEST_REJECTED); } LogUtil.printInfoLog(InfoLogs.GET_SUCCESS.getLog()); return new GetResponse(data, null); @@ -346,7 +350,7 @@ public UpdateResponse update(UpdateRequest updateRequest) throws SkyflowExceptio Validations.validateUpdateRequest(updateRequest); setBearerToken(); RecordServiceUpdateRecordBody updateBody = super.getUpdateRequestBody(updateRequest); - RequestOptions requestOptions = RequestOptions.builder().addHeader(Constants.SDK_METRICS_HEADER_KEY, SKY_METADATA.toString()).build(); + RequestOptions requestOptions = buildRequestOptions(); result = super.getRecordsApi().recordServiceUpdateRecord( super.getVaultConfig().getVaultId(), updateRequest.getTable(), @@ -358,7 +362,7 @@ public UpdateResponse update(UpdateRequest updateRequest) throws SkyflowExceptio skyflowId = String.valueOf(result.getSkyflowId()); tokensMap = getFormattedUpdateRecord(result); } catch (ApiClientApiException e) { - throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.UPDATE_REQUEST_REJECTED); + throw wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.UPDATE_REQUEST_REJECTED); } LogUtil.printInfoLog(InfoLogs.UPDATE_SUCCESS.getLog()); return new UpdateResponse(skyflowId, tokensMap); @@ -374,12 +378,12 @@ public DeleteResponse delete(DeleteRequest deleteRequest) throws SkyflowExceptio RecordServiceBulkDeleteRecordBody deleteBody = RecordServiceBulkDeleteRecordBody.builder().skyflowIds(deleteRequest.getIds()) .build(); - RequestOptions requestOptions = RequestOptions.builder().addHeader(Constants.SDK_METRICS_HEADER_KEY, SKY_METADATA.toString()).build(); + RequestOptions requestOptions = buildRequestOptions(); result = super.getRecordsApi().recordServiceBulkDeleteRecord( super.getVaultConfig().getVaultId(), deleteRequest.getTable(), deleteBody, requestOptions); LogUtil.printInfoLog(InfoLogs.DELETE_REQUEST_RESOLVED.getLog()); } catch (ApiClientApiException e) { - throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.DELETE_REQUEST_REJECTED); + throw wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.DELETE_REQUEST_REJECTED); } LogUtil.printInfoLog(InfoLogs.DELETE_SUCCESS.getLog()); return new DeleteResponse(result.getRecordIdResponse().orElse(Collections.emptyList())); @@ -393,7 +397,7 @@ public QueryResponse query(QueryRequest queryRequest) throws SkyflowException { LogUtil.printInfoLog(InfoLogs.VALIDATING_QUERY_REQUEST.getLog()); Validations.validateQueryRequest(queryRequest); setBearerToken(); - RequestOptions requestOptions = RequestOptions.builder().addHeader(Constants.SDK_METRICS_HEADER_KEY, SKY_METADATA.toString()).build(); + RequestOptions requestOptions = buildRequestOptions(); result = super.getQueryApi().queryServiceExecuteQuery( super.getVaultConfig().getVaultId(), QueryServiceExecuteQueryBody.builder().query(queryRequest.getQuery()).build(), @@ -407,7 +411,7 @@ public QueryResponse query(QueryRequest queryRequest) throws SkyflowException { } } } catch (ApiClientApiException e) { - throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.QUERY_REQUEST_REJECTED); + throw wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.QUERY_REQUEST_REJECTED); } LogUtil.printInfoLog(InfoLogs.QUERY_SUCCESS.getLog()); return new QueryResponse(fields); @@ -422,7 +426,7 @@ public TokenizeResponse tokenize(TokenizeRequest tokenizeRequest) throws Skyflow Validations.validateTokenizeRequest(tokenizeRequest); setBearerToken(); V1TokenizePayload payload = super.getTokenizePayload(tokenizeRequest); - RequestOptions requestOptions = RequestOptions.builder().addHeader(Constants.SDK_METRICS_HEADER_KEY, SKY_METADATA.toString()).build(); + RequestOptions requestOptions = buildRequestOptions(); result = super.getTokensApi().recordServiceTokenize(super.getVaultConfig().getVaultId(), payload, requestOptions); LogUtil.printInfoLog(InfoLogs.TOKENIZE_REQUEST_RESOLVED.getLog()); if (result != null && result.getRecords().isPresent() && !result.getRecords().get().isEmpty()) { @@ -433,7 +437,7 @@ public TokenizeResponse tokenize(TokenizeRequest tokenizeRequest) throws Skyflow } } } catch (ApiClientApiException e) { - throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.TOKENIZE_REQUEST_REJECTED); + throw wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.TOKENIZE_REQUEST_REJECTED); } LogUtil.printInfoLog(InfoLogs.TOKENIZE_SUCCESS.getLog()); return new TokenizeResponse(list); @@ -456,7 +460,7 @@ public FileUploadResponse uploadFile(FileUploadRequest fileUploadRequest) throws .returnFileMetadata(false) .build(); - RequestOptions requestOptions = RequestOptions.builder().addHeader(Constants.SDK_METRICS_HEADER_KEY, SKY_METADATA.toString()).build(); + RequestOptions requestOptions = buildRequestOptions(); UploadFileV2Response uploadFileV2Response = super.getRecordsApi().uploadFileV2( super.getVaultConfig().getVaultId(), file, @@ -470,7 +474,7 @@ public FileUploadResponse uploadFile(FileUploadRequest fileUploadRequest) throws ); } catch (ApiClientApiException e) { - throw BaseVaultController.wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.UPLOAD_FILE_REQUEST_REJECTED); + throw wrapApiException(e.statusCode(), e, e.headers(), e.body(), ErrorLogs.UPLOAD_FILE_REQUEST_REJECTED); } catch (IOException e) { LogUtil.printErrorLog(ErrorLogs.UPLOAD_FILE_REQUEST_REJECTED.getLog()); throw new SkyflowException(e.getMessage(), e); From 6f2f55c9a99bf74fd8bfb00ce5dc46e640b95dcd Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Tue, 14 Jul 2026 00:27:06 +0530 Subject: [PATCH 04/26] SK-2967 fix tests --- v2/pom.xml | 10 ++++ .../test/java/com/skyflow/SkyflowTests.java | 57 ++++++++++--------- .../controller/DetectControllerTests.java | 9 +-- 3 files changed, 44 insertions(+), 32 deletions(-) diff --git a/v2/pom.xml b/v2/pom.xml index b2145ec6..b35a9552 100644 --- a/v2/pom.xml +++ b/v2/pom.xml @@ -37,5 +37,15 @@ true + + + org.apache.maven.plugins + maven-compiler-plugin + + 9 + 9 + + + \ No newline at end of file diff --git a/v2/src/test/java/com/skyflow/SkyflowTests.java b/v2/src/test/java/com/skyflow/SkyflowTests.java index 360daddd..f73b5bb0 100644 --- a/v2/src/test/java/com/skyflow/SkyflowTests.java +++ b/v2/src/test/java/com/skyflow/SkyflowTests.java @@ -1,6 +1,7 @@ package com.skyflow; -import com.skyflow.config.BaseVaultConfig; +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; import com.skyflow.config.ConnectionConfig; import com.skyflow.config.VaultConfig; import com.skyflow.enums.Env; @@ -60,7 +61,7 @@ public static void setup() { @Test public void testAddingInvalidVaultConfigInSkyflowBuilder() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(""); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -75,7 +76,7 @@ public void testAddingInvalidVaultConfigInSkyflowBuilder() { @Test public void testAddingInvalidVaultConfigInSkyflowClient() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(""); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -91,7 +92,7 @@ public void testAddingInvalidVaultConfigInSkyflowClient() { @Test public void testAddingValidVaultConfigInSkyflowClient() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -105,7 +106,7 @@ public void testAddingValidVaultConfigInSkyflowClient() { @Test public void testAddingExistingVaultConfigInSkyflowClient() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -121,7 +122,7 @@ public void testAddingExistingVaultConfigInSkyflowClient() { @Test public void testUpdatingNonExistentVaultConfigInSkyflowBuilder() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -136,7 +137,7 @@ public void testUpdatingNonExistentVaultConfigInSkyflowBuilder() { @Test public void testUpdatingNonExistentVaultConfigInSkyflowClient() { try { - BaseVaultConfig config = new VaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -154,7 +155,7 @@ public void testUpdatingNonExistentVaultConfigInSkyflowClient() { @Test public void testUpdatingValidVaultConfigInSkyflowClient() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -176,7 +177,7 @@ public void testUpdatingValidVaultConfigInSkyflowClient() { @Test public void testUpdateVaultConfigNullCredentialsFallsBackToPrevious() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -188,7 +189,7 @@ public void testUpdateVaultConfigNullCredentialsFallsBackToPrevious() { Skyflow skyflowClient = Skyflow.builder().addVaultConfig(config).build(); // Update with null credentials — should retain previous credentials value - BaseVaultConfig partialUpdate = new BaseVaultConfig(); + VaultConfig partialUpdate = new VaultConfig(); partialUpdate.setVaultId(vaultID); partialUpdate.setClusterId(clusterID); skyflowClient.updateVaultConfig(partialUpdate); @@ -212,7 +213,7 @@ public void testRemovingNonExistentVaultConfigInSkyflowBuilder() { @Test public void testRemovingNonExistentVaultConfigInSkyflowClient() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -239,7 +240,7 @@ public void testRemovingValidVaultConfigInSkyflowClient() { public void testGettingNonExistentVaultConfigInSkyflowClient() { try { Skyflow skyflowClient = Skyflow.builder().build(); - BaseVaultConfig config = skyflowClient.getVaultConfig(vaultID); + VaultConfig config = skyflowClient.getVaultConfig(vaultID); Assert.assertNull(config); } catch (Exception e) { Assert.fail(INVALID_EXCEPTION_THROWN); @@ -261,12 +262,12 @@ public void testGettingAlreadyRemovedVaultFromEmptyConfigs() { @Test public void testGettingAlreadyRemovedVaultFromNonEmptyConfigs() { try { - BaseVaultConfig primaryConfig = new BaseVaultConfig(); + VaultConfig primaryConfig = new VaultConfig(); primaryConfig.setVaultId(vaultID); primaryConfig.setClusterId(clusterID); primaryConfig.setEnv(Env.SANDBOX); - BaseVaultConfig secondaryConfig = new BaseVaultConfig(); + VaultConfig secondaryConfig = new VaultConfig(); secondaryConfig.setVaultId(vaultID + "123"); secondaryConfig.setClusterId(clusterID); secondaryConfig.setEnv(Env.SANDBOX); @@ -475,7 +476,7 @@ public void testAddingInvalidSkyflowCredentialsInSkyflowBuilder() { @Test public void testUpdatingValidSkyflowCredentialsInSkyflowClient() { try { - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); @@ -574,7 +575,7 @@ public void testVaultMethodWithNoConfig() { @Test public void testVaultMethodWithValidConfig() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -589,7 +590,7 @@ public void testVaultMethodWithValidConfig() { @Test public void testVaultMethodWithInvalidVaultId() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -658,7 +659,7 @@ public void testDetectMethodWithNoConfig() { @Test public void testDetectMethodWithValidConfig() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -673,7 +674,7 @@ public void testDetectMethodWithValidConfig() { @Test public void testDetectMethodWithInvalidVaultId() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.SANDBOX); @@ -689,7 +690,7 @@ public void testDetectMethodWithInvalidVaultId() { @Test public void testUpdateVaultConfig_withNewClusterIdAndCredentials_updatesAllFields() { try { - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.DEV); @@ -702,7 +703,7 @@ public void testUpdateVaultConfig_withNewClusterIdAndCredentials_updatesAllField // the non-null (true) branches for all three ternaries in findAndUpdateVaultConfig Credentials newCreds = new Credentials(); newCreds.setToken("updated-token-value"); - BaseVaultConfig update = new BaseVaultConfig(); + VaultConfig update = new VaultConfig(); update.setVaultId(vaultID); update.setClusterId(newClusterID); update.setEnv(Env.PROD); @@ -751,14 +752,14 @@ public void testUpdateVaultConfig_withNullEnv_fallsBackToPreviousEnv() { try { Credentials creds = new Credentials(); creds.setToken(token); - BaseVaultConfig initial = new BaseVaultConfig(); + VaultConfig initial = new VaultConfig(); initial.setVaultId(vaultID); initial.setClusterId(clusterID); initial.setEnv(Env.SANDBOX); initial.setCredentials(creds); Skyflow skyflowClient = Skyflow.builder().addVaultConfig(initial).build(); - BaseVaultConfig updateWithNullEnv = new BaseVaultConfig() { + VaultConfig updateWithNullEnv = new VaultConfig() { @Override public Env getEnv() { return null; } }; updateWithNullEnv.setVaultId(vaultID); @@ -781,7 +782,7 @@ public void testFindAndUpdateVaultConfig_withNullClusterId_fallsBackToPreviousCl try { Credentials creds = new Credentials(); creds.setToken(token); - BaseVaultConfig initial = new BaseVaultConfig(); + VaultConfig initial = new VaultConfig(); initial.setVaultId(vaultID); initial.setClusterId(clusterID); initial.setEnv(Env.DEV); @@ -792,17 +793,17 @@ public void testFindAndUpdateVaultConfig_withNullClusterId_fallsBackToPreviousCl builderField.setAccessible(true); Object builder = builderField.get(skyflowClient); - BaseVaultConfig nullClusterConfig = new BaseVaultConfig(); + VaultConfig nullClusterConfig = new VaultConfig(); nullClusterConfig.setVaultId(vaultID); // Override clusterId field to null via reflection (setter enforces non-null) - java.lang.reflect.Field clusterIdField = BaseVaultConfig.class.getDeclaredField("clusterId"); + java.lang.reflect.Field clusterIdField = VaultConfig.class.getDeclaredField("clusterId"); clusterIdField.setAccessible(true); clusterIdField.set(nullClusterConfig, null); java.lang.reflect.Method method = builder.getClass().getDeclaredMethod( - "findAndUpdateVaultConfig", BaseVaultConfig.class); + "findAndUpdateVaultConfig", VaultConfig.class); method.setAccessible(true); - BaseVaultConfig result = (BaseVaultConfig) method.invoke(builder, nullClusterConfig); + VaultConfig result = (VaultConfig) method.invoke(builder, nullClusterConfig); Assert.assertEquals(clusterID, result.getClusterId()); } catch (SkyflowException e) { diff --git a/v2/src/test/java/com/skyflow/vault/controller/DetectControllerTests.java b/v2/src/test/java/com/skyflow/vault/controller/DetectControllerTests.java index 83ad9d5c..52bb2be4 100644 --- a/v2/src/test/java/com/skyflow/vault/controller/DetectControllerTests.java +++ b/v2/src/test/java/com/skyflow/vault/controller/DetectControllerTests.java @@ -2,7 +2,8 @@ import com.skyflow.Skyflow; import com.skyflow.VaultClient; -import com.skyflow.config.BaseVaultConfig; +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; import com.skyflow.enums.DetectEntities; import com.skyflow.enums.Env; import com.skyflow.enums.LogLevel; @@ -55,7 +56,7 @@ public class DetectControllerTests { private static final String INVALID_EXCEPTION_THROWN = "Should not have thrown any exception"; private static String vaultID = null; private static String clusterID = null; - private static BaseVaultConfig vaultConfig = null; + private static VaultConfig vaultConfig = null; private static Skyflow skyflowClient = null; @BeforeClass @@ -66,7 +67,7 @@ public static void setup() throws SkyflowException { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - vaultConfig = new BaseVaultConfig(); + vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); @@ -84,7 +85,7 @@ private static DetectController createDetectControllerWithMock(ApiClient mockApi Credentials creds = new Credentials(); creds.setApiKey("sky-ab123-abcd1234cdef1234abcd4321cdef4321"); - BaseVaultConfig config = new BaseVaultConfig(); + VaultConfig config = new VaultConfig(); config.setVaultId(vaultID); config.setClusterId(clusterID); config.setEnv(Env.DEV); From 7356089255f6672535d092373ce1931d7147ba3f Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Tue, 14 Jul 2026 14:34:40 +0530 Subject: [PATCH 05/26] SK-2967 add base insert request and refactor the base skyflow --- .../main/java/com/skyflow/BaseSkyflow.java | 171 ++++++++++++- .../src/main/java/com/skyflow/ISkyflow.java | 4 +- .../skyflow/vault/data/BaseInsertRequest.java | 23 +- .../src/main/java/com/skyflow/Skyflow.java | 149 +++-------- .../com/skyflow/vault/data/InsertOptions.java | 30 +++ .../com/skyflow/vault/data/InsertRecord.java | 68 +++++ .../com/skyflow/vault/data/InsertRequest.java | 66 ++++- .../skyflow/vault/data/RequestContext.java | 26 ++ .../vault/data/RequestInterceptor.java | 6 + v2/src/main/java/com/skyflow/Skyflow.java | 234 +++++------------- .../com/skyflow/vault/data/InsertRequest.java | 6 +- .../controller/ConnectionControllerTests.java | 1 + .../com/skyflow/vault/data/DeleteTests.java | 1 + .../java/com/skyflow/vault/data/GetTests.java | 5 +- .../com/skyflow/vault/data/InsertTests.java | 5 +- .../com/skyflow/vault/data/QueryTests.java | 5 +- .../com/skyflow/vault/data/UpdateTests.java | 5 +- .../skyflow/vault/tokens/TokenizeTests.java | 7 +- 18 files changed, 493 insertions(+), 319 deletions(-) create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/InsertOptions.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/InsertRecord.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/RequestContext.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/RequestInterceptor.java diff --git a/common/src/main/java/com/skyflow/BaseSkyflow.java b/common/src/main/java/com/skyflow/BaseSkyflow.java index 83e31c1e..2b752e14 100644 --- a/common/src/main/java/com/skyflow/BaseSkyflow.java +++ b/common/src/main/java/com/skyflow/BaseSkyflow.java @@ -1,29 +1,115 @@ package com.skyflow; +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; import com.skyflow.enums.LogLevel; +import com.skyflow.errors.ErrorCode; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; import com.skyflow.utils.BaseUtils; import com.skyflow.utils.logger.LogUtil; +import com.skyflow.utils.validations.BaseValidations; -class BaseSkyflow { - private final BaseSkyflowClientBuilder builder; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; - protected BaseSkyflow(BaseSkyflowClientBuilder builder) { +abstract class BaseSkyflow implements ISkyflow { + protected final BaseSkyflowClientBuilder builder; + + protected BaseSkyflow(BaseSkyflowClientBuilder builder) { this.builder = builder; LogUtil.printInfoLog(InfoLogs.CLIENT_INITIALIZED.getLog()); } + protected abstract Self self(); + + @Override + public Self addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + this.builder.addVaultConfigTemplate(vaultConfig); + return self(); + } + + public VaultConfig getVaultConfig(String vaultId) { + return this.builder.vaultConfigMap.get(vaultId); + } + + @Override + public Self updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + this.builder.updateVaultConfigTemplate(vaultConfig); + return self(); + } + + @Override + public Self removeVaultConfig(String vaultId) throws SkyflowException { + this.builder.removeVaultConfigTemplate(vaultId); + return self(); + } + + @Override + public Self updateSkyflowCredentials(Credentials credentials) throws SkyflowException { + this.builder.addSkyflowCredentialsTemplate(credentials); + return self(); + } + + @Override + public Self setLogLevel(LogLevel logLevel) { + this.builder.setLogLevel(logLevel); + return self(); + } + + @Override public LogLevel getLogLevel() { return this.builder.logLevel; } - static class BaseSkyflowClientBuilder { + @Override + public VC vault() throws SkyflowException { + return resolveOrThrow(this.builder.vaultClientsMap, null, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); + } + + protected static T resolveOrThrow(Map map, String key, + ErrorLogs errorLog, ErrorMessage errorMessage) throws SkyflowException { + T value = key != null ? map.get(key) : map.values().stream().findFirst().orElse(null); + if (value == null) { + LogUtil.printErrorLog(errorLog.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), errorMessage.getMessage()); + } + return value; + } + + abstract static class BaseSkyflowClientBuilder { + protected final LinkedHashMap vaultConfigMap = new LinkedHashMap<>(); + protected final LinkedHashMap vaultClientsMap = new LinkedHashMap<>(); + protected Credentials skyflowCredentials; protected LogLevel logLevel = LogLevel.ERROR; protected BaseSkyflowClientBuilder() { } - protected BaseSkyflowClientBuilder setLogLevel(LogLevel logLevel) { + public BaseSkyflowClientBuilder addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + addVaultConfigTemplate(vaultConfig); + return this; + } + + public BaseSkyflowClientBuilder updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + updateVaultConfigTemplate(vaultConfig); + return this; + } + + public BaseSkyflowClientBuilder removeVaultConfig(String vaultId) throws SkyflowException { + removeVaultConfigTemplate(vaultId); + return this; + } + + public BaseSkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throws SkyflowException { + addSkyflowCredentialsTemplate(credentials); + return this; + } + + protected BaseSkyflowClientBuilder setLogLevel(LogLevel logLevel) { this.logLevel = logLevel == null ? LogLevel.ERROR : logLevel; LogUtil.setupLogger(this.logLevel); LogUtil.printInfoLog(BaseUtils.parameterizedString( @@ -31,6 +117,81 @@ protected BaseSkyflowClientBuilder setLogLevel(LogLevel logLevel) { )); return this; } + + protected final void addVaultConfigTemplate(VaultConfig vaultConfig) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); + validateVaultConfig(vaultConfig); + VaultConfig vaultConfigCopy; + try { + vaultConfigCopy = (VaultConfig) vaultConfig.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + if (this.vaultClientsMap.containsKey(vaultConfigCopy.getVaultId())) { + LogUtil.printErrorLog(BaseUtils.parameterizedString( + ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultConfigCopy.getVaultId() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), + ErrorMessage.VaultIdAlreadyInConfigList.getMessage()); + } + this.vaultConfigMap.put(vaultConfigCopy.getVaultId(), vaultConfigCopy); + onVaultConfigAdded(vaultConfigCopy); + } + + protected final void updateVaultConfigTemplate(VaultConfig vaultConfig) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); + validateVaultConfig(vaultConfig); + if (!this.vaultClientsMap.containsKey(vaultConfig.getVaultId())) { + LogUtil.printErrorLog(BaseUtils.parameterizedString( + ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultConfig.getVaultId() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); + } + VaultConfig previousConfig = this.vaultConfigMap.get(vaultConfig.getVaultId()); + if (vaultConfig.getEnv() != null) { + previousConfig.setEnv(vaultConfig.getEnv()); + } + if (vaultConfig.getClusterId() != null) { + previousConfig.setClusterId(vaultConfig.getClusterId()); + } + if (vaultConfig.getCredentials() != null) { + try { + previousConfig.setCredentials((Credentials) vaultConfig.getCredentials().clone()); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } + onVaultConfigUpdated(previousConfig); + } + + protected final void removeVaultConfigTemplate(String vaultId) throws SkyflowException { + if (!this.vaultClientsMap.containsKey(vaultId)) { + LogUtil.printErrorLog(BaseUtils.parameterizedString(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId)); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); + } + this.vaultClientsMap.remove(vaultId); + this.vaultConfigMap.remove(vaultId); + } + + protected final void addSkyflowCredentialsTemplate(Credentials credentials) throws SkyflowException { + BaseValidations.validateCredentials(credentials); + Credentials credentialsCopy; + try { + credentialsCopy = (Credentials) credentials.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + this.skyflowCredentials = credentialsCopy; + onCredentialsUpdated(credentialsCopy); + } + + protected abstract void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowException; + + protected abstract void onVaultConfigAdded(VaultConfig vaultConfig) throws SkyflowException; + + protected abstract void onVaultConfigUpdated(VaultConfig updatedConfig) throws SkyflowException; + + protected abstract void onCredentialsUpdated(Credentials credentials) throws SkyflowException; } } diff --git a/common/src/main/java/com/skyflow/ISkyflow.java b/common/src/main/java/com/skyflow/ISkyflow.java index f756ed2f..55879a6c 100644 --- a/common/src/main/java/com/skyflow/ISkyflow.java +++ b/common/src/main/java/com/skyflow/ISkyflow.java @@ -1,11 +1,9 @@ package com.skyflow; -import com.skyflow.config.BaseCredentials; -import com.skyflow.config.BaseVaultConfig; import com.skyflow.enums.LogLevel; import com.skyflow.errors.SkyflowException; -public interface ISkyflow, V extends BaseVaultConfig, C extends BaseCredentials, VC> { +public interface ISkyflow { Self addVaultConfig(V vaultConfig) throws SkyflowException; Self updateVaultConfig(V vaultConfig) throws SkyflowException; diff --git a/common/src/main/java/com/skyflow/vault/data/BaseInsertRequest.java b/common/src/main/java/com/skyflow/vault/data/BaseInsertRequest.java index 9f463b6f..d2f6f812 100644 --- a/common/src/main/java/com/skyflow/vault/data/BaseInsertRequest.java +++ b/common/src/main/java/com/skyflow/vault/data/BaseInsertRequest.java @@ -1,4 +1,25 @@ package com.skyflow.vault.data; -public class BaseInsertRequest { +class BaseInsertRequest { + private final BaseInsertRequestBuilder builder; + + protected BaseInsertRequest(BaseInsertRequestBuilder builder) { + this.builder = builder; + } + + public String getTable() { + return this.builder.table; + } + + static class BaseInsertRequestBuilder { + protected String table; + protected BaseInsertRequestBuilder() { + } + + public BaseInsertRequestBuilder table(String table) { + this.table = table; + return this; + } + + } } diff --git a/flowvault/src/main/java/com/skyflow/Skyflow.java b/flowvault/src/main/java/com/skyflow/Skyflow.java index cb5676e4..f534c1da 100644 --- a/flowvault/src/main/java/com/skyflow/Skyflow.java +++ b/flowvault/src/main/java/com/skyflow/Skyflow.java @@ -3,10 +3,7 @@ import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; import com.skyflow.enums.LogLevel; -import com.skyflow.errors.ErrorCode; -import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; -import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; import com.skyflow.utils.Constants; import com.skyflow.utils.SdkVersion; @@ -15,15 +12,15 @@ import com.skyflow.utils.validations.Validations; import com.skyflow.vault.controller.VaultController; -import java.util.LinkedHashMap; - -public final class Skyflow extends BaseSkyflow - implements ISkyflow { - private final SkyflowClientBuilder builder; +public final class Skyflow extends BaseSkyflow { private Skyflow(SkyflowClientBuilder builder) { super(builder); - this.builder = builder; + } + + @Override + protected Skyflow self() { + return this; } public static SkyflowClientBuilder builder() { @@ -36,136 +33,52 @@ public VaultConfig getVaultConfig() { return (VaultConfig) array[0]; } - public VaultConfig getVaultConfig(String vaultId) { - return this.builder.vaultConfigMap.get(vaultId); - } + public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { - @Override - public Skyflow addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { - this.builder.addVaultConfig(vaultConfig); - return this; - } - - @Override - public Skyflow updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { - this.builder.updateVaultConfig(vaultConfig); - return this; - } - - @Override - public Skyflow removeVaultConfig(String vaultId) throws SkyflowException { - this.builder.removeVaultConfig(vaultId); - return this; - } - - @Override - public Skyflow updateSkyflowCredentials(Credentials credentials) throws SkyflowException { - this.builder.addSkyflowCredentials(credentials); - return this; - } - - @Override - public Skyflow setLogLevel(LogLevel logLevel) { - this.builder.setLogLevel(logLevel); - return this; - } + @Override + protected void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + Validations.validateVaultConfiguration(vaultConfig); + } - @Override - public VaultController vault() throws SkyflowException { - Object[] array = this.builder.vaultClientsMap.keySet().toArray(); - if (array.length < 1) { - LogUtil.printErrorLog(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); + @Override + protected void onVaultConfigAdded(VaultConfig vaultConfig) throws SkyflowException { + this.vaultClientsMap.put(vaultConfig.getVaultId(), new VaultController(vaultConfig, this.skyflowCredentials)); + LogUtil.printInfoLog(Utils.parameterizedString(InfoLogs.VAULT_CONTROLLER_INITIALIZED.getLog(), vaultConfig.getVaultId())); } - String vaultId = (String) array[0]; - return this.vault(vaultId); - } - public VaultController vault(String vaultId) throws SkyflowException { - VaultController controller = this.builder.vaultClientsMap.get(vaultId); - if (controller == null) { - LogUtil.printErrorLog(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); + @Override + protected void onVaultConfigUpdated(VaultConfig updatedConfig) throws SkyflowException { + this.vaultClientsMap.put(updatedConfig.getVaultId(), new VaultController(updatedConfig, this.skyflowCredentials)); } - return controller; - } - public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { - private final LinkedHashMap vaultConfigMap; - private final LinkedHashMap vaultClientsMap; - protected Credentials skyflowCredentials; - public SkyflowClientBuilder() { - this.vaultConfigMap = new LinkedHashMap<>(); - this.vaultClientsMap = new LinkedHashMap<>(); + @Override + protected void onCredentialsUpdated(Credentials credentials) throws SkyflowException { + for (VaultController vault : this.vaultClientsMap.values()) { + vault.setCommonCredentials(credentials); + } } + @Override public SkyflowClientBuilder addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { - LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); - Validations.validateVaultConfiguration(vaultConfig); - VaultConfig vaultConfigCopy; - try { - vaultConfigCopy = (VaultConfig) vaultConfig.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - if (this.vaultClientsMap.containsKey(vaultConfigCopy.getVaultId())) { - LogUtil.printErrorLog(Utils.parameterizedString( - ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultConfigCopy.getVaultId() - )); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), - ErrorMessage.VaultIdAlreadyInConfigList.getMessage()); - } else { - this.vaultConfigMap.put(vaultConfigCopy.getVaultId(), vaultConfigCopy); // add new config in map - this.vaultClientsMap.put(vaultConfigCopy.getVaultId(), new VaultController(vaultConfigCopy, this.skyflowCredentials)); // add new controller with new config - LogUtil.printInfoLog(Utils.parameterizedString( - InfoLogs.VAULT_CONTROLLER_INITIALIZED.getLog(), vaultConfigCopy.getVaultId())); - } + super.addVaultConfig(vaultConfig); return this; } + @Override public SkyflowClientBuilder updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { - LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); - Validations.validateVaultConfiguration(vaultConfig); - if (this.vaultClientsMap.containsKey(vaultConfig.getVaultId())) { - VaultConfig existing = this.vaultConfigMap.get(vaultConfig.getVaultId()); - if (vaultConfig.getEnv() != null) existing.setEnv(vaultConfig.getEnv()); - if (vaultConfig.getClusterId() != null) existing.setClusterId(vaultConfig.getClusterId()); - if (vaultConfig.getCredentials() != null) existing.setCredentials(vaultConfig.getCredentials()); - this.vaultClientsMap.put(existing.getVaultId(), new VaultController(existing, this.skyflowCredentials)); - } else { - LogUtil.printErrorLog(Utils.parameterizedString( - ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultConfig.getVaultId() - )); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); - } + super.updateVaultConfig(vaultConfig); return this; } + @Override public SkyflowClientBuilder removeVaultConfig(String vaultId) throws SkyflowException { - if (this.vaultClientsMap.containsKey(vaultId)) { - this.vaultClientsMap.remove(vaultId); - this.vaultConfigMap.remove(vaultId); - } else { - LogUtil.printErrorLog(Utils.parameterizedString( - ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId - )); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); - } + super.removeVaultConfig(vaultId); return this; } + @Override public SkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throws SkyflowException { - Validations.validateCredentials(credentials); - Credentials credentialsCopy; - try { - credentialsCopy = (Credentials) credentials.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - this.skyflowCredentials = credentialsCopy; - for (VaultController vault : this.vaultClientsMap.values()) { - vault.setCommonCredentials(this.skyflowCredentials); - } + super.addSkyflowCredentials(credentials); return this; } diff --git a/flowvault/src/main/java/com/skyflow/vault/data/InsertOptions.java b/flowvault/src/main/java/com/skyflow/vault/data/InsertOptions.java new file mode 100644 index 00000000..73262b98 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/InsertOptions.java @@ -0,0 +1,30 @@ +package com.skyflow.vault.data; + +public final class InsertOptions { + private final RequestInterceptor interceptor; + + private InsertOptions(Builder builder) { + this.interceptor = builder.interceptor; + } + + public RequestInterceptor getInterceptor() { + return interceptor; + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private RequestInterceptor interceptor; + + public Builder interceptor(RequestInterceptor interceptor) { + this.interceptor = interceptor; + return this; + } + + public InsertOptions build() { + return new InsertOptions(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/InsertRecord.java b/flowvault/src/main/java/com/skyflow/vault/data/InsertRecord.java new file mode 100644 index 00000000..e9cb5c08 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/InsertRecord.java @@ -0,0 +1,68 @@ +package com.skyflow.vault.data; + +import com.skyflow.enums.UpsertType; + +import java.util.List; +import java.util.Map; + +public class InsertRecord { + private final InsertRecordBuilder builder; + + private InsertRecord(InsertRecordBuilder builder) { + this.builder = builder; + } + + // Getters + public String getTable() { + return this.builder.table; + } + + public Map getData() { + return this.builder.data; + } + + public List getUpsert() { + return this.builder.upsert; + } + + public UpsertType getUpsertType() { + return this.builder.upsertType; + } + + // Builder Class + public static final class InsertRecordBuilder{ + private String table; + private Map data; + private List upsert; + private UpsertType upsertType; + + public InsertRecordBuilder table(String table) { + this.table = table; + return this; + } + + public InsertRecordBuilder data(Map data) { + this.data = data; + return this; + } + + public InsertRecordBuilder upsert(List upsert) { + this.upsert = upsert; + return this; + } + + public InsertRecordBuilder upsertType(UpsertType upsertType) { + this.upsertType = upsertType; + return this; + } + + public InsertRecord build() { + return new InsertRecord(this); + } + } + + // Static entry point for builder + public static InsertRecordBuilder builder() { + return new InsertRecordBuilder(); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java index b3c82df0..4d8e8cae 100644 --- a/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java +++ b/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java @@ -1,4 +1,68 @@ package com.skyflow.vault.data; +import com.skyflow.enums.UpsertType; -public class InsertRequest extends BaseInsertRequest{ +import java.util.ArrayList; +import java.util.List; + +public class InsertRequest extends BaseInsertRequest { + private final InsertRequestBuilder builder; + + private InsertRequest(InsertRequestBuilder builder) { + super(builder); + this.builder = builder; + } + + + public static InsertRequestBuilder builder() { + return new InsertRequestBuilder(); + } + + public List getUpsert() { + return this.builder.upsert; + } + + public UpsertType getUpsertType() { + return this.builder.upsertType; + } + + public ArrayList getRecords(){ + return this.builder.records; + } + + public static final class InsertRequestBuilder extends BaseInsertRequestBuilder { + private List upsert; + + private UpsertType upsertType; + + private ArrayList records; + + private InsertRequestBuilder() { + super(); + } + + @Override + public InsertRequestBuilder table(String table) { + super.table(table); + return this; + } + + public InsertRequestBuilder upsert(List upsert) { + this.upsert = upsert; + return this; + } + + public InsertRequestBuilder upsertType(UpsertType upsertType) { + this.upsertType = upsertType; + return this; + } + + public InsertRequestBuilder records(ArrayList records){ + this.records = records; + return this; + } + + public InsertRequest build() { + return new InsertRequest(this); + } + } } diff --git a/flowvault/src/main/java/com/skyflow/vault/data/RequestContext.java b/flowvault/src/main/java/com/skyflow/vault/data/RequestContext.java new file mode 100644 index 00000000..1473df50 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/RequestContext.java @@ -0,0 +1,26 @@ +package com.skyflow.vault.data; + +import com.skyflow.enums.CustomHeaderKey; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public final class RequestContext { + private final String operation; + private final Map headers = new HashMap<>(); + + public RequestContext(String operation, int batchIndex, int totalBatches) { + this.operation = operation; + } + + public String getOperation() { return operation; } + + public void addHeader(CustomHeaderKey key, String value) { + headers.put(key, value); + } + + public Map getHeaders() { + return Collections.unmodifiableMap(headers); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/RequestInterceptor.java b/flowvault/src/main/java/com/skyflow/vault/data/RequestInterceptor.java new file mode 100644 index 00000000..37f5261d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/RequestInterceptor.java @@ -0,0 +1,6 @@ +package com.skyflow.vault.data; + +@FunctionalInterface +public interface RequestInterceptor { + void intercept(RequestContext context); +} diff --git a/v2/src/main/java/com/skyflow/Skyflow.java b/v2/src/main/java/com/skyflow/Skyflow.java index d36c24e3..5e763fb9 100644 --- a/v2/src/main/java/com/skyflow/Skyflow.java +++ b/v2/src/main/java/com/skyflow/Skyflow.java @@ -3,15 +3,12 @@ import com.skyflow.config.ConnectionConfig; import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; -import com.skyflow.enums.Env; import com.skyflow.enums.LogLevel; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; -import com.skyflow.utils.Constants; -import com.skyflow.utils.SdkVersion; import com.skyflow.utils.Utils; import com.skyflow.utils.logger.LogUtil; import com.skyflow.utils.validations.Validations; @@ -21,8 +18,7 @@ import java.util.LinkedHashMap; -public final class Skyflow extends BaseSkyflow - implements ISkyflow { +public final class Skyflow extends BaseSkyflow { private final SkyflowClientBuilder builder; private Skyflow(SkyflowClientBuilder builder) { @@ -30,43 +26,13 @@ private Skyflow(SkyflowClientBuilder builder) { this.builder = builder; } - public static SkyflowClientBuilder builder() { - SdkVersion.setSdkPrefix(Constants.SDK_PREFIX); - return new SkyflowClientBuilder(); - } - - @Override - public Skyflow addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { - this.builder.addVaultConfig(vaultConfig); - return this; - } - - public VaultConfig getVaultConfig(String vaultId) { - return this.builder.vaultConfigMap.get(vaultId); - } - - @Override - public Skyflow updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { - this.builder.updateVaultConfig(vaultConfig); - return this; - } - - @Override - public Skyflow removeVaultConfig(String vaultId) throws SkyflowException { - this.builder.removeVaultConfig(vaultId); - return this; - } - @Override - public Skyflow updateSkyflowCredentials(Credentials credentials) throws SkyflowException { - this.builder.addSkyflowCredentials(credentials); + protected Skyflow self() { return this; } - @Override - public Skyflow setLogLevel(LogLevel logLevel) { - this.builder.setLogLevel(logLevel); - return this; + public static SkyflowClientBuilder builder() { + return new SkyflowClientBuilder(); } public Skyflow addConnectionConfig(ConnectionConfig connectionConfig) throws SkyflowException { @@ -88,7 +54,6 @@ public Skyflow removeConnectionConfig(String connectionId) throws SkyflowExcepti return this; } - /** @deprecated Use {@link #setLogLevel(LogLevel)} instead. */ @Deprecated(since = "2.1", forRemoval = true) public Skyflow updateLogLevel(LogLevel logLevel) { @@ -96,132 +61,60 @@ public Skyflow updateLogLevel(LogLevel logLevel) { return setLogLevel(logLevel); } - @Override - public VaultController vault() throws SkyflowException { - Object[] array = this.builder.vaultClientsMap.keySet().toArray(); - if (array.length < 1) { - LogUtil.printErrorLog(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); - } - String vaultId = (String) array[0]; - return this.vault(vaultId); - } - public VaultController vault(String vaultId) throws SkyflowException { - VaultController controller = this.builder.vaultClientsMap.get(vaultId); - if (controller == null) { - LogUtil.printErrorLog(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); - } - return controller; + return resolveOrThrow(this.builder.vaultClientsMap, vaultId, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); } - public ConnectionController connection() throws SkyflowException { - Object[] array = this.builder.connectionsMap.keySet().toArray(); - if (array.length < 1) { - LogUtil.printErrorLog(ErrorLogs.CONNECTION_CONFIG_DOES_NOT_EXIST.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.ConnectionIdNotInConfigList.getMessage()); - } - String connectionId = (String) array[0]; - return this.connection(connectionId); + return resolveOrThrow(this.builder.connectionsMap, null, ErrorLogs.CONNECTION_CONFIG_DOES_NOT_EXIST, ErrorMessage.ConnectionIdNotInConfigList); } public ConnectionController connection(String connectionId) throws SkyflowException { - ConnectionController controller = this.builder.connectionsMap.get(connectionId); - if (controller == null) { - LogUtil.printErrorLog(ErrorLogs.CONNECTION_CONFIG_DOES_NOT_EXIST.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.ConnectionIdNotInConfigList.getMessage()); - } - return controller; + return resolveOrThrow(this.builder.connectionsMap, connectionId, ErrorLogs.CONNECTION_CONFIG_DOES_NOT_EXIST, ErrorMessage.ConnectionIdNotInConfigList); } public DetectController detect() throws SkyflowException { - Object[] array = this.builder.detectClientsMap.keySet().toArray(); - if (array.length < 1) { - LogUtil.printErrorLog(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); - } - String detectId = (String) array[0]; - return this.detect(detectId); + return resolveOrThrow(this.builder.detectClientsMap, null, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); } public DetectController detect(String vaultId) throws SkyflowException { - DetectController controller = this.builder.detectClientsMap.get(vaultId); - if (controller == null) { - LogUtil.printErrorLog(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog()); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); - } - return controller; + return resolveOrThrow(this.builder.detectClientsMap, vaultId, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); } - public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { - private final LinkedHashMap connectionsMap; - private final LinkedHashMap vaultClientsMap; - private final LinkedHashMap detectClientsMap; - private final LinkedHashMap vaultConfigMap; - private final LinkedHashMap connectionConfigMap; - private Credentials skyflowCredentials; - public SkyflowClientBuilder() { - this.vaultClientsMap = new LinkedHashMap<>(); - this.detectClientsMap = new LinkedHashMap<>(); - this.vaultConfigMap = new LinkedHashMap<>(); - this.connectionsMap = new LinkedHashMap<>(); - this.connectionConfigMap = new LinkedHashMap<>(); - this.skyflowCredentials = null; - } + public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { + private final LinkedHashMap connectionsMap = new LinkedHashMap<>(); + private final LinkedHashMap detectClientsMap = new LinkedHashMap<>(); + private final LinkedHashMap connectionConfigMap = new LinkedHashMap<>(); - public SkyflowClientBuilder addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { - LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); + @Override + protected void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { Validations.validateVaultConfig(vaultConfig); - VaultConfig vaultConfigCopy; - try { - vaultConfigCopy = (VaultConfig) vaultConfig.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - if (this.vaultClientsMap.containsKey(vaultConfigCopy.getVaultId())) { - LogUtil.printErrorLog(Utils.parameterizedString( - ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultConfigCopy.getVaultId() - )); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), - ErrorMessage.VaultIdAlreadyInConfigList.getMessage()); - } else { - this.vaultConfigMap.put(vaultConfigCopy.getVaultId(), vaultConfigCopy); - this.vaultClientsMap.put(vaultConfigCopy.getVaultId(), new VaultController(vaultConfigCopy, this.skyflowCredentials)); - this.detectClientsMap.put(vaultConfigCopy.getVaultId(), new DetectController(vaultConfigCopy, this.skyflowCredentials)); - LogUtil.printInfoLog(Utils.parameterizedString( - InfoLogs.VAULT_CONTROLLER_INITIALIZED.getLog(), vaultConfigCopy.getVaultId())); - LogUtil.printInfoLog(Utils.parameterizedString( - InfoLogs.DETECT_CONTROLLER_INITIALIZED.getLog(), vaultConfigCopy.getVaultId())); - } - return this; } - public SkyflowClientBuilder updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { - LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); - Validations.validateVaultConfig(vaultConfig); - if (this.vaultClientsMap.containsKey(vaultConfig.getVaultId())) { - VaultConfig updatedConfig = findAndUpdateVaultConfig(vaultConfig); - this.vaultClientsMap.get(updatedConfig.getVaultId()).updateVaultConfig(); - } else { - LogUtil.printErrorLog(Utils.parameterizedString( - ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultConfig.getVaultId() - )); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); - } - return this; + @Override + protected void onVaultConfigAdded(VaultConfig vaultConfig) throws SkyflowException { + this.vaultClientsMap.put(vaultConfig.getVaultId(), new VaultController(vaultConfig, this.skyflowCredentials)); + this.detectClientsMap.put(vaultConfig.getVaultId(), new DetectController(vaultConfig, this.skyflowCredentials)); + LogUtil.printInfoLog(Utils.parameterizedString(InfoLogs.VAULT_CONTROLLER_INITIALIZED.getLog(), vaultConfig.getVaultId())); + LogUtil.printInfoLog(Utils.parameterizedString(InfoLogs.DETECT_CONTROLLER_INITIALIZED.getLog(), vaultConfig.getVaultId())); } - public SkyflowClientBuilder removeVaultConfig(String vaultId) throws SkyflowException { - if (this.vaultClientsMap.containsKey(vaultId)) { - this.vaultClientsMap.remove(vaultId); - this.vaultConfigMap.remove(vaultId); - } else { - LogUtil.printErrorLog(Utils.parameterizedString(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId)); - throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); + @Override + protected void onVaultConfigUpdated(VaultConfig updatedConfig) throws SkyflowException { + this.vaultClientsMap.get(updatedConfig.getVaultId()).updateVaultConfig(); + } + + @Override + protected void onCredentialsUpdated(Credentials credentials) throws SkyflowException { + for (VaultController vault : this.vaultClientsMap.values()) { + vault.setCommonCredentials(credentials); + } + for (DetectController detect : this.detectClientsMap.values()) { + detect.setCommonCredentials(credentials); + } + for (ConnectionController connection : this.connectionsMap.values()) { + connection.setCommonCredentials(credentials); } - return this; } public SkyflowClientBuilder addConnectionConfig(ConnectionConfig connectionConfig) throws SkyflowException { @@ -273,24 +166,27 @@ public SkyflowClientBuilder removeConnectionConfig(String connectionId) throws S return this; } + @Override + public SkyflowClientBuilder addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + super.addVaultConfig(vaultConfig); + return this; + } + + @Override + public SkyflowClientBuilder updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + super.updateVaultConfig(vaultConfig); + return this; + } + + @Override + public SkyflowClientBuilder removeVaultConfig(String vaultId) throws SkyflowException { + super.removeVaultConfig(vaultId); + return this; + } + + @Override public SkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throws SkyflowException { - Validations.validateCredentials(credentials); - Credentials credentialsCopy; - try { - credentialsCopy = (Credentials) credentials.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - this.skyflowCredentials = credentialsCopy; - for (VaultController vault : this.vaultClientsMap.values()) { - vault.setCommonCredentials(this.skyflowCredentials); - } - for (DetectController detect : this.detectClientsMap.values()) { - detect.setCommonCredentials(this.skyflowCredentials); - } - for (ConnectionController connection : this.connectionsMap.values()) { - connection.setCommonCredentials(this.skyflowCredentials); - } + super.addSkyflowCredentials(credentials); return this; } @@ -304,24 +200,6 @@ public Skyflow build() { return new Skyflow(this); } - private VaultConfig findAndUpdateVaultConfig(VaultConfig vaultConfig) { - VaultConfig previousConfig = this.vaultConfigMap.get(vaultConfig.getVaultId()); - Env env = vaultConfig.getEnv() != null ? vaultConfig.getEnv() : previousConfig.getEnv(); - String clusterId = vaultConfig.getClusterId() != null ? vaultConfig.getClusterId() : previousConfig.getClusterId(); - Credentials credentials = previousConfig.getCredentials(); - if (vaultConfig.getCredentials() != null) { - try { - credentials = (Credentials) vaultConfig.getCredentials().clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } - previousConfig.setEnv(env); - previousConfig.setClusterId(clusterId); - previousConfig.setCredentials(credentials); - return previousConfig; - } - private ConnectionConfig findAndUpdateConnectionConfig(ConnectionConfig connectionConfig) { ConnectionConfig previousConfig = this.connectionConfigMap.get(connectionConfig.getConnectionId()); String connectionURL = connectionConfig.getConnectionUrl() != null ? connectionConfig.getConnectionUrl() : previousConfig.getConnectionUrl(); diff --git a/v2/src/main/java/com/skyflow/vault/data/InsertRequest.java b/v2/src/main/java/com/skyflow/vault/data/InsertRequest.java index 54093467..f2127a77 100644 --- a/v2/src/main/java/com/skyflow/vault/data/InsertRequest.java +++ b/v2/src/main/java/com/skyflow/vault/data/InsertRequest.java @@ -5,13 +5,15 @@ import java.util.ArrayList; import java.util.HashMap; -public class InsertRequest { +public class InsertRequest extends BaseInsertRequest{ private final InsertRequestBuilder builder; private InsertRequest(InsertRequestBuilder builder) { + super(builder); this.builder = builder; } + public static InsertRequestBuilder builder() { return new InsertRequestBuilder(); } @@ -48,7 +50,7 @@ public TokenMode getTokenMode() { return this.builder.tokenMode; } - public static final class InsertRequestBuilder { + public static final class InsertRequestBuilder extends BaseInsertRequestBuilder{ private String table; private ArrayList> values; private ArrayList> tokens; diff --git a/v2/src/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java b/v2/src/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java index ddbe519e..a258e01d 100644 --- a/v2/src/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java +++ b/v2/src/test/java/com/skyflow/vault/controller/ConnectionControllerTests.java @@ -2,6 +2,7 @@ import com.skyflow.Skyflow; import com.skyflow.config.ConnectionConfig; +import com.skyflow.config.Credentials; import com.skyflow.enums.LogLevel; import com.skyflow.enums.RequestMethod; import com.skyflow.errors.ErrorCode; diff --git a/v2/src/test/java/com/skyflow/vault/data/DeleteTests.java b/v2/src/test/java/com/skyflow/vault/data/DeleteTests.java index 1cef1c17..ae294f24 100644 --- a/v2/src/test/java/com/skyflow/vault/data/DeleteTests.java +++ b/v2/src/test/java/com/skyflow/vault/data/DeleteTests.java @@ -2,6 +2,7 @@ import com.skyflow.Skyflow; import com.skyflow.config.BaseVaultConfig; +import com.skyflow.config.Credentials; import com.skyflow.enums.Env; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; diff --git a/v2/src/test/java/com/skyflow/vault/data/GetTests.java b/v2/src/test/java/com/skyflow/vault/data/GetTests.java index ec0f112e..bc6f24ef 100644 --- a/v2/src/test/java/com/skyflow/vault/data/GetTests.java +++ b/v2/src/test/java/com/skyflow/vault/data/GetTests.java @@ -1,7 +1,8 @@ package com.skyflow.vault.data; import com.skyflow.Skyflow; -import com.skyflow.config.BaseVaultConfig; +import com.skyflow.config.VaultConfig; +import com.skyflow.config.Credentials; import com.skyflow.enums.Env; import com.skyflow.enums.RedactionType; import com.skyflow.errors.ErrorCode; @@ -42,7 +43,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); diff --git a/v2/src/test/java/com/skyflow/vault/data/InsertTests.java b/v2/src/test/java/com/skyflow/vault/data/InsertTests.java index 43211f4c..0ba6c7f8 100644 --- a/v2/src/test/java/com/skyflow/vault/data/InsertTests.java +++ b/v2/src/test/java/com/skyflow/vault/data/InsertTests.java @@ -1,7 +1,8 @@ package com.skyflow.vault.data; import com.skyflow.Skyflow; -import com.skyflow.config.BaseVaultConfig; +import com.skyflow.config.VaultConfig; +import com.skyflow.config.Credentials; import com.skyflow.enums.Env; import com.skyflow.enums.TokenMode; import com.skyflow.errors.ErrorCode; @@ -41,7 +42,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); diff --git a/v2/src/test/java/com/skyflow/vault/data/QueryTests.java b/v2/src/test/java/com/skyflow/vault/data/QueryTests.java index 862006f4..c8e453f5 100644 --- a/v2/src/test/java/com/skyflow/vault/data/QueryTests.java +++ b/v2/src/test/java/com/skyflow/vault/data/QueryTests.java @@ -1,7 +1,8 @@ package com.skyflow.vault.data; import com.skyflow.Skyflow; -import com.skyflow.config.BaseVaultConfig; +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; import com.skyflow.enums.Env; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; @@ -33,7 +34,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); diff --git a/v2/src/test/java/com/skyflow/vault/data/UpdateTests.java b/v2/src/test/java/com/skyflow/vault/data/UpdateTests.java index 0523d6cc..ca334976 100644 --- a/v2/src/test/java/com/skyflow/vault/data/UpdateTests.java +++ b/v2/src/test/java/com/skyflow/vault/data/UpdateTests.java @@ -1,7 +1,8 @@ package com.skyflow.vault.data; import com.skyflow.Skyflow; -import com.skyflow.config.BaseVaultConfig; +import com.skyflow.config.VaultConfig; +import com.skyflow.config.Credentials; import com.skyflow.enums.Env; import com.skyflow.enums.TokenMode; import com.skyflow.errors.ErrorCode; @@ -36,7 +37,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); diff --git a/v2/src/test/java/com/skyflow/vault/tokens/TokenizeTests.java b/v2/src/test/java/com/skyflow/vault/tokens/TokenizeTests.java index debfe10a..27563a57 100644 --- a/v2/src/test/java/com/skyflow/vault/tokens/TokenizeTests.java +++ b/v2/src/test/java/com/skyflow/vault/tokens/TokenizeTests.java @@ -1,7 +1,8 @@ package com.skyflow.vault.tokens; import com.skyflow.Skyflow; -import com.skyflow.config.BaseVaultConfig; +import com.skyflow.config.VaultConfig; +import com.skyflow.config.Credentials; import com.skyflow.enums.Env; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; @@ -20,7 +21,7 @@ public class TokenizeTests { private static final String EXCEPTION_NOT_THROWN = "Should have thrown an exception"; private static String vaultID = null; private static String clusterID = null; - private static BaseVaultConfig vaultConfig = null; + private static VaultConfig vaultConfig = null; private static String token = null; private static ArrayList tokens = null; private static Skyflow skyflowClient = null; @@ -37,7 +38,7 @@ public static void setup() { Credentials credentials = new Credentials(); credentials.setToken("valid-token"); - vaultConfig = new BaseVaultConfig(); + vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.DEV); From 77ec4af17d6d2dd9ccef2dafa442906b2dc3e9d5 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Tue, 14 Jul 2026 19:05:37 +0530 Subject: [PATCH 06/26] SK-2967 move vault url in v3 --- .../main/java/com/skyflow/BaseSkyflow.java | 89 ++++++++----------- .../java/com/skyflow/BaseVaultClient.java | 9 +- .../com/skyflow/config/BaseVaultConfig.java | 22 +++-- .../java/com/skyflow/config/VaultConfig.java | 30 ------- .../src/main/java/com/skyflow/Skyflow.java | 36 +++++++- .../main/java/com/skyflow/VaultClient.java | 2 +- .../java/com/skyflow/config/VaultConfig.java | 20 +++++ v2/src/main/java/com/skyflow/Skyflow.java | 36 +++++++- v2/src/main/java/com/skyflow/VaultClient.java | 2 +- .../java/com/skyflow/config/VaultConfig.java | 9 ++ 10 files changed, 154 insertions(+), 101 deletions(-) delete mode 100644 common/src/main/java/com/skyflow/config/VaultConfig.java create mode 100644 flowvault/src/main/java/com/skyflow/config/VaultConfig.java create mode 100644 v2/src/main/java/com/skyflow/config/VaultConfig.java diff --git a/common/src/main/java/com/skyflow/BaseSkyflow.java b/common/src/main/java/com/skyflow/BaseSkyflow.java index 2b752e14..97f19a80 100644 --- a/common/src/main/java/com/skyflow/BaseSkyflow.java +++ b/common/src/main/java/com/skyflow/BaseSkyflow.java @@ -1,7 +1,6 @@ package com.skyflow; import com.skyflow.config.Credentials; -import com.skyflow.config.VaultConfig; import com.skyflow.enums.LogLevel; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; @@ -13,59 +12,52 @@ import com.skyflow.utils.validations.BaseValidations; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; -abstract class BaseSkyflow implements ISkyflow { - protected final BaseSkyflowClientBuilder builder; - protected BaseSkyflow(BaseSkyflowClientBuilder builder) { +abstract class BaseSkyflow implements ISkyflow { + protected final BaseSkyflowClientBuilder builder; + + protected BaseSkyflow(BaseSkyflowClientBuilder builder) { this.builder = builder; LogUtil.printInfoLog(InfoLogs.CLIENT_INITIALIZED.getLog()); } protected abstract Self self(); - @Override - public Self addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + public Self addVaultConfig(V vaultConfig) throws SkyflowException { this.builder.addVaultConfigTemplate(vaultConfig); return self(); } - public VaultConfig getVaultConfig(String vaultId) { + public V getVaultConfig(String vaultId) { return this.builder.vaultConfigMap.get(vaultId); } - @Override - public Self updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + public Self updateVaultConfig(V vaultConfig) throws SkyflowException { this.builder.updateVaultConfigTemplate(vaultConfig); return self(); } - @Override public Self removeVaultConfig(String vaultId) throws SkyflowException { this.builder.removeVaultConfigTemplate(vaultId); return self(); } - @Override public Self updateSkyflowCredentials(Credentials credentials) throws SkyflowException { this.builder.addSkyflowCredentialsTemplate(credentials); return self(); } - @Override public Self setLogLevel(LogLevel logLevel) { this.builder.setLogLevel(logLevel); return self(); } - @Override public LogLevel getLogLevel() { return this.builder.logLevel; } - @Override public VC vault() throws SkyflowException { return resolveOrThrow(this.builder.vaultClientsMap, null, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); } @@ -80,8 +72,8 @@ protected static T resolveOrThrow(Map map, String key, return value; } - abstract static class BaseSkyflowClientBuilder { - protected final LinkedHashMap vaultConfigMap = new LinkedHashMap<>(); + abstract static class BaseSkyflowClientBuilder { + protected final LinkedHashMap vaultConfigMap = new LinkedHashMap<>(); protected final LinkedHashMap vaultClientsMap = new LinkedHashMap<>(); protected Credentials skyflowCredentials; protected LogLevel logLevel = LogLevel.ERROR; @@ -89,27 +81,27 @@ abstract static class BaseSkyflowClientBuilder { protected BaseSkyflowClientBuilder() { } - public BaseSkyflowClientBuilder addVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + public BaseSkyflowClientBuilder addVaultConfig(V vaultConfig) throws SkyflowException { addVaultConfigTemplate(vaultConfig); return this; } - public BaseSkyflowClientBuilder updateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { + public BaseSkyflowClientBuilder updateVaultConfig(V vaultConfig) throws SkyflowException { updateVaultConfigTemplate(vaultConfig); return this; } - public BaseSkyflowClientBuilder removeVaultConfig(String vaultId) throws SkyflowException { + public BaseSkyflowClientBuilder removeVaultConfig(String vaultId) throws SkyflowException { removeVaultConfigTemplate(vaultId); return this; } - public BaseSkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throws SkyflowException { + public BaseSkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throws SkyflowException { addSkyflowCredentialsTemplate(credentials); return this; } - protected BaseSkyflowClientBuilder setLogLevel(LogLevel logLevel) { + protected BaseSkyflowClientBuilder setLogLevel(LogLevel logLevel) { this.logLevel = logLevel == null ? LogLevel.ERROR : logLevel; LogUtil.setupLogger(this.logLevel); LogUtil.printInfoLog(BaseUtils.parameterizedString( @@ -118,50 +110,35 @@ protected BaseSkyflowClientBuilder setLogLevel(LogLevel logLevel) { return this; } - protected final void addVaultConfigTemplate(VaultConfig vaultConfig) throws SkyflowException { + protected final void addVaultConfigTemplate(V vaultConfig) throws SkyflowException { LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); validateVaultConfig(vaultConfig); - VaultConfig vaultConfigCopy; - try { - vaultConfigCopy = (VaultConfig) vaultConfig.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - if (this.vaultClientsMap.containsKey(vaultConfigCopy.getVaultId())) { + V vaultConfigCopy = cloneVaultConfig(vaultConfig); + String vaultId = extractVaultId(vaultConfigCopy); + if (this.vaultClientsMap.containsKey(vaultId)) { LogUtil.printErrorLog(BaseUtils.parameterizedString( - ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultConfigCopy.getVaultId() + ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultId )); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdAlreadyInConfigList.getMessage()); } - this.vaultConfigMap.put(vaultConfigCopy.getVaultId(), vaultConfigCopy); + this.vaultConfigMap.put(vaultId, vaultConfigCopy); onVaultConfigAdded(vaultConfigCopy); } - protected final void updateVaultConfigTemplate(VaultConfig vaultConfig) throws SkyflowException { + protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowException { LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); validateVaultConfig(vaultConfig); - if (!this.vaultClientsMap.containsKey(vaultConfig.getVaultId())) { + String vaultId = extractVaultId(vaultConfig); + if (!this.vaultClientsMap.containsKey(vaultId)) { LogUtil.printErrorLog(BaseUtils.parameterizedString( - ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultConfig.getVaultId() + ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId )); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); } - VaultConfig previousConfig = this.vaultConfigMap.get(vaultConfig.getVaultId()); - if (vaultConfig.getEnv() != null) { - previousConfig.setEnv(vaultConfig.getEnv()); - } - if (vaultConfig.getClusterId() != null) { - previousConfig.setClusterId(vaultConfig.getClusterId()); - } - if (vaultConfig.getCredentials() != null) { - try { - previousConfig.setCredentials((Credentials) vaultConfig.getCredentials().clone()); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } - onVaultConfigUpdated(previousConfig); + V previousConfig = this.vaultConfigMap.get(vaultId); + V merged = mergeVaultConfig(vaultConfig, previousConfig); + onVaultConfigUpdated(merged); } protected final void removeVaultConfigTemplate(String vaultId) throws SkyflowException { @@ -185,11 +162,17 @@ protected final void addSkyflowCredentialsTemplate(Credentials credentials) thro onCredentialsUpdated(credentialsCopy); } - protected abstract void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowException; + protected abstract void validateVaultConfig(V vaultConfig) throws SkyflowException; + + protected abstract V cloneVaultConfig(V vaultConfig); + + protected abstract String extractVaultId(V vaultConfig); + + protected abstract V mergeVaultConfig(V incoming, V existing); - protected abstract void onVaultConfigAdded(VaultConfig vaultConfig) throws SkyflowException; + protected abstract void onVaultConfigAdded(V vaultConfig) throws SkyflowException; - protected abstract void onVaultConfigUpdated(VaultConfig updatedConfig) throws SkyflowException; + protected abstract void onVaultConfigUpdated(V updatedConfig) throws SkyflowException; protected abstract void onCredentialsUpdated(Credentials credentials) throws SkyflowException; } diff --git a/common/src/main/java/com/skyflow/BaseVaultClient.java b/common/src/main/java/com/skyflow/BaseVaultClient.java index 2ce32997..7ca74cf4 100644 --- a/common/src/main/java/com/skyflow/BaseVaultClient.java +++ b/common/src/main/java/com/skyflow/BaseVaultClient.java @@ -3,7 +3,6 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.skyflow.config.BaseCredentials; -import com.skyflow.config.VaultConfig; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; @@ -25,8 +24,8 @@ import java.util.concurrent.TimeUnit; import java.util.function.Supplier; -class BaseVaultClient { - protected VaultConfig vaultConfig; +class BaseVaultClient { + protected V vaultConfig; protected OkHttpClient sharedHttpClient; protected String currentVaultURL; protected BaseCredentials commonCredentials; @@ -34,12 +33,12 @@ class BaseVaultClient { protected String token; protected String apiKey; - protected BaseVaultClient(VaultConfig vaultConfig, BaseCredentials credentials) { + protected BaseVaultClient(V vaultConfig, BaseCredentials credentials) { this.vaultConfig = vaultConfig; this.commonCredentials = credentials; } - protected VaultConfig getVaultConfig() { + protected V getVaultConfig() { return vaultConfig; } diff --git a/common/src/main/java/com/skyflow/config/BaseVaultConfig.java b/common/src/main/java/com/skyflow/config/BaseVaultConfig.java index e59aeb91..fb1a2a6b 100644 --- a/common/src/main/java/com/skyflow/config/BaseVaultConfig.java +++ b/common/src/main/java/com/skyflow/config/BaseVaultConfig.java @@ -2,17 +2,17 @@ import com.skyflow.enums.Env; -public class BaseVaultConfig { +public class BaseVaultConfig implements Cloneable { private String vaultId; private String clusterId; - private String vaultURL; private Env env; + private Credentials credentials; public BaseVaultConfig() { this.vaultId = null; this.clusterId = null; - this.vaultURL = null; this.env = Env.PROD; + this.credentials = null; } public String getVaultId() { @@ -39,13 +39,21 @@ public void setEnv(Env env) { this.env = env == null ? Env.PROD : env; } + public Credentials getCredentials() { + return credentials; + } - public String getVaultURL() { - return vaultURL; + public void setCredentials(Credentials credentials) { + this.credentials = credentials; } - public void setVaultURL(String vaultURL) { - this.vaultURL = vaultURL; + @Override + public Object clone() throws CloneNotSupportedException { + BaseVaultConfig cloned = (BaseVaultConfig) super.clone(); + if (this.credentials != null) { + cloned.credentials = (Credentials) this.credentials.clone(); + } + return cloned; } } diff --git a/common/src/main/java/com/skyflow/config/VaultConfig.java b/common/src/main/java/com/skyflow/config/VaultConfig.java deleted file mode 100644 index bcb376a2..00000000 --- a/common/src/main/java/com/skyflow/config/VaultConfig.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.skyflow.config; - -public class VaultConfig extends BaseVaultConfig implements Cloneable { - - private Credentials credentials; - - public VaultConfig() { - super(); - this.credentials = null; - } - - public Credentials getCredentials() { - return credentials; - } - - public void setCredentials(Credentials credentials) { - this.credentials = credentials; - } - - @Override - public Object clone() throws CloneNotSupportedException { - VaultConfig cloned = (VaultConfig) super.clone(); - if (this.credentials != null) { - cloned.credentials = (Credentials) this.credentials.clone(); - } - - return cloned; - } - -} diff --git a/flowvault/src/main/java/com/skyflow/Skyflow.java b/flowvault/src/main/java/com/skyflow/Skyflow.java index f534c1da..51ccccd9 100644 --- a/flowvault/src/main/java/com/skyflow/Skyflow.java +++ b/flowvault/src/main/java/com/skyflow/Skyflow.java @@ -12,7 +12,7 @@ import com.skyflow.utils.validations.Validations; import com.skyflow.vault.controller.VaultController; -public final class Skyflow extends BaseSkyflow { +public final class Skyflow extends BaseSkyflow { private Skyflow(SkyflowClientBuilder builder) { super(builder); @@ -33,13 +33,45 @@ public VaultConfig getVaultConfig() { return (VaultConfig) array[0]; } - public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { + public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { @Override protected void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { Validations.validateVaultConfiguration(vaultConfig); } + @Override + protected VaultConfig cloneVaultConfig(VaultConfig vaultConfig) { + try { + return (VaultConfig) vaultConfig.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } + + @Override + protected String extractVaultId(VaultConfig vaultConfig) { + return vaultConfig.getVaultId(); + } + + @Override + protected VaultConfig mergeVaultConfig(VaultConfig incoming, VaultConfig existing) { + if (incoming.getEnv() != null) { + existing.setEnv(incoming.getEnv()); + } + if (incoming.getClusterId() != null) { + existing.setClusterId(incoming.getClusterId()); + } + if (incoming.getCredentials() != null) { + try { + existing.setCredentials((Credentials) incoming.getCredentials().clone()); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } + return existing; + } + @Override protected void onVaultConfigAdded(VaultConfig vaultConfig) throws SkyflowException { this.vaultClientsMap.put(vaultConfig.getVaultId(), new VaultController(vaultConfig, this.skyflowCredentials)); diff --git a/flowvault/src/main/java/com/skyflow/VaultClient.java b/flowvault/src/main/java/com/skyflow/VaultClient.java index e7d395a7..c8843f3e 100644 --- a/flowvault/src/main/java/com/skyflow/VaultClient.java +++ b/flowvault/src/main/java/com/skyflow/VaultClient.java @@ -8,7 +8,7 @@ import com.skyflow.generated.rest.resources.flowservice.FlowserviceClient; import com.skyflow.utils.Utils; -public class VaultClient extends BaseVaultClient { +public class VaultClient extends BaseVaultClient { private final ApiClientBuilder apiClientBuilder; private ApiClient apiClient; diff --git a/flowvault/src/main/java/com/skyflow/config/VaultConfig.java b/flowvault/src/main/java/com/skyflow/config/VaultConfig.java new file mode 100644 index 00000000..8966d29f --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/config/VaultConfig.java @@ -0,0 +1,20 @@ +package com.skyflow.config; + +public class VaultConfig extends BaseVaultConfig { + + private String vaultURL; + + public VaultConfig() { + super(); + this.vaultURL = null; + } + + public String getVaultURL() { + return vaultURL; + } + + public void setVaultURL(String vaultURL) { + this.vaultURL = vaultURL; + } + +} diff --git a/v2/src/main/java/com/skyflow/Skyflow.java b/v2/src/main/java/com/skyflow/Skyflow.java index 5e763fb9..396291bd 100644 --- a/v2/src/main/java/com/skyflow/Skyflow.java +++ b/v2/src/main/java/com/skyflow/Skyflow.java @@ -18,7 +18,7 @@ import java.util.LinkedHashMap; -public final class Skyflow extends BaseSkyflow { +public final class Skyflow extends BaseSkyflow { private final SkyflowClientBuilder builder; private Skyflow(SkyflowClientBuilder builder) { @@ -81,7 +81,7 @@ public DetectController detect(String vaultId) throws SkyflowException { return resolveOrThrow(this.builder.detectClientsMap, vaultId, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); } - public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { + public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { private final LinkedHashMap connectionsMap = new LinkedHashMap<>(); private final LinkedHashMap detectClientsMap = new LinkedHashMap<>(); private final LinkedHashMap connectionConfigMap = new LinkedHashMap<>(); @@ -91,6 +91,38 @@ protected void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowExcept Validations.validateVaultConfig(vaultConfig); } + @Override + protected VaultConfig cloneVaultConfig(VaultConfig vaultConfig) { + try { + return (VaultConfig) vaultConfig.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } + + @Override + protected String extractVaultId(VaultConfig vaultConfig) { + return vaultConfig.getVaultId(); + } + + @Override + protected VaultConfig mergeVaultConfig(VaultConfig incoming, VaultConfig existing) { + if (incoming.getEnv() != null) { + existing.setEnv(incoming.getEnv()); + } + if (incoming.getClusterId() != null) { + existing.setClusterId(incoming.getClusterId()); + } + if (incoming.getCredentials() != null) { + try { + existing.setCredentials((Credentials) incoming.getCredentials().clone()); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } + return existing; + } + @Override protected void onVaultConfigAdded(VaultConfig vaultConfig) throws SkyflowException { this.vaultClientsMap.put(vaultConfig.getVaultId(), new VaultController(vaultConfig, this.skyflowCredentials)); diff --git a/v2/src/main/java/com/skyflow/VaultClient.java b/v2/src/main/java/com/skyflow/VaultClient.java index ef6381b5..a24ef8d2 100644 --- a/v2/src/main/java/com/skyflow/VaultClient.java +++ b/v2/src/main/java/com/skyflow/VaultClient.java @@ -44,7 +44,7 @@ import java.util.stream.Collectors; -public class VaultClient extends BaseVaultClient { +public class VaultClient extends BaseVaultClient { private final ApiClientBuilder apiClientBuilder; private ApiClient apiClient; diff --git a/v2/src/main/java/com/skyflow/config/VaultConfig.java b/v2/src/main/java/com/skyflow/config/VaultConfig.java new file mode 100644 index 00000000..2abd6a27 --- /dev/null +++ b/v2/src/main/java/com/skyflow/config/VaultConfig.java @@ -0,0 +1,9 @@ +package com.skyflow.config; + +public class VaultConfig extends BaseVaultConfig { + + public VaultConfig() { + super(); + } + +} From 0e9a9c79c728c84a9ab464d9bd166b0957d685b9 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Thu, 16 Jul 2026 16:04:53 +0530 Subject: [PATCH 07/26] SK-2967 update generated code --- .../workflows/flowvault-internal-release.yml | 27 ++ .github/workflows/shared-build-and-deploy.yml | 24 +- .../main/java/com/skyflow/BaseSkyflow.java | 35 +- .../vault/data/BaseDetokenizeData.java | 14 + .../data/BaseDetokenizeRecordResponse.java | 19 + .../vault/data/BaseDetokenizeResponse.java | 1 + .../vault/data/BaseInsertResponse.java | 27 ++ .../java/com/skyflow/BaseSkyflowTests.java | 340 ++++++++++++++++++ .../com/skyflow/BaseVaultClientTests.java | 165 +++++++++ .../skyflow/config/BaseVaultConfigTests.java | 75 ++++ .../com/skyflow/config/CredentialsTests.java | 46 ++- .../skyflow/errors/SkyflowExceptionTest.java | 0 .../serviceaccount/util/BearerTokenTests.java | 12 +- .../util/SignedDataTokensTests.java | 12 +- .../serviceaccount/util/TokenTests.java | 4 +- .../com/skyflow/utils/BaseUtilsTests.java | 138 +++++++ .../utils/logger/LogUtilLevelTests.java | 0 .../invalidPrivateKeyCredentials.json | 0 .../resources/invalidTokenURICredentials.json | 0 .../test/resources/noClientIDCredentials.json | 0 .../test/resources/noKeyIDCredentials.json | 0 .../resources/noPrivateKeyCredentials.json | 0 .../test/resources/noTokenURICredentials.json | 0 common/src/test/resources/notJson.txt | 1 + .../src/main/java/com/skyflow/Skyflow.java | 33 -- .../java/com/skyflow/enums/InterfaceName.java | 19 + .../main/java/com/skyflow/utils/Utils.java | 130 ++++++- .../utils/validations/Validations.java | 163 +++++++++ .../vault/controller/VaultController.java | 61 +++- .../skyflow/vault/data/DetokenizeData.java | 8 + .../vault/data/DetokenizeRecordResponse.java | 37 ++ .../skyflow/vault/data/DetokenizeRequest.java | 37 ++ .../vault/data/DetokenizeResponse.java | 29 +- .../com/skyflow/vault/data/InsertRequest.java | 1 - .../skyflow/vault/data/InsertResponse.java | 6 + .../vault/data/TokenGroupRedactions.java | 39 ++ .../skyflow/vault/data/TokenizeRequest.java | 4 + .../skyflow/vault/data/TokenizeResponse.java | 4 + pom.xml | 17 +- v2/src/main/java/com/skyflow/Skyflow.java | 32 -- .../com/skyflow/generated/rest/ApiClient.java | 10 - .../generated/rest/AsyncApiClient.java | 10 - .../generated/rest/core/ClientOptions.java | 2 +- .../generated/rest/core/FileStream.java | 6 +- .../rest/core/InputStreamRequestBody.java | 7 +- .../generated/rest/core/ObjectMappers.java | 2 - .../rest/core/QueryStringMapper.java | 7 +- .../rest/core/ResponseBodyInputStream.java | 3 +- .../rest/core/ResponseBodyReader.java | 3 +- .../generated/rest/core/RetryInterceptor.java | 5 +- .../rest/errors/BadRequestError.java | 9 +- .../rest/errors/UnauthorizedError.java | 9 +- .../resources/audit/AsyncRawAuditClient.java | 20 +- .../rest/resources/audit/RawAuditClient.java | 16 +- .../AuditServiceListAuditEventsRequest.java | 18 +- .../binlookup/AsyncRawBinLookupClient.java | 21 +- .../binlookup/RawBinLookupClient.java | 17 +- .../binlookup/requests/V1BinListRequest.java | 15 +- .../resources/files/AsyncFilesClient.java | 13 +- .../resources/files/AsyncRawFilesClient.java | 78 ++-- .../rest/resources/files/FilesClient.java | 12 +- .../rest/resources/files/RawFilesClient.java | 74 ++-- ...entifyFileAudioRequestDeidentifyAudio.java | 15 +- ...fyFileDocumentPdfRequestDeidentifyPdf.java | 15 +- ...entifyFileImageRequestDeidentifyImage.java | 15 +- .../files/requests/DeidentifyFileRequest.java | 15 +- ...identifyFileRequestDeidentifyDocument.java | 15 +- ...tifyFileRequestDeidentifyPresentation.java | 15 +- ...ntifyFileRequestDeidentifySpreadsheet.java | 15 +- ...fyFileRequestDeidentifyStructuredText.java | 15 +- .../DeidentifyFileRequestDeidentifyText.java | 15 +- .../files/requests/GetRunRequest.java | 9 +- .../ReidentifyFileRequestReidentifyFile.java | 11 +- .../guardrails/AsyncRawGuardrailsClient.java | 25 +- .../guardrails/RawGuardrailsClient.java | 21 +- .../requests/DetectGuardrailsRequest.java | 15 +- .../resources/query/AsyncRawQueryClient.java | 21 +- .../rest/resources/query/RawQueryClient.java | 17 +- .../QueryServiceExecuteQueryBody.java | 9 +- .../records/AsyncRawRecordsClient.java | 49 ++- .../resources/records/AsyncRecordsClient.java | 21 +- .../resources/records/RawRecordsClient.java | 45 ++- .../rest/resources/records/RecordsClient.java | 22 +- .../FileServiceUploadFileRequest.java | 9 +- .../RecordServiceBatchOperationBody.java | 15 +- .../RecordServiceBulkDeleteRecordBody.java | 15 +- .../RecordServiceBulkGetRecordRequest.java | 16 +- .../RecordServiceGetRecordRequest.java | 16 +- .../RecordServiceInsertRecordBody.java | 15 +- .../RecordServiceUpdateRecordBody.java | 9 +- .../records/requests/UploadFileV2Request.java | 11 +- .../strings/AsyncRawStringsClient.java | 29 +- .../resources/strings/RawStringsClient.java | 25 +- .../requests/DeidentifyStringRequest.java | 15 +- .../requests/ReidentifyStringRequest.java | 9 +- .../tokens/AsyncRawTokensClient.java | 21 +- .../resources/tokens/AsyncTokensClient.java | 1 - .../resources/tokens/RawTokensClient.java | 17 +- .../tokens/requests/V1DetokenizePayload.java | 15 +- .../tokens/requests/V1TokenizePayload.java | 15 +- .../rest/types/AuditEventContext.java | 9 +- .../generated/rest/types/AuditEventData.java | 9 +- .../rest/types/AuditEventHttpInfo.java | 9 +- .../rest/types/DeidentifiedFileOutput.java | 9 +- .../rest/types/DeidentifyFileResponse.java | 9 +- .../rest/types/DeidentifyStringResponse.java | 15 +- .../rest/types/DetectGuardrailsResponse.java | 11 +- .../rest/types/DetectRunsResponse.java | 15 +- .../generated/rest/types/ErrorResponse.java | 10 +- .../rest/types/ErrorResponseError.java | 15 +- .../generated/rest/types/FileData.java | 10 +- .../rest/types/FileDataDeidentifyAudio.java | 10 +- .../types/FileDataDeidentifyDocument.java | 10 +- .../rest/types/FileDataDeidentifyImage.java | 10 +- .../rest/types/FileDataDeidentifyPdf.java | 10 +- .../types/FileDataDeidentifyPresentation.java | 10 +- .../types/FileDataDeidentifySpreadsheet.java | 10 +- .../FileDataDeidentifyStructuredText.java | 10 +- .../rest/types/FileDataDeidentifyText.java | 10 +- .../rest/types/FileDataReidentifyFile.java | 10 +- .../skyflow/generated/rest/types/Format.java | 15 +- .../generated/rest/types/GooglerpcStatus.java | 15 +- .../rest/types/IdentifyResponse.java | 10 +- .../generated/rest/types/Locations.java | 9 +- .../generated/rest/types/ProtobufAny.java | 9 +- .../rest/types/ReidentifiedFileOutput.java | 9 +- .../rest/types/ReidentifyFileResponse.java | 9 +- .../generated/rest/types/ShiftDates.java | 15 +- .../rest/types/StringResponseEntities.java | 9 +- .../rest/types/TokenTypeMapping.java | 15 +- .../generated/rest/types/Transformations.java | 9 +- .../rest/types/UploadFileV2Response.java | 9 +- .../rest/types/V1AuditAfterOptions.java | 9 +- .../rest/types/V1AuditEventResponse.java | 9 +- .../generated/rest/types/V1AuditResponse.java | 15 +- .../rest/types/V1AuditResponseEvent.java | 15 +- .../types/V1AuditResponseEventRequest.java | 15 +- .../rest/types/V1BatchOperationResponse.java | 15 +- .../generated/rest/types/V1BatchRecord.java | 9 +- .../rest/types/V1BinListResponse.java | 15 +- .../types/V1BulkDeleteRecordResponse.java | 15 +- .../rest/types/V1BulkGetRecordResponse.java | 15 +- .../skyflow/generated/rest/types/V1Card.java | 9 +- .../rest/types/V1DeleteFileResponse.java | 9 +- .../rest/types/V1DeleteRecordResponse.java | 9 +- .../rest/types/V1DetokenizeRecordRequest.java | 9 +- .../types/V1DetokenizeRecordResponse.java | 9 +- .../rest/types/V1DetokenizeResponse.java | 15 +- .../generated/rest/types/V1FieldRecords.java | 9 +- .../rest/types/V1GetAuthTokenResponse.java | 125 ------- .../types/V1GetFileScanStatusResponse.java | 9 +- .../rest/types/V1GetQueryResponse.java | 15 +- .../rest/types/V1InsertRecordResponse.java | 15 +- .../rest/types/V1RecordMetaProperties.java | 9 +- .../rest/types/V1TokenizeRecordRequest.java | 9 +- .../rest/types/V1TokenizeRecordResponse.java | 9 +- .../rest/types/V1TokenizeResponse.java | 15 +- .../rest/types/V1UpdateRecordResponse.java | 9 +- .../rest/types/V1VaultFieldMapping.java | 9 +- .../rest/types/V1VaultSchemaConfig.java | 9 +- .../rest/types/WordCharacterCount.java | 9 +- .../main/java/com/skyflow/logs/ErrorLogs.java | 148 -------- .../main/java/com/skyflow/logs/InfoLogs.java | 120 ------- .../skyflow/vault/data/InsertResponse.java | 22 +- .../skyflow/vault/tokens/DetokenizeData.java | 12 +- .../tokens/DetokenizeRecordResponse.java | 23 +- .../test/java/com/skyflow/SkyflowTests.java | 310 ---------------- .../com/skyflow/VaultClientDotenvTests.java | 104 ------ .../java/com/skyflow/VaultClientTests.java | 122 +------ .../com/skyflow/config/VaultConfigTests.java | 16 +- .../java/com/skyflow/utils/UtilsTests.java | 125 ------- 171 files changed, 2728 insertions(+), 1631 deletions(-) create mode 100644 .github/workflows/flowvault-internal-release.yml create mode 100644 common/src/main/java/com/skyflow/vault/data/BaseDetokenizeData.java create mode 100644 common/src/main/java/com/skyflow/vault/data/BaseDetokenizeRecordResponse.java create mode 100644 common/src/test/java/com/skyflow/BaseSkyflowTests.java create mode 100644 common/src/test/java/com/skyflow/BaseVaultClientTests.java create mode 100644 common/src/test/java/com/skyflow/config/BaseVaultConfigTests.java rename {v2 => common}/src/test/java/com/skyflow/config/CredentialsTests.java (89%) rename {v2 => common}/src/test/java/com/skyflow/errors/SkyflowExceptionTest.java (100%) rename {v2 => common}/src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java (95%) rename {v2 => common}/src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java (94%) rename {v2 => common}/src/test/java/com/skyflow/serviceaccount/util/TokenTests.java (94%) create mode 100644 common/src/test/java/com/skyflow/utils/BaseUtilsTests.java rename {v2 => common}/src/test/java/com/skyflow/utils/logger/LogUtilLevelTests.java (100%) rename {v2 => common}/src/test/resources/invalidPrivateKeyCredentials.json (100%) rename {v2 => common}/src/test/resources/invalidTokenURICredentials.json (100%) rename {v2 => common}/src/test/resources/noClientIDCredentials.json (100%) rename {v2 => common}/src/test/resources/noKeyIDCredentials.json (100%) rename {v2 => common}/src/test/resources/noPrivateKeyCredentials.json (100%) rename {v2 => common}/src/test/resources/noTokenURICredentials.json (100%) create mode 100644 common/src/test/resources/notJson.txt create mode 100644 flowvault/src/main/java/com/skyflow/enums/InterfaceName.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DetokenizeData.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRecordResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/TokenGroupRedactions.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/TokenizeRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/TokenizeResponse.java delete mode 100644 v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java delete mode 100644 v2/src/main/java/com/skyflow/logs/ErrorLogs.java delete mode 100644 v2/src/main/java/com/skyflow/logs/InfoLogs.java delete mode 100644 v2/src/test/java/com/skyflow/VaultClientDotenvTests.java diff --git a/.github/workflows/flowvault-internal-release.yml b/.github/workflows/flowvault-internal-release.yml new file mode 100644 index 00000000..b1e65c12 --- /dev/null +++ b/.github/workflows/flowvault-internal-release.yml @@ -0,0 +1,27 @@ +name: Publish v3 module to the JFROG Artifactory +on: + push: + tags-ignore: + - '*.*' + paths-ignore: + - "*.md" + branches: + - v3-release/* + +jobs: + build-and-deploy-v3: + uses: ./.github/workflows/shared-build-and-deploy.yml + with: + ref: ${{ github.ref_name }} + server-id: central + profile: jfrog + tag: 'internal' + module: 'flowvault' + secrets: + server-username: ${{ secrets.ARTIFACTORY_USERNAME }} + server-password: ${{ secrets.ARTIFACTORY_PASSWORD }} + gpg-key: ${{ secrets.JFROG_GPG_KEY }} + gpg-passphrase: ${{ secrets.JFROG_GPG_PASSPHRASE }} + skyflow-credentials: ${{ secrets.SKYFLOW_CREDENTIALS }} + test-expired-token: ${{ secrets.TEST_EXPIRED_TOKEN }} + test-reusable-token: ${{ secrets.TEST_REUSABLE_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/shared-build-and-deploy.yml b/.github/workflows/shared-build-and-deploy.yml index 13fd1b5b..9d885190 100644 --- a/.github/workflows/shared-build-and-deploy.yml +++ b/.github/workflows/shared-build-and-deploy.yml @@ -21,6 +21,13 @@ on: description: 'Release Tag' required: true type: string + + module: + description: 'Module to build and publish' + required: false + type: string + default: '' + secrets: server-username: required: true @@ -57,10 +64,10 @@ jobs: java-version: "11" distribution: "adopt" server-id: ${{ inputs.server-id }} - server-username: SERVER_USERNAME - server-password: SERVER_PASSWORD + server-username: ${{ secrets.server-username }} + server-password: ${{ secrets.server-password }} gpg-private-key: ${{ secrets.gpg-key }} # Value of the GPG private key to import - gpg-passphrase: GPG_PASSPHRASE # env variable for GPG private key passphrase + gpg-passphrase: ${{ secrets.gpg-passphrase }} # env variable for GPG private key passphrase - name: Resolve Branch for the Tagged Commit id: resolve-branch @@ -87,7 +94,7 @@ jobs: if ${{ inputs.tag == 'internal' }}; then ./scripts/bump_version.sh "${{ steps.previoustag.outputs.tag }}" "$(git rev-parse --short "$GITHUB_SHA")" else - ./scripts/bump_version.sh "${{ steps.previoustag.outputs.tag }}" + ./scripts/bump_version.sh "${{ steps.previoustag.outputs.tag }}" "" "${{ inputs.module }}" fi - name: Commit changes @@ -99,7 +106,7 @@ jobs: git checkout ${{ env.branch_name }} fi - git add pom.xml + git add flowvault/pom.xml if [[ "${{ inputs.tag }}" == "internal" ]]; then git commit -m "[AUTOMATED] Private Release ${{ steps.previoustag.outputs.tag }}-dev-$(git rev-parse --short $GITHUB_SHA)" git push origin ${{ github.ref_name }} -f @@ -125,7 +132,12 @@ jobs: json: ${{ secrets.TEST_CREDENTIALS_FILE_STRING }} - name: Publish package - run: mvn --batch-mode deploy -P ${{ inputs.profile }} + run: | + if [[ "${{ inputs.tag }}" == "internal" ]]; then + mvn --batch-mode -pl ${{ inputs.module }} -am deploy -P jfrog -DskipTests + elif [[ "${{ inputs.tag }}" == "beta" || "${{ inputs.tag }}" == "public" ]]; then + mvn --batch-mode -pl ${{ inputs.module }} -am deploy -P ${{ inputs.profile }} -DskipTests + fi env: SERVER_USERNAME: ${{ secrets.server-username }} diff --git a/common/src/main/java/com/skyflow/BaseSkyflow.java b/common/src/main/java/com/skyflow/BaseSkyflow.java index 97f19a80..2daff37b 100644 --- a/common/src/main/java/com/skyflow/BaseSkyflow.java +++ b/common/src/main/java/com/skyflow/BaseSkyflow.java @@ -1,5 +1,6 @@ package com.skyflow; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.config.Credentials; import com.skyflow.enums.LogLevel; import com.skyflow.errors.ErrorCode; @@ -15,7 +16,7 @@ import java.util.Map; -abstract class BaseSkyflow implements ISkyflow { +abstract class BaseSkyflow implements ISkyflow { protected final BaseSkyflowClientBuilder builder; protected BaseSkyflow(BaseSkyflowClientBuilder builder) { @@ -72,7 +73,7 @@ protected static T resolveOrThrow(Map map, String key, return value; } - abstract static class BaseSkyflowClientBuilder { + abstract static class BaseSkyflowClientBuilder { protected final LinkedHashMap vaultConfigMap = new LinkedHashMap<>(); protected final LinkedHashMap vaultClientsMap = new LinkedHashMap<>(); protected Credentials skyflowCredentials; @@ -164,11 +165,35 @@ protected final void addSkyflowCredentialsTemplate(Credentials credentials) thro protected abstract void validateVaultConfig(V vaultConfig) throws SkyflowException; - protected abstract V cloneVaultConfig(V vaultConfig); + @SuppressWarnings("unchecked") + protected final V cloneVaultConfig(V vaultConfig) { + try { + return (V) vaultConfig.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } - protected abstract String extractVaultId(V vaultConfig); + protected final String extractVaultId(V vaultConfig) { + return vaultConfig.getVaultId(); + } - protected abstract V mergeVaultConfig(V incoming, V existing); + protected final V mergeVaultConfig(V incoming, V existing) { + if (incoming.getEnv() != null) { + existing.setEnv(incoming.getEnv()); + } + if (incoming.getClusterId() != null) { + existing.setClusterId(incoming.getClusterId()); + } + if (incoming.getCredentials() != null) { + try { + existing.setCredentials((Credentials) incoming.getCredentials().clone()); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } + return existing; + } protected abstract void onVaultConfigAdded(V vaultConfig) throws SkyflowException; diff --git a/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeData.java b/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeData.java new file mode 100644 index 00000000..0da23763 --- /dev/null +++ b/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeData.java @@ -0,0 +1,14 @@ +package com.skyflow.vault.data; + +public class BaseDetokenizeData { + private final String token; + + public BaseDetokenizeData(String token) { + this.token = token; + } + + public String getToken() { + return this.token; + } + +} diff --git a/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeRecordResponse.java b/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeRecordResponse.java new file mode 100644 index 00000000..7a1ec217 --- /dev/null +++ b/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeRecordResponse.java @@ -0,0 +1,19 @@ +package com.skyflow.vault.data; + +public class BaseDetokenizeRecordResponse { + private final String token; + private final String error; + + public BaseDetokenizeRecordResponse(String token, String error){ + this.token = token; + this.error = error; + } + public String getToken() { + return token; + } + + public String getError() { + return error; + } + +} diff --git a/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeResponse.java b/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeResponse.java index ad158145..a5061b25 100644 --- a/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeResponse.java +++ b/common/src/main/java/com/skyflow/vault/data/BaseDetokenizeResponse.java @@ -1,4 +1,5 @@ package com.skyflow.vault.data; public class BaseDetokenizeResponse { + } diff --git a/common/src/main/java/com/skyflow/vault/data/BaseInsertResponse.java b/common/src/main/java/com/skyflow/vault/data/BaseInsertResponse.java index 7b5efb9b..84196bf7 100644 --- a/common/src/main/java/com/skyflow/vault/data/BaseInsertResponse.java +++ b/common/src/main/java/com/skyflow/vault/data/BaseInsertResponse.java @@ -1,4 +1,31 @@ package com.skyflow.vault.data; +import com.google.gson.Gson; + +import java.util.ArrayList; +import java.util.HashMap; + public class BaseInsertResponse { + private final ArrayList> insertedFields; + private final ArrayList> errors; + + public BaseInsertResponse(ArrayList> insertedFields, ArrayList> errors) { + this.insertedFields = insertedFields; + this.errors = errors; + } + + public ArrayList> getInsertedFields() { + return insertedFields; + } + + public ArrayList> getErrors() { + return errors; + } + + @Override + public String toString() { + Gson gson = new Gson().newBuilder().serializeNulls().create(); + return gson.toJson(this); + } } + diff --git a/common/src/test/java/com/skyflow/BaseSkyflowTests.java b/common/src/test/java/com/skyflow/BaseSkyflowTests.java new file mode 100644 index 00000000..57c72a83 --- /dev/null +++ b/common/src/test/java/com/skyflow/BaseSkyflowTests.java @@ -0,0 +1,340 @@ +package com.skyflow; + +import com.skyflow.config.BaseVaultConfig; +import com.skyflow.config.Credentials; +import com.skyflow.enums.Env; +import com.skyflow.enums.LogLevel; +import com.skyflow.errors.ErrorCode; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import com.skyflow.logs.ErrorLogs; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +public class BaseSkyflowTests { + private static final String INVALID_EXCEPTION_THROWN = "Should not have thrown any exception"; + private static final String EXCEPTION_NOT_THROWN = "Should have thrown an exception"; + private static String vaultID = null; + private static String clusterID = null; + private static String newClusterID = null; + private static String token = null; + + @BeforeClass + public static void setup() { + vaultID = "test_vault_id"; + clusterID = "test_cluster_id"; + newClusterID = "new_test_cluster_id"; + token = "test_token"; + } + + private static BaseVaultConfig newConfig(String vaultId, String clusterId, Env env) { + BaseVaultConfig config = new BaseVaultConfig(); + config.setVaultId(vaultId); + config.setClusterId(clusterId); + config.setEnv(env); + return config; + } + + @Test + public void testAddingExistingVaultConfigThrows() { + try { + BaseVaultConfig config = newConfig(vaultID, clusterID, Env.SANDBOX); + TestSkyflow client = TestSkyflow.builder().build(); + client.addVaultConfig(config).addVaultConfig(config); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.VaultIdAlreadyInConfigList.getMessage(), e.getMessage()); + } + } + + @Test + public void testUpdatingNonExistentVaultConfigInBuilderThrows() { + try { + BaseVaultConfig config = newConfig(vaultID, clusterID, Env.SANDBOX); + TestSkyflow.builder().updateVaultConfig(config).build(); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); + } + } + + @Test + public void testUpdatingNonExistentVaultConfigInClientThrows() { + try { + BaseVaultConfig config = newConfig(vaultID, clusterID, Env.SANDBOX); + TestSkyflow client = TestSkyflow.builder().build(); + client.updateVaultConfig(config); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); + } + } + + @Test + public void testRemovingNonExistentVaultConfigInBuilderThrows() { + try { + TestSkyflow.builder().removeVaultConfig(vaultID).build(); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); + } + } + + @Test + public void testRemovingExistingVaultConfigSucceeds() { + try { + BaseVaultConfig config = newConfig(vaultID, clusterID, Env.SANDBOX); + TestSkyflow client = TestSkyflow.builder().addVaultConfig(config).build(); + client.removeVaultConfig(vaultID); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testRemovingVaultConfigWithoutAddingThrows() { + try { + TestSkyflow client = TestSkyflow.builder().build(); + client.removeVaultConfig(vaultID); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); + } + } + + @Test + public void testGettingNonExistentVaultConfigReturnsNull() { + TestSkyflow client = TestSkyflow.builder().build(); + Assert.assertNull(client.getVaultConfig(vaultID)); + } + + @Test + public void testVaultThrowsWhenNoConfigAdded() { + try { + TestSkyflow client = TestSkyflow.builder().build(); + client.vault(); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); + } + } + + @Test + public void testVaultByIdThrowsAfterRemoval() { + try { + BaseVaultConfig primary = newConfig(vaultID, clusterID, Env.SANDBOX); + BaseVaultConfig secondary = newConfig(vaultID + "123", clusterID, Env.SANDBOX); + TestSkyflow client = TestSkyflow.builder().addVaultConfig(primary).addVaultConfig(secondary).build(); + client.removeVaultConfig(vaultID); + client.vault(vaultID); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); + } + } + + @Test + public void testDefaultLogLevel() { + TestSkyflow client = TestSkyflow.builder().setLogLevel(null).build(); + Assert.assertEquals(LogLevel.ERROR, client.getLogLevel()); + } + + @Test + public void testSetLogLevel() { + TestSkyflow client = TestSkyflow.builder().setLogLevel(LogLevel.INFO).build(); + Assert.assertEquals(LogLevel.INFO, client.getLogLevel()); + client.setLogLevel(LogLevel.WARN); + Assert.assertEquals(LogLevel.WARN, client.getLogLevel()); + } + + @Test + public void testAddingInvalidSkyflowCredentialsThrows() { + try { + Credentials credentials = new Credentials(); + TestSkyflow.builder().addSkyflowCredentials(credentials).build(); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.NoTokenGenerationMeansPassed.getMessage(), e.getMessage()); + } + } + + @Test + public void testUpdatingValidSkyflowCredentialsSucceeds() { + try { + BaseVaultConfig config = newConfig(vaultID, clusterID, Env.SANDBOX); + Credentials credentials = new Credentials(); + credentials.setToken(token); + TestSkyflow client = TestSkyflow.builder().addVaultConfig(config).build(); + client.updateSkyflowCredentials(credentials); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testUpdateVaultConfigNullCredentialsFallsBackToPrevious() { + try { + Credentials creds = new Credentials(); + creds.setToken(token); + BaseVaultConfig config = newConfig(vaultID, clusterID, Env.SANDBOX); + config.setCredentials(creds); + TestSkyflow client = TestSkyflow.builder().addVaultConfig(config).build(); + + BaseVaultConfig partialUpdate = newConfig(vaultID, clusterID, Env.SANDBOX); + client.updateVaultConfig(partialUpdate); + Assert.assertNotNull(client.getVaultConfig(vaultID).getCredentials()); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testUpdateVaultConfigWithNewClusterIdAndCredentialsUpdatesAllFields() { + try { + Credentials creds = new Credentials(); + creds.setToken(token); + BaseVaultConfig config = newConfig(vaultID, clusterID, Env.DEV); + config.setCredentials(creds); + TestSkyflow client = TestSkyflow.builder().addVaultConfig(config).build(); + + Credentials newCreds = new Credentials(); + newCreds.setToken("updated-token-value"); + BaseVaultConfig update = newConfig(vaultID, newClusterID, Env.PROD); + update.setCredentials(newCreds); + client.updateVaultConfig(update); + + Assert.assertEquals(newClusterID, client.getVaultConfig(vaultID).getClusterId()); + Assert.assertEquals(Env.PROD, client.getVaultConfig(vaultID).getEnv()); + Assert.assertEquals("updated-token-value", client.getVaultConfig(vaultID).getCredentials().getToken()); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testUpdateVaultConfigWithNullEnvFallsBackToPreviousEnv() { + // BaseVaultConfig's setEnv/constructor never store null (default to PROD), so getEnv() + // never returns null via the normal API. Override it to exercise the fallback branch + // in mergeVaultConfig. + try { + Credentials creds = new Credentials(); + creds.setToken(token); + BaseVaultConfig initial = newConfig(vaultID, clusterID, Env.SANDBOX); + initial.setCredentials(creds); + TestSkyflow client = TestSkyflow.builder().addVaultConfig(initial).build(); + + BaseVaultConfig updateWithNullEnv = new BaseVaultConfig() { + @Override + public Env getEnv() { + return null; + } + }; + updateWithNullEnv.setVaultId(vaultID); + updateWithNullEnv.setClusterId(clusterID); + updateWithNullEnv.setCredentials(creds); + + client.updateVaultConfig(updateWithNullEnv); + Assert.assertEquals(Env.SANDBOX, client.getVaultConfig(vaultID).getEnv()); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testMergeVaultConfigWithNullClusterIdFallsBackToPreviousClusterId() { + BaseVaultConfig existing = newConfig(vaultID, clusterID, Env.DEV); + BaseVaultConfig incoming = new BaseVaultConfig(); + incoming.setVaultId(vaultID); + // clusterId intentionally left null + + BaseVaultConfig result = TestSkyflow.builder().mergeVaultConfig(incoming, existing); + Assert.assertEquals(clusterID, result.getClusterId()); + } + + private static class TestSkyflow extends BaseSkyflow { + private TestSkyflow(TestSkyflowClientBuilder builder) { + super(builder); + } + + static TestSkyflowClientBuilder builder() { + return new TestSkyflowClientBuilder(); + } + + @Override + protected TestSkyflow self() { + return this; + } + + Object vault(String vaultId) throws SkyflowException { + return resolveOrThrow(this.builder.vaultClientsMap, vaultId, + ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); + } + + private static class TestSkyflowClientBuilder extends BaseSkyflowClientBuilder { + @Override + protected void validateVaultConfig(BaseVaultConfig vaultConfig) throws SkyflowException { + if (vaultConfig.getVaultId() == null || vaultConfig.getVaultId().trim().isEmpty()) { + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyVaultId.getMessage()); + } + } + + @Override + protected void onVaultConfigAdded(BaseVaultConfig vaultConfig) { + this.vaultClientsMap.put(vaultConfig.getVaultId(), new Object()); + } + + @Override + protected void onVaultConfigUpdated(BaseVaultConfig updatedConfig) { + this.vaultClientsMap.put(updatedConfig.getVaultId(), new Object()); + } + + @Override + protected void onCredentialsUpdated(Credentials credentials) { + // no-op: this test double only exercises template orchestration, not propagation + } + + @Override + public TestSkyflowClientBuilder addVaultConfig(BaseVaultConfig vaultConfig) throws SkyflowException { + super.addVaultConfig(vaultConfig); + return this; + } + + @Override + public TestSkyflowClientBuilder updateVaultConfig(BaseVaultConfig vaultConfig) throws SkyflowException { + super.updateVaultConfig(vaultConfig); + return this; + } + + @Override + public TestSkyflowClientBuilder removeVaultConfig(String vaultId) throws SkyflowException { + super.removeVaultConfig(vaultId); + return this; + } + + @Override + public TestSkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throws SkyflowException { + super.addSkyflowCredentials(credentials); + return this; + } + + @Override + public TestSkyflowClientBuilder setLogLevel(LogLevel logLevel) { + super.setLogLevel(logLevel); + return this; + } + + TestSkyflow build() { + return new TestSkyflow(this); + } + } + } +} diff --git a/common/src/test/java/com/skyflow/BaseVaultClientTests.java b/common/src/test/java/com/skyflow/BaseVaultClientTests.java new file mode 100644 index 00000000..e5a12687 --- /dev/null +++ b/common/src/test/java/com/skyflow/BaseVaultClientTests.java @@ -0,0 +1,165 @@ +package com.skyflow; + +import com.skyflow.config.BaseCredentials; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import com.skyflow.utils.BaseConstants; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; + +public class BaseVaultClientTests { + + private static final String ENV_FILE = ".env"; + private byte[] originalEnvContent; + + @Before + public void saveEnvFileState() throws IOException { + File f = new File(ENV_FILE); + originalEnvContent = f.exists() ? Files.readAllBytes(Paths.get(ENV_FILE)) : null; + } + + @After + public void restoreEnvFile() throws IOException { + if (originalEnvContent != null) { + Files.write(Paths.get(ENV_FILE), originalEnvContent); + } else { + Files.deleteIfExists(Paths.get(ENV_FILE)); + } + } + + private BaseVaultClient newClient(BaseCredentials commonCredentials) { + return new BaseVaultClient<>(new Object(), commonCredentials); + } + + @Test + public void testPrioritiseCredentials_prefersVaultSpecificCredentials() throws SkyflowException { + BaseCredentials vaultSpecific = new BaseCredentials(); + vaultSpecific.setApiKey("test_api_key"); + BaseVaultClient client = newClient(null); + + client.prioritiseCredentials(vaultSpecific); + + Assert.assertEquals(vaultSpecific, client.finalCredentials); + } + + @Test + public void testPrioritiseCredentials_fallsBackToCommonCredentials() throws SkyflowException { + BaseCredentials common = new BaseCredentials(); + common.setApiKey("common_api_key"); + BaseVaultClient client = newClient(common); + + client.prioritiseCredentials(null); + + Assert.assertEquals(common, client.finalCredentials); + } + + @Test + public void testPrioritiseCredentials_credentialChange_resetsTokenAndApiKey() throws SkyflowException { + BaseCredentials credentialsA = new BaseCredentials(); + credentialsA.setToken("x.eyJleHAiOjk5OTk5OTk5OTl9.y"); + BaseVaultClient client = newClient(null); + + client.prioritiseCredentials(credentialsA); + client.token = "cached-token"; + client.apiKey = "cached-api-key"; + + BaseCredentials credentialsB = new BaseCredentials(); + credentialsB.setToken("other-token"); + client.prioritiseCredentials(credentialsB); + + Assert.assertNull(client.token); + Assert.assertNull(client.apiKey); + } + + @Test + public void testSetBearerToken_withApiKey() throws SkyflowException { + BaseCredentials creds = new BaseCredentials(); + creds.setApiKey("sky-ab123-abcd1234cdef1234abcd4321cdef4321"); + BaseVaultClient client = newClient(null); + + client.setBearerToken(creds); + + Assert.assertEquals("sky-ab123-abcd1234cdef1234abcd4321cdef4321", client.token); + } + + @Test + public void testSetBearerToken_generatesTokenWhenNull() throws SkyflowException { + BaseCredentials creds = new BaseCredentials(); + creds.setToken("x.eyJleHAiOjk5OTk5OTk5OTl9.y"); + BaseVaultClient client = newClient(null); + + client.setBearerToken(creds); + + Assert.assertEquals("x.eyJleHAiOjk5OTk5OTk5OTl9.y", client.token); + } + + @Test + public void testSetBearerToken_reusesValidNonExpiredToken() throws SkyflowException { + BaseCredentials creds = new BaseCredentials(); + creds.setToken("x.eyJleHAiOjk5OTk5OTk5OTl9.y"); + BaseVaultClient client = newClient(null); + + // First call: token=null → generates from creds.getToken() + client.setBearerToken(creds); + Assert.assertEquals("x.eyJleHAiOjk5OTk5OTk5OTl9.y", client.token); + + // Second call: token valid, not expired → reuse branch + client.setBearerToken(creds); + Assert.assertEquals("x.eyJleHAiOjk5OTk5OTk5OTl9.y", client.token); + } + + @Test + public void testSetBearerToken_noCredentials_throwsEmptyCredentials() { + BaseVaultClient client = newClient(null); + try { + client.setBearerToken(null); + Assert.fail("Should have thrown SkyflowException"); + } catch (SkyflowException e) { + // message varies by environment (EmptyCredentials when no .env, or credential error when .env provides creds) + } + } + + /** + * Covers the dotenv success path: Dotenv.load() succeeds and returns a + * non-null credentials string, so finalCredentials is set via credentialsString. + */ + @Test + public void testPrioritiseCredentials_dotenvReturnsCredentials_setsCredentials() throws Exception { + try (FileWriter fw = new FileWriter(ENV_FILE)) { + fw.write(BaseConstants.ENV_CREDENTIALS_KEY_NAME + "={\"token\":\"env-token-value\"}\n"); + } + + BaseVaultClient client = newClient(null); + client.prioritiseCredentials(null); + + Assert.assertNotNull(client.finalCredentials); + Assert.assertEquals("{\"token\":\"env-token-value\"}", client.finalCredentials.getCredentialsString()); + } + + /** + * Covers the path where dotenv loads but the key is absent (returns null), + * causing SkyflowException(EmptyCredentials) to be thrown directly. + */ + @Test + public void testPrioritiseCredentials_dotenvKeyMissing_throwsSkyflowException() throws Exception { + try (FileWriter fw = new FileWriter(ENV_FILE)) { + fw.write("SOME_OTHER_KEY=some_value\n"); + } + + BaseVaultClient client = newClient(null); + try { + client.prioritiseCredentials(null); + Assert.fail("Should have thrown SkyflowException"); + } catch (SkyflowException e) { + Assert.assertTrue(e.getMessage().contains(ErrorMessage.EmptyCredentials.getMessage())); + } + } +} diff --git a/common/src/test/java/com/skyflow/config/BaseVaultConfigTests.java b/common/src/test/java/com/skyflow/config/BaseVaultConfigTests.java new file mode 100644 index 00000000..bea158b5 --- /dev/null +++ b/common/src/test/java/com/skyflow/config/BaseVaultConfigTests.java @@ -0,0 +1,75 @@ +package com.skyflow.config; + +import com.skyflow.enums.Env; +import org.junit.Assert; +import org.junit.Test; + +public class BaseVaultConfigTests { + + @Test + public void testDefaultConstructorDefaults() { + BaseVaultConfig config = new BaseVaultConfig(); + Assert.assertNull(config.getVaultId()); + Assert.assertNull(config.getClusterId()); + Assert.assertEquals(Env.PROD, config.getEnv()); + Assert.assertNull(config.getCredentials()); + } + + @Test + public void testGettersAndSetters() { + BaseVaultConfig config = new BaseVaultConfig(); + Credentials credentials = new Credentials(); + credentials.setToken("test_token"); + + config.setVaultId("vault_id"); + config.setClusterId("cluster_id"); + config.setEnv(Env.SANDBOX); + config.setCredentials(credentials); + + Assert.assertEquals("vault_id", config.getVaultId()); + Assert.assertEquals("cluster_id", config.getClusterId()); + Assert.assertEquals(Env.SANDBOX, config.getEnv()); + Assert.assertEquals(credentials, config.getCredentials()); + } + + @Test + public void testSetEnvNullFallsBackToProd() { + BaseVaultConfig config = new BaseVaultConfig(); + config.setEnv(Env.DEV); + config.setEnv(null); + Assert.assertEquals(Env.PROD, config.getEnv()); + } + + @Test + public void testCloneProducesIndependentCopy() throws CloneNotSupportedException { + BaseVaultConfig original = new BaseVaultConfig(); + original.setVaultId("vault_id"); + original.setClusterId("cluster_id"); + original.setEnv(Env.STAGE); + Credentials credentials = new Credentials(); + credentials.setToken("original_token"); + original.setCredentials(credentials); + + BaseVaultConfig cloned = (BaseVaultConfig) original.clone(); + + Assert.assertNotSame(original, cloned); + Assert.assertEquals(original.getVaultId(), cloned.getVaultId()); + Assert.assertEquals(original.getClusterId(), cloned.getClusterId()); + Assert.assertEquals(original.getEnv(), cloned.getEnv()); + Assert.assertNotSame(original.getCredentials(), cloned.getCredentials()); + Assert.assertEquals("original_token", cloned.getCredentials().getToken()); + + // Mutating the clone's credentials must not affect the original + cloned.getCredentials().setToken("mutated_token"); + Assert.assertEquals("original_token", original.getCredentials().getToken()); + } + + @Test + public void testCloneWithNullCredentials() throws CloneNotSupportedException { + BaseVaultConfig original = new BaseVaultConfig(); + original.setVaultId("vault_id"); + + BaseVaultConfig cloned = (BaseVaultConfig) original.clone(); + Assert.assertNull(cloned.getCredentials()); + } +} diff --git a/v2/src/test/java/com/skyflow/config/CredentialsTests.java b/common/src/test/java/com/skyflow/config/CredentialsTests.java similarity index 89% rename from v2/src/test/java/com/skyflow/config/CredentialsTests.java rename to common/src/test/java/com/skyflow/config/CredentialsTests.java index a9a9153f..cdf7fc3f 100644 --- a/v2/src/test/java/com/skyflow/config/CredentialsTests.java +++ b/common/src/test/java/com/skyflow/config/CredentialsTests.java @@ -3,7 +3,7 @@ import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; -import com.skyflow.utils.validations.Validations; +import com.skyflow.utils.validations.BaseValidations; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; @@ -13,8 +13,6 @@ import java.util.HashMap; import java.util.Map; -import com.skyflow.utils.Utils; - public class CredentialsTests { private static final String INVALID_EXCEPTION_THROWN = "Should not have thrown any exception"; private static final String EXCEPTION_NOT_THROWN = "Should have thrown an exception"; @@ -49,7 +47,7 @@ public void testValidCredentialsWithPath() { try { Credentials credentials = new Credentials(); credentials.setPath(path); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.assertNull(credentials.getCredentialsString()); Assert.assertNull(credentials.getToken()); Assert.assertNull(credentials.getApiKey()); @@ -63,7 +61,7 @@ public void testValidCredentialsWithCredentialsString() { try { Credentials credentials = new Credentials(); credentials.setCredentialsString(credentialsString); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.assertNull(credentials.getPath()); Assert.assertNull(credentials.getToken()); Assert.assertNull(credentials.getApiKey()); @@ -77,7 +75,7 @@ public void testValidCredentialsWithToken() { try { Credentials credentials = new Credentials(); credentials.setToken(token); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.assertNull(credentials.getPath()); Assert.assertNull(credentials.getCredentialsString()); Assert.assertNull(credentials.getApiKey()); @@ -91,7 +89,7 @@ public void testValidCredentialsWithApikey() { try { Credentials credentials = new Credentials(); credentials.setApiKey(validApiKey); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.assertNull(credentials.getPath()); Assert.assertNull(credentials.getCredentialsString()); Assert.assertNull(credentials.getToken()); @@ -108,7 +106,7 @@ public void testValidCredentialsWithRolesAndContext() { credentials.setApiKey(validApiKey); credentials.setRoles(roles); credentials.setContext(context); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.assertNull(credentials.getPath()); Assert.assertNull(credentials.getCredentialsString()); Assert.assertNull(credentials.getToken()); @@ -124,7 +122,7 @@ public void testEmptyPathInCredentials() { try { Credentials credentials = new Credentials(); credentials.setPath(""); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -137,7 +135,7 @@ public void testEmptyCredentialsStringInCredentials() { try { Credentials credentials = new Credentials(); credentials.setCredentialsString(""); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -150,7 +148,7 @@ public void testEmptyTokenInCredentials() { try { Credentials credentials = new Credentials(); credentials.setToken(""); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -163,7 +161,7 @@ public void testEmptyApikeyInCredentials() { try { Credentials credentials = new Credentials(); credentials.setApiKey(""); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -176,7 +174,7 @@ public void testInvalidApikeyInCredentials() { try { Credentials credentials = new Credentials(); credentials.setApiKey(invalidApiKey); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -190,7 +188,7 @@ public void testBothTokenAndPathInCredentials() { Credentials credentials = new Credentials(); credentials.setPath(path); credentials.setToken(token); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -202,7 +200,7 @@ public void testBothTokenAndPathInCredentials() { public void testNothingPassedInCredentials() { try { Credentials credentials = new Credentials(); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -216,7 +214,7 @@ public void testEmptyRolesInCredentials() { Credentials credentials = new Credentials(); credentials.setPath(path); credentials.setRoles(roles); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -232,7 +230,7 @@ public void testNullRoleInRolesInCredentials() { roles.add(role); roles.add(null); credentials.setRoles(roles); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -248,7 +246,7 @@ public void testEmptyRoleInRolesInCredentials() { roles.add(role); roles.add(""); credentials.setRoles(roles); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -262,7 +260,7 @@ public void testEmptyContextInCredentials() { Credentials credentials = new Credentials(); credentials.setPath(path); credentials.setContext(""); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -280,7 +278,7 @@ public void testValidMapContextInCredentials() { ctxMap.put("department", "finance"); ctxMap.put("user_id", "user_12345"); credentials.setContext(ctxMap); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); } catch (SkyflowException e) { Assert.fail(INVALID_EXCEPTION_THROWN); } @@ -293,7 +291,7 @@ public void testEmptyMapContextInCredentials() { credentials.setPath(path); Map ctxMap = new HashMap<>(); credentials.setContext(ctxMap); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -310,7 +308,7 @@ public void testInvalidMapKeyInContextCredentials() { ctxMap.put("valid_key", "value"); ctxMap.put("invalid-key", "value"); credentials.setContext(ctxMap); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); @@ -329,7 +327,7 @@ public void testMapContextWithNestedObjects() { ctxMap.put("role", "admin"); ctxMap.put("metadata", nested); credentials.setContext(ctxMap); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); } catch (SkyflowException e) { Assert.fail(INVALID_EXCEPTION_THROWN); } @@ -346,7 +344,7 @@ public void testMapContextWithMixedValueTypes() { ctxMap.put("active", true); ctxMap.put("timestamp", "2025-12-25T10:30:00Z"); credentials.setContext(ctxMap); - Validations.validateCredentials(credentials); + BaseValidations.validateCredentials(credentials); } catch (SkyflowException e) { Assert.fail(INVALID_EXCEPTION_THROWN); } diff --git a/v2/src/test/java/com/skyflow/errors/SkyflowExceptionTest.java b/common/src/test/java/com/skyflow/errors/SkyflowExceptionTest.java similarity index 100% rename from v2/src/test/java/com/skyflow/errors/SkyflowExceptionTest.java rename to common/src/test/java/com/skyflow/errors/SkyflowExceptionTest.java diff --git a/v2/src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java b/common/src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java similarity index 95% rename from v2/src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java rename to common/src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java index 3aeca811..bc8f09b5 100644 --- a/v2/src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java +++ b/common/src/test/java/com/skyflow/serviceaccount/util/BearerTokenTests.java @@ -3,8 +3,8 @@ import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; -import com.skyflow.utils.Constants; -import com.skyflow.utils.Utils; +import com.skyflow.utils.BaseConstants; +import com.skyflow.utils.BaseUtils; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -92,7 +92,7 @@ public void testEmptyCredentialsFilePath() { } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); Assert.assertEquals( - Utils.parameterizedString(ErrorMessage.FileNotFound.getMessage(), ""), e.getMessage() + BaseUtils.parameterizedString(ErrorMessage.FileNotFound.getMessage(), ""), e.getMessage() ); } } @@ -107,7 +107,7 @@ public void testInvalidFilePath() { } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); Assert.assertEquals( - Utils.parameterizedString(ErrorMessage.FileNotFound.getMessage(), invalidFilePath), + BaseUtils.parameterizedString(ErrorMessage.FileNotFound.getMessage(), invalidFilePath), e.getMessage() ); } @@ -123,7 +123,7 @@ public void testInvalidCredentialsFile() { } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); Assert.assertEquals( - Utils.parameterizedString(ErrorMessage.FileInvalidJson.getMessage(), invalidJsonFilePath), + BaseUtils.parameterizedString(ErrorMessage.FileInvalidJson.getMessage(), invalidJsonFilePath), e.getMessage() ); } @@ -264,7 +264,7 @@ public void testBearerTokenWithNewFormCredentialKeys() { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); // InvalidKeySpec confirms all credential fields were resolved — failure is at RSA parsing, not field lookup Assert.assertEquals( - Utils.parameterizedString(ErrorMessage.InvalidKeySpec.getMessage(), Constants.SDK_PREFIX), + BaseUtils.parameterizedString(ErrorMessage.InvalidKeySpec.getMessage(), BaseConstants.SDK_PREFIX), e.getMessage()); } } diff --git a/v2/src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java b/common/src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java similarity index 94% rename from v2/src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java rename to common/src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java index 93d69b0e..1465c2ca 100644 --- a/v2/src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java +++ b/common/src/test/java/com/skyflow/serviceaccount/util/SignedDataTokensTests.java @@ -3,7 +3,7 @@ import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; -import com.skyflow.utils.Utils; +import com.skyflow.utils.BaseUtils; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -85,7 +85,7 @@ public void testEmptyCredentialsFilePath() { Assert.fail(EXCEPTION_NOT_THROWN); } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals(Utils.parameterizedString(ErrorMessage.FileNotFound.getMessage(), ""), e.getMessage()); + Assert.assertEquals(BaseUtils.parameterizedString(ErrorMessage.FileNotFound.getMessage(), ""), e.getMessage()); } } @@ -99,7 +99,7 @@ public void testInvalidFilePath() { } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); Assert.assertEquals( - Utils.parameterizedString(ErrorMessage.FileNotFound.getMessage(), invalidFilePath), + BaseUtils.parameterizedString(ErrorMessage.FileNotFound.getMessage(), invalidFilePath), e.getMessage()); } } @@ -114,7 +114,7 @@ public void testInvalidCredentialsFile() { } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); Assert.assertEquals( - Utils.parameterizedString(ErrorMessage.FileInvalidJson.getMessage(), invalidJsonFilePath), + BaseUtils.parameterizedString(ErrorMessage.FileInvalidJson.getMessage(), invalidJsonFilePath), e.getMessage() ); } @@ -129,7 +129,7 @@ public void testEmptyCredentialsString() { } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); Assert.assertEquals( - Utils.parameterizedString(ErrorMessage.InvalidCredentials.getMessage(), invalidJsonFilePath), + BaseUtils.parameterizedString(ErrorMessage.InvalidCredentials.getMessage(), invalidJsonFilePath), e.getMessage() ); } catch (Exception e) { @@ -146,7 +146,7 @@ public void testInvalidCredentialsString() { } catch (SkyflowException e) { Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); Assert.assertEquals( - Utils.parameterizedString(ErrorMessage.CredentialsStringInvalidJson.getMessage(), invalidJsonFilePath), + BaseUtils.parameterizedString(ErrorMessage.CredentialsStringInvalidJson.getMessage(), invalidJsonFilePath), e.getMessage() ); } diff --git a/v2/src/test/java/com/skyflow/serviceaccount/util/TokenTests.java b/common/src/test/java/com/skyflow/serviceaccount/util/TokenTests.java similarity index 94% rename from v2/src/test/java/com/skyflow/serviceaccount/util/TokenTests.java rename to common/src/test/java/com/skyflow/serviceaccount/util/TokenTests.java index 88887681..cb631071 100644 --- a/v2/src/test/java/com/skyflow/serviceaccount/util/TokenTests.java +++ b/common/src/test/java/com/skyflow/serviceaccount/util/TokenTests.java @@ -1,7 +1,7 @@ package com.skyflow.serviceaccount.util; -import com.skyflow.Skyflow; import com.skyflow.enums.LogLevel; +import com.skyflow.utils.logger.LogUtil; import io.github.cdimascio.dotenv.Dotenv; import org.junit.Assert; import org.junit.BeforeClass; @@ -12,7 +12,7 @@ public class TokenTests { @BeforeClass public static void setup() { - Skyflow skyflowClient = Skyflow.builder().setLogLevel(LogLevel.DEBUG).build(); + LogUtil.setupLogger(LogLevel.DEBUG); } @Test diff --git a/common/src/test/java/com/skyflow/utils/BaseUtilsTests.java b/common/src/test/java/com/skyflow/utils/BaseUtilsTests.java new file mode 100644 index 00000000..024bca74 --- /dev/null +++ b/common/src/test/java/com/skyflow/utils/BaseUtilsTests.java @@ -0,0 +1,138 @@ +package com.skyflow.utils; + +import com.skyflow.config.Credentials; +import com.skyflow.enums.Env; +import com.skyflow.errors.ErrorCode; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.ArrayList; + +public class BaseUtilsTests { + private static final String INVALID_EXCEPTION_THROWN = "Should not have thrown any exception"; + private static final String EXCEPTION_NOT_THROWN = "Should have thrown an exception"; + private static String clusterId = null; + private static String url = null; + private static String filePath = null; + private static String credentialsString = null; + private static String token = null; + private static String context = null; + private static ArrayList roles = null; + + @BeforeClass + public static void setup() { + clusterId = "test_cluster_id"; + url = "https://test-url.com/java/unit/tests"; + filePath = "invalid/file/path/credentials.json"; + credentialsString = "invalid credentials string"; + token = "invalid-token"; + context = "test_context"; + roles = new ArrayList<>(); + roles.add("test_role"); + } + + @Test + public void testGetVaultURLForDev() { + try { + String vaultURL = BaseUtils.getVaultURL(clusterId, Env.DEV, BaseConstants.V2_VAULT_DOMAIN); + String devUrl = "https://test_cluster_id.vault.skyflowapis.dev"; + Assert.assertEquals(devUrl, vaultURL); + } catch (Exception e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testGetVaultURLForStage() { + try { + String vaultURL = BaseUtils.getVaultURL(clusterId, Env.STAGE, BaseConstants.V2_VAULT_DOMAIN); + String stageUrl = "https://test_cluster_id.vault.skyflowapis.tech"; + Assert.assertEquals(stageUrl, vaultURL); + } catch (Exception e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testGetVaultURLForSandbox() { + try { + String vaultURL = BaseUtils.getVaultURL(clusterId, Env.SANDBOX, BaseConstants.V2_VAULT_DOMAIN); + String sandboxUrl = "https://test_cluster_id.vault.skyflowapis-preview.com"; + Assert.assertEquals(sandboxUrl, vaultURL); + } catch (Exception e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testGetVaultURLForProd() { + try { + String vaultURL = BaseUtils.getVaultURL(clusterId, Env.PROD, BaseConstants.V2_VAULT_DOMAIN); + String prodUrl = "https://test_cluster_id.vault.skyflowapis.com"; + Assert.assertEquals(prodUrl, vaultURL); + } catch (Exception e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testGetBaseURL() { + try { + String baseURL = BaseUtils.getBaseURL(url); + String expected = "https://test-url.com"; + Assert.assertEquals(expected, baseURL); + } catch (Exception e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testGenerateBearerTokenWithCredentialsFile() { + try { + Credentials credentials = new Credentials(); + credentials.setPath(filePath); + credentials.setContext(context); + credentials.setRoles(roles); + BaseUtils.generateBearerToken(credentials); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals( + BaseUtils.parameterizedString(ErrorMessage.FileNotFound.getMessage(), filePath), + e.getMessage() + ); + } + } + + @Test + public void testGenerateBearerTokenWithCredentialsString() { + try { + Credentials credentials = new Credentials(); + credentials.setCredentialsString(credentialsString); + credentials.setContext(context); + credentials.setRoles(roles); + BaseUtils.generateBearerToken(credentials); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.CredentialsStringInvalidJson.getMessage(), e.getMessage()); + } + } + + @Test + public void testGenerateBearerTokenWithToken() { + try { + Credentials credentials = new Credentials(); + credentials.setToken(token); + credentials.setContext(context); + credentials.setRoles(roles); + String bearerToken = BaseUtils.generateBearerToken(credentials); + Assert.assertEquals(token, bearerToken); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } +} diff --git a/v2/src/test/java/com/skyflow/utils/logger/LogUtilLevelTests.java b/common/src/test/java/com/skyflow/utils/logger/LogUtilLevelTests.java similarity index 100% rename from v2/src/test/java/com/skyflow/utils/logger/LogUtilLevelTests.java rename to common/src/test/java/com/skyflow/utils/logger/LogUtilLevelTests.java diff --git a/v2/src/test/resources/invalidPrivateKeyCredentials.json b/common/src/test/resources/invalidPrivateKeyCredentials.json similarity index 100% rename from v2/src/test/resources/invalidPrivateKeyCredentials.json rename to common/src/test/resources/invalidPrivateKeyCredentials.json diff --git a/v2/src/test/resources/invalidTokenURICredentials.json b/common/src/test/resources/invalidTokenURICredentials.json similarity index 100% rename from v2/src/test/resources/invalidTokenURICredentials.json rename to common/src/test/resources/invalidTokenURICredentials.json diff --git a/v2/src/test/resources/noClientIDCredentials.json b/common/src/test/resources/noClientIDCredentials.json similarity index 100% rename from v2/src/test/resources/noClientIDCredentials.json rename to common/src/test/resources/noClientIDCredentials.json diff --git a/v2/src/test/resources/noKeyIDCredentials.json b/common/src/test/resources/noKeyIDCredentials.json similarity index 100% rename from v2/src/test/resources/noKeyIDCredentials.json rename to common/src/test/resources/noKeyIDCredentials.json diff --git a/v2/src/test/resources/noPrivateKeyCredentials.json b/common/src/test/resources/noPrivateKeyCredentials.json similarity index 100% rename from v2/src/test/resources/noPrivateKeyCredentials.json rename to common/src/test/resources/noPrivateKeyCredentials.json diff --git a/v2/src/test/resources/noTokenURICredentials.json b/common/src/test/resources/noTokenURICredentials.json similarity index 100% rename from v2/src/test/resources/noTokenURICredentials.json rename to common/src/test/resources/noTokenURICredentials.json diff --git a/common/src/test/resources/notJson.txt b/common/src/test/resources/notJson.txt new file mode 100644 index 00000000..bdf08de0 --- /dev/null +++ b/common/src/test/resources/notJson.txt @@ -0,0 +1 @@ +test file \ No newline at end of file diff --git a/flowvault/src/main/java/com/skyflow/Skyflow.java b/flowvault/src/main/java/com/skyflow/Skyflow.java index 51ccccd9..bd3c451f 100644 --- a/flowvault/src/main/java/com/skyflow/Skyflow.java +++ b/flowvault/src/main/java/com/skyflow/Skyflow.java @@ -34,44 +34,11 @@ public VaultConfig getVaultConfig() { } public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { - @Override protected void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { Validations.validateVaultConfiguration(vaultConfig); } - @Override - protected VaultConfig cloneVaultConfig(VaultConfig vaultConfig) { - try { - return (VaultConfig) vaultConfig.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } - - @Override - protected String extractVaultId(VaultConfig vaultConfig) { - return vaultConfig.getVaultId(); - } - - @Override - protected VaultConfig mergeVaultConfig(VaultConfig incoming, VaultConfig existing) { - if (incoming.getEnv() != null) { - existing.setEnv(incoming.getEnv()); - } - if (incoming.getClusterId() != null) { - existing.setClusterId(incoming.getClusterId()); - } - if (incoming.getCredentials() != null) { - try { - existing.setCredentials((Credentials) incoming.getCredentials().clone()); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } - return existing; - } - @Override protected void onVaultConfigAdded(VaultConfig vaultConfig) throws SkyflowException { this.vaultClientsMap.put(vaultConfig.getVaultId(), new VaultController(vaultConfig, this.skyflowCredentials)); diff --git a/flowvault/src/main/java/com/skyflow/enums/InterfaceName.java b/flowvault/src/main/java/com/skyflow/enums/InterfaceName.java new file mode 100644 index 00000000..1dcf86b6 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/enums/InterfaceName.java @@ -0,0 +1,19 @@ +package com.skyflow.enums; + +public enum InterfaceName { + INSERT("insert"), + DETOKENIZE("detokenize"), + DELETE("delete tokens"), + TOKENIZE("tokenize"); + + + private final String interfaceName; + + InterfaceName(String interfaceName) { + this.interfaceName = interfaceName; + } + + public String getName() { + return interfaceName; + } +} diff --git a/flowvault/src/main/java/com/skyflow/utils/Utils.java b/flowvault/src/main/java/com/skyflow/utils/Utils.java index 207edae6..670aa05b 100644 --- a/flowvault/src/main/java/com/skyflow/utils/Utils.java +++ b/flowvault/src/main/java/com/skyflow/utils/Utils.java @@ -2,16 +2,16 @@ import com.google.gson.JsonObject; import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; import com.skyflow.enums.Env; +import com.skyflow.enums.UpsertType; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; import com.skyflow.generated.rest.core.ApiClientApiException; import com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest; -import com.skyflow.generated.rest.types.V1InsertRecordData; -import com.skyflow.generated.rest.types.V1InsertResponse; -import com.skyflow.generated.rest.types.V1RecordResponseObject; -import com.skyflow.generated.rest.types.V1TokenGroupRedactions; +import com.skyflow.generated.rest.resources.flowservice.requests.V1InsertRequest; +import com.skyflow.generated.rest.types.*; import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; import com.skyflow.serviceaccount.util.BearerToken; @@ -107,5 +107,127 @@ public static String generateBearerToken(Credentials credentials) throws Skyflow } } + public static V1InsertRequest getBulkInsertRequestBody(InsertRequest request, VaultConfig config) { + ArrayList records = request.getRecords(); + List insertRecordDataList = new ArrayList<>(); + for (InsertRecord record : records) { + V1InsertRecordData.Builder data = V1InsertRecordData.builder(); + data.data(record.getData()); + if (record.getTable() != null && !record.getTable().isEmpty()) { + data.tableName(record.getTable()); + } + if (record.getUpsert() != null && !record.getUpsert().isEmpty()) { + if (record.getUpsertType() != null) { + FlowEnumUpdateType updateType = null; + if (record.getUpsertType() == UpsertType.REPLACE) { + updateType = FlowEnumUpdateType.REPLACE; + } else if (record.getUpsertType() == UpsertType.UPDATE) { + updateType = FlowEnumUpdateType.UPDATE; + } + V1Upsert upsert = V1Upsert.builder().uniqueColumns(record.getUpsert()).updateType(updateType).build(); + data.upsert(upsert); + } else { + V1Upsert upsert = V1Upsert.builder().uniqueColumns(record.getUpsert()).build(); + data.upsert(upsert); + } + } + insertRecordDataList.add(data.build()); + } + + V1InsertRequest.Builder builder = V1InsertRequest.builder() + .vaultId(config.getVaultId()) + .records(insertRecordDataList); + + if (request.getTable() != null && !request.getTable().isEmpty()) { + builder.tableName(request.getTable()); + } + + if (request.getUpsert() != null && !request.getUpsert().isEmpty()) { + if (request.getUpsertType() != null) { + FlowEnumUpdateType updateType = null; + if (request.getUpsertType() == UpsertType.REPLACE) { + updateType = FlowEnumUpdateType.REPLACE; + } else if (request.getUpsertType() == UpsertType.UPDATE) { + updateType = FlowEnumUpdateType.UPDATE; + } + V1Upsert upsert = V1Upsert.builder().uniqueColumns(request.getUpsert()).updateType(updateType).build(); + builder.upsert(upsert); + } else { + V1Upsert upsert = V1Upsert.builder().uniqueColumns(request.getUpsert()).build(); + builder.upsert(upsert); + } + } + return builder.build(); + + } + + public static InsertResponse buildInsertResponse(V1InsertResponse res) { + ArrayList> insertedFields = new ArrayList<>(); + ArrayList> errors = new ArrayList<>(); + + if (res.getRecords().isPresent()) { + for (V1RecordResponseObject record : res.getRecords().get()) { + if (record.getError().isPresent()) { + HashMap errorRecord = new HashMap<>(); + record.getSkyflowId().ifPresent(skyflowId -> errorRecord.put("skyflowId", skyflowId)); + record.getTableName().ifPresent(tableName -> errorRecord.put("tableName", tableName)); + errorRecord.put("error", record.getError().get()); + record.getHttpCode().ifPresent(httpCode -> errorRecord.put("httpCode", httpCode)); + errors.add(errorRecord); + } else { + HashMap insertedRecord = new HashMap<>(); + record.getSkyflowId().ifPresent(skyflowId -> insertedRecord.put("skyflowId", skyflowId)); + record.getTokens().ifPresent(insertedRecord::putAll); + insertedFields.add(insertedRecord); + } + } + } + return new InsertResponse(insertedFields, errors); + } + public static com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest getDetokenizeRequestBody(DetokenizeRequest request, String vaultid) { + List detokenizeData = request.getDetokenizeData(); + List tokens = new ArrayList<>(); + for(int i = 0; i< detokenizeData.size(); i++){ + tokens.add(detokenizeData.get(i).getToken()); + } + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest.Builder builder = + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest.builder() + .vaultId(vaultid) + .tokens(tokens); + if (request.getTokenGroupRedactions() != null) { + List tokenGroupRedactionsList = new ArrayList<>(); + for (com.skyflow.vault.data.TokenGroupRedactions tokenGroupRedactions : request.getTokenGroupRedactions()) { + com.skyflow.generated.rest.types.V1TokenGroupRedactions redactions = + com.skyflow.generated.rest.types.V1TokenGroupRedactions.builder() + .tokenGroupName(tokenGroupRedactions.getTokenGroupName()) + .redaction(tokenGroupRedactions.getRedaction()) + .build(); + tokenGroupRedactionsList.add(redactions); + } + + builder.tokenGroupRedactions(tokenGroupRedactionsList); + } + return builder.build(); + } + + public static DetokenizeResponse buildDetokenizeResponse(V1FlowDetokenizeResponse res) { + ArrayList detokenizedFields = new ArrayList<>(); + ArrayList errors = new ArrayList<>(); + + if (res.getResponse().isPresent()) { + for (V1FlowDetokenizeResponseObject record : res.getResponse().get()) { + String token = record.getToken().orElse(null); + String tokenGroupName = record.getTokenGroupName().orElse(null); + Map metadata = record.getMetadata().orElse(null); + if (record.getError().isPresent()) { + errors.add(new DetokenizeRecordResponse(token, null, record.getError().get(), tokenGroupName, metadata)); + } else { + Object value = record.getValue().orElse(null); + detokenizedFields.add(new DetokenizeRecordResponse(token, value, null, tokenGroupName, metadata)); + } + } + } + return new DetokenizeResponse(detokenizedFields, errors); + } } diff --git a/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java b/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java index 06995825..c94fe05b 100644 --- a/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java +++ b/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java @@ -2,6 +2,7 @@ import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; +import com.skyflow.enums.InterfaceName; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; @@ -9,8 +10,10 @@ import com.skyflow.utils.Constants; import com.skyflow.utils.Utils; import com.skyflow.utils.logger.LogUtil; +import com.skyflow.vault.data.*; import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -147,4 +150,164 @@ public static void validateVaultConfiguration(VaultConfig vaultConfig) throws Sk } } + + public static void validateInsertRequest(InsertRequest insertRequest) throws SkyflowException { + String table = insertRequest.getTable(); + ArrayList records = insertRequest.getRecords(); + if (records == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.RECORDS_IS_REQUIRED.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.RecordsKeyError.getMessage()); + } else if (records.isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_RECORDS.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRecords.getMessage()); + } +// else if (records.size() > 10000) { +// LogUtil.printErrorLog(ErrorLogs.RECORD_SIZE_EXCEED.getLog()); +// throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.RecordSizeExceedError.getMessage()); +// } + for (InsertRecord record : records) { + if(record == null){ + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.INVALID_RECORD.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidRecord.getMessage()); + } + } + + // table check if specified for both + if (insertRequest.getTable() != null && !table.trim().isEmpty()){ // if table name specified at both place + for (InsertRecord record : records) { + if (record.getTable() != null && !record.getTable().trim().isEmpty()){ + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.TABLE_SPECIFIED_AT_BOTH_PLACE.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.TableSpecifiedInRequestAndRecordObject.getMessage()); + } + } + } + // table check if not specified for both or if missing in any object + if (insertRequest.getTable() == null || table.trim().isEmpty()){ // if table name specified at both place + for (InsertRecord record : records) { + if (record.getTable() == null || record.getTable().trim().isEmpty()){ + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.TABLE_NOT_SPECIFIED_AT_BOTH_PLACE.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.TableNotSpecifiedInRequestAndRecordObject.getMessage()); + } + } + } + // upsert check 1 + if (insertRequest.getTable() != null && !table.trim().isEmpty()){ // if table name specified at both place + for (InsertRecord record : records) { + if (record.getUpsert() != null && record.getUpsert().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_UPSERT_VALUES.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyUpsertValues.getMessage()); + } + if (record.getUpsert() != null && !record.getUpsert().isEmpty()){ + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.UPSERT_TABLE_REQUEST_AT_RECORD_LEVEL.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.UpsertTableRequestAtRecordLevel.getMessage()); + } + } + } + // upsert check 2 + if (insertRequest.getTable() == null || table.trim().isEmpty()){ + if (insertRequest.getUpsert() != null && !insertRequest.getUpsert().isEmpty()){ + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.UPSERT_TABLE_REQUEST_AT_REQUEST_LEVEL.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.UpsertTableRequestAtRequestLevel.getMessage()); + } + } + + if (insertRequest.getUpsert() != null && insertRequest.getUpsert().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_UPSERT_VALUES.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyUpsertValues.getMessage()); + } + + for (InsertRecord record : records) { + if (record != null ) { + if (record.getData() != null){ + for (String key : record.getData().keySet()) { + if (key == null || key.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_KEY_IN_VALUES.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyKeyInRecords.getMessage()); + } else { + Object value = record.getData().get(key); + if (value == null || value.toString().trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_VALUE_IN_VALUES.getLog(), + InterfaceName.INSERT.getName(), key + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyValueInValues.getMessage()); + } + } + } + } + } + } + } + + public static void validateDetokenizeRequest(DetokenizeRequest request) throws SkyflowException { + if (request == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.DETOKENIZE_REQUEST_NULL.getLog(), InterfaceName.DETOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.DetokenizeRequestNull.getMessage()); + } + ArrayList tokens = request.getDetokenizeData(); + if (tokens == null || tokens.isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_DETOKENIZE_DATA.getLog(), InterfaceName.DETOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyDetokenizeData.getMessage()); + } +// if (tokens.size() > 10000) { +// LogUtil.printErrorLog(ErrorLogs.TOKENS_SIZE_EXCEED.getLog()); +// throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.TokensSizeExceedError.getMessage()); +// } + for (int index = 0; index < tokens.size(); index++) { + DetokenizeData token = tokens.get(index); + if (token != null && token.getToken().isEmpty() && token.getToken().trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_TOKEN_IN_DETOKENIZE_DATA.getLog(), + InterfaceName.DETOKENIZE.getName(), + String.valueOf(index))); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyTokenInDetokenizeData.getMessage()); + } + } + + List groupRedactions = request.getTokenGroupRedactions(); + if (groupRedactions != null && !groupRedactions.isEmpty()) { + for (TokenGroupRedactions group : groupRedactions) { + if (group == null) { + LogUtil.printErrorLog(Utils.parameterizedString(ErrorLogs.NULL_TOKEN_REDACTION_GROUP_OBJECT.getLog(), InterfaceName.DETOKENIZE.getName())); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NullTokenGroupRedactions.getMessage()); + } + String groupName = group.getTokenGroupName(); + String redaction = group.getRedaction(); + if (groupName == null || groupName.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString(ErrorLogs.NULL_TOKEN_GROUP_NAME_IN_TOKEN_GROUP.getLog(), InterfaceName.DETOKENIZE.getName())); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NullTokenGroupNameInTokenGroup.getMessage()); + } + if (redaction == null || redaction.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString(ErrorLogs.EMPTY_OR_NULL_REDACTION_IN_TOKEN_GROUP.getLog(), InterfaceName.DETOKENIZE.getName())); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NullRedactionInTokenGroup.getMessage()); + } + } + } + } + + } diff --git a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java index 6afd5cdb..24ba2b3f 100644 --- a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java +++ b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java @@ -7,11 +7,19 @@ import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; import com.skyflow.errors.SkyflowException; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.resources.flowservice.requests.V1InsertRequest; +import com.skyflow.generated.rest.types.V1InsertResponse; +import com.skyflow.logs.ErrorLogs; +import com.skyflow.logs.InfoLogs; +import com.skyflow.utils.Constants; import com.skyflow.utils.Utils; -import com.skyflow.vault.data.DetokenizeRequest; -import com.skyflow.vault.data.DetokenizeResponse; -import com.skyflow.vault.data.InsertRequest; -import com.skyflow.vault.data.InsertResponse; +import com.skyflow.utils.logger.LogUtil; +import com.skyflow.utils.validations.Validations; +import com.skyflow.vault.data.*; + +import static com.skyflow.utils.Utils.*; public final class VaultController extends VaultClient implements IVaultController { @@ -21,14 +29,57 @@ public final class VaultController extends VaultClient public VaultController(VaultConfig vaultConfig, Credentials credentials) throws SkyflowException { super(vaultConfig, credentials); } + private RequestOptions buildRequestOptions() { + RequestOptions.Builder builder = RequestOptions.builder() + .addHeader(Constants.SDK_METRICS_HEADER_KEY, metrics.toString()); + return builder.build(); + } @Override public InsertResponse insert(InsertRequest request) throws SkyflowException { - return null; + try { + LogUtil.printInfoLog(InfoLogs.INSERT_TRIGGERED.getLog()); + LogUtil.printInfoLog(InfoLogs.VALIDATE_INSERT_REQUEST.getLog()); + Validations.validateInsertRequest(request); + setBearerToken(); + V1InsertRequest insertRequest = getBulkInsertRequestBody(request, super.getVaultConfig()); + V1InsertResponse response = this.getRecordsApi().withRawResponse().insert(insertRequest, buildRequestOptions()).body(); + return buildInsertResponse(response); + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.INSERT_RECORDS_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } } @Override public DetokenizeResponse detokenize(DetokenizeRequest request) throws SkyflowException { + try { + LogUtil.printInfoLog(InfoLogs.DETOKENIZE_TRIGGERED.getLog()); + LogUtil.printInfoLog(InfoLogs.VALIDATE_DETOKENIZE_REQUEST.getLog()); + Validations.validateDetokenizeRequest(request); + setBearerToken(); + + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest requestDetokenize = getDetokenizeRequestBody(request, this.getVaultConfig().getVaultId()); + com.skyflow.generated.rest.types.V1FlowDetokenizeResponse response = this.getRecordsApi().withRawResponse().detokenize(requestDetokenize, buildRequestOptions()).body(); + + return buildDetokenizeResponse(response); + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.DETOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } + } + + public TokenizeResponse tokenize(TokenizeRequest request){ + LogUtil.printInfoLog(InfoLogs.TOKENIZE_TRIGGERED.getLog()); + try { + + } catch (Exception e) { + throw new RuntimeException(e); + } return null; } + + } \ No newline at end of file diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeData.java b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeData.java new file mode 100644 index 00000000..dcd8a2c8 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeData.java @@ -0,0 +1,8 @@ +package com.skyflow.vault.data; + + +public class DetokenizeData extends BaseDetokenizeData { + public DetokenizeData(String token) { + super(token); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRecordResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRecordResponse.java new file mode 100644 index 00000000..27063e8e --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRecordResponse.java @@ -0,0 +1,37 @@ +package com.skyflow.vault.data; + + +import com.google.gson.Gson; + +import java.util.Map; + +public class DetokenizeRecordResponse extends BaseDetokenizeRecordResponse { + private String tokenGroupName; + private Map metadata; + private Object value; + + public DetokenizeRecordResponse(String token, Object value, String error, String tokenGroupName, Map metadata) { + super(token, error); + this.value = value; + this.tokenGroupName = tokenGroupName; + this.metadata = metadata; + + } + + public String getTokenGroupName() { + return tokenGroupName; + } + public Map getMetadata() { + return metadata; + } + + public Object getValue(){ + return this.value; + } + + @Override + public String toString() { + Gson gson = new Gson(); + return gson.toJson(this); + } +} \ No newline at end of file diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRequest.java index 0cd8b159..67be6140 100644 --- a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRequest.java +++ b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeRequest.java @@ -1,4 +1,41 @@ package com.skyflow.vault.data; +import java.util.ArrayList; +import java.util.List; + public class DetokenizeRequest extends BaseDetokenizeRequest{ + private final DetokenizeRequestBuilder builder; + + private DetokenizeRequest(DetokenizeRequestBuilder builder) { + this.builder = builder; + } + + public static DetokenizeRequestBuilder builder() { + return new DetokenizeRequestBuilder(); + } + + public ArrayList getDetokenizeData() { + return this.builder.detokenizeData; + } + public List getTokenGroupRedactions(){ + return this.builder.tokenGroupRedactions; + } + + public static final class DetokenizeRequestBuilder { + private ArrayList detokenizeData; + private List tokenGroupRedactions; + + public DetokenizeRequestBuilder detokenizeData(ArrayList detokenizeData) { + this.detokenizeData = detokenizeData; + return this; + } + public DetokenizeRequestBuilder tokenGroupRedactions(List tokenGroupRedactions){ + this.tokenGroupRedactions = tokenGroupRedactions; + return this; + } + public DetokenizeRequest build() { + return new DetokenizeRequest(this); + } + } + } diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponse.java index 91dbe710..226b8444 100644 --- a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponse.java +++ b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponse.java @@ -1,4 +1,29 @@ package com.skyflow.vault.data; -public class DetokenizeResponse extends BaseDetokenizeResponse{ -} +import com.google.gson.Gson; + +import java.util.ArrayList; + +public class DetokenizeResponse { + private final ArrayList detokenizedFields; + private final ArrayList errors; + + public DetokenizeResponse(ArrayList detokenizedFields, ArrayList errors) { + this.detokenizedFields = detokenizedFields; + this.errors = errors; + } + + public ArrayList getDetokenizedFields() { + return detokenizedFields; + } + + public ArrayList getErrors() { + return errors; + } + + @Override + public String toString() { + Gson gson = new Gson(); + return gson.toJson(this); + } +} \ No newline at end of file diff --git a/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java index 4d8e8cae..b4ef6b17 100644 --- a/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java +++ b/flowvault/src/main/java/com/skyflow/vault/data/InsertRequest.java @@ -12,7 +12,6 @@ private InsertRequest(InsertRequestBuilder builder) { this.builder = builder; } - public static InsertRequestBuilder builder() { return new InsertRequestBuilder(); } diff --git a/flowvault/src/main/java/com/skyflow/vault/data/InsertResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/InsertResponse.java index 2d7e6e32..5a969d8d 100644 --- a/flowvault/src/main/java/com/skyflow/vault/data/InsertResponse.java +++ b/flowvault/src/main/java/com/skyflow/vault/data/InsertResponse.java @@ -1,4 +1,10 @@ package com.skyflow.vault.data; +import java.util.ArrayList; +import java.util.HashMap; + public class InsertResponse extends BaseInsertResponse{ + public InsertResponse(ArrayList> insertedFields, ArrayList> errors) { + super(insertedFields, errors); + } } diff --git a/flowvault/src/main/java/com/skyflow/vault/data/TokenGroupRedactions.java b/flowvault/src/main/java/com/skyflow/vault/data/TokenGroupRedactions.java new file mode 100644 index 00000000..3f89014c --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/TokenGroupRedactions.java @@ -0,0 +1,39 @@ +package com.skyflow.vault.data; + +public class TokenGroupRedactions { + private final TokenGroupRedactionsBuilder builder; + + private TokenGroupRedactions(TokenGroupRedactionsBuilder builder) { + this.builder = builder; + } + public String getTokenGroupName() { + return this.builder.tokenGroupName; + } + + public String getRedaction() { + return this.builder.redaction; + } + + public static TokenGroupRedactionsBuilder builder() { + return new TokenGroupRedactionsBuilder(); + } + + public static final class TokenGroupRedactionsBuilder { + private String tokenGroupName; + private String redaction; + + public TokenGroupRedactionsBuilder tokenGroupName(String tokenGroupName) { + this.tokenGroupName = tokenGroupName; + return this; + } + + public TokenGroupRedactionsBuilder redaction(String redaction) { + this.redaction = redaction; + return this; + } + + public TokenGroupRedactions build() { + return new TokenGroupRedactions(this); + } + } +} \ No newline at end of file diff --git a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeRequest.java new file mode 100644 index 00000000..f6b6cf99 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeRequest.java @@ -0,0 +1,4 @@ +package com.skyflow.vault.data; + +public class TokenizeRequest { +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeResponse.java new file mode 100644 index 00000000..403ad53c --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeResponse.java @@ -0,0 +1,4 @@ +package com.skyflow.vault.data; + +public class TokenizeResponse { +} diff --git a/pom.xml b/pom.xml index 1066c387..0b805a52 100644 --- a/pom.xml +++ b/pom.xml @@ -181,7 +181,22 @@ org.apache.maven.plugins maven-surefire-plugin - 2.22.2 + 3.2.5 + + false + + @{argLine} + --add-opens java.base/java.lang=ALL-UNNAMED + --add-opens java.base/java.net=ALL-UNNAMED + --add-opens java.base/java.util=ALL-UNNAMED + --add-opens java.base/java.io=ALL-UNNAMED + --add-opens java.base/sun.net.www.protocol.https=ALL-UNNAMED + + + **/*Test.java + **/*Tests.java + + org.jacoco diff --git a/v2/src/main/java/com/skyflow/Skyflow.java b/v2/src/main/java/com/skyflow/Skyflow.java index 396291bd..b8a056de 100644 --- a/v2/src/main/java/com/skyflow/Skyflow.java +++ b/v2/src/main/java/com/skyflow/Skyflow.java @@ -91,38 +91,6 @@ protected void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowExcept Validations.validateVaultConfig(vaultConfig); } - @Override - protected VaultConfig cloneVaultConfig(VaultConfig vaultConfig) { - try { - return (VaultConfig) vaultConfig.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } - - @Override - protected String extractVaultId(VaultConfig vaultConfig) { - return vaultConfig.getVaultId(); - } - - @Override - protected VaultConfig mergeVaultConfig(VaultConfig incoming, VaultConfig existing) { - if (incoming.getEnv() != null) { - existing.setEnv(incoming.getEnv()); - } - if (incoming.getClusterId() != null) { - existing.setClusterId(incoming.getClusterId()); - } - if (incoming.getCredentials() != null) { - try { - existing.setCredentials((Credentials) incoming.getCredentials().clone()); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } - return existing; - } - @Override protected void onVaultConfigAdded(VaultConfig vaultConfig) throws SkyflowException { this.vaultClientsMap.put(vaultConfig.getVaultId(), new VaultController(vaultConfig, this.skyflowCredentials)); diff --git a/v2/src/main/java/com/skyflow/generated/rest/ApiClient.java b/v2/src/main/java/com/skyflow/generated/rest/ApiClient.java index eb4c2020..cd305df1 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/ApiClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/ApiClient.java @@ -3,11 +3,9 @@ */ package com.skyflow.generated.rest; -import com.skyflow.generated.rest.ApiClientBuilder; import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.Suppliers; import com.skyflow.generated.rest.resources.audit.AuditClient; -import com.skyflow.generated.rest.resources.authentication.AuthenticationClient; import com.skyflow.generated.rest.resources.binlookup.BinLookupClient; import com.skyflow.generated.rest.resources.files.FilesClient; import com.skyflow.generated.rest.resources.guardrails.GuardrailsClient; @@ -15,7 +13,6 @@ import com.skyflow.generated.rest.resources.records.RecordsClient; import com.skyflow.generated.rest.resources.strings.StringsClient; import com.skyflow.generated.rest.resources.tokens.TokensClient; - import java.util.function.Supplier; public class ApiClient { @@ -31,8 +28,6 @@ public class ApiClient { protected final Supplier queryClient; - protected final Supplier authenticationClient; - protected final Supplier filesClient; protected final Supplier stringsClient; @@ -46,7 +41,6 @@ public ApiClient(ClientOptions clientOptions) { this.recordsClient = Suppliers.memoize(() -> new RecordsClient(clientOptions)); this.tokensClient = Suppliers.memoize(() -> new TokensClient(clientOptions)); this.queryClient = Suppliers.memoize(() -> new QueryClient(clientOptions)); - this.authenticationClient = Suppliers.memoize(() -> new AuthenticationClient(clientOptions)); this.filesClient = Suppliers.memoize(() -> new FilesClient(clientOptions)); this.stringsClient = Suppliers.memoize(() -> new StringsClient(clientOptions)); this.guardrailsClient = Suppliers.memoize(() -> new GuardrailsClient(clientOptions)); @@ -72,10 +66,6 @@ public QueryClient query() { return this.queryClient.get(); } - public AuthenticationClient authentication() { - return this.authenticationClient.get(); - } - public FilesClient files() { return this.filesClient.get(); } diff --git a/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java b/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java index ec3543a3..f0ca2c05 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java @@ -3,11 +3,9 @@ */ package com.skyflow.generated.rest; -import com.skyflow.generated.rest.AsyncApiClientBuilder; import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.Suppliers; import com.skyflow.generated.rest.resources.audit.AsyncAuditClient; -import com.skyflow.generated.rest.resources.authentication.AsyncAuthenticationClient; import com.skyflow.generated.rest.resources.binlookup.AsyncBinLookupClient; import com.skyflow.generated.rest.resources.files.AsyncFilesClient; import com.skyflow.generated.rest.resources.guardrails.AsyncGuardrailsClient; @@ -15,7 +13,6 @@ import com.skyflow.generated.rest.resources.records.AsyncRecordsClient; import com.skyflow.generated.rest.resources.strings.AsyncStringsClient; import com.skyflow.generated.rest.resources.tokens.AsyncTokensClient; - import java.util.function.Supplier; public class AsyncApiClient { @@ -31,8 +28,6 @@ public class AsyncApiClient { protected final Supplier queryClient; - protected final Supplier authenticationClient; - protected final Supplier filesClient; protected final Supplier stringsClient; @@ -46,7 +41,6 @@ public AsyncApiClient(ClientOptions clientOptions) { this.recordsClient = Suppliers.memoize(() -> new AsyncRecordsClient(clientOptions)); this.tokensClient = Suppliers.memoize(() -> new AsyncTokensClient(clientOptions)); this.queryClient = Suppliers.memoize(() -> new AsyncQueryClient(clientOptions)); - this.authenticationClient = Suppliers.memoize(() -> new AsyncAuthenticationClient(clientOptions)); this.filesClient = Suppliers.memoize(() -> new AsyncFilesClient(clientOptions)); this.stringsClient = Suppliers.memoize(() -> new AsyncStringsClient(clientOptions)); this.guardrailsClient = Suppliers.memoize(() -> new AsyncGuardrailsClient(clientOptions)); @@ -72,10 +66,6 @@ public AsyncQueryClient query() { return this.queryClient.get(); } - public AsyncAuthenticationClient authentication() { - return this.authenticationClient.get(); - } - public AsyncFilesClient files() { return this.filesClient.get(); } diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java b/v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java index da41fb25..2a5f0710 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java @@ -35,7 +35,7 @@ private ClientOptions( { put("X-Fern-Language", "JAVA"); put("X-Fern-SDK-Name", "com.skyflow.fern:api-sdk"); - put("X-Fern-SDK-Version", "0.0.385"); + put("X-Fern-SDK-Version", "0.0.98"); } }); this.headerSuppliers = headerSuppliers; diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java b/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java index c27d39a0..6b459431 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java @@ -3,14 +3,12 @@ */ package com.skyflow.generated.rest.core; -import com.skyflow.generated.rest.core.InputStreamRequestBody; +import java.io.InputStream; +import java.util.Objects; import okhttp3.MediaType; import okhttp3.RequestBody; import org.jetbrains.annotations.Nullable; -import java.io.InputStream; -import java.util.Objects; - /** * Represents a file stream with associated metadata for file uploads. */ diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java b/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java index 55c3c971..545f6088 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java @@ -3,6 +3,9 @@ */ package com.skyflow.generated.rest.core; +import java.io.IOException; +import java.io.InputStream; +import java.util.Objects; import okhttp3.MediaType; import okhttp3.RequestBody; import okhttp3.internal.Util; @@ -11,10 +14,6 @@ import okio.Source; import org.jetbrains.annotations.Nullable; -import java.io.IOException; -import java.io.InputStream; -import java.util.Objects; - /** * A custom implementation of OkHttp's RequestBody that wraps an InputStream. * This class allows streaming of data from an InputStream directly to an HTTP request body, diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java b/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java index 3f3a2213..3b7894e0 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java @@ -10,8 +10,6 @@ import com.fasterxml.jackson.databind.json.JsonMapper; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import com.skyflow.generated.rest.core.DateTimeDeserializer; - import java.io.IOException; public final class ObjectMappers { diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java b/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java index c0687736..e9e18fb9 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java @@ -7,11 +7,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; +import java.util.AbstractMap; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; import okhttp3.HttpUrl; import okhttp3.MultipartBody; -import java.util.*; - public class QueryStringMapper { private static final ObjectMapper MAPPER = ObjectMappers.JSON_MAPPER; diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java index 1bb0b5dc..d8df7715 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java @@ -3,10 +3,9 @@ */ package com.skyflow.generated.rest.core; -import okhttp3.Response; - import java.io.FilterInputStream; import java.io.IOException; +import okhttp3.Response; /** * A custom InputStream that wraps the InputStream from the OkHttp Response and ensures that the diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java index e6c1a525..ed894407 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java @@ -3,10 +3,9 @@ */ package com.skyflow.generated.rest.core; -import okhttp3.Response; - import java.io.FilterReader; import java.io.IOException; +import okhttp3.Response; /** * A custom Reader that wraps the Reader from the OkHttp Response and ensures that the diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java b/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java index 7a28c3c9..eda7d265 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java @@ -3,13 +3,12 @@ */ package com.skyflow.generated.rest.core; -import okhttp3.Interceptor; -import okhttp3.Response; - import java.io.IOException; import java.time.Duration; import java.util.Optional; import java.util.Random; +import okhttp3.Interceptor; +import okhttp3.Response; public class RetryInterceptor implements Interceptor { diff --git a/v2/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java b/v2/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java index 80ae5e7c..02c36c4b 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java +++ b/v2/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java @@ -4,20 +4,21 @@ package com.skyflow.generated.rest.errors; import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.types.ErrorResponse; import okhttp3.Response; public final class BadRequestError extends ApiClientApiException { /** * The body of the response that triggered the exception. */ - private final Object body; + private final ErrorResponse body; - public BadRequestError(Object body) { + public BadRequestError(ErrorResponse body) { super("BadRequestError", 400, body); this.body = body; } - public BadRequestError(Object body, Response rawResponse) { + public BadRequestError(ErrorResponse body, Response rawResponse) { super("BadRequestError", 400, body, rawResponse); this.body = body; } @@ -26,7 +27,7 @@ public BadRequestError(Object body, Response rawResponse) { * @return the body */ @Override - public Object body() { + public ErrorResponse body() { return this.body; } } diff --git a/v2/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java b/v2/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java index 3bc254bc..00ddc4ce 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java +++ b/v2/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java @@ -4,20 +4,21 @@ package com.skyflow.generated.rest.errors; import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.types.ErrorResponse; import okhttp3.Response; public final class UnauthorizedError extends ApiClientApiException { /** * The body of the response that triggered the exception. */ - private final Object body; + private final ErrorResponse body; - public UnauthorizedError(Object body) { + public UnauthorizedError(ErrorResponse body) { super("UnauthorizedError", 401, body); this.body = body; } - public UnauthorizedError(Object body, Response rawResponse) { + public UnauthorizedError(ErrorResponse body, Response rawResponse) { super("UnauthorizedError", 401, body, rawResponse); this.body = body; } @@ -26,7 +27,7 @@ public UnauthorizedError(Object body, Response rawResponse) { * @return the body */ @Override - public Object body() { + public ErrorResponse body() { return this.body; } } diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java index e1516eaf..875ca259 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java @@ -4,15 +4,27 @@ package com.skyflow.generated.rest.resources.audit; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.QueryStringMapper; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.audit.requests.AuditServiceListAuditEventsRequest; import com.skyflow.generated.rest.types.V1AuditResponse; -import okhttp3.*; -import org.jetbrains.annotations.NotNull; - import java.io.IOException; import java.util.concurrent.CompletableFuture; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import org.jetbrains.annotations.NotNull; public class AsyncRawAuditClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java index 68cd5e3b..bfec3bf2 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java @@ -4,13 +4,23 @@ package com.skyflow.generated.rest.resources.audit; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.QueryStringMapper; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.audit.requests.AuditServiceListAuditEventsRequest; import com.skyflow.generated.rest.types.V1AuditResponse; -import okhttp3.*; - import java.io.IOException; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; public class RawAuditClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java index e9f8cf12..8b6686e4 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java @@ -3,16 +3,26 @@ */ package com.skyflow.generated.rest.resources.audit.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.resources.audit.types.*; -import org.jetbrains.annotations.NotNull; - +import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsActionType; +import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsContextAccessType; +import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsContextActorType; +import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsContextAuthMode; +import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsResourceType; +import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestSortOpsOrderBy; import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = AuditServiceListAuditEventsRequest.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java index 9cf03c7d..2a3f5f4f 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java @@ -4,15 +4,28 @@ package com.skyflow.generated.rest.resources.binlookup; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.binlookup.requests.V1BinListRequest; import com.skyflow.generated.rest.types.V1BinListResponse; -import okhttp3.*; -import org.jetbrains.annotations.NotNull; - import java.io.IOException; import java.util.concurrent.CompletableFuture; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; +import org.jetbrains.annotations.NotNull; public class AsyncRawBinLookupClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java index 21e77017..bb08039b 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java @@ -4,13 +4,24 @@ package com.skyflow.generated.rest.resources.binlookup; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.binlookup.requests.V1BinListRequest; import com.skyflow.generated.rest.types.V1BinListResponse; -import okhttp3.*; - import java.io.IOException; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; public class RawBinLookupClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java index def40293..af827e01 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java @@ -3,12 +3,21 @@ */ package com.skyflow.generated.rest.resources.binlookup.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1VaultSchemaConfig; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BinListRequest.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java index 01031423..1f157223 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java @@ -5,11 +5,20 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.files.requests.*; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; +import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; +import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; - import java.util.concurrent.CompletableFuture; public class AsyncFilesClient { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java index e7f008e8..f497bb02 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java @@ -4,20 +4,44 @@ package com.skyflow.generated.rest.resources.files; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.QueryStringMapper; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.files.requests.*; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; +import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; +import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; -import okhttp3.*; -import org.jetbrains.annotations.NotNull; - import java.io.IOException; import java.util.concurrent.CompletableFuture; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; +import org.jetbrains.annotations.NotNull; public class AsyncRawFilesClient { protected final ClientOptions clientOptions; @@ -78,12 +102,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -166,12 +190,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -254,12 +278,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -342,12 +366,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -430,12 +454,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -518,12 +542,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -606,12 +630,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -694,12 +718,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -782,12 +806,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -870,12 +894,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -959,12 +983,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java index bcda96e6..8d083d76 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java @@ -5,7 +5,17 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.files.requests.*; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; +import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; +import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java index d277d224..0d44668e 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java @@ -4,18 +4,40 @@ package com.skyflow.generated.rest.resources.files; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.QueryStringMapper; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.files.requests.*; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; +import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; +import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; +import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; -import okhttp3.*; - import java.io.IOException; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; public class RawFilesClient { protected final ClientOptions clientOptions; @@ -70,10 +92,10 @@ public ApiClientHttpResponse deidentifyFile( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -138,10 +160,10 @@ public ApiClientHttpResponse deidentifyAudio( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -206,10 +228,10 @@ public ApiClientHttpResponse deidentifyDocument( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -274,10 +296,10 @@ public ApiClientHttpResponse deidentifyPdf( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -342,10 +364,10 @@ public ApiClientHttpResponse deidentifyImage( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -410,10 +432,10 @@ public ApiClientHttpResponse deidentifyPresentation( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -478,10 +500,10 @@ public ApiClientHttpResponse deidentifySpreadsheet( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -546,10 +568,10 @@ public ApiClientHttpResponse deidentifyStructuredText( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -613,10 +635,10 @@ public ApiClientHttpResponse deidentifyText( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -680,10 +702,10 @@ public ApiClientHttpResponse reidentifyFile( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -749,10 +771,10 @@ public ApiClientHttpResponse getRun( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java index c2baa931..d1cadca3 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java @@ -3,7 +3,13 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileAudioRequestDeidentifyAudioEntityTypesItem; @@ -11,10 +17,13 @@ import com.skyflow.generated.rest.types.FileDataDeidentifyAudio; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileAudioRequestDeidentifyAudio.Builder.class) public final class DeidentifyFileAudioRequestDeidentifyAudio { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java index 1844a116..5b6a653f 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java @@ -3,17 +3,26 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileDocumentPdfRequestDeidentifyPdfEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyPdf; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileDocumentPdfRequestDeidentifyPdf.Builder.class) public final class DeidentifyFileDocumentPdfRequestDeidentifyPdf { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java index 25ddea9c..015bba9e 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java @@ -3,7 +3,13 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileImageRequestDeidentifyImageEntityTypesItem; @@ -11,10 +17,13 @@ import com.skyflow.generated.rest.types.FileDataDeidentifyImage; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileImageRequestDeidentifyImage.Builder.class) public final class DeidentifyFileImageRequestDeidentifyImage { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java index 62d77229..c2cdcfb5 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java @@ -3,17 +3,26 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestEntityTypesItem; import com.skyflow.generated.rest.types.FileData; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequest.Builder.class) public final class DeidentifyFileRequest { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java index c4d9841d..fc3db52a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java @@ -3,17 +3,26 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyDocumentEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyDocument; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyDocument.Builder.class) public final class DeidentifyFileRequestDeidentifyDocument { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java index e1cea77f..f45802ec 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java @@ -3,17 +3,26 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyPresentationEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyPresentation; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyPresentation.Builder.class) public final class DeidentifyFileRequestDeidentifyPresentation { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java index 10ca8feb..93ea921a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java @@ -3,17 +3,26 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifySpreadsheetEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifySpreadsheet; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifySpreadsheet.Builder.class) public final class DeidentifyFileRequestDeidentifySpreadsheet { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java index e3f555b8..b579fe1b 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java @@ -3,17 +3,26 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyStructuredTextEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyStructuredText; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyStructuredText.Builder.class) public final class DeidentifyFileRequestDeidentifyStructuredText { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java index 8457c790..7a7c6615 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java @@ -3,17 +3,26 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyTextEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyText; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyText.Builder.class) public final class DeidentifyFileRequestDeidentifyText { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java index cde24227..490392f1 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java index 5cd22747..0f5e79ab 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java @@ -3,17 +3,22 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.FileDataReidentifyFile; import com.skyflow.generated.rest.types.Format; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ReidentifyFileRequestReidentifyFile.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java index 80853472..28829a68 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java @@ -4,18 +4,31 @@ package com.skyflow.generated.rest.resources.guardrails; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; import com.skyflow.generated.rest.resources.guardrails.requests.DetectGuardrailsRequest; import com.skyflow.generated.rest.types.DetectGuardrailsResponse; import com.skyflow.generated.rest.types.ErrorResponse; -import okhttp3.*; -import org.jetbrains.annotations.NotNull; - import java.io.IOException; import java.util.concurrent.CompletableFuture; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; +import org.jetbrains.annotations.NotNull; public class AsyncRawGuardrailsClient { protected final ClientOptions clientOptions; @@ -76,12 +89,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java index 5bf5c31a..bdf632ca 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java @@ -4,16 +4,27 @@ package com.skyflow.generated.rest.resources.guardrails; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; import com.skyflow.generated.rest.resources.guardrails.requests.DetectGuardrailsRequest; import com.skyflow.generated.rest.types.DetectGuardrailsResponse; import com.skyflow.generated.rest.types.ErrorResponse; -import okhttp3.*; - import java.io.IOException; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; public class RawGuardrailsClient { protected final ClientOptions clientOptions; @@ -68,10 +79,10 @@ public ApiClientHttpResponse checkGuardrails( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java index 75250f8c..9063fed8 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java @@ -3,13 +3,22 @@ */ package com.skyflow.generated.rest.resources.guardrails.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DetectGuardrailsRequest.Builder.class) public final class DetectGuardrailsRequest { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java index 7b8c9383..96e2dc0b 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java @@ -4,15 +4,28 @@ package com.skyflow.generated.rest.resources.query; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.query.requests.QueryServiceExecuteQueryBody; import com.skyflow.generated.rest.types.V1GetQueryResponse; -import okhttp3.*; -import org.jetbrains.annotations.NotNull; - import java.io.IOException; import java.util.concurrent.CompletableFuture; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; +import org.jetbrains.annotations.NotNull; public class AsyncRawQueryClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java index ec88ae93..3e5bee51 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java @@ -4,13 +4,24 @@ package com.skyflow.generated.rest.resources.query; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.query.requests.QueryServiceExecuteQueryBody; import com.skyflow.generated.rest.types.V1GetQueryResponse; -import okhttp3.*; - import java.io.IOException; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; public class RawQueryClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java index 000cd685..60565eb5 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.resources.query.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java index b1c9ae18..8840b51c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java @@ -4,21 +4,54 @@ package com.skyflow.generated.rest.resources.records; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.QueryStringMapper; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.records.requests.*; -import com.skyflow.generated.rest.types.*; -import okhttp3.*; -import org.jetbrains.annotations.NotNull; - +import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; +import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; +import com.skyflow.generated.rest.types.ErrorResponse; +import com.skyflow.generated.rest.types.UploadFileV2Response; +import com.skyflow.generated.rest.types.V1BatchOperationResponse; +import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; +import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; +import com.skyflow.generated.rest.types.V1DeleteFileResponse; +import com.skyflow.generated.rest.types.V1DeleteRecordResponse; +import com.skyflow.generated.rest.types.V1FieldRecords; +import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; +import com.skyflow.generated.rest.types.V1InsertRecordResponse; +import com.skyflow.generated.rest.types.V1UpdateRecordResponse; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Optional; import java.util.concurrent.CompletableFuture; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; +import org.jetbrains.annotations.NotNull; public class AsyncRawRecordsClient { protected final ClientOptions clientOptions; @@ -989,12 +1022,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 404: diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java index ed7240c9..c6925b50 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java @@ -5,9 +5,24 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.records.requests.*; -import com.skyflow.generated.rest.types.*; - +import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; +import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; +import com.skyflow.generated.rest.types.UploadFileV2Response; +import com.skyflow.generated.rest.types.V1BatchOperationResponse; +import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; +import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; +import com.skyflow.generated.rest.types.V1DeleteFileResponse; +import com.skyflow.generated.rest.types.V1DeleteRecordResponse; +import com.skyflow.generated.rest.types.V1FieldRecords; +import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; +import com.skyflow.generated.rest.types.V1InsertRecordResponse; +import com.skyflow.generated.rest.types.V1UpdateRecordResponse; import java.io.File; import java.util.Optional; import java.util.concurrent.CompletableFuture; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java index 29530b56..977e84bb 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java @@ -4,19 +4,50 @@ package com.skyflow.generated.rest.resources.records; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.QueryStringMapper; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.records.requests.*; -import com.skyflow.generated.rest.types.*; -import okhttp3.*; - +import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; +import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; +import com.skyflow.generated.rest.types.ErrorResponse; +import com.skyflow.generated.rest.types.UploadFileV2Response; +import com.skyflow.generated.rest.types.V1BatchOperationResponse; +import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; +import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; +import com.skyflow.generated.rest.types.V1DeleteFileResponse; +import com.skyflow.generated.rest.types.V1DeleteRecordResponse; +import com.skyflow.generated.rest.types.V1FieldRecords; +import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; +import com.skyflow.generated.rest.types.V1InsertRecordResponse; +import com.skyflow.generated.rest.types.V1UpdateRecordResponse; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Optional; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; public class RawRecordsClient { protected final ClientOptions clientOptions; @@ -831,10 +862,10 @@ public ApiClientHttpResponse uploadFileV2( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 404: throw new NotFoundError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java index 7cf3e02b..7b4599c6 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java @@ -5,10 +5,24 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.records.RawRecordsClient; -import com.skyflow.generated.rest.resources.records.requests.*; -import com.skyflow.generated.rest.types.*; - +import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; +import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; +import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; +import com.skyflow.generated.rest.types.UploadFileV2Response; +import com.skyflow.generated.rest.types.V1BatchOperationResponse; +import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; +import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; +import com.skyflow.generated.rest.types.V1DeleteFileResponse; +import com.skyflow.generated.rest.types.V1DeleteRecordResponse; +import com.skyflow.generated.rest.types.V1FieldRecords; +import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; +import com.skyflow.generated.rest.types.V1InsertRecordResponse; +import com.skyflow.generated.rest.types.V1UpdateRecordResponse; import java.io.File; import java.util.Optional; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java index 3efb0a98..fe805970 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java index c1997213..48586839 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java @@ -3,13 +3,22 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1BatchRecord; import com.skyflow.generated.rest.types.V1Byot; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceBatchOperationBody.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java index 4b9dcced..b417adbb 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceBulkDeleteRecordBody.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java index 9b59168a..22c9090c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java @@ -3,13 +3,23 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.records.types.RecordServiceBulkGetRecordRequestOrderBy; import com.skyflow.generated.rest.resources.records.types.RecordServiceBulkGetRecordRequestRedaction; - -import java.util.*; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceBulkGetRecordRequest.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java index 91317d02..eef17665 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java @@ -3,12 +3,22 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.records.types.RecordServiceGetRecordRequestRedaction; - -import java.util.*; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceGetRecordRequest.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java index e832e396..e1de00f7 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java @@ -3,13 +3,22 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1Byot; import com.skyflow.generated.rest.types.V1FieldRecords; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceInsertRecordBody.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java index f5c7a229..e52af2e4 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java @@ -3,12 +3,17 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1Byot; import com.skyflow.generated.rest.types.V1FieldRecords; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java index 81a9f837..f162530c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java @@ -3,15 +3,20 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = UploadFileV2Request.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java index 36b364b5..aed19530 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java @@ -4,7 +4,13 @@ package com.skyflow.generated.rest.resources.strings; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; @@ -13,11 +19,18 @@ import com.skyflow.generated.rest.types.DeidentifyStringResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.IdentifyResponse; -import okhttp3.*; -import org.jetbrains.annotations.NotNull; - import java.io.IOException; import java.util.concurrent.CompletableFuture; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; +import org.jetbrains.annotations.NotNull; public class AsyncRawStringsClient { protected final ClientOptions clientOptions; @@ -78,12 +91,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: @@ -172,12 +185,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response)); return; case 500: diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java index da6bec56..560e1931 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java @@ -4,7 +4,13 @@ package com.skyflow.generated.rest.resources.strings; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; @@ -13,9 +19,14 @@ import com.skyflow.generated.rest.types.DeidentifyStringResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.IdentifyResponse; -import okhttp3.*; - import java.io.IOException; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; public class RawStringsClient { protected final ClientOptions clientOptions; @@ -70,10 +81,10 @@ public ApiClientHttpResponse deidentifyString( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -143,10 +154,10 @@ public ApiClientHttpResponse reidentifyString( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java index 06ec6cec..943ddde4 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java @@ -3,16 +3,25 @@ */ package com.skyflow.generated.rest.resources.strings.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.strings.types.DeidentifyStringRequestEntityTypesItem; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyStringRequest.Builder.class) public final class DeidentifyStringRequest { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java index 3c42390c..59c1aaf2 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java @@ -3,11 +3,16 @@ */ package com.skyflow.generated.rest.resources.strings.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.Format; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java index 794035bd..fbf69580 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java @@ -4,17 +4,30 @@ package com.skyflow.generated.rest.resources.tokens; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.tokens.requests.V1DetokenizePayload; import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; import com.skyflow.generated.rest.types.V1DetokenizeResponse; import com.skyflow.generated.rest.types.V1TokenizeResponse; -import okhttp3.*; -import org.jetbrains.annotations.NotNull; - import java.io.IOException; import java.util.concurrent.CompletableFuture; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; +import org.jetbrains.annotations.NotNull; public class AsyncRawTokensClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java index 621701af..26d5ea05 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java @@ -9,7 +9,6 @@ import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; import com.skyflow.generated.rest.types.V1DetokenizeResponse; import com.skyflow.generated.rest.types.V1TokenizeResponse; - import java.util.concurrent.CompletableFuture; public class AsyncTokensClient { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java index 7ad69d11..5ed17d28 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java @@ -4,15 +4,26 @@ package com.skyflow.generated.rest.resources.tokens; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.*; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.ClientOptions; +import com.skyflow.generated.rest.core.MediaTypes; +import com.skyflow.generated.rest.core.ObjectMappers; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.tokens.requests.V1DetokenizePayload; import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; import com.skyflow.generated.rest.types.V1DetokenizeResponse; import com.skyflow.generated.rest.types.V1TokenizeResponse; -import okhttp3.*; - import java.io.IOException; +import okhttp3.Headers; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; public class RawTokensClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java index 52571f64..59318aa8 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java @@ -3,12 +3,21 @@ */ package com.skyflow.generated.rest.resources.tokens.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1DetokenizeRecordRequest; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1DetokenizePayload.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java index e5fc08f4..9729023e 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java @@ -3,12 +3,21 @@ */ package com.skyflow.generated.rest.resources.tokens.requests; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1TokenizeRecordRequest; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1TokenizePayload.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java index 73aed9c1..210f96c0 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java index bab4b42a..e2028fba 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java index 9d3bbaed..1352c42f 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java index dc244be8..a7dd7c68 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java index d5a2ebd5..d2b8e5b6 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java index 1389fa0f..e831f142 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyStringResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java index 9cb2d319..9773dcc3 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java @@ -3,15 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DetectGuardrailsResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java index b73f7845..c97f7635 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DetectRunsResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java index 4113b998..565714eb 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ErrorResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java index 4774fa57..bcc23f03 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java @@ -3,13 +3,22 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.jetbrains.annotations.NotNull; -import java.util.*; - @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ErrorResponseError.Builder.class) public final class ErrorResponseError { diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileData.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileData.java index fd6fa822..7f58332e 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileData.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileData.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileData.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java index b6a5ea11..2aa88f7b 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyAudio.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java index 5fb12fba..e6390e28 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyDocument.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java index bc5e2c6b..127c5f4c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyImage.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java index 5606e917..20b0314f 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyPdf.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java index 0bedabc5..e808f0b2 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyPresentation.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java index dd017bb8..33478d20 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifySpreadsheet.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java index 814d51c3..dad188ce 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyStructuredText.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java index e5c88180..79045d7a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyText.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java index 9148703c..edea3145 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataReidentifyFile.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/Format.java b/v2/src/main/java/com/skyflow/generated/rest/types/Format.java index 1563b90a..68ac94ca 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/Format.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/Format.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = Format.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java b/v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java index 55be5699..807aee4e 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = GooglerpcStatus.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java index c1bd23c6..e7ae30fc 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java @@ -3,14 +3,18 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import org.jetbrains.annotations.NotNull; - import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = IdentifyResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/Locations.java b/v2/src/main/java/com/skyflow/generated/rest/types/Locations.java index 4b95c485..9864541a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/Locations.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/Locations.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java b/v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java index 40e73b99..9f019b66 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java index a12660cb..b5a4f6f5 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java index b7bc22ca..024200d1 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java b/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java index 37ef8cdf..2fc4b11a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ShiftDates.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java b/v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java index 78df8838..81c1e58d 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java b/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java index b703895d..f8c1edb4 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = TokenTypeMapping.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java b/v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java index c9165409..12a5afc7 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java b/v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java index 8f5fea5a..c1ddbd58 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java index 037b80bf..d942fdcd 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java index f7ca73f0..c582d06d 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java index 36d7ccce..dd23d77c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1AuditResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java index a54eec6c..ca2bfdc2 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1AuditResponseEvent.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java index 90d9c538..046c8fb4 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1AuditResponseEventRequest.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java index 8f5fb775..a557da82 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BatchOperationResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java index 3f0455cc..afc572cf 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java index 88c1c125..58472a8b 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BinListResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java index b7151598..ddb0d213 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BulkDeleteRecordResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java index 27878fab..c2d3790a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BulkGetRecordResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java index ba4f7349..f2a9db90 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java index 4d9b24eb..4ec85903 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java index 5351d897..2f3bde14 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java index b6fb9cb6..3cf5b59c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java index dd3a9c1f..ba0abbfa 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java index 53660cbe..74f4f6e6 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1DetokenizeResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java index b64b8792..dfbccb8b 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java deleted file mode 100644 index 43a86ae0..00000000 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java +++ /dev/null @@ -1,125 +0,0 @@ -/** - * This file was auto-generated by Fern from our API Definition. - */ -package com.skyflow.generated.rest.types; - -import com.fasterxml.jackson.annotation.*; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; - -@JsonInclude(JsonInclude.Include.NON_ABSENT) -@JsonDeserialize(builder = V1GetAuthTokenResponse.Builder.class) -public final class V1GetAuthTokenResponse { - private final Optional accessToken; - - private final Optional tokenType; - - private final Map additionalProperties; - - private V1GetAuthTokenResponse( - Optional accessToken, Optional tokenType, Map additionalProperties) { - this.accessToken = accessToken; - this.tokenType = tokenType; - this.additionalProperties = additionalProperties; - } - - /** - * @return AccessToken. - */ - @JsonProperty("accessToken") - public Optional getAccessToken() { - return accessToken; - } - - /** - * @return TokenType : Bearer. - */ - @JsonProperty("tokenType") - public Optional getTokenType() { - return tokenType; - } - - @Override - public boolean equals(Object other) { - if (this == other) return true; - return other instanceof V1GetAuthTokenResponse && equalTo((V1GetAuthTokenResponse) other); - } - - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - private boolean equalTo(V1GetAuthTokenResponse other) { - return accessToken.equals(other.accessToken) && tokenType.equals(other.tokenType); - } - - @Override - public int hashCode() { - return Objects.hash(this.accessToken, this.tokenType); - } - - @Override - public String toString() { - return ObjectMappers.stringify(this); - } - - public static Builder builder() { - return new Builder(); - } - - @JsonIgnoreProperties(ignoreUnknown = true) - public static final class Builder { - private Optional accessToken = Optional.empty(); - - private Optional tokenType = Optional.empty(); - - @JsonAnySetter - private Map additionalProperties = new HashMap<>(); - - private Builder() {} - - public Builder from(V1GetAuthTokenResponse other) { - accessToken(other.getAccessToken()); - tokenType(other.getTokenType()); - return this; - } - - /** - *

AccessToken.

- */ - @JsonSetter(value = "accessToken", nulls = Nulls.SKIP) - public Builder accessToken(Optional accessToken) { - this.accessToken = accessToken; - return this; - } - - public Builder accessToken(String accessToken) { - this.accessToken = Optional.ofNullable(accessToken); - return this; - } - - /** - *

TokenType : Bearer.

- */ - @JsonSetter(value = "tokenType", nulls = Nulls.SKIP) - public Builder tokenType(Optional tokenType) { - this.tokenType = tokenType; - return this; - } - - public Builder tokenType(String tokenType) { - this.tokenType = Optional.ofNullable(tokenType); - return this; - } - - public V1GetAuthTokenResponse build() { - return new V1GetAuthTokenResponse(accessToken, tokenType, additionalProperties); - } - } -} diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java index 3138c766..4bd67013 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java index a44b0f62..821d1f06 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1GetQueryResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java index f8a00001..0addf786 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1InsertRecordResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java index 17f77df6..f69719cf 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java index 43fe264a..2c15ceac 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java index 66721fa1..201a4f60 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java index 05e64bc0..62d77bed 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java @@ -3,11 +3,20 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1TokenizeResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java index d2fcbf1b..03ed7b58 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java index 6fc09854..c19d1cb5 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java index 1542ab0f..cd838305 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java b/v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java index 314b5942..594b6d11 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java @@ -3,10 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/logs/ErrorLogs.java b/v2/src/main/java/com/skyflow/logs/ErrorLogs.java deleted file mode 100644 index 47866efc..00000000 --- a/v2/src/main/java/com/skyflow/logs/ErrorLogs.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.skyflow.logs; - -public enum ErrorLogs { - // Client initialization - VAULT_CONFIG_EXISTS("Vault config with vault ID %s1 already exists."), - VAULT_CONFIG_DOES_NOT_EXIST("Vault config with vault ID %s1 doesn't exist."), - VAULT_ID_IS_REQUIRED("Invalid vault config. Vault ID is required."), - EMPTY_VAULT_ID("Invalid vault config. Vault ID can not be empty."), - CLUSTER_ID_IS_REQUIRED("Invalid vault config. Cluster ID is required."), - EMPTY_CLUSTER_ID("Invalid vault config. Cluster ID can not be empty."), - CONNECTION_CONFIG_EXISTS("Connection config with connection ID %s1 already exists."), - CONNECTION_CONFIG_DOES_NOT_EXIST("Connection config with connection ID %s1 doesn't exist."), - CONNECTION_ID_IS_REQUIRED("Invalid connection config. Connection ID is required."), - EMPTY_CONNECTION_ID("Invalid connection config. Connection ID can not be empty."), - CONNECTION_URL_IS_REQUIRED("Invalid connection config. Connection URL is required."), - EMPTY_CONNECTION_URL("Invalid connection config. Connection URL can not be empty."), - INVALID_CONNECTION_URL("Invalid connection config. Connection URL is not a valid URL."), - MULTIPLE_TOKEN_GENERATION_MEANS_PASSED("Invalid credentials. Only one of 'path', 'credentialsString', 'token' or 'apiKey' is allowed."), - NO_TOKEN_GENERATION_MEANS_PASSED("Invalid credentials. Any one of 'path', 'credentialsString', 'token' or 'apiKey' is required."), - EMPTY_CREDENTIALS_PATH("Invalid credentials. Credentials path can not be empty."), - EMPTY_CREDENTIALS_STRING("Invalid credentials. Credentials string can not be empty."), - EMPTY_TOKEN_VALUE("Invalid credentials. Token can not be empty."), - EMPTY_API_KEY_VALUE("Invalid credentials. Api key can not be empty."), - INVALID_API_KEY("Invalid credentials. Api key is invalid."), - EMPTY_ROLES("Invalid credentials. Roles can not be empty."), - EMPTY_OR_NULL_ROLE_IN_ROLES("Invalid credentials. Role can not be null or empty in roles at index %s1."), - EMPTY_OR_NULL_CONTEXT("Invalid credentials. Context can not be empty."), - INVALID_CONTEXT_TYPE("Invalid credentials. Context must be a String or Map."), - INVALID_CONTEXT_MAP_KEY("Invalid credentials. Context map key '%s1' contains invalid characters."), - - // Bearer token generation - INVALID_BEARER_TOKEN("Bearer token is invalid or expired."), - INVALID_CREDENTIALS_FILE("Credentials file is either null or an invalid file."), - INVALID_CREDENTIALS_STRING("Credentials string is either null or empty."), - INVALID_CREDENTIALS_FILE_FORMAT("Credentials file is not in a valid JSON format."), - CREDENTIALS_FILE_NOT_FOUND("Credentials file not found at specified path."), - INVALID_CREDENTIALS_STRING_FORMAT("Credentials string is not in a valid JSON string format."), - PRIVATE_KEY_IS_REQUIRED("Private key is required."), - CLIENT_ID_IS_REQUIRED("Client ID is required."), - KEY_ID_IS_REQUIRED("Key ID is required."), - TOKEN_URI_IS_REQUIRED("Token URI is required."), - INVALID_TOKEN_URI("Invalid value for token URI in credentials."), - JWT_INVALID_FORMAT("Private key is not in a valid format."), - INVALID_ALGORITHM("Algorithm for parsing private key is invalid or does not exist."), - INVALID_KEY_SPEC("Unable to parse RSA private key."), - BEARER_TOKEN_REJECTED("Bearer token request resulted in failure."), - SIGNED_DATA_TOKENS_REJECTED("Signed data tokens request resulted in failure."), - - // Vault api interfaces - TABLE_IS_REQUIRED("Invalid %s1 request. Table is required."), - EMPTY_TABLE_NAME("Invalid %s1 request. Table name can not be empty."), - VALUES_IS_REQUIRED("Invalid %s1 request. Values are required."), - EMPTY_OR_NULL_KEY_IN_VALUES("Invalid %s1 request. Key can not be null or empty in values"), - EMPTY_UPSERT("Invalid %s1 request. Upsert can not be empty."), - HOMOGENOUS_NOT_SUPPORTED_WITH_UPSERT("Invalid %s1 request. Homogenous is not supported when upsert is passed."), - TOKENS_NOT_ALLOWED_WITH_TOKEN_MODE_DISABLE("Invalid %s1 request. Tokens are not allowed when tokenMode is DISABLE."), - TOKENS_REQUIRED_WITH_TOKEN_MODE("Invalid %s1 request. Tokens are required when tokenMode is %s2."), - EMPTY_TOKENS("Invalid %s1 request. Tokens can not be empty."), - EMPTY_OR_NULL_KEY_IN_TOKENS("Invalid %s1 request. Key can not be null or empty in tokens."), - INSUFFICIENT_TOKENS_PASSED_FOR_TOKEN_MODE_ENABLE_STRICT("Invalid %s1 request. For tokenMode as ENABLE_STRICT, tokens should be passed for all fields."), - MISMATCH_OF_FIELDS_AND_TOKENS("Invalid %s1 request. Keys for values and tokens are not matching."), - INSERT_RECORDS_REJECTED("Insert request resulted in failure."), - DETOKENIZE_DATA_REQUIRED("Invalid %s1 request. Detokenize data is required."), - EMPTY_DETOKENIZE_DATA("Invalid %s1 request. Detokenize data can not be empty."), - EMPTY_OR_NULL_TOKEN_IN_DETOKENIZE_DATA("Invalid %s1 request. Token can not be null or empty in detokenize data at index %s2."), - REDACTION_IS_REQUIRED("Invalid %s1 request. Redaction is required."), - DETOKENIZE_REQUEST_REJECTED("Detokenize request resulted in failure."), - IDS_IS_REQUIRED("Invalid %s1 request. Ids are required."), - EMPTY_IDS("Invalid %s1 request. Ids can not be empty."), - EMPTY_OR_NULL_ID_IN_IDS("Invalid %s1 request. Id can not be null or empty in ids at index %s2."), - EMPTY_FIELDS("Invalid %s1 request. Fields can not be empty."), - EMPTY_OR_NULL_FIELD_IN_FIELDS("Invalid %s1 request. Field can not be null or empty in fields at index %s2."), - TOKENIZATION_NOT_SUPPORTED_WITH_REDACTION("Invalid %s1 request. Return tokens is not supported when redaction is applied."), - TOKENIZATION_SUPPORTED_ONLY_WITH_IDS("Invalid %s1 request. Return tokens is not supported when column name and values are passed."), - EMPTY_OFFSET("Invalid %s1 request. Offset can not be empty."), - EMPTY_LIMIT("Invalid %s1 request. Limit can not be empty."), - NEITHER_IDS_NOR_COLUMN_NAME_PASSED("Invalid %s1 request. Neither ids nor column name and values are passed."), - BOTH_IDS_AND_COLUMN_NAME_PASSED("Invalid %s1 request. Both ids and column name and values are passed."), - COLUMN_NAME_IS_REQUIRED("Invalid %s1 request. Column name is required when column values are passed."), - EMPTY_COLUMN_NAME("Invalid %s1 request. Column name can not be empty."), - COLUMN_VALUES_IS_REQUIRED_GET("Invalid %s1 request. Column values are required when column name is passed."), - EMPTY_COLUMN_VALUES("Invalid %s1 request. Column values can not be empty."), - EMPTY_OR_NULL_COLUMN_VALUE_IN_COLUMN_VALUES("Invalid %s1 request. Column value can not by null or empty in column values at index %s2."), - GET_REQUEST_REJECTED("Get request resulted in failure."), - DATA_IS_REQUIRED("Invalid %s1 request. Data is required."), - EMPTY_DATA("Invalid %s1 request. Data can not be empty."), - SKYFLOW_ID_IS_REQUIRED("Invalid %s1 request. Skyflow Id is required."), - INVALID_SKYFLOW_ID_TYPE("Invalid %s1 request. Skyflow Id should of type String."), - EMPTY_SKYFLOW_ID("Invalid %s1 request. Skyflow Id can not be empty."), - UPDATE_REQUEST_REJECTED("Update request resulted in failure."), - QUERY_IS_REQUIRED("Invalid %s1 request. Query is required."), - EMPTY_QUERY("Invalid %s1 request. Query can not be empty."), - QUERY_REQUEST_REJECTED("Query request resulted in failure."), - COLUMN_VALUES_IS_REQUIRED_TOKENIZE("Invalid %s1 request. ColumnValues are required."), - EMPTY_OR_NULL_COLUMN_GROUP_IN_COLUMN_VALUES("Invalid %s1 request. Column group can not be null or empty in column values at index %s2."), - TOKENIZE_REQUEST_REJECTED("Tokenize request resulted in failure."), - DELETE_REQUEST_REJECTED("Delete request resulted in failure."), - - // invoke connection interface - INVOKE_CONNECTION_INVALID_CONNECTION_URL("Invalid %s1 request. Connection URL is not a valid URL."), - EMPTY_REQUEST_HEADERS("Invalid %s1 request. Request headers can not be empty."), - INVALID_REQUEST_HEADERS("Invalid %s1 request. Request header can not be null or empty in request headers."), - EMPTY_PATH_PARAMS("Invalid %s1 request. Path params can not be empty."), - INVALID_PATH_PARAM("Invalid %s1 request. Path parameter can not be null or empty in path params."), - EMPTY_QUERY_PARAMS("Invalid %s1 request. Query params can not be empty."), - INVALID_QUERY_PARAM("Invalid %s1 request. Query parameter can not be null or empty in query params."), - EMPTY_REQUEST_BODY("Invalid %s1 request. Request body can not be empty."), - INVALID_REQUEST_BODY("Invalid %s1 request. Request body can not be empty."), - INVOKE_CONNECTION_REQUEST_REJECTED("Invoke connection request resulted in failure."), - - // File upload interface - COLUMN_NAME_IS_REQUIRED_FILE_UPLOAD("Invalid %s1 request. Column name is required."), - EMPTY_COLUMN_NAME_FILE_UPLOAD("Invalid %s1 request. Column name can not be empty."), - FILE_IS_REQUIRED("Invalid %s1 request. File is required."), - EMPTY_FILE("Invalid %s1 request. File can not be empty."), - INVALID_FILE_TYPE("Invalid %s1 request. File should be of type java.io.File"), - MISSING_FILE_SOURCE_IN_UPLOAD_FILE("Invalid %s1 request. Provide exactly one of filePath, base64, or fileObject."), - UPLOAD_FILE_REQUEST_REJECTED("Upload file request resulted in failure."), - - - // detect interface - INVALID_TEXT_IN_DEIDENTIFY("Invalid %s1 request. The text field is required and must be a non-empty string. Specify a valid text."), - DEIDENTIFY_TEXT_REQUEST_REJECTED("DeIdentify text request resulted in failure."), - INVALID_TEXT_IN_REIDENTIFY("Invalid %s1 request. The text field is required and must be a non-empty string. Specify a valid text."), - REIDENTIFY_TEXT_REQUEST_REJECTED("ReIdentify text request resulted in failure."), - DEIDENTIFY_FILE_REQUEST_REJECTED("DeIdentify file request resulted in failure."), - GET_DETECT_RUN_REQUEST_REJECTED("Get detect run request resulted in failure."), - INVALID_NULL_FILE_IN_DEIDENTIFY_FILE("Invalid %s1 request. The file field is required and must not be null. Specify a valid file."), - FILE_NOT_FOUND_TO_DEIDENTIFY("Invalid %s1 request. The file field is required and must not be empty. Specify a valid file."), - FILE_NOT_READABLE_TO_DEIDENTIFY("Invalid %s1 request. The file is not readable. Please check the file permissions or path."), - INVALID_PIXEL_DENSITY_TO_DEIDENTIFY_FILE("Invalid %s1 request. Pixel density must be a positive integer greater than 0. Specify a valid pixel density."), - INVALID_MAX_RESOLUTION("Invalid %s1 request. Max resolution must be a positive integer greater than 0. Specify a valid max resolution."), - INVALID_BLEEP_TO_DEIDENTIFY_AUDIO("Invalid %s1 request. Specify a valid bleep as AudioBleep"), - OUTPUT_DIRECTORY_NOT_FOUND("Invalid %s1 request. The output directory does not exist. Please specify a valid output directory."), - INVALID_PERMISSIONS_FOR_OUTPUT_DIRECTORY("Invalid %s1 request. The output directory is not writable. Please check the permissions or specify a valid output directory."), - EMPTY_FILE_AND_FILE_PATH_IN_DEIDENTIFY_FILE("Invalid %s1 request. The file and file path fields are both empty. Specify a valid file object or file path."), - ; - - private final String log; - - ErrorLogs(String log) { - this.log = log; - } - - public final String getLog() { - return log; - } -} diff --git a/v2/src/main/java/com/skyflow/logs/InfoLogs.java b/v2/src/main/java/com/skyflow/logs/InfoLogs.java deleted file mode 100644 index e747bfa2..00000000 --- a/v2/src/main/java/com/skyflow/logs/InfoLogs.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.skyflow.logs; - -public enum InfoLogs { - // Client initialization - CLIENT_INITIALIZED("Initialized skyflow client."), - VALIDATING_VAULT_CONFIG("Validating vault config."), - VALIDATING_CONNECTION_CONFIG("Validating connection config."), - UNABLE_TO_GENERATE_SDK_METRIC("Unable to generate %s1 metric."), - VAULT_CONTROLLER_INITIALIZED("Initialized vault controller with vault ID %s1."), - DETECT_CONTROLLER_INITIALIZED("Initialized detect controller with vault ID %s1."), - CONNECTION_CONTROLLER_INITIALIZED("Initialized connection controller with connection ID %s1."), - LOGGER_SETUP_DONE("Set up logger."), - CURRENT_LOG_LEVEL("Current log level is %s1."), - - // Bearer token generation - EMPTY_BEARER_TOKEN("Bearer token is empty."), - BEARER_TOKEN_EXPIRED("Bearer token is invalid or expired."), - GET_BEARER_TOKEN_TRIGGERED("getBearerToken method triggered."), - GET_BEARER_TOKEN_SUCCESS("Bearer token generated."), - GET_SIGNED_DATA_TOKENS_TRIGGERED("getSignedDataTokens method triggered."), - GET_SIGNED_DATA_TOKEN_SUCCESS("Signed data tokens generated."), - REUSE_BEARER_TOKEN("Reusing bearer token."), - REUSE_API_KEY("Reusing api key."), - GENERATE_BEARER_TOKEN_FROM_CREDENTIALS_TRIGGERED("generateBearerTokenFromCredentials method triggered."), - GENERATE_BEARER_TOKEN_FROM_CREDENTIALS_STRING_TRIGGERED("generateBearerTokenFromCredentialString method triggered."), - GENERATE_SIGNED_TOKENS_FROM_CREDENTIALS_FILE_TRIGGERED("generateSignedTokensFromCredentialsFile method triggered."), - GENERATE_SIGNED_TOKENS_FROM_CREDENTIALS_STRING_TRIGGERED("generateSignedTokensFromCredentialsString method triggered."), - - // Insert interface - INSERT_TRIGGERED("Insert method triggered."), - VALIDATE_INSERT_REQUEST("Validating insert request."), - INSERT_REQUEST_RESOLVED("Insert request resolved."), - INSERT_SUCCESS("Data inserted."), - - // Detokenize interface - DETOKENIZE_TRIGGERED("Detokenize method triggered."), - VALIDATE_DETOKENIZE_REQUEST("Validating detokenize request."), - DETOKENIZE_REQUEST_RESOLVED("Detokenize request resolved."), - DETOKENIZE_PARTIAL_SUCCESS("Data detokenized partially."), - DETOKENIZE_SUCCESS("Data detokenized."), - - // Get interface - GET_TRIGGERED("Get method triggered."), - VALIDATE_GET_REQUEST("Validating get request."), - GET_REQUEST_RESOLVED("Get request resolved."), - GET_SUCCESS("Data revealed."), - - // Update interface - UPDATE_TRIGGERED("Update method triggered."), - VALIDATE_UPDATE_REQUEST("Validating update request."), - UPDATE_REQUEST_RESOLVED("Update request resolved."), - UPDATE_SUCCESS("Data updated."), - - // Delete interface - DELETE_TRIGGERED("Delete method triggered."), - VALIDATING_DELETE_REQUEST("Validating delete request."), - DELETE_REQUEST_RESOLVED("Delete request resolved."), - DELETE_SUCCESS("Data deleted."), - - // Query interface - QUERY_TRIGGERED("Query method triggered."), - VALIDATING_QUERY_REQUEST("Validating query request."), - QUERY_REQUEST_RESOLVED("Query request resolved."), - QUERY_SUCCESS("Query executed."), - - // Tokenize interface - TOKENIZE_TRIGGERED("Tokenize method triggered."), - VALIDATING_TOKENIZE_REQUEST("Validating tokenize request."), - TOKENIZE_REQUEST_RESOLVED("Tokenize request resolved."), - TOKENIZE_SUCCESS("Data tokenized."), - - // File upload interface - FILE_UPLOAD_TRIGGERED("File upload method triggered."), - VALIDATING_FILE_UPLOAD_REQUEST("Validating file upload request."), - FILE_UPLOAD_REQUEST_RESOLVED("File upload request resolved."), - FILE_UPLOAD_SUCCESS("File uploaded successfully."), - - // Invoke connection interface - INVOKE_CONNECTION_TRIGGERED("Invoke connection method triggered."), - VALIDATING_INVOKE_CONNECTION_REQUEST("Validating invoke connection request."), - INVOKE_CONNECTION_REQUEST_RESOLVED("Invoke connection request resolved."), - - // detect - VALIDATE_DEIDENTIFY_TEXT_REQUEST("Validating deidentify text request."), - DEIDENTIFY_TEXT_SUCCESS("Text data de-identified."), - DEIDENTIFY_TEXT_TRIGGERED("DeIdentify text method triggered."), - DEIDENTIFY_TEXT_REQUEST_RESOLVED("DeIdentify text request resolved."), - VALIDATE_REIDENTIFY_TEXT_REQUEST("Validating reidentify text request."), - REIDENTIFY_TEXT_TRIGGERED("ReIdentify text method triggered."), - REIDENTIFY_TEXT_REQUEST_RESOLVED("ReIdentify text request resolved."), - DEIDENTIFY_FILE_TRIGGERED("DeIdentify file method triggered."), - VALIDATE_DEIDENTIFY_FILE_REQUEST("Validating deidentify file request."), - DEIDENTIFY_FILE_REQUEST_RESOLVED("DeIdentify file request resolved."), - DEIDENTIFY_FILE_SUCCESS("File deidentified successfully."), - GET_DETECT_RUN_TRIGGERED("Get detect run method triggered."), - VALIDATE_GET_DETECT_RUN_REQUEST("Validating get detect run request."), - REIDENTIFY_TEXT_SUCCESS("Text data re-identified."), - - // Deprecation warnings — v2 backward compat - DEPRECATED_SKYFLOW_ID_KEY("[DEPRECATED] Response key 'skyflow_id' is deprecated and will be removed in an upcoming release. Use 'skyflowId' instead."), - DEPRECATED_SKYFLOW_ID_REQUEST_KEY("[DEPRECATED] Request data key 'skyflow_id' is deprecated and will be removed in an upcoming release. Use 'skyflowId' instead."), - DEPRECATED_DOWNLOAD_URL("[DEPRECATED] Method 'downloadURL()' is deprecated and will be removed in an upcoming release. Use 'downloadUrl()' instead."), - DEPRECATED_GET_BYOT("[DEPRECATED] Method 'getBYOT()' is deprecated and will be removed in an upcoming release. Use 'getByot()' instead."), - DEPRECATED_UPDATE_LOG_LEVEL("[DEPRECATED] Method 'updateLogLevel()' is deprecated and will be removed in an upcoming release. Use 'setLogLevel()' instead."), - DEPRECATED_CREDENTIAL_CLIENT_ID("[DEPRECATED] Credential field 'clientID' is deprecated and will be removed in an upcoming release. Use 'clientId' instead."), - DEPRECATED_CREDENTIAL_KEY_ID("[DEPRECATED] Credential field 'keyID' is deprecated and will be removed in an upcoming release. Use 'keyId' instead."), - DEPRECATED_CREDENTIAL_TOKEN_URI("[DEPRECATED] Credential field 'tokenURI' is deprecated and will be removed in an upcoming release. Use 'tokenUri' instead."); - - - - private final String log; - - InfoLogs(String log) { - this.log = log; - } - - public final String getLog() { - return log; - } -} diff --git a/v2/src/main/java/com/skyflow/vault/data/InsertResponse.java b/v2/src/main/java/com/skyflow/vault/data/InsertResponse.java index 3d311525..bc09b0c2 100644 --- a/v2/src/main/java/com/skyflow/vault/data/InsertResponse.java +++ b/v2/src/main/java/com/skyflow/vault/data/InsertResponse.java @@ -5,26 +5,8 @@ import java.util.ArrayList; import java.util.HashMap; -public class InsertResponse { - private final ArrayList> insertedFields; - private final ArrayList> errors; - +public class InsertResponse extends BaseInsertResponse { public InsertResponse(ArrayList> insertedFields, ArrayList> errors) { - this.insertedFields = insertedFields; - this.errors = errors; - } - - public ArrayList> getInsertedFields() { - return insertedFields; - } - - public ArrayList> getErrors() { - return errors; - } - - @Override - public String toString() { - Gson gson = new Gson().newBuilder().serializeNulls().create(); - return gson.toJson(this); + super(insertedFields, errors); } } diff --git a/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeData.java b/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeData.java index 0e1b6b63..0353aa6c 100644 --- a/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeData.java +++ b/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeData.java @@ -1,23 +1,23 @@ package com.skyflow.vault.tokens; import com.skyflow.enums.RedactionType; +import com.skyflow.vault.data.BaseDetokenizeData; -public class DetokenizeData { - private final String token; +public class DetokenizeData extends BaseDetokenizeData { private final RedactionType redactionType; public DetokenizeData(String token) { - this.token = token; + super(token); this.redactionType = RedactionType.DEFAULT; } public DetokenizeData(String token, RedactionType redactionType) { - this.token = token; - this.redactionType = redactionType == null ? RedactionType.DEFAULT : redactionType; + super(token); + this.redactionType = redactionType == null ? RedactionType.DEFAULT : redactionType; } public String getToken() { - return this.token; + return super.getToken(); } public RedactionType getRedactionType() { diff --git a/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeRecordResponse.java b/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeRecordResponse.java index 7d2ae73c..a16b17dd 100644 --- a/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeRecordResponse.java +++ b/v2/src/main/java/com/skyflow/vault/tokens/DetokenizeRecordResponse.java @@ -2,44 +2,29 @@ import com.skyflow.generated.rest.types.V1DetokenizeRecordResponse; +import com.skyflow.vault.data.BaseDetokenizeRecordResponse; -public class DetokenizeRecordResponse { - private final String token; - private final String value; +public class DetokenizeRecordResponse extends BaseDetokenizeRecordResponse { private final String type; - private final String error; private final String requestId; + private final String value; public DetokenizeRecordResponse(V1DetokenizeRecordResponse record) { this(record, null); } public DetokenizeRecordResponse(V1DetokenizeRecordResponse record, String requestId) { - this.token = record.getToken().orElse(null); - + super(record.getToken().orElse(null), record.getError().orElse(null)); this.value = record.getValue() .filter(val -> val != null && !val.toString().isEmpty()) .orElse(null); - this.type = record.getValueType() .map(Enum::toString) .filter(val -> !"NONE".equals(val)) .orElse(null); - this.error = record.getError().orElse(null); - this.requestId = requestId; } - - - public String getError() { - return error; - } - - public String getToken() { - return token; - } - public String getValue() { return value; } diff --git a/v2/src/test/java/com/skyflow/SkyflowTests.java b/v2/src/test/java/com/skyflow/SkyflowTests.java index f73b5bb0..07386a5b 100644 --- a/v2/src/test/java/com/skyflow/SkyflowTests.java +++ b/v2/src/test/java/com/skyflow/SkyflowTests.java @@ -103,55 +103,6 @@ public void testAddingValidVaultConfigInSkyflowClient() { } } - @Test - public void testAddingExistingVaultConfigInSkyflowClient() { - try { - VaultConfig config = new VaultConfig(); - config.setVaultId(vaultID); - config.setClusterId(clusterID); - config.setEnv(Env.SANDBOX); - Skyflow skyflowClient = Skyflow.builder().build(); - skyflowClient.addVaultConfig(config).addVaultConfig(config); - Assert.fail(EXCEPTION_NOT_THROWN); - } catch (SkyflowException e) { - Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals(ErrorMessage.VaultIdAlreadyInConfigList.getMessage(), e.getMessage()); - } - } - - @Test - public void testUpdatingNonExistentVaultConfigInSkyflowBuilder() { - try { - VaultConfig config = new VaultConfig(); - config.setVaultId(vaultID); - config.setClusterId(clusterID); - config.setEnv(Env.SANDBOX); - Skyflow.builder().updateVaultConfig(config).build(); - Assert.fail(EXCEPTION_NOT_THROWN); - } catch (SkyflowException e) { - Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); - } - } - - @Test - public void testUpdatingNonExistentVaultConfigInSkyflowClient() { - try { - VaultConfig config = new VaultConfig(); - config.setVaultId(vaultID); - config.setClusterId(clusterID); - config.setEnv(Env.SANDBOX); - Skyflow skyflowClient = Skyflow.builder().build(); - skyflowClient.updateVaultConfig(config); - Assert.fail(EXCEPTION_NOT_THROWN); - } catch (SkyflowException e) { - Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); - } catch (Exception e) { - Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); - } - } - @Test public void testUpdatingValidVaultConfigInSkyflowClient() { try { @@ -174,114 +125,6 @@ public void testUpdatingValidVaultConfigInSkyflowClient() { } } - @Test - public void testUpdateVaultConfigNullCredentialsFallsBackToPrevious() { - try { - VaultConfig config = new VaultConfig(); - config.setVaultId(vaultID); - config.setClusterId(clusterID); - config.setEnv(Env.SANDBOX); - - Credentials creds = new Credentials(); - creds.setToken(token); - config.setCredentials(creds); - - Skyflow skyflowClient = Skyflow.builder().addVaultConfig(config).build(); - - // Update with null credentials — should retain previous credentials value - VaultConfig partialUpdate = new VaultConfig(); - partialUpdate.setVaultId(vaultID); - partialUpdate.setClusterId(clusterID); - skyflowClient.updateVaultConfig(partialUpdate); - Assert.assertNotNull(skyflowClient.getVaultConfig(vaultID).getCredentials()); - } catch (SkyflowException e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testRemovingNonExistentVaultConfigInSkyflowBuilder() { - try { - Skyflow.builder().removeVaultConfig(vaultID).build(); - Assert.fail(EXCEPTION_NOT_THROWN); - } catch (SkyflowException e) { - Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); - } - } - - @Test - public void testRemovingNonExistentVaultConfigInSkyflowClient() { - try { - VaultConfig config = new VaultConfig(); - config.setVaultId(vaultID); - config.setClusterId(clusterID); - config.setEnv(Env.SANDBOX); - Skyflow skyflowClient = Skyflow.builder().addVaultConfig(config).build(); - skyflowClient.removeVaultConfig(vaultID); - } catch (SkyflowException e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testRemovingValidVaultConfigInSkyflowClient() { - try { - Skyflow skyflowClient = Skyflow.builder().build(); - skyflowClient.removeVaultConfig(vaultID); - Assert.fail(EXCEPTION_NOT_THROWN); - } catch (SkyflowException e) { - Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); - } - } - - @Test - public void testGettingNonExistentVaultConfigInSkyflowClient() { - try { - Skyflow skyflowClient = Skyflow.builder().build(); - VaultConfig config = skyflowClient.getVaultConfig(vaultID); - Assert.assertNull(config); - } catch (Exception e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testGettingAlreadyRemovedVaultFromEmptyConfigs() { - try { - Skyflow skyflowClient = Skyflow.builder().build(); - skyflowClient.vault(); - Assert.fail(EXCEPTION_NOT_THROWN); - } catch (SkyflowException e) { - Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); - } - } - - @Test - public void testGettingAlreadyRemovedVaultFromNonEmptyConfigs() { - try { - VaultConfig primaryConfig = new VaultConfig(); - primaryConfig.setVaultId(vaultID); - primaryConfig.setClusterId(clusterID); - primaryConfig.setEnv(Env.SANDBOX); - - VaultConfig secondaryConfig = new VaultConfig(); - secondaryConfig.setVaultId(vaultID + "123"); - secondaryConfig.setClusterId(clusterID); - secondaryConfig.setEnv(Env.SANDBOX); - Skyflow skyflowClient = Skyflow.builder().addVaultConfig(primaryConfig).addVaultConfig(secondaryConfig).build(); - skyflowClient.removeVaultConfig(vaultID); - skyflowClient.vault(vaultID); - Assert.fail(EXCEPTION_NOT_THROWN); - } catch (SkyflowException e) { - Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage()); - } - } - - @Test public void testAddingInvalidConnectionConfigInSkyflowBuilder() { try { @@ -461,60 +304,6 @@ public void testGettingNonExistentConnectionConfigInSkyflowClient() { } } - @Test - public void testAddingInvalidSkyflowCredentialsInSkyflowBuilder() { - try { - Credentials credentials = new Credentials(); - Skyflow.builder().addSkyflowCredentials(credentials).build(); - Assert.fail(EXCEPTION_NOT_THROWN); - } catch (SkyflowException e) { - Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals(ErrorMessage.NoTokenGenerationMeansPassed.getMessage(), e.getMessage()); - } - } - - @Test - public void testUpdatingValidSkyflowCredentialsInSkyflowClient() { - try { - VaultConfig vaultConfig = new VaultConfig(); - vaultConfig.setVaultId(vaultID); - vaultConfig.setClusterId(clusterID); - - ConnectionConfig connectionConfig = new ConnectionConfig(); - connectionConfig.setConnectionId(connectionID); - connectionConfig.setConnectionUrl(connectionURL); - - Credentials credentials = new Credentials(); - credentials.setToken(token); - Skyflow skyflowClient = Skyflow.builder().addVaultConfig(vaultConfig).addConnectionConfig(connectionConfig).build(); - skyflowClient.updateSkyflowCredentials(credentials); - } catch (SkyflowException e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testDefaultLogLevel() { - try { - Skyflow skyflowClient = Skyflow.builder().setLogLevel(null).build(); - Assert.assertEquals(LogLevel.ERROR, skyflowClient.getLogLevel()); - } catch (Exception e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testSetLogLevel() { - try { - Skyflow skyflowClient = Skyflow.builder().setLogLevel(LogLevel.INFO).build(); - Assert.assertEquals(LogLevel.INFO, skyflowClient.getLogLevel()); - skyflowClient.setLogLevel(LogLevel.WARN); - Assert.assertEquals(LogLevel.WARN, skyflowClient.getLogLevel()); - } catch (Exception e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - @Test @SuppressWarnings("deprecation") public void testUpdateLogLevel() { @@ -687,36 +476,6 @@ public void testDetectMethodWithInvalidVaultId() { } } - @Test - public void testUpdateVaultConfig_withNewClusterIdAndCredentials_updatesAllFields() { - try { - VaultConfig config = new VaultConfig(); - config.setVaultId(vaultID); - config.setClusterId(clusterID); - config.setEnv(Env.DEV); - Credentials creds = new Credentials(); - creds.setToken(token); - config.setCredentials(creds); - Skyflow skyflowClient = Skyflow.builder().addVaultConfig(config).build(); - - // Update with a new non-null clusterId and new non-null credentials — covers - // the non-null (true) branches for all three ternaries in findAndUpdateVaultConfig - Credentials newCreds = new Credentials(); - newCreds.setToken("updated-token-value"); - VaultConfig update = new VaultConfig(); - update.setVaultId(vaultID); - update.setClusterId(newClusterID); - update.setEnv(Env.PROD); - update.setCredentials(newCreds); - skyflowClient.updateVaultConfig(update); - Assert.assertEquals(newClusterID, skyflowClient.getVaultConfig(vaultID).getClusterId()); - Assert.assertEquals(Env.PROD, skyflowClient.getVaultConfig(vaultID).getEnv()); - Assert.assertEquals("updated-token-value", skyflowClient.getVaultConfig(vaultID).getCredentials().getToken()); - } catch (SkyflowException e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - @Test public void testUpdateConnectionConfig_withNewCredentials_updatesCredentials() { try { @@ -744,75 +503,6 @@ public void testUpdateConnectionConfig_withNewCredentials_updatesCredentials() { } } - @Test - public void testUpdateVaultConfig_withNullEnv_fallsBackToPreviousEnv() { - // VaultConfig's constructor defaults env=PROD so getEnv() is never null via normal API. - // Use an anonymous subclass to make getEnv() return null, exercising the false branch - // of `vaultConfig.getEnv() != null` in findAndUpdateVaultConfig. - try { - Credentials creds = new Credentials(); - creds.setToken(token); - VaultConfig initial = new VaultConfig(); - initial.setVaultId(vaultID); - initial.setClusterId(clusterID); - initial.setEnv(Env.SANDBOX); - initial.setCredentials(creds); - Skyflow skyflowClient = Skyflow.builder().addVaultConfig(initial).build(); - - VaultConfig updateWithNullEnv = new VaultConfig() { - @Override public Env getEnv() { return null; } - }; - updateWithNullEnv.setVaultId(vaultID); - updateWithNullEnv.setClusterId(clusterID); - updateWithNullEnv.setCredentials(creds); - - skyflowClient.updateVaultConfig(updateWithNullEnv); - // env falls back to previous (SANDBOX) - Assert.assertEquals(Env.SANDBOX, skyflowClient.getVaultConfig(vaultID).getEnv()); - } catch (SkyflowException e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testFindAndUpdateVaultConfig_withNullClusterId_fallsBackToPreviousClusterId() { - // Validation enforces non-null clusterId, so the false branch of - // `vaultConfig.getClusterId() != null` in findAndUpdateVaultConfig is unreachable - // via the normal flow. Call the private method directly via reflection. - try { - Credentials creds = new Credentials(); - creds.setToken(token); - VaultConfig initial = new VaultConfig(); - initial.setVaultId(vaultID); - initial.setClusterId(clusterID); - initial.setEnv(Env.DEV); - initial.setCredentials(creds); - Skyflow skyflowClient = Skyflow.builder().addVaultConfig(initial).build(); - - java.lang.reflect.Field builderField = Skyflow.class.getDeclaredField("builder"); - builderField.setAccessible(true); - Object builder = builderField.get(skyflowClient); - - VaultConfig nullClusterConfig = new VaultConfig(); - nullClusterConfig.setVaultId(vaultID); - // Override clusterId field to null via reflection (setter enforces non-null) - java.lang.reflect.Field clusterIdField = VaultConfig.class.getDeclaredField("clusterId"); - clusterIdField.setAccessible(true); - clusterIdField.set(nullClusterConfig, null); - - java.lang.reflect.Method method = builder.getClass().getDeclaredMethod( - "findAndUpdateVaultConfig", VaultConfig.class); - method.setAccessible(true); - VaultConfig result = (VaultConfig) method.invoke(builder, nullClusterConfig); - - Assert.assertEquals(clusterID, result.getClusterId()); - } catch (SkyflowException e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } catch (Exception e) { - Assert.fail("Reflection failed: " + e.getMessage()); - } - } - @Test public void testFindAndUpdateConnectionConfig_withNullConnectionUrl_fallsBackToPreviousUrl() { // `findAndUpdateConnectionConfig` has a ternary for connectionUrl that falls back diff --git a/v2/src/test/java/com/skyflow/VaultClientDotenvTests.java b/v2/src/test/java/com/skyflow/VaultClientDotenvTests.java deleted file mode 100644 index 2e71816a..00000000 --- a/v2/src/test/java/com/skyflow/VaultClientDotenvTests.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.skyflow; - -import com.skyflow.config.BaseVaultConfig; -import com.skyflow.config.Credentials; -import com.skyflow.config.VaultConfig; -import com.skyflow.enums.Env; -import com.skyflow.errors.ErrorMessage; -import com.skyflow.errors.SkyflowException; -import com.skyflow.utils.Constants; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; - -/** - * Tests for VaultClient's prioritiseCredentials dotenv path. - * - * These tests write a temporary .env file to exercise the code path where - * no VaultConfig credentials and no common credentials are set, so the code - * falls through to read from a .env file. - */ -public class VaultClientDotenvTests { - - private static final String ENV_FILE = ".env"; - private byte[] originalEnvContent; - - @Before - public void saveEnvFileState() throws IOException { - File f = new File(ENV_FILE); - originalEnvContent = f.exists() ? Files.readAllBytes(Paths.get(ENV_FILE)) : null; - } - - @After - public void restoreEnvFile() throws IOException { - if (originalEnvContent != null) { - Files.write(Paths.get(ENV_FILE), originalEnvContent); - } else { - Files.deleteIfExists(Paths.get(ENV_FILE)); - } - } - - private VaultClient buildClientWithNoCreds(String vaultId, String clusterId) { - VaultConfig config = new VaultConfig(); - config.setVaultId(vaultId); - config.setClusterId(clusterId); - config.setEnv(Env.DEV); - // No credentials set - return new VaultClient(config, null); - } - - /** - * Covers the dotenv success path: Dotenv.load() succeeds and returns a - * non-null credentials string, so finalCredentials is set via - * credentialsString. Lines ~862-870 of VaultClient.java. - */ - @Test - public void testPrioritiseCredentials_dotenvReturnsCredentials_setsCredentials() throws Exception { - // Write a .env file with a valid credentials string value - try (FileWriter fw = new FileWriter(ENV_FILE)) { - fw.write(Constants.ENV_CREDENTIALS_KEY_NAME + "={\"token\":\"env-token-value\"}\n"); - } - - VaultClient client = buildClientWithNoCreds("dotenv-vault-1", "cluster1"); - // updateVaultConfig() calls prioritiseCredentials() which reads from .env - // Should not throw since sysCredentials is non-null - client.updateVaultConfig(); - - // finalCredentials should be set with credentials string - java.lang.reflect.Field field = VaultClient.class.getDeclaredField("finalCredentials"); - field.setAccessible(true); - Credentials finalCreds = (Credentials) field.get(client); - Assert.assertNotNull(finalCreds); - Assert.assertEquals("{\"token\":\"env-token-value\"}", finalCreds.getCredentialsString()); - } - - /** - * Covers the path where dotenv loads but the key is absent (returns null), - * causing SkyflowException(EmptyCredentials) to be thrown directly. - * Lines ~864-876 of VaultClient.java. - */ - @Test - public void testPrioritiseCredentials_dotenvKeyMissing_throwsSkyflowException() throws Exception { - // Write a .env file WITHOUT the SKYFLOW_CREDENTIALS key - try (FileWriter fw = new FileWriter(ENV_FILE)) { - fw.write("SOME_OTHER_KEY=some_value\n"); - } - - VaultClient client = buildClientWithNoCreds("dotenv-vault-2", "cluster2"); - try { - client.updateVaultConfig(); - Assert.fail("Should have thrown SkyflowException"); - } catch (SkyflowException e) { - Assert.assertTrue(e.getMessage().contains(ErrorMessage.EmptyCredentials.getMessage())); - } catch (RuntimeException e) { - Assert.fail("Expected direct SkyflowException, not RuntimeException wrapping it"); - } - } -} diff --git a/v2/src/test/java/com/skyflow/VaultClientTests.java b/v2/src/test/java/com/skyflow/VaultClientTests.java index db04cae4..4c040ad0 100644 --- a/v2/src/test/java/com/skyflow/VaultClientTests.java +++ b/v2/src/test/java/com/skyflow/VaultClientTests.java @@ -1,6 +1,7 @@ package com.skyflow; import com.skyflow.config.VaultConfig; +import com.skyflow.config.BaseCredentials; import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; import com.skyflow.enums.*; @@ -900,44 +901,16 @@ public void testMapAudioDataFormat_invalid() throws Exception { } } - @Test - public void testPrioritiseCredentials_VaultConfigCredentials() throws Exception { - Credentials creds = new Credentials(); - creds.setApiKey("test_api_key"); - vaultConfig.setCredentials(creds); - - java.lang.reflect.Method method = VaultClient.class.getDeclaredMethod("prioritiseCredentials"); - method.setAccessible(true); - method.invoke(vaultClient); - - Assert.assertEquals(creds, getPrivateField(vaultClient, "finalCredentials")); - } - - @Test - public void testPrioritiseCredentials_CommonCredentials() throws Exception { - vaultConfig.setCredentials(null); - Credentials creds = new Credentials(); - creds.setApiKey("common_api_key"); - setPrivateField(vaultClient, "commonCredentials", creds); - - java.lang.reflect.Method method = VaultClient.class.getDeclaredMethod("prioritiseCredentials"); - method.setAccessible(true); - method.invoke(vaultClient); - - Assert.assertEquals(creds, getPrivateField(vaultClient, "finalCredentials")); - } - - // Helper methods for reflection field access - private Object getPrivateField(Object obj, String fieldName) throws Exception { - java.lang.reflect.Field field = obj.getClass().getDeclaredField(fieldName); - field.setAccessible(true); - return field.get(obj); - } - - private void setPrivateField(Object obj, String fieldName, Object value) throws Exception { - java.lang.reflect.Field field = obj.getClass().getDeclaredField(fieldName); - field.setAccessible(true); - field.set(obj, value); + // Fields moved to base classes (e.g. common.BaseVaultClient) aren't found by + // getDeclaredField on the subclass, so walk up the hierarchy. + private java.lang.reflect.Field findDeclaredField(Class clazz, String fieldName) throws NoSuchFieldException { + for (Class current = clazz; current != null; current = current.getSuperclass()) { + try { + return current.getDeclaredField(fieldName); + } catch (NoSuchFieldException ignored) { + } + } + throw new NoSuchFieldException(fieldName); } @Test @@ -957,31 +930,6 @@ public void testGetFileForFileUpload_withFileObject() { } } - @Test - public void testSetBearerToken_validNonExpiredToken_reusesToken() { - try { - // far-future JWT: header.payload.sig where payload base64 decodes to {"exp":9999999999} - Credentials creds = new Credentials(); - creds.setToken("x.eyJleHAiOjk5OTk5OTk5OTl9.y"); - VaultConfig config = new VaultConfig(); - config.setVaultId(vaultID); - config.setClusterId(clusterID); - config.setEnv(com.skyflow.enums.Env.DEV); - config.setCredentials(creds); - VaultClient freshClient = new VaultClient(config, null); - - // First call: token=null → generates from creds.getToken() - freshClient.setBearerToken(); - Assert.assertEquals("x.eyJleHAiOjk5OTk5OTk5OTl9.y", getPrivateField(freshClient, "token")); - - // Second call: token valid, not expired → REUSE_BEARER_TOKEN else branch - freshClient.setBearerToken(); - Assert.assertEquals("x.eyJleHAiOjk5OTk5OTk5OTl9.y", getPrivateField(freshClient, "token")); - } catch (Exception e) { - Assert.fail("Should not have thrown: " + e.getMessage()); - } - } - @Test public void testGetDeidentifyImageRequest_withMaskingMethod() { try { @@ -1043,52 +991,6 @@ public void testGetDeIdentifyTextResponse_withEntityScores() { Assert.assertEquals(0.95, result.getEntities().get(0).getScores().get("EMAIL_ADDRESS"), 0.001); } - @Test - public void testPrioritiseCredentials_credentialChange_resetsTokenAndApiKey() { - try { - Credentials credentialsA = new Credentials(); - credentialsA.setToken("x.eyJleHAiOjk5OTk5OTk5OTl9.y"); - VaultConfig config = new VaultConfig(); - config.setVaultId("isolated-vault-change"); - config.setClusterId(clusterID); - config.setEnv(com.skyflow.enums.Env.DEV); - config.setCredentials(credentialsA); - VaultClient freshClient = new VaultClient(config, null); - - freshClient.updateVaultConfig(); // sets finalCredentials = credentialsA - setPrivateField(freshClient, "token", "cached-token"); // simulate prior auth - - Credentials credentialsB = new Credentials(); - credentialsB.setToken("other-token"); - config.setCredentials(credentialsB); - - freshClient.updateVaultConfig(); // original=A, new=B → different → reset token/apiKey - Assert.assertNull(getPrivateField(freshClient, "token")); - Assert.assertNull(getPrivateField(freshClient, "apiKey")); - } catch (Exception e) { - Assert.fail("Should not have thrown: " + e.getMessage()); - } - } - - @Test - public void testSetBearerToken_noCredentials_throwsEmptyCredentials() { - VaultConfig config = new VaultConfig(); - config.setVaultId("isolated-vault-nocreds"); - config.setClusterId(clusterID); - config.setEnv(com.skyflow.enums.Env.DEV); - // No credentials — will hit dotenv path → DotenvException → SkyflowException(EmptyCredentials) - VaultClient freshClient = new VaultClient(config, null); - try { - freshClient.setBearerToken(); - Assert.fail("Should have thrown SkyflowException"); - } catch (SkyflowException e) { - // SkyflowException expected — message varies by environment - // (EmptyCredentials when no .env, or credential error when .env provides creds) - } catch (Exception e) { - Assert.fail("Expected SkyflowException, got: " + e.getClass().getName() + ": " + e.getMessage()); - } - } - @Test public void testUpdateExecutorInHTTP_interceptorAddsAuthorizationHeader() { try { @@ -1104,7 +1006,7 @@ public void testUpdateExecutorInHTTP_interceptorAddsAuthorizationHeader() { freshClient.setBearerToken(); // triggers updateExecutorInHTTP → creates sharedHttpClient with interceptor // Access sharedHttpClient via reflection - java.lang.reflect.Field field = VaultClient.class.getDeclaredField("sharedHttpClient"); + java.lang.reflect.Field field = findDeclaredField(VaultClient.class, "sharedHttpClient"); field.setAccessible(true); OkHttpClient httpClient = (OkHttpClient) field.get(freshClient); Assert.assertNotNull(httpClient); diff --git a/v2/src/test/java/com/skyflow/config/VaultConfigTests.java b/v2/src/test/java/com/skyflow/config/VaultConfigTests.java index 31305c0c..b99f6c9b 100644 --- a/v2/src/test/java/com/skyflow/config/VaultConfigTests.java +++ b/v2/src/test/java/com/skyflow/config/VaultConfigTests.java @@ -30,7 +30,7 @@ public static void setup() { @Test public void testValidVaultConfigWithCredentialsInValidations() { try { - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.SANDBOX); @@ -49,7 +49,7 @@ public void testValidVaultConfigWithCredentialsInValidations() { @Test public void testValidVaultConfigWithoutCredentialsInValidations() { try { - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.SANDBOX); @@ -67,7 +67,7 @@ public void testValidVaultConfigWithoutCredentialsInValidations() { @Test public void testDefaultEnvInVaultConfigWithCredentialsInValidations() { try { - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setCredentials(credentials); @@ -85,7 +85,7 @@ public void testDefaultEnvInVaultConfigWithCredentialsInValidations() { @Test public void testDefaultEnvInVaultConfigWithoutCredentialsInValidations() { try { - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(null); @@ -102,7 +102,7 @@ public void testDefaultEnvInVaultConfigWithoutCredentialsInValidations() { @Test public void testNoVaultIdInVaultConfigInValidations() { - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); try { vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.SANDBOX); @@ -117,7 +117,7 @@ public void testNoVaultIdInVaultConfigInValidations() { @Test public void testEmptyVaultIdInVaultConfigInValidations() { try { - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(""); vaultConfig.setClusterId(clusterID); vaultConfig.setEnv(Env.SANDBOX); @@ -132,7 +132,7 @@ public void testEmptyVaultIdInVaultConfigInValidations() { @Test public void testNoClusterIdInVaultConfigInValidations() { try { - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setEnv(Env.SANDBOX); Validations.validateVaultConfig(vaultConfig); @@ -146,7 +146,7 @@ public void testNoClusterIdInVaultConfigInValidations() { @Test public void testEmptyClusterIdInVaultConfigInValidations() { try { - BaseVaultConfig vaultConfig = new BaseVaultConfig(); + VaultConfig vaultConfig = new VaultConfig(); vaultConfig.setVaultId(vaultID); vaultConfig.setClusterId(""); vaultConfig.setEnv(Env.SANDBOX); diff --git a/v2/src/test/java/com/skyflow/utils/UtilsTests.java b/v2/src/test/java/com/skyflow/utils/UtilsTests.java index 4e910e15..d1e1c725 100644 --- a/v2/src/test/java/com/skyflow/utils/UtilsTests.java +++ b/v2/src/test/java/com/skyflow/utils/UtilsTests.java @@ -2,31 +2,17 @@ import com.google.gson.JsonObject; import com.skyflow.config.ConnectionConfig; -import com.skyflow.config.Credentials; -import com.skyflow.enums.Env; import com.skyflow.enums.RequestMethod; -import com.skyflow.errors.ErrorCode; -import com.skyflow.errors.ErrorMessage; -import com.skyflow.errors.SkyflowException; import com.skyflow.vault.connection.InvokeConnectionRequest; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; -import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class UtilsTests { private static final String INVALID_EXCEPTION_THROWN = "Should not have thrown any exception"; - private static final String EXCEPTION_NOT_THROWN = "Should have thrown an exception"; - private static String clusterId = null; - private static String url = null; - private static String filePath = null; - private static String credentialsString = null; - private static String token = null; - private static String context = null; - private static ArrayList roles = null; private static String connectionId = null; private static String connectionUrl = null; private static Map queryParams; @@ -35,15 +21,6 @@ public class UtilsTests { @BeforeClass public static void setup() { - clusterId = "test_cluster_id"; - url = "https://test-url.com/java/unit/tests"; - filePath = "invalid/file/path/credentials.json"; - credentialsString = "invalid credentials string"; - token = "invalid-token"; - context = "test_context"; - roles = new ArrayList<>(); - String role = "test_role"; - roles.add(role); connectionId = "test_connection_id"; connectionUrl = "https://test.connection.url"; pathParams = new HashMap<>(); @@ -51,108 +28,6 @@ public static void setup() { requestHeaders = new HashMap<>(); } - @Test - public void testGetVaultURLForDev() { - try { - String vaultURL = Utils.getVaultURL(clusterId, Env.DEV); - String devUrl = "https://test_cluster_id.vault.skyflowapis.dev"; - Assert.assertEquals(devUrl, vaultURL); - } catch (Exception e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testGetVaultURLForStage() { - try { - String vaultURL = Utils.getVaultURL(clusterId, Env.STAGE); - String stageUrl = "https://test_cluster_id.vault.skyflowapis.tech"; - Assert.assertEquals(stageUrl, vaultURL); - } catch (Exception e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testGetVaultURLForSandbox() { - try { - String vaultURL = Utils.getVaultURL(clusterId, Env.SANDBOX); - String sandboxUrl = "https://test_cluster_id.vault.skyflowapis-preview.com"; - Assert.assertEquals(sandboxUrl, vaultURL); - } catch (Exception e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testGetVaultURLForProd() { - try { - String vaultURL = Utils.getVaultURL(clusterId, Env.PROD); - String prodUrl = "https://test_cluster_id.vault.skyflowapis.com"; - Assert.assertEquals(prodUrl, vaultURL); - } catch (Exception e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testGetBaseURL() { - try { - String baseURL = Utils.getBaseURL(url); - String url = "https://test-url.com"; - Assert.assertEquals(url, baseURL); - } catch (Exception e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - - @Test - public void testGenerateBearerTokenWithCredentialsFile() { - try { - Credentials credentials = new Credentials(); - credentials.setPath(filePath); - credentials.setContext(context); - credentials.setRoles(roles); - Utils.generateBearerToken(credentials); - Assert.fail(EXCEPTION_NOT_THROWN); - } catch (SkyflowException e) { - Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals( - Utils.parameterizedString(ErrorMessage.FileNotFound.getMessage(), filePath), - e.getMessage() - ); - } - } - - @Test - public void testGenerateBearerTokenWithCredentialsString() { - try { - Credentials credentials = new Credentials(); - credentials.setCredentialsString(credentialsString); - credentials.setContext(context); - credentials.setRoles(roles); - Utils.generateBearerToken(credentials); - Assert.fail(EXCEPTION_NOT_THROWN); - } catch (SkyflowException e) { - Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); - Assert.assertEquals(ErrorMessage.CredentialsStringInvalidJson.getMessage(), e.getMessage()); - } - } - - @Test - public void testGenerateBearerTokenWithToken() { - try { - Credentials credentials = new Credentials(); - credentials.setToken(token); - credentials.setContext(context); - credentials.setRoles(roles); - String bearerToken = Utils.generateBearerToken(credentials); - Assert.assertEquals(token, bearerToken); - } catch (SkyflowException e) { - Assert.fail(INVALID_EXCEPTION_THROWN); - } - } - @Test public void testConstructConnectionURL() { try { From 4c2b3a733bb74bd1dd31040fed8270439e3ce805 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Thu, 16 Jul 2026 16:20:40 +0530 Subject: [PATCH 08/26] SK-2967 update the internal release --- .github/workflows/internal-release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/internal-release.yml b/.github/workflows/internal-release.yml index e8b8ee61..6881618b 100644 --- a/.github/workflows/internal-release.yml +++ b/.github/workflows/internal-release.yml @@ -16,6 +16,7 @@ jobs: server-id: central profile: jfrog tag: 'internal' + module: 'v2' secrets: server-username: ${{ secrets.ARTIFACTORY_USERNAME }} server-password: ${{ secrets.ARTIFACTORY_PASSWORD }} From 80e18fdbf5cb8ff2a984158ce86fe2bb5f700845 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Thu, 16 Jul 2026 16:32:36 +0530 Subject: [PATCH 09/26] SK-2967 update script version --- .github/workflows/shared-build-and-deploy.yml | 12 +++++++-- scripts/bump_version.sh | 27 ++++++++++--------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/.github/workflows/shared-build-and-deploy.yml b/.github/workflows/shared-build-and-deploy.yml index 9d885190..cc771fe9 100644 --- a/.github/workflows/shared-build-and-deploy.yml +++ b/.github/workflows/shared-build-and-deploy.yml @@ -89,14 +89,22 @@ jobs: fallback: 1.0.0 - name: Bump Version + id: bump-version run: | chmod +x ./scripts/bump_version.sh if ${{ inputs.tag == 'internal' }}; then - ./scripts/bump_version.sh "${{ steps.previoustag.outputs.tag }}" "$(git rev-parse --short "$GITHUB_SHA")" + ./scripts/bump_version.sh "${{ steps.previoustag.outputs.tag }}" "$(git rev-parse --short "$GITHUB_SHA")" "${{ inputs.module }}" else ./scripts/bump_version.sh "${{ steps.previoustag.outputs.tag }}" "" "${{ inputs.module }}" fi + MODULE="${{ inputs.module }}" + if [ -n "$MODULE" ]; then + echo "pom_path=$MODULE/pom.xml" >> "$GITHUB_OUTPUT" + else + echo "pom_path=pom.xml" >> "$GITHUB_OUTPUT" + fi + - name: Commit changes run: | git config user.name ${{ github.actor }} @@ -106,7 +114,7 @@ jobs: git checkout ${{ env.branch_name }} fi - git add flowvault/pom.xml + git add ${{ steps.bump-version.outputs.pom_path }} if [[ "${{ inputs.tag }}" == "internal" ]]; then git commit -m "[AUTOMATED] Private Release ${{ steps.previoustag.outputs.tag }}-dev-$(git rev-parse --short $GITHUB_SHA)" git push origin ${{ github.ref_name }} -f diff --git a/scripts/bump_version.sh b/scripts/bump_version.sh index d729ea63..ccb538ba 100755 --- a/scripts/bump_version.sh +++ b/scripts/bump_version.sh @@ -1,7 +1,8 @@ # Input Arguments Version=$1 CommitHash=$2 -PomFile="$GITHUB_WORKSPACE/pom.xml" +Module=$3 +PomFile="$GITHUB_WORKSPACE/$Module/pom.xml" if [ -z "$Version" ]; then echo "Error: Version argument is required." @@ -14,27 +15,29 @@ if [ -z "$CommitHash" ]; then awk -v version="$Version" ' BEGIN { updated = 0 } + //,/<\/parent>/ { print; next } // && updated == 0 { sub(/.*<\/version>/, "" version "") updated = 1 } { print } - ' "$PomFile" > tempfile && cat tempfile > "$PomFile" && rm -f tempfile + ' "$PomFile" > tempfile && cat tempfile > "$PomFile" && rm -f tempfile echo "--------------------------" echo "Done. Main project version now at $Version" else echo "Bumping main project version to $Version-dev-$CommitHash" - awk -v version="$Version-dev.$CommitHash" ' - BEGIN { updated = 0 } - // && updated == 0 { - sub(/.*<\/version>/, "" version "") - updated = 1 - } - { print } - ' "$PomFile" > tempfile && cat tempfile > "$PomFile" && rm -f tempfile + awk -v version="$Version${CommitHash:+-dev.$CommitHash}" ' + BEGIN { updated = 0 } + //,/<\/parent>/ { print; next } + // && updated == 0 { + sub(/.*<\/version>/, "" version "") + updated = 1 + } + { print } + ' "$PomFile" > tempfile && cat tempfile > "$PomFile" && rm -f tempfile - echo "--------------------------" - echo "Done. Main project version now at $Version-dev.$CommitHash" +echo "--------------------------" +echo "Done. $Module module version now at $Version${CommitHash:+-dev.$CommitHash}" fi From a7cda5c5a6384469d4aa28100ea797d6acf5ebbb Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Thu, 16 Jul 2026 11:03:48 +0000 Subject: [PATCH 10/26] [AUTOMATED] Private Release 1.15.1-dev-f6a6992 --- v2/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v2/pom.xml b/v2/pom.xml index b35a9552..e988579b 100644 --- a/v2/pom.xml +++ b/v2/pom.xml @@ -11,7 +11,7 @@ skyflow-java - 2.1.1 + 1.15.1-dev.f6a6992 com.skyflow @@ -48,4 +48,4 @@
- \ No newline at end of file + From 678704e2155bd571cad115f29cc386d39ac38320 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Thu, 16 Jul 2026 19:14:26 +0530 Subject: [PATCH 11/26] SK-2967 update internal release workflow --- .github/workflows/internal-release.yml | 4 +-- .github/workflows/shared-build-and-deploy.yml | 28 +++++++------------ 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/.github/workflows/internal-release.yml b/.github/workflows/internal-release.yml index 6881618b..70a33281 100644 --- a/.github/workflows/internal-release.yml +++ b/.github/workflows/internal-release.yml @@ -1,4 +1,4 @@ -name: Publish package to the JFROG Artifactory +name: Publish v2 module to the JFROG Artifactory on: push: tags-ignore: @@ -9,7 +9,7 @@ on: - release/* jobs: - build-and-deploy: + build-and-deploy-v2: uses: ./.github/workflows/shared-build-and-deploy.yml with: ref: ${{ github.ref_name }} diff --git a/.github/workflows/shared-build-and-deploy.yml b/.github/workflows/shared-build-and-deploy.yml index cc771fe9..77615306 100644 --- a/.github/workflows/shared-build-and-deploy.yml +++ b/.github/workflows/shared-build-and-deploy.yml @@ -59,19 +59,19 @@ jobs: fetch-depth: 0 - name: Set up maven or jfrog repository - uses: actions/setup-java@v4 + uses: actions/setup-java@v1 with: java-version: "11" distribution: "adopt" server-id: ${{ inputs.server-id }} - server-username: ${{ secrets.server-username }} - server-password: ${{ secrets.server-password }} + server-username: SERVER_USERNAME + server-password: SERVER_PASSWORD gpg-private-key: ${{ secrets.gpg-key }} # Value of the GPG private key to import - gpg-passphrase: ${{ secrets.gpg-passphrase }} # env variable for GPG private key passphrase - + gpg-passphrase: GPG_PASSPHRASE # env variable for GPG private key passphrase + - name: Resolve Branch for the Tagged Commit id: resolve-branch - if: ${{ inputs.tag == 'beta' || inputs.tag == 'public' }} + if: ${{ inputs.tag == 'beta' || inputs.tag == 'public' }} run: | TAG_COMMIT=$(git rev-list -n 1 ${{ github.ref_name }}) BRANCH_NAME=$(git branch -r --contains $TAG_COMMIT | grep -o 'origin/.*' | sed 's|origin/||' | head -n 1) @@ -89,7 +89,6 @@ jobs: fallback: 1.0.0 - name: Bump Version - id: bump-version run: | chmod +x ./scripts/bump_version.sh if ${{ inputs.tag == 'internal' }}; then @@ -98,13 +97,6 @@ jobs: ./scripts/bump_version.sh "${{ steps.previoustag.outputs.tag }}" "" "${{ inputs.module }}" fi - MODULE="${{ inputs.module }}" - if [ -n "$MODULE" ]; then - echo "pom_path=$MODULE/pom.xml" >> "$GITHUB_OUTPUT" - else - echo "pom_path=pom.xml" >> "$GITHUB_OUTPUT" - fi - - name: Commit changes run: | git config user.name ${{ github.actor }} @@ -114,7 +106,7 @@ jobs: git checkout ${{ env.branch_name }} fi - git add ${{ steps.bump-version.outputs.pom_path }} + git add ${{ inputs.module }}/pom.xml if [[ "${{ inputs.tag }}" == "internal" ]]; then git commit -m "[AUTOMATED] Private Release ${{ steps.previoustag.outputs.tag }}-dev-$(git rev-parse --short $GITHUB_SHA)" git push origin ${{ github.ref_name }} -f @@ -142,12 +134,12 @@ jobs: - name: Publish package run: | if [[ "${{ inputs.tag }}" == "internal" ]]; then - mvn --batch-mode -pl ${{ inputs.module }} -am deploy -P jfrog -DskipTests + mvn --batch-mode -pl ${{ inputs.module }} -am deploy -P jfrog -DskipTests elif [[ "${{ inputs.tag }}" == "beta" || "${{ inputs.tag }}" == "public" ]]; then - mvn --batch-mode -pl ${{ inputs.module }} -am deploy -P ${{ inputs.profile }} -DskipTests + mvn --batch-mode -pl ${{ inputs.module }} -am deploy -P ${{ inputs.profile }} fi env: SERVER_USERNAME: ${{ secrets.server-username }} SERVER_PASSWORD: ${{ secrets.server-password }} - GPG_PASSPHRASE: ${{ secrets.gpg-passphrase }} + GPG_PASSPHRASE: ${{ secrets.gpg-passphrase }} \ No newline at end of file From e14faed5e37c7112ece55c73ec25564544351094 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Thu, 16 Jul 2026 13:47:20 +0000 Subject: [PATCH 12/26] [AUTOMATED] Private Release 1.15.1-dev-807824c --- v2/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/pom.xml b/v2/pom.xml index e988579b..01370ded 100644 --- a/v2/pom.xml +++ b/v2/pom.xml @@ -11,7 +11,7 @@ skyflow-java - 1.15.1-dev.f6a6992 + 1.15.1-dev.807824c com.skyflow From ca1cfb4781d5fcbe62f016367ab40b4eb7adf52f Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 17 Jul 2026 17:49:42 +0530 Subject: [PATCH 13/26] SK-2967 add interfaces --- .../main/java/com/skyflow/BaseSkyflow.java | 2 +- .../main/java/com/skyflow/logs/ErrorLogs.java | 1 + .../java/com/skyflow/logs/WarningLogs.java | 6 +- .../serviceaccount/util/BearerToken.java | 4 +- .../main/java/com/skyflow/utils/Utils.java | 100 ++- .../utils/validations/Validations.java | 89 ++- .../vault/controller/VaultController.java | 58 +- .../vault/data/DeleteTokensRequest.java | 34 + .../vault/data/DeleteTokensResponse.java | 22 + .../com/skyflow/vault/data/TokenizeData.java | 36 + .../skyflow/vault/data/TokenizeRecord.java | 44 ++ .../skyflow/vault/data/TokenizeRequest.java | 30 + .../skyflow/vault/data/TokenizeResponse.java | 22 + .../test/java/com/skyflow/SkyflowTests.java | 168 ++++ .../java/com/skyflow/VaultClientTests.java | 130 ++++ .../com/skyflow/config/VaultConfigTests.java | 94 +++ .../java/com/skyflow/utils/UtilsTests.java | 568 ++++++++++++++ .../utils/validations/ValidationsTests.java | 732 ++++++++++++++++++ .../controller/VaultControllerTests.java | 445 +++++++++++ .../vault/tokens/TokenizeResponse.java | 8 +- 20 files changed, 2571 insertions(+), 22 deletions(-) create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/TokenizeData.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/TokenizeRecord.java create mode 100644 flowvault/src/test/java/com/skyflow/SkyflowTests.java create mode 100644 flowvault/src/test/java/com/skyflow/VaultClientTests.java create mode 100644 flowvault/src/test/java/com/skyflow/config/VaultConfigTests.java create mode 100644 flowvault/src/test/java/com/skyflow/utils/UtilsTests.java create mode 100644 flowvault/src/test/java/com/skyflow/utils/validations/ValidationsTests.java create mode 100644 flowvault/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java diff --git a/common/src/main/java/com/skyflow/BaseSkyflow.java b/common/src/main/java/com/skyflow/BaseSkyflow.java index 2daff37b..7e7554ff 100644 --- a/common/src/main/java/com/skyflow/BaseSkyflow.java +++ b/common/src/main/java/com/skyflow/BaseSkyflow.java @@ -16,7 +16,7 @@ import java.util.Map; -abstract class BaseSkyflow implements ISkyflow { +abstract class BaseSkyflow implements ISkyflow { protected final BaseSkyflowClientBuilder builder; protected BaseSkyflow(BaseSkyflowClientBuilder builder) { diff --git a/common/src/main/java/com/skyflow/logs/ErrorLogs.java b/common/src/main/java/com/skyflow/logs/ErrorLogs.java index 0028a5c6..b77eee2c 100644 --- a/common/src/main/java/com/skyflow/logs/ErrorLogs.java +++ b/common/src/main/java/com/skyflow/logs/ErrorLogs.java @@ -127,6 +127,7 @@ public enum ErrorLogs { EMPTY_DELETE_TOKENS_DATA("Invalid %s1 request. Delete tokens data can not be empty."), EMPTY_OR_NULL_TOKEN_IN_DELETE_TOKENS_DATA("Invalid %s1 request. Token can not be null or empty in delete tokens data at index %s2."), DELETE_TOKENS_SIZE_EXCEED("Maximum number of tokens exceeded. The limit is 10000."), + DELETE_TOKENS_REQUEST_REJECTED("DeleteTokens request resulted in failure."), // invoke connection interface INVOKE_CONNECTION_INVALID_CONNECTION_URL("Invalid %s1 request. Connection URL is not a valid URL."), diff --git a/common/src/main/java/com/skyflow/logs/WarningLogs.java b/common/src/main/java/com/skyflow/logs/WarningLogs.java index 5f80a728..1eb1bcd8 100644 --- a/common/src/main/java/com/skyflow/logs/WarningLogs.java +++ b/common/src/main/java/com/skyflow/logs/WarningLogs.java @@ -4,7 +4,11 @@ public enum WarningLogs { INVALID_BATCH_SIZE_PROVIDED("Invalid value for batch size provided, switching to default value."), INVALID_CONCURRENCY_LIMIT_PROVIDED("Invalid value for concurrency limit provided, switching to default value."), BATCH_SIZE_EXCEEDS_MAX_LIMIT("Provided batch size exceeds the maximum limit, switching to max limit."), - CONCURRENCY_EXCEEDS_MAX_LIMIT("Provided concurrency limit exceeds the maximum limit, switching to max limit.") + CONCURRENCY_EXCEEDS_MAX_LIMIT("Provided concurrency limit exceeds the maximum limit, switching to max limit."), + EMPTY_DELETE_TOKENS_RESPONSE("DeleteTokens response did not include any token results."), + INCOMPLETE_DELETE_TOKENS_RESPONSE("DeleteTokens response did not account for all requested tokens."), + EMPTY_TOKENIZE_RESPONSE("Tokenize response did not include any record results."), + INCOMPLETE_TOKENIZE_RESPONSE("Tokenize response did not account for all requested records.") ; private final String log; diff --git a/common/src/main/java/com/skyflow/serviceaccount/util/BearerToken.java b/common/src/main/java/com/skyflow/serviceaccount/util/BearerToken.java index 317847e5..60c07f6d 100644 --- a/common/src/main/java/com/skyflow/serviceaccount/util/BearerToken.java +++ b/common/src/main/java/com/skyflow/serviceaccount/util/BearerToken.java @@ -65,7 +65,7 @@ private static V1GetAuthTokenResponse generateBearerTokenFromCredentials( } finally { try { reader.close(); } catch (IOException ignored) {} } - } catch (JsonSyntaxException e) { + } catch (JsonSyntaxException | IllegalStateException e) { LogUtil.printErrorLog(ErrorLogs.INVALID_CREDENTIALS_FILE_FORMAT.getLog()); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), BaseUtils.parameterizedString( ErrorMessage.FileInvalidJson.getMessage(), credentialsFile.getPath())); @@ -87,7 +87,7 @@ private static V1GetAuthTokenResponse generateBearerTokenFromCredentialString( } JsonObject serviceAccountCredentials = JsonParser.parseString(credentials).getAsJsonObject(); return getBearerTokenFromCredentials(serviceAccountCredentials, context, roles); - } catch (JsonSyntaxException e) { + } catch (JsonSyntaxException | IllegalStateException e) { LogUtil.printErrorLog(ErrorLogs.INVALID_CREDENTIALS_STRING_FORMAT.getLog()); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.CredentialsStringInvalidJson.getMessage()); diff --git a/flowvault/src/main/java/com/skyflow/utils/Utils.java b/flowvault/src/main/java/com/skyflow/utils/Utils.java index 670aa05b..cb69453f 100644 --- a/flowvault/src/main/java/com/skyflow/utils/Utils.java +++ b/flowvault/src/main/java/com/skyflow/utils/Utils.java @@ -14,6 +14,7 @@ import com.skyflow.generated.rest.types.*; import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; +import com.skyflow.logs.WarningLogs; import com.skyflow.serviceaccount.util.BearerToken; import com.skyflow.serviceaccount.util.Token; import com.skyflow.utils.logger.LogUtil; @@ -165,7 +166,7 @@ public static InsertResponse buildInsertResponse(V1InsertResponse res) { ArrayList> insertedFields = new ArrayList<>(); ArrayList> errors = new ArrayList<>(); - if (res.getRecords().isPresent()) { + if (res != null && res.getRecords().isPresent()) { for (V1RecordResponseObject record : res.getRecords().get()) { if (record.getError().isPresent()) { HashMap errorRecord = new HashMap<>(); @@ -215,7 +216,7 @@ public static DetokenizeResponse buildDetokenizeResponse(V1FlowDetokenizeRespons ArrayList detokenizedFields = new ArrayList<>(); ArrayList errors = new ArrayList<>(); - if (res.getResponse().isPresent()) { + if (res != null && res.getResponse().isPresent()) { for (V1FlowDetokenizeResponseObject record : res.getResponse().get()) { String token = record.getToken().orElse(null); String tokenGroupName = record.getTokenGroupName().orElse(null); @@ -230,4 +231,99 @@ public static DetokenizeResponse buildDetokenizeResponse(V1FlowDetokenizeRespons } return new DetokenizeResponse(detokenizedFields, errors); } + + public static com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest getDeleteTokensRequestBody(DeleteTokensRequest request, String vaultid) { + return com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest.builder() + .vaultId(vaultid) + .tokens(request.getTokens()) + .build(); + } + private static String extractRequestId(Map> headers) { + if (headers == null) return null; + List ids = headers.get(BaseConstants.REQUEST_ID_HEADER_KEY); + return (ids == null || ids.isEmpty()) ? null : ids.get(0); + } + + public static DeleteTokensResponse buildDeleteTokensResponse(V1FlowDeleteTokenResponse res, Map> headers, int requestedTokenCount) { + ArrayList deletedTokens = new ArrayList<>(); + ArrayList> errors = new ArrayList<>(); + String requestId = extractRequestId(headers); + if (res != null && res.getTokens().isPresent()) { + for (V1DeleteTokenResponseObject record : res.getTokens().get()) { + if (record.getError().isPresent()) { + HashMap errorRecord = new HashMap<>(); + errorRecord.put("error", record.getError().get()); + record.getHttpCode().ifPresent(httpCode -> errorRecord.put("httpCode", httpCode)); + errorRecord.put("requestId", requestId); + errors.add(errorRecord); + } else { + record.getValue().ifPresent(deletedTokens::add); + } + } + if (deletedTokens.size() + errors.size() != requestedTokenCount) { + LogUtil.printWarningLog(WarningLogs.INCOMPLETE_DELETE_TOKENS_RESPONSE.getLog()); + } + } else { + LogUtil.printWarningLog(WarningLogs.EMPTY_DELETE_TOKENS_RESPONSE.getLog()); + } + return new DeleteTokensResponse(deletedTokens, errors); + } + + public static com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest getTokenizeRequestBody(TokenizeRequest request, String vaultid) { + List dataList = new ArrayList<>(); + for (TokenizeRecord record : request.getData()) { + V1FlowTokenizeRequestObject obj = V1FlowTokenizeRequestObject.builder() + .value(record.getValue()) + .tokenGroupNames(record.getTokenGroupNames()) + .build(); + dataList.add(obj); + } + return com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest.builder() + .vaultId(vaultid) + .data(dataList) + .build(); + } + + public static TokenizeResponse buildTokenizeResponse(V1FlowTokenizeResponse res, Map> headers, int requestedRecordCount) { + List tokenizedData = new ArrayList<>(); + ArrayList> errors = new ArrayList<>(); + String requestId = extractRequestId(headers); + if (res != null && res.getResponse().isPresent()) { + List records = res.getResponse().get(); + int indexNumber = 0; + for (V1FlowTokenizeResponseObject record : records) { + Object value = record.getValue().orElse(null); + TokenizeData tokenizeData = new TokenizeData(value, indexNumber); + boolean hasAnySuccess = false; + if (record.getTokens().isPresent()) { + for (FlowTokenizeResponseObjectToken tokenObj : record.getTokens().get()) { + if (tokenObj.getError().isPresent()) { + HashMap errorRecord = new HashMap<>(); + errorRecord.put("error", tokenObj.getError().get()); + tokenObj.getHttpCode().ifPresent(httpCode -> errorRecord.put("httpCode", httpCode)); + tokenObj.getTokenGroupName().ifPresent(name -> errorRecord.put("tokenGroupName", name)); + errorRecord.put("index", indexNumber); + errorRecord.put("requestId", requestId); + errors.add(errorRecord); + } else if (tokenObj.getTokenGroupName().isPresent() && tokenObj.getToken().isPresent()) { + tokenizeData.addToken(tokenObj.getTokenGroupName().get(), tokenObj.getToken().get()); + hasAnySuccess = true; + } + } + } + if (hasAnySuccess) { + tokenizedData.add(tokenizeData); + } + indexNumber++; + } + if (indexNumber != requestedRecordCount) { + LogUtil.printWarningLog(WarningLogs.INCOMPLETE_TOKENIZE_RESPONSE.getLog()); + } + } else { + LogUtil.printWarningLog(WarningLogs.EMPTY_TOKENIZE_RESPONSE.getLog()); + } + TokenizeResponse tokenizeResponse = new TokenizeResponse(errors); + tokenizeResponse.setTokenizedData(tokenizedData); + return tokenizeResponse; + } } diff --git a/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java b/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java index c94fe05b..98dfdf64 100644 --- a/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java +++ b/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java @@ -165,10 +165,7 @@ public static void validateInsertRequest(InsertRequest insertRequest) throws Sky )); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRecords.getMessage()); } -// else if (records.size() > 10000) { -// LogUtil.printErrorLog(ErrorLogs.RECORD_SIZE_EXCEED.getLog()); -// throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.RecordSizeExceedError.getMessage()); -// } + for (InsertRecord record : records) { if(record == null){ LogUtil.printErrorLog(Utils.parameterizedString( @@ -273,13 +270,10 @@ public static void validateDetokenizeRequest(DetokenizeRequest request) throws S )); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyDetokenizeData.getMessage()); } -// if (tokens.size() > 10000) { -// LogUtil.printErrorLog(ErrorLogs.TOKENS_SIZE_EXCEED.getLog()); -// throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.TokensSizeExceedError.getMessage()); -// } + for (int index = 0; index < tokens.size(); index++) { DetokenizeData token = tokens.get(index); - if (token != null && token.getToken().isEmpty() && token.getToken().trim().isEmpty()) { + if (token == null || token.getToken() == null || token.getToken().trim().isEmpty()) { LogUtil.printErrorLog(Utils.parameterizedString( ErrorLogs.EMPTY_OR_NULL_TOKEN_IN_DETOKENIZE_DATA.getLog(), InterfaceName.DETOKENIZE.getName(), @@ -307,7 +301,84 @@ public static void validateDetokenizeRequest(DetokenizeRequest request) throws S } } } + } + public static void validateDeleteTokensRequest(DeleteTokensRequest request) throws SkyflowException { + if (request == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.DELETE_TOKENS_REQUEST_NULL.getLog(), InterfaceName.DELETE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.DeleteTokensRequestNull.getMessage()); + } + List tokens = request.getTokens(); + if (tokens == null || tokens.isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_DELETE_TOKENS_DATA.getLog(), InterfaceName.DELETE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyDeleteTokensData.getMessage()); + } + + for (int index = 0; index < tokens.size(); index++) { + String token = tokens.get(index); + if (token == null || token.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_TOKEN_IN_DELETE_TOKENS_DATA.getLog(), + InterfaceName.DELETE.getName(), + String.valueOf(index))); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyTokenInDeleteTokensData.getMessage()); + } + } + } + + public static void validateTokenizeRequest(TokenizeRequest request) throws SkyflowException { + if (request == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.TOKENIZE_REQUEST_NULL.getLog(), InterfaceName.TOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.TokenizeRequestNull.getMessage()); + } + ArrayList data = request.getData(); + if (data == null || data.isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_TOKENIZE_DATA.getLog(), InterfaceName.TOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyTokenizeData.getMessage()); + } + for (int index = 0; index < data.size(); index++) { + TokenizeRecord record = data.get(index); + if (record == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.TOKENIZE_RECORD_NULL.getLog(), InterfaceName.TOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.TokenizeRecordNull.getMessage()); + } + Object value = record.getValue(); + boolean isInvalidValue = value == null || (value instanceof String && ((String) value).trim().isEmpty()); + if (isInvalidValue) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_VALUE_IN_TOKENIZE_RECORD.getLog(), InterfaceName.TOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyValueInTokenizeRecord.getMessage()); + } + List tokenGroupNames = record.getTokenGroupNames(); + if (tokenGroupNames == null || tokenGroupNames.isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_TOKEN_GROUP_NAMES_IN_TOKENIZE_RECORD.getLog(), InterfaceName.TOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyTokenGroupNamesInTokenizeRecord.getMessage()); + } + for (int groupIndex = 0; groupIndex < tokenGroupNames.size(); groupIndex++) { + String groupName = tokenGroupNames.get(groupIndex); + if (groupName == null || groupName.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_TOKEN_GROUP_NAME_IN_TOKENIZE_RECORD.getLog(), + InterfaceName.TOKENIZE.getName(), + String.valueOf(groupIndex))); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyTokenGroupNameInTokenizeRecord.getMessage()); + } + } + } + } } diff --git a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java index 24ba2b3f..28c29839 100644 --- a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java +++ b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java @@ -8,8 +8,12 @@ import com.skyflow.config.VaultConfig; import com.skyflow.errors.SkyflowException; import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.resources.flowservice.requests.V1InsertRequest; +import com.skyflow.generated.rest.types.V1FlowDeleteTokenResponse; +import com.skyflow.generated.rest.types.V1FlowTokenizeResponse; import com.skyflow.generated.rest.types.V1InsertResponse; import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; @@ -49,6 +53,9 @@ public InsertResponse insert(InsertRequest request) throws SkyflowException { String bodyString = gson.toJson(e.body()); LogUtil.printErrorLog(ErrorLogs.INSERT_RECORDS_REJECTED.getLog()); throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (ApiClientException e) { + LogUtil.printErrorLog(ErrorLogs.INSERT_RECORDS_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); } } @@ -68,17 +75,58 @@ public DetokenizeResponse detokenize(DetokenizeRequest request) throws SkyflowEx String bodyString = gson.toJson(e.body()); LogUtil.printErrorLog(ErrorLogs.DETOKENIZE_REQUEST_REJECTED.getLog()); throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (ApiClientException e) { + LogUtil.printErrorLog(ErrorLogs.DETOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); } } - public TokenizeResponse tokenize(TokenizeRequest request){ - LogUtil.printInfoLog(InfoLogs.TOKENIZE_TRIGGERED.getLog()); + public TokenizeResponse tokenize(TokenizeRequest request) throws SkyflowException { try { + LogUtil.printInfoLog(InfoLogs.TOKENIZE_TRIGGERED.getLog()); + LogUtil.printInfoLog(InfoLogs.VALIDATING_TOKENIZE_REQUEST.getLog()); + Validations.validateTokenizeRequest(request); + setBearerToken(); - } catch (Exception e) { - throw new RuntimeException(e); + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest requestTokenize = getTokenizeRequestBody(request, this.getVaultConfig().getVaultId()); + ApiClientHttpResponse response = this.getRecordsApi().withRawResponse().tokenize(requestTokenize, buildRequestOptions()); + LogUtil.printInfoLog(InfoLogs.TOKENIZE_REQUEST_RESOLVED.getLog()); + + TokenizeResponse tokenizeResponse = buildTokenizeResponse(response.body(), response.headers(), request.getData().size()); + LogUtil.printInfoLog(InfoLogs.TOKENIZE_SUCCESS.getLog()); + return tokenizeResponse; + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.TOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (ApiClientException e) { + LogUtil.printErrorLog(ErrorLogs.TOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); + } + } + + public DeleteTokensResponse deleteTokens(DeleteTokensRequest request) throws SkyflowException { + try { + LogUtil.printInfoLog(InfoLogs.DELETE_TOKENS_TRIGGERED.getLog()); + LogUtil.printInfoLog(InfoLogs.VALIDATE_DELETE_TOKENS_REQUEST.getLog()); + Validations.validateDeleteTokensRequest(request); + setBearerToken(); + + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest requestDeleteTokens = getDeleteTokensRequestBody(request, this.getVaultConfig().getVaultId()); + ApiClientHttpResponse response = this.getRecordsApi().withRawResponse().deletetoken(requestDeleteTokens, buildRequestOptions()); + LogUtil.printInfoLog(InfoLogs.DELETE_TOKENS_REQUEST_RESOLVED.getLog()); + + DeleteTokensResponse deleteTokensResponse = buildDeleteTokensResponse(response.body(), response.headers(), request.getTokens().size()); + LogUtil.printInfoLog(InfoLogs.DELETE_TOKENS_SUCCESS.getLog()); + return deleteTokensResponse; + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.DELETE_TOKENS_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (ApiClientException e) { + LogUtil.printErrorLog(ErrorLogs.DELETE_TOKENS_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); } - return null; } diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensRequest.java new file mode 100644 index 00000000..ea8e9a7a --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensRequest.java @@ -0,0 +1,34 @@ +package com.skyflow.vault.data; + +import java.util.List; + +public class DeleteTokensRequest { + private final DeleteTokensRequestBuilder builder; + + private DeleteTokensRequest(DeleteTokensRequestBuilder builder) { + this.builder = builder; + } + + public static DeleteTokensRequestBuilder builder() { + return new DeleteTokensRequestBuilder(); + } + + public List getTokens() { + return this.builder.tokens; + } + + public static final class DeleteTokensRequestBuilder { + private List tokens; + + private DeleteTokensRequestBuilder() {} + + public DeleteTokensRequestBuilder tokens(List tokens) { + this.tokens = tokens; + return this; + } + + public DeleteTokensRequest build() { + return new DeleteTokensRequest(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensResponse.java new file mode 100644 index 00000000..7f621d8d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensResponse.java @@ -0,0 +1,22 @@ +package com.skyflow.vault.data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class DeleteTokensResponse { + private final List tokens; + private final ArrayList> errors; + + public DeleteTokensResponse(List tokens, ArrayList> errors) { + this.tokens = tokens; + this.errors = errors; + } + + public List getTokens() { + return tokens; + } + public ArrayList> getErrors(){ + return this.errors; + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeData.java b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeData.java new file mode 100644 index 00000000..6f04ed8d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeData.java @@ -0,0 +1,36 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import java.util.LinkedHashMap; +import java.util.Map; + +public class TokenizeData { + private Object value; + private Map tokens; + private int index; + + public TokenizeData(Object value, int index){ + this.value = value; + this.tokens = new LinkedHashMap<>(); + this.index = index; + } + public void addToken(String tokenGroupName, String token) { + this.tokens.put(tokenGroupName, token); + } + + public Object getValue() { + return value; + } + + public Map getTokens() { + return tokens; + } + + @Override + public String toString() { + Gson gson = new GsonBuilder().create(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeRecord.java b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeRecord.java new file mode 100644 index 00000000..faa676df --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeRecord.java @@ -0,0 +1,44 @@ +package com.skyflow.vault.data; + +import java.util.List; + +public class TokenizeRecord { + private final TokenizeRecordBuilder builder; + + private TokenizeRecord(TokenizeRecordBuilder builder) { + this.builder = builder; + } + + public static TokenizeRecordBuilder builder() { + return new TokenizeRecordBuilder(); + } + + public Object getValue() { + return this.builder.value; + } + + public List getTokenGroupNames() { + return this.builder.tokenGroupNames; + } + + public static final class TokenizeRecordBuilder { + private Object value; + private List tokenGroupNames; + + private TokenizeRecordBuilder() {} + + public TokenizeRecordBuilder value(Object value) { + this.value = value; + return this; + } + + public TokenizeRecordBuilder tokenGroupNames(List tokenGroupNames) { + this.tokenGroupNames = tokenGroupNames; + return this; + } + + public TokenizeRecord build() { + return new TokenizeRecord(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeRequest.java index f6b6cf99..a6ef8072 100644 --- a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeRequest.java +++ b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeRequest.java @@ -1,4 +1,34 @@ package com.skyflow.vault.data; +import java.util.ArrayList; + public class TokenizeRequest { + private final TokenizeRequestBuilder builder; + + private TokenizeRequest(TokenizeRequestBuilder builder) { + this.builder = builder; + } + + public static TokenizeRequestBuilder builder() { + return new TokenizeRequestBuilder(); + } + + public ArrayList getData() { + return this.builder.data; + } + + public static final class TokenizeRequestBuilder { + private ArrayList data; + + private TokenizeRequestBuilder() {} + + public TokenizeRequestBuilder data(ArrayList data) { + this.data = data; + return this; + } + + public TokenizeRequest build() { + return new TokenizeRequest(this); + } + } } diff --git a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeResponse.java index 403ad53c..a4b47351 100644 --- a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeResponse.java +++ b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeResponse.java @@ -1,4 +1,26 @@ package com.skyflow.vault.data; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + public class TokenizeResponse { + private List tokenizedData; + private final ArrayList> errors; + + public TokenizeResponse(ArrayList> errors) { + this.errors = errors; + } + public TokenizeResponse(){ + this.errors = new ArrayList<>(); + } + public List getTokenizedData(){ + return this.tokenizedData; + } + public void setTokenizedData(List tokenizedData) { + this.tokenizedData = tokenizedData; + } + public ArrayList> getErrors(){ + return this.errors; + } } diff --git a/flowvault/src/test/java/com/skyflow/SkyflowTests.java b/flowvault/src/test/java/com/skyflow/SkyflowTests.java new file mode 100644 index 00000000..fc215e2b --- /dev/null +++ b/flowvault/src/test/java/com/skyflow/SkyflowTests.java @@ -0,0 +1,168 @@ +package com.skyflow; + +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; +import com.skyflow.enums.Env; +import com.skyflow.enums.LogLevel; +import com.skyflow.errors.SkyflowException; +import com.skyflow.vault.controller.VaultController; +import org.junit.Assert; +import org.junit.Test; + +public class SkyflowTests { + private static final String EXCEPTION_NOT_THROWN = "Should have thrown an exception"; + private static final String INVALID_EXCEPTION_THROWN = "Should not have thrown any exception"; + + private static VaultConfig buildConfig(String vaultId, String clusterId) { + VaultConfig config = new VaultConfig(); + config.setVaultId(vaultId); + config.setClusterId(clusterId); + config.setEnv(Env.DEV); + return config; + } + + // ── addVaultConfig ──────────────────────────────────────────────────────── + + @Test + public void testAddVaultConfig_success() throws SkyflowException { + Skyflow client = Skyflow.builder().addVaultConfig(buildConfig("vault1", "cluster1")).build(); + Assert.assertEquals("vault1", client.getVaultConfig("vault1").getVaultId()); + } + + @Test + public void testAddVaultConfig_duplicateVaultIdThrows() throws SkyflowException { + Skyflow.SkyflowClientBuilder builder = Skyflow.builder().addVaultConfig(buildConfig("vault1", "cluster1")); + try { + builder.addVaultConfig(buildConfig("vault1", "cluster2")); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testAddVaultConfig_invalidConfigThrows() { + VaultConfig config = new VaultConfig(); + // no vaultId set + try { + Skyflow.builder().addVaultConfig(config); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── updateVaultConfig ───────────────────────────────────────────────────── + + @Test + public void testUpdateVaultConfig_success() throws SkyflowException { + Skyflow client = Skyflow.builder().addVaultConfig(buildConfig("vault1", "cluster1")).build(); + + VaultConfig update = new VaultConfig(); + update.setVaultId("vault1"); + update.setClusterId("cluster2"); + update.setEnv(Env.PROD); + client.updateVaultConfig(update); + + Assert.assertEquals("cluster2", client.getVaultConfig("vault1").getClusterId()); + Assert.assertEquals(Env.PROD, client.getVaultConfig("vault1").getEnv()); + } + + @Test + public void testUpdateVaultConfig_nonExistentVaultIdThrows() { + try { + Skyflow.builder().updateVaultConfig(buildConfig("vault-unknown", "cluster1")); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── removeVaultConfig ───────────────────────────────────────────────────── + + @Test + public void testRemoveVaultConfig_success() throws SkyflowException { + Skyflow client = Skyflow.builder().addVaultConfig(buildConfig("vault1", "cluster1")).build(); + client.removeVaultConfig("vault1"); + Assert.assertNull(client.getVaultConfig("vault1")); + } + + @Test + public void testRemoveVaultConfig_nonExistentVaultIdThrows() { + try { + Skyflow.builder().removeVaultConfig("vault-unknown"); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── addSkyflowCredentials ───────────────────────────────────────────────── + + @Test + public void testAddSkyflowCredentials_success() throws SkyflowException { + Credentials credentials = new Credentials(); + credentials.setToken("some-token"); + Skyflow client = Skyflow.builder() + .addVaultConfig(buildConfig("vault1", "cluster1")) + .addSkyflowCredentials(credentials) + .build(); + Assert.assertNotNull(client); + } + + @Test + public void testAddSkyflowCredentials_invalidCredentialsThrows() { + Credentials credentials = new Credentials(); + credentials.setApiKey("not-a-valid-api-key"); + try { + Skyflow.builder().addSkyflowCredentials(credentials); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── setLogLevel / getLogLevel ───────────────────────────────────────────── + + @Test + public void testSetLogLevel_updatesLogLevel() throws SkyflowException { + Skyflow client = Skyflow.builder() + .addVaultConfig(buildConfig("vault1", "cluster1")) + .setLogLevel(LogLevel.DEBUG) + .build(); + Assert.assertEquals(LogLevel.DEBUG, client.getLogLevel()); + } + + @Test + public void testGetLogLevel_defaultsToError() throws SkyflowException { + Skyflow client = Skyflow.builder().addVaultConfig(buildConfig("vault1", "cluster1")).build(); + Assert.assertEquals(LogLevel.ERROR, client.getLogLevel()); + } + + // ── vault() ─────────────────────────────────────────────────────────────── + + @Test + public void testVault_returnsVaultControllerWhenConfigured() throws SkyflowException { + Skyflow client = Skyflow.builder().addVaultConfig(buildConfig("vault1", "cluster1")).build(); + VaultController controller = client.vault(); + Assert.assertNotNull(controller); + } + + @Test + public void testVault_throwsWhenNoConfigExists() { + try { + Skyflow.builder().build().vault(); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── getVaultConfig ──────────────────────────────────────────────────────── + + @Test + public void testGetVaultConfig_returnsNullForUnknownVaultId() throws SkyflowException { + Skyflow client = Skyflow.builder().addVaultConfig(buildConfig("vault1", "cluster1")).build(); + Assert.assertNull(client.getVaultConfig("vault-unknown")); + } +} diff --git a/flowvault/src/test/java/com/skyflow/VaultClientTests.java b/flowvault/src/test/java/com/skyflow/VaultClientTests.java new file mode 100644 index 00000000..24e741b5 --- /dev/null +++ b/flowvault/src/test/java/com/skyflow/VaultClientTests.java @@ -0,0 +1,130 @@ +package com.skyflow; + +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; +import com.skyflow.enums.Env; +import com.skyflow.errors.SkyflowException; +import org.junit.Assert; +import org.junit.Test; + +public class VaultClientTests { + + private static VaultConfig buildConfig(String vaultId, String clusterId, Credentials credentials) { + VaultConfig config = new VaultConfig(); + config.setVaultId(vaultId); + config.setClusterId(clusterId); + config.setEnv(Env.DEV); + if (credentials != null) { + config.setCredentials(credentials); + } + return config; + } + + // ── updateVaultURL priority order ──────────────────────────────────────── + + @Test + public void testUpdateVaultURL_usesExplicitVaultURLOverClusterId() throws SkyflowException { + VaultConfig config = buildConfig("vault1", "cluster1", null); + config.setVaultURL("https://custom.example.com"); + + VaultClient client = new VaultClient(config, null); + + Assert.assertEquals("https://custom.example.com", client.currentVaultURL); + } + + @Test + public void testUpdateVaultURL_constructsFromClusterIdWhenNoVaultURL() throws SkyflowException { + VaultConfig config = buildConfig("vault1", "cluster1", null); + + VaultClient client = new VaultClient(config, null); + + Assert.assertEquals("https://cluster1.skyvault.skyflowapis.dev", client.currentVaultURL); + } + + // ── setBearerToken ──────────────────────────────────────────────────────── + + @Test + public void testSetBearerToken_usesApiKeyDirectly() throws SkyflowException { + Credentials creds = new Credentials(); + creds.setApiKey("sky-ab123-abcd1234cdef1234abcd4321cdef4321"); + VaultConfig config = buildConfig("vault1", "cluster1", creds); + + VaultClient client = new VaultClient(config, null); + client.setBearerToken(); + + Assert.assertEquals("sky-ab123-abcd1234cdef1234abcd4321cdef4321", client.token); + } + + @Test + public void testSetBearerToken_reusesNonExpiredToken() throws SkyflowException { + Credentials creds = new Credentials(); + creds.setToken("x.eyJleHAiOjk5OTk5OTk5OTl9.y"); + VaultConfig config = buildConfig("vault1", "cluster1", creds); + + VaultClient client = new VaultClient(config, null); + client.setBearerToken(); + String firstToken = client.token; + client.setBearerToken(); + + Assert.assertEquals(firstToken, client.token); + } + + @Test + public void testSetBearerToken_invalidCredentialsThrows() { + Credentials creds = new Credentials(); + creds.setApiKey("not-a-valid-api-key"); + VaultConfig config = buildConfig("vault1", "cluster1", creds); + + try { + VaultClient client = new VaultClient(config, null); + client.setBearerToken(); + Assert.fail("Should have thrown an exception"); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── getRecordsApi ───────────────────────────────────────────────────────── + + @Test + public void testGetRecordsApi_availableAfterSetBearerToken() throws SkyflowException { + Credentials creds = new Credentials(); + creds.setApiKey("sky-ab123-abcd1234cdef1234abcd4321cdef4321"); + VaultConfig config = buildConfig("vault1", "cluster1", creds); + + VaultClient client = new VaultClient(config, null); + client.setBearerToken(); + + Assert.assertNotNull(client.getRecordsApi()); + } + + // ── setCommonCredentials ────────────────────────────────────────────────── + + @Test + public void testSetCommonCredentials_vaultSpecificCredentialsTakePriority() throws SkyflowException { + Credentials vaultCreds = new Credentials(); + vaultCreds.setToken("vault-specific-token"); + VaultConfig config = buildConfig("vault1", "cluster1", vaultCreds); + + VaultClient client = new VaultClient(config, null); + Credentials commonCreds = new Credentials(); + commonCreds.setToken("common-token"); + client.setCommonCredentials(commonCreds); + client.setBearerToken(); + + Assert.assertEquals("vault-specific-token", client.token); + } + + @Test + public void testSetCommonCredentials_usedWhenNoVaultSpecificCredentials() throws SkyflowException { + VaultConfig config = buildConfig("vault1", "cluster1", null); + + VaultClient client = new VaultClient(config, null); + Credentials commonCreds = new Credentials(); + commonCreds.setToken("common-token"); + client.setCommonCredentials(commonCreds); + client.setBearerToken(); + + Assert.assertEquals("common-token", client.token); + } +} diff --git a/flowvault/src/test/java/com/skyflow/config/VaultConfigTests.java b/flowvault/src/test/java/com/skyflow/config/VaultConfigTests.java new file mode 100644 index 00000000..a1c82af5 --- /dev/null +++ b/flowvault/src/test/java/com/skyflow/config/VaultConfigTests.java @@ -0,0 +1,94 @@ +package com.skyflow.config; + +import com.skyflow.enums.Env; +import org.junit.Assert; +import org.junit.Test; + +public class VaultConfigTests { + + @Test + public void testDefaultEnvIsProd() { + VaultConfig config = new VaultConfig(); + Assert.assertEquals(Env.PROD, config.getEnv()); + } + + @Test + public void testSettingNullEnvFallsBackToProd() { + VaultConfig config = new VaultConfig(); + config.setEnv(null); + Assert.assertEquals(Env.PROD, config.getEnv()); + } + + @Test + public void testVaultIdGetterSetter() { + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + Assert.assertEquals("vault123", config.getVaultId()); + } + + @Test + public void testClusterIdGetterSetter() { + VaultConfig config = new VaultConfig(); + config.setClusterId("cluster123"); + Assert.assertEquals("cluster123", config.getClusterId()); + } + + @Test + public void testEnvGetterSetter() { + VaultConfig config = new VaultConfig(); + config.setEnv(Env.SANDBOX); + Assert.assertEquals(Env.SANDBOX, config.getEnv()); + } + + @Test + public void testCredentialsGetterSetter() { + VaultConfig config = new VaultConfig(); + Credentials credentials = new Credentials(); + credentials.setToken("token1"); + config.setCredentials(credentials); + Assert.assertEquals(credentials, config.getCredentials()); + } + + @Test + public void testVaultURLDefaultsToNull() { + VaultConfig config = new VaultConfig(); + Assert.assertNull(config.getVaultURL()); + } + + @Test + public void testVaultURLGetterSetter() { + VaultConfig config = new VaultConfig(); + config.setVaultURL("https://myvault.example.com"); + Assert.assertEquals("https://myvault.example.com", config.getVaultURL()); + } + + @Test + public void testClone_copiesFieldsAndDeepCopiesCredentials() throws CloneNotSupportedException { + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + config.setClusterId("cluster123"); + config.setEnv(Env.DEV); + Credentials credentials = new Credentials(); + credentials.setToken("token1"); + config.setCredentials(credentials); + + VaultConfig cloned = (VaultConfig) config.clone(); + + Assert.assertEquals(config.getVaultId(), cloned.getVaultId()); + Assert.assertEquals(config.getClusterId(), cloned.getClusterId()); + Assert.assertEquals(config.getEnv(), cloned.getEnv()); + Assert.assertNotSame(config.getCredentials(), cloned.getCredentials()); + Assert.assertEquals(config.getCredentials().getToken(), cloned.getCredentials().getToken()); + } + + @Test + public void testClone_withNullCredentials() throws CloneNotSupportedException { + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + config.setClusterId("cluster123"); + + VaultConfig cloned = (VaultConfig) config.clone(); + + Assert.assertNull(cloned.getCredentials()); + } +} diff --git a/flowvault/src/test/java/com/skyflow/utils/UtilsTests.java b/flowvault/src/test/java/com/skyflow/utils/UtilsTests.java new file mode 100644 index 00000000..425f461a --- /dev/null +++ b/flowvault/src/test/java/com/skyflow/utils/UtilsTests.java @@ -0,0 +1,568 @@ +package com.skyflow.utils; + +import com.google.gson.JsonObject; +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; +import com.skyflow.enums.Env; +import com.skyflow.enums.UpsertType; +import com.skyflow.errors.SkyflowException; +import com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest; +import com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest; +import com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest; +import com.skyflow.generated.rest.resources.flowservice.requests.V1InsertRequest; +import com.skyflow.generated.rest.types.FlowEnumUpdateType; +import com.skyflow.generated.rest.types.FlowTokenizeResponseObjectToken; +import com.skyflow.generated.rest.types.V1DeleteTokenResponseObject; +import com.skyflow.generated.rest.types.V1FlowDeleteTokenResponse; +import com.skyflow.generated.rest.types.V1FlowDetokenizeResponse; +import com.skyflow.generated.rest.types.V1FlowDetokenizeResponseObject; +import com.skyflow.generated.rest.types.V1FlowTokenizeResponse; +import com.skyflow.generated.rest.types.V1FlowTokenizeResponseObject; +import com.skyflow.generated.rest.types.V1InsertResponse; +import com.skyflow.generated.rest.types.V1RecordResponseObject; +import com.skyflow.vault.data.DeleteTokensRequest; +import com.skyflow.vault.data.DeleteTokensResponse; +import com.skyflow.vault.data.DetokenizeData; +import com.skyflow.vault.data.DetokenizeRecordResponse; +import com.skyflow.vault.data.DetokenizeRequest; +import com.skyflow.vault.data.DetokenizeResponse; +import com.skyflow.vault.data.InsertRecord; +import com.skyflow.vault.data.InsertRequest; +import com.skyflow.vault.data.InsertResponse; +import com.skyflow.vault.data.TokenGroupRedactions; +import com.skyflow.vault.data.TokenizeData; +import com.skyflow.vault.data.TokenizeRecord; +import com.skyflow.vault.data.TokenizeRequest; +import com.skyflow.vault.data.TokenizeResponse; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class UtilsTests { + + // ── getVaultURL ─────────────────────────────────────────────────────────── + + @Test + public void testGetVaultURL_prodEnv() { + String url = Utils.getVaultURL("cluster1", Env.PROD); + Assert.assertEquals("https://cluster1.skyvault.skyflowapis.com", url); + } + + @Test + public void testGetVaultURL_devEnv() { + String url = Utils.getVaultURL("cluster1", Env.DEV); + Assert.assertEquals("https://cluster1.skyvault.skyflowapis.dev", url); + } + + @Test + public void testGetVaultURL_stageEnv() { + String url = Utils.getVaultURL("cluster1", Env.STAGE); + Assert.assertEquals("https://cluster1.skyvault.skyflowapis.tech", url); + } + + @Test + public void testGetVaultURL_sandboxEnv() { + String url = Utils.getVaultURL("cluster1", Env.SANDBOX); + Assert.assertEquals("https://cluster1.skyvault.skyflowapis-preview.com", url); + } + + // ── getMetrics ──────────────────────────────────────────────────────────── + + @Test + public void testGetMetrics_containsSdkVersion() { + JsonObject metrics = Utils.getMetrics(); + Assert.assertTrue(metrics.has(BaseConstants.SDK_METRIC_NAME_VERSION)); + String sdkVersionMetric = metrics.get(BaseConstants.SDK_METRIC_NAME_VERSION).getAsString(); + Assert.assertTrue(sdkVersionMetric.startsWith(Constants.SDK_METRIC_NAME_VERSION_PREFIX)); + } + + // ── getEnvVaultURL ──────────────────────────────────────────────────────── + + @Test + public void testGetEnvVaultURL_doesNotThrowUnexpectedException() { + try { + Utils.getEnvVaultURL(); + } catch (SkyflowException e) { + // acceptable if this environment happens to have an invalid VAULT_URL set + Assert.assertNotNull(e.getMessage()); + } + } + + // ── isValidURL ──────────────────────────────────────────────────────────── + + @Test + public void testIsValidURL_validHttpsUrl() { + Assert.assertTrue(Utils.isValidURL("https://example.com")); + } + + @Test + public void testIsValidURL_httpUrlIsInvalid() { + Assert.assertFalse(Utils.isValidURL("http://example.com")); + } + + @Test + public void testIsValidURL_malformedUrl() { + Assert.assertFalse(Utils.isValidURL("not a url")); + } + + // ── generateBearerToken ─────────────────────────────────────────────────── + + @Test + public void testGenerateBearerToken_withDirectToken() throws SkyflowException { + Credentials credentials = new Credentials(); + credentials.setToken("direct-token-value"); + + String token = Utils.generateBearerToken(credentials); + + Assert.assertEquals("direct-token-value", token); + } + + @Test + public void testGenerateBearerToken_withInvalidCredentialsStringThrows() { + Credentials credentials = new Credentials(); + // A string that fails JSON syntax parsing (as opposed to e.g. a bare word, + // which Gson's lenient parser accepts as a JSON primitive rather than rejecting outright). + credentials.setCredentialsString("./src/test/credentials.json"); + try { + Utils.generateBearerToken(credentials); + Assert.fail("Should have thrown an exception"); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testGenerateBearerToken_withNonExistentPathThrows() { + Credentials credentials = new Credentials(); + credentials.setPath("/nonexistent/path/credentials.json"); + try { + Utils.generateBearerToken(credentials); + Assert.fail("Should have thrown an exception"); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── getBulkInsertRequestBody ────────────────────────────────────────────── + + @Test + public void testGetBulkInsertRequestBody_buildsCorrectRequest() { + Map data = new HashMap<>(); + data.put("name", "john"); + InsertRecord record = InsertRecord.builder().data(data).build(); + ArrayList records = new ArrayList<>(); + records.add(record); + InsertRequest request = InsertRequest.builder().table("table1").records(records).build(); + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + + V1InsertRequest body = Utils.getBulkInsertRequestBody(request, config); + + Assert.assertEquals("vault123", body.getVaultId().get()); + Assert.assertEquals("table1", body.getTableName().get()); + Assert.assertEquals(1, body.getRecords().get().size()); + Assert.assertEquals(data, body.getRecords().get().get(0).getData().get()); + } + + @Test + public void testGetBulkInsertRequestBody_withUpsertAtRequestLevel() { + Map data = new HashMap<>(); + data.put("name", "john"); + InsertRecord record = InsertRecord.builder().data(data).build(); + ArrayList records = new ArrayList<>(); + records.add(record); + InsertRequest request = InsertRequest.builder() + .table("table1") + .records(records) + .upsert(Collections.singletonList("email")) + .upsertType(UpsertType.UPDATE) + .build(); + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + + V1InsertRequest body = Utils.getBulkInsertRequestBody(request, config); + + Assert.assertTrue(body.getUpsert().isPresent()); + Assert.assertEquals(Collections.singletonList("email"), body.getUpsert().get().getUniqueColumns().get()); + Assert.assertEquals(FlowEnumUpdateType.UPDATE, body.getUpsert().get().getUpdateType().get()); + } + + @Test + public void testGetBulkInsertRequestBody_withUpsertAtRecordLevel() { + Map data = new HashMap<>(); + data.put("name", "john"); + InsertRecord record = InsertRecord.builder() + .table("table1") + .data(data) + .upsert(Collections.singletonList("email")) + .upsertType(UpsertType.REPLACE) + .build(); + ArrayList records = new ArrayList<>(); + records.add(record); + InsertRequest request = InsertRequest.builder().records(records).build(); + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + + V1InsertRequest body = Utils.getBulkInsertRequestBody(request, config); + + Assert.assertEquals("table1", body.getRecords().get().get(0).getTableName().get()); + Assert.assertTrue(body.getRecords().get().get(0).getUpsert().isPresent()); + Assert.assertEquals(FlowEnumUpdateType.REPLACE, body.getRecords().get().get(0).getUpsert().get().getUpdateType().get()); + } + + // ── buildInsertResponse ─────────────────────────────────────────────────── + + @Test + public void testBuildInsertResponse_success() { + Map tokens = new HashMap<>(); + tokens.put("name", "tok-abc"); + V1RecordResponseObject record = V1RecordResponseObject.builder() + .skyflowId("sky-id-1") + .tokens(tokens) + .build(); + V1InsertResponse res = V1InsertResponse.builder().records(Collections.singletonList(record)).build(); + + InsertResponse response = Utils.buildInsertResponse(res); + + Assert.assertEquals(1, response.getInsertedFields().size()); + Assert.assertEquals("sky-id-1", response.getInsertedFields().get(0).get("skyflowId")); + Assert.assertEquals("tok-abc", response.getInsertedFields().get(0).get("name")); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBuildInsertResponse_error() { + V1RecordResponseObject record = V1RecordResponseObject.builder() + .skyflowId("sky-id-1") + .tableName("table1") + .error("insert failed") + .httpCode(400) + .build(); + V1InsertResponse res = V1InsertResponse.builder().records(Collections.singletonList(record)).build(); + + InsertResponse response = Utils.buildInsertResponse(res); + + Assert.assertTrue(response.getInsertedFields().isEmpty()); + Assert.assertEquals(1, response.getErrors().size()); + Assert.assertEquals("insert failed", response.getErrors().get(0).get("error")); + Assert.assertEquals("table1", response.getErrors().get(0).get("tableName")); + Assert.assertEquals(400, response.getErrors().get(0).get("httpCode")); + } + + @Test + public void testBuildInsertResponse_nullResponse() { + InsertResponse response = Utils.buildInsertResponse(null); + Assert.assertTrue(response.getInsertedFields().isEmpty()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBuildInsertResponse_emptyResponse() { + V1InsertResponse res = V1InsertResponse.builder().build(); + InsertResponse response = Utils.buildInsertResponse(res); + Assert.assertTrue(response.getInsertedFields().isEmpty()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + // ── getDetokenizeRequestBody ────────────────────────────────────────────── + + @Test + public void testGetDetokenizeRequestBody_buildsCorrectRequest() { + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + DetokenizeRequest request = DetokenizeRequest.builder().detokenizeData(data).build(); + + V1FlowDetokenizeRequest body = Utils.getDetokenizeRequestBody(request, "vault123"); + + Assert.assertEquals("vault123", body.getVaultId().get()); + Assert.assertEquals(Collections.singletonList("token1"), body.getTokens().get()); + Assert.assertFalse(body.getTokenGroupRedactions().isPresent()); + } + + @Test + public void testGetDetokenizeRequestBody_withTokenGroupRedactions() { + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + List groupRedactions = Collections.singletonList( + TokenGroupRedactions.builder().tokenGroupName("group1").redaction("MASKED").build()); + DetokenizeRequest request = DetokenizeRequest.builder() + .detokenizeData(data) + .tokenGroupRedactions(groupRedactions) + .build(); + + V1FlowDetokenizeRequest body = Utils.getDetokenizeRequestBody(request, "vault123"); + + Assert.assertTrue(body.getTokenGroupRedactions().isPresent()); + Assert.assertEquals("group1", body.getTokenGroupRedactions().get().get(0).getTokenGroupName().get()); + Assert.assertEquals("MASKED", body.getTokenGroupRedactions().get().get(0).getRedaction().get()); + } + + // ── buildDetokenizeResponse ─────────────────────────────────────────────── + + @Test + public void testBuildDetokenizeResponse_success() { + V1FlowDetokenizeResponseObject record = V1FlowDetokenizeResponseObject.builder() + .token("token1") + .value("secret-value") + .tokenGroupName("group1") + .build(); + V1FlowDetokenizeResponse res = V1FlowDetokenizeResponse.builder() + .response(Collections.singletonList(record)) + .build(); + + DetokenizeResponse response = Utils.buildDetokenizeResponse(res); + + Assert.assertEquals(1, response.getDetokenizedFields().size()); + DetokenizeRecordResponse detokenizedField = response.getDetokenizedFields().get(0); + Assert.assertEquals("token1", detokenizedField.getToken()); + Assert.assertEquals("secret-value", detokenizedField.getValue()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBuildDetokenizeResponse_error() { + V1FlowDetokenizeResponseObject record = V1FlowDetokenizeResponseObject.builder() + .token("token1") + .error("detokenize failed") + .build(); + V1FlowDetokenizeResponse res = V1FlowDetokenizeResponse.builder() + .response(Collections.singletonList(record)) + .build(); + + DetokenizeResponse response = Utils.buildDetokenizeResponse(res); + + Assert.assertTrue(response.getDetokenizedFields().isEmpty()); + Assert.assertEquals(1, response.getErrors().size()); + Assert.assertEquals("detokenize failed", response.getErrors().get(0).getError()); + } + + @Test + public void testBuildDetokenizeResponse_nullResponse() { + DetokenizeResponse response = Utils.buildDetokenizeResponse(null); + Assert.assertTrue(response.getDetokenizedFields().isEmpty()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + // ── getTokenizeRequestBody ──────────────────────────────────────────────── + + @Test + public void testGetTokenizeRequestBody_buildsCorrectRequest() { + ArrayList records = new ArrayList<>(); + records.add(TokenizeRecord.builder() + .value("value1") + .tokenGroupNames(Collections.singletonList("group1")) + .build()); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + + V1FlowTokenizeRequest body = Utils.getTokenizeRequestBody(request, "vault123"); + + Assert.assertEquals("vault123", body.getVaultId().get()); + Assert.assertTrue(body.getData().isPresent()); + Assert.assertEquals(1, body.getData().get().size()); + Assert.assertEquals("value1", body.getData().get().get(0).getValue().get()); + Assert.assertEquals(Collections.singletonList("group1"), body.getData().get().get(0).getTokenGroupNames().get()); + } + + // ── buildTokenizeResponse ───────────────────────────────────────────────── + + @Test + public void testBuildTokenizeResponse_success() { + FlowTokenizeResponseObjectToken token = FlowTokenizeResponseObjectToken.builder() + .tokenGroupName("group1") + .token("tok-abc") + .build(); + V1FlowTokenizeResponseObject responseObject = V1FlowTokenizeResponseObject.builder() + .value("value1") + .tokens(Collections.singletonList(token)) + .build(); + V1FlowTokenizeResponse res = V1FlowTokenizeResponse.builder() + .response(Collections.singletonList(responseObject)) + .build(); + + TokenizeResponse response = Utils.buildTokenizeResponse(res, new HashMap<>(), 1); + + Assert.assertEquals(1, response.getTokenizedData().size()); + TokenizeData data = response.getTokenizedData().get(0); + Assert.assertEquals("value1", data.getValue()); + Assert.assertEquals("tok-abc", data.getTokens().get("group1")); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBuildTokenizeResponse_error() { + FlowTokenizeResponseObjectToken token = FlowTokenizeResponseObjectToken.builder() + .tokenGroupName("group1") + .error("tokenization failed") + .httpCode(400) + .build(); + V1FlowTokenizeResponseObject responseObject = V1FlowTokenizeResponseObject.builder() + .value("value1") + .tokens(Collections.singletonList(token)) + .build(); + V1FlowTokenizeResponse res = V1FlowTokenizeResponse.builder() + .response(Collections.singletonList(responseObject)) + .build(); + + TokenizeResponse response = Utils.buildTokenizeResponse(res, new HashMap<>(), 1); + + Assert.assertTrue(response.getTokenizedData().isEmpty()); + Assert.assertEquals(1, response.getErrors().size()); + Map errorRecord = response.getErrors().get(0); + Assert.assertEquals("tokenization failed", errorRecord.get("error")); + Assert.assertEquals(400, errorRecord.get("httpCode")); + Assert.assertEquals("group1", errorRecord.get("tokenGroupName")); + Assert.assertEquals(0, errorRecord.get("index")); + } + + @Test + public void testBuildTokenizeResponse_mixedSuccessAndError() { + FlowTokenizeResponseObjectToken successToken = FlowTokenizeResponseObjectToken.builder() + .tokenGroupName("group1") + .token("tok-abc") + .build(); + FlowTokenizeResponseObjectToken errorToken = FlowTokenizeResponseObjectToken.builder() + .tokenGroupName("group2") + .error("group2 failed") + .httpCode(400) + .build(); + V1FlowTokenizeResponseObject responseObject = V1FlowTokenizeResponseObject.builder() + .value("value1") + .tokens(java.util.Arrays.asList(successToken, errorToken)) + .build(); + V1FlowTokenizeResponse res = V1FlowTokenizeResponse.builder() + .response(Collections.singletonList(responseObject)) + .build(); + + TokenizeResponse response = Utils.buildTokenizeResponse(res, new HashMap<>(), 1); + + Assert.assertEquals(1, response.getTokenizedData().size()); + Assert.assertEquals("tok-abc", response.getTokenizedData().get(0).getTokens().get("group1")); + Assert.assertEquals(1, response.getErrors().size()); + Assert.assertEquals("group2 failed", response.getErrors().get(0).get("error")); + } + + @Test + public void testBuildTokenizeResponse_emptyResponse() { + V1FlowTokenizeResponse res = V1FlowTokenizeResponse.builder().build(); + + TokenizeResponse response = Utils.buildTokenizeResponse(res, new HashMap<>(), 1); + + Assert.assertTrue(response.getTokenizedData().isEmpty()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBuildTokenizeResponse_nullResponse() { + TokenizeResponse response = Utils.buildTokenizeResponse(null, new HashMap<>(), 1); + + Assert.assertTrue(response.getTokenizedData().isEmpty()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBuildTokenizeResponse_incompleteResponseDoesNotThrow() { + FlowTokenizeResponseObjectToken token = FlowTokenizeResponseObjectToken.builder() + .tokenGroupName("group1") + .token("tok-abc") + .build(); + V1FlowTokenizeResponseObject responseObject = V1FlowTokenizeResponseObject.builder() + .value("value1") + .tokens(Collections.singletonList(token)) + .build(); + V1FlowTokenizeResponse res = V1FlowTokenizeResponse.builder() + .response(Collections.singletonList(responseObject)) + .build(); + + // requestedRecordCount=2 but only 1 record came back — should just warn, not throw + TokenizeResponse response = Utils.buildTokenizeResponse(res, new HashMap<>(), 2); + + Assert.assertEquals(1, response.getTokenizedData().size()); + } + + // ── getDeleteTokensRequestBody ──────────────────────────────────────────── + + @Test + public void testGetDeleteTokensRequestBody_buildsCorrectRequest() { + DeleteTokensRequest request = DeleteTokensRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + + V1FlowDeleteTokenRequest body = Utils.getDeleteTokensRequestBody(request, "vault123"); + + Assert.assertEquals("vault123", body.getVaultId().get()); + Assert.assertEquals(Collections.singletonList("token1"), body.getTokens().get()); + } + + // ── buildDeleteTokensResponse ───────────────────────────────────────────── + + @Test + public void testBuildDeleteTokensResponse_success() { + V1DeleteTokenResponseObject record = V1DeleteTokenResponseObject.builder() + .value("token1") + .build(); + V1FlowDeleteTokenResponse res = V1FlowDeleteTokenResponse.builder() + .tokens(Collections.singletonList(record)) + .build(); + + DeleteTokensResponse response = Utils.buildDeleteTokensResponse(res, new HashMap<>(), 1); + + Assert.assertEquals(Collections.singletonList("token1"), response.getTokens()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBuildDeleteTokensResponse_error() { + V1DeleteTokenResponseObject record = V1DeleteTokenResponseObject.builder() + .error("token not found") + .httpCode(404) + .build(); + V1FlowDeleteTokenResponse res = V1FlowDeleteTokenResponse.builder() + .tokens(Collections.singletonList(record)) + .build(); + + DeleteTokensResponse response = Utils.buildDeleteTokensResponse(res, new HashMap<>(), 1); + + Assert.assertTrue(response.getTokens().isEmpty()); + Assert.assertEquals(1, response.getErrors().size()); + Assert.assertEquals("token not found", response.getErrors().get(0).get("error")); + Assert.assertEquals(404, response.getErrors().get(0).get("httpCode")); + } + + @Test + public void testBuildDeleteTokensResponse_emptyResponse() { + V1FlowDeleteTokenResponse res = V1FlowDeleteTokenResponse.builder().build(); + + DeleteTokensResponse response = Utils.buildDeleteTokensResponse(res, new HashMap<>(), 1); + + Assert.assertTrue(response.getTokens().isEmpty()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBuildDeleteTokensResponse_nullResponse() { + DeleteTokensResponse response = Utils.buildDeleteTokensResponse(null, new HashMap<>(), 1); + + Assert.assertTrue(response.getTokens().isEmpty()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBuildDeleteTokensResponse_incompleteResponseDoesNotThrow() { + V1DeleteTokenResponseObject record = V1DeleteTokenResponseObject.builder() + .value("token1") + .build(); + V1FlowDeleteTokenResponse res = V1FlowDeleteTokenResponse.builder() + .tokens(Collections.singletonList(record)) + .build(); + + // requestedTokenCount=2 but only 1 record came back — should just warn, not throw + DeleteTokensResponse response = Utils.buildDeleteTokensResponse(res, new HashMap<>(), 2); + + Assert.assertEquals(1, response.getTokens().size()); + } +} diff --git a/flowvault/src/test/java/com/skyflow/utils/validations/ValidationsTests.java b/flowvault/src/test/java/com/skyflow/utils/validations/ValidationsTests.java new file mode 100644 index 00000000..2167fd30 --- /dev/null +++ b/flowvault/src/test/java/com/skyflow/utils/validations/ValidationsTests.java @@ -0,0 +1,732 @@ +package com.skyflow.utils.validations; + +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; +import com.skyflow.enums.Env; +import com.skyflow.errors.SkyflowException; +import com.skyflow.vault.data.DeleteTokensRequest; +import com.skyflow.vault.data.DetokenizeData; +import com.skyflow.vault.data.DetokenizeRequest; +import com.skyflow.vault.data.InsertRecord; +import com.skyflow.vault.data.InsertRequest; +import com.skyflow.vault.data.TokenGroupRedactions; +import com.skyflow.vault.data.TokenizeRecord; +import com.skyflow.vault.data.TokenizeRequest; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ValidationsTests { + private static final String EXCEPTION_NOT_THROWN = "Should have thrown an exception"; + private static final String INVALID_EXCEPTION_THROWN = "Should not have thrown any exception"; + + // ── validateTokenizeRequest ────────────────────────────────────────────── + + @Test + public void testValidateTokenizeRequest_nullRequest() { + try { + Validations.validateTokenizeRequest(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateTokenizeRequest_nullData() { + TokenizeRequest request = TokenizeRequest.builder().data(null).build(); + try { + Validations.validateTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateTokenizeRequest_emptyData() { + TokenizeRequest request = TokenizeRequest.builder().data(new ArrayList<>()).build(); + try { + Validations.validateTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateTokenizeRequest_largeValidListDoesNotThrow() { + ArrayList records = new ArrayList<>(); + for (int i = 0; i < 100; i++) { + records.add(TokenizeRecord.builder() + .value("value" + i) + .tokenGroupNames(Collections.singletonList("group1")) + .build()); + } + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + try { + Validations.validateTokenizeRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testValidateTokenizeRequest_nullRecordInList() { + ArrayList records = new ArrayList<>(); + records.add(null); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + try { + Validations.validateTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateTokenizeRequest_nullValue() { + ArrayList records = new ArrayList<>(); + records.add(TokenizeRecord.builder().value(null).tokenGroupNames(Collections.singletonList("group1")).build()); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + try { + Validations.validateTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateTokenizeRequest_blankStringValue() { + ArrayList records = new ArrayList<>(); + records.add(TokenizeRecord.builder().value(" ").tokenGroupNames(Collections.singletonList("group1")).build()); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + try { + Validations.validateTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateTokenizeRequest_nullTokenGroupNames() { + ArrayList records = new ArrayList<>(); + records.add(TokenizeRecord.builder().value("value1").tokenGroupNames(null).build()); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + try { + Validations.validateTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateTokenizeRequest_emptyTokenGroupNames() { + ArrayList records = new ArrayList<>(); + records.add(TokenizeRecord.builder().value("value1").tokenGroupNames(new ArrayList<>()).build()); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + try { + Validations.validateTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateTokenizeRequest_blankTokenGroupNameAtIndex() { + ArrayList records = new ArrayList<>(); + records.add(TokenizeRecord.builder() + .value("value1") + .tokenGroupNames(Arrays.asList("group1", " ")) + .build()); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + try { + Validations.validateTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateTokenizeRequest_validRequest() { + ArrayList records = new ArrayList<>(); + records.add(TokenizeRecord.builder() + .value("value1") + .tokenGroupNames(Collections.singletonList("group1")) + .build()); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + try { + Validations.validateTokenizeRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + // ── validateDeleteTokensRequest ────────────────────────────────────────── + + @Test + public void testValidateDeleteTokensRequest_nullRequest() { + try { + Validations.validateDeleteTokensRequest(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDeleteTokensRequest_nullTokens() { + DeleteTokensRequest request = DeleteTokensRequest.builder().tokens(null).build(); + try { + Validations.validateDeleteTokensRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDeleteTokensRequest_emptyTokens() { + DeleteTokensRequest request = DeleteTokensRequest.builder().tokens(new ArrayList<>()).build(); + try { + Validations.validateDeleteTokensRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDeleteTokensRequest_largeValidListDoesNotThrow() { + List tokens = new ArrayList<>(); + for (int i = 0; i < 100; i++) { + tokens.add("token" + i); + } + DeleteTokensRequest request = DeleteTokensRequest.builder().tokens(tokens).build(); + try { + Validations.validateDeleteTokensRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testValidateDeleteTokensRequest_blankTokenAtIndex() { + DeleteTokensRequest request = DeleteTokensRequest.builder() + .tokens(Arrays.asList("token1", " ")) + .build(); + try { + Validations.validateDeleteTokensRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDeleteTokensRequest_validRequest() { + DeleteTokensRequest request = DeleteTokensRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + try { + Validations.validateDeleteTokensRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + // ── validateCredentials ─────────────────────────────────────────────────── + + @Test + public void testValidateCredentials_validToken() { + Credentials credentials = new Credentials(); + credentials.setToken("some-token"); + try { + Validations.validateCredentials(credentials); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testValidateCredentials_validApiKey() { + Credentials credentials = new Credentials(); + credentials.setApiKey("sky-ab123-abcd1234cdef1234abcd4321cdef4321"); + try { + Validations.validateCredentials(credentials); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testValidateCredentials_invalidApiKeyFormat() { + Credentials credentials = new Credentials(); + credentials.setApiKey("not-a-valid-api-key"); + try { + Validations.validateCredentials(credentials); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateCredentials_noAuthMeansPassed() { + Credentials credentials = new Credentials(); + try { + Validations.validateCredentials(credentials); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateCredentials_multipleAuthMeansPassed() { + Credentials credentials = new Credentials(); + credentials.setToken("some-token"); + credentials.setApiKey("sky-ab123-abcd1234cdef1234abcd4321cdef4321"); + try { + Validations.validateCredentials(credentials); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateCredentials_emptyRoles() { + Credentials credentials = new Credentials(); + credentials.setToken("some-token"); + credentials.setRoles(new ArrayList<>()); + try { + Validations.validateCredentials(credentials); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── validateVaultConfiguration ──────────────────────────────────────────── + + @Test + public void testValidateVaultConfiguration_nullVaultId() { + VaultConfig config = new VaultConfig(); + config.setClusterId("cluster1"); + try { + Validations.validateVaultConfiguration(config); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateVaultConfiguration_emptyVaultId() { + VaultConfig config = new VaultConfig(); + config.setVaultId(" "); + config.setClusterId("cluster1"); + try { + Validations.validateVaultConfiguration(config); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateVaultConfiguration_neitherVaultUrlNorClusterId() { + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + try { + Validations.validateVaultConfiguration(config); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateVaultConfiguration_emptyClusterId() { + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + config.setClusterId(" "); + try { + Validations.validateVaultConfiguration(config); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateVaultConfiguration_emptyVaultUrl() { + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + config.setClusterId("cluster1"); + config.setVaultURL(" "); + try { + Validations.validateVaultConfiguration(config); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateVaultConfiguration_invalidVaultUrlFormat() { + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + config.setVaultURL("http://not-https.example.com"); + try { + Validations.validateVaultConfiguration(config); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateVaultConfiguration_validWithClusterId() { + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + config.setClusterId("cluster1"); + config.setEnv(Env.DEV); + try { + Validations.validateVaultConfiguration(config); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testValidateVaultConfiguration_validWithVaultUrl() { + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + config.setVaultURL("https://myvault.example.com"); + try { + Validations.validateVaultConfiguration(config); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testValidateVaultConfiguration_delegatesToCredentialValidation() { + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + config.setClusterId("cluster1"); + Credentials credentials = new Credentials(); + credentials.setApiKey("not-a-valid-api-key"); + config.setCredentials(credentials); + try { + Validations.validateVaultConfiguration(config); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── validateInsertRequest ───────────────────────────────────────────────── + + @Test + public void testValidateInsertRequest_nullRecords() { + InsertRequest request = InsertRequest.builder().table("table1").records(null).build(); + try { + Validations.validateInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateInsertRequest_emptyRecords() { + InsertRequest request = InsertRequest.builder().table("table1").records(new ArrayList<>()).build(); + try { + Validations.validateInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateInsertRequest_nullRecordInList() { + ArrayList records = new ArrayList<>(); + records.add(null); + InsertRequest request = InsertRequest.builder().table("table1").records(records).build(); + try { + Validations.validateInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateInsertRequest_tableSpecifiedAtBothPlaces() { + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().table("recordTable").data(data).build()); + InsertRequest request = InsertRequest.builder().table("requestTable").records(records).build(); + try { + Validations.validateInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateInsertRequest_tableMissingAtBothPlaces() { + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().data(data).build()); + InsertRequest request = InsertRequest.builder().records(records).build(); + try { + Validations.validateInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateInsertRequest_upsertAtRecordLevelWhenTableAtRequestLevel() { + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().data(data).upsert(Collections.singletonList("email")).build()); + InsertRequest request = InsertRequest.builder() + .table("table1") + .records(records) + .build(); + try { + Validations.validateInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateInsertRequest_emptyUpsertAtRequestLevel() { + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().data(data).build()); + InsertRequest request = InsertRequest.builder() + .table("table1") + .records(records) + .upsert(new ArrayList<>()) + .build(); + try { + Validations.validateInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateInsertRequest_emptyOrNullKeyInData() { + Map data = new HashMap<>(); + data.put("", "john"); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().table("table1").data(data).build()); + InsertRequest request = InsertRequest.builder().records(records).build(); + try { + Validations.validateInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateInsertRequest_emptyOrNullValueInData() { + Map data = new HashMap<>(); + data.put("name", ""); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().table("table1").data(data).build()); + InsertRequest request = InsertRequest.builder().records(records).build(); + try { + Validations.validateInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateInsertRequest_validRequest() { + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().table("table1").data(data).build()); + InsertRequest request = InsertRequest.builder().records(records).build(); + try { + Validations.validateInsertRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + // ── validateDetokenizeRequest ───────────────────────────────────────────── + + @Test + public void testValidateDetokenizeRequest_nullRequest() { + try { + Validations.validateDetokenizeRequest(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequest_nullDetokenizeData() { + DetokenizeRequest request = DetokenizeRequest.builder().detokenizeData(null).build(); + try { + Validations.validateDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequest_emptyDetokenizeData() { + DetokenizeRequest request = DetokenizeRequest.builder().detokenizeData(new ArrayList<>()).build(); + try { + Validations.validateDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequest_nullEntryInDetokenizeData() { + ArrayList data = new ArrayList<>(); + data.add(null); + DetokenizeRequest request = DetokenizeRequest.builder().detokenizeData(data).build(); + try { + Validations.validateDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequest_blankTokenInDetokenizeData() { + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData(" ")); + DetokenizeRequest request = DetokenizeRequest.builder().detokenizeData(data).build(); + try { + Validations.validateDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequest_nullTokenGroupRedactionInList() { + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + List groupRedactions = new ArrayList<>(); + groupRedactions.add(null); + DetokenizeRequest request = DetokenizeRequest.builder() + .detokenizeData(data) + .tokenGroupRedactions(groupRedactions) + .build(); + try { + Validations.validateDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequest_blankTokenGroupNameInRedaction() { + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + List groupRedactions = Collections.singletonList( + TokenGroupRedactions.builder().tokenGroupName(" ").redaction("MASKED").build()); + DetokenizeRequest request = DetokenizeRequest.builder() + .detokenizeData(data) + .tokenGroupRedactions(groupRedactions) + .build(); + try { + Validations.validateDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequest_blankRedactionInGroup() { + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + List groupRedactions = Collections.singletonList( + TokenGroupRedactions.builder().tokenGroupName("group1").redaction(" ").build()); + DetokenizeRequest request = DetokenizeRequest.builder() + .detokenizeData(data) + .tokenGroupRedactions(groupRedactions) + .build(); + try { + Validations.validateDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequest_validRequest() { + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + DetokenizeRequest request = DetokenizeRequest.builder().detokenizeData(data).build(); + try { + Validations.validateDetokenizeRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testValidateDetokenizeRequest_validRequestWithTokenGroupRedactions() { + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + List groupRedactions = Collections.singletonList( + TokenGroupRedactions.builder().tokenGroupName("group1").redaction("MASKED").build()); + DetokenizeRequest request = DetokenizeRequest.builder() + .detokenizeData(data) + .tokenGroupRedactions(groupRedactions) + .build(); + try { + Validations.validateDetokenizeRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } +} diff --git a/flowvault/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java b/flowvault/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java new file mode 100644 index 00000000..78d6aadd --- /dev/null +++ b/flowvault/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java @@ -0,0 +1,445 @@ +package com.skyflow.vault.controller; + +import com.skyflow.VaultClient; +import com.skyflow.config.Credentials; +import com.skyflow.config.VaultConfig; +import com.skyflow.enums.Env; +import com.skyflow.errors.SkyflowException; +import com.skyflow.generated.rest.ApiClient; +import com.skyflow.generated.rest.core.ApiClientApiException; +import com.skyflow.generated.rest.core.ApiClientException; +import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.resources.flowservice.FlowserviceClient; +import com.skyflow.generated.rest.resources.flowservice.RawFlowserviceClient; +import com.skyflow.generated.rest.types.FlowTokenizeResponseObjectToken; +import com.skyflow.generated.rest.types.V1DeleteTokenResponseObject; +import com.skyflow.generated.rest.types.V1FlowDeleteTokenResponse; +import com.skyflow.generated.rest.types.V1FlowDetokenizeResponse; +import com.skyflow.generated.rest.types.V1FlowDetokenizeResponseObject; +import com.skyflow.generated.rest.types.V1FlowTokenizeResponse; +import com.skyflow.generated.rest.types.V1FlowTokenizeResponseObject; +import com.skyflow.generated.rest.types.V1InsertResponse; +import com.skyflow.generated.rest.types.V1RecordResponseObject; +import com.skyflow.utils.Constants; +import com.skyflow.vault.data.DeleteTokensRequest; +import com.skyflow.vault.data.DeleteTokensResponse; +import com.skyflow.vault.data.DetokenizeData; +import com.skyflow.vault.data.DetokenizeRequest; +import com.skyflow.vault.data.DetokenizeResponse; +import com.skyflow.vault.data.InsertRecord; +import com.skyflow.vault.data.InsertRequest; +import com.skyflow.vault.data.InsertResponse; +import com.skyflow.vault.data.TokenizeRecord; +import com.skyflow.vault.data.TokenizeRequest; +import com.skyflow.vault.data.TokenizeResponse; +import okhttp3.Protocol; +import okhttp3.Request; +import okhttp3.Response; +import org.junit.Assert; +import org.junit.Test; +import org.mockito.Mockito; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +public class VaultControllerTests { + private static final String EXCEPTION_NOT_THROWN = "Should have thrown an exception"; + private static final String INVALID_EXCEPTION_THROWN = "Should not have thrown any exception"; + + private static VaultController createControllerWithMock(ApiClient mockApiClient) throws Exception { + Credentials creds = new Credentials(); + creds.setApiKey("sky-ab123-abcd1234cdef1234abcd4321cdef4321"); + + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + config.setClusterId("cluster123"); + config.setEnv(Env.DEV); + + VaultController controller = new VaultController(config, creds); + Field field = VaultClient.class.getDeclaredField("apiClient"); + field.setAccessible(true); + field.set(controller, mockApiClient); + return controller; + } + + private static Response buildOkHttpResponse() { + return new Response.Builder() + .request(new Request.Builder().url("https://dummy.example.com").build()) + .protocol(Protocol.HTTP_1_1) + .code(200) + .message("OK") + .header(Constants.REQUEST_ID_HEADER_KEY, "req-test-123") + .build(); + } + + private static RawFlowserviceClient mockRawFlowservice(ApiClient mockApi) { + FlowserviceClient mockFlowservice = Mockito.mock(FlowserviceClient.class); + RawFlowserviceClient mockRaw = Mockito.mock(RawFlowserviceClient.class); + when(mockApi.flowservice()).thenReturn(mockFlowservice); + when(mockFlowservice.withRawResponse()).thenReturn(mockRaw); + return mockRaw; + } + + // ── insert ──────────────────────────────────────────────────────────────── + + @Test + public void testInsert_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + Map tokens = new HashMap<>(); + tokens.put("name", "tok-abc"); + V1RecordResponseObject record = V1RecordResponseObject.builder() + .skyflowId("sky-id-1") + .tokens(tokens) + .build(); + V1InsertResponse body = V1InsertResponse.builder().records(Collections.singletonList(record)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.insert(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().table("table1").data(data).build()); + InsertRequest request = InsertRequest.builder().records(records).build(); + + InsertResponse response = controller.insert(request); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getInsertedFields().size()); + Assert.assertEquals("sky-id-1", response.getInsertedFields().get(0).get("skyflowId")); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testInsert_apiErrorThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + when(mockRaw.insert(any(), any())) + .thenThrow(new ApiClientApiException("insert failed", 401, "unauthorized")); + + VaultController controller = createControllerWithMock(mockApi); + + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().table("table1").data(data).build()); + InsertRequest request = InsertRequest.builder().records(records).build(); + + try { + controller.insert(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(401, e.getHttpCode()); + } + } + + @Test + public void testInsert_networkErrorThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + when(mockRaw.insert(any(), any())) + .thenThrow(new ApiClientException("Network error executing HTTP request")); + + VaultController controller = createControllerWithMock(mockApi); + + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().table("table1").data(data).build()); + InsertRequest request = InsertRequest.builder().records(records).build(); + + try { + controller.insert(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testInsert_invalidRequestThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + VaultController controller = createControllerWithMock(mockApi); + InsertRequest request = InsertRequest.builder().records(new ArrayList<>()).build(); + try { + controller.insert(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── detokenize ──────────────────────────────────────────────────────────── + + @Test + public void testDetokenize_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + V1FlowDetokenizeResponseObject record = V1FlowDetokenizeResponseObject.builder() + .token("token1") + .value("secret-value") + .build(); + V1FlowDetokenizeResponse body = V1FlowDetokenizeResponse.builder() + .response(Collections.singletonList(record)) + .build(); + ApiClientHttpResponse httpResp = + new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.detokenize(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + DetokenizeRequest request = DetokenizeRequest.builder().detokenizeData(data).build(); + + DetokenizeResponse response = controller.detokenize(request); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getDetokenizedFields().size()); + Assert.assertEquals("secret-value", response.getDetokenizedFields().get(0).getValue()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testDetokenize_apiErrorThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + when(mockRaw.detokenize(any(), any())) + .thenThrow(new ApiClientApiException("detokenize failed", 401, "unauthorized")); + + VaultController controller = createControllerWithMock(mockApi); + + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + DetokenizeRequest request = DetokenizeRequest.builder().detokenizeData(data).build(); + + try { + controller.detokenize(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(401, e.getHttpCode()); + } + } + + @Test + public void testDetokenize_networkErrorThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + when(mockRaw.detokenize(any(), any())) + .thenThrow(new ApiClientException("Network error executing HTTP request")); + + VaultController controller = createControllerWithMock(mockApi); + + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + DetokenizeRequest request = DetokenizeRequest.builder().detokenizeData(data).build(); + + try { + controller.detokenize(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testDetokenize_nullRequestThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + VaultController controller = createControllerWithMock(mockApi); + try { + controller.detokenize(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── tokenize ────────────────────────────────────────────────────────────── + + @Test + public void testTokenize_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + FlowTokenizeResponseObjectToken token = FlowTokenizeResponseObjectToken.builder() + .tokenGroupName("group1") + .token("tok-abc") + .build(); + V1FlowTokenizeResponseObject responseObject = V1FlowTokenizeResponseObject.builder() + .value("value1") + .tokens(Collections.singletonList(token)) + .build(); + V1FlowTokenizeResponse body = V1FlowTokenizeResponse.builder() + .response(Collections.singletonList(responseObject)) + .build(); + ApiClientHttpResponse httpResp = + new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.tokenize(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + ArrayList records = new ArrayList<>(); + records.add(TokenizeRecord.builder() + .value("value1") + .tokenGroupNames(Collections.singletonList("group1")) + .build()); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + + TokenizeResponse response = controller.tokenize(request); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getTokenizedData().size()); + Assert.assertEquals("tok-abc", response.getTokenizedData().get(0).getTokens().get("group1")); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testTokenize_apiErrorThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + when(mockRaw.tokenize(any(), any())) + .thenThrow(new ApiClientApiException("tokenize failed", 401, "unauthorized")); + + VaultController controller = createControllerWithMock(mockApi); + + ArrayList records = new ArrayList<>(); + records.add(TokenizeRecord.builder() + .value("value1") + .tokenGroupNames(Collections.singletonList("group1")) + .build()); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + + try { + controller.tokenize(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(401, e.getHttpCode()); + } + } + + @Test + public void testTokenize_networkErrorThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + when(mockRaw.tokenize(any(), any())) + .thenThrow(new ApiClientException("Network error executing HTTP request")); + + VaultController controller = createControllerWithMock(mockApi); + + ArrayList records = new ArrayList<>(); + records.add(TokenizeRecord.builder() + .value("value1") + .tokenGroupNames(Collections.singletonList("group1")) + .build()); + TokenizeRequest request = TokenizeRequest.builder().data(records).build(); + + try { + controller.tokenize(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testTokenize_nullRequestThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + VaultController controller = createControllerWithMock(mockApi); + try { + controller.tokenize(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + // ── deleteTokens ────────────────────────────────────────────────────────── + + @Test + public void testDeleteTokens_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + V1DeleteTokenResponseObject record = V1DeleteTokenResponseObject.builder() + .value("token1") + .build(); + V1FlowDeleteTokenResponse body = V1FlowDeleteTokenResponse.builder() + .tokens(Collections.singletonList(record)) + .build(); + ApiClientHttpResponse httpResp = + new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.deletetoken(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + DeleteTokensRequest request = DeleteTokensRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + + DeleteTokensResponse response = controller.deleteTokens(request); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(Collections.singletonList("token1"), response.getTokens()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testDeleteTokens_apiErrorThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + when(mockRaw.deletetoken(any(), any())) + .thenThrow(new ApiClientApiException("delete failed", 404, "not found")); + + VaultController controller = createControllerWithMock(mockApi); + + DeleteTokensRequest request = DeleteTokensRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + + try { + controller.deleteTokens(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertEquals(404, e.getHttpCode()); + } + } + + @Test + public void testDeleteTokens_networkErrorThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + when(mockRaw.deletetoken(any(), any())) + .thenThrow(new ApiClientException("Network error executing HTTP request")); + + VaultController controller = createControllerWithMock(mockApi); + + DeleteTokensRequest request = DeleteTokensRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + + try { + controller.deleteTokens(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testDeleteTokens_nullRequestThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + VaultController controller = createControllerWithMock(mockApi); + try { + controller.deleteTokens(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } +} diff --git a/v2/src/main/java/com/skyflow/vault/tokens/TokenizeResponse.java b/v2/src/main/java/com/skyflow/vault/tokens/TokenizeResponse.java index d8d8072b..c77787cf 100644 --- a/v2/src/main/java/com/skyflow/vault/tokens/TokenizeResponse.java +++ b/v2/src/main/java/com/skyflow/vault/tokens/TokenizeResponse.java @@ -1,9 +1,13 @@ package com.skyflow.vault.tokens; -import com.google.gson.*; - import java.util.List; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + public class TokenizeResponse { private final List tokens; From 556e552ef74316ff67b7ec86caa6b2200e40ec75 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 17 Jul 2026 18:13:56 +0530 Subject: [PATCH 14/26] SK-2967 fix internal release workflows --- .../workflows/flowvault-internal-release.yml | 27 ------------------ .github/workflows/internal-release.yml | 28 +++++++++++++++---- 2 files changed, 22 insertions(+), 33 deletions(-) delete mode 100644 .github/workflows/flowvault-internal-release.yml diff --git a/.github/workflows/flowvault-internal-release.yml b/.github/workflows/flowvault-internal-release.yml deleted file mode 100644 index b1e65c12..00000000 --- a/.github/workflows/flowvault-internal-release.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Publish v3 module to the JFROG Artifactory -on: - push: - tags-ignore: - - '*.*' - paths-ignore: - - "*.md" - branches: - - v3-release/* - -jobs: - build-and-deploy-v3: - uses: ./.github/workflows/shared-build-and-deploy.yml - with: - ref: ${{ github.ref_name }} - server-id: central - profile: jfrog - tag: 'internal' - module: 'flowvault' - secrets: - server-username: ${{ secrets.ARTIFACTORY_USERNAME }} - server-password: ${{ secrets.ARTIFACTORY_PASSWORD }} - gpg-key: ${{ secrets.JFROG_GPG_KEY }} - gpg-passphrase: ${{ secrets.JFROG_GPG_PASSPHRASE }} - skyflow-credentials: ${{ secrets.SKYFLOW_CREDENTIALS }} - test-expired-token: ${{ secrets.TEST_EXPIRED_TOKEN }} - test-reusable-token: ${{ secrets.TEST_REUSABLE_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/internal-release.yml b/.github/workflows/internal-release.yml index 70a33281..a246a6e3 100644 --- a/.github/workflows/internal-release.yml +++ b/.github/workflows/internal-release.yml @@ -1,4 +1,4 @@ -name: Publish v2 module to the JFROG Artifactory +name: Publish module to the JFROG Artifactory on: push: tags-ignore: @@ -7,21 +7,37 @@ on: - "*.md" branches: - release/* + - flowvault-release/* jobs: - build-and-deploy-v2: + resolve-module: + runs-on: ubuntu-latest + outputs: + module: ${{ steps.set-module.outputs.module }} + steps: + - name: Resolve module from branch name + id: set-module + run: | + if [[ "${{ github.ref_name }}" == flowvault-release/* ]]; then + echo "module=flowvault" >> "$GITHUB_OUTPUT" + else + echo "module=v2" >> "$GITHUB_OUTPUT" + fi + + build-and-deploy: + needs: resolve-module uses: ./.github/workflows/shared-build-and-deploy.yml with: ref: ${{ github.ref_name }} server-id: central profile: jfrog tag: 'internal' - module: 'v2' + module: ${{ needs.resolve-module.outputs.module }} secrets: server-username: ${{ secrets.ARTIFACTORY_USERNAME }} server-password: ${{ secrets.ARTIFACTORY_PASSWORD }} gpg-key: ${{ secrets.JFROG_GPG_KEY }} gpg-passphrase: ${{ secrets.JFROG_GPG_PASSPHRASE }} - skyflow-credentials: ${{ secrets.SKYFLOW_CREDENTIALS }} >> .env - test-expired-token: ${{ secrets.TEST_EXPIRED_TOKEN }} >> .env - test-reusable-token: ${{ secrets.TEST_REUSABLE_TOKEN }} >> .env + skyflow-credentials: ${{ secrets.SKYFLOW_CREDENTIALS }} + test-expired-token: ${{ secrets.TEST_EXPIRED_TOKEN }} + test-reusable-token: ${{ secrets.TEST_REUSABLE_TOKEN }} From 7cea4eb8bb1384a7c1394563ffdb97a01dfa07c5 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 17 Jul 2026 12:45:52 +0000 Subject: [PATCH 15/26] [AUTOMATED] Private Release 1.15.1-dev-cd30d53 --- v2/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/pom.xml b/v2/pom.xml index 01370ded..581c615a 100644 --- a/v2/pom.xml +++ b/v2/pom.xml @@ -11,7 +11,7 @@ skyflow-java - 1.15.1-dev.807824c + 1.15.1-dev.cd30d53 com.skyflow From eacdd60983997bfa2d3eb892c14c7bdaa5a8b0da Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 17 Jul 2026 18:21:06 +0530 Subject: [PATCH 16/26] SK-2967 fix internal release workflows --- v2/pom.xml | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/v2/pom.xml b/v2/pom.xml index b35a9552..088affcd 100644 --- a/v2/pom.xml +++ b/v2/pom.xml @@ -48,4 +48,49 @@ + + + jfrog + + + central + prekarilabs.jfrog.io-releases + https://prekarilabs.jfrog.io/artifactory/skyflow-java + + + snapshots + prekarilabs.jfrog.io-snapshots + https://prekarilabs.jfrog.io/artifactory/skyflow-java + + + + + maven-central + + + central + https://central.sonatype.com/api/v1/publisher/upload + + + central-snapshots + https://central.sonatype.com/api/v1/publisher/upload + + + + + + org.sonatype.central + central-publishing-maven-plugin + 0.4.0 + true + + central + true + true + + + + + + \ No newline at end of file From f1763a52e8212137716e0a04d8d5f09377347f16 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 17 Jul 2026 13:19:43 +0000 Subject: [PATCH 17/26] [AUTOMATED] Private Release 1.15.1-dev-139086e --- v2/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/pom.xml b/v2/pom.xml index a25cc846..8d634de3 100644 --- a/v2/pom.xml +++ b/v2/pom.xml @@ -11,7 +11,7 @@ skyflow-java - 1.15.1-dev.cd30d53 + 1.15.1-dev.139086e com.skyflow From d161a4224a9ed499bbbfa54f1724d173dd606266 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 17 Jul 2026 19:09:03 +0530 Subject: [PATCH 18/26] SK-2967 fix internal release workflows --- .github/workflows/shared-build-and-deploy.yml | 2 +- v2/pom.xml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/shared-build-and-deploy.yml b/.github/workflows/shared-build-and-deploy.yml index 77615306..174504cd 100644 --- a/.github/workflows/shared-build-and-deploy.yml +++ b/.github/workflows/shared-build-and-deploy.yml @@ -59,7 +59,7 @@ jobs: fetch-depth: 0 - name: Set up maven or jfrog repository - uses: actions/setup-java@v1 + uses: actions/setup-java@v4 with: java-version: "11" distribution: "adopt" diff --git a/v2/pom.xml b/v2/pom.xml index a25cc846..f143b99a 100644 --- a/v2/pom.xml +++ b/v2/pom.xml @@ -11,10 +11,11 @@ skyflow-java - 1.15.1-dev.cd30d53 + 2.1.1 com.skyflow + false 8 8 UTF-8 From 08e1761c708129a50b13c18041b120e627768af0 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 17 Jul 2026 19:30:26 +0530 Subject: [PATCH 19/26] SK-2967 fix internal release workflows --- v2/pom.xml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/v2/pom.xml b/v2/pom.xml index f143b99a..bd4f72e8 100644 --- a/v2/pom.xml +++ b/v2/pom.xml @@ -47,6 +47,26 @@ 9 + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + + + com.skyflow:common + + + + + + From 7dd73d502a282819aec87c88f720e95f93a5801d Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 17 Jul 2026 23:02:14 +0530 Subject: [PATCH 20/26] SK-2967 fix internal release workflows --- pom.xml | 2 +- v2/pom.xml | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index ec74443b..9dc3d230 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ io.github.cdimascio dotenv-java - 3.2.0 + 2.2.0 com.google.code.gson diff --git a/v2/pom.xml b/v2/pom.xml index bd4f72e8..9207abe0 100644 --- a/v2/pom.xml +++ b/v2/pom.xml @@ -39,14 +39,6 @@ - - org.apache.maven.plugins - maven-compiler-plugin - - 9 - 9 - - org.apache.maven.plugins maven-shade-plugin From 5ee3646f869ff35a45acdb71b7fd0e9f136c1373 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Sat, 18 Jul 2026 01:11:41 +0530 Subject: [PATCH 21/26] SK-2967 add back the bulk interfaces --- .../com/skyflow/enums/CustomHeaderKey.java | 2 +- .../skyflow/vault/data/RequestContext.java | 2 +- .../vault/data/RequestInterceptor.java | 0 .../main/java/com/skyflow/utils/Utils.java | 538 ++++++++++ .../utils/validations/Validations.java | 227 ++++ .../vault/controller/VaultController.java | 984 +++++++++++++++++- .../vault/data/BulkDeleteTokensRequest.java | 34 + .../vault/data/BulkDeleteTokensResponse.java | 50 + .../vault/data/BulkDetokenizeRequest.java | 41 + .../vault/data/BulkDetokenizeResponse.java | 63 ++ .../skyflow/vault/data/BulkInsertRecord.java | 68 ++ .../skyflow/vault/data/BulkInsertRequest.java | 69 ++ .../vault/data/BulkInsertResponse.java | 68 ++ .../vault/data/BulkTokenGroupRedactions.java | 39 + .../vault/data/BulkTokenizeRecord.java | 44 + .../vault/data/BulkTokenizeRequest.java | 34 + .../vault/data/BulkTokenizeResponse.java | 80 ++ .../vault/data/DeleteTokensOptions.java | 30 + .../vault/data/DeleteTokensSuccess.java | 31 + .../vault/data/DeleteTokensSummary.java | 41 + .../skyflow/vault/data/DetokenizeOptions.java | 30 + .../vault/data/DetokenizeResponseObject.java | 63 ++ .../skyflow/vault/data/DetokenizeSummary.java | 40 + .../com/skyflow/vault/data/ErrorRecord.java | 51 + .../java/com/skyflow/vault/data/Success.java | 53 + .../java/com/skyflow/vault/data/Summary.java | 42 + .../java/com/skyflow/vault/data/Token.java | 23 + .../skyflow/vault/data/TokenizeOptions.java | 30 + .../skyflow/vault/data/TokenizeSuccess.java | 53 + .../skyflow/vault/data/TokenizeSummary.java | 39 + .../java/com/skyflow/utils/UtilsTests.java | 582 +++++++++++ .../utils/validations/ValidationsTests.java | 392 +++++++ .../controller/VaultControllerTests.java | 380 +++++++ 33 files changed, 4215 insertions(+), 8 deletions(-) rename {flowvault => common}/src/main/java/com/skyflow/enums/CustomHeaderKey.java (99%) rename {flowvault => common}/src/main/java/com/skyflow/vault/data/RequestContext.java (88%) rename {flowvault => common}/src/main/java/com/skyflow/vault/data/RequestInterceptor.java (100%) create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkDeleteTokensRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkDeleteTokensResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkDetokenizeRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkDetokenizeResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkInsertRecord.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkInsertRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkInsertResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkTokenGroupRedactions.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeRecord.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeRequest.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeResponse.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensOptions.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensSuccess.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensSummary.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DetokenizeOptions.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponseObject.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/DetokenizeSummary.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/ErrorRecord.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/Success.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/Summary.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/Token.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/TokenizeOptions.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/TokenizeSuccess.java create mode 100644 flowvault/src/main/java/com/skyflow/vault/data/TokenizeSummary.java diff --git a/flowvault/src/main/java/com/skyflow/enums/CustomHeaderKey.java b/common/src/main/java/com/skyflow/enums/CustomHeaderKey.java similarity index 99% rename from flowvault/src/main/java/com/skyflow/enums/CustomHeaderKey.java rename to common/src/main/java/com/skyflow/enums/CustomHeaderKey.java index 8e6190c6..03649eee 100644 --- a/flowvault/src/main/java/com/skyflow/enums/CustomHeaderKey.java +++ b/common/src/main/java/com/skyflow/enums/CustomHeaderKey.java @@ -15,4 +15,4 @@ public enum CustomHeaderKey { public String toString() { return this.value; } -} \ No newline at end of file +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/RequestContext.java b/common/src/main/java/com/skyflow/vault/data/RequestContext.java similarity index 88% rename from flowvault/src/main/java/com/skyflow/vault/data/RequestContext.java rename to common/src/main/java/com/skyflow/vault/data/RequestContext.java index 1473df50..0cf6055b 100644 --- a/flowvault/src/main/java/com/skyflow/vault/data/RequestContext.java +++ b/common/src/main/java/com/skyflow/vault/data/RequestContext.java @@ -10,7 +10,7 @@ public final class RequestContext { private final String operation; private final Map headers = new HashMap<>(); - public RequestContext(String operation, int batchIndex, int totalBatches) { + public RequestContext(String operation) { this.operation = operation; } diff --git a/flowvault/src/main/java/com/skyflow/vault/data/RequestInterceptor.java b/common/src/main/java/com/skyflow/vault/data/RequestInterceptor.java similarity index 100% rename from flowvault/src/main/java/com/skyflow/vault/data/RequestInterceptor.java rename to common/src/main/java/com/skyflow/vault/data/RequestInterceptor.java diff --git a/flowvault/src/main/java/com/skyflow/utils/Utils.java b/flowvault/src/main/java/com/skyflow/utils/Utils.java index cb69453f..db2d00bd 100644 --- a/flowvault/src/main/java/com/skyflow/utils/Utils.java +++ b/flowvault/src/main/java/com/skyflow/utils/Utils.java @@ -326,4 +326,542 @@ public static TokenizeResponse buildTokenizeResponse(V1FlowTokenizeResponse res, tokenizeResponse.setTokenizedData(tokenizedData); return tokenizeResponse; } + + // ── Bulk (batched/concurrent) request-body builders ────────────────────── + + public static com.skyflow.generated.rest.resources.flowservice.requests.V1InsertRequest getBulkInsertRequestBody(BulkInsertRequest request, VaultConfig config) { + ArrayList records = request.getRecords(); + List insertRecordDataList = new ArrayList<>(); + for (BulkInsertRecord record : records) { + V1InsertRecordData.Builder data = V1InsertRecordData.builder(); + data.data(record.getData()); + if (record.getTable() != null && !record.getTable().isEmpty()) { + data.tableName(record.getTable()); + } + if (record.getUpsert() != null && !record.getUpsert().isEmpty()) { + if (record.getUpsertType() != null) { + FlowEnumUpdateType updateType = null; + if (record.getUpsertType() == UpsertType.REPLACE) { + updateType = FlowEnumUpdateType.REPLACE; + } else if (record.getUpsertType() == UpsertType.UPDATE) { + updateType = FlowEnumUpdateType.UPDATE; + } + V1Upsert upsert = V1Upsert.builder().uniqueColumns(record.getUpsert()).updateType(updateType).build(); + data.upsert(upsert); + } else { + V1Upsert upsert = V1Upsert.builder().uniqueColumns(record.getUpsert()).build(); + data.upsert(upsert); + } + } + insertRecordDataList.add(data.build()); + } + + com.skyflow.generated.rest.resources.flowservice.requests.V1InsertRequest.Builder builder = + com.skyflow.generated.rest.resources.flowservice.requests.V1InsertRequest.builder() + .vaultId(config.getVaultId()) + .records(insertRecordDataList); + + if (request.getTable() != null && !request.getTable().isEmpty()) { + builder.tableName(request.getTable()); + } + + if (request.getUpsert() != null && !request.getUpsert().isEmpty()) { + if (request.getUpsertType() != null) { + FlowEnumUpdateType updateType = null; + if (request.getUpsertType() == UpsertType.REPLACE) { + updateType = FlowEnumUpdateType.REPLACE; + } else if (request.getUpsertType() == UpsertType.UPDATE) { + updateType = FlowEnumUpdateType.UPDATE; + } + V1Upsert upsert = V1Upsert.builder().uniqueColumns(request.getUpsert()).updateType(updateType).build(); + builder.upsert(upsert); + } else { + V1Upsert upsert = V1Upsert.builder().uniqueColumns(request.getUpsert()).build(); + builder.upsert(upsert); + } + } + return builder.build(); + } + + public static V1FlowDetokenizeRequest getBulkDetokenizeRequestBody(BulkDetokenizeRequest request, String vaultId) { + V1FlowDetokenizeRequest.Builder builder = V1FlowDetokenizeRequest.builder() + .vaultId(vaultId) + .tokens(request.getTokens()); + if (request.getTokenGroupRedactions() != null && !request.getTokenGroupRedactions().isEmpty()) { + List tokenGroupRedactionsList = new ArrayList<>(); + for (BulkTokenGroupRedactions tokenGroupRedactions : request.getTokenGroupRedactions()) { + tokenGroupRedactionsList.add(V1TokenGroupRedactions.builder() + .tokenGroupName(tokenGroupRedactions.getTokenGroupName()) + .redaction(tokenGroupRedactions.getRedaction()) + .build()); + } + builder.tokenGroupRedactions(tokenGroupRedactionsList); + } + return builder.build(); + } + + public static com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest getBulkDeleteTokensRequestBody(BulkDeleteTokensRequest request, String vaultId) { + return com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest.builder() + .vaultId(vaultId) + .tokens(request.getTokens()) + .build(); + } + + public static com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest getBulkTokenizeRequestBody(BulkTokenizeRequest request, String vaultId) { + List dataList = new ArrayList<>(); + for (BulkTokenizeRecord record : request.getData()) { + dataList.add(V1FlowTokenizeRequestObject.builder() + .value(record.getValue()) + .tokenGroupNames(record.getTokenGroupNames()) + .build()); + } + return com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest.builder() + .vaultId(vaultId) + .data(dataList) + .build(); + } + + // ── Bulk batching, exception-handling and response-formatting helpers ──── + + public static List> createBulkInsertBatches(List records, int batchSize) { + List> batches = new ArrayList<>(); + for (int i = 0; i < records.size(); i += batchSize) { + batches.add(records.subList(i, Math.min(i + batchSize, records.size()))); + } + return batches; + } + + public static List createBulkDetokenizeBatches(V1FlowDetokenizeRequest request, int batchSize) { + List detokenizeRequests = new ArrayList<>(); + List tokens = request.getTokens().get(); + + for (int i = 0; i < tokens.size(); i += batchSize) { + List batchTokens = tokens.subList(i, Math.min(i + batchSize, tokens.size())); + List tokenGroupRedactions = null; + if (request.getTokenGroupRedactions().isPresent() && !request.getTokenGroupRedactions().get().isEmpty()) { + tokenGroupRedactions = request.getTokenGroupRedactions().get(); + } + V1FlowDetokenizeRequest batchRequest = V1FlowDetokenizeRequest.builder() + .vaultId(request.getVaultId()) + .tokens(new ArrayList<>(batchTokens)) + .tokenGroupRedactions(tokenGroupRedactions) + .build(); + + detokenizeRequests.add(batchRequest); + } + + return detokenizeRequests; + } + + public static List createBulkDeleteTokensBatches( + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest request, int batchSize) { + List batches = new ArrayList<>(); + List tokens = request.getTokens().get(); + for (int i = 0; i < tokens.size(); i += batchSize) { + List batchTokens = tokens.subList(i, Math.min(i + batchSize, tokens.size())); + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest batchRequest = + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest.builder() + .vaultId(request.getVaultId()) + .tokens(new ArrayList<>(batchTokens)) + .build(); + batches.add(batchRequest); + } + return batches; + } + + public static List createBulkTokenizeBatches( + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest request, int batchSize) { + List batches = new ArrayList<>(); + List data = request.getData().get(); + for (int i = 0; i < data.size(); i += batchSize) { + List batchData = data.subList(i, Math.min(i + batchSize, data.size())); + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest batchRequest = + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest.builder() + .vaultId(request.getVaultId()) + .data(new ArrayList<>(batchData)) + .build(); + batches.add(batchRequest); + } + return batches; + } + + public static ErrorRecord createErrorRecord(Map recordMap, int indexNumber, String requestId) { + ErrorRecord err = null; + if (recordMap != null) { + int code = 500; + if (recordMap.containsKey("http_code")) { + code = (Integer) recordMap.get("http_code"); + } else if (recordMap.containsKey("httpCode")) { + code = (Integer) recordMap.get("httpCode"); + } else if (recordMap.containsKey("statusCode")) { + code = (Integer) recordMap.get("statusCode"); + } + String message = recordMap.containsKey("error") ? (String) recordMap.get("error") : + recordMap.containsKey("message") ? (String) recordMap.get("message") : "Unknown error"; + err = new ErrorRecord(indexNumber, message, code, requestId); + } + return err; + } + + public static List handleBulkInsertBatchException( + Throwable ex, List batch, int batchNumber, int batchSize + ) { + List errorRecords = new ArrayList<>(); + Throwable cause = ex.getCause(); + if (cause instanceof ApiClientApiException) { + ApiClientApiException apiException = (ApiClientApiException) cause; + String requestId = extractRequestId(apiException.headers()); + Object rawBody = apiException.body(); + Map responseBody = (rawBody instanceof Map) ? (Map) rawBody : null; + int indexNumber = batchNumber > 0 ? batchNumber * batchSize : 0; + if (responseBody != null) { + if (responseBody.containsKey("records")) { + Object recordss = responseBody.get("records"); + if (recordss instanceof List) { + List recordsList = (List) recordss; + for (Object record : recordsList) { + if (record instanceof Map) { + Map recordMap = (Map) record; + ErrorRecord err = createErrorRecord(recordMap, indexNumber, requestId); + errorRecords.add(err); + indexNumber++; + } + } + } + } else if (responseBody.containsKey("error")) { + Object errField = responseBody.get("error"); + Map recordMap = (errField instanceof Map) ? (Map) errField : null; + String fallbackMsg = (errField instanceof String) ? (String) errField : null; + for (int j = 0; j < batch.size(); j++) { + ErrorRecord err = (recordMap != null) + ? createErrorRecord(recordMap, indexNumber, requestId) + : new ErrorRecord(indexNumber, fallbackMsg != null ? fallbackMsg : apiException.getMessage(), apiException.statusCode(), requestId); + errorRecords.add(err); + indexNumber++; + } + } + } + if (errorRecords.isEmpty()) { + for (int j = 0; j < batch.size(); j++) { + errorRecords.add(new ErrorRecord(indexNumber, apiException.getMessage(), apiException.statusCode(), requestId)); + indexNumber++; + } + } + } else { + int indexNumber = batchNumber > 0 ? batchNumber * batchSize : 0; + for (int j = 0; j < batch.size(); j++) { + ErrorRecord err = new ErrorRecord(indexNumber, ex.getMessage(), 500); + errorRecords.add(err); + indexNumber++; + } + } + return errorRecords; + } + + public static List handleBulkDetokenizeBatchException( + Throwable ex, V1FlowDetokenizeRequest batch, int batchNumber, int batchSize + ) { + List errorRecords = new ArrayList<>(); + Throwable cause = ex.getCause(); + if (cause instanceof ApiClientApiException) { + ApiClientApiException apiException = (ApiClientApiException) cause; + String requestId = extractRequestId(apiException.headers()); + Object rawBody = apiException.body(); + Map responseBody = (rawBody instanceof Map) ? (Map) rawBody : null; + int indexNumber = batchNumber * batchSize; + if (responseBody != null) { + if (responseBody.containsKey("response")) { + Object recordss = responseBody.get("response"); + if (recordss instanceof List) { + List recordsList = (List) recordss; + for (Object record : recordsList) { + if (record instanceof Map) { + Map recordMap = (Map) record; + ErrorRecord err = createErrorRecord(recordMap, indexNumber, requestId); + errorRecords.add(err); + indexNumber++; + } + } + } + } else if (responseBody.containsKey("error")) { + Object errField = responseBody.get("error"); + Map recordMap = (errField instanceof Map) ? (Map) errField : null; + String fallbackMsg = (errField instanceof String) ? (String) errField : null; + int tokenCount = batch.getTokens().isPresent() ? batch.getTokens().get().size() : 0; + for (int j = 0; j < tokenCount; j++) { + ErrorRecord err = (recordMap != null) + ? createErrorRecord(recordMap, indexNumber, requestId) + : new ErrorRecord(indexNumber, fallbackMsg != null ? fallbackMsg : apiException.getMessage(), apiException.statusCode(), requestId); + errorRecords.add(err); + indexNumber++; + } + } + } + if (errorRecords.isEmpty()) { + int tokenCount = batch.getTokens().isPresent() ? batch.getTokens().get().size() : 0; + for (int j = 0; j < tokenCount; j++) { + errorRecords.add(new ErrorRecord(indexNumber, apiException.getMessage(), apiException.statusCode(), requestId)); + indexNumber++; + } + } + } else { + int indexNumber = batchNumber * batchSize; + for (int j = 0; j < batch.getTokens().get().size(); j++) { + ErrorRecord err = new ErrorRecord(indexNumber, ex.getMessage(), 500); + errorRecords.add(err); + indexNumber++; + } + } + return errorRecords; + } + + public static List handleBulkDeleteTokensBatchException( + Throwable ex, + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest batch, + int batchNumber, int batchSize + ) { + List errorRecords = new ArrayList<>(); + Throwable cause = ex.getCause(); + if (cause instanceof ApiClientApiException) { + ApiClientApiException apiException = (ApiClientApiException) cause; + String requestId = extractRequestId(apiException.headers()); + Object rawBody = apiException.body(); + Map responseBody = (rawBody instanceof Map) ? (Map) rawBody : null; + int indexNumber = batchNumber * batchSize; + if (responseBody != null) { + if (responseBody.containsKey("tokens")) { + Object tokensList = responseBody.get("tokens"); + if (tokensList instanceof List) { + List recordsList = (List) tokensList; + for (Object record : recordsList) { + if (record instanceof Map) { + Map recordMap = (Map) record; + ErrorRecord err = createErrorRecord(recordMap, indexNumber, requestId); + errorRecords.add(err); + indexNumber++; + } + } + } + } else if (responseBody.containsKey("error")) { + Object errField = responseBody.get("error"); + Map recordMap = (errField instanceof Map) ? (Map) errField : null; + String fallbackMsg = (errField instanceof String) ? (String) errField : null; + int tokenCount = batch.getTokens().isPresent() ? batch.getTokens().get().size() : 0; + for (int j = 0; j < tokenCount; j++) { + ErrorRecord err = (recordMap != null) + ? createErrorRecord(recordMap, indexNumber, requestId) + : new ErrorRecord(indexNumber, fallbackMsg != null ? fallbackMsg : apiException.getMessage(), apiException.statusCode(), requestId); + errorRecords.add(err); + indexNumber++; + } + } + } + if (errorRecords.isEmpty()) { + int tokenCount = batch.getTokens().isPresent() ? batch.getTokens().get().size() : 0; + for (int j = 0; j < tokenCount; j++) { + errorRecords.add(new ErrorRecord(indexNumber, apiException.getMessage(), apiException.statusCode(), requestId)); + indexNumber++; + } + } + } else { + int indexNumber = batchNumber * batchSize; + for (int j = 0; j < batch.getTokens().get().size(); j++) { + ErrorRecord err = new ErrorRecord(indexNumber, ex.getMessage(), 500); + errorRecords.add(err); + indexNumber++; + } + } + return errorRecords; + } + + public static List handleBulkTokenizeBatchException( + Throwable ex, + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest batch, + int batchNumber, int batchSize + ) { + List errorRecords = new ArrayList<>(); + Throwable cause = ex.getCause(); + if (cause instanceof ApiClientApiException) { + ApiClientApiException apiException = (ApiClientApiException) cause; + String requestId = extractRequestId(apiException.headers()); + Object rawBody = apiException.body(); + Map responseBody = (rawBody instanceof Map) ? (Map) rawBody : null; + int indexNumber = batchNumber * batchSize; + if (responseBody != null) { + if (responseBody.containsKey("response")) { + Object responseList = responseBody.get("response"); + if (responseList instanceof List) { + List recordsList = (List) responseList; + for (Object record : recordsList) { + if (record instanceof Map) { + Map recordMap = (Map) record; + ErrorRecord err = createErrorRecord(recordMap, indexNumber, requestId); + errorRecords.add(err); + indexNumber++; + } + } + } + } else if (responseBody.containsKey("error")) { + Object errField = responseBody.get("error"); + Map recordMap = (errField instanceof Map) ? (Map) errField : null; + String fallbackMsg = (errField instanceof String) ? (String) errField : null; + int batchDataSize = batch.getData().isPresent() ? batch.getData().get().size() : 0; + for (int j = 0; j < batchDataSize; j++) { + ErrorRecord err = (recordMap != null) + ? createErrorRecord(recordMap, indexNumber, requestId) + : new ErrorRecord(indexNumber, fallbackMsg != null ? fallbackMsg : apiException.getMessage(), apiException.statusCode(), requestId); + errorRecords.add(err); + indexNumber++; + } + } + } + if (errorRecords.isEmpty()) { + int batchDataSize = batch.getData().isPresent() ? batch.getData().get().size() : 0; + for (int j = 0; j < batchDataSize; j++) { + errorRecords.add(new ErrorRecord(indexNumber, apiException.getMessage(), apiException.statusCode(), requestId)); + indexNumber++; + } + } + } else { + int indexNumber = batchNumber * batchSize; + int batchDataSize = batch.getData().isPresent() ? batch.getData().get().size() : 0; + for (int j = 0; j < batchDataSize; j++) { + ErrorRecord err = new ErrorRecord(indexNumber, ex.getMessage(), 500); + errorRecords.add(err); + indexNumber++; + } + } + return errorRecords; + } + + public static BulkInsertResponse formatBulkInsertResponse(V1InsertResponse response, int batch, int batchSize, Map> headers) { + BulkInsertResponse formattedResponse = null; + List successRecords = new ArrayList<>(); + List errorRecords = new ArrayList<>(); + if (response != null) { + String requestId = extractRequestId(headers); + List record = response.getRecords().get(); + int indexNumber = batch * batchSize; + int recordsSize = response.getRecords().get().size(); + for (int index = 0; index < recordsSize; index++) { + if (record.get(index).getError().isPresent()) { + ErrorRecord errorRecord = new ErrorRecord(indexNumber, record.get(index).getError().get(), record.get(index).getHttpCode().orElse(500), requestId); + errorRecords.add(errorRecord); + } else { + Map> tokensMap = null; + if (record.get(index).getTokens().isPresent()) { + tokensMap = new HashMap<>(); + Map tok = record.get(index).getTokens().get(); + for (Map.Entry entry : tok.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + List tokenList = new ArrayList<>(); + if (value instanceof List) { + List valueList = (List) value; + for (Object item : valueList) { + if (item instanceof Map) { + Map tokenMap = (Map) item; + com.skyflow.vault.data.Token token = new com.skyflow.vault.data.Token((String) tokenMap.get("token"), (String) tokenMap.get("tokenGroupName")); + tokenList.add(token); + } + } + } + tokensMap.put(key, tokenList); + } + } + Success success = new Success(indexNumber, record.get(index).getSkyflowId().orElse(null), tokensMap, record.get(index).getData().isPresent() ? record.get(index).getData().get() : null, record.get(index).getTableName().isPresent() ? record.get(index).getTableName().get() : null); + successRecords.add(success); + } + indexNumber++; + } + formattedResponse = new BulkInsertResponse(successRecords, errorRecords); + } + return formattedResponse; + } + + public static BulkDetokenizeResponse formatBulkDetokenizeResponse(V1FlowDetokenizeResponse response, int batch, int batchSize, Map> headers) { + if (response != null && response.getResponse().isPresent()) { + String requestId = extractRequestId(headers); + List record = response.getResponse().get(); + List errorRecords = new ArrayList<>(); + List successRecords = new ArrayList<>(); + int indexNumber = batch * batchSize; + int recordsSize = record.size(); + for (int index = 0; index < recordsSize; index++) { + if (record.get(index).getError().isPresent()) { + ErrorRecord errorRecord = new ErrorRecord(indexNumber, record.get(index).getError().get(), record.get(index).getHttpCode().orElse(500), requestId); + errorRecords.add(errorRecord); + } else { + DetokenizeResponseObject success = new DetokenizeResponseObject(indexNumber, record.get(index).getToken().orElse(null), record.get(index).getValue().orElse(null), record.get(index).getTokenGroupName().orElse(null), record.get(index).getError().orElse(null), record.get(index).getMetadata().orElse(null)); + successRecords.add(success); + } + indexNumber++; + } + return new BulkDetokenizeResponse(successRecords, errorRecords); + } + return null; + } + + public static BulkDeleteTokensResponse formatBulkDeleteTokensResponse( + V1FlowDeleteTokenResponse response, int batch, int batchSize, Map> headers) { + if (response != null && response.getTokens().isPresent()) { + String requestId = extractRequestId(headers); + List records = response.getTokens().get(); + List errorRecords = new ArrayList<>(); + List successRecords = new ArrayList<>(); + int indexNumber = batch * batchSize; + for (V1DeleteTokenResponseObject record : records) { + String tokenValue = record.getValue().orElse(null); + if (record.getError().isPresent() + && record.getError().get() != null + && !record.getError().get().isEmpty() + && record.getHttpCode().orElse(200) != 200) { + ErrorRecord errorRecord = new ErrorRecord(indexNumber, record.getError().get(), + record.getHttpCode().orElse(500), requestId); + errorRecords.add(errorRecord); + } else { + DeleteTokensSuccess success = new DeleteTokensSuccess(indexNumber, tokenValue); + successRecords.add(success); + } + indexNumber++; + } + return new BulkDeleteTokensResponse(successRecords, errorRecords); + } + return null; + } + + public static BulkTokenizeResponse formatBulkTokenizeResponse( + V1FlowTokenizeResponse response, + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest batchRequest, + int batchNumber, int batchSize, Map> headers) { + if (response != null && response.getResponse().isPresent()) { + String requestId = extractRequestId(headers); + List records = response.getResponse().get(); + List successRecords = new ArrayList<>(); + List errorRecords = new ArrayList<>(); + int indexNumber = batchNumber * batchSize; + for (V1FlowTokenizeResponseObject record : records) { + Object value = record.getValue().orElse(null); + TokenizeSuccess successEntry = null; + if (record.getTokens().isPresent()) { + for (FlowTokenizeResponseObjectToken tokenObj : record.getTokens().get()) { + if (tokenObj.getError().isPresent()) { + errorRecords.add(new ErrorRecord(indexNumber, tokenObj.getError().get(), tokenObj.getHttpCode().orElse(500), requestId)); + } else if (tokenObj.getTokenGroupName().isPresent() && tokenObj.getToken().isPresent()) { + if (successEntry == null) { + successEntry = new TokenizeSuccess(indexNumber, value); + } + successEntry.addToken(tokenObj.getTokenGroupName().get(), tokenObj.getToken().get()); + } + } + } + if (successEntry != null) { + successRecords.add(successEntry); + } + indexNumber++; + } + return new BulkTokenizeResponse(successRecords, errorRecords); + } + return null; + } } diff --git a/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java b/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java index 98dfdf64..c835cc78 100644 --- a/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java +++ b/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java @@ -381,4 +381,231 @@ public static void validateTokenizeRequest(TokenizeRequest request) throws Skyfl } } + // ── Bulk (batched/concurrent) request validations ──────────────────────── + + public static void validateBulkInsertRequest(BulkInsertRequest insertRequest) throws SkyflowException { + String table = insertRequest.getTable(); + ArrayList records = insertRequest.getRecords(); + if (records == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.RECORDS_IS_REQUIRED.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.RecordsKeyError.getMessage()); + } else if (records.isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_RECORDS.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyRecords.getMessage()); + } + + for (BulkInsertRecord record : records) { + if (record == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.INVALID_RECORD.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidRecord.getMessage()); + } + } + + // table check if specified for both + if (insertRequest.getTable() != null && !table.trim().isEmpty()) { + for (BulkInsertRecord record : records) { + if (record.getTable() != null && !record.getTable().trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.TABLE_SPECIFIED_AT_BOTH_PLACE.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.TableSpecifiedInRequestAndRecordObject.getMessage()); + } + } + } + // table check if not specified for both or if missing in any object + if (insertRequest.getTable() == null || table.trim().isEmpty()) { + for (BulkInsertRecord record : records) { + if (record.getTable() == null || record.getTable().trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.TABLE_NOT_SPECIFIED_AT_BOTH_PLACE.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.TableNotSpecifiedInRequestAndRecordObject.getMessage()); + } + } + } + // upsert check 1 + if (insertRequest.getTable() != null && !table.trim().isEmpty()) { + for (BulkInsertRecord record : records) { + if (record.getUpsert() != null && record.getUpsert().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_UPSERT_VALUES.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyUpsertValues.getMessage()); + } + if (record.getUpsert() != null && !record.getUpsert().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.UPSERT_TABLE_REQUEST_AT_RECORD_LEVEL.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.UpsertTableRequestAtRecordLevel.getMessage()); + } + } + } + // upsert check 2 + if (insertRequest.getTable() == null || table.trim().isEmpty()) { + if (insertRequest.getUpsert() != null && !insertRequest.getUpsert().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.UPSERT_TABLE_REQUEST_AT_REQUEST_LEVEL.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.UpsertTableRequestAtRequestLevel.getMessage()); + } + } + + if (insertRequest.getUpsert() != null && insertRequest.getUpsert().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_UPSERT_VALUES.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyUpsertValues.getMessage()); + } + + for (BulkInsertRecord record : records) { + if (record.getData() != null) { + for (String key : record.getData().keySet()) { + if (key == null || key.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_KEY_IN_VALUES.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyKeyInRecords.getMessage()); + } else { + Object value = record.getData().get(key); + if (value == null || value.toString().trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_VALUE_IN_VALUES.getLog(), + InterfaceName.INSERT.getName(), key + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyValueInValues.getMessage()); + } + } + } + } + } + } + + public static void validateBulkDetokenizeRequest(BulkDetokenizeRequest request) throws SkyflowException { + if (request == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.DETOKENIZE_REQUEST_NULL.getLog(), InterfaceName.DETOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.DetokenizeRequestNull.getMessage()); + } + List tokens = request.getTokens(); + if (tokens == null || tokens.isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_DETOKENIZE_DATA.getLog(), InterfaceName.DETOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyDetokenizeData.getMessage()); + } + + for (int index = 0; index < tokens.size(); index++) { + String token = tokens.get(index); + if (token == null || token.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_TOKEN_IN_DETOKENIZE_DATA.getLog(), + InterfaceName.DETOKENIZE.getName(), + String.valueOf(index))); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyTokenInDetokenizeData.getMessage()); + } + } + + List groupRedactions = request.getTokenGroupRedactions(); + if (groupRedactions != null && !groupRedactions.isEmpty()) { + for (BulkTokenGroupRedactions group : groupRedactions) { + if (group == null) { + LogUtil.printErrorLog(Utils.parameterizedString(ErrorLogs.NULL_TOKEN_REDACTION_GROUP_OBJECT.getLog(), InterfaceName.DETOKENIZE.getName())); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NullTokenGroupRedactions.getMessage()); + } + String groupName = group.getTokenGroupName(); + String redaction = group.getRedaction(); + if (groupName == null || groupName.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString(ErrorLogs.NULL_TOKEN_GROUP_NAME_IN_TOKEN_GROUP.getLog(), InterfaceName.DETOKENIZE.getName())); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NullTokenGroupNameInTokenGroup.getMessage()); + } + if (redaction == null || redaction.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString(ErrorLogs.EMPTY_OR_NULL_REDACTION_IN_TOKEN_GROUP.getLog(), InterfaceName.DETOKENIZE.getName())); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.NullRedactionInTokenGroup.getMessage()); + } + } + } + } + + public static void validateBulkDeleteTokensRequest(BulkDeleteTokensRequest request) throws SkyflowException { + if (request == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.DELETE_TOKENS_REQUEST_NULL.getLog(), InterfaceName.DELETE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.DeleteTokensRequestNull.getMessage()); + } + List tokens = request.getTokens(); + if (tokens == null || tokens.isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_DELETE_TOKENS_DATA.getLog(), InterfaceName.DELETE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyDeleteTokensData.getMessage()); + } + + for (int index = 0; index < tokens.size(); index++) { + String token = tokens.get(index); + if (token == null || token.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_OR_NULL_TOKEN_IN_DELETE_TOKENS_DATA.getLog(), + InterfaceName.DELETE.getName(), + String.valueOf(index))); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyTokenInDeleteTokensData.getMessage()); + } + } + } + + public static void validateBulkTokenizeRequest(BulkTokenizeRequest request) throws SkyflowException { + if (request == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.TOKENIZE_REQUEST_NULL.getLog(), InterfaceName.TOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.TokenizeRequestNull.getMessage()); + } + List data = request.getData(); + if (data == null || data.isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_TOKENIZE_DATA.getLog(), InterfaceName.TOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyTokenizeData.getMessage()); + } + for (int i = 0; i < data.size(); i++) { + BulkTokenizeRecord record = data.get(i); + if (record == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.TOKENIZE_RECORD_NULL.getLog(), InterfaceName.TOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.TokenizeRecordNull.getMessage()); + } + Object value = record.getValue(); + boolean isInvalid = value == null + || (value instanceof String && ((String) value).trim().isEmpty()); + if (isInvalid) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_VALUE_IN_TOKENIZE_RECORD.getLog(), InterfaceName.TOKENIZE.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyValueInTokenizeRecord.getMessage()); + } + List tokenGroupNames = record.getTokenGroupNames(); + if (tokenGroupNames != null) { + for (int j = 0; j < tokenGroupNames.size(); j++) { + String groupName = tokenGroupNames.get(j); + if (groupName == null || groupName.trim().isEmpty()) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.EMPTY_TOKEN_GROUP_NAME_IN_TOKENIZE_RECORD.getLog(), + InterfaceName.TOKENIZE.getName(), + String.valueOf(j) + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyTokenGroupNameInTokenizeRecord.getMessage()); + } + } + } + } + } + } diff --git a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java index 28c29839..bf6abc42 100644 --- a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java +++ b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java @@ -14,14 +14,27 @@ import com.skyflow.generated.rest.resources.flowservice.requests.V1InsertRequest; import com.skyflow.generated.rest.types.V1FlowDeleteTokenResponse; import com.skyflow.generated.rest.types.V1FlowTokenizeResponse; +import com.skyflow.generated.rest.types.V1InsertRecordData; import com.skyflow.generated.rest.types.V1InsertResponse; +import com.skyflow.generated.rest.types.V1Upsert; import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; +import com.skyflow.logs.WarningLogs; import com.skyflow.utils.Constants; import com.skyflow.utils.Utils; import com.skyflow.utils.logger.LogUtil; import com.skyflow.utils.validations.Validations; import com.skyflow.vault.data.*; +import io.github.cdimascio.dotenv.Dotenv; +import io.github.cdimascio.dotenv.DotenvException; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import static com.skyflow.utils.Utils.*; @@ -33,21 +46,46 @@ public final class VaultController extends VaultClient public VaultController(VaultConfig vaultConfig, Credentials credentials) throws SkyflowException { super(vaultConfig, credentials); } - private RequestOptions buildRequestOptions() { + + /** + * Immutable per-call batch size / concurrency limit. Computed fresh on every bulk call + * instead of being stored on instance fields, since a VaultController instance is cached + * and reused (see Skyflow#vaultClientsMap) and may be invoked concurrently from multiple + * threads. + */ + private static final class BatchConfig { + final int batchSize; + final int concurrencyLimit; + + BatchConfig(int batchSize, int concurrencyLimit) { + this.batchSize = batchSize; + this.concurrencyLimit = concurrencyLimit; + } + } + + private RequestOptions buildRequestOptions(RequestContext context) { RequestOptions.Builder builder = RequestOptions.builder() .addHeader(Constants.SDK_METRICS_HEADER_KEY, metrics.toString()); + context.getHeaders().forEach((k, v) -> builder.addHeader(k.toString(), v)); return builder.build(); } @Override public InsertResponse insert(InsertRequest request) throws SkyflowException { + return insert(request, null); + } + + public InsertResponse insert(InsertRequest request, InsertOptions options) throws SkyflowException { try { LogUtil.printInfoLog(InfoLogs.INSERT_TRIGGERED.getLog()); LogUtil.printInfoLog(InfoLogs.VALIDATE_INSERT_REQUEST.getLog()); Validations.validateInsertRequest(request); setBearerToken(); V1InsertRequest insertRequest = getBulkInsertRequestBody(request, super.getVaultConfig()); - V1InsertResponse response = this.getRecordsApi().withRawResponse().insert(insertRequest, buildRequestOptions()).body(); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + RequestContext ctx = new RequestContext("INSERT"); + if (interceptor != null) interceptor.intercept(ctx); + V1InsertResponse response = this.getRecordsApi().withRawResponse().insert(insertRequest, buildRequestOptions(ctx)).body(); return buildInsertResponse(response); } catch (ApiClientApiException e) { String bodyString = gson.toJson(e.body()); @@ -61,6 +99,10 @@ public InsertResponse insert(InsertRequest request) throws SkyflowException { @Override public DetokenizeResponse detokenize(DetokenizeRequest request) throws SkyflowException { + return detokenize(request, null); + } + + public DetokenizeResponse detokenize(DetokenizeRequest request, DetokenizeOptions options) throws SkyflowException { try { LogUtil.printInfoLog(InfoLogs.DETOKENIZE_TRIGGERED.getLog()); LogUtil.printInfoLog(InfoLogs.VALIDATE_DETOKENIZE_REQUEST.getLog()); @@ -68,7 +110,10 @@ public DetokenizeResponse detokenize(DetokenizeRequest request) throws SkyflowEx setBearerToken(); com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest requestDetokenize = getDetokenizeRequestBody(request, this.getVaultConfig().getVaultId()); - com.skyflow.generated.rest.types.V1FlowDetokenizeResponse response = this.getRecordsApi().withRawResponse().detokenize(requestDetokenize, buildRequestOptions()).body(); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + RequestContext ctx = new RequestContext("DETOKENIZE"); + if (interceptor != null) interceptor.intercept(ctx); + com.skyflow.generated.rest.types.V1FlowDetokenizeResponse response = this.getRecordsApi().withRawResponse().detokenize(requestDetokenize, buildRequestOptions(ctx)).body(); return buildDetokenizeResponse(response); } catch (ApiClientApiException e) { @@ -82,6 +127,10 @@ public DetokenizeResponse detokenize(DetokenizeRequest request) throws SkyflowEx } public TokenizeResponse tokenize(TokenizeRequest request) throws SkyflowException { + return tokenize(request, null); + } + + public TokenizeResponse tokenize(TokenizeRequest request, TokenizeOptions options) throws SkyflowException { try { LogUtil.printInfoLog(InfoLogs.TOKENIZE_TRIGGERED.getLog()); LogUtil.printInfoLog(InfoLogs.VALIDATING_TOKENIZE_REQUEST.getLog()); @@ -89,7 +138,10 @@ public TokenizeResponse tokenize(TokenizeRequest request) throws SkyflowExceptio setBearerToken(); com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest requestTokenize = getTokenizeRequestBody(request, this.getVaultConfig().getVaultId()); - ApiClientHttpResponse response = this.getRecordsApi().withRawResponse().tokenize(requestTokenize, buildRequestOptions()); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + RequestContext ctx = new RequestContext("TOKENIZE"); + if (interceptor != null) interceptor.intercept(ctx); + ApiClientHttpResponse response = this.getRecordsApi().withRawResponse().tokenize(requestTokenize, buildRequestOptions(ctx)); LogUtil.printInfoLog(InfoLogs.TOKENIZE_REQUEST_RESOLVED.getLog()); TokenizeResponse tokenizeResponse = buildTokenizeResponse(response.body(), response.headers(), request.getData().size()); @@ -106,6 +158,10 @@ public TokenizeResponse tokenize(TokenizeRequest request) throws SkyflowExceptio } public DeleteTokensResponse deleteTokens(DeleteTokensRequest request) throws SkyflowException { + return deleteTokens(request, null); + } + + public DeleteTokensResponse deleteTokens(DeleteTokensRequest request, DeleteTokensOptions options) throws SkyflowException { try { LogUtil.printInfoLog(InfoLogs.DELETE_TOKENS_TRIGGERED.getLog()); LogUtil.printInfoLog(InfoLogs.VALIDATE_DELETE_TOKENS_REQUEST.getLog()); @@ -113,7 +169,10 @@ public DeleteTokensResponse deleteTokens(DeleteTokensRequest request) throws Sky setBearerToken(); com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest requestDeleteTokens = getDeleteTokensRequestBody(request, this.getVaultConfig().getVaultId()); - ApiClientHttpResponse response = this.getRecordsApi().withRawResponse().deletetoken(requestDeleteTokens, buildRequestOptions()); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + RequestContext ctx = new RequestContext("DELETE_TOKENS"); + if (interceptor != null) interceptor.intercept(ctx); + ApiClientHttpResponse response = this.getRecordsApi().withRawResponse().deletetoken(requestDeleteTokens, buildRequestOptions(ctx)); LogUtil.printInfoLog(InfoLogs.DELETE_TOKENS_REQUEST_RESOLVED.getLog()); DeleteTokensResponse deleteTokensResponse = buildDeleteTokensResponse(response.body(), response.headers(), request.getTokens().size()); @@ -129,5 +188,918 @@ public DeleteTokensResponse deleteTokens(DeleteTokensRequest request) throws Sky } } + // ── Bulk Insert ─────────────────────────────────────────────────────────── + + public BulkInsertResponse bulkInsert(BulkInsertRequest insertRequest) throws SkyflowException { + return bulkInsert(insertRequest, null); + } + + public BulkInsertResponse bulkInsert(BulkInsertRequest insertRequest, InsertOptions options) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.INSERT_TRIGGERED.getLog()); + try { + LogUtil.printInfoLog(InfoLogs.VALIDATE_INSERT_REQUEST.getLog()); + Validations.validateBulkInsertRequest(insertRequest); + BatchConfig cfg = configureInsertConcurrencyAndBatchSize(insertRequest.getRecords().size()); + + setBearerToken(); + V1InsertRequest request = Utils.getBulkInsertRequestBody(insertRequest, this.getVaultConfig()); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + return this.processBulkInsertSync(request, insertRequest.getRecords(), interceptor, cfg); + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.INSERT_RECORDS_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + LogUtil.printErrorLog(ErrorLogs.INSERT_RECORDS_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); + } catch (ExecutionException e) { + LogUtil.printErrorLog(ErrorLogs.INSERT_RECORDS_REJECTED.getLog()); + Throwable cause = e.getCause(); + throw new SkyflowException(cause != null && cause.getMessage() != null ? cause.getMessage() : e.getMessage()); + } + } + + public CompletableFuture bulkInsertAsync(BulkInsertRequest insertRequest) throws SkyflowException { + return bulkInsertAsync(insertRequest, null); + } + + public CompletableFuture bulkInsertAsync(BulkInsertRequest insertRequest, InsertOptions options) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.INSERT_TRIGGERED.getLog()); + try { + LogUtil.printInfoLog(InfoLogs.VALIDATE_INSERT_REQUEST.getLog()); + Validations.validateBulkInsertRequest(insertRequest); + BatchConfig cfg = configureInsertConcurrencyAndBatchSize(insertRequest.getRecords().size()); + + setBearerToken(); + V1InsertRequest request = Utils.getBulkInsertRequestBody(insertRequest, this.getVaultConfig()); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + List errorRecords = Collections.synchronizedList(new ArrayList<>()); + List> futures = this.insertBatchFutures(request, errorRecords, interceptor, cfg); + + return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) + .thenApply(v -> { + List successRecords = new ArrayList<>(); + + for (CompletableFuture future : futures) { + BulkInsertResponse futureResponse = future.join(); + if (futureResponse != null) { + if (futureResponse.getSuccess() != null) { + successRecords.addAll(futureResponse.getSuccess()); + } + if (futureResponse.getErrors() != null) { + errorRecords.addAll(futureResponse.getErrors()); + } + } + } + + return new BulkInsertResponse(successRecords, errorRecords, insertRequest.getRecords()); + }); + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.INSERT_RECORDS_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } + } + + // ── Bulk Detokenize ─────────────────────────────────────────────────────── + + public BulkDetokenizeResponse bulkDetokenize(BulkDetokenizeRequest detokenizeRequest) throws SkyflowException { + return bulkDetokenize(detokenizeRequest, null); + } + + public BulkDetokenizeResponse bulkDetokenize(BulkDetokenizeRequest detokenizeRequest, DetokenizeOptions options) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.DETOKENIZE_TRIGGERED.getLog()); + try { + LogUtil.printInfoLog(InfoLogs.VALIDATE_DETOKENIZE_REQUEST.getLog()); + Validations.validateBulkDetokenizeRequest(detokenizeRequest); + BatchConfig cfg = configureDetokenizeConcurrencyAndBatchSize(detokenizeRequest.getTokens().size()); + setBearerToken(); + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest request = + Utils.getBulkDetokenizeRequestBody(detokenizeRequest, this.getVaultConfig().getVaultId()); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + return this.processBulkDetokenizeSync(request, detokenizeRequest.getTokens(), interceptor, cfg); + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.DETOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new SkyflowException(e.getMessage()); + } catch (ExecutionException e) { + throw new SkyflowException(e.getMessage()); + } + } + + public CompletableFuture bulkDetokenizeAsync(BulkDetokenizeRequest detokenizeRequest) throws SkyflowException { + return bulkDetokenizeAsync(detokenizeRequest, null); + } + + public CompletableFuture bulkDetokenizeAsync(BulkDetokenizeRequest detokenizeRequest, DetokenizeOptions options) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.DETOKENIZE_TRIGGERED.getLog()); + ExecutorService executor = null; + try { + LogUtil.printInfoLog(InfoLogs.VALIDATE_DETOKENIZE_REQUEST.getLog()); + Validations.validateBulkDetokenizeRequest(detokenizeRequest); + BatchConfig cfg = configureDetokenizeConcurrencyAndBatchSize(detokenizeRequest.getTokens().size()); + setBearerToken(); + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest request = + Utils.getBulkDetokenizeRequestBody(detokenizeRequest, this.getVaultConfig().getVaultId()); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + + LogUtil.printInfoLog(InfoLogs.PROCESSING_BATCHES.getLog()); + + List errorTokens = Collections.synchronizedList(new ArrayList<>()); + List successRecords = new ArrayList<>(); + + List batches = + Utils.createBulkDetokenizeBatches(request, cfg.batchSize); + + executor = Executors.newFixedThreadPool(cfg.concurrencyLimit); + List> futures = this.detokenizeBatchFutures(executor, batches, errorTokens, interceptor, cfg.batchSize); + return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) + .thenApply(v -> { + for (CompletableFuture future : futures) { + BulkDetokenizeResponse futureResponse = future.join(); + if (futureResponse != null) { + if (futureResponse.getSuccess() != null) { + successRecords.addAll(futureResponse.getSuccess()); + } + if (futureResponse.getErrors() != null) { + errorTokens.addAll(futureResponse.getErrors()); + } + } + } + LogUtil.printInfoLog(InfoLogs.DETOKENIZE_REQUEST_RESOLVED.getLog()); + return new BulkDetokenizeResponse(successRecords, errorTokens, detokenizeRequest.getTokens()); + }); + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.DETOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (SkyflowException e) { + LogUtil.printErrorLog(ErrorLogs.DETOKENIZE_REQUEST_REJECTED.getLog()); + throw e; + } catch (Exception e) { + LogUtil.printErrorLog(ErrorLogs.DETOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); + } finally { + if (executor != null) executor.shutdown(); + } + } + + // ── Bulk Delete Tokens ──────────────────────────────────────────────────── + + public BulkDeleteTokensResponse bulkDeleteTokens(BulkDeleteTokensRequest deleteTokensRequest) throws SkyflowException { + return bulkDeleteTokens(deleteTokensRequest, null); + } + + public BulkDeleteTokensResponse bulkDeleteTokens(BulkDeleteTokensRequest deleteTokensRequest, DeleteTokensOptions options) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.DELETE_TOKENS_TRIGGERED.getLog()); + try { + LogUtil.printInfoLog(InfoLogs.VALIDATE_DELETE_TOKENS_REQUEST.getLog()); + Validations.validateBulkDeleteTokensRequest(deleteTokensRequest); + BatchConfig cfg = configureDeleteTokensConcurrencyAndBatchSize(deleteTokensRequest.getTokens().size()); + setBearerToken(); + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest request = + Utils.getBulkDeleteTokensRequestBody(deleteTokensRequest, this.getVaultConfig().getVaultId()); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + return this.processBulkDeleteTokensSync(request, deleteTokensRequest.getTokens(), interceptor, cfg); + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.DELETE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (ExecutionException | InterruptedException e) { + LogUtil.printErrorLog(ErrorLogs.DELETE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); + } + } + + public CompletableFuture bulkDeleteTokensAsync(BulkDeleteTokensRequest deleteTokensRequest) throws SkyflowException { + return bulkDeleteTokensAsync(deleteTokensRequest, null); + } + + public CompletableFuture bulkDeleteTokensAsync(BulkDeleteTokensRequest deleteTokensRequest, DeleteTokensOptions options) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.DELETE_TOKENS_TRIGGERED.getLog()); + ExecutorService executor = null; + try { + LogUtil.printInfoLog(InfoLogs.VALIDATE_DELETE_TOKENS_REQUEST.getLog()); + Validations.validateBulkDeleteTokensRequest(deleteTokensRequest); + BatchConfig cfg = configureDeleteTokensConcurrencyAndBatchSize(deleteTokensRequest.getTokens().size()); + setBearerToken(); + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest request = + Utils.getBulkDeleteTokensRequestBody(deleteTokensRequest, this.getVaultConfig().getVaultId()); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + + LogUtil.printInfoLog(InfoLogs.PROCESSING_BATCHES.getLog()); + + List errorTokens = Collections.synchronizedList(new ArrayList<>()); + List successRecords = Collections.synchronizedList(new ArrayList<>()); + + List batches = + Utils.createBulkDeleteTokensBatches(request, cfg.batchSize); + + executor = Executors.newFixedThreadPool(cfg.concurrencyLimit); + List> futures = + this.deleteTokensBatchFutures(executor, batches, interceptor, cfg.batchSize); + + return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) + .thenApply(v -> { + for (CompletableFuture future : futures) { + BulkDeleteTokensResponse futureResponse = future.join(); + if (futureResponse != null) { + if (futureResponse.getSuccess() != null) { + successRecords.addAll(futureResponse.getSuccess()); + } + if (futureResponse.getErrors() != null) { + errorTokens.addAll(futureResponse.getErrors()); + } + } + } + LogUtil.printInfoLog(InfoLogs.DELETE_TOKENS_REQUEST_RESOLVED.getLog()); + return new BulkDeleteTokensResponse(successRecords, errorTokens, deleteTokensRequest.getTokens()); + }); + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.DELETE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (SkyflowException e) { + LogUtil.printErrorLog(ErrorLogs.DELETE_REQUEST_REJECTED.getLog()); + throw e; + } catch (Exception e) { + LogUtil.printErrorLog(ErrorLogs.DELETE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); + } finally { + if (executor != null) executor.shutdown(); + } + } + + // ── Bulk Tokenize ───────────────────────────────────────────────────────── + + public BulkTokenizeResponse bulkTokenize(BulkTokenizeRequest tokenizeRequest) throws SkyflowException { + return bulkTokenize(tokenizeRequest, null); + } + + public BulkTokenizeResponse bulkTokenize(BulkTokenizeRequest tokenizeRequest, TokenizeOptions options) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.TOKENIZE_TRIGGERED.getLog()); + try { + LogUtil.printInfoLog(InfoLogs.VALIDATING_TOKENIZE_REQUEST.getLog()); + Validations.validateBulkTokenizeRequest(tokenizeRequest); + BatchConfig cfg = configureTokenizeConcurrencyAndBatchSize(tokenizeRequest.getData().size()); + setBearerToken(); + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest request = + Utils.getBulkTokenizeRequestBody(tokenizeRequest, this.getVaultConfig().getVaultId()); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + return this.processBulkTokenizeSync(request, tokenizeRequest.getData(), interceptor, cfg); + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.TOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (SkyflowException e) { + LogUtil.printErrorLog(ErrorLogs.TOKENIZE_REQUEST_REJECTED.getLog()); + throw e; + } catch (ExecutionException | InterruptedException e) { + LogUtil.printErrorLog(ErrorLogs.TOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); + } + } + + public CompletableFuture bulkTokenizeAsync(BulkTokenizeRequest tokenizeRequest) throws SkyflowException { + return bulkTokenizeAsync(tokenizeRequest, null); + } + + public CompletableFuture bulkTokenizeAsync(BulkTokenizeRequest tokenizeRequest, TokenizeOptions options) throws SkyflowException { + LogUtil.printInfoLog(InfoLogs.TOKENIZE_TRIGGERED.getLog()); + ExecutorService executor = null; + try { + LogUtil.printInfoLog(InfoLogs.VALIDATING_TOKENIZE_REQUEST.getLog()); + Validations.validateBulkTokenizeRequest(tokenizeRequest); + BatchConfig cfg = configureTokenizeConcurrencyAndBatchSize(tokenizeRequest.getData().size()); + setBearerToken(); + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest request = + Utils.getBulkTokenizeRequestBody(tokenizeRequest, this.getVaultConfig().getVaultId()); + RequestInterceptor interceptor = options != null ? options.getInterceptor() : null; + + LogUtil.printInfoLog(InfoLogs.PROCESSING_BATCHES.getLog()); + + List errorRecords = Collections.synchronizedList(new ArrayList<>()); + List successRecords = Collections.synchronizedList(new ArrayList<>()); + + List batches = + Utils.createBulkTokenizeBatches(request, cfg.batchSize); + + executor = Executors.newFixedThreadPool(cfg.concurrencyLimit); + List> futures = + this.tokenizeBatchFutures(executor, batches, interceptor, cfg.batchSize); + + return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) + .thenApply(v -> { + for (CompletableFuture future : futures) { + BulkTokenizeResponse futureResponse = future.join(); + if (futureResponse != null) { + if (futureResponse.getSuccess() != null) { + successRecords.addAll(futureResponse.getSuccess()); + } + if (futureResponse.getErrors() != null) { + errorRecords.addAll(futureResponse.getErrors()); + } + } + } + LogUtil.printInfoLog(InfoLogs.TOKENIZE_REQUEST_RESOLVED.getLog()); + return new BulkTokenizeResponse(successRecords, errorRecords, tokenizeRequest.getData()); + }); + } catch (ApiClientApiException e) { + String bodyString = gson.toJson(e.body()); + LogUtil.printErrorLog(ErrorLogs.TOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.statusCode(), e, e.headers(), bodyString); + } catch (SkyflowException e) { + LogUtil.printErrorLog(ErrorLogs.TOKENIZE_REQUEST_REJECTED.getLog()); + throw e; + } catch (Exception e) { + LogUtil.printErrorLog(ErrorLogs.TOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); + } finally { + if (executor != null) executor.shutdown(); + } + } + + // ── Bulk private helpers ────────────────────────────────────────────────── + + private BulkDeleteTokensResponse processBulkDeleteTokensSync( + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest deleteTokensRequest, + List originalTokens, + RequestInterceptor interceptor, + BatchConfig cfg + ) throws ExecutionException, InterruptedException, SkyflowException { + LogUtil.printInfoLog(InfoLogs.PROCESSING_BATCHES.getLog()); + List errorRecords = Collections.synchronizedList(new ArrayList<>()); + List successRecords = new ArrayList<>(); + ExecutorService executor = Executors.newFixedThreadPool(cfg.concurrencyLimit); + List batches = + Utils.createBulkDeleteTokensBatches(deleteTokensRequest, cfg.batchSize); + try { + List> futures = + this.deleteTokensBatchFutures(executor, batches, interceptor, cfg.batchSize); + try { + CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).get(); + } catch (Exception e) { + LogUtil.printErrorLog(ErrorLogs.DELETE_REQUEST_REJECTED.getLog()); + } + for (CompletableFuture future : futures) { + BulkDeleteTokensResponse futureResponse = future.get(); + if (futureResponse != null) { + if (futureResponse.getSuccess() != null) successRecords.addAll(futureResponse.getSuccess()); + if (futureResponse.getErrors() != null) errorRecords.addAll(futureResponse.getErrors()); + } + } + } catch (Exception e) { + LogUtil.printErrorLog(ErrorLogs.DELETE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); + } finally { + executor.shutdown(); + } + BulkDeleteTokensResponse response = new BulkDeleteTokensResponse(successRecords, errorRecords, originalTokens); + LogUtil.printInfoLog(InfoLogs.DELETE_TOKENS_REQUEST_RESOLVED.getLog()); + return response; + } + + private List> deleteTokensBatchFutures( + ExecutorService executor, + List batches, + RequestInterceptor interceptor, + int batchSize) { + List> futures = new ArrayList<>(); + if (batches == null) return futures; + for (int batchIndex = 0; batchIndex < batches.size(); batchIndex++) { + final int index = batchIndex; + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest batch = batches.get(index); + RequestContext ctx = new RequestContext("DELETE_TOKENS"); + if (interceptor != null) interceptor.intercept(ctx); + CompletableFuture future = CompletableFuture + .supplyAsync(() -> processDeleteTokensBatch(batch, ctx), executor) + .handle((result, ex) -> { + if (ex != null) { + List batchErrors = + Utils.handleBulkDeleteTokensBatchException(ex, batch, index, batchSize); + return new BulkDeleteTokensResponse(new ArrayList<>(), batchErrors); + } + return Utils.formatBulkDeleteTokensResponse(result.body(), index, batchSize, result.headers()); + }); + futures.add(future); + } + return futures; + } + + private ApiClientHttpResponse processDeleteTokensBatch( + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest batch, + RequestContext ctx) { + return this.getRecordsApi().withRawResponse().deletetoken(batch, buildRequestOptions(ctx)); + } + + private BatchConfig configureDeleteTokensConcurrencyAndBatchSize(int totalRequests) { + int batchSize = Constants.DELETE_TOKENS_BATCH_SIZE; + int concurrencyLimit; + try { + String userProvidedBatchSize = System.getenv("DELETE_TOKENS_BATCH_SIZE"); + String userProvidedConcurrencyLimit = System.getenv("DELETE_TOKENS_CONCURRENCY_LIMIT"); + + Dotenv dotenv = null; + try { + dotenv = Dotenv.load(); + } catch (DotenvException ignored) {} + + if (userProvidedBatchSize == null && dotenv != null) { + userProvidedBatchSize = dotenv.get("DELETE_TOKENS_BATCH_SIZE"); + } + if (userProvidedConcurrencyLimit == null && dotenv != null) { + userProvidedConcurrencyLimit = dotenv.get("DELETE_TOKENS_CONCURRENCY_LIMIT"); + } + + if (userProvidedBatchSize != null) { + try { + int parsedBatchSize = Integer.parseInt(userProvidedBatchSize); + if (parsedBatchSize > Constants.MAX_DELETE_TOKENS_BATCH_SIZE) { + LogUtil.printWarningLog(WarningLogs.BATCH_SIZE_EXCEEDS_MAX_LIMIT.getLog()); + } + int maxBatchSize = Math.min(parsedBatchSize, Constants.MAX_DELETE_TOKENS_BATCH_SIZE); + if (maxBatchSize > 0) { + batchSize = maxBatchSize; + } else { + LogUtil.printWarningLog(WarningLogs.INVALID_BATCH_SIZE_PROVIDED.getLog()); + batchSize = Constants.DELETE_TOKENS_BATCH_SIZE; + } + } catch (NumberFormatException e) { + LogUtil.printWarningLog(WarningLogs.INVALID_BATCH_SIZE_PROVIDED.getLog()); + batchSize = Constants.DELETE_TOKENS_BATCH_SIZE; + } + } + + int maxConcurrencyNeeded = (totalRequests + batchSize - 1) / batchSize; + + if (userProvidedConcurrencyLimit != null) { + try { + int parsedConcurrencyLimit = Integer.parseInt(userProvidedConcurrencyLimit); + if (parsedConcurrencyLimit > Constants.MAX_DELETE_TOKENS_CONCURRENCY_LIMIT) { + LogUtil.printWarningLog(WarningLogs.CONCURRENCY_EXCEEDS_MAX_LIMIT.getLog()); + } + int maxConcurrencyLimit = Math.min(parsedConcurrencyLimit, Constants.MAX_DELETE_TOKENS_CONCURRENCY_LIMIT); + if (maxConcurrencyLimit > 0) { + concurrencyLimit = Math.min(maxConcurrencyLimit, maxConcurrencyNeeded); + } else { + LogUtil.printWarningLog(WarningLogs.INVALID_CONCURRENCY_LIMIT_PROVIDED.getLog()); + concurrencyLimit = Math.min(Constants.DELETE_TOKENS_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } catch (NumberFormatException e) { + LogUtil.printWarningLog(WarningLogs.INVALID_CONCURRENCY_LIMIT_PROVIDED.getLog()); + concurrencyLimit = Math.min(Constants.DELETE_TOKENS_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } else { + concurrencyLimit = Math.min(Constants.DELETE_TOKENS_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } catch (Exception e) { + batchSize = Constants.DELETE_TOKENS_BATCH_SIZE; + int maxConcurrencyNeeded = (totalRequests + batchSize - 1) / batchSize; + concurrencyLimit = Math.min(Constants.DELETE_TOKENS_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + return new BatchConfig(batchSize, concurrencyLimit); + } + + private BulkTokenizeResponse processBulkTokenizeSync( + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest tokenizeRequest, + ArrayList originalData, + RequestInterceptor interceptor, + BatchConfig cfg + ) throws ExecutionException, InterruptedException, SkyflowException { + LogUtil.printInfoLog(InfoLogs.PROCESSING_BATCHES.getLog()); + List errorRecords = Collections.synchronizedList(new ArrayList<>()); + List successRecords = new ArrayList<>(); + ExecutorService executor = Executors.newFixedThreadPool(cfg.concurrencyLimit); + List batches = + Utils.createBulkTokenizeBatches(tokenizeRequest, cfg.batchSize); + try { + List> futures = + this.tokenizeBatchFutures(executor, batches, interceptor, cfg.batchSize); + try { + CompletableFuture allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); + allFutures.join(); + } catch (Exception e) { + // individual batch errors are already captured + } + for (CompletableFuture future : futures) { + BulkTokenizeResponse futureResponse = future.get(); + if (futureResponse != null) { + if (futureResponse.getSuccess() != null) { + successRecords.addAll(futureResponse.getSuccess()); + } + if (futureResponse.getErrors() != null) { + errorRecords.addAll(futureResponse.getErrors()); + } + } + } + } catch (Exception e) { + LogUtil.printErrorLog(ErrorLogs.TOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); + } finally { + executor.shutdown(); + } + BulkTokenizeResponse response = new BulkTokenizeResponse(successRecords, errorRecords, originalData); + LogUtil.printInfoLog(InfoLogs.TOKENIZE_REQUEST_RESOLVED.getLog()); + return response; + } + + private List> tokenizeBatchFutures( + ExecutorService executor, + List batches, + RequestInterceptor interceptor, + int batchSize) { + List> futures = new ArrayList<>(); + if (batches == null) return futures; + for (int batchIndex = 0; batchIndex < batches.size(); batchIndex++) { + final int index = batchIndex; + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest batch = batches.get(index); + RequestContext ctx = new RequestContext("TOKENIZE"); + if (interceptor != null) interceptor.intercept(ctx); + CompletableFuture future = CompletableFuture + .supplyAsync(() -> processTokenizeBatch(batch, ctx), executor) + .handle((result, ex) -> { + if (ex != null) { + List batchErrors = + Utils.handleBulkTokenizeBatchException(ex, batch, index, batchSize); + return new BulkTokenizeResponse(new ArrayList<>(), batchErrors); + } + return Utils.formatBulkTokenizeResponse(result.body(), batch, index, batchSize, result.headers()); + }); + futures.add(future); + } + return futures; + } + + private ApiClientHttpResponse processTokenizeBatch( + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest batch, + RequestContext ctx) { + return this.getRecordsApi().withRawResponse().tokenize(batch, buildRequestOptions(ctx)); + } + + private BatchConfig configureTokenizeConcurrencyAndBatchSize(int totalRequests) { + int batchSize = Constants.TOKENIZE_BATCH_SIZE; + int concurrencyLimit; + try { + String userProvidedBatchSize = System.getenv("TOKENIZE_BATCH_SIZE"); + String userProvidedConcurrencyLimit = System.getenv("TOKENIZE_CONCURRENCY_LIMIT"); + + Dotenv dotenv = null; + try { + dotenv = Dotenv.load(); + } catch (DotenvException ignored) {} + + if (userProvidedBatchSize == null && dotenv != null) { + userProvidedBatchSize = dotenv.get("TOKENIZE_BATCH_SIZE"); + } + if (userProvidedConcurrencyLimit == null && dotenv != null) { + userProvidedConcurrencyLimit = dotenv.get("TOKENIZE_CONCURRENCY_LIMIT"); + } + + if (userProvidedBatchSize != null) { + try { + int parsedBatchSize = Integer.parseInt(userProvidedBatchSize); + if (parsedBatchSize > Constants.MAX_TOKENIZE_BATCH_SIZE) { + LogUtil.printWarningLog(WarningLogs.BATCH_SIZE_EXCEEDS_MAX_LIMIT.getLog()); + } + int maxBatchSize = Math.min(parsedBatchSize, Constants.MAX_TOKENIZE_BATCH_SIZE); + if (maxBatchSize > 0) { + batchSize = maxBatchSize; + } else { + LogUtil.printWarningLog(WarningLogs.INVALID_BATCH_SIZE_PROVIDED.getLog()); + batchSize = Constants.TOKENIZE_BATCH_SIZE; + } + } catch (NumberFormatException e) { + LogUtil.printWarningLog(WarningLogs.INVALID_BATCH_SIZE_PROVIDED.getLog()); + batchSize = Constants.TOKENIZE_BATCH_SIZE; + } + } + + int maxConcurrencyNeeded = (totalRequests + batchSize - 1) / batchSize; + + if (userProvidedConcurrencyLimit != null) { + try { + int parsedConcurrencyLimit = Integer.parseInt(userProvidedConcurrencyLimit); + if (parsedConcurrencyLimit > Constants.MAX_TOKENIZE_CONCURRENCY_LIMIT) { + LogUtil.printWarningLog(WarningLogs.CONCURRENCY_EXCEEDS_MAX_LIMIT.getLog()); + } + int maxConcurrencyLimit = Math.min(parsedConcurrencyLimit, Constants.MAX_TOKENIZE_CONCURRENCY_LIMIT); + if (maxConcurrencyLimit > 0) { + concurrencyLimit = Math.min(maxConcurrencyLimit, maxConcurrencyNeeded); + } else { + LogUtil.printWarningLog(WarningLogs.INVALID_CONCURRENCY_LIMIT_PROVIDED.getLog()); + concurrencyLimit = Math.min(Constants.TOKENIZE_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } catch (NumberFormatException e) { + LogUtil.printWarningLog(WarningLogs.INVALID_CONCURRENCY_LIMIT_PROVIDED.getLog()); + concurrencyLimit = Math.min(Constants.TOKENIZE_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } else { + concurrencyLimit = Math.min(Constants.TOKENIZE_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } catch (Exception e) { + batchSize = Constants.TOKENIZE_BATCH_SIZE; + int maxConcurrencyNeeded = (totalRequests + batchSize - 1) / batchSize; + concurrencyLimit = Math.min(Constants.TOKENIZE_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + return new BatchConfig(batchSize, concurrencyLimit); + } + + private BatchConfig configureDetokenizeConcurrencyAndBatchSize(int totalRequests) { + int batchSize = Constants.DETOKENIZE_BATCH_SIZE; + int concurrencyLimit; + try { + String userProvidedBatchSize = System.getenv("DETOKENIZE_BATCH_SIZE"); + String userProvidedConcurrencyLimit = System.getenv("DETOKENIZE_CONCURRENCY_LIMIT"); + + Dotenv dotenv = null; + try { + dotenv = Dotenv.load(); + } catch (DotenvException ignored) { + // ignore the case if .env file is not found + } + + if (userProvidedBatchSize == null && dotenv != null) { + userProvidedBatchSize = dotenv.get("DETOKENIZE_BATCH_SIZE"); + } + if (userProvidedConcurrencyLimit == null && dotenv != null) { + userProvidedConcurrencyLimit = dotenv.get("DETOKENIZE_CONCURRENCY_LIMIT"); + } + + if (userProvidedBatchSize != null) { + try { + int parsedBatchSize = Integer.parseInt(userProvidedBatchSize); + if (parsedBatchSize > Constants.MAX_DETOKENIZE_BATCH_SIZE) { + LogUtil.printWarningLog(WarningLogs.BATCH_SIZE_EXCEEDS_MAX_LIMIT.getLog()); + } + int maxBatchSize = Math.min(parsedBatchSize, Constants.MAX_DETOKENIZE_BATCH_SIZE); + if (maxBatchSize > 0) { + batchSize = maxBatchSize; + } else { + LogUtil.printWarningLog(WarningLogs.INVALID_BATCH_SIZE_PROVIDED.getLog()); + batchSize = Constants.DETOKENIZE_BATCH_SIZE; + } + } catch (NumberFormatException e) { + LogUtil.printWarningLog(WarningLogs.INVALID_BATCH_SIZE_PROVIDED.getLog()); + batchSize = Constants.DETOKENIZE_BATCH_SIZE; + } + } + + int maxConcurrencyNeeded = (totalRequests + batchSize - 1) / batchSize; + + if (userProvidedConcurrencyLimit != null) { + try { + int parsedConcurrencyLimit = Integer.parseInt(userProvidedConcurrencyLimit); + if (parsedConcurrencyLimit > Constants.MAX_DETOKENIZE_CONCURRENCY_LIMIT) { + LogUtil.printWarningLog(WarningLogs.CONCURRENCY_EXCEEDS_MAX_LIMIT.getLog()); + } + int maxConcurrencyLimit = Math.min(parsedConcurrencyLimit, Constants.MAX_DETOKENIZE_CONCURRENCY_LIMIT); + + if (maxConcurrencyLimit > 0) { + concurrencyLimit = Math.min(maxConcurrencyLimit, maxConcurrencyNeeded); + } else { + LogUtil.printWarningLog(WarningLogs.INVALID_CONCURRENCY_LIMIT_PROVIDED.getLog()); + concurrencyLimit = Math.min(Constants.DETOKENIZE_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } catch (NumberFormatException e) { + LogUtil.printWarningLog(WarningLogs.INVALID_CONCURRENCY_LIMIT_PROVIDED.getLog()); + concurrencyLimit = Math.min(Constants.DETOKENIZE_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } else { + concurrencyLimit = Math.min(Constants.DETOKENIZE_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } catch (Exception e) { + batchSize = Constants.DETOKENIZE_BATCH_SIZE; + int maxConcurrencyNeeded = (totalRequests + batchSize - 1) / batchSize; + concurrencyLimit = Math.min(Constants.DETOKENIZE_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + return new BatchConfig(batchSize, concurrencyLimit); + } + + private BulkInsertResponse processBulkInsertSync( + V1InsertRequest insertRequest, + ArrayList originalPayload, + RequestInterceptor interceptor, + BatchConfig cfg + ) throws ExecutionException, InterruptedException { + LogUtil.printInfoLog(InfoLogs.PROCESSING_BATCHES.getLog()); + List successRecords = new ArrayList<>(); + List errorRecords = Collections.synchronizedList(new ArrayList<>()); + List> futures = this.insertBatchFutures(insertRequest, errorRecords, interceptor, cfg); + + CompletableFuture allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); + allFutures.join(); + + for (CompletableFuture future : futures) { + BulkInsertResponse futureResponse = future.get(); + if (futureResponse != null) { + if (futureResponse.getSuccess() != null) { + successRecords.addAll(futureResponse.getSuccess()); + } + if (futureResponse.getErrors() != null) { + errorRecords.addAll(futureResponse.getErrors()); + } + } + } + BulkInsertResponse response = new BulkInsertResponse(successRecords, errorRecords, originalPayload); + LogUtil.printInfoLog(InfoLogs.INSERT_REQUEST_RESOLVED.getLog()); + return response; + } + + private BulkDetokenizeResponse processBulkDetokenizeSync( + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest detokenizeRequest, + List originalTokens, + RequestInterceptor interceptor, + BatchConfig cfg + ) throws ExecutionException, InterruptedException, SkyflowException { + LogUtil.printInfoLog(InfoLogs.PROCESSING_BATCHES.getLog()); + List errorTokens = Collections.synchronizedList(new ArrayList<>()); + List successTokens = new ArrayList<>(); + ExecutorService executor = Executors.newFixedThreadPool(cfg.concurrencyLimit); + List batches = + Utils.createBulkDetokenizeBatches(detokenizeRequest, cfg.batchSize); + try { + List> futures = this.detokenizeBatchFutures(executor, batches, errorTokens, interceptor, cfg.batchSize); + try { + CompletableFuture allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); + allFutures.join(); + } catch (Exception e) { + // individual batch errors are already captured + } + for (CompletableFuture future : futures) { + BulkDetokenizeResponse futureResponse = future.get(); + if (futureResponse != null) { + if (futureResponse.getSuccess() != null) { + successTokens.addAll(futureResponse.getSuccess()); + } + if (futureResponse.getErrors() != null) { + errorTokens.addAll(futureResponse.getErrors()); + } + } + } + } catch (Exception e) { + LogUtil.printErrorLog(ErrorLogs.DETOKENIZE_REQUEST_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); + } finally { + executor.shutdown(); + } + BulkDetokenizeResponse response = new BulkDetokenizeResponse(successTokens, errorTokens, originalTokens); + LogUtil.printInfoLog(InfoLogs.DETOKENIZE_REQUEST_RESOLVED.getLog()); + return response; + } + + private List> detokenizeBatchFutures( + ExecutorService executor, + List batches, + List errorTokens, + RequestInterceptor interceptor, + int batchSize) { + List> futures = new ArrayList<>(); + try { + for (int batchIndex = 0; batchIndex < batches.size(); batchIndex++) { + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest batch = batches.get(batchIndex); + int batchNumber = batchIndex; + RequestContext ctx = new RequestContext("DETOKENIZE"); + if (interceptor != null) interceptor.intercept(ctx); + CompletableFuture future = CompletableFuture + .supplyAsync(() -> processDetokenizeBatch(batch, ctx), executor) + .thenApply(response -> Utils.formatBulkDetokenizeResponse(response.body(), batchNumber, batchSize, response.headers())) + .exceptionally(ex -> { + errorTokens.addAll(Utils.handleBulkDetokenizeBatchException(ex, batch, batchNumber, batchSize)); + return null; + }); + futures.add(future); + } + } catch (Exception e) { + ErrorRecord errorRecord = new ErrorRecord(0, e.getMessage(), 500); + errorTokens.add(errorRecord); + } + return futures; + } + + private ApiClientHttpResponse processDetokenizeBatch( + com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest batch, + RequestContext ctx) { + return this.getRecordsApi().withRawResponse().detokenize(batch, buildRequestOptions(ctx)); + } + + private List> insertBatchFutures( + V1InsertRequest insertRequest, + List errorRecords, + RequestInterceptor interceptor, + BatchConfig cfg) { + List records = insertRequest.getRecords().get(); + + ExecutorService executor = Executors.newFixedThreadPool(cfg.concurrencyLimit); + List> batches = Utils.createBulkInsertBatches(records, cfg.batchSize); + List> futures = new ArrayList<>(); + V1Upsert upsert = insertRequest.getUpsert().isPresent() ? insertRequest.getUpsert().get() : null; + + try { + for (int batchIndex = 0; batchIndex < batches.size(); batchIndex++) { + List batch = batches.get(batchIndex); + int batchNumber = batchIndex; + RequestContext ctx = new RequestContext("INSERT"); + if (interceptor != null) interceptor.intercept(ctx); + CompletableFuture future = CompletableFuture + .supplyAsync(() -> insertBatch(batch, insertRequest.getTableName().isPresent() ? insertRequest.getTableName().get() : null, upsert, ctx), executor) + .thenApply(response -> Utils.formatBulkInsertResponse(response.body(), batchNumber, cfg.batchSize, response.headers())) + .exceptionally(ex -> { + errorRecords.addAll(Utils.handleBulkInsertBatchException(ex, batch, batchNumber, cfg.batchSize)); + return null; + }); + futures.add(future); + } + } finally { + executor.shutdown(); + } + return futures; + } + + private ApiClientHttpResponse insertBatch(List batch, String tableName, V1Upsert upsert, RequestContext ctx) { + V1InsertRequest.Builder req = V1InsertRequest.builder() + .vaultId(this.getVaultConfig().getVaultId()) + .records(batch) + .upsert(upsert); + if (tableName != null && !tableName.isEmpty()) { + req.tableName(tableName); + } + V1InsertRequest request = req.build(); + return this.getRecordsApi().withRawResponse().insert(request, buildRequestOptions(ctx)); + } + + private BatchConfig configureInsertConcurrencyAndBatchSize(int totalRequests) { + int batchSize = Constants.INSERT_BATCH_SIZE; + int concurrencyLimit; + try { + String userProvidedBatchSize = System.getenv("INSERT_BATCH_SIZE"); + String userProvidedConcurrencyLimit = System.getenv("INSERT_CONCURRENCY_LIMIT"); + + Dotenv dotenv = null; + try { + dotenv = Dotenv.load(); + } catch (DotenvException ignored) { + // ignore the case if .env file is not found + } + + if (userProvidedBatchSize == null && dotenv != null) { + userProvidedBatchSize = dotenv.get("INSERT_BATCH_SIZE"); + } + if (userProvidedConcurrencyLimit == null && dotenv != null) { + userProvidedConcurrencyLimit = dotenv.get("INSERT_CONCURRENCY_LIMIT"); + } + + if (userProvidedBatchSize != null) { + try { + int parsedBatchSize = Integer.parseInt(userProvidedBatchSize); + if (parsedBatchSize > Constants.MAX_INSERT_BATCH_SIZE) { + LogUtil.printWarningLog(WarningLogs.BATCH_SIZE_EXCEEDS_MAX_LIMIT.getLog()); + } + int maxBatchSize = Math.min(parsedBatchSize, Constants.MAX_INSERT_BATCH_SIZE); + if (maxBatchSize > 0) { + batchSize = maxBatchSize; + } else { + LogUtil.printWarningLog(WarningLogs.INVALID_BATCH_SIZE_PROVIDED.getLog()); + batchSize = Constants.INSERT_BATCH_SIZE; + } + } catch (NumberFormatException e) { + LogUtil.printWarningLog(WarningLogs.INVALID_BATCH_SIZE_PROVIDED.getLog()); + batchSize = Constants.INSERT_BATCH_SIZE; + } + } + + // Max no of threads required to run all batches concurrently at once + int maxConcurrencyNeeded = (totalRequests + batchSize - 1) / batchSize; + + if (userProvidedConcurrencyLimit != null) { + try { + int parsedConcurrencyLimit = Integer.parseInt(userProvidedConcurrencyLimit); + int maxConcurrencyLimit = Math.min(parsedConcurrencyLimit, Constants.MAX_INSERT_CONCURRENCY_LIMIT); + if (parsedConcurrencyLimit > Constants.MAX_INSERT_CONCURRENCY_LIMIT) { + LogUtil.printWarningLog(WarningLogs.CONCURRENCY_EXCEEDS_MAX_LIMIT.getLog()); + } + if (maxConcurrencyLimit > 0) { + concurrencyLimit = Math.min(maxConcurrencyLimit, maxConcurrencyNeeded); + } else { + LogUtil.printWarningLog(WarningLogs.INVALID_CONCURRENCY_LIMIT_PROVIDED.getLog()); + concurrencyLimit = Math.min(Constants.INSERT_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } catch (NumberFormatException e) { + LogUtil.printWarningLog(WarningLogs.INVALID_CONCURRENCY_LIMIT_PROVIDED.getLog()); + concurrencyLimit = Math.min(Constants.INSERT_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } else { + concurrencyLimit = Math.min(Constants.INSERT_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + } catch (Exception e) { + batchSize = Constants.INSERT_BATCH_SIZE; + int maxConcurrencyNeeded = (totalRequests + batchSize - 1) / batchSize; + concurrencyLimit = Math.min(Constants.INSERT_CONCURRENCY_LIMIT, maxConcurrencyNeeded); + } + return new BatchConfig(batchSize, concurrencyLimit); + } -} \ No newline at end of file +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkDeleteTokensRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkDeleteTokensRequest.java new file mode 100644 index 00000000..8b8e56ea --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkDeleteTokensRequest.java @@ -0,0 +1,34 @@ +package com.skyflow.vault.data; + +import java.util.List; + +public class BulkDeleteTokensRequest { + private final BulkDeleteTokensRequestBuilder builder; + + private BulkDeleteTokensRequest(BulkDeleteTokensRequestBuilder builder) { + this.builder = builder; + } + + public static BulkDeleteTokensRequestBuilder builder() { + return new BulkDeleteTokensRequestBuilder(); + } + + public List getTokens() { + return this.builder.tokens; + } + + public static final class BulkDeleteTokensRequestBuilder { + private List tokens; + + private BulkDeleteTokensRequestBuilder() {} + + public BulkDeleteTokensRequestBuilder tokens(List tokens) { + this.tokens = tokens; + return this; + } + + public BulkDeleteTokensRequest build() { + return new BulkDeleteTokensRequest(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkDeleteTokensResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkDeleteTokensResponse.java new file mode 100644 index 00000000..47733c5d --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkDeleteTokensResponse.java @@ -0,0 +1,50 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.annotations.Expose; + +import java.util.List; + +public class BulkDeleteTokensResponse { + @Expose(serialize = true) + private DeleteTokensSummary summary; + + @Expose(serialize = true) + private List success; + + @Expose(serialize = true) + private List errors; + + private List originalPayload; + + public BulkDeleteTokensResponse(List success, List errors) { + this.success = success; + this.errors = errors; + } + + public BulkDeleteTokensResponse(List success, List errors, List originalPayload) { + this.success = success; + this.errors = errors; + this.originalPayload = originalPayload; + this.summary = new DeleteTokensSummary(this.originalPayload.size(), this.success.size(), this.errors.size()); + } + + public DeleteTokensSummary getSummary() { + return summary; + } + + public List getSuccess() { + return success; + } + + public List getErrors() { + return errors; + } + + @Override + public String toString() { + Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkDetokenizeRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkDetokenizeRequest.java new file mode 100644 index 00000000..a7a842b5 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkDetokenizeRequest.java @@ -0,0 +1,41 @@ +package com.skyflow.vault.data; + +import java.util.List; + +public class BulkDetokenizeRequest { + private final BulkDetokenizeRequestBuilder builder; + private BulkDetokenizeRequest(BulkDetokenizeRequestBuilder builder){ + this.builder = builder; + } + + public static BulkDetokenizeRequestBuilder builder(){ + return new BulkDetokenizeRequestBuilder(); + } + public List getTokens(){ + return this.builder.tokens; + } + public List getTokenGroupRedactions(){ + return this.builder.tokenGroupRedactions; + } + + public static final class BulkDetokenizeRequestBuilder{ + private List tokens; + + private List tokenGroupRedactions; + + public BulkDetokenizeRequestBuilder tokens(List tokens){ + this.tokens = tokens; + return this; + } + public BulkDetokenizeRequestBuilder tokenGroupRedactions(List tokenGroupRedactions){ + this.tokenGroupRedactions = tokenGroupRedactions; + return this; + } + public BulkDetokenizeRequest build(){ + return new BulkDetokenizeRequest(this); + } + + + } + +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkDetokenizeResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkDetokenizeResponse.java new file mode 100644 index 00000000..a1ad1ee7 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkDetokenizeResponse.java @@ -0,0 +1,63 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.annotations.Expose; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class BulkDetokenizeResponse { + @Expose(serialize = true) + private DetokenizeSummary summary; + + @Expose(serialize = true) + private List success; + + @Expose(serialize = true) + private List errors; + + private List originalPayload; + private List tokensToRetry; + + public BulkDetokenizeResponse(List success, List errors) { + this.success = success; + this.errors = errors; + } + + public BulkDetokenizeResponse(List success, List errors, List originalPayload) { + this.success = success; + this.errors = errors; + this.originalPayload = originalPayload; + this.summary = new DetokenizeSummary(this.originalPayload.size(), this.success.size(), this.errors.size()); + } + + public List getTokensToRetry() { + if (tokensToRetry == null) { + tokensToRetry = new ArrayList<>(); + tokensToRetry = errors.stream() + .filter(error -> (error.getCode() >= 500 && error.getCode() <= 599) && error.getCode() != 529) + .map(errorRecord -> originalPayload.get(errorRecord.getIndex())) + .collect(Collectors.toList()); + } + return tokensToRetry; + } + + public List getSuccess() { + return success; + } + public DetokenizeSummary getSummary() { + return this.summary; + } + + public List getErrors() { + return this.errors; + } + @Override + public String toString() { + Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + return gson.toJson(this); + } + +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkInsertRecord.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkInsertRecord.java new file mode 100644 index 00000000..3aeae875 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkInsertRecord.java @@ -0,0 +1,68 @@ +package com.skyflow.vault.data; + +import com.skyflow.enums.UpsertType; + +import java.util.List; +import java.util.Map; + +public class BulkInsertRecord { + private final BulkInsertRecordBuilder builder; + + private BulkInsertRecord(BulkInsertRecordBuilder builder) { + this.builder = builder; + } + + // Getters + public String getTable() { + return this.builder.table; + } + + public Map getData() { + return this.builder.data; + } + + public List getUpsert() { + return this.builder.upsert; + } + + public UpsertType getUpsertType() { + return this.builder.upsertType; + } + + // Builder Class + public static final class BulkInsertRecordBuilder { + private String table; + private Map data; + private List upsert; + private UpsertType upsertType; + + public BulkInsertRecordBuilder table(String table) { + this.table = table; + return this; + } + + public BulkInsertRecordBuilder data(Map data) { + this.data = data; + return this; + } + + public BulkInsertRecordBuilder upsert(List upsert) { + this.upsert = upsert; + return this; + } + + public BulkInsertRecordBuilder upsertType(UpsertType upsertType) { + this.upsertType = upsertType; + return this; + } + + public BulkInsertRecord build() { + return new BulkInsertRecord(this); + } + } + + // Static entry point for builder + public static BulkInsertRecordBuilder builder() { + return new BulkInsertRecordBuilder(); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkInsertRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkInsertRequest.java new file mode 100644 index 00000000..7eda6f93 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkInsertRequest.java @@ -0,0 +1,69 @@ +package com.skyflow.vault.data; + +import com.skyflow.enums.UpsertType; + +import java.util.ArrayList; +import java.util.List; + +public class BulkInsertRequest extends BaseInsertRequest { + private final BulkInsertRequestBuilder builder; + + private BulkInsertRequest(BulkInsertRequestBuilder builder) { + super(builder); + this.builder = builder; + } + + + public static BulkInsertRequestBuilder builder() { + return new BulkInsertRequestBuilder(); + } + + public List getUpsert() { + return this.builder.upsert; + } + + public UpsertType getUpsertType() { + return this.builder.upsertType; + } + + public ArrayList getRecords(){ + return this.builder.records; + } + + public static final class BulkInsertRequestBuilder extends BaseInsertRequestBuilder { + private List upsert; + + private UpsertType upsertType; + + private ArrayList records; + + private BulkInsertRequestBuilder() { + super(); + } + + @Override + public BulkInsertRequestBuilder table(String table) { + super.table(table); + return this; + } + + public BulkInsertRequestBuilder upsert(List upsert) { + this.upsert = upsert; + return this; + } + + public BulkInsertRequestBuilder upsertType(UpsertType upsertType) { + this.upsertType = upsertType; + return this; + } + + public BulkInsertRequestBuilder records(ArrayList records){ + this.records = records; + return this; + } + + public BulkInsertRequest build() { + return new BulkInsertRequest(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkInsertResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkInsertResponse.java new file mode 100644 index 00000000..72f542d0 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkInsertResponse.java @@ -0,0 +1,68 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.annotations.Expose; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class BulkInsertResponse { + // These members will be included in the toString() output + @Expose(serialize = true) + private Summary summary; + @Expose(serialize = true) + private List success; + @Expose(serialize = true) + private List errors; + + // Internal fields. Should not be included in toString() output + private ArrayList originalPayload; + private ArrayList recordsToRetry; + + public BulkInsertResponse(List successRecords, List errorRecords) { + this.success = successRecords; + this.errors = errorRecords; + } + + public BulkInsertResponse( + List successRecords, + List errorRecords, + ArrayList originalPayload + ) { + this.success = successRecords; + this.errors = errorRecords; + this.originalPayload = originalPayload; + this.summary = new Summary(this.originalPayload.size(), this.success.size(), this.errors.size()); + } + + public Summary getSummary() { + return this.summary; + } + + public List getSuccess() { + return this.success; + } + + public List getErrors() { + return this.errors; + } + + public ArrayList getRecordsToRetry() { + if (recordsToRetry == null) { + recordsToRetry = new ArrayList<>(); + recordsToRetry = errors.stream() + .filter(error -> (error.getCode() >= 500 && error.getCode() <= 599) && error.getCode() != 529) + .map(errorRecord -> originalPayload.get(errorRecord.getIndex())) + .collect(Collectors.toCollection(ArrayList::new)); + } + return recordsToRetry; + } + + @Override + public String toString() { + Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenGroupRedactions.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenGroupRedactions.java new file mode 100644 index 00000000..da894232 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenGroupRedactions.java @@ -0,0 +1,39 @@ +package com.skyflow.vault.data; + +public class BulkTokenGroupRedactions { + private final BulkTokenGroupRedactionsBuilder builder; + + private BulkTokenGroupRedactions(BulkTokenGroupRedactionsBuilder builder) { + this.builder = builder; + } + public String getTokenGroupName() { + return this.builder.tokenGroupName; + } + + public String getRedaction() { + return this.builder.redaction; + } + + public static BulkTokenGroupRedactionsBuilder builder() { + return new BulkTokenGroupRedactionsBuilder(); + } + + public static final class BulkTokenGroupRedactionsBuilder { + private String tokenGroupName; + private String redaction; + + public BulkTokenGroupRedactionsBuilder tokenGroupName(String tokenGroupName) { + this.tokenGroupName = tokenGroupName; + return this; + } + + public BulkTokenGroupRedactionsBuilder redaction(String redaction) { + this.redaction = redaction; + return this; + } + + public BulkTokenGroupRedactions build() { + return new BulkTokenGroupRedactions(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeRecord.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeRecord.java new file mode 100644 index 00000000..5275e8db --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeRecord.java @@ -0,0 +1,44 @@ +package com.skyflow.vault.data; + +import java.util.List; + +public class BulkTokenizeRecord { + private final BulkTokenizeRecordBuilder builder; + + private BulkTokenizeRecord(BulkTokenizeRecordBuilder builder) { + this.builder = builder; + } + + public static BulkTokenizeRecordBuilder builder() { + return new BulkTokenizeRecordBuilder(); + } + + public Object getValue() { + return this.builder.value; + } + + public List getTokenGroupNames() { + return this.builder.tokenGroupNames; + } + + public static final class BulkTokenizeRecordBuilder { + private Object value; + private List tokenGroupNames; + + private BulkTokenizeRecordBuilder() {} + + public BulkTokenizeRecordBuilder value(Object value) { + this.value = value; + return this; + } + + public BulkTokenizeRecordBuilder tokenGroupNames(List tokenGroupNames) { + this.tokenGroupNames = tokenGroupNames; + return this; + } + + public BulkTokenizeRecord build() { + return new BulkTokenizeRecord(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeRequest.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeRequest.java new file mode 100644 index 00000000..47f2ef36 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeRequest.java @@ -0,0 +1,34 @@ +package com.skyflow.vault.data; + +import java.util.ArrayList; + +public class BulkTokenizeRequest { + private final BulkTokenizeRequestBuilder builder; + + private BulkTokenizeRequest(BulkTokenizeRequestBuilder builder) { + this.builder = builder; + } + + public static BulkTokenizeRequestBuilder builder() { + return new BulkTokenizeRequestBuilder(); + } + + public ArrayList getData() { + return this.builder.data; + } + + public static final class BulkTokenizeRequestBuilder { + private ArrayList data; + + private BulkTokenizeRequestBuilder() {} + + public BulkTokenizeRequestBuilder data(ArrayList data) { + this.data = data; + return this; + } + + public BulkTokenizeRequest build() { + return new BulkTokenizeRequest(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeResponse.java b/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeResponse.java new file mode 100644 index 00000000..84026905 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/BulkTokenizeResponse.java @@ -0,0 +1,80 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.annotations.Expose; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class BulkTokenizeResponse { + @Expose(serialize = true) + private TokenizeSummary summary; + + @Expose(serialize = true) + private List success; + + @Expose(serialize = true) + private List errors; + + private List originalPayload; + + public BulkTokenizeResponse(List success, List errors) { + this.success = success; + this.errors = errors; + } + + public BulkTokenizeResponse(List success, List errors, List originalPayload) { + this.success = success; + this.errors = errors; + this.originalPayload = originalPayload; + + int totalTokens = originalPayload.size(); + + // Collect indices that appear in success and in errors + Set successIndices = new HashSet<>(); + for (TokenizeSuccess s : this.success) { + successIndices.add(s.getIndex()); + } + Set errorIndices = new HashSet<>(); + for (ErrorRecord e : this.errors) { + errorIndices.add(e.getIndex()); + } + + // totalTokenized = ALL token groups succeeded (in success, NOT in errors) + // totalPartial = SOME succeeded, SOME failed (in both success AND errors) + // totalFailed = ALL token groups failed (in errors, NOT in success) + int totalTokenized = 0; + int totalPartial = 0; + int totalFailed = 0; + for (int i = 0; i < totalTokens; i++) { + boolean hasSuccess = successIndices.contains(i); + boolean hasError = errorIndices.contains(i); + if (hasSuccess && !hasError) totalTokenized++; + else if (hasSuccess && hasError) totalPartial++; + else if (!hasSuccess && hasError) totalFailed++; + // else: index not present in either (shouldn't happen in practice) + } + + this.summary = new TokenizeSummary(totalTokens, totalTokenized, totalPartial, totalFailed); + } + + public TokenizeSummary getSummary() { + return summary; + } + + public List getSuccess() { + return success; + } + + public List getErrors() { + return errors; + } + + @Override + public String toString() { + Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensOptions.java b/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensOptions.java new file mode 100644 index 00000000..622f531e --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensOptions.java @@ -0,0 +1,30 @@ +package com.skyflow.vault.data; + +public final class DeleteTokensOptions { + private final RequestInterceptor interceptor; + + private DeleteTokensOptions(Builder builder) { + this.interceptor = builder.interceptor; + } + + public RequestInterceptor getInterceptor() { + return interceptor; + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private RequestInterceptor interceptor; + + public Builder interceptor(RequestInterceptor interceptor) { + this.interceptor = interceptor; + return this; + } + + public DeleteTokensOptions build() { + return new DeleteTokensOptions(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensSuccess.java b/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensSuccess.java new file mode 100644 index 00000000..15da5a46 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensSuccess.java @@ -0,0 +1,31 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.annotations.Expose; + +public class DeleteTokensSuccess { + @Expose(serialize = true) + private int index; + + @Expose(serialize = true) + private String token; + + public DeleteTokensSuccess(int index, String token) { + this.index = index; + this.token = token; + } + + public int getIndex() { + return index; + } + + public String getToken() { + return token; + } + + @Override + public String toString() { + Gson gson = new Gson(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensSummary.java b/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensSummary.java new file mode 100644 index 00000000..92770caf --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DeleteTokensSummary.java @@ -0,0 +1,41 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.annotations.Expose; + +public class DeleteTokensSummary { + @Expose(serialize = true) + private int totalTokens; + + @Expose(serialize = true) + private int totalDeleted; + + @Expose(serialize = true) + private int totalFailed; + + public DeleteTokensSummary() {} + + public DeleteTokensSummary(int totalTokens, int totalDeleted, int totalFailed) { + this.totalTokens = totalTokens; + this.totalDeleted = totalDeleted; + this.totalFailed = totalFailed; + } + + public int getTotalTokens() { + return totalTokens; + } + + public int getTotalDeleted() { + return totalDeleted; + } + + public int getTotalFailed() { + return totalFailed; + } + + @Override + public String toString() { + Gson gson = new Gson(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeOptions.java b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeOptions.java new file mode 100644 index 00000000..267bd9bd --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeOptions.java @@ -0,0 +1,30 @@ +package com.skyflow.vault.data; + +public final class DetokenizeOptions { + private final RequestInterceptor interceptor; + + private DetokenizeOptions(Builder builder) { + this.interceptor = builder.interceptor; + } + + public RequestInterceptor getInterceptor() { + return interceptor; + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private RequestInterceptor interceptor; + + public Builder interceptor(RequestInterceptor interceptor) { + this.interceptor = interceptor; + return this; + } + + public DetokenizeOptions build() { + return new DetokenizeOptions(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponseObject.java b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponseObject.java new file mode 100644 index 00000000..0e1c57f6 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeResponseObject.java @@ -0,0 +1,63 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.annotations.Expose; + +import java.util.Map; + +public class DetokenizeResponseObject { + @Expose(serialize = true) + private int index; + + @Expose(serialize = true) + private String token; + @Expose(serialize = true) + private Object value; + @Expose(serialize = true) + private String tokenGroupName; + @Expose(serialize = true) + private String error; + + @Expose(serialize = true) + private Map metadata; + + public DetokenizeResponseObject(int index, String token, Object value, String tokenGroupName, String error, Map metadata) { + this.token = token; + this.value = value; + this.tokenGroupName = tokenGroupName; + this.error = error; + this.metadata = metadata; + this.index = index; + } + + public String getToken() { + return token; + } + + public Object getValue() { + return value; + } + + public String getTokenGroupName() { + return tokenGroupName; + } + + public String getError() { + return error; + } + + public int getIndex() { + return index; + } + + public Map getMetadata() { + return metadata; + } + + @Override + public String toString() { + Gson gson = new Gson(); + return gson.toJson(this); + } + +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeSummary.java b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeSummary.java new file mode 100644 index 00000000..c86c1854 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/DetokenizeSummary.java @@ -0,0 +1,40 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.annotations.Expose; + +public class DetokenizeSummary { + @Expose(serialize = true) + private int totalTokens; + @Expose(serialize = true) + private int totalDetokenized; + @Expose(serialize = true) + private int totalFailed; + + public DetokenizeSummary() { + } + + public DetokenizeSummary(int totalTokens, int totalDetokenized, int totalFailed) { + this.totalTokens = totalTokens; + this.totalDetokenized = totalDetokenized; + this.totalFailed = totalFailed; + } + + public int getTotalTokens() { + return totalTokens; + } + + public int getTotalDetokenized() { + return totalDetokenized; + } + + public int getTotalFailed() { + return totalFailed; + } + + @Override + public String toString() { + Gson gson = new Gson(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/ErrorRecord.java b/flowvault/src/main/java/com/skyflow/vault/data/ErrorRecord.java new file mode 100644 index 00000000..1536c0f9 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/ErrorRecord.java @@ -0,0 +1,51 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.annotations.Expose; + +public class ErrorRecord { + @Expose(serialize = true) + private int index; + @Expose(serialize = true) + private String error; + @Expose(serialize = true) + private int code; + @Expose(serialize = true) + private String requestId; + + public ErrorRecord(int index, String error, int code) { + this.index = index; + this.error = error; + this.code = code; + } + + public ErrorRecord(int index, String error, int code, String requestId) { + this.index = index; + this.error = error; + this.code = code; + this.requestId = requestId; + } + + public String getError() { + return error; + } + + public int getCode() { + return code; + } + + public int getIndex() { + return index; + } + + public String getRequestId() { + return requestId; + } + + + @Override + public String toString() { + Gson gson = new Gson(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/Success.java b/flowvault/src/main/java/com/skyflow/vault/data/Success.java new file mode 100644 index 00000000..59cdf722 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/Success.java @@ -0,0 +1,53 @@ +package com.skyflow.vault.data; +import com.google.gson.Gson; +import com.google.gson.annotations.Expose; + +import java.util.List; +import java.util.Map; + +public class Success { + @Expose(serialize = true) + private int index; + @Expose(serialize = true) + private String skyflow_id; + @Expose(serialize = true) + private Map> tokens; + @Expose(serialize = true) + private Map data; + @Expose(serialize = true) + private String table; + + public int getIndex() { + return index; + } + + public Success(int index, String skyflow_id, Map> tokens, Map data, String table) { + this.index = index; + this.skyflow_id = skyflow_id; + this.tokens = tokens; + this.data = data; + this.table = table; + } + + public String getSkyflowId() { + return this.skyflow_id; + } + + public Map> getTokens() { + return this.tokens; + } + + public Map getData() { + return this.data; + } + + public String getTable(){ + return this.table; + } + + @Override + public String toString() { + Gson gson = new Gson(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/Summary.java b/flowvault/src/main/java/com/skyflow/vault/data/Summary.java new file mode 100644 index 00000000..fb152fb2 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/Summary.java @@ -0,0 +1,42 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.annotations.Expose; + +public class Summary { + @Expose(serialize = true) + private int totalRecords; + @Expose(serialize = true) + private int totalInserted; + @Expose(serialize = true) + private int totalFailed; + + public Summary() { + } + + public Summary(int totalRecords, int totalInserted, int totalFailed) { + this.totalRecords = totalRecords; + this.totalInserted = totalInserted; + this.totalFailed = totalFailed; + } + + public int getTotalRecords() { + return totalRecords; + } + + + public int getTotalInserted() { + return totalInserted; + } + + public int getTotalFailed() { + return totalFailed; + } + + + @Override + public String toString() { + Gson gson = new Gson(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/Token.java b/flowvault/src/main/java/com/skyflow/vault/data/Token.java new file mode 100644 index 00000000..c50242bb --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/Token.java @@ -0,0 +1,23 @@ +package com.skyflow.vault.data; + +import com.google.gson.annotations.Expose; + +public class Token { + @Expose(serialize = true) + private String token; + @Expose(serialize = true) + private String tokenGroupName; + + public String getToken() { + return token; + } + + public String getTokenGroupName() { + return tokenGroupName; + } + + public Token(String token, String tokenGroupName) { + this.token = token; + this.tokenGroupName = tokenGroupName; + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeOptions.java b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeOptions.java new file mode 100644 index 00000000..2ac5bcfd --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeOptions.java @@ -0,0 +1,30 @@ +package com.skyflow.vault.data; + +public final class TokenizeOptions { + private final RequestInterceptor interceptor; + + private TokenizeOptions(Builder builder) { + this.interceptor = builder.interceptor; + } + + public RequestInterceptor getInterceptor() { + return interceptor; + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private RequestInterceptor interceptor; + + public Builder interceptor(RequestInterceptor interceptor) { + this.interceptor = interceptor; + return this; + } + + public TokenizeOptions build() { + return new TokenizeOptions(this); + } + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeSuccess.java b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeSuccess.java new file mode 100644 index 00000000..59ee4b65 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeSuccess.java @@ -0,0 +1,53 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.annotations.Expose; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Represents one successfully tokenized input record. + * All tokens generated for this record (one per tokenGroupName) are grouped + * under the {@code tokens} map: tokenGroupName → token value. + */ +public class TokenizeSuccess { + @Expose(serialize = true) + private int index; + + @Expose(serialize = true) + private Object value; + + @Expose(serialize = true) + private Map tokens; + + public TokenizeSuccess(int index, Object value) { + this.index = index; + this.value = value; + this.tokens = new LinkedHashMap<>(); + } + + /** Adds a token for a specific token group name. */ + public void addToken(String tokenGroupName, String token) { + this.tokens.put(tokenGroupName, token); + } + + public int getIndex() { + return index; + } + + public Object getValue() { + return value; + } + + public Map getTokens() { + return tokens; + } + + @Override + public String toString() { + Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/main/java/com/skyflow/vault/data/TokenizeSummary.java b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeSummary.java new file mode 100644 index 00000000..b9a692c0 --- /dev/null +++ b/flowvault/src/main/java/com/skyflow/vault/data/TokenizeSummary.java @@ -0,0 +1,39 @@ +package com.skyflow.vault.data; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.annotations.Expose; + +public class TokenizeSummary { + @Expose(serialize = true) + private int totalTokens; + + @Expose(serialize = true) + private int totalTokenized; + + @Expose(serialize = true) + private int totalPartial; + + @Expose(serialize = true) + private int totalFailed; + + public TokenizeSummary() {} + + public TokenizeSummary(int totalTokens, int totalTokenized, int totalPartial, int totalFailed) { + this.totalTokens = totalTokens; + this.totalTokenized = totalTokenized; + this.totalPartial = totalPartial; + this.totalFailed = totalFailed; + } + + public int getTotalTokens() { return totalTokens; } + public int getTotalTokenized() { return totalTokenized; } + public int getTotalPartial() { return totalPartial; } + public int getTotalFailed() { return totalFailed; } + + @Override + public String toString() { + Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + return gson.toJson(this); + } +} diff --git a/flowvault/src/test/java/com/skyflow/utils/UtilsTests.java b/flowvault/src/test/java/com/skyflow/utils/UtilsTests.java index 425f461a..d5214913 100644 --- a/flowvault/src/test/java/com/skyflow/utils/UtilsTests.java +++ b/flowvault/src/test/java/com/skyflow/utils/UtilsTests.java @@ -6,6 +6,7 @@ import com.skyflow.enums.Env; import com.skyflow.enums.UpsertType; import com.skyflow.errors.SkyflowException; +import com.skyflow.generated.rest.core.ApiClientApiException; import com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest; import com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest; import com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest; @@ -18,14 +19,27 @@ import com.skyflow.generated.rest.types.V1FlowDetokenizeResponseObject; import com.skyflow.generated.rest.types.V1FlowTokenizeResponse; import com.skyflow.generated.rest.types.V1FlowTokenizeResponseObject; +import com.skyflow.generated.rest.types.V1InsertRecordData; import com.skyflow.generated.rest.types.V1InsertResponse; import com.skyflow.generated.rest.types.V1RecordResponseObject; +import com.skyflow.vault.data.BulkDeleteTokensRequest; +import com.skyflow.vault.data.BulkDeleteTokensResponse; +import com.skyflow.vault.data.BulkDetokenizeRequest; +import com.skyflow.vault.data.BulkDetokenizeResponse; +import com.skyflow.vault.data.BulkInsertRecord; +import com.skyflow.vault.data.BulkInsertRequest; +import com.skyflow.vault.data.BulkInsertResponse; +import com.skyflow.vault.data.BulkTokenGroupRedactions; +import com.skyflow.vault.data.BulkTokenizeRecord; +import com.skyflow.vault.data.BulkTokenizeRequest; +import com.skyflow.vault.data.BulkTokenizeResponse; import com.skyflow.vault.data.DeleteTokensRequest; import com.skyflow.vault.data.DeleteTokensResponse; import com.skyflow.vault.data.DetokenizeData; import com.skyflow.vault.data.DetokenizeRecordResponse; import com.skyflow.vault.data.DetokenizeRequest; import com.skyflow.vault.data.DetokenizeResponse; +import com.skyflow.vault.data.ErrorRecord; import com.skyflow.vault.data.InsertRecord; import com.skyflow.vault.data.InsertRequest; import com.skyflow.vault.data.InsertResponse; @@ -38,6 +52,7 @@ import org.junit.Test; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -565,4 +580,571 @@ public void testBuildDeleteTokensResponse_incompleteResponseDoesNotThrow() { Assert.assertEquals(1, response.getTokens().size()); } + + // ── getBulkInsertRequestBody (bulk overload) ────────────────────────────── + + @Test + public void testGetBulkInsertRequestBody_bulk_buildsCorrectRequest() { + Map data = new HashMap<>(); + data.put("name", "john"); + BulkInsertRecord record = BulkInsertRecord.builder().data(data).build(); + ArrayList records = new ArrayList<>(); + records.add(record); + BulkInsertRequest request = BulkInsertRequest.builder().table("table1").records(records).build(); + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + + V1InsertRequest body = Utils.getBulkInsertRequestBody(request, config); + + Assert.assertEquals("vault123", body.getVaultId().get()); + Assert.assertEquals("table1", body.getTableName().get()); + Assert.assertEquals(1, body.getRecords().get().size()); + Assert.assertEquals(data, body.getRecords().get().get(0).getData().get()); + } + + @Test + public void testGetBulkInsertRequestBody_bulk_withUpsertAtRequestLevel() { + Map data = new HashMap<>(); + data.put("name", "john"); + BulkInsertRecord record = BulkInsertRecord.builder().data(data).build(); + ArrayList records = new ArrayList<>(); + records.add(record); + BulkInsertRequest request = BulkInsertRequest.builder() + .table("table1") + .records(records) + .upsert(Collections.singletonList("email")) + .upsertType(UpsertType.UPDATE) + .build(); + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + + V1InsertRequest body = Utils.getBulkInsertRequestBody(request, config); + + Assert.assertTrue(body.getUpsert().isPresent()); + Assert.assertEquals(Collections.singletonList("email"), body.getUpsert().get().getUniqueColumns().get()); + Assert.assertEquals(FlowEnumUpdateType.UPDATE, body.getUpsert().get().getUpdateType().get()); + } + + @Test + public void testGetBulkInsertRequestBody_bulk_withUpsertAtRecordLevel() { + Map data = new HashMap<>(); + data.put("name", "john"); + BulkInsertRecord record = BulkInsertRecord.builder() + .table("table1") + .data(data) + .upsert(Collections.singletonList("email")) + .upsertType(UpsertType.REPLACE) + .build(); + ArrayList records = new ArrayList<>(); + records.add(record); + BulkInsertRequest request = BulkInsertRequest.builder().records(records).build(); + VaultConfig config = new VaultConfig(); + config.setVaultId("vault123"); + + V1InsertRequest body = Utils.getBulkInsertRequestBody(request, config); + + Assert.assertEquals("table1", body.getRecords().get().get(0).getTableName().get()); + Assert.assertTrue(body.getRecords().get().get(0).getUpsert().isPresent()); + Assert.assertEquals(FlowEnumUpdateType.REPLACE, body.getRecords().get().get(0).getUpsert().get().getUpdateType().get()); + } + + // ── getBulkDetokenizeRequestBody ────────────────────────────────────────── + + @Test + public void testGetBulkDetokenizeRequestBody_buildsCorrectRequest() { + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder() + .tokens(Arrays.asList("token1", "token2")) + .build(); + + V1FlowDetokenizeRequest body = Utils.getBulkDetokenizeRequestBody(request, "vault123"); + + Assert.assertEquals("vault123", body.getVaultId().get()); + Assert.assertEquals(Arrays.asList("token1", "token2"), body.getTokens().get()); + Assert.assertFalse(body.getTokenGroupRedactions().isPresent()); + } + + @Test + public void testGetBulkDetokenizeRequestBody_withTokenGroupRedactions() { + BulkTokenGroupRedactions redaction = BulkTokenGroupRedactions.builder() + .tokenGroupName("group1") + .redaction("MASKED") + .build(); + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder() + .tokens(Collections.singletonList("token1")) + .tokenGroupRedactions(Collections.singletonList(redaction)) + .build(); + + V1FlowDetokenizeRequest body = Utils.getBulkDetokenizeRequestBody(request, "vault123"); + + Assert.assertTrue(body.getTokenGroupRedactions().isPresent()); + Assert.assertEquals(1, body.getTokenGroupRedactions().get().size()); + Assert.assertEquals("group1", body.getTokenGroupRedactions().get().get(0).getTokenGroupName().get()); + Assert.assertEquals("MASKED", body.getTokenGroupRedactions().get().get(0).getRedaction().get()); + } + + // ── getBulkDeleteTokensRequestBody ───────────────────────────────────────── + + @Test + public void testGetBulkDeleteTokensRequestBody_buildsCorrectRequest() { + BulkDeleteTokensRequest request = BulkDeleteTokensRequest.builder() + .tokens(Arrays.asList("token1", "token2")) + .build(); + + V1FlowDeleteTokenRequest body = Utils.getBulkDeleteTokensRequestBody(request, "vault123"); + + Assert.assertEquals("vault123", body.getVaultId().get()); + Assert.assertEquals(Arrays.asList("token1", "token2"), body.getTokens().get()); + } + + // ── getBulkTokenizeRequestBody ───────────────────────────────────────────── + + @Test + public void testGetBulkTokenizeRequestBody_buildsCorrectRequest() { + BulkTokenizeRecord record = BulkTokenizeRecord.builder() + .value("value1") + .tokenGroupNames(Collections.singletonList("group1")) + .build(); + ArrayList data = new ArrayList<>(); + data.add(record); + BulkTokenizeRequest request = BulkTokenizeRequest.builder().data(data).build(); + + V1FlowTokenizeRequest body = Utils.getBulkTokenizeRequestBody(request, "vault123"); + + Assert.assertEquals("vault123", body.getVaultId().get()); + Assert.assertEquals(1, body.getData().get().size()); + Assert.assertEquals("value1", body.getData().get().get(0).getValue().get()); + Assert.assertEquals(Collections.singletonList("group1"), body.getData().get().get(0).getTokenGroupNames().get()); + } + + // ── createBulkInsertBatches ──────────────────────────────────────────────── + + @Test + public void testCreateBulkInsertBatches_splitsEvenly() { + List records = new ArrayList<>(); + for (int i = 0; i < 4; i++) { + records.add(V1InsertRecordData.builder().data(new HashMap<>()).build()); + } + + List> batches = Utils.createBulkInsertBatches(records, 2); + + Assert.assertEquals(2, batches.size()); + Assert.assertEquals(2, batches.get(0).size()); + Assert.assertEquals(2, batches.get(1).size()); + } + + @Test + public void testCreateBulkInsertBatches_splitsWithRemainder() { + List records = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + records.add(V1InsertRecordData.builder().data(new HashMap<>()).build()); + } + + List> batches = Utils.createBulkInsertBatches(records, 2); + + Assert.assertEquals(3, batches.size()); + Assert.assertEquals(1, batches.get(2).size()); + } + + // ── createBulkDetokenizeBatches ──────────────────────────────────────────── + + @Test + public void testCreateBulkDetokenizeBatches_splitsTokens() { + V1FlowDetokenizeRequest request = V1FlowDetokenizeRequest.builder() + .vaultId("vault123") + .tokens(Arrays.asList("t1", "t2", "t3")) + .build(); + + List batches = Utils.createBulkDetokenizeBatches(request, 2); + + Assert.assertEquals(2, batches.size()); + Assert.assertEquals(Arrays.asList("t1", "t2"), batches.get(0).getTokens().get()); + Assert.assertEquals(Collections.singletonList("t3"), batches.get(1).getTokens().get()); + Assert.assertEquals("vault123", batches.get(0).getVaultId().get()); + } + + @Test + public void testCreateBulkDetokenizeBatches_carriesTokenGroupRedactions() { + com.skyflow.generated.rest.types.V1TokenGroupRedactions redaction = + com.skyflow.generated.rest.types.V1TokenGroupRedactions.builder() + .tokenGroupName("group1") + .redaction("MASKED") + .build(); + V1FlowDetokenizeRequest request = V1FlowDetokenizeRequest.builder() + .vaultId("vault123") + .tokens(Arrays.asList("t1", "t2")) + .tokenGroupRedactions(Collections.singletonList(redaction)) + .build(); + + List batches = Utils.createBulkDetokenizeBatches(request, 5); + + Assert.assertEquals(1, batches.size()); + Assert.assertTrue(batches.get(0).getTokenGroupRedactions().isPresent()); + Assert.assertEquals("group1", batches.get(0).getTokenGroupRedactions().get().get(0).getTokenGroupName().get()); + } + + // ── createBulkDeleteTokensBatches ────────────────────────────────────────── + + @Test + public void testCreateBulkDeleteTokensBatches_splitsTokens() { + V1FlowDeleteTokenRequest request = V1FlowDeleteTokenRequest.builder() + .vaultId("vault123") + .tokens(Arrays.asList("t1", "t2", "t3")) + .build(); + + List batches = Utils.createBulkDeleteTokensBatches(request, 2); + + Assert.assertEquals(2, batches.size()); + Assert.assertEquals(Arrays.asList("t1", "t2"), batches.get(0).getTokens().get()); + Assert.assertEquals(Collections.singletonList("t3"), batches.get(1).getTokens().get()); + } + + // ── createBulkTokenizeBatches ────────────────────────────────────────────── + + @Test + public void testCreateBulkTokenizeBatches_splitsData() { + com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject obj1 = + com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject.builder().value("v1").build(); + com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject obj2 = + com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject.builder().value("v2").build(); + V1FlowTokenizeRequest request = V1FlowTokenizeRequest.builder() + .vaultId("vault123") + .data(Arrays.asList(obj1, obj2)) + .build(); + + List batches = Utils.createBulkTokenizeBatches(request, 1); + + Assert.assertEquals(2, batches.size()); + Assert.assertEquals(1, batches.get(0).getData().get().size()); + Assert.assertEquals("v1", batches.get(0).getData().get().get(0).getValue().get()); + Assert.assertEquals("v2", batches.get(1).getData().get().get(0).getValue().get()); + } + + // ── createErrorRecord ────────────────────────────────────────────────────── + + @Test + public void testCreateErrorRecord_withHttpCodeKey() { + Map recordMap = new HashMap<>(); + recordMap.put("http_code", 400); + recordMap.put("error", "bad request"); + + ErrorRecord err = Utils.createErrorRecord(recordMap, 0, "req-1"); + + Assert.assertEquals(400, err.getCode()); + Assert.assertEquals("bad request", err.getError()); + Assert.assertEquals("req-1", err.getRequestId()); + } + + @Test + public void testCreateErrorRecord_withStatusCodeKey() { + Map recordMap = new HashMap<>(); + recordMap.put("statusCode", 500); + recordMap.put("message", "server error"); + + ErrorRecord err = Utils.createErrorRecord(recordMap, 2, null); + + Assert.assertEquals(500, err.getCode()); + Assert.assertEquals("server error", err.getError()); + Assert.assertEquals(2, err.getIndex()); + } + + @Test + public void testCreateErrorRecord_nullMapReturnsNull() { + Assert.assertNull(Utils.createErrorRecord(null, 0, null)); + } + + // ── handleBulkInsertBatchException ──────────────────────────────────────── + + @Test + public void testHandleBulkInsertBatchException_apiExceptionWithRecordsBody() { + Map errorRecordMap = new HashMap<>(); + errorRecordMap.put("error", "duplicate"); + errorRecordMap.put("httpCode", 409); + Map body = new HashMap<>(); + body.put("records", Collections.singletonList(errorRecordMap)); + ApiClientApiException apiEx = new ApiClientApiException("insert failed", 409, body); + RuntimeException wrapper = new RuntimeException(apiEx); + + List batch = Collections.singletonList(V1InsertRecordData.builder().data(new HashMap<>()).build()); + List errors = Utils.handleBulkInsertBatchException(wrapper, batch, 0, 50); + + Assert.assertEquals(1, errors.size()); + Assert.assertEquals(409, errors.get(0).getCode()); + Assert.assertEquals("duplicate", errors.get(0).getError()); + } + + @Test + public void testHandleBulkInsertBatchException_apiExceptionWithNoParsableBody() { + ApiClientApiException apiEx = new ApiClientApiException("insert failed", 401, "unauthorized"); + RuntimeException wrapper = new RuntimeException(apiEx); + + List batch = Arrays.asList( + V1InsertRecordData.builder().data(new HashMap<>()).build(), + V1InsertRecordData.builder().data(new HashMap<>()).build()); + List errors = Utils.handleBulkInsertBatchException(wrapper, batch, 0, 50); + + Assert.assertEquals(2, errors.size()); + Assert.assertEquals(401, errors.get(0).getCode()); + Assert.assertEquals("insert failed", errors.get(0).getError()); + } + + @Test + public void testHandleBulkInsertBatchException_genericException() { + RuntimeException ex = new RuntimeException("boom"); + List batch = Collections.singletonList(V1InsertRecordData.builder().data(new HashMap<>()).build()); + + List errors = Utils.handleBulkInsertBatchException(ex, batch, 1, 2); + + Assert.assertEquals(1, errors.size()); + Assert.assertEquals(500, errors.get(0).getCode()); + Assert.assertEquals("boom", errors.get(0).getError()); + Assert.assertEquals(2, errors.get(0).getIndex()); + } + + // ── handleBulkDetokenizeBatchException ──────────────────────────────────── + + @Test + public void testHandleBulkDetokenizeBatchException_genericException() { + RuntimeException ex = new RuntimeException("boom"); + V1FlowDetokenizeRequest batch = V1FlowDetokenizeRequest.builder() + .vaultId("vault123") + .tokens(Collections.singletonList("t1")) + .build(); + + List errors = Utils.handleBulkDetokenizeBatchException(ex, batch, 0, 50); + + Assert.assertEquals(1, errors.size()); + Assert.assertEquals(500, errors.get(0).getCode()); + } + + // ── handleBulkDeleteTokensBatchException ────────────────────────────────── + + @Test + public void testHandleBulkDeleteTokensBatchException_apiExceptionWithTokensBody() { + Map errorRecordMap = new HashMap<>(); + errorRecordMap.put("error", "not found"); + errorRecordMap.put("httpCode", 404); + Map body = new HashMap<>(); + body.put("tokens", Collections.singletonList(errorRecordMap)); + ApiClientApiException apiEx = new ApiClientApiException("delete failed", 404, body); + RuntimeException wrapper = new RuntimeException(apiEx); + + V1FlowDeleteTokenRequest batch = V1FlowDeleteTokenRequest.builder() + .vaultId("vault123") + .tokens(Collections.singletonList("t1")) + .build(); + List errors = Utils.handleBulkDeleteTokensBatchException(wrapper, batch, 0, 50); + + Assert.assertEquals(1, errors.size()); + Assert.assertEquals(404, errors.get(0).getCode()); + Assert.assertEquals("not found", errors.get(0).getError()); + } + + @Test + public void testHandleBulkDeleteTokensBatchException_genericException() { + RuntimeException ex = new RuntimeException("boom"); + V1FlowDeleteTokenRequest batch = V1FlowDeleteTokenRequest.builder() + .vaultId("vault123") + .tokens(Collections.singletonList("t1")) + .build(); + + List errors = Utils.handleBulkDeleteTokensBatchException(ex, batch, 0, 50); + + Assert.assertEquals(1, errors.size()); + Assert.assertEquals(500, errors.get(0).getCode()); + } + + // ── handleBulkTokenizeBatchException ─────────────────────────────────────── + + @Test + public void testHandleBulkTokenizeBatchException_genericException() { + RuntimeException ex = new RuntimeException("boom"); + V1FlowTokenizeRequest batch = V1FlowTokenizeRequest.builder() + .vaultId("vault123") + .data(Collections.singletonList(com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject.builder().value("v1").build())) + .build(); + + List errors = Utils.handleBulkTokenizeBatchException(ex, batch, 0, 50); + + Assert.assertEquals(1, errors.size()); + Assert.assertEquals(500, errors.get(0).getCode()); + } + + // ── formatBulkInsertResponse ─────────────────────────────────────────────── + + @Test + public void testFormatBulkInsertResponse_success() { + Map tokens = new HashMap<>(); + tokens.put("name", "tok-abc"); + V1RecordResponseObject record = V1RecordResponseObject.builder() + .skyflowId("sky-id-1") + .tokens(tokens) + .build(); + V1InsertResponse response = V1InsertResponse.builder().records(Collections.singletonList(record)).build(); + + BulkInsertResponse result = Utils.formatBulkInsertResponse(response, 0, 50, new HashMap<>()); + + Assert.assertEquals(1, result.getSuccess().size()); + Assert.assertEquals("sky-id-1", result.getSuccess().get(0).getSkyflowId()); + Assert.assertTrue(result.getErrors().isEmpty()); + } + + @Test + public void testFormatBulkInsertResponse_errorWithMissingHttpCodeDefaultsTo500() { + V1RecordResponseObject record = V1RecordResponseObject.builder() + .error("insert failed") + .build(); + V1InsertResponse response = V1InsertResponse.builder().records(Collections.singletonList(record)).build(); + + BulkInsertResponse result = Utils.formatBulkInsertResponse(response, 0, 50, new HashMap<>()); + + Assert.assertEquals(1, result.getErrors().size()); + Assert.assertEquals(500, result.getErrors().get(0).getCode()); + Assert.assertEquals("insert failed", result.getErrors().get(0).getError()); + } + + @Test + public void testFormatBulkInsertResponse_nullResponseReturnsNull() { + Assert.assertNull(Utils.formatBulkInsertResponse(null, 0, 50, new HashMap<>())); + } + + // ── formatBulkDetokenizeResponse ─────────────────────────────────────────── + + @Test + public void testFormatBulkDetokenizeResponse_success() { + V1FlowDetokenizeResponseObject record = V1FlowDetokenizeResponseObject.builder() + .token("token1") + .value("secret-value") + .build(); + V1FlowDetokenizeResponse response = V1FlowDetokenizeResponse.builder() + .response(Collections.singletonList(record)) + .build(); + + BulkDetokenizeResponse result = Utils.formatBulkDetokenizeResponse(response, 0, 50, new HashMap<>()); + + Assert.assertEquals(1, result.getSuccess().size()); + Assert.assertEquals("secret-value", result.getSuccess().get(0).getValue()); + Assert.assertTrue(result.getErrors().isEmpty()); + } + + @Test + public void testFormatBulkDetokenizeResponse_errorWithMissingHttpCodeDefaultsTo500() { + V1FlowDetokenizeResponseObject record = V1FlowDetokenizeResponseObject.builder() + .token("token1") + .error("token not found") + .build(); + V1FlowDetokenizeResponse response = V1FlowDetokenizeResponse.builder() + .response(Collections.singletonList(record)) + .build(); + + BulkDetokenizeResponse result = Utils.formatBulkDetokenizeResponse(response, 0, 50, new HashMap<>()); + + Assert.assertEquals(1, result.getErrors().size()); + Assert.assertEquals(500, result.getErrors().get(0).getCode()); + } + + @Test + public void testFormatBulkDetokenizeResponse_emptyResponseReturnsNull() { + V1FlowDetokenizeResponse response = V1FlowDetokenizeResponse.builder().build(); + Assert.assertNull(Utils.formatBulkDetokenizeResponse(response, 0, 50, new HashMap<>())); + } + + // ── formatBulkDeleteTokensResponse ───────────────────────────────────────── + + @Test + public void testFormatBulkDeleteTokensResponse_success() { + V1DeleteTokenResponseObject record = V1DeleteTokenResponseObject.builder() + .value("token1") + .build(); + V1FlowDeleteTokenResponse response = V1FlowDeleteTokenResponse.builder() + .tokens(Collections.singletonList(record)) + .build(); + + BulkDeleteTokensResponse result = Utils.formatBulkDeleteTokensResponse(response, 0, 50, new HashMap<>()); + + Assert.assertEquals(1, result.getSuccess().size()); + Assert.assertEquals("token1", result.getSuccess().get(0).getToken()); + Assert.assertTrue(result.getErrors().isEmpty()); + } + + @Test + public void testFormatBulkDeleteTokensResponse_error() { + V1DeleteTokenResponseObject record = V1DeleteTokenResponseObject.builder() + .error("token not found") + .httpCode(404) + .build(); + V1FlowDeleteTokenResponse response = V1FlowDeleteTokenResponse.builder() + .tokens(Collections.singletonList(record)) + .build(); + + BulkDeleteTokensResponse result = Utils.formatBulkDeleteTokensResponse(response, 0, 50, new HashMap<>()); + + Assert.assertEquals(1, result.getErrors().size()); + Assert.assertEquals(404, result.getErrors().get(0).getCode()); + } + + @Test + public void testFormatBulkDeleteTokensResponse_emptyResponseReturnsNull() { + V1FlowDeleteTokenResponse response = V1FlowDeleteTokenResponse.builder().build(); + Assert.assertNull(Utils.formatBulkDeleteTokensResponse(response, 0, 50, new HashMap<>())); + } + + // ── formatBulkTokenizeResponse ───────────────────────────────────────────── + + @Test + public void testFormatBulkTokenizeResponse_success() { + FlowTokenizeResponseObjectToken token = FlowTokenizeResponseObjectToken.builder() + .tokenGroupName("group1") + .token("tok-abc") + .build(); + V1FlowTokenizeResponseObject responseObject = V1FlowTokenizeResponseObject.builder() + .value("value1") + .tokens(Collections.singletonList(token)) + .build(); + V1FlowTokenizeResponse response = V1FlowTokenizeResponse.builder() + .response(Collections.singletonList(responseObject)) + .build(); + V1FlowTokenizeRequest batchRequest = V1FlowTokenizeRequest.builder() + .vaultId("vault123") + .data(Collections.singletonList(com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject.builder().value("value1").build())) + .build(); + + BulkTokenizeResponse result = Utils.formatBulkTokenizeResponse(response, batchRequest, 0, 50, new HashMap<>()); + + Assert.assertEquals(1, result.getSuccess().size()); + Assert.assertEquals("tok-abc", result.getSuccess().get(0).getTokens().get("group1")); + Assert.assertTrue(result.getErrors().isEmpty()); + } + + @Test + public void testFormatBulkTokenizeResponse_tokenError() { + FlowTokenizeResponseObjectToken token = FlowTokenizeResponseObjectToken.builder() + .tokenGroupName("group1") + .error("invalid value") + .httpCode(400) + .build(); + V1FlowTokenizeResponseObject responseObject = V1FlowTokenizeResponseObject.builder() + .value("value1") + .tokens(Collections.singletonList(token)) + .build(); + V1FlowTokenizeResponse response = V1FlowTokenizeResponse.builder() + .response(Collections.singletonList(responseObject)) + .build(); + V1FlowTokenizeRequest batchRequest = V1FlowTokenizeRequest.builder() + .vaultId("vault123") + .data(Collections.singletonList(com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject.builder().value("value1").build())) + .build(); + + BulkTokenizeResponse result = Utils.formatBulkTokenizeResponse(response, batchRequest, 0, 50, new HashMap<>()); + + Assert.assertTrue(result.getSuccess().isEmpty()); + Assert.assertEquals(1, result.getErrors().size()); + Assert.assertEquals(400, result.getErrors().get(0).getCode()); + } + + @Test + public void testFormatBulkTokenizeResponse_emptyResponseReturnsNull() { + V1FlowTokenizeResponse response = V1FlowTokenizeResponse.builder().build(); + V1FlowTokenizeRequest batchRequest = V1FlowTokenizeRequest.builder().vaultId("vault123").build(); + Assert.assertNull(Utils.formatBulkTokenizeResponse(response, batchRequest, 0, 50, new HashMap<>())); + } } diff --git a/flowvault/src/test/java/com/skyflow/utils/validations/ValidationsTests.java b/flowvault/src/test/java/com/skyflow/utils/validations/ValidationsTests.java index 2167fd30..72ae2293 100644 --- a/flowvault/src/test/java/com/skyflow/utils/validations/ValidationsTests.java +++ b/flowvault/src/test/java/com/skyflow/utils/validations/ValidationsTests.java @@ -4,6 +4,13 @@ import com.skyflow.config.VaultConfig; import com.skyflow.enums.Env; import com.skyflow.errors.SkyflowException; +import com.skyflow.vault.data.BulkDeleteTokensRequest; +import com.skyflow.vault.data.BulkInsertRecord; +import com.skyflow.vault.data.BulkInsertRequest; +import com.skyflow.vault.data.BulkDetokenizeRequest; +import com.skyflow.vault.data.BulkTokenGroupRedactions; +import com.skyflow.vault.data.BulkTokenizeRecord; +import com.skyflow.vault.data.BulkTokenizeRequest; import com.skyflow.vault.data.DeleteTokensRequest; import com.skyflow.vault.data.DetokenizeData; import com.skyflow.vault.data.DetokenizeRequest; @@ -729,4 +736,389 @@ public void testValidateDetokenizeRequest_validRequestWithTokenGroupRedactions() Assert.fail(INVALID_EXCEPTION_THROWN); } } + + // ── validateBulkInsertRequest ────────────────────────────────────────────── + + @Test + public void testValidateBulkInsertRequest_nullRecords() { + BulkInsertRequest request = BulkInsertRequest.builder().records(null).build(); + try { + Validations.validateBulkInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkInsertRequest_emptyRecords() { + BulkInsertRequest request = BulkInsertRequest.builder().records(new ArrayList<>()).build(); + try { + Validations.validateBulkInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkInsertRequest_nullRecordInList() { + ArrayList records = new ArrayList<>(); + records.add(null); + BulkInsertRequest request = BulkInsertRequest.builder().records(records).build(); + try { + Validations.validateBulkInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkInsertRequest_tableSpecifiedAtBothPlaces() { + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(BulkInsertRecord.builder().table("table1").data(data).build()); + BulkInsertRequest request = BulkInsertRequest.builder().table("table1").records(records).build(); + try { + Validations.validateBulkInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkInsertRequest_tableNotSpecifiedAnywhere() { + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(BulkInsertRecord.builder().data(data).build()); + BulkInsertRequest request = BulkInsertRequest.builder().records(records).build(); + try { + Validations.validateBulkInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkInsertRequest_emptyKeyInData() { + Map data = new HashMap<>(); + data.put("", "john"); + ArrayList records = new ArrayList<>(); + records.add(BulkInsertRecord.builder().table("table1").data(data).build()); + BulkInsertRequest request = BulkInsertRequest.builder().records(records).build(); + try { + Validations.validateBulkInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkInsertRequest_emptyValueInData() { + Map data = new HashMap<>(); + data.put("name", ""); + ArrayList records = new ArrayList<>(); + records.add(BulkInsertRecord.builder().table("table1").data(data).build()); + BulkInsertRequest request = BulkInsertRequest.builder().records(records).build(); + try { + Validations.validateBulkInsertRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkInsertRequest_validRequest() { + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(BulkInsertRecord.builder().table("table1").data(data).build()); + BulkInsertRequest request = BulkInsertRequest.builder().records(records).build(); + try { + Validations.validateBulkInsertRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testValidateBulkInsertRequest_validRequestOver10000Records() { + // Bulk operations rely on batching, not a hard cap — must not throw for large lists. + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + for (int i = 0; i < 10001; i++) { + records.add(BulkInsertRecord.builder().table("table1").data(data).build()); + } + BulkInsertRequest request = BulkInsertRequest.builder().records(records).build(); + try { + Validations.validateBulkInsertRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + // ── validateBulkDetokenizeRequest ────────────────────────────────────────── + + @Test + public void testValidateBulkDetokenizeRequest_nullRequest() { + try { + Validations.validateBulkDetokenizeRequest(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkDetokenizeRequest_nullTokens() { + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder().tokens(null).build(); + try { + Validations.validateBulkDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkDetokenizeRequest_emptyTokens() { + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder().tokens(new ArrayList<>()).build(); + try { + Validations.validateBulkDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkDetokenizeRequest_nullTokenInList() { + List tokens = new ArrayList<>(); + tokens.add(null); + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder().tokens(tokens).build(); + try { + Validations.validateBulkDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkDetokenizeRequest_nullRedactionGroupObject() { + List groupRedactions = new ArrayList<>(); + groupRedactions.add(null); + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder() + .tokens(Collections.singletonList("token1")) + .tokenGroupRedactions(groupRedactions) + .build(); + try { + Validations.validateBulkDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkDetokenizeRequest_nullGroupNameInRedaction() { + List groupRedactions = Collections.singletonList( + BulkTokenGroupRedactions.builder().redaction("MASKED").build()); + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder() + .tokens(Collections.singletonList("token1")) + .tokenGroupRedactions(groupRedactions) + .build(); + try { + Validations.validateBulkDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkDetokenizeRequest_nullRedactionInGroup() { + List groupRedactions = Collections.singletonList( + BulkTokenGroupRedactions.builder().tokenGroupName("group1").build()); + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder() + .tokens(Collections.singletonList("token1")) + .tokenGroupRedactions(groupRedactions) + .build(); + try { + Validations.validateBulkDetokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkDetokenizeRequest_validRequest() { + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + try { + Validations.validateBulkDetokenizeRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testValidateBulkDetokenizeRequest_validRequestWithRedactions() { + List groupRedactions = Collections.singletonList( + BulkTokenGroupRedactions.builder().tokenGroupName("group1").redaction("MASKED").build()); + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder() + .tokens(Collections.singletonList("token1")) + .tokenGroupRedactions(groupRedactions) + .build(); + try { + Validations.validateBulkDetokenizeRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + // ── validateBulkDeleteTokensRequest ──────────────────────────────────────── + + @Test + public void testValidateBulkDeleteTokensRequest_nullRequest() { + try { + Validations.validateBulkDeleteTokensRequest(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkDeleteTokensRequest_emptyTokens() { + BulkDeleteTokensRequest request = BulkDeleteTokensRequest.builder().tokens(new ArrayList<>()).build(); + try { + Validations.validateBulkDeleteTokensRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkDeleteTokensRequest_emptyTokenInList() { + BulkDeleteTokensRequest request = BulkDeleteTokensRequest.builder() + .tokens(Arrays.asList("token1", " ")) + .build(); + try { + Validations.validateBulkDeleteTokensRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkDeleteTokensRequest_validRequest() { + BulkDeleteTokensRequest request = BulkDeleteTokensRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + try { + Validations.validateBulkDeleteTokensRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + // ── validateBulkTokenizeRequest ──────────────────────────────────────────── + + @Test + public void testValidateBulkTokenizeRequest_nullRequest() { + try { + Validations.validateBulkTokenizeRequest(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkTokenizeRequest_emptyData() { + BulkTokenizeRequest request = BulkTokenizeRequest.builder().data(new ArrayList<>()).build(); + try { + Validations.validateBulkTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkTokenizeRequest_nullRecordInList() { + ArrayList data = new ArrayList<>(); + data.add(null); + BulkTokenizeRequest request = BulkTokenizeRequest.builder().data(data).build(); + try { + Validations.validateBulkTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkTokenizeRequest_emptyValue() { + ArrayList data = new ArrayList<>(); + data.add(BulkTokenizeRecord.builder().value(" ").build()); + BulkTokenizeRequest request = BulkTokenizeRequest.builder().data(data).build(); + try { + Validations.validateBulkTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkTokenizeRequest_emptyGroupNameInList() { + ArrayList data = new ArrayList<>(); + data.add(BulkTokenizeRecord.builder().value("value1").tokenGroupNames(Arrays.asList("group1", " ")).build()); + BulkTokenizeRequest request = BulkTokenizeRequest.builder().data(data).build(); + try { + Validations.validateBulkTokenizeRequest(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testValidateBulkTokenizeRequest_validRequestWithTokenGroupNames() { + ArrayList data = new ArrayList<>(); + data.add(BulkTokenizeRecord.builder().value("value1").tokenGroupNames(Collections.singletonList("group1")).build()); + BulkTokenizeRequest request = BulkTokenizeRequest.builder().data(data).build(); + try { + Validations.validateBulkTokenizeRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } + + @Test + public void testValidateBulkTokenizeRequest_validRequestWithoutTokenGroupNames() { + // Unlike the non-bulk tokenize validator, tokenGroupNames is optional for bulk requests. + ArrayList data = new ArrayList<>(); + data.add(BulkTokenizeRecord.builder().value("value1").build()); + BulkTokenizeRequest request = BulkTokenizeRequest.builder().data(data).build(); + try { + Validations.validateBulkTokenizeRequest(request); + } catch (SkyflowException e) { + Assert.fail(INVALID_EXCEPTION_THROWN); + } + } } diff --git a/flowvault/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java b/flowvault/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java index 78d6aadd..e0af4549 100644 --- a/flowvault/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java +++ b/flowvault/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java @@ -3,12 +3,14 @@ import com.skyflow.VaultClient; import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; +import com.skyflow.enums.CustomHeaderKey; import com.skyflow.enums.Env; import com.skyflow.errors.SkyflowException; import com.skyflow.generated.rest.ApiClient; import com.skyflow.generated.rest.core.ApiClientApiException; import com.skyflow.generated.rest.core.ApiClientException; import com.skyflow.generated.rest.core.ApiClientHttpResponse; +import com.skyflow.generated.rest.core.RequestOptions; import com.skyflow.generated.rest.resources.flowservice.FlowserviceClient; import com.skyflow.generated.rest.resources.flowservice.RawFlowserviceClient; import com.skyflow.generated.rest.types.FlowTokenizeResponseObjectToken; @@ -21,14 +23,26 @@ import com.skyflow.generated.rest.types.V1InsertResponse; import com.skyflow.generated.rest.types.V1RecordResponseObject; import com.skyflow.utils.Constants; +import com.skyflow.vault.data.BulkDeleteTokensRequest; +import com.skyflow.vault.data.BulkDeleteTokensResponse; +import com.skyflow.vault.data.BulkDetokenizeRequest; +import com.skyflow.vault.data.BulkDetokenizeResponse; +import com.skyflow.vault.data.BulkInsertRecord; +import com.skyflow.vault.data.BulkInsertRequest; +import com.skyflow.vault.data.BulkInsertResponse; +import com.skyflow.vault.data.BulkTokenizeRecord; +import com.skyflow.vault.data.BulkTokenizeRequest; +import com.skyflow.vault.data.BulkTokenizeResponse; import com.skyflow.vault.data.DeleteTokensRequest; import com.skyflow.vault.data.DeleteTokensResponse; import com.skyflow.vault.data.DetokenizeData; import com.skyflow.vault.data.DetokenizeRequest; import com.skyflow.vault.data.DetokenizeResponse; +import com.skyflow.vault.data.InsertOptions; import com.skyflow.vault.data.InsertRecord; import com.skyflow.vault.data.InsertRequest; import com.skyflow.vault.data.InsertResponse; +import com.skyflow.vault.data.RequestInterceptor; import com.skyflow.vault.data.TokenizeRecord; import com.skyflow.vault.data.TokenizeRequest; import com.skyflow.vault.data.TokenizeResponse; @@ -37,6 +51,7 @@ import okhttp3.Response; import org.junit.Assert; import org.junit.Test; +import org.mockito.ArgumentCaptor; import org.mockito.Mockito; import java.lang.reflect.Field; @@ -44,6 +59,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.TimeUnit; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; @@ -442,4 +458,368 @@ public void testDeleteTokens_nullRequestThrowsSkyflowException() throws Exceptio Assert.assertNotNull(e.getMessage()); } } + + // ── insert/detokenize interceptor header wiring ────────────────────────── + + @Test + public void testInsert_interceptorAddsCustomHeader() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + Map tokens = new HashMap<>(); + tokens.put("name", "tok-abc"); + V1RecordResponseObject record = V1RecordResponseObject.builder().skyflowId("sky-id-1").tokens(tokens).build(); + V1InsertResponse body = V1InsertResponse.builder().records(Collections.singletonList(record)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.insert(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(InsertRecord.builder().table("table1").data(data).build()); + InsertRequest request = InsertRequest.builder().records(records).build(); + + RequestInterceptor interceptor = ctx -> ctx.addHeader(CustomHeaderKey.SkyflowAccountName, "acct-name"); + InsertOptions options = InsertOptions.builder().interceptor(interceptor).build(); + + controller.insert(request, options); + + ArgumentCaptor captor = ArgumentCaptor.forClass(RequestOptions.class); + Mockito.verify(mockRaw).insert(any(), captor.capture()); + Assert.assertEquals("acct-name", captor.getValue().getHeaders().get(CustomHeaderKey.SkyflowAccountName.toString())); + } + + @Test + public void testDetokenize_noOptionsDoesNotAddCustomHeader() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + V1FlowDetokenizeResponseObject record = V1FlowDetokenizeResponseObject.builder() + .token("token1").value("secret-value").build(); + V1FlowDetokenizeResponse body = V1FlowDetokenizeResponse.builder() + .response(Collections.singletonList(record)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.detokenize(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + ArrayList data = new ArrayList<>(); + data.add(new DetokenizeData("token1")); + DetokenizeRequest request = DetokenizeRequest.builder().detokenizeData(data).build(); + + controller.detokenize(request, null); + + ArgumentCaptor captor = ArgumentCaptor.forClass(RequestOptions.class); + Mockito.verify(mockRaw).detokenize(any(), captor.capture()); + Assert.assertNull(captor.getValue().getHeaders().get(CustomHeaderKey.SkyflowAccountID.toString())); + } + + // ── bulkInsert ──────────────────────────────────────────────────────────── + + @Test + public void testBulkInsert_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + Map tokens = new HashMap<>(); + tokens.put("name", "tok-abc"); + V1RecordResponseObject record = V1RecordResponseObject.builder().skyflowId("sky-id-1").tokens(tokens).build(); + V1InsertResponse body = V1InsertResponse.builder().records(Collections.singletonList(record)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.insert(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(BulkInsertRecord.builder().table("table1").data(data).build()); + BulkInsertRequest request = BulkInsertRequest.builder().records(records).build(); + + BulkInsertResponse response = controller.bulkInsert(request); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getSuccess().size()); + Assert.assertEquals("sky-id-1", response.getSuccess().get(0).getSkyflowId()); + Assert.assertTrue(response.getErrors().isEmpty()); + Assert.assertEquals(1, response.getSummary().getTotalRecords()); + Assert.assertEquals(1, response.getSummary().getTotalInserted()); + } + + @Test + public void testBulkInsert_invalidRequestThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + VaultController controller = createControllerWithMock(mockApi); + BulkInsertRequest request = BulkInsertRequest.builder().records(new ArrayList<>()).build(); + try { + controller.bulkInsert(request); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testBulkInsertAsync_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + Map tokens = new HashMap<>(); + tokens.put("name", "tok-abc"); + V1RecordResponseObject record = V1RecordResponseObject.builder().skyflowId("sky-id-1").tokens(tokens).build(); + V1InsertResponse body = V1InsertResponse.builder().records(Collections.singletonList(record)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.insert(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(BulkInsertRecord.builder().table("table1").data(data).build()); + BulkInsertRequest request = BulkInsertRequest.builder().records(records).build(); + + BulkInsertResponse response = controller.bulkInsertAsync(request).get(5, TimeUnit.SECONDS); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getSuccess().size()); + Assert.assertEquals("sky-id-1", response.getSuccess().get(0).getSkyflowId()); + } + + @Test + public void testBulkInsert_interceptorAddsCustomHeader() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + Map tokens = new HashMap<>(); + tokens.put("name", "tok-abc"); + V1RecordResponseObject record = V1RecordResponseObject.builder().skyflowId("sky-id-1").tokens(tokens).build(); + V1InsertResponse body = V1InsertResponse.builder().records(Collections.singletonList(record)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.insert(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + Map data = new HashMap<>(); + data.put("name", "john"); + ArrayList records = new ArrayList<>(); + records.add(BulkInsertRecord.builder().table("table1").data(data).build()); + BulkInsertRequest request = BulkInsertRequest.builder().records(records).build(); + + RequestInterceptor interceptor = ctx -> ctx.addHeader(CustomHeaderKey.SkyflowAccountID, "acct-123"); + InsertOptions options = InsertOptions.builder().interceptor(interceptor).build(); + + controller.bulkInsert(request, options); + + ArgumentCaptor captor = ArgumentCaptor.forClass(RequestOptions.class); + Mockito.verify(mockRaw).insert(any(), captor.capture()); + Assert.assertEquals("acct-123", captor.getValue().getHeaders().get(CustomHeaderKey.SkyflowAccountID.toString())); + } + + // ── bulkDetokenize ──────────────────────────────────────────────────────── + + @Test + public void testBulkDetokenize_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + V1FlowDetokenizeResponseObject record = V1FlowDetokenizeResponseObject.builder() + .token("token1").value("secret-value").build(); + V1FlowDetokenizeResponse body = V1FlowDetokenizeResponse.builder() + .response(Collections.singletonList(record)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.detokenize(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + + BulkDetokenizeResponse response = controller.bulkDetokenize(request); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getSuccess().size()); + Assert.assertEquals("secret-value", response.getSuccess().get(0).getValue()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBulkDetokenize_nullRequestThrowsSkyflowExceptionNotNPE() throws Exception { + // Regression test: configureDetokenizeConcurrencyAndBatchSize() must run AFTER validation, + // otherwise detokenizeRequest.getTokens().size() NPEs on a null request before validation + // has a chance to reject it gracefully. + ApiClient mockApi = Mockito.mock(ApiClient.class); + VaultController controller = createControllerWithMock(mockApi); + try { + controller.bulkDetokenize(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } catch (NullPointerException e) { + Assert.fail("Expected SkyflowException, got NullPointerException"); + } + } + + @Test + public void testBulkDetokenizeAsync_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + V1FlowDetokenizeResponseObject record = V1FlowDetokenizeResponseObject.builder() + .token("token1").value("secret-value").build(); + V1FlowDetokenizeResponse body = V1FlowDetokenizeResponse.builder() + .response(Collections.singletonList(record)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.detokenize(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + BulkDetokenizeRequest request = BulkDetokenizeRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + + BulkDetokenizeResponse response = controller.bulkDetokenizeAsync(request).get(5, TimeUnit.SECONDS); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getSuccess().size()); + } + + @Test + public void testBulkDetokenizeAsync_nullRequestThrowsSkyflowExceptionNotNPE() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + VaultController controller = createControllerWithMock(mockApi); + try { + controller.bulkDetokenizeAsync(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } catch (NullPointerException e) { + Assert.fail("Expected SkyflowException, got NullPointerException"); + } + } + + // ── bulkDeleteTokens ────────────────────────────────────────────────────── + + @Test + public void testBulkDeleteTokens_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + V1DeleteTokenResponseObject record = V1DeleteTokenResponseObject.builder().value("token1").build(); + V1FlowDeleteTokenResponse body = V1FlowDeleteTokenResponse.builder() + .tokens(Collections.singletonList(record)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.deletetoken(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + BulkDeleteTokensRequest request = BulkDeleteTokensRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + + BulkDeleteTokensResponse response = controller.bulkDeleteTokens(request); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getSuccess().size()); + Assert.assertEquals("token1", response.getSuccess().get(0).getToken()); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBulkDeleteTokens_nullRequestThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + VaultController controller = createControllerWithMock(mockApi); + try { + controller.bulkDeleteTokens(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testBulkDeleteTokensAsync_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + V1DeleteTokenResponseObject record = V1DeleteTokenResponseObject.builder().value("token1").build(); + V1FlowDeleteTokenResponse body = V1FlowDeleteTokenResponse.builder() + .tokens(Collections.singletonList(record)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.deletetoken(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + BulkDeleteTokensRequest request = BulkDeleteTokensRequest.builder() + .tokens(Collections.singletonList("token1")) + .build(); + + BulkDeleteTokensResponse response = controller.bulkDeleteTokensAsync(request).get(5, TimeUnit.SECONDS); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getSuccess().size()); + } + + // ── bulkTokenize ────────────────────────────────────────────────────────── + + @Test + public void testBulkTokenize_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + FlowTokenizeResponseObjectToken token = FlowTokenizeResponseObjectToken.builder() + .tokenGroupName("group1").token("tok-abc").build(); + V1FlowTokenizeResponseObject responseObject = V1FlowTokenizeResponseObject.builder() + .value("value1").tokens(Collections.singletonList(token)).build(); + V1FlowTokenizeResponse body = V1FlowTokenizeResponse.builder() + .response(Collections.singletonList(responseObject)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.tokenize(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + ArrayList records = new ArrayList<>(); + records.add(BulkTokenizeRecord.builder().value("value1").tokenGroupNames(Collections.singletonList("group1")).build()); + BulkTokenizeRequest request = BulkTokenizeRequest.builder().data(records).build(); + + BulkTokenizeResponse response = controller.bulkTokenize(request); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getSuccess().size()); + Assert.assertEquals("tok-abc", response.getSuccess().get(0).getTokens().get("group1")); + Assert.assertTrue(response.getErrors().isEmpty()); + } + + @Test + public void testBulkTokenize_nullRequestThrowsSkyflowException() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + VaultController controller = createControllerWithMock(mockApi); + try { + controller.bulkTokenize(null); + Assert.fail(EXCEPTION_NOT_THROWN); + } catch (SkyflowException e) { + Assert.assertNotNull(e.getMessage()); + } + } + + @Test + public void testBulkTokenizeAsync_success() throws Exception { + ApiClient mockApi = Mockito.mock(ApiClient.class); + RawFlowserviceClient mockRaw = mockRawFlowservice(mockApi); + + FlowTokenizeResponseObjectToken token = FlowTokenizeResponseObjectToken.builder() + .tokenGroupName("group1").token("tok-abc").build(); + V1FlowTokenizeResponseObject responseObject = V1FlowTokenizeResponseObject.builder() + .value("value1").tokens(Collections.singletonList(token)).build(); + V1FlowTokenizeResponse body = V1FlowTokenizeResponse.builder() + .response(Collections.singletonList(responseObject)).build(); + ApiClientHttpResponse httpResp = new ApiClientHttpResponse<>(body, buildOkHttpResponse()); + when(mockRaw.tokenize(any(), any())).thenReturn(httpResp); + + VaultController controller = createControllerWithMock(mockApi); + + ArrayList records = new ArrayList<>(); + records.add(BulkTokenizeRecord.builder().value("value1").tokenGroupNames(Collections.singletonList("group1")).build()); + BulkTokenizeRequest request = BulkTokenizeRequest.builder().data(records).build(); + + BulkTokenizeResponse response = controller.bulkTokenizeAsync(request).get(5, TimeUnit.SECONDS); + Assert.assertNotNull(INVALID_EXCEPTION_THROWN, response); + Assert.assertEquals(1, response.getSuccess().size()); + } } From a9c2b559e2501169acd094030526e751d990e943 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Mon, 20 Jul 2026 08:57:29 +0530 Subject: [PATCH 22/26] SK-2967 implement client --- .../main/java/com/skyflow/BaseSkyflow.java | 39 ++++++++++--------- .../java/com/skyflow/BaseVaultClient.java | 3 +- .../src/main/java/com/skyflow/ISkyflow.java | 6 +-- .../src/main/java/com/skyflow/Skyflow.java | 22 ++++++++++- v2/src/main/java/com/skyflow/Skyflow.java | 14 ++++++- 5 files changed, 58 insertions(+), 26 deletions(-) diff --git a/common/src/main/java/com/skyflow/BaseSkyflow.java b/common/src/main/java/com/skyflow/BaseSkyflow.java index 7e7554ff..f752fdfd 100644 --- a/common/src/main/java/com/skyflow/BaseSkyflow.java +++ b/common/src/main/java/com/skyflow/BaseSkyflow.java @@ -16,16 +16,17 @@ import java.util.Map; -abstract class BaseSkyflow implements ISkyflow { - protected final BaseSkyflowClientBuilder builder; +abstract class BaseSkyflow implements ISkyflow { + protected final BaseSkyflowClientBuilder builder; - protected BaseSkyflow(BaseSkyflowClientBuilder builder) { + protected BaseSkyflow(BaseSkyflowClientBuilder builder) { this.builder = builder; LogUtil.printInfoLog(InfoLogs.CLIENT_INITIALIZED.getLog()); } protected abstract Self self(); + @Override public Self addVaultConfig(V vaultConfig) throws SkyflowException { this.builder.addVaultConfigTemplate(vaultConfig); return self(); @@ -35,34 +36,35 @@ public V getVaultConfig(String vaultId) { return this.builder.vaultConfigMap.get(vaultId); } + @Override public Self updateVaultConfig(V vaultConfig) throws SkyflowException { this.builder.updateVaultConfigTemplate(vaultConfig); return self(); } + @Override public Self removeVaultConfig(String vaultId) throws SkyflowException { this.builder.removeVaultConfigTemplate(vaultId); return self(); } + @Override public Self updateSkyflowCredentials(Credentials credentials) throws SkyflowException { this.builder.addSkyflowCredentialsTemplate(credentials); return self(); } + @Override public Self setLogLevel(LogLevel logLevel) { this.builder.setLogLevel(logLevel); return self(); } + @Override public LogLevel getLogLevel() { return this.builder.logLevel; } - public VC vault() throws SkyflowException { - return resolveOrThrow(this.builder.vaultClientsMap, null, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); - } - protected static T resolveOrThrow(Map map, String key, ErrorLogs errorLog, ErrorMessage errorMessage) throws SkyflowException { T value = key != null ? map.get(key) : map.values().stream().findFirst().orElse(null); @@ -73,36 +75,35 @@ protected static T resolveOrThrow(Map map, String key, return value; } - abstract static class BaseSkyflowClientBuilder { + abstract static class BaseSkyflowClientBuilder { protected final LinkedHashMap vaultConfigMap = new LinkedHashMap<>(); - protected final LinkedHashMap vaultClientsMap = new LinkedHashMap<>(); protected Credentials skyflowCredentials; protected LogLevel logLevel = LogLevel.ERROR; protected BaseSkyflowClientBuilder() { } - public BaseSkyflowClientBuilder addVaultConfig(V vaultConfig) throws SkyflowException { + public BaseSkyflowClientBuilder addVaultConfig(V vaultConfig) throws SkyflowException { addVaultConfigTemplate(vaultConfig); return this; } - public BaseSkyflowClientBuilder updateVaultConfig(V vaultConfig) throws SkyflowException { + public BaseSkyflowClientBuilder updateVaultConfig(V vaultConfig) throws SkyflowException { updateVaultConfigTemplate(vaultConfig); return this; } - public BaseSkyflowClientBuilder removeVaultConfig(String vaultId) throws SkyflowException { + public BaseSkyflowClientBuilder removeVaultConfig(String vaultId) throws SkyflowException { removeVaultConfigTemplate(vaultId); return this; } - public BaseSkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throws SkyflowException { + public BaseSkyflowClientBuilder addSkyflowCredentials(Credentials credentials) throws SkyflowException { addSkyflowCredentialsTemplate(credentials); return this; } - protected BaseSkyflowClientBuilder setLogLevel(LogLevel logLevel) { + protected BaseSkyflowClientBuilder setLogLevel(LogLevel logLevel) { this.logLevel = logLevel == null ? LogLevel.ERROR : logLevel; LogUtil.setupLogger(this.logLevel); LogUtil.printInfoLog(BaseUtils.parameterizedString( @@ -116,7 +117,7 @@ protected final void addVaultConfigTemplate(V vaultConfig) throws SkyflowExcepti validateVaultConfig(vaultConfig); V vaultConfigCopy = cloneVaultConfig(vaultConfig); String vaultId = extractVaultId(vaultConfigCopy); - if (this.vaultClientsMap.containsKey(vaultId)) { + if (this.vaultConfigMap.containsKey(vaultId)) { LogUtil.printErrorLog(BaseUtils.parameterizedString( ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultId )); @@ -131,7 +132,7 @@ protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowExce LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); validateVaultConfig(vaultConfig); String vaultId = extractVaultId(vaultConfig); - if (!this.vaultClientsMap.containsKey(vaultId)) { + if (!this.vaultConfigMap.containsKey(vaultId)) { LogUtil.printErrorLog(BaseUtils.parameterizedString( ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId )); @@ -143,11 +144,11 @@ protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowExce } protected final void removeVaultConfigTemplate(String vaultId) throws SkyflowException { - if (!this.vaultClientsMap.containsKey(vaultId)) { + if (!this.vaultConfigMap.containsKey(vaultId)) { LogUtil.printErrorLog(BaseUtils.parameterizedString(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId)); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); } - this.vaultClientsMap.remove(vaultId); + onVaultConfigRemoved(vaultId); this.vaultConfigMap.remove(vaultId); } @@ -199,6 +200,8 @@ protected final V mergeVaultConfig(V incoming, V existing) { protected abstract void onVaultConfigUpdated(V updatedConfig) throws SkyflowException; + protected abstract void onVaultConfigRemoved(String vaultId) throws SkyflowException; + protected abstract void onCredentialsUpdated(Credentials credentials) throws SkyflowException; } diff --git a/common/src/main/java/com/skyflow/BaseVaultClient.java b/common/src/main/java/com/skyflow/BaseVaultClient.java index 7ca74cf4..fa648611 100644 --- a/common/src/main/java/com/skyflow/BaseVaultClient.java +++ b/common/src/main/java/com/skyflow/BaseVaultClient.java @@ -3,6 +3,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.skyflow.config.BaseCredentials; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.errors.ErrorCode; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; @@ -24,7 +25,7 @@ import java.util.concurrent.TimeUnit; import java.util.function.Supplier; -class BaseVaultClient { +class BaseVaultClient { protected V vaultConfig; protected OkHttpClient sharedHttpClient; protected String currentVaultURL; diff --git a/common/src/main/java/com/skyflow/ISkyflow.java b/common/src/main/java/com/skyflow/ISkyflow.java index 55879a6c..ac5fd747 100644 --- a/common/src/main/java/com/skyflow/ISkyflow.java +++ b/common/src/main/java/com/skyflow/ISkyflow.java @@ -1,9 +1,11 @@ package com.skyflow; +import com.skyflow.config.BaseCredentials; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.enums.LogLevel; import com.skyflow.errors.SkyflowException; -public interface ISkyflow { +public interface ISkyflow { Self addVaultConfig(V vaultConfig) throws SkyflowException; Self updateVaultConfig(V vaultConfig) throws SkyflowException; @@ -15,6 +17,4 @@ public interface ISkyflow { Self setLogLevel(LogLevel logLevel); LogLevel getLogLevel(); - - VC vault() throws SkyflowException; } diff --git a/flowvault/src/main/java/com/skyflow/Skyflow.java b/flowvault/src/main/java/com/skyflow/Skyflow.java index bd3c451f..61a95f9a 100644 --- a/flowvault/src/main/java/com/skyflow/Skyflow.java +++ b/flowvault/src/main/java/com/skyflow/Skyflow.java @@ -3,7 +3,9 @@ import com.skyflow.config.Credentials; import com.skyflow.config.VaultConfig; import com.skyflow.enums.LogLevel; +import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; +import com.skyflow.logs.ErrorLogs; import com.skyflow.logs.InfoLogs; import com.skyflow.utils.Constants; import com.skyflow.utils.SdkVersion; @@ -12,10 +14,15 @@ import com.skyflow.utils.validations.Validations; import com.skyflow.vault.controller.VaultController; -public final class Skyflow extends BaseSkyflow { +import java.util.LinkedHashMap; + +public final class Skyflow extends BaseSkyflow { + + private final SkyflowClientBuilder builder; private Skyflow(SkyflowClientBuilder builder) { super(builder); + this.builder = builder; } @Override @@ -33,7 +40,13 @@ public VaultConfig getVaultConfig() { return (VaultConfig) array[0]; } - public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { + public VaultController vault() throws SkyflowException { + return resolveOrThrow(this.builder.vaultClientsMap, null, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); + } + + public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { + private final LinkedHashMap vaultClientsMap = new LinkedHashMap<>(); + @Override protected void validateVaultConfig(VaultConfig vaultConfig) throws SkyflowException { Validations.validateVaultConfiguration(vaultConfig); @@ -50,6 +63,11 @@ protected void onVaultConfigUpdated(VaultConfig updatedConfig) throws SkyflowExc this.vaultClientsMap.put(updatedConfig.getVaultId(), new VaultController(updatedConfig, this.skyflowCredentials)); } + @Override + protected void onVaultConfigRemoved(String vaultId) throws SkyflowException { + this.vaultClientsMap.remove(vaultId); + } + @Override protected void onCredentialsUpdated(Credentials credentials) throws SkyflowException { for (VaultController vault : this.vaultClientsMap.values()) { diff --git a/v2/src/main/java/com/skyflow/Skyflow.java b/v2/src/main/java/com/skyflow/Skyflow.java index b8a056de..16614481 100644 --- a/v2/src/main/java/com/skyflow/Skyflow.java +++ b/v2/src/main/java/com/skyflow/Skyflow.java @@ -18,7 +18,7 @@ import java.util.LinkedHashMap; -public final class Skyflow extends BaseSkyflow { +public final class Skyflow extends BaseSkyflow { private final SkyflowClientBuilder builder; private Skyflow(SkyflowClientBuilder builder) { @@ -61,6 +61,10 @@ public Skyflow updateLogLevel(LogLevel logLevel) { return setLogLevel(logLevel); } + public VaultController vault() throws SkyflowException { + return resolveOrThrow(this.builder.vaultClientsMap, null, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); + } + public VaultController vault(String vaultId) throws SkyflowException { return resolveOrThrow(this.builder.vaultClientsMap, vaultId, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); } @@ -81,7 +85,8 @@ public DetectController detect(String vaultId) throws SkyflowException { return resolveOrThrow(this.builder.detectClientsMap, vaultId, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); } - public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { + public static final class SkyflowClientBuilder extends BaseSkyflowClientBuilder { + private final LinkedHashMap vaultClientsMap = new LinkedHashMap<>(); private final LinkedHashMap connectionsMap = new LinkedHashMap<>(); private final LinkedHashMap detectClientsMap = new LinkedHashMap<>(); private final LinkedHashMap connectionConfigMap = new LinkedHashMap<>(); @@ -104,6 +109,11 @@ protected void onVaultConfigUpdated(VaultConfig updatedConfig) throws SkyflowExc this.vaultClientsMap.get(updatedConfig.getVaultId()).updateVaultConfig(); } + @Override + protected void onVaultConfigRemoved(String vaultId) throws SkyflowException { + this.vaultClientsMap.remove(vaultId); + } + @Override protected void onCredentialsUpdated(Credentials credentials) throws SkyflowException { for (VaultController vault : this.vaultClientsMap.values()) { From 1b6f88c6f5ebf5d1351b765225a5b4213d226be6 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Mon, 20 Jul 2026 09:34:08 +0530 Subject: [PATCH 23/26] SK-2967 fix compile errors --- .../java/com/skyflow/BaseSkyflowTests.java | 19 +++++++++++++-- .../com/skyflow/BaseVaultClientTests.java | 23 ++++++++++--------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/common/src/test/java/com/skyflow/BaseSkyflowTests.java b/common/src/test/java/com/skyflow/BaseSkyflowTests.java index 57c72a83..2859a744 100644 --- a/common/src/test/java/com/skyflow/BaseSkyflowTests.java +++ b/common/src/test/java/com/skyflow/BaseSkyflowTests.java @@ -260,9 +260,12 @@ public void testMergeVaultConfigWithNullClusterIdFallsBackToPreviousClusterId() Assert.assertEquals(clusterID, result.getClusterId()); } - private static class TestSkyflow extends BaseSkyflow { + private static class TestSkyflow extends BaseSkyflow { + private final TestSkyflowClientBuilder builder; + private TestSkyflow(TestSkyflowClientBuilder builder) { super(builder); + this.builder = builder; } static TestSkyflowClientBuilder builder() { @@ -274,12 +277,19 @@ protected TestSkyflow self() { return this; } + Object vault() throws SkyflowException { + return resolveOrThrow(this.builder.vaultClientsMap, null, + ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); + } + Object vault(String vaultId) throws SkyflowException { return resolveOrThrow(this.builder.vaultClientsMap, vaultId, ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST, ErrorMessage.VaultIdNotInConfigList); } - private static class TestSkyflowClientBuilder extends BaseSkyflowClientBuilder { + private static class TestSkyflowClientBuilder extends BaseSkyflowClientBuilder { + private final java.util.LinkedHashMap vaultClientsMap = new java.util.LinkedHashMap<>(); + @Override protected void validateVaultConfig(BaseVaultConfig vaultConfig) throws SkyflowException { if (vaultConfig.getVaultId() == null || vaultConfig.getVaultId().trim().isEmpty()) { @@ -297,6 +307,11 @@ protected void onVaultConfigUpdated(BaseVaultConfig updatedConfig) { this.vaultClientsMap.put(updatedConfig.getVaultId(), new Object()); } + @Override + protected void onVaultConfigRemoved(String vaultId) { + this.vaultClientsMap.remove(vaultId); + } + @Override protected void onCredentialsUpdated(Credentials credentials) { // no-op: this test double only exercises template orchestration, not propagation diff --git a/common/src/test/java/com/skyflow/BaseVaultClientTests.java b/common/src/test/java/com/skyflow/BaseVaultClientTests.java index e5a12687..c8c128f2 100644 --- a/common/src/test/java/com/skyflow/BaseVaultClientTests.java +++ b/common/src/test/java/com/skyflow/BaseVaultClientTests.java @@ -1,6 +1,7 @@ package com.skyflow; import com.skyflow.config.BaseCredentials; +import com.skyflow.config.BaseVaultConfig; import com.skyflow.errors.ErrorMessage; import com.skyflow.errors.SkyflowException; import com.skyflow.utils.BaseConstants; @@ -35,15 +36,15 @@ public void restoreEnvFile() throws IOException { } } - private BaseVaultClient newClient(BaseCredentials commonCredentials) { - return new BaseVaultClient<>(new Object(), commonCredentials); + private BaseVaultClient newClient(BaseCredentials commonCredentials) { + return new BaseVaultClient<>(new BaseVaultConfig(), commonCredentials); } @Test public void testPrioritiseCredentials_prefersVaultSpecificCredentials() throws SkyflowException { BaseCredentials vaultSpecific = new BaseCredentials(); vaultSpecific.setApiKey("test_api_key"); - BaseVaultClient client = newClient(null); + BaseVaultClient client = newClient(null); client.prioritiseCredentials(vaultSpecific); @@ -54,7 +55,7 @@ public void testPrioritiseCredentials_prefersVaultSpecificCredentials() throws S public void testPrioritiseCredentials_fallsBackToCommonCredentials() throws SkyflowException { BaseCredentials common = new BaseCredentials(); common.setApiKey("common_api_key"); - BaseVaultClient client = newClient(common); + BaseVaultClient client = newClient(common); client.prioritiseCredentials(null); @@ -65,7 +66,7 @@ public void testPrioritiseCredentials_fallsBackToCommonCredentials() throws Skyf public void testPrioritiseCredentials_credentialChange_resetsTokenAndApiKey() throws SkyflowException { BaseCredentials credentialsA = new BaseCredentials(); credentialsA.setToken("x.eyJleHAiOjk5OTk5OTk5OTl9.y"); - BaseVaultClient client = newClient(null); + BaseVaultClient client = newClient(null); client.prioritiseCredentials(credentialsA); client.token = "cached-token"; @@ -83,7 +84,7 @@ public void testPrioritiseCredentials_credentialChange_resetsTokenAndApiKey() th public void testSetBearerToken_withApiKey() throws SkyflowException { BaseCredentials creds = new BaseCredentials(); creds.setApiKey("sky-ab123-abcd1234cdef1234abcd4321cdef4321"); - BaseVaultClient client = newClient(null); + BaseVaultClient client = newClient(null); client.setBearerToken(creds); @@ -94,7 +95,7 @@ public void testSetBearerToken_withApiKey() throws SkyflowException { public void testSetBearerToken_generatesTokenWhenNull() throws SkyflowException { BaseCredentials creds = new BaseCredentials(); creds.setToken("x.eyJleHAiOjk5OTk5OTk5OTl9.y"); - BaseVaultClient client = newClient(null); + BaseVaultClient client = newClient(null); client.setBearerToken(creds); @@ -105,7 +106,7 @@ public void testSetBearerToken_generatesTokenWhenNull() throws SkyflowException public void testSetBearerToken_reusesValidNonExpiredToken() throws SkyflowException { BaseCredentials creds = new BaseCredentials(); creds.setToken("x.eyJleHAiOjk5OTk5OTk5OTl9.y"); - BaseVaultClient client = newClient(null); + BaseVaultClient client = newClient(null); // First call: token=null → generates from creds.getToken() client.setBearerToken(creds); @@ -118,7 +119,7 @@ public void testSetBearerToken_reusesValidNonExpiredToken() throws SkyflowExcept @Test public void testSetBearerToken_noCredentials_throwsEmptyCredentials() { - BaseVaultClient client = newClient(null); + BaseVaultClient client = newClient(null); try { client.setBearerToken(null); Assert.fail("Should have thrown SkyflowException"); @@ -137,7 +138,7 @@ public void testPrioritiseCredentials_dotenvReturnsCredentials_setsCredentials() fw.write(BaseConstants.ENV_CREDENTIALS_KEY_NAME + "={\"token\":\"env-token-value\"}\n"); } - BaseVaultClient client = newClient(null); + BaseVaultClient client = newClient(null); client.prioritiseCredentials(null); Assert.assertNotNull(client.finalCredentials); @@ -154,7 +155,7 @@ public void testPrioritiseCredentials_dotenvKeyMissing_throwsSkyflowException() fw.write("SOME_OTHER_KEY=some_value\n"); } - BaseVaultClient client = newClient(null); + BaseVaultClient client = newClient(null); try { client.prioritiseCredentials(null); Assert.fail("Should have thrown SkyflowException"); From 073e6304106d9d1a4a1b3ea6fa2c31acf3d2061d Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Mon, 20 Jul 2026 19:12:44 +0530 Subject: [PATCH 24/26] SK-2967 fix compile errors --- common/src/main/java/com/skyflow/BaseSkyflow.java | 8 +++++--- common/src/test/java/com/skyflow/BaseSkyflowTests.java | 5 +++++ flowvault/src/main/java/com/skyflow/Skyflow.java | 5 +++++ v2/src/main/java/com/skyflow/Skyflow.java | 5 +++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/skyflow/BaseSkyflow.java b/common/src/main/java/com/skyflow/BaseSkyflow.java index f752fdfd..7475012d 100644 --- a/common/src/main/java/com/skyflow/BaseSkyflow.java +++ b/common/src/main/java/com/skyflow/BaseSkyflow.java @@ -117,7 +117,7 @@ protected final void addVaultConfigTemplate(V vaultConfig) throws SkyflowExcepti validateVaultConfig(vaultConfig); V vaultConfigCopy = cloneVaultConfig(vaultConfig); String vaultId = extractVaultId(vaultConfigCopy); - if (this.vaultConfigMap.containsKey(vaultId)) { + if (hasVaultClient(vaultId)) { LogUtil.printErrorLog(BaseUtils.parameterizedString( ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultId )); @@ -132,7 +132,7 @@ protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowExce LogUtil.printInfoLog(InfoLogs.VALIDATING_VAULT_CONFIG.getLog()); validateVaultConfig(vaultConfig); String vaultId = extractVaultId(vaultConfig); - if (!this.vaultConfigMap.containsKey(vaultId)) { + if (!hasVaultClient(vaultId)) { LogUtil.printErrorLog(BaseUtils.parameterizedString( ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId )); @@ -144,7 +144,7 @@ protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowExce } protected final void removeVaultConfigTemplate(String vaultId) throws SkyflowException { - if (!this.vaultConfigMap.containsKey(vaultId)) { + if (!hasVaultClient(vaultId)) { LogUtil.printErrorLog(BaseUtils.parameterizedString(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId)); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); } @@ -166,6 +166,8 @@ protected final void addSkyflowCredentialsTemplate(Credentials credentials) thro protected abstract void validateVaultConfig(V vaultConfig) throws SkyflowException; + protected abstract boolean hasVaultClient(String vaultId); + @SuppressWarnings("unchecked") protected final V cloneVaultConfig(V vaultConfig) { try { diff --git a/common/src/test/java/com/skyflow/BaseSkyflowTests.java b/common/src/test/java/com/skyflow/BaseSkyflowTests.java index 2859a744..12ae256c 100644 --- a/common/src/test/java/com/skyflow/BaseSkyflowTests.java +++ b/common/src/test/java/com/skyflow/BaseSkyflowTests.java @@ -312,6 +312,11 @@ protected void onVaultConfigRemoved(String vaultId) { this.vaultClientsMap.remove(vaultId); } + @Override + protected boolean hasVaultClient(String vaultId) { + return this.vaultClientsMap.containsKey(vaultId); + } + @Override protected void onCredentialsUpdated(Credentials credentials) { // no-op: this test double only exercises template orchestration, not propagation diff --git a/flowvault/src/main/java/com/skyflow/Skyflow.java b/flowvault/src/main/java/com/skyflow/Skyflow.java index 61a95f9a..96b5f45a 100644 --- a/flowvault/src/main/java/com/skyflow/Skyflow.java +++ b/flowvault/src/main/java/com/skyflow/Skyflow.java @@ -68,6 +68,11 @@ protected void onVaultConfigRemoved(String vaultId) throws SkyflowException { this.vaultClientsMap.remove(vaultId); } + @Override + protected boolean hasVaultClient(String vaultId) { + return this.vaultClientsMap.containsKey(vaultId); + } + @Override protected void onCredentialsUpdated(Credentials credentials) throws SkyflowException { for (VaultController vault : this.vaultClientsMap.values()) { diff --git a/v2/src/main/java/com/skyflow/Skyflow.java b/v2/src/main/java/com/skyflow/Skyflow.java index 16614481..2daf9b27 100644 --- a/v2/src/main/java/com/skyflow/Skyflow.java +++ b/v2/src/main/java/com/skyflow/Skyflow.java @@ -114,6 +114,11 @@ protected void onVaultConfigRemoved(String vaultId) throws SkyflowException { this.vaultClientsMap.remove(vaultId); } + @Override + protected boolean hasVaultClient(String vaultId) { + return this.vaultClientsMap.containsKey(vaultId); + } + @Override protected void onCredentialsUpdated(Credentials credentials) throws SkyflowException { for (VaultController vault : this.vaultClientsMap.values()) { From 64d51ef5a00964d25f55edee9afbc105db31d920 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Mon, 20 Jul 2026 20:49:11 +0530 Subject: [PATCH 25/26] SK-2967 revert generated code --- .../com/skyflow/generated/rest/ApiClient.java | 1 + .../generated/rest/AsyncApiClient.java | 1 + .../generated/rest/core/ClientOptions.java | 2 +- .../generated/rest/core/FileStream.java | 5 +- .../rest/core/InputStreamRequestBody.java | 7 +- .../generated/rest/core/ObjectMappers.java | 1 + .../rest/core/QueryStringMapper.java | 7 +- .../rest/core/ResponseBodyInputStream.java | 3 +- .../rest/core/ResponseBodyReader.java | 3 +- .../generated/rest/core/RetryInterceptor.java | 5 +- .../rest/errors/BadRequestError.java | 9 +- .../rest/errors/UnauthorizedError.java | 9 +- .../resources/audit/AsyncRawAuditClient.java | 20 +-- .../rest/resources/audit/RawAuditClient.java | 16 +-- .../AuditServiceListAuditEventsRequest.java | 18 +-- .../binlookup/AsyncRawBinLookupClient.java | 21 +-- .../binlookup/RawBinLookupClient.java | 17 +-- .../binlookup/requests/V1BinListRequest.java | 15 +-- .../resources/files/AsyncFilesClient.java | 13 +- .../resources/files/AsyncRawFilesClient.java | 78 ++++------- .../rest/resources/files/FilesClient.java | 12 +- .../rest/resources/files/RawFilesClient.java | 74 ++++------- ...entifyFileAudioRequestDeidentifyAudio.java | 15 +-- ...fyFileDocumentPdfRequestDeidentifyPdf.java | 15 +-- ...entifyFileImageRequestDeidentifyImage.java | 15 +-- .../files/requests/DeidentifyFileRequest.java | 15 +-- ...identifyFileRequestDeidentifyDocument.java | 15 +-- ...tifyFileRequestDeidentifyPresentation.java | 15 +-- ...ntifyFileRequestDeidentifySpreadsheet.java | 15 +-- ...fyFileRequestDeidentifyStructuredText.java | 15 +-- .../DeidentifyFileRequestDeidentifyText.java | 15 +-- .../files/requests/GetRunRequest.java | 9 +- .../ReidentifyFileRequestReidentifyFile.java | 11 +- .../guardrails/AsyncRawGuardrailsClient.java | 25 +--- .../guardrails/RawGuardrailsClient.java | 21 +-- .../requests/DetectGuardrailsRequest.java | 15 +-- .../resources/query/AsyncRawQueryClient.java | 21 +-- .../rest/resources/query/RawQueryClient.java | 17 +-- .../QueryServiceExecuteQueryBody.java | 9 +- .../records/AsyncRawRecordsClient.java | 49 ++----- .../resources/records/AsyncRecordsClient.java | 21 +-- .../resources/records/RawRecordsClient.java | 45 +------ .../rest/resources/records/RecordsClient.java | 21 +-- .../FileServiceUploadFileRequest.java | 9 +- .../RecordServiceBatchOperationBody.java | 15 +-- .../RecordServiceBulkDeleteRecordBody.java | 15 +-- .../RecordServiceBulkGetRecordRequest.java | 16 +-- .../RecordServiceGetRecordRequest.java | 16 +-- .../RecordServiceInsertRecordBody.java | 15 +-- .../RecordServiceUpdateRecordBody.java | 9 +- .../records/requests/UploadFileV2Request.java | 11 +- .../strings/AsyncRawStringsClient.java | 29 ++-- .../resources/strings/RawStringsClient.java | 25 +--- .../requests/DeidentifyStringRequest.java | 15 +-- .../requests/ReidentifyStringRequest.java | 9 +- .../tokens/AsyncRawTokensClient.java | 21 +-- .../resources/tokens/AsyncTokensClient.java | 1 + .../resources/tokens/RawTokensClient.java | 17 +-- .../tokens/requests/V1DetokenizePayload.java | 15 +-- .../tokens/requests/V1TokenizePayload.java | 15 +-- .../rest/types/AuditEventContext.java | 9 +- .../generated/rest/types/AuditEventData.java | 9 +- .../rest/types/AuditEventHttpInfo.java | 9 +- .../rest/types/DeidentifiedFileOutput.java | 9 +- .../rest/types/DeidentifyFileResponse.java | 9 +- .../rest/types/DeidentifyStringResponse.java | 15 +-- .../rest/types/DetectGuardrailsResponse.java | 11 +- .../rest/types/DetectRunsResponse.java | 15 +-- .../generated/rest/types/ErrorResponse.java | 10 +- .../rest/types/ErrorResponseError.java | 15 +-- .../generated/rest/types/FileData.java | 10 +- .../rest/types/FileDataDeidentifyAudio.java | 10 +- .../types/FileDataDeidentifyDocument.java | 10 +- .../rest/types/FileDataDeidentifyImage.java | 10 +- .../rest/types/FileDataDeidentifyPdf.java | 10 +- .../types/FileDataDeidentifyPresentation.java | 10 +- .../types/FileDataDeidentifySpreadsheet.java | 10 +- .../FileDataDeidentifyStructuredText.java | 10 +- .../rest/types/FileDataDeidentifyText.java | 10 +- .../rest/types/FileDataReidentifyFile.java | 10 +- .../skyflow/generated/rest/types/Format.java | 15 +-- .../generated/rest/types/GooglerpcStatus.java | 15 +-- .../rest/types/IdentifyResponse.java | 10 +- .../generated/rest/types/Locations.java | 9 +- .../generated/rest/types/ProtobufAny.java | 9 +- .../rest/types/ReidentifiedFileOutput.java | 9 +- .../rest/types/ReidentifyFileResponse.java | 9 +- .../generated/rest/types/ShiftDates.java | 15 +-- .../rest/types/StringResponseEntities.java | 9 +- .../rest/types/TokenTypeMapping.java | 15 +-- .../generated/rest/types/Transformations.java | 9 +- .../rest/types/UploadFileV2Response.java | 9 +- .../rest/types/V1AuditAfterOptions.java | 9 +- .../rest/types/V1AuditEventResponse.java | 9 +- .../generated/rest/types/V1AuditResponse.java | 15 +-- .../rest/types/V1AuditResponseEvent.java | 15 +-- .../types/V1AuditResponseEventRequest.java | 15 +-- .../rest/types/V1BatchOperationResponse.java | 15 +-- .../generated/rest/types/V1BatchRecord.java | 9 +- .../rest/types/V1BinListResponse.java | 15 +-- .../types/V1BulkDeleteRecordResponse.java | 15 +-- .../rest/types/V1BulkGetRecordResponse.java | 15 +-- .../skyflow/generated/rest/types/V1Card.java | 9 +- .../rest/types/V1DeleteFileResponse.java | 9 +- .../rest/types/V1DeleteRecordResponse.java | 9 +- .../rest/types/V1DetokenizeRecordRequest.java | 9 +- .../types/V1DetokenizeRecordResponse.java | 9 +- .../rest/types/V1DetokenizeResponse.java | 15 +-- .../generated/rest/types/V1FieldRecords.java | 9 +- .../rest/types/V1GetAuthTokenResponse.java | 125 ++++++++++++++++++ .../types/V1GetFileScanStatusResponse.java | 9 +- .../rest/types/V1GetQueryResponse.java | 15 +-- .../rest/types/V1InsertRecordResponse.java | 15 +-- .../rest/types/V1RecordMetaProperties.java | 9 +- .../rest/types/V1TokenizeRecordRequest.java | 9 +- .../rest/types/V1TokenizeRecordResponse.java | 9 +- .../rest/types/V1TokenizeResponse.java | 15 +-- .../rest/types/V1UpdateRecordResponse.java | 9 +- .../rest/types/V1VaultFieldMapping.java | 9 +- .../rest/types/V1VaultSchemaConfig.java | 9 +- .../rest/types/WordCharacterCount.java | 9 +- 121 files changed, 513 insertions(+), 1263 deletions(-) create mode 100644 v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java diff --git a/v2/src/main/java/com/skyflow/generated/rest/ApiClient.java b/v2/src/main/java/com/skyflow/generated/rest/ApiClient.java index cd305df1..ab81f443 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/ApiClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/ApiClient.java @@ -13,6 +13,7 @@ import com.skyflow.generated.rest.resources.records.RecordsClient; import com.skyflow.generated.rest.resources.strings.StringsClient; import com.skyflow.generated.rest.resources.tokens.TokensClient; + import java.util.function.Supplier; public class ApiClient { diff --git a/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java b/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java index f0ca2c05..dc57df06 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java @@ -13,6 +13,7 @@ import com.skyflow.generated.rest.resources.records.AsyncRecordsClient; import com.skyflow.generated.rest.resources.strings.AsyncStringsClient; import com.skyflow.generated.rest.resources.tokens.AsyncTokensClient; + import java.util.function.Supplier; public class AsyncApiClient { diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java b/v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java index 2a5f0710..da41fb25 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java @@ -35,7 +35,7 @@ private ClientOptions( { put("X-Fern-Language", "JAVA"); put("X-Fern-SDK-Name", "com.skyflow.fern:api-sdk"); - put("X-Fern-SDK-Version", "0.0.98"); + put("X-Fern-SDK-Version", "0.0.385"); } }); this.headerSuppliers = headerSuppliers; diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java b/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java index 6b459431..2131b0a4 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/FileStream.java @@ -3,12 +3,13 @@ */ package com.skyflow.generated.rest.core; -import java.io.InputStream; -import java.util.Objects; import okhttp3.MediaType; import okhttp3.RequestBody; import org.jetbrains.annotations.Nullable; +import java.io.InputStream; +import java.util.Objects; + /** * Represents a file stream with associated metadata for file uploads. */ diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java b/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java index 545f6088..55c3c971 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/InputStreamRequestBody.java @@ -3,9 +3,6 @@ */ package com.skyflow.generated.rest.core; -import java.io.IOException; -import java.io.InputStream; -import java.util.Objects; import okhttp3.MediaType; import okhttp3.RequestBody; import okhttp3.internal.Util; @@ -14,6 +11,10 @@ import okio.Source; import org.jetbrains.annotations.Nullable; +import java.io.IOException; +import java.io.InputStream; +import java.util.Objects; + /** * A custom implementation of OkHttp's RequestBody that wraps an InputStream. * This class allows streaming of data from an InputStream directly to an HTTP request body, diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java b/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java index 3b7894e0..acec32b4 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ObjectMappers.java @@ -10,6 +10,7 @@ import com.fasterxml.jackson.databind.json.JsonMapper; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + import java.io.IOException; public final class ObjectMappers { diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java b/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java index e9e18fb9..c0687736 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/QueryStringMapper.java @@ -7,14 +7,11 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; -import java.util.AbstractMap; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; import okhttp3.HttpUrl; import okhttp3.MultipartBody; +import java.util.*; + public class QueryStringMapper { private static final ObjectMapper MAPPER = ObjectMappers.JSON_MAPPER; diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java index d8df7715..1bb0b5dc 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyInputStream.java @@ -3,9 +3,10 @@ */ package com.skyflow.generated.rest.core; +import okhttp3.Response; + import java.io.FilterInputStream; import java.io.IOException; -import okhttp3.Response; /** * A custom InputStream that wraps the InputStream from the OkHttp Response and ensures that the diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java index ed894407..e6c1a525 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/ResponseBodyReader.java @@ -3,9 +3,10 @@ */ package com.skyflow.generated.rest.core; +import okhttp3.Response; + import java.io.FilterReader; import java.io.IOException; -import okhttp3.Response; /** * A custom Reader that wraps the Reader from the OkHttp Response and ensures that the diff --git a/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java b/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java index eda7d265..7a28c3c9 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java +++ b/v2/src/main/java/com/skyflow/generated/rest/core/RetryInterceptor.java @@ -3,12 +3,13 @@ */ package com.skyflow.generated.rest.core; +import okhttp3.Interceptor; +import okhttp3.Response; + import java.io.IOException; import java.time.Duration; import java.util.Optional; import java.util.Random; -import okhttp3.Interceptor; -import okhttp3.Response; public class RetryInterceptor implements Interceptor { diff --git a/v2/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java b/v2/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java index 02c36c4b..80ae5e7c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java +++ b/v2/src/main/java/com/skyflow/generated/rest/errors/BadRequestError.java @@ -4,21 +4,20 @@ package com.skyflow.generated.rest.errors; import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.types.ErrorResponse; import okhttp3.Response; public final class BadRequestError extends ApiClientApiException { /** * The body of the response that triggered the exception. */ - private final ErrorResponse body; + private final Object body; - public BadRequestError(ErrorResponse body) { + public BadRequestError(Object body) { super("BadRequestError", 400, body); this.body = body; } - public BadRequestError(ErrorResponse body, Response rawResponse) { + public BadRequestError(Object body, Response rawResponse) { super("BadRequestError", 400, body, rawResponse); this.body = body; } @@ -27,7 +26,7 @@ public BadRequestError(ErrorResponse body, Response rawResponse) { * @return the body */ @Override - public ErrorResponse body() { + public Object body() { return this.body; } } diff --git a/v2/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java b/v2/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java index 00ddc4ce..3bc254bc 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java +++ b/v2/src/main/java/com/skyflow/generated/rest/errors/UnauthorizedError.java @@ -4,21 +4,20 @@ package com.skyflow.generated.rest.errors; import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.types.ErrorResponse; import okhttp3.Response; public final class UnauthorizedError extends ApiClientApiException { /** * The body of the response that triggered the exception. */ - private final ErrorResponse body; + private final Object body; - public UnauthorizedError(ErrorResponse body) { + public UnauthorizedError(Object body) { super("UnauthorizedError", 401, body); this.body = body; } - public UnauthorizedError(ErrorResponse body, Response rawResponse) { + public UnauthorizedError(Object body, Response rawResponse) { super("UnauthorizedError", 401, body, rawResponse); this.body = body; } @@ -27,7 +26,7 @@ public UnauthorizedError(ErrorResponse body, Response rawResponse) { * @return the body */ @Override - public ErrorResponse body() { + public Object body() { return this.body; } } diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java index 875ca259..e1516eaf 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/AsyncRawAuditClient.java @@ -4,27 +4,15 @@ package com.skyflow.generated.rest.resources.audit; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.audit.requests.AuditServiceListAuditEventsRequest; import com.skyflow.generated.rest.types.V1AuditResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawAuditClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java index bfec3bf2..68cd5e3b 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/RawAuditClient.java @@ -4,23 +4,13 @@ package com.skyflow.generated.rest.resources.audit; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.audit.requests.AuditServiceListAuditEventsRequest; import com.skyflow.generated.rest.types.V1AuditResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawAuditClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java index 8b6686e4..e9f8cf12 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/audit/requests/AuditServiceListAuditEventsRequest.java @@ -3,26 +3,16 @@ */ package com.skyflow.generated.rest.resources.audit.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsActionType; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsContextAccessType; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsContextActorType; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsContextAuthMode; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestFilterOpsResourceType; -import com.skyflow.generated.rest.resources.audit.types.AuditServiceListAuditEventsRequestSortOpsOrderBy; +import com.skyflow.generated.rest.resources.audit.types.*; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = AuditServiceListAuditEventsRequest.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java index 2a3f5f4f..9cf03c7d 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/AsyncRawBinLookupClient.java @@ -4,28 +4,15 @@ package com.skyflow.generated.rest.resources.binlookup; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.binlookup.requests.V1BinListRequest; import com.skyflow.generated.rest.types.V1BinListResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawBinLookupClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java index bb08039b..21e77017 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/RawBinLookupClient.java @@ -4,24 +4,13 @@ package com.skyflow.generated.rest.resources.binlookup; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.binlookup.requests.V1BinListRequest; import com.skyflow.generated.rest.types.V1BinListResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawBinLookupClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java index af827e01..def40293 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/binlookup/requests/V1BinListRequest.java @@ -3,21 +3,12 @@ */ package com.skyflow.generated.rest.resources.binlookup.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1VaultSchemaConfig; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BinListRequest.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java index 1f157223..01031423 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncFilesClient.java @@ -5,20 +5,11 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; -import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; -import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; +import com.skyflow.generated.rest.resources.files.requests.*; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; + import java.util.concurrent.CompletableFuture; public class AsyncFilesClient { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java index f497bb02..e7f008e8 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/AsyncRawFilesClient.java @@ -4,44 +4,20 @@ package com.skyflow.generated.rest.resources.files; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; -import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; -import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; +import com.skyflow.generated.rest.resources.files.requests.*; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawFilesClient { protected final ClientOptions clientOptions; @@ -102,12 +78,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -190,12 +166,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -278,12 +254,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -366,12 +342,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -454,12 +430,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -542,12 +518,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -630,12 +606,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -718,12 +694,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -806,12 +782,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -894,12 +870,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -983,12 +959,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java index 8d083d76..bcda96e6 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/FilesClient.java @@ -5,17 +5,7 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; -import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; -import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; +import com.skyflow.generated.rest.resources.files.requests.*; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java index 0d44668e..d277d224 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/RawFilesClient.java @@ -4,40 +4,18 @@ package com.skyflow.generated.rest.resources.files; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileAudioRequestDeidentifyAudio; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileDocumentPdfRequestDeidentifyPdf; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileImageRequestDeidentifyImage; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequest; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyDocument; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyPresentation; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifySpreadsheet; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyStructuredText; -import com.skyflow.generated.rest.resources.files.requests.DeidentifyFileRequestDeidentifyText; -import com.skyflow.generated.rest.resources.files.requests.GetRunRequest; -import com.skyflow.generated.rest.resources.files.requests.ReidentifyFileRequestReidentifyFile; +import com.skyflow.generated.rest.resources.files.requests.*; import com.skyflow.generated.rest.types.DeidentifyFileResponse; import com.skyflow.generated.rest.types.DetectRunsResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.ReidentifyFileResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawFilesClient { protected final ClientOptions clientOptions; @@ -92,10 +70,10 @@ public ApiClientHttpResponse deidentifyFile( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -160,10 +138,10 @@ public ApiClientHttpResponse deidentifyAudio( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -228,10 +206,10 @@ public ApiClientHttpResponse deidentifyDocument( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -296,10 +274,10 @@ public ApiClientHttpResponse deidentifyPdf( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -364,10 +342,10 @@ public ApiClientHttpResponse deidentifyImage( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -432,10 +410,10 @@ public ApiClientHttpResponse deidentifyPresentation( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -500,10 +478,10 @@ public ApiClientHttpResponse deidentifySpreadsheet( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -568,10 +546,10 @@ public ApiClientHttpResponse deidentifyStructuredText( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -635,10 +613,10 @@ public ApiClientHttpResponse deidentifyText( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -702,10 +680,10 @@ public ApiClientHttpResponse reidentifyFile( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -771,10 +749,10 @@ public ApiClientHttpResponse getRun( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java index d1cadca3..c2baa931 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileAudioRequestDeidentifyAudio.java @@ -3,13 +3,7 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileAudioRequestDeidentifyAudioEntityTypesItem; @@ -17,13 +11,10 @@ import com.skyflow.generated.rest.types.FileDataDeidentifyAudio; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileAudioRequestDeidentifyAudio.Builder.class) public final class DeidentifyFileAudioRequestDeidentifyAudio { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java index 5b6a653f..1844a116 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileDocumentPdfRequestDeidentifyPdf.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileDocumentPdfRequestDeidentifyPdfEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyPdf; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileDocumentPdfRequestDeidentifyPdf.Builder.class) public final class DeidentifyFileDocumentPdfRequestDeidentifyPdf { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java index 015bba9e..25ddea9c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileImageRequestDeidentifyImage.java @@ -3,13 +3,7 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileImageRequestDeidentifyImageEntityTypesItem; @@ -17,13 +11,10 @@ import com.skyflow.generated.rest.types.FileDataDeidentifyImage; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileImageRequestDeidentifyImage.Builder.class) public final class DeidentifyFileImageRequestDeidentifyImage { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java index c2cdcfb5..62d77229 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequest.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestEntityTypesItem; import com.skyflow.generated.rest.types.FileData; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequest.Builder.class) public final class DeidentifyFileRequest { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java index fc3db52a..c4d9841d 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyDocument.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyDocumentEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyDocument; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyDocument.Builder.class) public final class DeidentifyFileRequestDeidentifyDocument { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java index f45802ec..e1cea77f 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyPresentation.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyPresentationEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyPresentation; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyPresentation.Builder.class) public final class DeidentifyFileRequestDeidentifyPresentation { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java index 93ea921a..10ca8feb 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifySpreadsheet.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifySpreadsheetEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifySpreadsheet; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifySpreadsheet.Builder.class) public final class DeidentifyFileRequestDeidentifySpreadsheet { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java index b579fe1b..e3f555b8 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyStructuredText.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyStructuredTextEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyStructuredText; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyStructuredText.Builder.class) public final class DeidentifyFileRequestDeidentifyStructuredText { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java index 7a7c6615..8457c790 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/DeidentifyFileRequestDeidentifyText.java @@ -3,26 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.files.types.DeidentifyFileRequestDeidentifyTextEntityTypesItem; import com.skyflow.generated.rest.types.FileDataDeidentifyText; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyFileRequestDeidentifyText.Builder.class) public final class DeidentifyFileRequestDeidentifyText { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java index 490392f1..cde24227 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/GetRunRequest.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java index 0f5e79ab..5cd22747 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/files/requests/ReidentifyFileRequestReidentifyFile.java @@ -3,22 +3,17 @@ */ package com.skyflow.generated.rest.resources.files.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.FileDataReidentifyFile; import com.skyflow.generated.rest.types.Format; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ReidentifyFileRequestReidentifyFile.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java index 28829a68..80853472 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/AsyncRawGuardrailsClient.java @@ -4,31 +4,18 @@ package com.skyflow.generated.rest.resources.guardrails; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; import com.skyflow.generated.rest.resources.guardrails.requests.DetectGuardrailsRequest; import com.skyflow.generated.rest.types.DetectGuardrailsResponse; import com.skyflow.generated.rest.types.ErrorResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawGuardrailsClient { protected final ClientOptions clientOptions; @@ -89,12 +76,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java index bdf632ca..5bf5c31a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/RawGuardrailsClient.java @@ -4,27 +4,16 @@ package com.skyflow.generated.rest.resources.guardrails; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; import com.skyflow.generated.rest.resources.guardrails.requests.DetectGuardrailsRequest; import com.skyflow.generated.rest.types.DetectGuardrailsResponse; import com.skyflow.generated.rest.types.ErrorResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawGuardrailsClient { protected final ClientOptions clientOptions; @@ -79,10 +68,10 @@ public ApiClientHttpResponse checkGuardrails( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java index 9063fed8..75250f8c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/guardrails/requests/DetectGuardrailsRequest.java @@ -3,22 +3,13 @@ */ package com.skyflow.generated.rest.resources.guardrails.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DetectGuardrailsRequest.Builder.class) public final class DetectGuardrailsRequest { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java index 96e2dc0b..7b8c9383 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/query/AsyncRawQueryClient.java @@ -4,28 +4,15 @@ package com.skyflow.generated.rest.resources.query; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.query.requests.QueryServiceExecuteQueryBody; import com.skyflow.generated.rest.types.V1GetQueryResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawQueryClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java index 3e5bee51..ec88ae93 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/query/RawQueryClient.java @@ -4,24 +4,13 @@ package com.skyflow.generated.rest.resources.query; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.query.requests.QueryServiceExecuteQueryBody; import com.skyflow.generated.rest.types.V1GetQueryResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawQueryClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java index 60565eb5..000cd685 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/query/requests/QueryServiceExecuteQueryBody.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.resources.query.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java index 8840b51c..b1c9ae18 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRawRecordsClient.java @@ -4,54 +4,21 @@ package com.skyflow.generated.rest.resources.records; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; -import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; -import com.skyflow.generated.rest.types.ErrorResponse; -import com.skyflow.generated.rest.types.UploadFileV2Response; -import com.skyflow.generated.rest.types.V1BatchOperationResponse; -import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; -import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; -import com.skyflow.generated.rest.types.V1DeleteFileResponse; -import com.skyflow.generated.rest.types.V1DeleteRecordResponse; -import com.skyflow.generated.rest.types.V1FieldRecords; -import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; -import com.skyflow.generated.rest.types.V1InsertRecordResponse; -import com.skyflow.generated.rest.types.V1UpdateRecordResponse; +import com.skyflow.generated.rest.resources.records.requests.*; +import com.skyflow.generated.rest.types.*; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Optional; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.MediaType; -import okhttp3.MultipartBody; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawRecordsClient { protected final ClientOptions clientOptions; @@ -1022,12 +989,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 404: diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java index c6925b50..ed7240c9 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/AsyncRecordsClient.java @@ -5,24 +5,9 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; -import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; -import com.skyflow.generated.rest.types.UploadFileV2Response; -import com.skyflow.generated.rest.types.V1BatchOperationResponse; -import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; -import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; -import com.skyflow.generated.rest.types.V1DeleteFileResponse; -import com.skyflow.generated.rest.types.V1DeleteRecordResponse; -import com.skyflow.generated.rest.types.V1FieldRecords; -import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; -import com.skyflow.generated.rest.types.V1InsertRecordResponse; -import com.skyflow.generated.rest.types.V1UpdateRecordResponse; +import com.skyflow.generated.rest.resources.records.requests.*; +import com.skyflow.generated.rest.types.*; + import java.io.File; import java.util.Optional; import java.util.concurrent.CompletableFuture; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java index 977e84bb..29530b56 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RawRecordsClient.java @@ -4,50 +4,19 @@ package com.skyflow.generated.rest.resources.records; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.QueryStringMapper; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.errors.UnauthorizedError; -import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; -import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; -import com.skyflow.generated.rest.types.ErrorResponse; -import com.skyflow.generated.rest.types.UploadFileV2Response; -import com.skyflow.generated.rest.types.V1BatchOperationResponse; -import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; -import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; -import com.skyflow.generated.rest.types.V1DeleteFileResponse; -import com.skyflow.generated.rest.types.V1DeleteRecordResponse; -import com.skyflow.generated.rest.types.V1FieldRecords; -import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; -import com.skyflow.generated.rest.types.V1InsertRecordResponse; -import com.skyflow.generated.rest.types.V1UpdateRecordResponse; +import com.skyflow.generated.rest.resources.records.requests.*; +import com.skyflow.generated.rest.types.*; +import okhttp3.*; + import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Optional; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.MediaType; -import okhttp3.MultipartBody; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawRecordsClient { protected final ClientOptions clientOptions; @@ -862,10 +831,10 @@ public ApiClientHttpResponse uploadFileV2( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 404: throw new NotFoundError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java index 7b4599c6..eb9bc81d 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/RecordsClient.java @@ -5,24 +5,9 @@ import com.skyflow.generated.rest.core.ClientOptions; import com.skyflow.generated.rest.core.RequestOptions; -import com.skyflow.generated.rest.resources.records.requests.FileServiceUploadFileRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBatchOperationBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkDeleteRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceBulkGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceGetRecordRequest; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceInsertRecordBody; -import com.skyflow.generated.rest.resources.records.requests.RecordServiceUpdateRecordBody; -import com.skyflow.generated.rest.resources.records.requests.UploadFileV2Request; -import com.skyflow.generated.rest.types.UploadFileV2Response; -import com.skyflow.generated.rest.types.V1BatchOperationResponse; -import com.skyflow.generated.rest.types.V1BulkDeleteRecordResponse; -import com.skyflow.generated.rest.types.V1BulkGetRecordResponse; -import com.skyflow.generated.rest.types.V1DeleteFileResponse; -import com.skyflow.generated.rest.types.V1DeleteRecordResponse; -import com.skyflow.generated.rest.types.V1FieldRecords; -import com.skyflow.generated.rest.types.V1GetFileScanStatusResponse; -import com.skyflow.generated.rest.types.V1InsertRecordResponse; -import com.skyflow.generated.rest.types.V1UpdateRecordResponse; +import com.skyflow.generated.rest.resources.records.requests.*; +import com.skyflow.generated.rest.types.*; + import java.io.File; import java.util.Optional; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java index fe805970..3efb0a98 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/FileServiceUploadFileRequest.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java index 48586839..c1997213 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBatchOperationBody.java @@ -3,22 +3,13 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1BatchRecord; import com.skyflow.generated.rest.types.V1Byot; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceBatchOperationBody.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java index b417adbb..4b9dcced 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkDeleteRecordBody.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceBulkDeleteRecordBody.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java index 22c9090c..9b59168a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceBulkGetRecordRequest.java @@ -3,23 +3,13 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.records.types.RecordServiceBulkGetRecordRequestOrderBy; import com.skyflow.generated.rest.resources.records.types.RecordServiceBulkGetRecordRequestRedaction; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceBulkGetRecordRequest.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java index eef17665..91317d02 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceGetRecordRequest.java @@ -3,22 +3,12 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.records.types.RecordServiceGetRecordRequestRedaction; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceGetRecordRequest.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java index e1de00f7..e832e396 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceInsertRecordBody.java @@ -3,22 +3,13 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1Byot; import com.skyflow.generated.rest.types.V1FieldRecords; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = RecordServiceInsertRecordBody.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java index e52af2e4..f5c7a229 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/RecordServiceUpdateRecordBody.java @@ -3,17 +3,12 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1Byot; import com.skyflow.generated.rest.types.V1FieldRecords; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java index f162530c..81a9f837 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/records/requests/UploadFileV2Request.java @@ -3,20 +3,15 @@ */ package com.skyflow.generated.rest.resources.records.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = UploadFileV2Request.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java index aed19530..36b364b5 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/AsyncRawStringsClient.java @@ -4,13 +4,7 @@ package com.skyflow.generated.rest.resources.strings; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; @@ -19,18 +13,11 @@ import com.skyflow.generated.rest.types.DeidentifyStringResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.IdentifyResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawStringsClient { protected final ClientOptions clientOptions; @@ -91,12 +78,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: @@ -185,12 +172,12 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO switch (response.code()) { case 400: future.completeExceptionally(new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 401: future.completeExceptionally(new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response)); return; case 500: diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java index 560e1931..da6bec56 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/RawStringsClient.java @@ -4,13 +4,7 @@ package com.skyflow.generated.rest.resources.strings; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.BadRequestError; import com.skyflow.generated.rest.errors.InternalServerError; import com.skyflow.generated.rest.errors.UnauthorizedError; @@ -19,14 +13,9 @@ import com.skyflow.generated.rest.types.DeidentifyStringResponse; import com.skyflow.generated.rest.types.ErrorResponse; import com.skyflow.generated.rest.types.IdentifyResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawStringsClient { protected final ClientOptions clientOptions; @@ -81,10 +70,10 @@ public ApiClientHttpResponse deidentifyString( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); @@ -154,10 +143,10 @@ public ApiClientHttpResponse reidentifyString( switch (response.code()) { case 400: throw new BadRequestError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 401: throw new UnauthorizedError( - ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); + ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response); case 500: throw new InternalServerError( ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorResponse.class), response); diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java index 943ddde4..06ec6cec 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/DeidentifyStringRequest.java @@ -3,25 +3,16 @@ */ package com.skyflow.generated.rest.resources.strings.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.resources.strings.types.DeidentifyStringRequestEntityTypesItem; import com.skyflow.generated.rest.types.TokenTypeMapping; import com.skyflow.generated.rest.types.Transformations; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyStringRequest.Builder.class) public final class DeidentifyStringRequest { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java index 59c1aaf2..3c42390c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/strings/requests/ReidentifyStringRequest.java @@ -3,16 +3,11 @@ */ package com.skyflow.generated.rest.resources.strings.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.Format; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java index fbf69580..794035bd 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncRawTokensClient.java @@ -4,30 +4,17 @@ package com.skyflow.generated.rest.resources.tokens; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.tokens.requests.V1DetokenizePayload; import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; import com.skyflow.generated.rest.types.V1DetokenizeResponse; import com.skyflow.generated.rest.types.V1TokenizeResponse; +import okhttp3.*; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.concurrent.CompletableFuture; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; -import org.jetbrains.annotations.NotNull; public class AsyncRawTokensClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java index 26d5ea05..621701af 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/AsyncTokensClient.java @@ -9,6 +9,7 @@ import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; import com.skyflow.generated.rest.types.V1DetokenizeResponse; import com.skyflow.generated.rest.types.V1TokenizeResponse; + import java.util.concurrent.CompletableFuture; public class AsyncTokensClient { diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java index 5ed17d28..7ad69d11 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/RawTokensClient.java @@ -4,26 +4,15 @@ package com.skyflow.generated.rest.resources.tokens; import com.fasterxml.jackson.core.JsonProcessingException; -import com.skyflow.generated.rest.core.ApiClientApiException; -import com.skyflow.generated.rest.core.ApiClientException; -import com.skyflow.generated.rest.core.ApiClientHttpResponse; -import com.skyflow.generated.rest.core.ClientOptions; -import com.skyflow.generated.rest.core.MediaTypes; -import com.skyflow.generated.rest.core.ObjectMappers; -import com.skyflow.generated.rest.core.RequestOptions; +import com.skyflow.generated.rest.core.*; import com.skyflow.generated.rest.errors.NotFoundError; import com.skyflow.generated.rest.resources.tokens.requests.V1DetokenizePayload; import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload; import com.skyflow.generated.rest.types.V1DetokenizeResponse; import com.skyflow.generated.rest.types.V1TokenizeResponse; +import okhttp3.*; + import java.io.IOException; -import okhttp3.Headers; -import okhttp3.HttpUrl; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okhttp3.ResponseBody; public class RawTokensClient { protected final ClientOptions clientOptions; diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java index 59318aa8..52571f64 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1DetokenizePayload.java @@ -3,21 +3,12 @@ */ package com.skyflow.generated.rest.resources.tokens.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1DetokenizeRecordRequest; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1DetokenizePayload.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java index 9729023e..e5fc08f4 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java +++ b/v2/src/main/java/com/skyflow/generated/rest/resources/tokens/requests/V1TokenizePayload.java @@ -3,21 +3,12 @@ */ package com.skyflow.generated.rest.resources.tokens.requests; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; import com.skyflow.generated.rest.types.V1TokenizeRecordRequest; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1TokenizePayload.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java index 210f96c0..73aed9c1 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventContext.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java index e2028fba..bab4b42a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventData.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java index 1352c42f..9d3bbaed 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/AuditEventHttpInfo.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java index a7dd7c68..dc244be8 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifiedFileOutput.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java index d2b8e5b6..d5a2ebd5 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyFileResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java index e831f142..1389fa0f 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DeidentifyStringResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DeidentifyStringResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java index 9773dcc3..9cb2d319 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DetectGuardrailsResponse.java @@ -3,20 +3,15 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DetectGuardrailsResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java index c97f7635..b73f7845 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/DetectRunsResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = DetectRunsResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java index 565714eb..4113b998 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponse.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ErrorResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java index bcc23f03..4774fa57 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ErrorResponseError.java @@ -3,22 +3,13 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import org.jetbrains.annotations.NotNull; +import java.util.*; + @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ErrorResponseError.Builder.class) public final class ErrorResponseError { diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileData.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileData.java index 7f58332e..fd6fa822 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileData.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileData.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileData.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java index 2aa88f7b..b6a5ea11 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyAudio.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyAudio.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java index e6390e28..5fb12fba 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyDocument.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyDocument.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java index 127c5f4c..bc5e2c6b 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyImage.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyImage.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java index 20b0314f..5606e917 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPdf.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyPdf.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java index e808f0b2..0bedabc5 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyPresentation.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyPresentation.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java index 33478d20..dd017bb8 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifySpreadsheet.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifySpreadsheet.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java index dad188ce..814d51c3 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyStructuredText.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyStructuredText.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java index 79045d7a..e5c88180 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataDeidentifyText.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataDeidentifyText.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java index edea3145..9148703c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/FileDataReidentifyFile.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = FileDataReidentifyFile.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/Format.java b/v2/src/main/java/com/skyflow/generated/rest/types/Format.java index 68ac94ca..1563b90a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/Format.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/Format.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = Format.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java b/v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java index 807aee4e..55be5699 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/GooglerpcStatus.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = GooglerpcStatus.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java index e7ae30fc..c1bd23c6 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/IdentifyResponse.java @@ -3,18 +3,14 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; +import org.jetbrains.annotations.NotNull; + import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.jetbrains.annotations.NotNull; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = IdentifyResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/Locations.java b/v2/src/main/java/com/skyflow/generated/rest/types/Locations.java index 9864541a..4b95c485 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/Locations.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/Locations.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java b/v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java index 9f019b66..40e73b99 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ProtobufAny.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java index b5a4f6f5..a12660cb 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifiedFileOutput.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java index 024200d1..b7bc22ca 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ReidentifyFileResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java b/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java index 2fc4b11a..37ef8cdf 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/ShiftDates.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ShiftDates.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java b/v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java index 81c1e58d..78df8838 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/StringResponseEntities.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java b/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java index f8c1edb4..b703895d 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/TokenTypeMapping.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = TokenTypeMapping.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java b/v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java index 12a5afc7..c9165409 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/Transformations.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java b/v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java index c1ddbd58..8f5fea5a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/UploadFileV2Response.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java index d942fdcd..037b80bf 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditAfterOptions.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java index c582d06d..f7ca73f0 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditEventResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java index dd23d77c..36d7ccce 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1AuditResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java index ca2bfdc2..a54eec6c 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEvent.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1AuditResponseEvent.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java index 046c8fb4..90d9c538 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1AuditResponseEventRequest.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1AuditResponseEventRequest.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java index a557da82..8f5fb775 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchOperationResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BatchOperationResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java index afc572cf..3f0455cc 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BatchRecord.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java index 58472a8b..88c1c125 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BinListResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BinListResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java index ddb0d213..b7151598 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkDeleteRecordResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BulkDeleteRecordResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java index c2d3790a..27878fab 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1BulkGetRecordResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1BulkGetRecordResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java index f2a9db90..ba4f7349 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1Card.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java index 4ec85903..4d9b24eb 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteFileResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java index 2f3bde14..5351d897 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DeleteRecordResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java index 3cf5b59c..b6fb9cb6 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordRequest.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java index ba0abbfa..dd3a9c1f 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeRecordResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java index 74f4f6e6..53660cbe 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1DetokenizeResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1DetokenizeResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java index dfbccb8b..b64b8792 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1FieldRecords.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java new file mode 100644 index 00000000..43a86ae0 --- /dev/null +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetAuthTokenResponse.java @@ -0,0 +1,125 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.skyflow.generated.rest.types; + +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.skyflow.generated.rest.core.ObjectMappers; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@JsonInclude(JsonInclude.Include.NON_ABSENT) +@JsonDeserialize(builder = V1GetAuthTokenResponse.Builder.class) +public final class V1GetAuthTokenResponse { + private final Optional accessToken; + + private final Optional tokenType; + + private final Map additionalProperties; + + private V1GetAuthTokenResponse( + Optional accessToken, Optional tokenType, Map additionalProperties) { + this.accessToken = accessToken; + this.tokenType = tokenType; + this.additionalProperties = additionalProperties; + } + + /** + * @return AccessToken. + */ + @JsonProperty("accessToken") + public Optional getAccessToken() { + return accessToken; + } + + /** + * @return TokenType : Bearer. + */ + @JsonProperty("tokenType") + public Optional getTokenType() { + return tokenType; + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + return other instanceof V1GetAuthTokenResponse && equalTo((V1GetAuthTokenResponse) other); + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + private boolean equalTo(V1GetAuthTokenResponse other) { + return accessToken.equals(other.accessToken) && tokenType.equals(other.tokenType); + } + + @Override + public int hashCode() { + return Objects.hash(this.accessToken, this.tokenType); + } + + @Override + public String toString() { + return ObjectMappers.stringify(this); + } + + public static Builder builder() { + return new Builder(); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static final class Builder { + private Optional accessToken = Optional.empty(); + + private Optional tokenType = Optional.empty(); + + @JsonAnySetter + private Map additionalProperties = new HashMap<>(); + + private Builder() {} + + public Builder from(V1GetAuthTokenResponse other) { + accessToken(other.getAccessToken()); + tokenType(other.getTokenType()); + return this; + } + + /** + *

AccessToken.

+ */ + @JsonSetter(value = "accessToken", nulls = Nulls.SKIP) + public Builder accessToken(Optional accessToken) { + this.accessToken = accessToken; + return this; + } + + public Builder accessToken(String accessToken) { + this.accessToken = Optional.ofNullable(accessToken); + return this; + } + + /** + *

TokenType : Bearer.

+ */ + @JsonSetter(value = "tokenType", nulls = Nulls.SKIP) + public Builder tokenType(Optional tokenType) { + this.tokenType = tokenType; + return this; + } + + public Builder tokenType(String tokenType) { + this.tokenType = Optional.ofNullable(tokenType); + return this; + } + + public V1GetAuthTokenResponse build() { + return new V1GetAuthTokenResponse(accessToken, tokenType, additionalProperties); + } + } +} diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java index 4bd67013..3138c766 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetFileScanStatusResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java index 821d1f06..a44b0f62 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1GetQueryResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1GetQueryResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java index 0addf786..f8a00001 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1InsertRecordResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1InsertRecordResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java index f69719cf..17f77df6 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1RecordMetaProperties.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java index 2c15ceac..43fe264a 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordRequest.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java index 201a4f60..66721fa1 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeRecordResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java index 62d77bed..05e64bc0 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1TokenizeResponse.java @@ -3,20 +3,11 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; + +import java.util.*; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = V1TokenizeResponse.Builder.class) diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java index 03ed7b58..d2fcbf1b 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1UpdateRecordResponse.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java index c19d1cb5..6fc09854 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultFieldMapping.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java index cd838305..1542ab0f 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/V1VaultSchemaConfig.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java b/v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java index 594b6d11..314b5942 100644 --- a/v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java +++ b/v2/src/main/java/com/skyflow/generated/rest/types/WordCharacterCount.java @@ -3,15 +3,10 @@ */ package com.skyflow.generated.rest.types; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.annotation.Nulls; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.skyflow.generated.rest.core.ObjectMappers; + import java.util.HashMap; import java.util.Map; import java.util.Objects; From 30628cf0553a37c0698ab046415d0ff27a0b9c1d Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Tue, 21 Jul 2026 09:37:56 +0530 Subject: [PATCH 26/26] SK-2967 improve the issues --- .../main/java/com/skyflow/BaseSkyflow.java | 19 +- .../java/com/skyflow/BaseVaultClient.java | 4 +- .../src/main/java/com/skyflow/ISkyflow.java | 2 +- .../com/skyflow/config/BaseCredentials.java | 11 +- .../java/com/skyflow/errors/ErrorMessage.java | 1 + .../com/skyflow/errors/SkyflowException.java | 2 +- .../main/java/com/skyflow/logs/ErrorLogs.java | 1 + .../java/com/skyflow/utils/BaseUtils.java | 9 +- .../java/com/skyflow/BaseSkyflowTests.java | 2 +- flowvault/dependency-reduced-pom.xml | 195 ++++++++++++++++++ .../main/java/com/skyflow/VaultClient.java | 2 +- .../main/java/com/skyflow/utils/Utils.java | 4 +- .../utils/validations/Validations.java | 12 ++ .../vault/controller/VaultController.java | 32 +-- v2/src/main/java/com/skyflow/Skyflow.java | 2 +- v2/src/main/java/com/skyflow/VaultClient.java | 5 + 16 files changed, 270 insertions(+), 33 deletions(-) create mode 100644 flowvault/dependency-reduced-pom.xml diff --git a/common/src/main/java/com/skyflow/BaseSkyflow.java b/common/src/main/java/com/skyflow/BaseSkyflow.java index 7475012d..a60dc02b 100644 --- a/common/src/main/java/com/skyflow/BaseSkyflow.java +++ b/common/src/main/java/com/skyflow/BaseSkyflow.java @@ -16,7 +16,7 @@ import java.util.Map; -abstract class BaseSkyflow implements ISkyflow { +abstract class BaseSkyflow, V extends BaseVaultConfig> implements ISkyflow { protected final BaseSkyflowClientBuilder builder; protected BaseSkyflow(BaseSkyflowClientBuilder builder) { @@ -124,8 +124,8 @@ protected final void addVaultConfigTemplate(V vaultConfig) throws SkyflowExcepti throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdAlreadyInConfigList.getMessage()); } - this.vaultConfigMap.put(vaultId, vaultConfigCopy); onVaultConfigAdded(vaultConfigCopy); + this.vaultConfigMap.put(vaultId, vaultConfigCopy); } protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowException { @@ -139,8 +139,9 @@ protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowExce throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage()); } V previousConfig = this.vaultConfigMap.get(vaultId); - V merged = mergeVaultConfig(vaultConfig, previousConfig); + V merged = mergeVaultConfig(vaultConfig, cloneVaultConfig(previousConfig)); onVaultConfigUpdated(merged); + this.vaultConfigMap.put(vaultId, merged); } protected final void removeVaultConfigTemplate(String vaultId) throws SkyflowException { @@ -158,10 +159,10 @@ protected final void addSkyflowCredentialsTemplate(Credentials credentials) thro try { credentialsCopy = (Credentials) credentials.clone(); } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); + throw new SkyflowException(e.getMessage(), e); } - this.skyflowCredentials = credentialsCopy; onCredentialsUpdated(credentialsCopy); + this.skyflowCredentials = credentialsCopy; } protected abstract void validateVaultConfig(V vaultConfig) throws SkyflowException; @@ -169,11 +170,11 @@ protected final void addSkyflowCredentialsTemplate(Credentials credentials) thro protected abstract boolean hasVaultClient(String vaultId); @SuppressWarnings("unchecked") - protected final V cloneVaultConfig(V vaultConfig) { + protected final V cloneVaultConfig(V vaultConfig) throws SkyflowException { try { return (V) vaultConfig.clone(); } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); + throw new SkyflowException(e.getMessage(), e); } } @@ -181,7 +182,7 @@ protected final String extractVaultId(V vaultConfig) { return vaultConfig.getVaultId(); } - protected final V mergeVaultConfig(V incoming, V existing) { + protected final V mergeVaultConfig(V incoming, V existing) throws SkyflowException { if (incoming.getEnv() != null) { existing.setEnv(incoming.getEnv()); } @@ -192,7 +193,7 @@ protected final V mergeVaultConfig(V incoming, V existing) { try { existing.setCredentials((Credentials) incoming.getCredentials().clone()); } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); + throw new SkyflowException(e.getMessage(), e); } } return existing; diff --git a/common/src/main/java/com/skyflow/BaseVaultClient.java b/common/src/main/java/com/skyflow/BaseVaultClient.java index fa648611..3d5b0d32 100644 --- a/common/src/main/java/com/skyflow/BaseVaultClient.java +++ b/common/src/main/java/com/skyflow/BaseVaultClient.java @@ -55,7 +55,7 @@ protected OkHttpClient buildSharedHttpClient(Supplier tokenSupplier) { .build(); } - protected void prioritiseCredentials(BaseCredentials vaultSpecificCredentials) throws SkyflowException { + protected synchronized void prioritiseCredentials(BaseCredentials vaultSpecificCredentials) throws SkyflowException { try { BaseCredentials original = this.finalCredentials; if (vaultSpecificCredentials != null) { @@ -88,7 +88,7 @@ protected void prioritiseCredentials(BaseCredentials vaultSpecificCredentials) t } } - protected void setBearerToken(BaseCredentials vaultSpecificCredentials) throws SkyflowException { + protected synchronized void setBearerToken(BaseCredentials vaultSpecificCredentials) throws SkyflowException { prioritiseCredentials(vaultSpecificCredentials); BaseValidations.validateCredentials(this.finalCredentials); if (this.finalCredentials.getApiKey() != null) { diff --git a/common/src/main/java/com/skyflow/ISkyflow.java b/common/src/main/java/com/skyflow/ISkyflow.java index ac5fd747..1c29b780 100644 --- a/common/src/main/java/com/skyflow/ISkyflow.java +++ b/common/src/main/java/com/skyflow/ISkyflow.java @@ -5,7 +5,7 @@ import com.skyflow.enums.LogLevel; import com.skyflow.errors.SkyflowException; -public interface ISkyflow { +public interface ISkyflow, V extends BaseVaultConfig, C extends BaseCredentials> { Self addVaultConfig(V vaultConfig) throws SkyflowException; Self updateVaultConfig(V vaultConfig) throws SkyflowException; diff --git a/common/src/main/java/com/skyflow/config/BaseCredentials.java b/common/src/main/java/com/skyflow/config/BaseCredentials.java index 34b2c117..48ab70dc 100644 --- a/common/src/main/java/com/skyflow/config/BaseCredentials.java +++ b/common/src/main/java/com/skyflow/config/BaseCredentials.java @@ -1,6 +1,7 @@ package com.skyflow.config; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; public class BaseCredentials implements Cloneable { @@ -69,7 +70,15 @@ public void setContext(Map context) { } @Override + @SuppressWarnings("unchecked") public Object clone() throws CloneNotSupportedException { - return super.clone(); + BaseCredentials copy = (BaseCredentials) super.clone(); + if (this.roles != null) { + copy.roles = new ArrayList<>(this.roles); + } + if (this.context instanceof Map) { + copy.context = new HashMap<>((Map) this.context); + } + return copy; } } diff --git a/common/src/main/java/com/skyflow/errors/ErrorMessage.java b/common/src/main/java/com/skyflow/errors/ErrorMessage.java index e3b5924b..1e4d9178 100644 --- a/common/src/main/java/com/skyflow/errors/ErrorMessage.java +++ b/common/src/main/java/com/skyflow/errors/ErrorMessage.java @@ -63,6 +63,7 @@ public enum ErrorMessage { BearerTokenExpired("%s0 Validation error. Bearer token is invalid or expired. Please provide a valid bearer token."), // Insert + InsertRequestNull("%s0 Validation error. InsertRequest object is null. Specify a valid InsertRequest object."), TableKeyError("%s0 Validation error. 'table' key is missing from the payload. Specify a 'table' key."), EmptyTable("%s0 Validation error. 'table' can't be empty. Specify a table."), ValuesKeyError("%s0 Validation error. 'values' key is missing from the payload. Specify a 'values' key."), diff --git a/common/src/main/java/com/skyflow/errors/SkyflowException.java b/common/src/main/java/com/skyflow/errors/SkyflowException.java index 138fcc68..676bdd74 100644 --- a/common/src/main/java/com/skyflow/errors/SkyflowException.java +++ b/common/src/main/java/com/skyflow/errors/SkyflowException.java @@ -90,7 +90,7 @@ private void setHttpStatus() { } public int getHttpCode() { - return httpCode; + return httpCode == null ? 0 : httpCode; } public JsonArray getDetails() { diff --git a/common/src/main/java/com/skyflow/logs/ErrorLogs.java b/common/src/main/java/com/skyflow/logs/ErrorLogs.java index b77eee2c..bbb96fce 100644 --- a/common/src/main/java/com/skyflow/logs/ErrorLogs.java +++ b/common/src/main/java/com/skyflow/logs/ErrorLogs.java @@ -54,6 +54,7 @@ public enum ErrorLogs { EMPTY_TABLE_NAME("Invalid %s1 request. Table name can not be empty."), VALUES_IS_REQUIRED("Invalid %s1 request. Values are required."), EMPTY_VALUES("Invalid %s1 request. Values can not be empty."), + INSERT_REQUEST_NULL("Invalid %s1 request. Insert request can not be null."), RECORDS_IS_REQUIRED("Invalid %s1 request. Records are required."), EMPTY_RECORDS("Invalid %s1 request. Records can not be empty."), INVALID_RECORD("Invalid %s1 request. Invalid record. Specify a valid record."), diff --git a/common/src/main/java/com/skyflow/utils/BaseUtils.java b/common/src/main/java/com/skyflow/utils/BaseUtils.java index c4a7b6f3..e536c111 100644 --- a/common/src/main/java/com/skyflow/utils/BaseUtils.java +++ b/common/src/main/java/com/skyflow/utils/BaseUtils.java @@ -81,9 +81,14 @@ public static PrivateKey getPrivateKeyFromPem(String pemKey) throws SkyflowExcep if (pemKey.contains(PKCS8PrivateHeader)) { privateKeyContent = privateKeyContent.replace(PKCS8PrivateHeader, ""); privateKeyContent = privateKeyContent.replace(PKCS8PrivateFooter, ""); - privateKeyContent = privateKeyContent.replace("\n", ""); privateKeyContent = privateKeyContent.replace("\r\n", ""); - privateKey = parsePkcs8PrivateKey(Base64.getDecoder().decode(privateKeyContent)); + privateKeyContent = privateKeyContent.replace("\n", ""); + try { + privateKey = parsePkcs8PrivateKey(Base64.getDecoder().decode(privateKeyContent)); + } catch (IllegalArgumentException e) { + LogUtil.printErrorLog(ErrorLogs.INVALID_KEY_SPEC.getLog()); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidKeySpec.getMessage()); + } } else { LogUtil.printErrorLog(ErrorLogs.JWT_INVALID_FORMAT.getLog()); throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.JwtInvalidFormat.getMessage()); diff --git a/common/src/test/java/com/skyflow/BaseSkyflowTests.java b/common/src/test/java/com/skyflow/BaseSkyflowTests.java index 12ae256c..2e18a1ea 100644 --- a/common/src/test/java/com/skyflow/BaseSkyflowTests.java +++ b/common/src/test/java/com/skyflow/BaseSkyflowTests.java @@ -250,7 +250,7 @@ public Env getEnv() { } @Test - public void testMergeVaultConfigWithNullClusterIdFallsBackToPreviousClusterId() { + public void testMergeVaultConfigWithNullClusterIdFallsBackToPreviousClusterId() throws SkyflowException { BaseVaultConfig existing = newConfig(vaultID, clusterID, Env.DEV); BaseVaultConfig incoming = new BaseVaultConfig(); incoming.setVaultId(vaultID); diff --git a/flowvault/dependency-reduced-pom.xml b/flowvault/dependency-reduced-pom.xml new file mode 100644 index 00000000..92fc11f2 --- /dev/null +++ b/flowvault/dependency-reduced-pom.xml @@ -0,0 +1,195 @@ + + + + skyflow + com.skyflow + 1.0.0 + + 4.0.0 + skyflow-flowvault-java + ${project.groupId}:${project.artifactId} + 1.0.0 + Skyflow V3 SDK for the Java programming language + https://github.com/skyflowapi/skyflow-java/tree/main + + + skyflow + skyflow + + + + + The MIT License (MIT) + https://github.com/skyflowapi/skyflow-java/blob/main/LICENSE + + + + + + true + src/main/resources + + + + + maven-shade-plugin + 3.6.0 + + + package + + shade + + + + + com.skyflow:common + + + + + + + + + + + jfrog + + + central + prekarilabs.jfrog.io-releases + https://prekarilabs.jfrog.io/artifactory/skyflow-java + + + snapshots + prekarilabs.jfrog.io-snapshots + https://prekarilabs.jfrog.io/artifactory/skyflow-java + + + + + maven-central + + + + org.sonatype.central + central-publishing-maven-plugin + 0.4.0 + true + + central + true + true + + + + + + + central + https://central.sonatype.com/api/v1/publisher/upload + + + central-snapshots + https://central.sonatype.com/api/v1/publisher/upload + + + + + + + com.fasterxml.jackson.core + jackson-databind + 2.17.2 + compile + + + com.fasterxml.jackson.datatype + jackson-datatype-jdk8 + 2.18.6 + compile + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.18.6 + compile + + + io.github.cdimascio + dotenv-java + 2.2.0 + compile + + + com.google.code.gson + gson + 2.10.1 + compile + + + com.squareup.okhttp3 + okhttp + 4.12.0 + compile + + + io.jsonwebtoken + jjwt + 0.12.6 + compile + + + junit + junit + 4.13.2 + test + + + hamcrest-core + org.hamcrest + + + + + org.powermock + powermock-module-junit4 + 2.0.9 + test + + + powermock-module-junit4-common + org.powermock + + + hamcrest-core + org.hamcrest + + + + + org.powermock + powermock-api-mockito2 + 2.0.9 + test + + + powermock-api-support + org.powermock + + + mockito-core + org.mockito + + + + + + UTF-8 + 8 + false + 8 + ${project.version} + + diff --git a/flowvault/src/main/java/com/skyflow/VaultClient.java b/flowvault/src/main/java/com/skyflow/VaultClient.java index c8843f3e..9f326349 100644 --- a/flowvault/src/main/java/com/skyflow/VaultClient.java +++ b/flowvault/src/main/java/com/skyflow/VaultClient.java @@ -28,7 +28,7 @@ protected void setCommonCredentials(Credentials commonCredentials) throws Skyflo super.prioritiseCredentials(this.vaultConfig.getCredentials()); } - protected void setBearerToken() throws SkyflowException { + protected synchronized void setBearerToken() throws SkyflowException { super.setBearerToken(this.vaultConfig.getCredentials()); if (apiClient == null) { updateExecutorInHTTP(); diff --git a/flowvault/src/main/java/com/skyflow/utils/Utils.java b/flowvault/src/main/java/com/skyflow/utils/Utils.java index db2d00bd..5880344b 100644 --- a/flowvault/src/main/java/com/skyflow/utils/Utils.java +++ b/flowvault/src/main/java/com/skyflow/utils/Utils.java @@ -738,11 +738,11 @@ public static BulkInsertResponse formatBulkInsertResponse(V1InsertResponse respo BulkInsertResponse formattedResponse = null; List successRecords = new ArrayList<>(); List errorRecords = new ArrayList<>(); - if (response != null) { + if (response != null && response.getRecords().isPresent()) { String requestId = extractRequestId(headers); List record = response.getRecords().get(); int indexNumber = batch * batchSize; - int recordsSize = response.getRecords().get().size(); + int recordsSize = record.size(); for (int index = 0; index < recordsSize; index++) { if (record.get(index).getError().isPresent()) { ErrorRecord errorRecord = new ErrorRecord(indexNumber, record.get(index).getError().get(), record.get(index).getHttpCode().orElse(500), requestId); diff --git a/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java b/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java index c835cc78..1d0228ed 100644 --- a/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java +++ b/flowvault/src/main/java/com/skyflow/utils/validations/Validations.java @@ -152,6 +152,12 @@ public static void validateVaultConfiguration(VaultConfig vaultConfig) throws Sk public static void validateInsertRequest(InsertRequest insertRequest) throws SkyflowException { + if (insertRequest == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.INSERT_REQUEST_NULL.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InsertRequestNull.getMessage()); + } String table = insertRequest.getTable(); ArrayList records = insertRequest.getRecords(); if (records == null) { @@ -384,6 +390,12 @@ public static void validateTokenizeRequest(TokenizeRequest request) throws Skyfl // ── Bulk (batched/concurrent) request validations ──────────────────────── public static void validateBulkInsertRequest(BulkInsertRequest insertRequest) throws SkyflowException { + if (insertRequest == null) { + LogUtil.printErrorLog(Utils.parameterizedString( + ErrorLogs.INSERT_REQUEST_NULL.getLog(), InterfaceName.INSERT.getName() + )); + throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InsertRequestNull.getMessage()); + } String table = insertRequest.getTable(); ArrayList records = insertRequest.getRecords(); if (records == null) { diff --git a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java index bf6abc42..476ce9d5 100644 --- a/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java +++ b/flowvault/src/main/java/com/skyflow/vault/controller/VaultController.java @@ -884,25 +884,33 @@ private BulkInsertResponse processBulkInsertSync( ArrayList originalPayload, RequestInterceptor interceptor, BatchConfig cfg - ) throws ExecutionException, InterruptedException { + ) throws ExecutionException, InterruptedException, SkyflowException { LogUtil.printInfoLog(InfoLogs.PROCESSING_BATCHES.getLog()); List successRecords = new ArrayList<>(); List errorRecords = Collections.synchronizedList(new ArrayList<>()); List> futures = this.insertBatchFutures(insertRequest, errorRecords, interceptor, cfg); - CompletableFuture allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); - allFutures.join(); - - for (CompletableFuture future : futures) { - BulkInsertResponse futureResponse = future.get(); - if (futureResponse != null) { - if (futureResponse.getSuccess() != null) { - successRecords.addAll(futureResponse.getSuccess()); - } - if (futureResponse.getErrors() != null) { - errorRecords.addAll(futureResponse.getErrors()); + try { + CompletableFuture allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); + try { + allFutures.join(); + } catch (Exception e) { + // individual batch errors are already captured + } + for (CompletableFuture future : futures) { + BulkInsertResponse futureResponse = future.get(); + if (futureResponse != null) { + if (futureResponse.getSuccess() != null) { + successRecords.addAll(futureResponse.getSuccess()); + } + if (futureResponse.getErrors() != null) { + errorRecords.addAll(futureResponse.getErrors()); + } } } + } catch (Exception e) { + LogUtil.printErrorLog(ErrorLogs.INSERT_RECORDS_REJECTED.getLog()); + throw new SkyflowException(e.getMessage()); } BulkInsertResponse response = new BulkInsertResponse(successRecords, errorRecords, originalPayload); LogUtil.printInfoLog(InfoLogs.INSERT_REQUEST_RESOLVED.getLog()); diff --git a/v2/src/main/java/com/skyflow/Skyflow.java b/v2/src/main/java/com/skyflow/Skyflow.java index 2daf9b27..66640f0e 100644 --- a/v2/src/main/java/com/skyflow/Skyflow.java +++ b/v2/src/main/java/com/skyflow/Skyflow.java @@ -106,7 +106,7 @@ protected void onVaultConfigAdded(VaultConfig vaultConfig) throws SkyflowExcepti @Override protected void onVaultConfigUpdated(VaultConfig updatedConfig) throws SkyflowException { - this.vaultClientsMap.get(updatedConfig.getVaultId()).updateVaultConfig(); + this.vaultClientsMap.get(updatedConfig.getVaultId()).updateVaultConfig(updatedConfig); } @Override diff --git a/v2/src/main/java/com/skyflow/VaultClient.java b/v2/src/main/java/com/skyflow/VaultClient.java index a24ef8d2..84289e8f 100644 --- a/v2/src/main/java/com/skyflow/VaultClient.java +++ b/v2/src/main/java/com/skyflow/VaultClient.java @@ -85,6 +85,11 @@ protected void updateVaultConfig() throws SkyflowException { super.prioritiseCredentials(this.vaultConfig.getCredentials()); } + protected void updateVaultConfig(VaultConfig newConfig) throws SkyflowException { + this.vaultConfig = newConfig; + updateVaultConfig(); + } + protected V1DetokenizePayload getDetokenizePayload(DetokenizeRequest request) { List recordRequests = new ArrayList<>();