diff --git a/.codegen.json b/.codegen.json
index f37be8c8c..b5c9d9dec 100644
--- a/.codegen.json
+++ b/.codegen.json
@@ -11,7 +11,7 @@
},
"toolchain": {
"require": ["mvn", "java"],
- "setup": ["rm -rf databricks-sdk-java/src/main/java/com/databricks/sdk/service"],
+ "setup": ["bash scripts/cleanup-services.sh"],
"post_generate": ["mvn spotless:apply","mvn --errors clean test"]
}
}
diff --git a/.codegen/_openapi_sha b/.codegen/_openapi_sha
index 097cd4891..f09edb728 100644
--- a/.codegen/_openapi_sha
+++ b/.codegen/_openapi_sha
@@ -1 +1 @@
-25becc311a99e04a1cad9b7953dcb928ade9dade
\ No newline at end of file
+c3a3e3055fe11cb9683f398a665c225a03563ff1
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
index dff8f67ce..38a03117f 100755
--- a/.gitattributes
+++ b/.gitattributes
@@ -931,7 +931,6 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieExe
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieExecuteMessageQueryRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieFeedback.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieFeedbackRating.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieFollowupQuestionsAttachment.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieGetConversationMessageRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieGetMessageAttachmentQueryResultRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieGetMessageQueryResultRequest.java linguist-generated=true
@@ -953,6 +952,7 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSer
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSpace.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieStartConversationMessageRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieStartConversationResponse.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSuggestedQuestionsAttachment.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieTrashSpaceRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GetDashboardRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GetPublishedDashboardRequest.java linguist-generated=true
@@ -1093,20 +1093,29 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountAccessCo
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountAccessControlProxyImpl.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountAccessControlProxyService.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountAccessControlService.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsAPI.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsImpl.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsService.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsAPI.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsImpl.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsService.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersAPI.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersImpl.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersService.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroup.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2API.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2Impl.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2Service.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipal.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2API.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2Impl.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2Service.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUser.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2API.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2Impl.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2Service.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/Actor.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CheckPolicyRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CheckPolicyResponse.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ComplexValue.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ConsistencyToken.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountGroupRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountServicePrincipalRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountUserRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateGroupRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateServicePrincipalRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateUserRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CurrentUserAPI.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CurrentUserImpl.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CurrentUserService.java linguist-generated=true
@@ -1123,7 +1132,9 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetAccountUserR
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetAssignableRolesForResourceRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetAssignableRolesForResourceResponse.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetGroupRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPasswordPermissionLevelsRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPasswordPermissionLevelsResponse.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPasswordPermissionsRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPermissionLevelsRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPermissionLevelsResponse.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPermissionRequest.java linguist-generated=true
@@ -1135,12 +1146,15 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetWorkspaceAss
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GrantRule.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/Group.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupSchema.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsAPI.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsImpl.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsService.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2API.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2Impl.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2Service.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountGroupsRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountGroupsResponse.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountServicePrincipalsRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountServicePrincipalsResponse.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountUsersRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountUsersResponse.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListGroupsRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListGroupsResponse.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListResponseSchema.java linguist-generated=true
@@ -1154,7 +1168,6 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/MigratePermissi
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/MigratePermissionsResponse.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/Name.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ObjectPermissions.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PartialUpdate.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PasswordAccessControlRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PasswordAccessControlResponse.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PasswordPermission.java linguist-generated=true
@@ -1163,8 +1176,14 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PasswordPermiss
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PasswordPermissionsDescription.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PasswordPermissionsRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/Patch.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountGroupRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountServicePrincipalRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountUserRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchGroupRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchOp.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchSchema.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchServicePrincipalRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchUserRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/Permission.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PermissionAssignment.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PermissionAssignments.java linguist-generated=true
@@ -1186,18 +1205,24 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/RuleSetResponse
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/RuleSetUpdateRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipal.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalSchema.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsAPI.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsImpl.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsService.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2API.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2Impl.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2Service.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/SetObjectPermissions.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountGroupRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountServicePrincipalRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountUserRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateGroupRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateObjectPermissions.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateRuleSetRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateServicePrincipalRequest.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateUserRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateWorkspaceAssignments.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/User.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UserSchema.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersAPI.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersImpl.java linguist-generated=true
-databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersService.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2API.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2Impl.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2Service.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/WorkspaceAssignmentAPI.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/WorkspaceAssignmentImpl.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/WorkspaceAssignmentService.java linguist-generated=true
@@ -1903,6 +1928,8 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/Ingestion
databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionGatewayPipelineDefinition.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinition.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinitionTableSpecificConfigQueryBasedConnectorConfig.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinitionWorkdayReportParameters.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionSourceType.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/ListPipelineEventsRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/ListPipelineEventsResponse.java linguist-generated=true
@@ -2610,6 +2637,7 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharedDataO
databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharedSecurableKind.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesAPI.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesImpl.java linguist-generated=true
+databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesListRequest.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesService.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Table.java linguist-generated=true
databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/TableInternalAttributes.java linguist-generated=true
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 000000000..7b016a89f
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "java.compile.nullAnalysis.mode": "automatic"
+}
\ No newline at end of file
diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md
index a80f60d2b..5c19ecb8b 100644
--- a/NEXT_CHANGELOG.md
+++ b/NEXT_CHANGELOG.md
@@ -11,3 +11,43 @@
### Internal Changes
### API Changes
+* Added `com.databricks.sdk.service.iamv2` package.
+* Added `accountClient.accountGroupsV2()` service, `accountClient.accountServicePrincipalsV2()` service, `accountClient.accountUsersV2()` service, `workspaceClient.groupsV2()` service, `workspaceClient.servicePrincipalsV2()` service and `workspaceClient.usersV2()` service.
+* Added `accountClient.accountIamV2()` service and `workspaceClient.workspaceIamV2()` service.
+* Added `workspaceClient.featureEngineering()` service.
+* Added `javaDependencies` field for `com.databricks.sdk.service.compute.Environment`.
+* Added `followupQuestions` field for `com.databricks.sdk.service.dashboards.GenieAttachment`.
+* Added `feedback` field for `com.databricks.sdk.service.dashboards.GenieMessage`.
+* Added `comment` field for `com.databricks.sdk.service.dashboards.GenieSendMessageFeedbackRequest`.
+* [Breaking] Added `rating` field for `com.databricks.sdk.service.dashboards.GenieSendMessageFeedbackRequest`.
+* Added `effectiveCapacity`, `effectiveEnablePgNativeLogin` and `enablePgNativeLogin` fields for `com.databricks.sdk.service.database.DatabaseInstance`.
+* Added `taskRetryMode` field for `com.databricks.sdk.service.jobs.Continuous`.
+* Added `disabled` field for `com.databricks.sdk.service.jobs.Task`.
+* Added `netsuiteJarPath` and `sourceConfigurations` fields for `com.databricks.sdk.service.pipelines.IngestionPipelineDefinition`.
+* Added `workdayReportParameters` field for `com.databricks.sdk.service.pipelines.TableSpecificConfig`.
+* Added `appId`, `appIdSet`, `authSecret`, `authSecretSet`, `channelUrl`, `channelUrlSet`, `tenantId` and `tenantIdSet` fields for `com.databricks.sdk.service.settings.MicrosoftTeamsConfig`.
+* Added `auxiliaryManagedLocation` field for `com.databricks.sdk.service.sharing.TableInternalAttributes`.
+* Added `alerts` field for `com.databricks.sdk.service.sql.ListAlertsV2Response`.
+* Added `createTime` and `updateTime` fields for `com.databricks.sdk.service.tags.TagPolicy`.
+* Added `ensureRerankerCompatible` field for `com.databricks.sdk.service.vectorsearch.GetIndexRequest`.
+* Added `reranker` field for `com.databricks.sdk.service.vectorsearch.QueryVectorIndexRequest`.
+* Added `TABLE_DELTA_UNIFORM_ICEBERG_FOREIGN_DELTASHARING` enum value for `com.databricks.sdk.service.catalog.SecurableKind`.
+* Added `NO_ACTIVATED_K8S` and `USAGE_POLICY_ENTITLEMENT_DENIED` enum values for `com.databricks.sdk.service.compute.TerminationReasonCode`.
+* Added `INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION` and `INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION` enum values for `com.databricks.sdk.service.dashboards.MessageErrorType`.
+* Added `FOREIGN_CATALOG` enum value for `com.databricks.sdk.service.pipelines.IngestionSourceType`.
+* Added `FOREIGN_ICEBERG_TABLE` enum value for `com.databricks.sdk.service.sharing.TableInternalAttributesSharedTableType`.
+* [Breaking] Changed `createCleanRoomAssetReview()` method for `workspaceClient.cleanRoomAssets()` service with new required argument order.
+* [Breaking] Changed `sendMessageFeedback()` method for `workspaceClient.genie()` service with new required argument order.
+* [Breaking] Removed `feedbackRating` and `feedbackText` fields for `com.databricks.sdk.service.dashboards.GenieSendMessageFeedbackRequest`.
+* [Breaking] Removed `disabled` field for `com.databricks.sdk.service.jobs.RunTask`.
+* [Breaking] Removed `defaultDataSecurityMode` and `effectiveDefaultDataSecurityMode` fields for `com.databricks.sdk.service.settingsv2.Setting`.
+* Added `listShares()` method for `workspaceClient.shares()` service.
+* Added `suggestedQuestions` field for `com.databricks.sdk.service.dashboards.GenieAttachment`.
+* Added `warehouseId` field for `com.databricks.sdk.service.dashboards.GenieSpace`.
+* Added `PALANTIR` enum value for `com.databricks.sdk.service.catalog.ConnectionType`.
+* Added `TABLE_METRIC_VIEW_DELTASHARING` and `TABLE_FOREIGN_PALANTIR` enum values for `com.databricks.sdk.service.catalog.SecurableKind`.
+* Added `NO_ACTIVATED_K8S_TESTING_TAG` enum value for `com.databricks.sdk.service.compute.TerminationReasonCode`.
+* Added `METRIC_VIEW` enum value for `com.databricks.sdk.service.sharing.TableInternalAttributesSharedTableType`.
+* [Breaking] Removed `followupQuestions` field for `com.databricks.sdk.service.dashboards.GenieAttachment`.
+* [Breaking] Removed `comment` field for `com.databricks.sdk.service.dashboards.GenieFeedback`.
+* [Breaking] Removed `comment` field for `com.databricks.sdk.service.dashboards.GenieSendMessageFeedbackRequest`.
\ No newline at end of file
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/AccountClient.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/AccountClient.java
index 68e1b7db7..5461ba07e 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/AccountClient.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/AccountClient.java
@@ -26,10 +26,16 @@
import com.databricks.sdk.service.iam.AccountAccessControlService;
import com.databricks.sdk.service.iam.AccountGroupsAPI;
import com.databricks.sdk.service.iam.AccountGroupsService;
+import com.databricks.sdk.service.iam.AccountGroupsV2API;
+import com.databricks.sdk.service.iam.AccountGroupsV2Service;
import com.databricks.sdk.service.iam.AccountServicePrincipalsAPI;
import com.databricks.sdk.service.iam.AccountServicePrincipalsService;
+import com.databricks.sdk.service.iam.AccountServicePrincipalsV2API;
+import com.databricks.sdk.service.iam.AccountServicePrincipalsV2Service;
import com.databricks.sdk.service.iam.AccountUsersAPI;
import com.databricks.sdk.service.iam.AccountUsersService;
+import com.databricks.sdk.service.iam.AccountUsersV2API;
+import com.databricks.sdk.service.iam.AccountUsersV2Service;
import com.databricks.sdk.service.iam.WorkspaceAssignmentAPI;
import com.databricks.sdk.service.iam.WorkspaceAssignmentService;
import com.databricks.sdk.service.iamv2.AccountIamV2API;
@@ -89,7 +95,7 @@ public class AccountClient {
private CustomAppIntegrationAPI customAppIntegrationAPI;
private EncryptionKeysAPI encryptionKeysAPI;
private AccountFederationPolicyAPI federationPolicyAPI;
- private AccountGroupsAPI groupsAPI;
+ private AccountGroupsV2API groupsV2API;
private AccountIamV2API iamV2API;
private AccountIpAccessListsAPI ipAccessListsAPI;
private LogDeliveryAPI logDeliveryAPI;
@@ -103,17 +109,20 @@ public class AccountClient {
private PublishedAppIntegrationAPI publishedAppIntegrationAPI;
private ServicePrincipalFederationPolicyAPI servicePrincipalFederationPolicyAPI;
private ServicePrincipalSecretsAPI servicePrincipalSecretsAPI;
- private AccountServicePrincipalsAPI servicePrincipalsAPI;
+ private AccountServicePrincipalsV2API servicePrincipalsV2API;
private AccountSettingsAPI settingsAPI;
private AccountSettingsV2API settingsV2API;
private StorageAPI storageAPI;
private AccountStorageCredentialsAPI storageCredentialsAPI;
private UsageDashboardsAPI usageDashboardsAPI;
- private AccountUsersAPI usersAPI;
+ private AccountUsersV2API usersV2API;
private VpcEndpointsAPI vpcEndpointsAPI;
private WorkspaceAssignmentAPI workspaceAssignmentAPI;
private WorkspaceNetworkConfigurationAPI workspaceNetworkConfigurationAPI;
private WorkspacesAPI workspacesAPI;
+ private AccountGroupsAPI groupsAPI;
+ private AccountServicePrincipalsAPI servicePrincipalsAPI;
+ private AccountUsersAPI usersAPI;
public AccountClient() {
this(ConfigLoader.getDefault());
@@ -131,7 +140,7 @@ public AccountClient(DatabricksConfig config) {
customAppIntegrationAPI = new CustomAppIntegrationAPI(apiClient);
encryptionKeysAPI = new EncryptionKeysAPI(apiClient);
federationPolicyAPI = new AccountFederationPolicyAPI(apiClient);
- groupsAPI = new AccountGroupsAPI(apiClient);
+ groupsV2API = new AccountGroupsV2API(apiClient);
iamV2API = new AccountIamV2API(apiClient);
ipAccessListsAPI = new AccountIpAccessListsAPI(apiClient);
logDeliveryAPI = new LogDeliveryAPI(apiClient);
@@ -145,17 +154,20 @@ public AccountClient(DatabricksConfig config) {
publishedAppIntegrationAPI = new PublishedAppIntegrationAPI(apiClient);
servicePrincipalFederationPolicyAPI = new ServicePrincipalFederationPolicyAPI(apiClient);
servicePrincipalSecretsAPI = new ServicePrincipalSecretsAPI(apiClient);
- servicePrincipalsAPI = new AccountServicePrincipalsAPI(apiClient);
+ servicePrincipalsV2API = new AccountServicePrincipalsV2API(apiClient);
settingsAPI = new AccountSettingsAPI(apiClient);
settingsV2API = new AccountSettingsV2API(apiClient);
storageAPI = new StorageAPI(apiClient);
storageCredentialsAPI = new AccountStorageCredentialsAPI(apiClient);
usageDashboardsAPI = new UsageDashboardsAPI(apiClient);
- usersAPI = new AccountUsersAPI(apiClient);
+ usersV2API = new AccountUsersV2API(apiClient);
vpcEndpointsAPI = new VpcEndpointsAPI(apiClient);
workspaceAssignmentAPI = new WorkspaceAssignmentAPI(apiClient);
workspaceNetworkConfigurationAPI = new WorkspaceNetworkConfigurationAPI(apiClient);
workspacesAPI = new WorkspacesAPI(apiClient);
+ groupsAPI = new AccountGroupsAPI(apiClient);
+ servicePrincipalsAPI = new AccountServicePrincipalsAPI(apiClient);
+ usersAPI = new AccountUsersAPI(apiClient);
}
/** Constructor for mocks */
@@ -291,8 +303,8 @@ public AccountFederationPolicyAPI federationPolicy() {
* assigned as members of groups, and members inherit permissions that are assigned to their
* group.
*/
- public AccountGroupsAPI groups() {
- return groupsAPI;
+ public AccountGroupsV2API groupsV2() {
+ return groupsV2API;
}
/**
@@ -540,8 +552,8 @@ public ServicePrincipalSecretsAPI servicePrincipalSecrets() {
* interactive users do not need any write, delete, or modify privileges in production. This
* eliminates the risk of a user overwriting production data by accident.
*/
- public AccountServicePrincipalsAPI servicePrincipals() {
- return servicePrincipalsAPI;
+ public AccountServicePrincipalsV2API servicePrincipalsV2() {
+ return servicePrincipalsV2API;
}
/** Accounts Settings API allows users to manage settings at the account level. */
@@ -590,8 +602,8 @@ public UsageDashboardsAPI usageDashboards() {
* user’s account will also be removed from Databricks account. This ensures a consistent
* offboarding process and prevents unauthorized users from accessing sensitive data.
*/
- public AccountUsersAPI users() {
- return usersAPI;
+ public AccountUsersV2API usersV2() {
+ return usersV2API;
}
/** These APIs manage VPC endpoint configurations for this account. */
@@ -632,6 +644,43 @@ public WorkspacesAPI workspaces() {
return workspacesAPI;
}
+ /**
+ * Groups simplify identity management, making it easier to assign access to Databricks account,
+ * data, and other securable objects.
+ *
+ *
It is best practice to assign access to workspaces and access-control policies in Unity
+ * Catalog to groups, instead of to users individually. All Databricks account identities can be
+ * assigned as members of groups, and members inherit permissions that are assigned to their
+ * group.
+ */
+ public AccountGroupsAPI groups() {
+ return groupsAPI;
+ }
+ /**
+ * Identities for use with jobs, automated tools, and systems such as scripts, apps, and CI/CD
+ * platforms. Databricks recommends creating service principals to run production jobs or modify
+ * production data. If all processes that act on production data run with service principals,
+ * interactive users do not need any write, delete, or modify privileges in production. This
+ * eliminates the risk of a user overwriting production data by accident.
+ */
+ public AccountServicePrincipalsAPI servicePrincipals() {
+ return servicePrincipalsAPI;
+ }
+ /**
+ * User identities recognized by Databricks and represented by email addresses.
+ *
+ *
Databricks recommends using SCIM provisioning to sync users and groups automatically from
+ * your identity provider to your Databricks account. SCIM streamlines onboarding a new employee
+ * or team by using your identity provider to create users and groups in Databricks account and
+ * give them the proper level of access. When a user leaves your organization or no longer needs
+ * access to Databricks account, admins can terminate the user in your identity provider and that
+ * user’s account will also be removed from Databricks account. This ensures a consistent
+ * offboarding process and prevents unauthorized users from accessing sensitive data.
+ */
+ public AccountUsersAPI users() {
+ return usersAPI;
+ }
+
/** Replace the default AccountAccessControlService with a custom implementation. */
public AccountClient withAccessControlImpl(AccountAccessControlService accountAccessControl) {
return this.withAccessControlAPI(new AccountAccessControlAPI(accountAccessControl));
@@ -722,14 +771,14 @@ public AccountClient withFederationPolicyAPI(AccountFederationPolicyAPI accountF
return this;
}
- /** Replace the default AccountGroupsService with a custom implementation. */
- public AccountClient withGroupsImpl(AccountGroupsService accountGroups) {
- return this.withGroupsAPI(new AccountGroupsAPI(accountGroups));
+ /** Replace the default AccountGroupsV2Service with a custom implementation. */
+ public AccountClient withGroupsV2Impl(AccountGroupsV2Service accountGroupsV2) {
+ return this.withGroupsV2API(new AccountGroupsV2API(accountGroupsV2));
}
- /** Replace the default AccountGroupsAPI with a custom implementation. */
- public AccountClient withGroupsAPI(AccountGroupsAPI accountGroups) {
- this.groupsAPI = accountGroups;
+ /** Replace the default AccountGroupsV2API with a custom implementation. */
+ public AccountClient withGroupsV2API(AccountGroupsV2API accountGroupsV2) {
+ this.groupsV2API = accountGroupsV2;
return this;
}
@@ -888,16 +937,17 @@ public AccountClient withServicePrincipalSecretsAPI(
return this;
}
- /** Replace the default AccountServicePrincipalsService with a custom implementation. */
- public AccountClient withServicePrincipalsImpl(
- AccountServicePrincipalsService accountServicePrincipals) {
- return this.withServicePrincipalsAPI(new AccountServicePrincipalsAPI(accountServicePrincipals));
+ /** Replace the default AccountServicePrincipalsV2Service with a custom implementation. */
+ public AccountClient withServicePrincipalsV2Impl(
+ AccountServicePrincipalsV2Service accountServicePrincipalsV2) {
+ return this.withServicePrincipalsV2API(
+ new AccountServicePrincipalsV2API(accountServicePrincipalsV2));
}
- /** Replace the default AccountServicePrincipalsAPI with a custom implementation. */
- public AccountClient withServicePrincipalsAPI(
- AccountServicePrincipalsAPI accountServicePrincipals) {
- this.servicePrincipalsAPI = accountServicePrincipals;
+ /** Replace the default AccountServicePrincipalsV2API with a custom implementation. */
+ public AccountClient withServicePrincipalsV2API(
+ AccountServicePrincipalsV2API accountServicePrincipalsV2) {
+ this.servicePrincipalsV2API = accountServicePrincipalsV2;
return this;
}
@@ -959,14 +1009,14 @@ public AccountClient withUsageDashboardsAPI(UsageDashboardsAPI usageDashboards)
return this;
}
- /** Replace the default AccountUsersService with a custom implementation. */
- public AccountClient withUsersImpl(AccountUsersService accountUsers) {
- return this.withUsersAPI(new AccountUsersAPI(accountUsers));
+ /** Replace the default AccountUsersV2Service with a custom implementation. */
+ public AccountClient withUsersV2Impl(AccountUsersV2Service accountUsersV2) {
+ return this.withUsersV2API(new AccountUsersV2API(accountUsersV2));
}
- /** Replace the default AccountUsersAPI with a custom implementation. */
- public AccountClient withUsersAPI(AccountUsersAPI accountUsers) {
- this.usersAPI = accountUsers;
+ /** Replace the default AccountUsersV2API with a custom implementation. */
+ public AccountClient withUsersV2API(AccountUsersV2API accountUsersV2) {
+ this.usersV2API = accountUsersV2;
return this;
}
@@ -1017,6 +1067,41 @@ public AccountClient withWorkspacesAPI(WorkspacesAPI workspaces) {
return this;
}
+ /** Replace the default AccountGroupsService with a custom implementation. */
+ public AccountClient withGroupsImpl(AccountGroupsService accountGroups) {
+ return this.withGroupsAPI(new AccountGroupsAPI(accountGroups));
+ }
+
+ /** Replace the default AccountGroupsAPI with a custom implementation. */
+ public AccountClient withGroupsAPI(AccountGroupsAPI accountGroups) {
+ this.groupsAPI = accountGroups;
+ return this;
+ }
+
+ /** Replace the default AccountServicePrincipalsService with a custom implementation. */
+ public AccountClient withServicePrincipalsImpl(
+ AccountServicePrincipalsService accountServicePrincipals) {
+ return this.withServicePrincipalsAPI(new AccountServicePrincipalsAPI(accountServicePrincipals));
+ }
+
+ /** Replace the default AccountServicePrincipalsAPI with a custom implementation. */
+ public AccountClient withServicePrincipalsAPI(
+ AccountServicePrincipalsAPI accountServicePrincipals) {
+ this.servicePrincipalsAPI = accountServicePrincipals;
+ return this;
+ }
+
+ /** Replace the default AccountUsersService with a custom implementation. */
+ public AccountClient withUsersImpl(AccountUsersService accountUsers) {
+ return this.withUsersAPI(new AccountUsersAPI(accountUsers));
+ }
+
+ /** Replace the default AccountUsersAPI with a custom implementation. */
+ public AccountClient withUsersAPI(AccountUsersAPI accountUsers) {
+ this.usersAPI = accountUsers;
+ return this;
+ }
+
public ApiClient apiClient() {
return apiClient;
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java
index e4c648522..bac85f5a9 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java
@@ -114,14 +114,20 @@
import com.databricks.sdk.service.iam.CurrentUserService;
import com.databricks.sdk.service.iam.GroupsAPI;
import com.databricks.sdk.service.iam.GroupsService;
+import com.databricks.sdk.service.iam.GroupsV2API;
+import com.databricks.sdk.service.iam.GroupsV2Service;
import com.databricks.sdk.service.iam.PermissionMigrationAPI;
import com.databricks.sdk.service.iam.PermissionMigrationService;
import com.databricks.sdk.service.iam.PermissionsAPI;
import com.databricks.sdk.service.iam.PermissionsService;
import com.databricks.sdk.service.iam.ServicePrincipalsAPI;
import com.databricks.sdk.service.iam.ServicePrincipalsService;
+import com.databricks.sdk.service.iam.ServicePrincipalsV2API;
+import com.databricks.sdk.service.iam.ServicePrincipalsV2Service;
import com.databricks.sdk.service.iam.UsersAPI;
import com.databricks.sdk.service.iam.UsersService;
+import com.databricks.sdk.service.iam.UsersV2API;
+import com.databricks.sdk.service.iam.UsersV2Service;
import com.databricks.sdk.service.iamv2.WorkspaceIamV2API;
import com.databricks.sdk.service.iamv2.WorkspaceIamV2Service;
import com.databricks.sdk.service.jobs.JobsAPI;
@@ -298,7 +304,7 @@ public class WorkspaceClient {
private GitCredentialsAPI gitCredentialsAPI;
private GlobalInitScriptsAPI globalInitScriptsAPI;
private GrantsAPI grantsAPI;
- private GroupsAPI groupsAPI;
+ private GroupsV2API groupsV2API;
private InstancePoolsAPI instancePoolsAPI;
private InstanceProfilesAPI instanceProfilesAPI;
private IpAccessListsAPI ipAccessListsAPI;
@@ -345,7 +351,7 @@ public class WorkspaceClient {
private SchemasAPI schemasAPI;
private SecretsExt secretsAPI;
private ServicePrincipalSecretsProxyAPI servicePrincipalSecretsProxyAPI;
- private ServicePrincipalsAPI servicePrincipalsAPI;
+ private ServicePrincipalsV2API servicePrincipalsV2API;
private ServingEndpointsAPI servingEndpointsAPI;
private ServingEndpointsDataPlaneAPI servingEndpointsDataPlaneAPI;
private SettingsAPI settingsAPI;
@@ -360,7 +366,7 @@ public class WorkspaceClient {
private TemporaryTableCredentialsAPI temporaryTableCredentialsAPI;
private TokenManagementAPI tokenManagementAPI;
private TokensAPI tokensAPI;
- private UsersAPI usersAPI;
+ private UsersV2API usersV2API;
private VectorSearchEndpointsAPI vectorSearchEndpointsAPI;
private VectorSearchIndexesAPI vectorSearchIndexesAPI;
private VolumesAPI volumesAPI;
@@ -370,6 +376,9 @@ public class WorkspaceClient {
private WorkspaceConfAPI workspaceConfAPI;
private WorkspaceIamV2API workspaceIamV2API;
private WorkspaceSettingsV2API workspaceSettingsV2API;
+ private GroupsAPI groupsAPI;
+ private ServicePrincipalsAPI servicePrincipalsAPI;
+ private UsersAPI usersAPI;
public WorkspaceClient() {
this(ConfigLoader.getDefault());
@@ -425,7 +434,7 @@ public WorkspaceClient(DatabricksConfig config) {
gitCredentialsAPI = new GitCredentialsAPI(apiClient);
globalInitScriptsAPI = new GlobalInitScriptsAPI(apiClient);
grantsAPI = new GrantsAPI(apiClient);
- groupsAPI = new GroupsAPI(apiClient);
+ groupsV2API = new GroupsV2API(apiClient);
instancePoolsAPI = new InstancePoolsAPI(apiClient);
instanceProfilesAPI = new InstanceProfilesAPI(apiClient);
ipAccessListsAPI = new IpAccessListsAPI(apiClient);
@@ -472,7 +481,7 @@ public WorkspaceClient(DatabricksConfig config) {
schemasAPI = new SchemasAPI(apiClient);
secretsAPI = new SecretsExt(apiClient);
servicePrincipalSecretsProxyAPI = new ServicePrincipalSecretsProxyAPI(apiClient);
- servicePrincipalsAPI = new ServicePrincipalsAPI(apiClient);
+ servicePrincipalsV2API = new ServicePrincipalsV2API(apiClient);
servingEndpointsAPI = new ServingEndpointsAPI(apiClient);
servingEndpointsDataPlaneAPI =
new ServingEndpointsDataPlaneAPI(apiClient, config, servingEndpointsAPI);
@@ -488,7 +497,7 @@ public WorkspaceClient(DatabricksConfig config) {
temporaryTableCredentialsAPI = new TemporaryTableCredentialsAPI(apiClient);
tokenManagementAPI = new TokenManagementAPI(apiClient);
tokensAPI = new TokensAPI(apiClient);
- usersAPI = new UsersAPI(apiClient);
+ usersV2API = new UsersV2API(apiClient);
vectorSearchEndpointsAPI = new VectorSearchEndpointsAPI(apiClient);
vectorSearchIndexesAPI = new VectorSearchIndexesAPI(apiClient);
volumesAPI = new VolumesAPI(apiClient);
@@ -498,6 +507,9 @@ public WorkspaceClient(DatabricksConfig config) {
workspaceConfAPI = new WorkspaceConfAPI(apiClient);
workspaceIamV2API = new WorkspaceIamV2API(apiClient);
workspaceSettingsV2API = new WorkspaceSettingsV2API(apiClient);
+ groupsAPI = new GroupsAPI(apiClient);
+ servicePrincipalsAPI = new ServicePrincipalsAPI(apiClient);
+ usersAPI = new UsersAPI(apiClient);
}
/** Constructor for mocks */
@@ -1025,8 +1037,8 @@ public GrantsAPI grants() {
* assigned as members of groups, and members inherit permissions that are assigned to their
* group.
*/
- public GroupsAPI groups() {
- return groupsAPI;
+ public GroupsV2API groupsV2() {
+ return groupsV2API;
}
/**
@@ -1645,8 +1657,8 @@ public ServicePrincipalSecretsProxyAPI servicePrincipalSecretsProxy() {
* interactive users do not need any write, delete, or modify privileges in production. This
* eliminates the risk of a user overwriting production data by accident.
*/
- public ServicePrincipalsAPI servicePrincipals() {
- return servicePrincipalsAPI;
+ public ServicePrincipalsV2API servicePrincipalsV2() {
+ return servicePrincipalsV2API;
}
/**
@@ -1927,8 +1939,8 @@ public TokensAPI tokens() {
* that user’s account will also be removed from Databricks workspace. This ensures a consistent
* offboarding process and prevents unauthorized users from accessing sensitive data.
*/
- public UsersAPI users() {
- return usersAPI;
+ public UsersV2API usersV2() {
+ return usersV2API;
}
/** **Endpoint**: Represents the compute resources to host vector search indexes. */
@@ -2024,6 +2036,45 @@ public WorkspaceSettingsV2API workspaceSettingsV2() {
return workspaceSettingsV2API;
}
+ /**
+ * Groups simplify identity management, making it easier to assign access to Databricks workspace,
+ * data, and other securable objects.
+ *
+ *
It is best practice to assign access to workspaces and access-control policies in Unity
+ * Catalog to groups, instead of to users individually. All Databricks workspace identities can be
+ * assigned as members of groups, and members inherit permissions that are assigned to their
+ * group.
+ */
+ public GroupsAPI groups() {
+ return groupsAPI;
+ }
+
+ /**
+ * Identities for use with jobs, automated tools, and systems such as scripts, apps, and CI/CD
+ * platforms. Databricks recommends creating service principals to run production jobs or modify
+ * production data. If all processes that act on production data run with service principals,
+ * interactive users do not need any write, delete, or modify privileges in production. This
+ * eliminates the risk of a user overwriting production data by accident.
+ */
+ public ServicePrincipalsAPI servicePrincipals() {
+ return servicePrincipalsAPI;
+ }
+
+ /**
+ * User identities recognized by Databricks and represented by email addresses.
+ *
+ *
Databricks recommends using SCIM provisioning to sync users and groups automatically from
+ * your identity provider to your Databricks workspace. SCIM streamlines onboarding a new employee
+ * or team by using your identity provider to create users and groups in Databricks workspace and
+ * give them the proper level of access. When a user leaves your organization or no longer needs
+ * access to Databricks workspace, admins can terminate the user in your identity provider and
+ * that user’s account will also be removed from Databricks workspace. This ensures a consistent
+ * offboarding process and prevents unauthorized users from accessing sensitive data.
+ */
+ public UsersAPI users() {
+ return usersAPI;
+ }
+
/** Replace the default AccessControlService with a custom implementation. */
public WorkspaceClient withAccessControlImpl(AccessControlService accessControl) {
return this.withAccessControlAPI(new AccessControlAPI(accessControl));
@@ -2557,14 +2608,14 @@ public WorkspaceClient withGrantsAPI(GrantsAPI grants) {
return this;
}
- /** Replace the default GroupsService with a custom implementation. */
- public WorkspaceClient withGroupsImpl(GroupsService groups) {
- return this.withGroupsAPI(new GroupsAPI(groups));
+ /** Replace the default GroupsV2Service with a custom implementation. */
+ public WorkspaceClient withGroupsV2Impl(GroupsV2Service groupsV2) {
+ return this.withGroupsV2API(new GroupsV2API(groupsV2));
}
- /** Replace the default GroupsAPI with a custom implementation. */
- public WorkspaceClient withGroupsAPI(GroupsAPI groups) {
- this.groupsAPI = groups;
+ /** Replace the default GroupsV2API with a custom implementation. */
+ public WorkspaceClient withGroupsV2API(GroupsV2API groupsV2) {
+ this.groupsV2API = groupsV2;
return this;
}
@@ -3107,14 +3158,15 @@ public WorkspaceClient withServicePrincipalSecretsProxyAPI(
return this;
}
- /** Replace the default ServicePrincipalsService with a custom implementation. */
- public WorkspaceClient withServicePrincipalsImpl(ServicePrincipalsService servicePrincipals) {
- return this.withServicePrincipalsAPI(new ServicePrincipalsAPI(servicePrincipals));
+ /** Replace the default ServicePrincipalsV2Service with a custom implementation. */
+ public WorkspaceClient withServicePrincipalsV2Impl(
+ ServicePrincipalsV2Service servicePrincipalsV2) {
+ return this.withServicePrincipalsV2API(new ServicePrincipalsV2API(servicePrincipalsV2));
}
- /** Replace the default ServicePrincipalsAPI with a custom implementation. */
- public WorkspaceClient withServicePrincipalsAPI(ServicePrincipalsAPI servicePrincipals) {
- this.servicePrincipalsAPI = servicePrincipals;
+ /** Replace the default ServicePrincipalsV2API with a custom implementation. */
+ public WorkspaceClient withServicePrincipalsV2API(ServicePrincipalsV2API servicePrincipalsV2) {
+ this.servicePrincipalsV2API = servicePrincipalsV2;
return this;
}
@@ -3281,14 +3333,14 @@ public WorkspaceClient withTokensAPI(TokensAPI tokens) {
return this;
}
- /** Replace the default UsersService with a custom implementation. */
- public WorkspaceClient withUsersImpl(UsersService users) {
- return this.withUsersAPI(new UsersAPI(users));
+ /** Replace the default UsersV2Service with a custom implementation. */
+ public WorkspaceClient withUsersV2Impl(UsersV2Service usersV2) {
+ return this.withUsersV2API(new UsersV2API(usersV2));
}
- /** Replace the default UsersAPI with a custom implementation. */
- public WorkspaceClient withUsersAPI(UsersAPI users) {
- this.usersAPI = users;
+ /** Replace the default UsersV2API with a custom implementation. */
+ public WorkspaceClient withUsersV2API(UsersV2API usersV2) {
+ this.usersV2API = usersV2;
return this;
}
@@ -3395,6 +3447,39 @@ public WorkspaceClient withWorkspaceSettingsV2API(WorkspaceSettingsV2API workspa
return this;
}
+ /** Replace the default GroupsService with a custom implementation. */
+ public WorkspaceClient withGroupsImpl(GroupsService groups) {
+ return this.withGroupsAPI(new GroupsAPI(groups));
+ }
+
+ /** Replace the default GroupsAPI with a custom implementation. */
+ public WorkspaceClient withGroupsAPI(GroupsAPI groups) {
+ this.groupsAPI = groups;
+ return this;
+ }
+
+ /** Replace the default ServicePrincipalsService with a custom implementation. */
+ public WorkspaceClient withServicePrincipalsImpl(ServicePrincipalsService servicePrincipals) {
+ return this.withServicePrincipalsAPI(new ServicePrincipalsAPI(servicePrincipals));
+ }
+
+ /** Replace the default ServicePrincipalsAPI with a custom implementation. */
+ public WorkspaceClient withServicePrincipalsAPI(ServicePrincipalsAPI servicePrincipals) {
+ this.servicePrincipalsAPI = servicePrincipals;
+ return this;
+ }
+
+ /** Replace the default UsersService with a custom implementation. */
+ public WorkspaceClient withUsersImpl(UsersService users) {
+ return this.withUsersAPI(new UsersAPI(users));
+ }
+
+ /** Replace the default UsersAPI with a custom implementation. */
+ public WorkspaceClient withUsersAPI(UsersAPI users) {
+ this.usersAPI = users;
+ return this;
+ }
+
public ApiClient apiClient() {
return apiClient;
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ConnectionType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ConnectionType.java
index 911dd4f38..3d660a890 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ConnectionType.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ConnectionType.java
@@ -4,7 +4,7 @@
import com.databricks.sdk.support.Generated;
-/** Next Id: 37 */
+/** Next Id: 38 */
@Generated
public enum ConnectionType {
BIGQUERY,
@@ -15,6 +15,7 @@ public enum ConnectionType {
HTTP,
MYSQL,
ORACLE,
+ PALANTIR,
POSTGRESQL,
POWER_BI,
REDSHIFT,
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/EffectivePredictiveOptimizationFlagInheritedFromType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/EffectivePredictiveOptimizationFlagInheritedFromType.java
index b0bff3fd6..cbd803b94 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/EffectivePredictiveOptimizationFlagInheritedFromType.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/EffectivePredictiveOptimizationFlagInheritedFromType.java
@@ -4,10 +4,6 @@
import com.databricks.sdk.support.Generated;
-/**
- * The type of the object from which the flag was inherited. If there was no inheritance, this field
- * is left blank.
- */
@Generated
public enum EffectivePredictiveOptimizationFlagInheritedFromType {
CATALOG,
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableKind.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableKind.java
index 31d92fe77..fd09c0225 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableKind.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableKind.java
@@ -4,6 +4,7 @@
import com.databricks.sdk.support.Generated;
+/** Latest kind: CONNECTION_PALANTIR_OAUTH_M2M = 263; Next id:264 */
@Generated
public enum SecurableKind {
TABLE_DB_STORAGE,
@@ -40,6 +41,7 @@ public enum SecurableKind {
TABLE_FOREIGN_MYSQL,
TABLE_FOREIGN_NETSUITE,
TABLE_FOREIGN_ORACLE,
+ TABLE_FOREIGN_PALANTIR,
TABLE_FOREIGN_POSTGRESQL,
TABLE_FOREIGN_REDSHIFT,
TABLE_FOREIGN_SALESFORCE,
@@ -57,6 +59,7 @@ public enum SecurableKind {
TABLE_MATERIALIZED_VIEW,
TABLE_MATERIALIZED_VIEW_DELTASHARING,
TABLE_METRIC_VIEW,
+ TABLE_METRIC_VIEW_DELTASHARING,
TABLE_ONLINE_VECTOR_INDEX_DIRECT,
TABLE_ONLINE_VECTOR_INDEX_REPLICA,
TABLE_ONLINE_VIEW,
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/compute/TerminationReasonCode.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/compute/TerminationReasonCode.java
index 7d2392552..18917be99 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/compute/TerminationReasonCode.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/compute/TerminationReasonCode.java
@@ -138,6 +138,7 @@ public enum TerminationReasonCode {
NETWORK_CONFIGURATION_FAILURE,
NFS_MOUNT_FAILURE,
NO_ACTIVATED_K8S,
+ NO_ACTIVATED_K8S_TESTING_TAG,
NO_MATCHED_K8S,
NO_MATCHED_K8S_TESTING_TAG,
NPIP_TUNNEL_SETUP_FAILURE,
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieAttachment.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieAttachment.java
index a29ac8b85..0b63fae87 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieAttachment.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieAttachment.java
@@ -14,14 +14,14 @@ public class GenieAttachment {
@JsonProperty("attachment_id")
private String attachmentId;
- /** Follow-up questions suggested by Genie */
- @JsonProperty("followup_questions")
- private GenieFollowupQuestionsAttachment followupQuestions;
-
/** Query Attachment if Genie responds with a SQL query */
@JsonProperty("query")
private GenieQueryAttachment query;
+ /** Follow-up questions suggested by Genie */
+ @JsonProperty("suggested_questions")
+ private GenieSuggestedQuestionsAttachment suggestedQuestions;
+
/** Text Attachment if Genie responds with text */
@JsonProperty("text")
private TextAttachment text;
@@ -35,22 +35,23 @@ public String getAttachmentId() {
return attachmentId;
}
- public GenieAttachment setFollowupQuestions(GenieFollowupQuestionsAttachment followupQuestions) {
- this.followupQuestions = followupQuestions;
+ public GenieAttachment setQuery(GenieQueryAttachment query) {
+ this.query = query;
return this;
}
- public GenieFollowupQuestionsAttachment getFollowupQuestions() {
- return followupQuestions;
+ public GenieQueryAttachment getQuery() {
+ return query;
}
- public GenieAttachment setQuery(GenieQueryAttachment query) {
- this.query = query;
+ public GenieAttachment setSuggestedQuestions(
+ GenieSuggestedQuestionsAttachment suggestedQuestions) {
+ this.suggestedQuestions = suggestedQuestions;
return this;
}
- public GenieQueryAttachment getQuery() {
- return query;
+ public GenieSuggestedQuestionsAttachment getSuggestedQuestions() {
+ return suggestedQuestions;
}
public GenieAttachment setText(TextAttachment text) {
@@ -68,22 +69,22 @@ public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
GenieAttachment that = (GenieAttachment) o;
return Objects.equals(attachmentId, that.attachmentId)
- && Objects.equals(followupQuestions, that.followupQuestions)
&& Objects.equals(query, that.query)
+ && Objects.equals(suggestedQuestions, that.suggestedQuestions)
&& Objects.equals(text, that.text);
}
@Override
public int hashCode() {
- return Objects.hash(attachmentId, followupQuestions, query, text);
+ return Objects.hash(attachmentId, query, suggestedQuestions, text);
}
@Override
public String toString() {
return new ToStringer(GenieAttachment.class)
.add("attachmentId", attachmentId)
- .add("followupQuestions", followupQuestions)
.add("query", query)
+ .add("suggestedQuestions", suggestedQuestions)
.add("text", text)
.toString();
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieFeedback.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieFeedback.java
index 86339a735..92d35fc98 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieFeedback.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieFeedback.java
@@ -10,23 +10,10 @@
/** Feedback containing rating and optional comment */
@Generated
public class GenieFeedback {
- /** Optional feedback comment text */
- @JsonProperty("comment")
- private String comment;
-
/** The feedback rating */
@JsonProperty("rating")
private GenieFeedbackRating rating;
- public GenieFeedback setComment(String comment) {
- this.comment = comment;
- return this;
- }
-
- public String getComment() {
- return comment;
- }
-
public GenieFeedback setRating(GenieFeedbackRating rating) {
this.rating = rating;
return this;
@@ -41,19 +28,16 @@ public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GenieFeedback that = (GenieFeedback) o;
- return Objects.equals(comment, that.comment) && Objects.equals(rating, that.rating);
+ return Objects.equals(rating, that.rating);
}
@Override
public int hashCode() {
- return Objects.hash(comment, rating);
+ return Objects.hash(rating);
}
@Override
public String toString() {
- return new ToStringer(GenieFeedback.class)
- .add("comment", comment)
- .add("rating", rating)
- .toString();
+ return new ToStringer(GenieFeedback.class).add("rating", rating).toString();
}
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSendMessageFeedbackRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSendMessageFeedbackRequest.java
index 656cfabbf..2ddc8b835 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSendMessageFeedbackRequest.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSendMessageFeedbackRequest.java
@@ -10,10 +10,6 @@
@Generated
public class GenieSendMessageFeedbackRequest {
- /** Optional text feedback that will be stored as a comment. */
- @JsonProperty("comment")
- private String comment;
-
/** The ID associated with the conversation. */
@JsonIgnore private String conversationId;
@@ -27,15 +23,6 @@ public class GenieSendMessageFeedbackRequest {
/** The ID associated with the Genie space where the message is located. */
@JsonIgnore private String spaceId;
- public GenieSendMessageFeedbackRequest setComment(String comment) {
- this.comment = comment;
- return this;
- }
-
- public String getComment() {
- return comment;
- }
-
public GenieSendMessageFeedbackRequest setConversationId(String conversationId) {
this.conversationId = conversationId;
return this;
@@ -77,8 +64,7 @@ public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GenieSendMessageFeedbackRequest that = (GenieSendMessageFeedbackRequest) o;
- return Objects.equals(comment, that.comment)
- && Objects.equals(conversationId, that.conversationId)
+ return Objects.equals(conversationId, that.conversationId)
&& Objects.equals(messageId, that.messageId)
&& Objects.equals(rating, that.rating)
&& Objects.equals(spaceId, that.spaceId);
@@ -86,13 +72,12 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return Objects.hash(comment, conversationId, messageId, rating, spaceId);
+ return Objects.hash(conversationId, messageId, rating, spaceId);
}
@Override
public String toString() {
return new ToStringer(GenieSendMessageFeedbackRequest.class)
- .add("comment", comment)
.add("conversationId", conversationId)
.add("messageId", messageId)
.add("rating", rating)
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSpace.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSpace.java
index 4ac20ce24..73caf1963 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSpace.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSpace.java
@@ -21,6 +21,10 @@ public class GenieSpace {
@JsonProperty("title")
private String title;
+ /** Warehouse associated with the Genie Space */
+ @JsonProperty("warehouse_id")
+ private String warehouseId;
+
public GenieSpace setDescription(String description) {
this.description = description;
return this;
@@ -48,6 +52,15 @@ public String getTitle() {
return title;
}
+ public GenieSpace setWarehouseId(String warehouseId) {
+ this.warehouseId = warehouseId;
+ return this;
+ }
+
+ public String getWarehouseId() {
+ return warehouseId;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -55,12 +68,13 @@ public boolean equals(Object o) {
GenieSpace that = (GenieSpace) o;
return Objects.equals(description, that.description)
&& Objects.equals(spaceId, that.spaceId)
- && Objects.equals(title, that.title);
+ && Objects.equals(title, that.title)
+ && Objects.equals(warehouseId, that.warehouseId);
}
@Override
public int hashCode() {
- return Objects.hash(description, spaceId, title);
+ return Objects.hash(description, spaceId, title, warehouseId);
}
@Override
@@ -69,6 +83,7 @@ public String toString() {
.add("description", description)
.add("spaceId", spaceId)
.add("title", title)
+ .add("warehouseId", warehouseId)
.toString();
}
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieFollowupQuestionsAttachment.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSuggestedQuestionsAttachment.java
similarity index 77%
rename from databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieFollowupQuestionsAttachment.java
rename to databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSuggestedQuestionsAttachment.java
index 21c3e5372..12fa1e819 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieFollowupQuestionsAttachment.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/GenieSuggestedQuestionsAttachment.java
@@ -10,12 +10,12 @@
/** Follow-up questions suggested by Genie */
@Generated
-public class GenieFollowupQuestionsAttachment {
+public class GenieSuggestedQuestionsAttachment {
/** The suggested follow-up questions */
@JsonProperty("questions")
private Collection questions;
- public GenieFollowupQuestionsAttachment setQuestions(Collection questions) {
+ public GenieSuggestedQuestionsAttachment setQuestions(Collection questions) {
this.questions = questions;
return this;
}
@@ -28,7 +28,7 @@ public Collection getQuestions() {
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
- GenieFollowupQuestionsAttachment that = (GenieFollowupQuestionsAttachment) o;
+ GenieSuggestedQuestionsAttachment that = (GenieSuggestedQuestionsAttachment) o;
return Objects.equals(questions, that.questions);
}
@@ -39,7 +39,7 @@ public int hashCode() {
@Override
public String toString() {
- return new ToStringer(GenieFollowupQuestionsAttachment.class)
+ return new ToStringer(GenieSuggestedQuestionsAttachment.class)
.add("questions", questions)
.toString();
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/MessageErrorType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/MessageErrorType.java
index ffa89afcd..8b6b10fc7 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/MessageErrorType.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/MessageErrorType.java
@@ -28,6 +28,7 @@ public enum MessageErrorType {
GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION,
GENERIC_SQL_EXEC_API_CALL_EXCEPTION,
ILLEGAL_PARAMETER_DEFINITION_EXCEPTION,
+ INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION,
INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION,
INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION,
INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION,
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseInstance.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseInstance.java
index b3173237e..077608170 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseInstance.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseInstance.java
@@ -33,23 +33,11 @@ public class DatabaseInstance {
@JsonProperty("effective_capacity")
private String effectiveCapacity;
- /**
- * xref AIP-129. `enable_pg_native_login` is owned by the client, while
- * `effective_enable_pg_native_login` is owned by the server. `enable_pg_native_login` will only
- * be set in Create/Update response messages if and only if the user provides the field via the
- * request. `effective_enable_pg_native_login` on the other hand will always bet set in all
- * response messages (Create/Update/Get/List).
- */
+ /** Whether the instance has PG native password login enabled. */
@JsonProperty("effective_enable_pg_native_login")
private Boolean effectiveEnablePgNativeLogin;
- /**
- * xref AIP-129. `enable_readable_secondaries` is owned by the client, while
- * `effective_enable_readable_secondaries` is owned by the server. `enable_readable_secondaries`
- * will only be set in Create/Update response messages if and only if the user provides the field
- * via the request. `effective_enable_readable_secondaries` on the other hand will always bet set
- * in all response messages (Create/Update/Get/List).
- */
+ /** Whether secondaries serving read-only traffic are enabled. Defaults to false. */
@JsonProperty("effective_enable_readable_secondaries")
private Boolean effectiveEnableReadableSecondaries;
@@ -61,11 +49,8 @@ public class DatabaseInstance {
private Long effectiveNodeCount;
/**
- * xref AIP-129. `retention_window_in_days` is owned by the client, while
- * `effective_retention_window_in_days` is owned by the server. `retention_window_in_days` will
- * only be set in Create/Update response messages if and only if the user provides the field via
- * the request. `effective_retention_window_in_days` on the other hand will always bet set in all
- * response messages (Create/Update/Get/List).
+ * The retention window for the instance. This is the time window in days for which the historical
+ * data is retained.
*/
@JsonProperty("effective_retention_window_in_days")
private Long effectiveRetentionWindowInDays;
@@ -74,7 +59,7 @@ public class DatabaseInstance {
@JsonProperty("effective_stopped")
private Boolean effectiveStopped;
- /** Whether the instance has PG native password login enabled. Defaults to false. */
+ /** Whether to enable PG native password login on the instance. Defaults to false. */
@JsonProperty("enable_pg_native_login")
private Boolean enablePgNativeLogin;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseInstanceRef.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseInstanceRef.java
index a2faf3cc4..89cff10b9 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseInstanceRef.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseInstanceRef.java
@@ -28,12 +28,9 @@ public class DatabaseInstanceRef {
private String branchTime;
/**
- * xref AIP-129. `lsn` is owned by the client, while `effective_lsn` is owned by the server. `lsn`
- * will only be set in Create/Update response messages if and only if the user provides the field
- * via the request. `effective_lsn` on the other hand will always bet set in all response messages
- * (Create/Update/Get/List). For a parent ref instance, this is the LSN on the parent instance
- * from which the instance was created. For a child ref instance, this is the LSN on the instance
- * from which the child instance was created.
+ * For a parent ref instance, this is the LSN on the parent instance from which the instance was
+ * created. For a child ref instance, this is the LSN on the instance from which the child
+ * instance was created.
*/
@JsonProperty("effective_lsn")
private String effectiveLsn;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroup.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroup.java
new file mode 100755
index 000000000..81b026221
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroup.java
@@ -0,0 +1,135 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class AccountGroup {
+ /** Databricks account ID */
+ @JsonProperty("account_id")
+ private String accountId;
+
+ /** String that represents a human-readable group name */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** external_id should be unique for identifying groups */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** Databricks group ID */
+ @JsonProperty("id")
+ private String id;
+
+ /** */
+ @JsonProperty("members")
+ private Collection members;
+
+ /** Container for the group identifier. Workspace local versus account. */
+ @JsonProperty("meta")
+ private ResourceMeta meta;
+
+ /** Indicates if the group has the admin role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ public AccountGroup setAccountId(String accountId) {
+ this.accountId = accountId;
+ return this;
+ }
+
+ public String getAccountId() {
+ return accountId;
+ }
+
+ public AccountGroup setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public AccountGroup setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public AccountGroup setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public AccountGroup setMembers(Collection members) {
+ this.members = members;
+ return this;
+ }
+
+ public Collection getMembers() {
+ return members;
+ }
+
+ public AccountGroup setMeta(ResourceMeta meta) {
+ this.meta = meta;
+ return this;
+ }
+
+ public ResourceMeta getMeta() {
+ return meta;
+ }
+
+ public AccountGroup setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ AccountGroup that = (AccountGroup) o;
+ return Objects.equals(accountId, that.accountId)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(id, that.id)
+ && Objects.equals(members, that.members)
+ && Objects.equals(meta, that.meta)
+ && Objects.equals(roles, that.roles);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(accountId, displayName, externalId, id, members, meta, roles);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(AccountGroup.class)
+ .add("accountId", accountId)
+ .add("displayName", displayName)
+ .add("externalId", externalId)
+ .add("id", id)
+ .add("members", members)
+ .add("meta", meta)
+ .add("roles", roles)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2API.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2API.java
new file mode 100755
index 000000000..919600f29
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2API.java
@@ -0,0 +1,96 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.Paginator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Groups simplify identity management, making it easier to assign access to Databricks account,
+ * data, and other securable objects.
+ *
+ * It is best practice to assign access to workspaces and access-control policies in Unity
+ * Catalog to groups, instead of to users individually. All Databricks account identities can be
+ * assigned as members of groups, and members inherit permissions that are assigned to their group.
+ */
+@Generated
+public class AccountGroupsV2API {
+ private static final Logger LOG = LoggerFactory.getLogger(AccountGroupsV2API.class);
+
+ private final AccountGroupsV2Service impl;
+
+ /** Regular-use constructor */
+ public AccountGroupsV2API(ApiClient apiClient) {
+ impl = new AccountGroupsV2Impl(apiClient);
+ }
+
+ /** Constructor for mocks */
+ public AccountGroupsV2API(AccountGroupsV2Service mock) {
+ impl = mock;
+ }
+
+ /**
+ * Creates a group in the Databricks account with a unique name, using the supplied group details.
+ */
+ public AccountGroup create(CreateAccountGroupRequest request) {
+ return impl.create(request);
+ }
+
+ public void delete(String id) {
+ delete(new DeleteAccountGroupRequest().setId(id));
+ }
+
+ /** Deletes a group from the Databricks account. */
+ public void delete(DeleteAccountGroupRequest request) {
+ impl.delete(request);
+ }
+
+ public AccountGroup get(String id) {
+ return get(new GetAccountGroupRequest().setId(id));
+ }
+
+ /** Gets the information for a specific group in the Databricks account. */
+ public AccountGroup get(GetAccountGroupRequest request) {
+ return impl.get(request);
+ }
+
+ /**
+ * Gets all details of the groups associated with the Databricks account. As of 08/22/2025, this
+ * endpoint will not return members. Instead, members should be retrieved by iterating through
+ * `Get group details`.
+ */
+ public Iterable list(ListAccountGroupsRequest request) {
+ request.setStartIndex(1L);
+ if (request.getCount() == null) {
+ request.setCount(10000L);
+ }
+ return new Paginator<>(
+ request,
+ impl::list,
+ ListAccountGroupsResponse::getResources,
+ response -> {
+ Long offset = request.getStartIndex();
+ if (offset == null) {
+ offset = 0L;
+ }
+ offset += response.getResources().size();
+ return request.setStartIndex(offset);
+ });
+ }
+
+ /** Partially updates the details of a group. */
+ public void patch(PatchAccountGroupRequest request) {
+ impl.patch(request);
+ }
+
+ /** Updates the details of a group by replacing the entire group entity. */
+ public void update(UpdateAccountGroupRequest request) {
+ impl.update(request);
+ }
+
+ public AccountGroupsV2Service impl() {
+ return impl;
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2Impl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2Impl.java
new file mode 100755
index 000000000..03c901bef
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2Impl.java
@@ -0,0 +1,111 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.core.DatabricksException;
+import com.databricks.sdk.core.http.Request;
+import com.databricks.sdk.support.Generated;
+import java.io.IOException;
+
+/** Package-local implementation of AccountGroupsV2 */
+@Generated
+class AccountGroupsV2Impl implements AccountGroupsV2Service {
+ private final ApiClient apiClient;
+
+ public AccountGroupsV2Impl(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ @Override
+ public AccountGroup create(CreateAccountGroupRequest request) {
+ String path =
+ String.format("/api/2.0/accounts/%s/scim/v2/Groups", apiClient.configuredAccountID());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ return apiClient.execute(req, AccountGroup.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void delete(DeleteAccountGroupRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/Groups/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("DELETE", path);
+ ApiClient.setQuery(req, request);
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public AccountGroup get(GetAccountGroupRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/Groups/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, AccountGroup.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListAccountGroupsResponse list(ListAccountGroupsRequest request) {
+ String path =
+ String.format("/api/2.0/accounts/%s/scim/v2/Groups", apiClient.configuredAccountID());
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, ListAccountGroupsResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void patch(PatchAccountGroupRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/Groups/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("PATCH", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void update(UpdateAccountGroupRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/Groups/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("PUT", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2Service.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2Service.java
new file mode 100755
index 000000000..b11eb8bce
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountGroupsV2Service.java
@@ -0,0 +1,43 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+
+/**
+ * Groups simplify identity management, making it easier to assign access to Databricks account,
+ * data, and other securable objects.
+ *
+ * It is best practice to assign access to workspaces and access-control policies in Unity
+ * Catalog to groups, instead of to users individually. All Databricks account identities can be
+ * assigned as members of groups, and members inherit permissions that are assigned to their group.
+ *
+ *
This is the high-level interface, that contains generated methods.
+ *
+ *
Evolving: this interface is under development. Method signatures may change.
+ */
+@Generated
+public interface AccountGroupsV2Service {
+ /**
+ * Creates a group in the Databricks account with a unique name, using the supplied group details.
+ */
+ AccountGroup create(CreateAccountGroupRequest createAccountGroupRequest);
+
+ /** Deletes a group from the Databricks account. */
+ void delete(DeleteAccountGroupRequest deleteAccountGroupRequest);
+
+ /** Gets the information for a specific group in the Databricks account. */
+ AccountGroup get(GetAccountGroupRequest getAccountGroupRequest);
+
+ /**
+ * Gets all details of the groups associated with the Databricks account. As of 08/22/2025, this
+ * endpoint will not return members. Instead, members should be retrieved by iterating through
+ * `Get group details`.
+ */
+ ListAccountGroupsResponse list(ListAccountGroupsRequest listAccountGroupsRequest);
+
+ /** Partially updates the details of a group. */
+ void patch(PatchAccountGroupRequest patchAccountGroupRequest);
+
+ /** Updates the details of a group by replacing the entire group entity. */
+ void update(UpdateAccountGroupRequest updateAccountGroupRequest);
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipal.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipal.java
new file mode 100755
index 000000000..a1b2acbf5
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipal.java
@@ -0,0 +1,135 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class AccountServicePrincipal {
+ /** Databricks account ID */
+ @JsonProperty("account_id")
+ private String accountId;
+
+ /** If this user is active */
+ @JsonProperty("active")
+ private Boolean active;
+
+ /** UUID relating to the service principal */
+ @JsonProperty("applicationId")
+ private String applicationId;
+
+ /** String that represents a concatenation of given and family names. */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** Databricks service principal ID. */
+ @JsonProperty("id")
+ private String id;
+
+ /** Indicates if the group has the admin role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ public AccountServicePrincipal setAccountId(String accountId) {
+ this.accountId = accountId;
+ return this;
+ }
+
+ public String getAccountId() {
+ return accountId;
+ }
+
+ public AccountServicePrincipal setActive(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public Boolean getActive() {
+ return active;
+ }
+
+ public AccountServicePrincipal setApplicationId(String applicationId) {
+ this.applicationId = applicationId;
+ return this;
+ }
+
+ public String getApplicationId() {
+ return applicationId;
+ }
+
+ public AccountServicePrincipal setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public AccountServicePrincipal setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public AccountServicePrincipal setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public AccountServicePrincipal setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ AccountServicePrincipal that = (AccountServicePrincipal) o;
+ return Objects.equals(accountId, that.accountId)
+ && Objects.equals(active, that.active)
+ && Objects.equals(applicationId, that.applicationId)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(id, that.id)
+ && Objects.equals(roles, that.roles);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(accountId, active, applicationId, displayName, externalId, id, roles);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(AccountServicePrincipal.class)
+ .add("accountId", accountId)
+ .add("active", active)
+ .add("applicationId", applicationId)
+ .add("displayName", displayName)
+ .add("externalId", externalId)
+ .add("id", id)
+ .add("roles", roles)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2API.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2API.java
new file mode 100755
index 000000000..43c0da6ef
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2API.java
@@ -0,0 +1,93 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.Paginator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Identities for use with jobs, automated tools, and systems such as scripts, apps, and CI/CD
+ * platforms. Databricks recommends creating service principals to run production jobs or modify
+ * production data. If all processes that act on production data run with service principals,
+ * interactive users do not need any write, delete, or modify privileges in production. This
+ * eliminates the risk of a user overwriting production data by accident.
+ */
+@Generated
+public class AccountServicePrincipalsV2API {
+ private static final Logger LOG = LoggerFactory.getLogger(AccountServicePrincipalsV2API.class);
+
+ private final AccountServicePrincipalsV2Service impl;
+
+ /** Regular-use constructor */
+ public AccountServicePrincipalsV2API(ApiClient apiClient) {
+ impl = new AccountServicePrincipalsV2Impl(apiClient);
+ }
+
+ /** Constructor for mocks */
+ public AccountServicePrincipalsV2API(AccountServicePrincipalsV2Service mock) {
+ impl = mock;
+ }
+
+ /** Creates a new service principal in the Databricks account. */
+ public AccountServicePrincipal create(CreateAccountServicePrincipalRequest request) {
+ return impl.create(request);
+ }
+
+ public void delete(String id) {
+ delete(new DeleteAccountServicePrincipalRequest().setId(id));
+ }
+
+ /** Delete a single service principal in the Databricks account. */
+ public void delete(DeleteAccountServicePrincipalRequest request) {
+ impl.delete(request);
+ }
+
+ public AccountServicePrincipal get(String id) {
+ return get(new GetAccountServicePrincipalRequest().setId(id));
+ }
+
+ /** Gets the details for a single service principal define in the Databricks account. */
+ public AccountServicePrincipal get(GetAccountServicePrincipalRequest request) {
+ return impl.get(request);
+ }
+
+ /** Gets the set of service principals associated with a Databricks account. */
+ public Iterable list(ListAccountServicePrincipalsRequest request) {
+ request.setStartIndex(1L);
+ if (request.getCount() == null) {
+ request.setCount(10000L);
+ }
+ return new Paginator<>(
+ request,
+ impl::list,
+ ListAccountServicePrincipalsResponse::getResources,
+ response -> {
+ Long offset = request.getStartIndex();
+ if (offset == null) {
+ offset = 0L;
+ }
+ offset += response.getResources().size();
+ return request.setStartIndex(offset);
+ });
+ }
+
+ /** Partially updates the details of a single service principal in the Databricks account. */
+ public void patch(PatchAccountServicePrincipalRequest request) {
+ impl.patch(request);
+ }
+
+ /**
+ * Updates the details of a single service principal.
+ *
+ * This action replaces the existing service principal with the same name.
+ */
+ public void update(UpdateAccountServicePrincipalRequest request) {
+ impl.update(request);
+ }
+
+ public AccountServicePrincipalsV2Service impl() {
+ return impl;
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2Impl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2Impl.java
new file mode 100755
index 000000000..20cd8baaa
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2Impl.java
@@ -0,0 +1,114 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.core.DatabricksException;
+import com.databricks.sdk.core.http.Request;
+import com.databricks.sdk.support.Generated;
+import java.io.IOException;
+
+/** Package-local implementation of AccountServicePrincipalsV2 */
+@Generated
+class AccountServicePrincipalsV2Impl implements AccountServicePrincipalsV2Service {
+ private final ApiClient apiClient;
+
+ public AccountServicePrincipalsV2Impl(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ @Override
+ public AccountServicePrincipal create(CreateAccountServicePrincipalRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/ServicePrincipals", apiClient.configuredAccountID());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ return apiClient.execute(req, AccountServicePrincipal.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void delete(DeleteAccountServicePrincipalRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/ServicePrincipals/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("DELETE", path);
+ ApiClient.setQuery(req, request);
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public AccountServicePrincipal get(GetAccountServicePrincipalRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/ServicePrincipals/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, AccountServicePrincipal.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListAccountServicePrincipalsResponse list(ListAccountServicePrincipalsRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/ServicePrincipals", apiClient.configuredAccountID());
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, ListAccountServicePrincipalsResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void patch(PatchAccountServicePrincipalRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/ServicePrincipals/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("PATCH", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void update(UpdateAccountServicePrincipalRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/ServicePrincipals/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("PUT", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2Service.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2Service.java
new file mode 100755
index 000000000..f5ed7835f
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountServicePrincipalsV2Service.java
@@ -0,0 +1,42 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+
+/**
+ * Identities for use with jobs, automated tools, and systems such as scripts, apps, and CI/CD
+ * platforms. Databricks recommends creating service principals to run production jobs or modify
+ * production data. If all processes that act on production data run with service principals,
+ * interactive users do not need any write, delete, or modify privileges in production. This
+ * eliminates the risk of a user overwriting production data by accident.
+ *
+ *
This is the high-level interface, that contains generated methods.
+ *
+ *
Evolving: this interface is under development. Method signatures may change.
+ */
+@Generated
+public interface AccountServicePrincipalsV2Service {
+ /** Creates a new service principal in the Databricks account. */
+ AccountServicePrincipal create(
+ CreateAccountServicePrincipalRequest createAccountServicePrincipalRequest);
+
+ /** Delete a single service principal in the Databricks account. */
+ void delete(DeleteAccountServicePrincipalRequest deleteAccountServicePrincipalRequest);
+
+ /** Gets the details for a single service principal define in the Databricks account. */
+ AccountServicePrincipal get(GetAccountServicePrincipalRequest getAccountServicePrincipalRequest);
+
+ /** Gets the set of service principals associated with a Databricks account. */
+ ListAccountServicePrincipalsResponse list(
+ ListAccountServicePrincipalsRequest listAccountServicePrincipalsRequest);
+
+ /** Partially updates the details of a single service principal in the Databricks account. */
+ void patch(PatchAccountServicePrincipalRequest patchAccountServicePrincipalRequest);
+
+ /**
+ * Updates the details of a single service principal.
+ *
+ *
This action replaces the existing service principal with the same name.
+ */
+ void update(UpdateAccountServicePrincipalRequest updateAccountServicePrincipalRequest);
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUser.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUser.java
new file mode 100755
index 000000000..ad65d71af
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUser.java
@@ -0,0 +1,166 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class AccountUser {
+ /** Databricks account ID */
+ @JsonProperty("account_id")
+ private String accountId;
+
+ /** If this user is active */
+ @JsonProperty("active")
+ private Boolean active;
+
+ /** String that represents a concatenation of given and family names. For example `John Smith`. */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** All the emails associated with the Databricks user. */
+ @JsonProperty("emails")
+ private Collection emails;
+
+ /** External ID is not currently supported. It is reserved for future use. */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** Databricks user ID. */
+ @JsonProperty("id")
+ private String id;
+
+ /** */
+ @JsonProperty("name")
+ private Name name;
+
+ /** Indicates if the group has the admin role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ /** Email address of the Databricks user. */
+ @JsonProperty("userName")
+ private String userName;
+
+ public AccountUser setAccountId(String accountId) {
+ this.accountId = accountId;
+ return this;
+ }
+
+ public String getAccountId() {
+ return accountId;
+ }
+
+ public AccountUser setActive(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public Boolean getActive() {
+ return active;
+ }
+
+ public AccountUser setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public AccountUser setEmails(Collection emails) {
+ this.emails = emails;
+ return this;
+ }
+
+ public Collection getEmails() {
+ return emails;
+ }
+
+ public AccountUser setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public AccountUser setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public AccountUser setName(Name name) {
+ this.name = name;
+ return this;
+ }
+
+ public Name getName() {
+ return name;
+ }
+
+ public AccountUser setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ public AccountUser setUserName(String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ AccountUser that = (AccountUser) o;
+ return Objects.equals(accountId, that.accountId)
+ && Objects.equals(active, that.active)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(emails, that.emails)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(id, that.id)
+ && Objects.equals(name, that.name)
+ && Objects.equals(roles, that.roles)
+ && Objects.equals(userName, that.userName);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ accountId, active, displayName, emails, externalId, id, name, roles, userName);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(AccountUser.class)
+ .add("accountId", accountId)
+ .add("active", active)
+ .add("displayName", displayName)
+ .add("emails", emails)
+ .add("externalId", externalId)
+ .add("id", id)
+ .add("name", name)
+ .add("roles", roles)
+ .add("userName", userName)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2API.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2API.java
new file mode 100755
index 000000000..e71c93daf
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2API.java
@@ -0,0 +1,102 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.Paginator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * User identities recognized by Databricks and represented by email addresses.
+ *
+ * Databricks recommends using SCIM provisioning to sync users and groups automatically from your
+ * identity provider to your Databricks account. SCIM streamlines onboarding a new employee or team
+ * by using your identity provider to create users and groups in Databricks account and give them
+ * the proper level of access. When a user leaves your organization or no longer needs access to
+ * Databricks account, admins can terminate the user in your identity provider and that user’s
+ * account will also be removed from Databricks account. This ensures a consistent offboarding
+ * process and prevents unauthorized users from accessing sensitive data.
+ */
+@Generated
+public class AccountUsersV2API {
+ private static final Logger LOG = LoggerFactory.getLogger(AccountUsersV2API.class);
+
+ private final AccountUsersV2Service impl;
+
+ /** Regular-use constructor */
+ public AccountUsersV2API(ApiClient apiClient) {
+ impl = new AccountUsersV2Impl(apiClient);
+ }
+
+ /** Constructor for mocks */
+ public AccountUsersV2API(AccountUsersV2Service mock) {
+ impl = mock;
+ }
+
+ /**
+ * Creates a new user in the Databricks account. This new user will also be added to the
+ * Databricks account.
+ */
+ public AccountUser create(CreateAccountUserRequest request) {
+ return impl.create(request);
+ }
+
+ public void delete(String id) {
+ delete(new DeleteAccountUserRequest().setId(id));
+ }
+
+ /**
+ * Deletes a user. Deleting a user from a Databricks account also removes objects associated with
+ * the user.
+ */
+ public void delete(DeleteAccountUserRequest request) {
+ impl.delete(request);
+ }
+
+ public AccountUser get(String id) {
+ return get(new GetAccountUserRequest().setId(id));
+ }
+
+ /** Gets information for a specific user in Databricks account. */
+ public AccountUser get(GetAccountUserRequest request) {
+ return impl.get(request);
+ }
+
+ /** Gets details for all the users associated with a Databricks account. */
+ public Iterable list(ListAccountUsersRequest request) {
+ request.setStartIndex(1L);
+ if (request.getCount() == null) {
+ request.setCount(10000L);
+ }
+ return new Paginator<>(
+ request,
+ impl::list,
+ ListAccountUsersResponse::getResources,
+ response -> {
+ Long offset = request.getStartIndex();
+ if (offset == null) {
+ offset = 0L;
+ }
+ offset += response.getResources().size();
+ return request.setStartIndex(offset);
+ });
+ }
+
+ /**
+ * Partially updates a user resource by applying the supplied operations on specific user
+ * attributes.
+ */
+ public void patch(PatchAccountUserRequest request) {
+ impl.patch(request);
+ }
+
+ /** Replaces a user's information with the data supplied in request. */
+ public void update(UpdateAccountUserRequest request) {
+ impl.update(request);
+ }
+
+ public AccountUsersV2Service impl() {
+ return impl;
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2Impl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2Impl.java
new file mode 100755
index 000000000..e56574f97
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2Impl.java
@@ -0,0 +1,112 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.core.DatabricksException;
+import com.databricks.sdk.core.http.Request;
+import com.databricks.sdk.support.Generated;
+import java.io.IOException;
+
+/** Package-local implementation of AccountUsersV2 */
+@Generated
+class AccountUsersV2Impl implements AccountUsersV2Service {
+ private final ApiClient apiClient;
+
+ public AccountUsersV2Impl(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ @Override
+ public AccountUser create(CreateAccountUserRequest request) {
+ String path =
+ String.format("/api/2.0/accounts/%s/scim/v2/Users", apiClient.configuredAccountID());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ return apiClient.execute(req, AccountUser.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void delete(DeleteAccountUserRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/Users/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("DELETE", path);
+ ApiClient.setQuery(req, request);
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public AccountUser get(GetAccountUserRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/Users/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, AccountUser.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListAccountUsersResponse list(ListAccountUsersRequest request) {
+ String path =
+ String.format("/api/2.0/accounts/%s/scim/v2/Users", apiClient.configuredAccountID());
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, ListAccountUsersResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void patch(PatchAccountUserRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/Users/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("PATCH", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void update(UpdateAccountUserRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/accounts/%s/scim/v2/Users/%s",
+ apiClient.configuredAccountID(), request.getId());
+ try {
+ Request req = new Request("PUT", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2Service.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2Service.java
new file mode 100755
index 000000000..ad1bee493
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/AccountUsersV2Service.java
@@ -0,0 +1,49 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+
+/**
+ * User identities recognized by Databricks and represented by email addresses.
+ *
+ * Databricks recommends using SCIM provisioning to sync users and groups automatically from your
+ * identity provider to your Databricks account. SCIM streamlines onboarding a new employee or team
+ * by using your identity provider to create users and groups in Databricks account and give them
+ * the proper level of access. When a user leaves your organization or no longer needs access to
+ * Databricks account, admins can terminate the user in your identity provider and that user’s
+ * account will also be removed from Databricks account. This ensures a consistent offboarding
+ * process and prevents unauthorized users from accessing sensitive data.
+ *
+ *
This is the high-level interface, that contains generated methods.
+ *
+ *
Evolving: this interface is under development. Method signatures may change.
+ */
+@Generated
+public interface AccountUsersV2Service {
+ /**
+ * Creates a new user in the Databricks account. This new user will also be added to the
+ * Databricks account.
+ */
+ AccountUser create(CreateAccountUserRequest createAccountUserRequest);
+
+ /**
+ * Deletes a user. Deleting a user from a Databricks account also removes objects associated with
+ * the user.
+ */
+ void delete(DeleteAccountUserRequest deleteAccountUserRequest);
+
+ /** Gets information for a specific user in Databricks account. */
+ AccountUser get(GetAccountUserRequest getAccountUserRequest);
+
+ /** Gets details for all the users associated with a Databricks account. */
+ ListAccountUsersResponse list(ListAccountUsersRequest listAccountUsersRequest);
+
+ /**
+ * Partially updates a user resource by applying the supplied operations on specific user
+ * attributes.
+ */
+ void patch(PatchAccountUserRequest patchAccountUserRequest);
+
+ /** Replaces a user's information with the data supplied in request. */
+ void update(UpdateAccountUserRequest updateAccountUserRequest);
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountGroupRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountGroupRequest.java
new file mode 100755
index 000000000..3d2181dcf
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountGroupRequest.java
@@ -0,0 +1,120 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class CreateAccountGroupRequest {
+ /** String that represents a human-readable group name */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** Databricks group ID */
+ @JsonProperty("id")
+ private String id;
+
+ /** */
+ @JsonProperty("members")
+ private Collection members;
+
+ /** Container for the group identifier. Workspace local versus account. */
+ @JsonProperty("meta")
+ private ResourceMeta meta;
+
+ /** Indicates if the group has the admin role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ public CreateAccountGroupRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public CreateAccountGroupRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public CreateAccountGroupRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public CreateAccountGroupRequest setMembers(Collection members) {
+ this.members = members;
+ return this;
+ }
+
+ public Collection getMembers() {
+ return members;
+ }
+
+ public CreateAccountGroupRequest setMeta(ResourceMeta meta) {
+ this.meta = meta;
+ return this;
+ }
+
+ public ResourceMeta getMeta() {
+ return meta;
+ }
+
+ public CreateAccountGroupRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CreateAccountGroupRequest that = (CreateAccountGroupRequest) o;
+ return Objects.equals(displayName, that.displayName)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(id, that.id)
+ && Objects.equals(members, that.members)
+ && Objects.equals(meta, that.meta)
+ && Objects.equals(roles, that.roles);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(displayName, externalId, id, members, meta, roles);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateAccountGroupRequest.class)
+ .add("displayName", displayName)
+ .add("externalId", externalId)
+ .add("id", id)
+ .add("members", members)
+ .add("meta", meta)
+ .add("roles", roles)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountServicePrincipalRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountServicePrincipalRequest.java
new file mode 100755
index 000000000..5991f240a
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountServicePrincipalRequest.java
@@ -0,0 +1,120 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class CreateAccountServicePrincipalRequest {
+ /** If this user is active */
+ @JsonProperty("active")
+ private Boolean active;
+
+ /** UUID relating to the service principal */
+ @JsonProperty("applicationId")
+ private String applicationId;
+
+ /** String that represents a concatenation of given and family names. */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** Databricks service principal ID. */
+ @JsonProperty("id")
+ private String id;
+
+ /** Indicates if the group has the admin role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ public CreateAccountServicePrincipalRequest setActive(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public Boolean getActive() {
+ return active;
+ }
+
+ public CreateAccountServicePrincipalRequest setApplicationId(String applicationId) {
+ this.applicationId = applicationId;
+ return this;
+ }
+
+ public String getApplicationId() {
+ return applicationId;
+ }
+
+ public CreateAccountServicePrincipalRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public CreateAccountServicePrincipalRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public CreateAccountServicePrincipalRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public CreateAccountServicePrincipalRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CreateAccountServicePrincipalRequest that = (CreateAccountServicePrincipalRequest) o;
+ return Objects.equals(active, that.active)
+ && Objects.equals(applicationId, that.applicationId)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(id, that.id)
+ && Objects.equals(roles, that.roles);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(active, applicationId, displayName, externalId, id, roles);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateAccountServicePrincipalRequest.class)
+ .add("active", active)
+ .add("applicationId", applicationId)
+ .add("displayName", displayName)
+ .add("externalId", externalId)
+ .add("id", id)
+ .add("roles", roles)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountUserRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountUserRequest.java
new file mode 100755
index 000000000..346a4c53b
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateAccountUserRequest.java
@@ -0,0 +1,150 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class CreateAccountUserRequest {
+ /** If this user is active */
+ @JsonProperty("active")
+ private Boolean active;
+
+ /** String that represents a concatenation of given and family names. For example `John Smith`. */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** All the emails associated with the Databricks user. */
+ @JsonProperty("emails")
+ private Collection emails;
+
+ /** External ID is not currently supported. It is reserved for future use. */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** Databricks user ID. */
+ @JsonProperty("id")
+ private String id;
+
+ /** */
+ @JsonProperty("name")
+ private Name name;
+
+ /** Indicates if the group has the admin role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ /** Email address of the Databricks user. */
+ @JsonProperty("userName")
+ private String userName;
+
+ public CreateAccountUserRequest setActive(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public Boolean getActive() {
+ return active;
+ }
+
+ public CreateAccountUserRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public CreateAccountUserRequest setEmails(Collection emails) {
+ this.emails = emails;
+ return this;
+ }
+
+ public Collection getEmails() {
+ return emails;
+ }
+
+ public CreateAccountUserRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public CreateAccountUserRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public CreateAccountUserRequest setName(Name name) {
+ this.name = name;
+ return this;
+ }
+
+ public Name getName() {
+ return name;
+ }
+
+ public CreateAccountUserRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ public CreateAccountUserRequest setUserName(String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CreateAccountUserRequest that = (CreateAccountUserRequest) o;
+ return Objects.equals(active, that.active)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(emails, that.emails)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(id, that.id)
+ && Objects.equals(name, that.name)
+ && Objects.equals(roles, that.roles)
+ && Objects.equals(userName, that.userName);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(active, displayName, emails, externalId, id, name, roles, userName);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateAccountUserRequest.class)
+ .add("active", active)
+ .add("displayName", displayName)
+ .add("emails", emails)
+ .add("externalId", externalId)
+ .add("id", id)
+ .add("name", name)
+ .add("roles", roles)
+ .add("userName", userName)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateGroupRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateGroupRequest.java
new file mode 100755
index 000000000..904aa4499
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateGroupRequest.java
@@ -0,0 +1,172 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class CreateGroupRequest {
+ /** String that represents a human-readable group name */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /**
+ * Entitlements assigned to the group. See [assigning entitlements] for a full list of supported
+ * values.
+ *
+ * [assigning entitlements]:
+ * https://docs.databricks.com/administration-guide/users-groups/index.html#assigning-entitlements
+ */
+ @JsonProperty("entitlements")
+ private Collection entitlements;
+
+ /** */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** */
+ @JsonProperty("groups")
+ private Collection groups;
+
+ /** Databricks group ID */
+ @JsonProperty("id")
+ private String id;
+
+ /** */
+ @JsonProperty("members")
+ private Collection members;
+
+ /** Container for the group identifier. Workspace local versus account. */
+ @JsonProperty("meta")
+ private ResourceMeta meta;
+
+ /** Corresponds to AWS instance profile/arn role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ /** The schema of the group. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ public CreateGroupRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public CreateGroupRequest setEntitlements(Collection entitlements) {
+ this.entitlements = entitlements;
+ return this;
+ }
+
+ public Collection getEntitlements() {
+ return entitlements;
+ }
+
+ public CreateGroupRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public CreateGroupRequest setGroups(Collection groups) {
+ this.groups = groups;
+ return this;
+ }
+
+ public Collection getGroups() {
+ return groups;
+ }
+
+ public CreateGroupRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public CreateGroupRequest setMembers(Collection members) {
+ this.members = members;
+ return this;
+ }
+
+ public Collection getMembers() {
+ return members;
+ }
+
+ public CreateGroupRequest setMeta(ResourceMeta meta) {
+ this.meta = meta;
+ return this;
+ }
+
+ public ResourceMeta getMeta() {
+ return meta;
+ }
+
+ public CreateGroupRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ public CreateGroupRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CreateGroupRequest that = (CreateGroupRequest) o;
+ return Objects.equals(displayName, that.displayName)
+ && Objects.equals(entitlements, that.entitlements)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(groups, that.groups)
+ && Objects.equals(id, that.id)
+ && Objects.equals(members, that.members)
+ && Objects.equals(meta, that.meta)
+ && Objects.equals(roles, that.roles)
+ && Objects.equals(schemas, that.schemas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ displayName, entitlements, externalId, groups, id, members, meta, roles, schemas);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateGroupRequest.class)
+ .add("displayName", displayName)
+ .add("entitlements", entitlements)
+ .add("externalId", externalId)
+ .add("groups", groups)
+ .add("id", id)
+ .add("members", members)
+ .add("meta", meta)
+ .add("roles", roles)
+ .add("schemas", schemas)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateServicePrincipalRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateServicePrincipalRequest.java
new file mode 100755
index 000000000..95494e256
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateServicePrincipalRequest.java
@@ -0,0 +1,172 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class CreateServicePrincipalRequest {
+ /** If this user is active */
+ @JsonProperty("active")
+ private Boolean active;
+
+ /** UUID relating to the service principal */
+ @JsonProperty("applicationId")
+ private String applicationId;
+
+ /** String that represents a concatenation of given and family names. */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /**
+ * Entitlements assigned to the service principal. See [assigning entitlements] for a full list of
+ * supported values.
+ *
+ * [assigning entitlements]:
+ * https://docs.databricks.com/administration-guide/users-groups/index.html#assigning-entitlements
+ */
+ @JsonProperty("entitlements")
+ private Collection entitlements;
+
+ /** */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** */
+ @JsonProperty("groups")
+ private Collection groups;
+
+ /** Databricks service principal ID. */
+ @JsonProperty("id")
+ private String id;
+
+ /** Corresponds to AWS instance profile/arn role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ /** The schema of the List response. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ public CreateServicePrincipalRequest setActive(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public Boolean getActive() {
+ return active;
+ }
+
+ public CreateServicePrincipalRequest setApplicationId(String applicationId) {
+ this.applicationId = applicationId;
+ return this;
+ }
+
+ public String getApplicationId() {
+ return applicationId;
+ }
+
+ public CreateServicePrincipalRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public CreateServicePrincipalRequest setEntitlements(Collection entitlements) {
+ this.entitlements = entitlements;
+ return this;
+ }
+
+ public Collection getEntitlements() {
+ return entitlements;
+ }
+
+ public CreateServicePrincipalRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public CreateServicePrincipalRequest setGroups(Collection groups) {
+ this.groups = groups;
+ return this;
+ }
+
+ public Collection getGroups() {
+ return groups;
+ }
+
+ public CreateServicePrincipalRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public CreateServicePrincipalRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ public CreateServicePrincipalRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CreateServicePrincipalRequest that = (CreateServicePrincipalRequest) o;
+ return Objects.equals(active, that.active)
+ && Objects.equals(applicationId, that.applicationId)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(entitlements, that.entitlements)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(groups, that.groups)
+ && Objects.equals(id, that.id)
+ && Objects.equals(roles, that.roles)
+ && Objects.equals(schemas, that.schemas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ active, applicationId, displayName, entitlements, externalId, groups, id, roles, schemas);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateServicePrincipalRequest.class)
+ .add("active", active)
+ .add("applicationId", applicationId)
+ .add("displayName", displayName)
+ .add("entitlements", entitlements)
+ .add("externalId", externalId)
+ .add("groups", groups)
+ .add("id", id)
+ .add("roles", roles)
+ .add("schemas", schemas)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateUserRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateUserRequest.java
new file mode 100755
index 000000000..baaad5f01
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/CreateUserRequest.java
@@ -0,0 +1,219 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class CreateUserRequest {
+ /** If this user is active */
+ @JsonProperty("active")
+ private Boolean active;
+
+ /**
+ * String that represents a concatenation of given and family names. For example `John Smith`.
+ * This field cannot be updated through the Workspace SCIM APIs when [identity federation is
+ * enabled]. Use Account SCIM APIs to update `displayName`.
+ *
+ * [identity federation is enabled]:
+ * https://docs.databricks.com/administration-guide/users-groups/best-practices.html#enable-identity-federation
+ */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** All the emails associated with the Databricks user. */
+ @JsonProperty("emails")
+ private Collection emails;
+
+ /**
+ * Entitlements assigned to the user. See [assigning entitlements] for a full list of supported
+ * values.
+ *
+ * [assigning entitlements]:
+ * https://docs.databricks.com/administration-guide/users-groups/index.html#assigning-entitlements
+ */
+ @JsonProperty("entitlements")
+ private Collection entitlements;
+
+ /** External ID is not currently supported. It is reserved for future use. */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** */
+ @JsonProperty("groups")
+ private Collection groups;
+
+ /** Databricks user ID. */
+ @JsonProperty("id")
+ private String id;
+
+ /** */
+ @JsonProperty("name")
+ private Name name;
+
+ /** Corresponds to AWS instance profile/arn role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ /** The schema of the user. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ /** Email address of the Databricks user. */
+ @JsonProperty("userName")
+ private String userName;
+
+ public CreateUserRequest setActive(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public Boolean getActive() {
+ return active;
+ }
+
+ public CreateUserRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public CreateUserRequest setEmails(Collection emails) {
+ this.emails = emails;
+ return this;
+ }
+
+ public Collection getEmails() {
+ return emails;
+ }
+
+ public CreateUserRequest setEntitlements(Collection entitlements) {
+ this.entitlements = entitlements;
+ return this;
+ }
+
+ public Collection getEntitlements() {
+ return entitlements;
+ }
+
+ public CreateUserRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public CreateUserRequest setGroups(Collection groups) {
+ this.groups = groups;
+ return this;
+ }
+
+ public Collection getGroups() {
+ return groups;
+ }
+
+ public CreateUserRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public CreateUserRequest setName(Name name) {
+ this.name = name;
+ return this;
+ }
+
+ public Name getName() {
+ return name;
+ }
+
+ public CreateUserRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ public CreateUserRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ public CreateUserRequest setUserName(String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CreateUserRequest that = (CreateUserRequest) o;
+ return Objects.equals(active, that.active)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(emails, that.emails)
+ && Objects.equals(entitlements, that.entitlements)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(groups, that.groups)
+ && Objects.equals(id, that.id)
+ && Objects.equals(name, that.name)
+ && Objects.equals(roles, that.roles)
+ && Objects.equals(schemas, that.schemas)
+ && Objects.equals(userName, that.userName);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ active,
+ displayName,
+ emails,
+ entitlements,
+ externalId,
+ groups,
+ id,
+ name,
+ roles,
+ schemas,
+ userName);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateUserRequest.class)
+ .add("active", active)
+ .add("displayName", displayName)
+ .add("emails", emails)
+ .add("entitlements", entitlements)
+ .add("externalId", externalId)
+ .add("groups", groups)
+ .add("id", id)
+ .add("name", name)
+ .add("roles", roles)
+ .add("schemas", schemas)
+ .add("userName", userName)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPasswordPermissionLevelsRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPasswordPermissionLevelsRequest.java
new file mode 100755
index 000000000..248dfa5a8
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPasswordPermissionLevelsRequest.java
@@ -0,0 +1,28 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import java.util.Objects;
+
+@Generated
+public class GetPasswordPermissionLevelsRequest {
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(GetPasswordPermissionLevelsRequest.class).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPasswordPermissionsRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPasswordPermissionsRequest.java
new file mode 100755
index 000000000..06b3ac996
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GetPasswordPermissionsRequest.java
@@ -0,0 +1,28 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import java.util.Objects;
+
+@Generated
+public class GetPasswordPermissionsRequest {
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(GetPasswordPermissionsRequest.class).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2API.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2API.java
new file mode 100755
index 000000000..84e109766
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2API.java
@@ -0,0 +1,93 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.Paginator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Groups simplify identity management, making it easier to assign access to Databricks workspace,
+ * data, and other securable objects.
+ *
+ * It is best practice to assign access to workspaces and access-control policies in Unity
+ * Catalog to groups, instead of to users individually. All Databricks workspace identities can be
+ * assigned as members of groups, and members inherit permissions that are assigned to their group.
+ */
+@Generated
+public class GroupsV2API {
+ private static final Logger LOG = LoggerFactory.getLogger(GroupsV2API.class);
+
+ private final GroupsV2Service impl;
+
+ /** Regular-use constructor */
+ public GroupsV2API(ApiClient apiClient) {
+ impl = new GroupsV2Impl(apiClient);
+ }
+
+ /** Constructor for mocks */
+ public GroupsV2API(GroupsV2Service mock) {
+ impl = mock;
+ }
+
+ /**
+ * Creates a group in the Databricks workspace with a unique name, using the supplied group
+ * details.
+ */
+ public Group create(CreateGroupRequest request) {
+ return impl.create(request);
+ }
+
+ public void delete(String id) {
+ delete(new DeleteGroupRequest().setId(id));
+ }
+
+ /** Deletes a group from the Databricks workspace. */
+ public void delete(DeleteGroupRequest request) {
+ impl.delete(request);
+ }
+
+ public Group get(String id) {
+ return get(new GetGroupRequest().setId(id));
+ }
+
+ /** Gets the information for a specific group in the Databricks workspace. */
+ public Group get(GetGroupRequest request) {
+ return impl.get(request);
+ }
+
+ /** Gets all details of the groups associated with the Databricks workspace. */
+ public Iterable list(ListGroupsRequest request) {
+ request.setStartIndex(1L);
+ if (request.getCount() == null) {
+ request.setCount(10000L);
+ }
+ return new Paginator<>(
+ request,
+ impl::list,
+ ListGroupsResponse::getResources,
+ response -> {
+ Long offset = request.getStartIndex();
+ if (offset == null) {
+ offset = 0L;
+ }
+ offset += response.getResources().size();
+ return request.setStartIndex(offset);
+ });
+ }
+
+ /** Partially updates the details of a group. */
+ public void patch(PatchGroupRequest request) {
+ impl.patch(request);
+ }
+
+ /** Updates the details of a group by replacing the entire group entity. */
+ public void update(UpdateGroupRequest request) {
+ impl.update(request);
+ }
+
+ public GroupsV2Service impl() {
+ return impl;
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2Impl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2Impl.java
new file mode 100755
index 000000000..02c1e34f0
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2Impl.java
@@ -0,0 +1,98 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.core.DatabricksException;
+import com.databricks.sdk.core.http.Request;
+import com.databricks.sdk.support.Generated;
+import java.io.IOException;
+
+/** Package-local implementation of GroupsV2 */
+@Generated
+class GroupsV2Impl implements GroupsV2Service {
+ private final ApiClient apiClient;
+
+ public GroupsV2Impl(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ @Override
+ public Group create(CreateGroupRequest request) {
+ String path = "/api/2.0/preview/scim/v2/Groups";
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ return apiClient.execute(req, Group.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void delete(DeleteGroupRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/Groups/%s", request.getId());
+ try {
+ Request req = new Request("DELETE", path);
+ ApiClient.setQuery(req, request);
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public Group get(GetGroupRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/Groups/%s", request.getId());
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, Group.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListGroupsResponse list(ListGroupsRequest request) {
+ String path = "/api/2.0/preview/scim/v2/Groups";
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, ListGroupsResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void patch(PatchGroupRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/Groups/%s", request.getId());
+ try {
+ Request req = new Request("PATCH", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void update(UpdateGroupRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/Groups/%s", request.getId());
+ try {
+ Request req = new Request("PUT", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2Service.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2Service.java
new file mode 100755
index 000000000..94d85a174
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/GroupsV2Service.java
@@ -0,0 +1,40 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+
+/**
+ * Groups simplify identity management, making it easier to assign access to Databricks workspace,
+ * data, and other securable objects.
+ *
+ * It is best practice to assign access to workspaces and access-control policies in Unity
+ * Catalog to groups, instead of to users individually. All Databricks workspace identities can be
+ * assigned as members of groups, and members inherit permissions that are assigned to their group.
+ *
+ *
This is the high-level interface, that contains generated methods.
+ *
+ *
Evolving: this interface is under development. Method signatures may change.
+ */
+@Generated
+public interface GroupsV2Service {
+ /**
+ * Creates a group in the Databricks workspace with a unique name, using the supplied group
+ * details.
+ */
+ Group create(CreateGroupRequest createGroupRequest);
+
+ /** Deletes a group from the Databricks workspace. */
+ void delete(DeleteGroupRequest deleteGroupRequest);
+
+ /** Gets the information for a specific group in the Databricks workspace. */
+ Group get(GetGroupRequest getGroupRequest);
+
+ /** Gets all details of the groups associated with the Databricks workspace. */
+ ListGroupsResponse list(ListGroupsRequest listGroupsRequest);
+
+ /** Partially updates the details of a group. */
+ void patch(PatchGroupRequest patchGroupRequest);
+
+ /** Updates the details of a group by replacing the entire group entity. */
+ void update(UpdateGroupRequest updateGroupRequest);
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountGroupsResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountGroupsResponse.java
new file mode 100755
index 000000000..4a4982b41
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountGroupsResponse.java
@@ -0,0 +1,90 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class ListAccountGroupsResponse {
+ /** Total results returned in the response. */
+ @JsonProperty("itemsPerPage")
+ private Long itemsPerPage;
+
+ /** User objects returned in the response. */
+ @JsonProperty("Resources")
+ private Collection resources;
+
+ /** Starting index of all the results that matched the request filters. First item is number 1. */
+ @JsonProperty("startIndex")
+ private Long startIndex;
+
+ /** Total results that match the request filters. */
+ @JsonProperty("totalResults")
+ private Long totalResults;
+
+ public ListAccountGroupsResponse setItemsPerPage(Long itemsPerPage) {
+ this.itemsPerPage = itemsPerPage;
+ return this;
+ }
+
+ public Long getItemsPerPage() {
+ return itemsPerPage;
+ }
+
+ public ListAccountGroupsResponse setResources(Collection resources) {
+ this.resources = resources;
+ return this;
+ }
+
+ public Collection getResources() {
+ return resources;
+ }
+
+ public ListAccountGroupsResponse setStartIndex(Long startIndex) {
+ this.startIndex = startIndex;
+ return this;
+ }
+
+ public Long getStartIndex() {
+ return startIndex;
+ }
+
+ public ListAccountGroupsResponse setTotalResults(Long totalResults) {
+ this.totalResults = totalResults;
+ return this;
+ }
+
+ public Long getTotalResults() {
+ return totalResults;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ListAccountGroupsResponse that = (ListAccountGroupsResponse) o;
+ return Objects.equals(itemsPerPage, that.itemsPerPage)
+ && Objects.equals(resources, that.resources)
+ && Objects.equals(startIndex, that.startIndex)
+ && Objects.equals(totalResults, that.totalResults);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(itemsPerPage, resources, startIndex, totalResults);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListAccountGroupsResponse.class)
+ .add("itemsPerPage", itemsPerPage)
+ .add("resources", resources)
+ .add("startIndex", startIndex)
+ .add("totalResults", totalResults)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountServicePrincipalsResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountServicePrincipalsResponse.java
new file mode 100755
index 000000000..2a14f9906
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountServicePrincipalsResponse.java
@@ -0,0 +1,91 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class ListAccountServicePrincipalsResponse {
+ /** Total results returned in the response. */
+ @JsonProperty("itemsPerPage")
+ private Long itemsPerPage;
+
+ /** User objects returned in the response. */
+ @JsonProperty("Resources")
+ private Collection resources;
+
+ /** Starting index of all the results that matched the request filters. First item is number 1. */
+ @JsonProperty("startIndex")
+ private Long startIndex;
+
+ /** Total results that match the request filters. */
+ @JsonProperty("totalResults")
+ private Long totalResults;
+
+ public ListAccountServicePrincipalsResponse setItemsPerPage(Long itemsPerPage) {
+ this.itemsPerPage = itemsPerPage;
+ return this;
+ }
+
+ public Long getItemsPerPage() {
+ return itemsPerPage;
+ }
+
+ public ListAccountServicePrincipalsResponse setResources(
+ Collection resources) {
+ this.resources = resources;
+ return this;
+ }
+
+ public Collection getResources() {
+ return resources;
+ }
+
+ public ListAccountServicePrincipalsResponse setStartIndex(Long startIndex) {
+ this.startIndex = startIndex;
+ return this;
+ }
+
+ public Long getStartIndex() {
+ return startIndex;
+ }
+
+ public ListAccountServicePrincipalsResponse setTotalResults(Long totalResults) {
+ this.totalResults = totalResults;
+ return this;
+ }
+
+ public Long getTotalResults() {
+ return totalResults;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ListAccountServicePrincipalsResponse that = (ListAccountServicePrincipalsResponse) o;
+ return Objects.equals(itemsPerPage, that.itemsPerPage)
+ && Objects.equals(resources, that.resources)
+ && Objects.equals(startIndex, that.startIndex)
+ && Objects.equals(totalResults, that.totalResults);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(itemsPerPage, resources, startIndex, totalResults);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListAccountServicePrincipalsResponse.class)
+ .add("itemsPerPage", itemsPerPage)
+ .add("resources", resources)
+ .add("startIndex", startIndex)
+ .add("totalResults", totalResults)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountUsersResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountUsersResponse.java
new file mode 100755
index 000000000..2fbb772f2
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ListAccountUsersResponse.java
@@ -0,0 +1,90 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class ListAccountUsersResponse {
+ /** Total results returned in the response. */
+ @JsonProperty("itemsPerPage")
+ private Long itemsPerPage;
+
+ /** User objects returned in the response. */
+ @JsonProperty("Resources")
+ private Collection resources;
+
+ /** Starting index of all the results that matched the request filters. First item is number 1. */
+ @JsonProperty("startIndex")
+ private Long startIndex;
+
+ /** Total results that match the request filters. */
+ @JsonProperty("totalResults")
+ private Long totalResults;
+
+ public ListAccountUsersResponse setItemsPerPage(Long itemsPerPage) {
+ this.itemsPerPage = itemsPerPage;
+ return this;
+ }
+
+ public Long getItemsPerPage() {
+ return itemsPerPage;
+ }
+
+ public ListAccountUsersResponse setResources(Collection resources) {
+ this.resources = resources;
+ return this;
+ }
+
+ public Collection getResources() {
+ return resources;
+ }
+
+ public ListAccountUsersResponse setStartIndex(Long startIndex) {
+ this.startIndex = startIndex;
+ return this;
+ }
+
+ public Long getStartIndex() {
+ return startIndex;
+ }
+
+ public ListAccountUsersResponse setTotalResults(Long totalResults) {
+ this.totalResults = totalResults;
+ return this;
+ }
+
+ public Long getTotalResults() {
+ return totalResults;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ListAccountUsersResponse that = (ListAccountUsersResponse) o;
+ return Objects.equals(itemsPerPage, that.itemsPerPage)
+ && Objects.equals(resources, that.resources)
+ && Objects.equals(startIndex, that.startIndex)
+ && Objects.equals(totalResults, that.totalResults);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(itemsPerPage, resources, startIndex, totalResults);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListAccountUsersResponse.class)
+ .add("itemsPerPage", itemsPerPage)
+ .add("resources", resources)
+ .add("startIndex", startIndex)
+ .add("totalResults", totalResults)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountGroupRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountGroupRequest.java
new file mode 100755
index 000000000..293a24b6d
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountGroupRequest.java
@@ -0,0 +1,75 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class PatchAccountGroupRequest {
+ /** Unique ID in the Databricks workspace. */
+ @JsonIgnore private String id;
+
+ /** */
+ @JsonProperty("Operations")
+ private Collection operations;
+
+ /** The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"]. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ public PatchAccountGroupRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public PatchAccountGroupRequest setOperations(Collection operations) {
+ this.operations = operations;
+ return this;
+ }
+
+ public Collection getOperations() {
+ return operations;
+ }
+
+ public PatchAccountGroupRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PatchAccountGroupRequest that = (PatchAccountGroupRequest) o;
+ return Objects.equals(id, that.id)
+ && Objects.equals(operations, that.operations)
+ && Objects.equals(schemas, that.schemas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, operations, schemas);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(PatchAccountGroupRequest.class)
+ .add("id", id)
+ .add("operations", operations)
+ .add("schemas", schemas)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountServicePrincipalRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountServicePrincipalRequest.java
new file mode 100755
index 000000000..8274e0b94
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountServicePrincipalRequest.java
@@ -0,0 +1,75 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class PatchAccountServicePrincipalRequest {
+ /** Unique ID in the Databricks workspace. */
+ @JsonIgnore private String id;
+
+ /** */
+ @JsonProperty("Operations")
+ private Collection operations;
+
+ /** The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"]. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ public PatchAccountServicePrincipalRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public PatchAccountServicePrincipalRequest setOperations(Collection operations) {
+ this.operations = operations;
+ return this;
+ }
+
+ public Collection getOperations() {
+ return operations;
+ }
+
+ public PatchAccountServicePrincipalRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PatchAccountServicePrincipalRequest that = (PatchAccountServicePrincipalRequest) o;
+ return Objects.equals(id, that.id)
+ && Objects.equals(operations, that.operations)
+ && Objects.equals(schemas, that.schemas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, operations, schemas);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(PatchAccountServicePrincipalRequest.class)
+ .add("id", id)
+ .add("operations", operations)
+ .add("schemas", schemas)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountUserRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountUserRequest.java
new file mode 100755
index 000000000..7958c6cb9
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchAccountUserRequest.java
@@ -0,0 +1,75 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class PatchAccountUserRequest {
+ /** Unique ID in the Databricks workspace. */
+ @JsonIgnore private String id;
+
+ /** */
+ @JsonProperty("Operations")
+ private Collection operations;
+
+ /** The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"]. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ public PatchAccountUserRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public PatchAccountUserRequest setOperations(Collection operations) {
+ this.operations = operations;
+ return this;
+ }
+
+ public Collection getOperations() {
+ return operations;
+ }
+
+ public PatchAccountUserRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PatchAccountUserRequest that = (PatchAccountUserRequest) o;
+ return Objects.equals(id, that.id)
+ && Objects.equals(operations, that.operations)
+ && Objects.equals(schemas, that.schemas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, operations, schemas);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(PatchAccountUserRequest.class)
+ .add("id", id)
+ .add("operations", operations)
+ .add("schemas", schemas)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchGroupRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchGroupRequest.java
new file mode 100755
index 000000000..fc0a5a6e5
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchGroupRequest.java
@@ -0,0 +1,75 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class PatchGroupRequest {
+ /** Unique ID in the Databricks workspace. */
+ @JsonIgnore private String id;
+
+ /** */
+ @JsonProperty("Operations")
+ private Collection operations;
+
+ /** The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"]. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ public PatchGroupRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public PatchGroupRequest setOperations(Collection operations) {
+ this.operations = operations;
+ return this;
+ }
+
+ public Collection getOperations() {
+ return operations;
+ }
+
+ public PatchGroupRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PatchGroupRequest that = (PatchGroupRequest) o;
+ return Objects.equals(id, that.id)
+ && Objects.equals(operations, that.operations)
+ && Objects.equals(schemas, that.schemas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, operations, schemas);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(PatchGroupRequest.class)
+ .add("id", id)
+ .add("operations", operations)
+ .add("schemas", schemas)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchServicePrincipalRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchServicePrincipalRequest.java
new file mode 100755
index 000000000..4d978c2ba
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchServicePrincipalRequest.java
@@ -0,0 +1,75 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class PatchServicePrincipalRequest {
+ /** Unique ID in the Databricks workspace. */
+ @JsonIgnore private String id;
+
+ /** */
+ @JsonProperty("Operations")
+ private Collection operations;
+
+ /** The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"]. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ public PatchServicePrincipalRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public PatchServicePrincipalRequest setOperations(Collection operations) {
+ this.operations = operations;
+ return this;
+ }
+
+ public Collection getOperations() {
+ return operations;
+ }
+
+ public PatchServicePrincipalRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PatchServicePrincipalRequest that = (PatchServicePrincipalRequest) o;
+ return Objects.equals(id, that.id)
+ && Objects.equals(operations, that.operations)
+ && Objects.equals(schemas, that.schemas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, operations, schemas);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(PatchServicePrincipalRequest.class)
+ .add("id", id)
+ .add("operations", operations)
+ .add("schemas", schemas)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchUserRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchUserRequest.java
new file mode 100755
index 000000000..da0097a8b
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/PatchUserRequest.java
@@ -0,0 +1,75 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class PatchUserRequest {
+ /** Unique ID in the Databricks workspace. */
+ @JsonIgnore private String id;
+
+ /** */
+ @JsonProperty("Operations")
+ private Collection operations;
+
+ /** The schema of the patch request. Must be ["urn:ietf:params:scim:api:messages:2.0:PatchOp"]. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ public PatchUserRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public PatchUserRequest setOperations(Collection operations) {
+ this.operations = operations;
+ return this;
+ }
+
+ public Collection getOperations() {
+ return operations;
+ }
+
+ public PatchUserRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PatchUserRequest that = (PatchUserRequest) o;
+ return Objects.equals(id, that.id)
+ && Objects.equals(operations, that.operations)
+ && Objects.equals(schemas, that.schemas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, operations, schemas);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(PatchUserRequest.class)
+ .add("id", id)
+ .add("operations", operations)
+ .add("schemas", schemas)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2API.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2API.java
new file mode 100755
index 000000000..adbd38cc9
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2API.java
@@ -0,0 +1,93 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.Paginator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Identities for use with jobs, automated tools, and systems such as scripts, apps, and CI/CD
+ * platforms. Databricks recommends creating service principals to run production jobs or modify
+ * production data. If all processes that act on production data run with service principals,
+ * interactive users do not need any write, delete, or modify privileges in production. This
+ * eliminates the risk of a user overwriting production data by accident.
+ */
+@Generated
+public class ServicePrincipalsV2API {
+ private static final Logger LOG = LoggerFactory.getLogger(ServicePrincipalsV2API.class);
+
+ private final ServicePrincipalsV2Service impl;
+
+ /** Regular-use constructor */
+ public ServicePrincipalsV2API(ApiClient apiClient) {
+ impl = new ServicePrincipalsV2Impl(apiClient);
+ }
+
+ /** Constructor for mocks */
+ public ServicePrincipalsV2API(ServicePrincipalsV2Service mock) {
+ impl = mock;
+ }
+
+ /** Creates a new service principal in the Databricks workspace. */
+ public ServicePrincipal create(CreateServicePrincipalRequest request) {
+ return impl.create(request);
+ }
+
+ public void delete(String id) {
+ delete(new DeleteServicePrincipalRequest().setId(id));
+ }
+
+ /** Delete a single service principal in the Databricks workspace. */
+ public void delete(DeleteServicePrincipalRequest request) {
+ impl.delete(request);
+ }
+
+ public ServicePrincipal get(String id) {
+ return get(new GetServicePrincipalRequest().setId(id));
+ }
+
+ /** Gets the details for a single service principal define in the Databricks workspace. */
+ public ServicePrincipal get(GetServicePrincipalRequest request) {
+ return impl.get(request);
+ }
+
+ /** Gets the set of service principals associated with a Databricks workspace. */
+ public Iterable list(ListServicePrincipalsRequest request) {
+ request.setStartIndex(1L);
+ if (request.getCount() == null) {
+ request.setCount(10000L);
+ }
+ return new Paginator<>(
+ request,
+ impl::list,
+ ListServicePrincipalResponse::getResources,
+ response -> {
+ Long offset = request.getStartIndex();
+ if (offset == null) {
+ offset = 0L;
+ }
+ offset += response.getResources().size();
+ return request.setStartIndex(offset);
+ });
+ }
+
+ /** Partially updates the details of a single service principal in the Databricks workspace. */
+ public void patch(PatchServicePrincipalRequest request) {
+ impl.patch(request);
+ }
+
+ /**
+ * Updates the details of a single service principal.
+ *
+ * This action replaces the existing service principal with the same name.
+ */
+ public void update(UpdateServicePrincipalRequest request) {
+ impl.update(request);
+ }
+
+ public ServicePrincipalsV2Service impl() {
+ return impl;
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2Impl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2Impl.java
new file mode 100755
index 000000000..381e0d3fc
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2Impl.java
@@ -0,0 +1,98 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.core.DatabricksException;
+import com.databricks.sdk.core.http.Request;
+import com.databricks.sdk.support.Generated;
+import java.io.IOException;
+
+/** Package-local implementation of ServicePrincipalsV2 */
+@Generated
+class ServicePrincipalsV2Impl implements ServicePrincipalsV2Service {
+ private final ApiClient apiClient;
+
+ public ServicePrincipalsV2Impl(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ @Override
+ public ServicePrincipal create(CreateServicePrincipalRequest request) {
+ String path = "/api/2.0/preview/scim/v2/ServicePrincipals";
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ return apiClient.execute(req, ServicePrincipal.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void delete(DeleteServicePrincipalRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/ServicePrincipals/%s", request.getId());
+ try {
+ Request req = new Request("DELETE", path);
+ ApiClient.setQuery(req, request);
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ServicePrincipal get(GetServicePrincipalRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/ServicePrincipals/%s", request.getId());
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, ServicePrincipal.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListServicePrincipalResponse list(ListServicePrincipalsRequest request) {
+ String path = "/api/2.0/preview/scim/v2/ServicePrincipals";
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, ListServicePrincipalResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void patch(PatchServicePrincipalRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/ServicePrincipals/%s", request.getId());
+ try {
+ Request req = new Request("PATCH", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void update(UpdateServicePrincipalRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/ServicePrincipals/%s", request.getId());
+ try {
+ Request req = new Request("PUT", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2Service.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2Service.java
new file mode 100755
index 000000000..86bf5711a
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ServicePrincipalsV2Service.java
@@ -0,0 +1,40 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+
+/**
+ * Identities for use with jobs, automated tools, and systems such as scripts, apps, and CI/CD
+ * platforms. Databricks recommends creating service principals to run production jobs or modify
+ * production data. If all processes that act on production data run with service principals,
+ * interactive users do not need any write, delete, or modify privileges in production. This
+ * eliminates the risk of a user overwriting production data by accident.
+ *
+ *
This is the high-level interface, that contains generated methods.
+ *
+ *
Evolving: this interface is under development. Method signatures may change.
+ */
+@Generated
+public interface ServicePrincipalsV2Service {
+ /** Creates a new service principal in the Databricks workspace. */
+ ServicePrincipal create(CreateServicePrincipalRequest createServicePrincipalRequest);
+
+ /** Delete a single service principal in the Databricks workspace. */
+ void delete(DeleteServicePrincipalRequest deleteServicePrincipalRequest);
+
+ /** Gets the details for a single service principal define in the Databricks workspace. */
+ ServicePrincipal get(GetServicePrincipalRequest getServicePrincipalRequest);
+
+ /** Gets the set of service principals associated with a Databricks workspace. */
+ ListServicePrincipalResponse list(ListServicePrincipalsRequest listServicePrincipalsRequest);
+
+ /** Partially updates the details of a single service principal in the Databricks workspace. */
+ void patch(PatchServicePrincipalRequest patchServicePrincipalRequest);
+
+ /**
+ * Updates the details of a single service principal.
+ *
+ *
This action replaces the existing service principal with the same name.
+ */
+ void update(UpdateServicePrincipalRequest updateServicePrincipalRequest);
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountGroupRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountGroupRequest.java
new file mode 100755
index 000000000..7c1ead7b1
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountGroupRequest.java
@@ -0,0 +1,120 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class UpdateAccountGroupRequest {
+ /** String that represents a human-readable group name */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** Databricks group ID */
+ @JsonIgnore private String id;
+
+ /** */
+ @JsonProperty("members")
+ private Collection members;
+
+ /** Container for the group identifier. Workspace local versus account. */
+ @JsonProperty("meta")
+ private ResourceMeta meta;
+
+ /** Indicates if the group has the admin role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ public UpdateAccountGroupRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public UpdateAccountGroupRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public UpdateAccountGroupRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public UpdateAccountGroupRequest setMembers(Collection members) {
+ this.members = members;
+ return this;
+ }
+
+ public Collection getMembers() {
+ return members;
+ }
+
+ public UpdateAccountGroupRequest setMeta(ResourceMeta meta) {
+ this.meta = meta;
+ return this;
+ }
+
+ public ResourceMeta getMeta() {
+ return meta;
+ }
+
+ public UpdateAccountGroupRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateAccountGroupRequest that = (UpdateAccountGroupRequest) o;
+ return Objects.equals(displayName, that.displayName)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(id, that.id)
+ && Objects.equals(members, that.members)
+ && Objects.equals(meta, that.meta)
+ && Objects.equals(roles, that.roles);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(displayName, externalId, id, members, meta, roles);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateAccountGroupRequest.class)
+ .add("displayName", displayName)
+ .add("externalId", externalId)
+ .add("id", id)
+ .add("members", members)
+ .add("meta", meta)
+ .add("roles", roles)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountServicePrincipalRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountServicePrincipalRequest.java
new file mode 100755
index 000000000..398e284f5
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountServicePrincipalRequest.java
@@ -0,0 +1,120 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class UpdateAccountServicePrincipalRequest {
+ /** If this user is active */
+ @JsonProperty("active")
+ private Boolean active;
+
+ /** UUID relating to the service principal */
+ @JsonProperty("applicationId")
+ private String applicationId;
+
+ /** String that represents a concatenation of given and family names. */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** Databricks service principal ID. */
+ @JsonIgnore private String id;
+
+ /** Indicates if the group has the admin role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ public UpdateAccountServicePrincipalRequest setActive(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public Boolean getActive() {
+ return active;
+ }
+
+ public UpdateAccountServicePrincipalRequest setApplicationId(String applicationId) {
+ this.applicationId = applicationId;
+ return this;
+ }
+
+ public String getApplicationId() {
+ return applicationId;
+ }
+
+ public UpdateAccountServicePrincipalRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public UpdateAccountServicePrincipalRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public UpdateAccountServicePrincipalRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public UpdateAccountServicePrincipalRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateAccountServicePrincipalRequest that = (UpdateAccountServicePrincipalRequest) o;
+ return Objects.equals(active, that.active)
+ && Objects.equals(applicationId, that.applicationId)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(id, that.id)
+ && Objects.equals(roles, that.roles);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(active, applicationId, displayName, externalId, id, roles);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateAccountServicePrincipalRequest.class)
+ .add("active", active)
+ .add("applicationId", applicationId)
+ .add("displayName", displayName)
+ .add("externalId", externalId)
+ .add("id", id)
+ .add("roles", roles)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountUserRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountUserRequest.java
new file mode 100755
index 000000000..c078bac65
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateAccountUserRequest.java
@@ -0,0 +1,150 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class UpdateAccountUserRequest {
+ /** If this user is active */
+ @JsonProperty("active")
+ private Boolean active;
+
+ /** String that represents a concatenation of given and family names. For example `John Smith`. */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** All the emails associated with the Databricks user. */
+ @JsonProperty("emails")
+ private Collection emails;
+
+ /** External ID is not currently supported. It is reserved for future use. */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** Databricks user ID. */
+ @JsonIgnore private String id;
+
+ /** */
+ @JsonProperty("name")
+ private Name name;
+
+ /** Indicates if the group has the admin role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ /** Email address of the Databricks user. */
+ @JsonProperty("userName")
+ private String userName;
+
+ public UpdateAccountUserRequest setActive(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public Boolean getActive() {
+ return active;
+ }
+
+ public UpdateAccountUserRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public UpdateAccountUserRequest setEmails(Collection emails) {
+ this.emails = emails;
+ return this;
+ }
+
+ public Collection getEmails() {
+ return emails;
+ }
+
+ public UpdateAccountUserRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public UpdateAccountUserRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public UpdateAccountUserRequest setName(Name name) {
+ this.name = name;
+ return this;
+ }
+
+ public Name getName() {
+ return name;
+ }
+
+ public UpdateAccountUserRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ public UpdateAccountUserRequest setUserName(String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateAccountUserRequest that = (UpdateAccountUserRequest) o;
+ return Objects.equals(active, that.active)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(emails, that.emails)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(id, that.id)
+ && Objects.equals(name, that.name)
+ && Objects.equals(roles, that.roles)
+ && Objects.equals(userName, that.userName);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(active, displayName, emails, externalId, id, name, roles, userName);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateAccountUserRequest.class)
+ .add("active", active)
+ .add("displayName", displayName)
+ .add("emails", emails)
+ .add("externalId", externalId)
+ .add("id", id)
+ .add("name", name)
+ .add("roles", roles)
+ .add("userName", userName)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateGroupRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateGroupRequest.java
new file mode 100755
index 000000000..70892ebff
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateGroupRequest.java
@@ -0,0 +1,172 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class UpdateGroupRequest {
+ /** String that represents a human-readable group name */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /**
+ * Entitlements assigned to the group. See [assigning entitlements] for a full list of supported
+ * values.
+ *
+ * [assigning entitlements]:
+ * https://docs.databricks.com/administration-guide/users-groups/index.html#assigning-entitlements
+ */
+ @JsonProperty("entitlements")
+ private Collection entitlements;
+
+ /** */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** */
+ @JsonProperty("groups")
+ private Collection groups;
+
+ /** Databricks group ID */
+ @JsonIgnore private String id;
+
+ /** */
+ @JsonProperty("members")
+ private Collection members;
+
+ /** Container for the group identifier. Workspace local versus account. */
+ @JsonProperty("meta")
+ private ResourceMeta meta;
+
+ /** Corresponds to AWS instance profile/arn role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ /** The schema of the group. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ public UpdateGroupRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public UpdateGroupRequest setEntitlements(Collection entitlements) {
+ this.entitlements = entitlements;
+ return this;
+ }
+
+ public Collection getEntitlements() {
+ return entitlements;
+ }
+
+ public UpdateGroupRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public UpdateGroupRequest setGroups(Collection groups) {
+ this.groups = groups;
+ return this;
+ }
+
+ public Collection getGroups() {
+ return groups;
+ }
+
+ public UpdateGroupRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public UpdateGroupRequest setMembers(Collection members) {
+ this.members = members;
+ return this;
+ }
+
+ public Collection getMembers() {
+ return members;
+ }
+
+ public UpdateGroupRequest setMeta(ResourceMeta meta) {
+ this.meta = meta;
+ return this;
+ }
+
+ public ResourceMeta getMeta() {
+ return meta;
+ }
+
+ public UpdateGroupRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ public UpdateGroupRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateGroupRequest that = (UpdateGroupRequest) o;
+ return Objects.equals(displayName, that.displayName)
+ && Objects.equals(entitlements, that.entitlements)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(groups, that.groups)
+ && Objects.equals(id, that.id)
+ && Objects.equals(members, that.members)
+ && Objects.equals(meta, that.meta)
+ && Objects.equals(roles, that.roles)
+ && Objects.equals(schemas, that.schemas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ displayName, entitlements, externalId, groups, id, members, meta, roles, schemas);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateGroupRequest.class)
+ .add("displayName", displayName)
+ .add("entitlements", entitlements)
+ .add("externalId", externalId)
+ .add("groups", groups)
+ .add("id", id)
+ .add("members", members)
+ .add("meta", meta)
+ .add("roles", roles)
+ .add("schemas", schemas)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateServicePrincipalRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateServicePrincipalRequest.java
new file mode 100755
index 000000000..d9dcbe3e1
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateServicePrincipalRequest.java
@@ -0,0 +1,172 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class UpdateServicePrincipalRequest {
+ /** If this user is active */
+ @JsonProperty("active")
+ private Boolean active;
+
+ /** UUID relating to the service principal */
+ @JsonProperty("applicationId")
+ private String applicationId;
+
+ /** String that represents a concatenation of given and family names. */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /**
+ * Entitlements assigned to the service principal. See [assigning entitlements] for a full list of
+ * supported values.
+ *
+ * [assigning entitlements]:
+ * https://docs.databricks.com/administration-guide/users-groups/index.html#assigning-entitlements
+ */
+ @JsonProperty("entitlements")
+ private Collection entitlements;
+
+ /** */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** */
+ @JsonProperty("groups")
+ private Collection groups;
+
+ /** Databricks service principal ID. */
+ @JsonIgnore private String id;
+
+ /** Corresponds to AWS instance profile/arn role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ /** The schema of the List response. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ public UpdateServicePrincipalRequest setActive(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public Boolean getActive() {
+ return active;
+ }
+
+ public UpdateServicePrincipalRequest setApplicationId(String applicationId) {
+ this.applicationId = applicationId;
+ return this;
+ }
+
+ public String getApplicationId() {
+ return applicationId;
+ }
+
+ public UpdateServicePrincipalRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public UpdateServicePrincipalRequest setEntitlements(Collection entitlements) {
+ this.entitlements = entitlements;
+ return this;
+ }
+
+ public Collection getEntitlements() {
+ return entitlements;
+ }
+
+ public UpdateServicePrincipalRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public UpdateServicePrincipalRequest setGroups(Collection groups) {
+ this.groups = groups;
+ return this;
+ }
+
+ public Collection getGroups() {
+ return groups;
+ }
+
+ public UpdateServicePrincipalRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public UpdateServicePrincipalRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ public UpdateServicePrincipalRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateServicePrincipalRequest that = (UpdateServicePrincipalRequest) o;
+ return Objects.equals(active, that.active)
+ && Objects.equals(applicationId, that.applicationId)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(entitlements, that.entitlements)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(groups, that.groups)
+ && Objects.equals(id, that.id)
+ && Objects.equals(roles, that.roles)
+ && Objects.equals(schemas, that.schemas);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ active, applicationId, displayName, entitlements, externalId, groups, id, roles, schemas);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateServicePrincipalRequest.class)
+ .add("active", active)
+ .add("applicationId", applicationId)
+ .add("displayName", displayName)
+ .add("entitlements", entitlements)
+ .add("externalId", externalId)
+ .add("groups", groups)
+ .add("id", id)
+ .add("roles", roles)
+ .add("schemas", schemas)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateUserRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateUserRequest.java
new file mode 100755
index 000000000..cf1bd8e66
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UpdateUserRequest.java
@@ -0,0 +1,219 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+@Generated
+public class UpdateUserRequest {
+ /** If this user is active */
+ @JsonProperty("active")
+ private Boolean active;
+
+ /**
+ * String that represents a concatenation of given and family names. For example `John Smith`.
+ * This field cannot be updated through the Workspace SCIM APIs when [identity federation is
+ * enabled]. Use Account SCIM APIs to update `displayName`.
+ *
+ * [identity federation is enabled]:
+ * https://docs.databricks.com/administration-guide/users-groups/best-practices.html#enable-identity-federation
+ */
+ @JsonProperty("displayName")
+ private String displayName;
+
+ /** All the emails associated with the Databricks user. */
+ @JsonProperty("emails")
+ private Collection emails;
+
+ /**
+ * Entitlements assigned to the user. See [assigning entitlements] for a full list of supported
+ * values.
+ *
+ * [assigning entitlements]:
+ * https://docs.databricks.com/administration-guide/users-groups/index.html#assigning-entitlements
+ */
+ @JsonProperty("entitlements")
+ private Collection entitlements;
+
+ /** External ID is not currently supported. It is reserved for future use. */
+ @JsonProperty("externalId")
+ private String externalId;
+
+ /** */
+ @JsonProperty("groups")
+ private Collection groups;
+
+ /** Databricks user ID. */
+ @JsonIgnore private String id;
+
+ /** */
+ @JsonProperty("name")
+ private Name name;
+
+ /** Corresponds to AWS instance profile/arn role. */
+ @JsonProperty("roles")
+ private Collection roles;
+
+ /** The schema of the user. */
+ @JsonProperty("schemas")
+ private Collection schemas;
+
+ /** Email address of the Databricks user. */
+ @JsonProperty("userName")
+ private String userName;
+
+ public UpdateUserRequest setActive(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public Boolean getActive() {
+ return active;
+ }
+
+ public UpdateUserRequest setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public UpdateUserRequest setEmails(Collection emails) {
+ this.emails = emails;
+ return this;
+ }
+
+ public Collection getEmails() {
+ return emails;
+ }
+
+ public UpdateUserRequest setEntitlements(Collection entitlements) {
+ this.entitlements = entitlements;
+ return this;
+ }
+
+ public Collection getEntitlements() {
+ return entitlements;
+ }
+
+ public UpdateUserRequest setExternalId(String externalId) {
+ this.externalId = externalId;
+ return this;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public UpdateUserRequest setGroups(Collection groups) {
+ this.groups = groups;
+ return this;
+ }
+
+ public Collection getGroups() {
+ return groups;
+ }
+
+ public UpdateUserRequest setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public UpdateUserRequest setName(Name name) {
+ this.name = name;
+ return this;
+ }
+
+ public Name getName() {
+ return name;
+ }
+
+ public UpdateUserRequest setRoles(Collection roles) {
+ this.roles = roles;
+ return this;
+ }
+
+ public Collection getRoles() {
+ return roles;
+ }
+
+ public UpdateUserRequest setSchemas(Collection schemas) {
+ this.schemas = schemas;
+ return this;
+ }
+
+ public Collection getSchemas() {
+ return schemas;
+ }
+
+ public UpdateUserRequest setUserName(String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateUserRequest that = (UpdateUserRequest) o;
+ return Objects.equals(active, that.active)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(emails, that.emails)
+ && Objects.equals(entitlements, that.entitlements)
+ && Objects.equals(externalId, that.externalId)
+ && Objects.equals(groups, that.groups)
+ && Objects.equals(id, that.id)
+ && Objects.equals(name, that.name)
+ && Objects.equals(roles, that.roles)
+ && Objects.equals(schemas, that.schemas)
+ && Objects.equals(userName, that.userName);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ active,
+ displayName,
+ emails,
+ entitlements,
+ externalId,
+ groups,
+ id,
+ name,
+ roles,
+ schemas,
+ userName);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateUserRequest.class)
+ .add("active", active)
+ .add("displayName", displayName)
+ .add("emails", emails)
+ .add("entitlements", entitlements)
+ .add("externalId", externalId)
+ .add("groups", groups)
+ .add("id", id)
+ .add("name", name)
+ .add("roles", roles)
+ .add("schemas", schemas)
+ .add("userName", userName)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2API.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2API.java
new file mode 100755
index 000000000..7ab1654a6
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2API.java
@@ -0,0 +1,132 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.Paginator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * User identities recognized by Databricks and represented by email addresses.
+ *
+ * Databricks recommends using SCIM provisioning to sync users and groups automatically from your
+ * identity provider to your Databricks workspace. SCIM streamlines onboarding a new employee or
+ * team by using your identity provider to create users and groups in Databricks workspace and give
+ * them the proper level of access. When a user leaves your organization or no longer needs access
+ * to Databricks workspace, admins can terminate the user in your identity provider and that user’s
+ * account will also be removed from Databricks workspace. This ensures a consistent offboarding
+ * process and prevents unauthorized users from accessing sensitive data.
+ */
+@Generated
+public class UsersV2API {
+ private static final Logger LOG = LoggerFactory.getLogger(UsersV2API.class);
+
+ private final UsersV2Service impl;
+
+ /** Regular-use constructor */
+ public UsersV2API(ApiClient apiClient) {
+ impl = new UsersV2Impl(apiClient);
+ }
+
+ /** Constructor for mocks */
+ public UsersV2API(UsersV2Service mock) {
+ impl = mock;
+ }
+
+ /**
+ * Creates a new user in the Databricks workspace. This new user will also be added to the
+ * Databricks account.
+ */
+ public User create(CreateUserRequest request) {
+ return impl.create(request);
+ }
+
+ public void delete(String id) {
+ delete(new DeleteUserRequest().setId(id));
+ }
+
+ /**
+ * Deletes a user. Deleting a user from a Databricks workspace also removes objects associated
+ * with the user.
+ */
+ public void delete(DeleteUserRequest request) {
+ impl.delete(request);
+ }
+
+ public User get(String id) {
+ return get(new GetUserRequest().setId(id));
+ }
+
+ /** Gets information for a specific user in Databricks workspace. */
+ public User get(GetUserRequest request) {
+ return impl.get(request);
+ }
+
+ /** Gets the permission levels that a user can have on an object. */
+ public GetPasswordPermissionLevelsResponse getPermissionLevels(
+ GetPasswordPermissionLevelsRequest request) {
+ return impl.getPermissionLevels(request);
+ }
+
+ /**
+ * Gets the permissions of all passwords. Passwords can inherit permissions from their root
+ * object.
+ */
+ public PasswordPermissions getPermissions(GetPasswordPermissionsRequest request) {
+ return impl.getPermissions(request);
+ }
+
+ /** Gets details for all the users associated with a Databricks workspace. */
+ public Iterable list(ListUsersRequest request) {
+ request.setStartIndex(1L);
+ if (request.getCount() == null) {
+ request.setCount(10000L);
+ }
+ return new Paginator<>(
+ request,
+ impl::list,
+ ListUsersResponse::getResources,
+ response -> {
+ Long offset = request.getStartIndex();
+ if (offset == null) {
+ offset = 0L;
+ }
+ offset += response.getResources().size();
+ return request.setStartIndex(offset);
+ });
+ }
+
+ /**
+ * Partially updates a user resource by applying the supplied operations on specific user
+ * attributes.
+ */
+ public void patch(PatchUserRequest request) {
+ impl.patch(request);
+ }
+
+ /**
+ * Sets permissions on an object, replacing existing permissions if they exist. Deletes all direct
+ * permissions if none are specified. Objects can inherit permissions from their root object.
+ */
+ public PasswordPermissions setPermissions(PasswordPermissionsRequest request) {
+ return impl.setPermissions(request);
+ }
+
+ /** Replaces a user's information with the data supplied in request. */
+ public void update(UpdateUserRequest request) {
+ impl.update(request);
+ }
+
+ /**
+ * Updates the permissions on all passwords. Passwords can inherit permissions from their root
+ * object.
+ */
+ public PasswordPermissions updatePermissions(PasswordPermissionsRequest request) {
+ return impl.updatePermissions(request);
+ }
+
+ public UsersV2Service impl() {
+ return impl;
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2Impl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2Impl.java
new file mode 100755
index 000000000..8119232b1
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2Impl.java
@@ -0,0 +1,153 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.core.DatabricksException;
+import com.databricks.sdk.core.http.Request;
+import com.databricks.sdk.support.Generated;
+import java.io.IOException;
+
+/** Package-local implementation of UsersV2 */
+@Generated
+class UsersV2Impl implements UsersV2Service {
+ private final ApiClient apiClient;
+
+ public UsersV2Impl(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ @Override
+ public User create(CreateUserRequest request) {
+ String path = "/api/2.0/preview/scim/v2/Users";
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ return apiClient.execute(req, User.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void delete(DeleteUserRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/Users/%s", request.getId());
+ try {
+ Request req = new Request("DELETE", path);
+ ApiClient.setQuery(req, request);
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public User get(GetUserRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/Users/%s", request.getId());
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, User.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public GetPasswordPermissionLevelsResponse getPermissionLevels(
+ GetPasswordPermissionLevelsRequest request) {
+ String path = "/api/2.0/permissions/authorization/passwords/permissionLevels";
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, GetPasswordPermissionLevelsResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public PasswordPermissions getPermissions(GetPasswordPermissionsRequest request) {
+ String path = "/api/2.0/permissions/authorization/passwords";
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, PasswordPermissions.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListUsersResponse list(ListUsersRequest request) {
+ String path = "/api/2.0/preview/scim/v2/Users";
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, ListUsersResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void patch(PatchUserRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/Users/%s", request.getId());
+ try {
+ Request req = new Request("PATCH", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public PasswordPermissions setPermissions(PasswordPermissionsRequest request) {
+ String path = "/api/2.0/permissions/authorization/passwords";
+ try {
+ Request req = new Request("PUT", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ return apiClient.execute(req, PasswordPermissions.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void update(UpdateUserRequest request) {
+ String path = String.format("/api/2.0/preview/scim/v2/Users/%s", request.getId());
+ try {
+ Request req = new Request("PUT", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public PasswordPermissions updatePermissions(PasswordPermissionsRequest request) {
+ String path = "/api/2.0/permissions/authorization/passwords";
+ try {
+ Request req = new Request("PATCH", path, apiClient.serialize(request));
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ return apiClient.execute(req, PasswordPermissions.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2Service.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2Service.java
new file mode 100755
index 000000000..2ab74a89f
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/UsersV2Service.java
@@ -0,0 +1,71 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.iam;
+
+import com.databricks.sdk.support.Generated;
+
+/**
+ * User identities recognized by Databricks and represented by email addresses.
+ *
+ * Databricks recommends using SCIM provisioning to sync users and groups automatically from your
+ * identity provider to your Databricks workspace. SCIM streamlines onboarding a new employee or
+ * team by using your identity provider to create users and groups in Databricks workspace and give
+ * them the proper level of access. When a user leaves your organization or no longer needs access
+ * to Databricks workspace, admins can terminate the user in your identity provider and that user’s
+ * account will also be removed from Databricks workspace. This ensures a consistent offboarding
+ * process and prevents unauthorized users from accessing sensitive data.
+ *
+ *
This is the high-level interface, that contains generated methods.
+ *
+ *
Evolving: this interface is under development. Method signatures may change.
+ */
+@Generated
+public interface UsersV2Service {
+ /**
+ * Creates a new user in the Databricks workspace. This new user will also be added to the
+ * Databricks account.
+ */
+ User create(CreateUserRequest createUserRequest);
+
+ /**
+ * Deletes a user. Deleting a user from a Databricks workspace also removes objects associated
+ * with the user.
+ */
+ void delete(DeleteUserRequest deleteUserRequest);
+
+ /** Gets information for a specific user in Databricks workspace. */
+ User get(GetUserRequest getUserRequest);
+
+ /** Gets the permission levels that a user can have on an object. */
+ GetPasswordPermissionLevelsResponse getPermissionLevels(
+ GetPasswordPermissionLevelsRequest getPasswordPermissionLevelsRequest);
+
+ /**
+ * Gets the permissions of all passwords. Passwords can inherit permissions from their root
+ * object.
+ */
+ PasswordPermissions getPermissions(GetPasswordPermissionsRequest getPasswordPermissionsRequest);
+
+ /** Gets details for all the users associated with a Databricks workspace. */
+ ListUsersResponse list(ListUsersRequest listUsersRequest);
+
+ /**
+ * Partially updates a user resource by applying the supplied operations on specific user
+ * attributes.
+ */
+ void patch(PatchUserRequest patchUserRequest);
+
+ /**
+ * Sets permissions on an object, replacing existing permissions if they exist. Deletes all direct
+ * permissions if none are specified. Objects can inherit permissions from their root object.
+ */
+ PasswordPermissions setPermissions(PasswordPermissionsRequest passwordPermissionsRequest);
+
+ /** Replaces a user's information with the data supplied in request. */
+ void update(UpdateUserRequest updateUserRequest);
+
+ /**
+ * Updates the permissions on all passwords. Passwords can inherit permissions from their root
+ * object.
+ */
+ PasswordPermissions updatePermissions(PasswordPermissionsRequest passwordPermissionsRequest);
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ExportRunOutput.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ExportRunOutput.java
index 09a4c43b7..160338971 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ExportRunOutput.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/ExportRunOutput.java
@@ -13,9 +13,7 @@
public class ExportRunOutput {
/**
* The exported content in HTML format (one for every view item). To extract the HTML notebook
- * from the JSON response, download and run this [Python script].
- *
- *
[Python script]: https://docs.databricks.com/en/_static/examples/extract.py
+ * from the JSON response, download and run this [Python script](/_static/examples/extract.py).
*/
@JsonProperty("views")
private Collection views;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunTask.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunTask.java
index 46418668b..c68229720 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunTask.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunTask.java
@@ -24,7 +24,7 @@ public class RunTask {
/**
* The task runs a [clean rooms] notebook when the `clean_rooms_notebook_task` field is present.
*
- * [clean rooms]: https://docs.databricks.com/en/clean-rooms/index.html
+ *
[clean rooms]: https://docs.databricks.com/clean-rooms/index.html
*/
@JsonProperty("clean_rooms_notebook_task")
private CleanRoomsNotebookTask cleanRoomsNotebookTask;
@@ -254,21 +254,9 @@ public class RunTask {
private SparkPythonTask sparkPythonTask;
/**
- * (Legacy) The task runs the spark-submit script when the `spark_submit_task` field is present.
- * This task can run only on new clusters and is not compatible with serverless compute.
- *
- *
In the `new_cluster` specification, `libraries` and `spark_conf` are not supported. Instead,
- * use `--jars` and `--py-files` to add Java and Python libraries and `--conf` to set the Spark
- * configurations.
- *
- *
`master`, `deploy-mode`, and `executor-cores` are automatically configured by Databricks;
- * you _cannot_ specify them in parameters.
- *
- *
By default, the Spark submit job uses all available memory (excluding reserved memory for
- * Databricks services). You can set `--driver-memory`, and `--executor-memory` to a smaller value
- * to leave some room for off-heap usage.
- *
- *
The `--jars`, `--py-files`, `--files` arguments support DBFS and S3 paths.
+ * (Legacy) The task runs the spark-submit script when the spark_submit_task field is present.
+ * Databricks recommends using the spark_jar_task instead; see [Spark Submit task for
+ * jobs](/jobs/spark-submit).
*/
@JsonProperty("spark_submit_task")
private SparkSubmitTask sparkSubmitTask;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunType.java
index f0392d503..1b20cd23c 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunType.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunType.java
@@ -16,9 +16,7 @@
public enum RunType {
JOB_RUN, // Normal job run. A run created with :method:jobs/runNow.
SUBMIT_RUN, // Submit run. A run created with :method:jobs/submit.
- WORKFLOW_RUN, // Workflow run. A run created with [dbutils.notebook.run].
- //
- // [dbutils.notebook.run]:
- // https://docs.databricks.com/dev-tools/databricks-utils.html#dbutils-workflow
+ WORKFLOW_RUN, // Workflow run. A run created with
+ // [dbutils.notebook.run](/dev-tools/databricks-utils.html#dbutils-workflow).
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitTask.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitTask.java
index 07677312a..2ca6b1107 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitTask.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitTask.java
@@ -13,7 +13,7 @@ public class SubmitTask {
/**
* The task runs a [clean rooms] notebook when the `clean_rooms_notebook_task` field is present.
*
- *
[clean rooms]: https://docs.databricks.com/en/clean-rooms/index.html
+ *
[clean rooms]: https://docs.databricks.com/clean-rooms/index.html
*/
@JsonProperty("clean_rooms_notebook_task")
private CleanRoomsNotebookTask cleanRoomsNotebookTask;
@@ -154,21 +154,9 @@ public class SubmitTask {
private SparkPythonTask sparkPythonTask;
/**
- * (Legacy) The task runs the spark-submit script when the `spark_submit_task` field is present.
- * This task can run only on new clusters and is not compatible with serverless compute.
- *
- *
In the `new_cluster` specification, `libraries` and `spark_conf` are not supported. Instead,
- * use `--jars` and `--py-files` to add Java and Python libraries and `--conf` to set the Spark
- * configurations.
- *
- *
`master`, `deploy-mode`, and `executor-cores` are automatically configured by Databricks;
- * you _cannot_ specify them in parameters.
- *
- *
By default, the Spark submit job uses all available memory (excluding reserved memory for
- * Databricks services). You can set `--driver-memory`, and `--executor-memory` to a smaller value
- * to leave some room for off-heap usage.
- *
- *
The `--jars`, `--py-files`, `--files` arguments support DBFS and S3 paths.
+ * (Legacy) The task runs the spark-submit script when the spark_submit_task field is present.
+ * Databricks recommends using the spark_jar_task instead; see [Spark Submit task for
+ * jobs](/jobs/spark-submit).
*/
@JsonProperty("spark_submit_task")
private SparkSubmitTask sparkSubmitTask;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Task.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Task.java
index a4e7904e1..764d19238 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Task.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Task.java
@@ -13,7 +13,7 @@ public class Task {
/**
* The task runs a [clean rooms] notebook when the `clean_rooms_notebook_task` field is present.
*
- *
[clean rooms]: https://docs.databricks.com/en/clean-rooms/index.html
+ *
[clean rooms]: https://docs.databricks.com/clean-rooms/index.html
*/
@JsonProperty("clean_rooms_notebook_task")
private CleanRoomsNotebookTask cleanRoomsNotebookTask;
@@ -201,21 +201,9 @@ public class Task {
private SparkPythonTask sparkPythonTask;
/**
- * (Legacy) The task runs the spark-submit script when the `spark_submit_task` field is present.
- * This task can run only on new clusters and is not compatible with serverless compute.
- *
- *
In the `new_cluster` specification, `libraries` and `spark_conf` are not supported. Instead,
- * use `--jars` and `--py-files` to add Java and Python libraries and `--conf` to set the Spark
- * configurations.
- *
- *
`master`, `deploy-mode`, and `executor-cores` are automatically configured by Databricks;
- * you _cannot_ specify them in parameters.
- *
- *
By default, the Spark submit job uses all available memory (excluding reserved memory for
- * Databricks services). You can set `--driver-memory`, and `--executor-memory` to a smaller value
- * to leave some room for off-heap usage.
- *
- *
The `--jars`, `--py-files`, `--files` arguments support DBFS and S3 paths.
+ * (Legacy) The task runs the spark-submit script when the spark_submit_task field is present.
+ * Databricks recommends using the spark_jar_task instead; see [Spark Submit task for
+ * jobs](/jobs/spark-submit).
*/
@JsonProperty("spark_submit_task")
private SparkSubmitTask sparkSubmitTask;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinition.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinition.java
index 747cfe8cb..6c311c809 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinition.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinition.java
@@ -24,6 +24,13 @@ public class IngestionPipelineDefinition {
@JsonProperty("ingestion_gateway_id")
private String ingestionGatewayId;
+ /**
+ * Netsuite only configuration. When the field is set for a netsuite connector, the jar stored in
+ * the field will be validated and added to the classpath of pipeline's cluster.
+ */
+ @JsonProperty("netsuite_jar_path")
+ private String netsuiteJarPath;
+
/**
* Required. Settings specifying tables to replicate and the destination for the replicated
* tables.
@@ -67,6 +74,15 @@ public String getIngestionGatewayId() {
return ingestionGatewayId;
}
+ public IngestionPipelineDefinition setNetsuiteJarPath(String netsuiteJarPath) {
+ this.netsuiteJarPath = netsuiteJarPath;
+ return this;
+ }
+
+ public String getNetsuiteJarPath() {
+ return netsuiteJarPath;
+ }
+
public IngestionPipelineDefinition setObjects(Collection objects) {
this.objects = objects;
return this;
@@ -111,6 +127,7 @@ public boolean equals(Object o) {
IngestionPipelineDefinition that = (IngestionPipelineDefinition) o;
return Objects.equals(connectionName, that.connectionName)
&& Objects.equals(ingestionGatewayId, that.ingestionGatewayId)
+ && Objects.equals(netsuiteJarPath, that.netsuiteJarPath)
&& Objects.equals(objects, that.objects)
&& Objects.equals(sourceConfigurations, that.sourceConfigurations)
&& Objects.equals(sourceType, that.sourceType)
@@ -122,6 +139,7 @@ public int hashCode() {
return Objects.hash(
connectionName,
ingestionGatewayId,
+ netsuiteJarPath,
objects,
sourceConfigurations,
sourceType,
@@ -133,6 +151,7 @@ public String toString() {
return new ToStringer(IngestionPipelineDefinition.class)
.add("connectionName", connectionName)
.add("ingestionGatewayId", ingestionGatewayId)
+ .add("netsuiteJarPath", netsuiteJarPath)
.add("objects", objects)
.add("sourceConfigurations", sourceConfigurations)
.add("sourceType", sourceType)
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinitionWorkdayReportParameters.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinitionWorkdayReportParameters.java
new file mode 100755
index 000000000..503dd2667
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinitionWorkdayReportParameters.java
@@ -0,0 +1,93 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.pipelines;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Objects;
+
+@Generated
+public class IngestionPipelineDefinitionWorkdayReportParameters {
+ /**
+ * (Optional) Marks the report as incremental. This field is deprecated and should not be used.
+ * Use `parameters` instead. The incremental behavior is now controlled by the `parameters` field.
+ */
+ @JsonProperty("incremental")
+ private Boolean incremental;
+
+ /**
+ * Parameters for the Workday report. Each key represents the parameter name (e.g., "start_date",
+ * "end_date"), and the corresponding value is a SQL-like expression used to compute the parameter
+ * value at runtime. Example: { "start_date": "{ coalesce(current_offset(), date(\"2025-02-01\"))
+ * }", "end_date": "{ current_date() - INTERVAL 1 DAY }" }
+ */
+ @JsonProperty("parameters")
+ private Map parameters;
+
+ /**
+ * (Optional) Additional custom parameters for Workday Report This field is deprecated and should
+ * not be used. Use `parameters` instead.
+ */
+ @JsonProperty("report_parameters")
+ private Collection
+ reportParameters;
+
+ public IngestionPipelineDefinitionWorkdayReportParameters setIncremental(Boolean incremental) {
+ this.incremental = incremental;
+ return this;
+ }
+
+ public Boolean getIncremental() {
+ return incremental;
+ }
+
+ public IngestionPipelineDefinitionWorkdayReportParameters setParameters(
+ Map parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+ public Map getParameters() {
+ return parameters;
+ }
+
+ public IngestionPipelineDefinitionWorkdayReportParameters setReportParameters(
+ Collection
+ reportParameters) {
+ this.reportParameters = reportParameters;
+ return this;
+ }
+
+ public Collection
+ getReportParameters() {
+ return reportParameters;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ IngestionPipelineDefinitionWorkdayReportParameters that =
+ (IngestionPipelineDefinitionWorkdayReportParameters) o;
+ return Objects.equals(incremental, that.incremental)
+ && Objects.equals(parameters, that.parameters)
+ && Objects.equals(reportParameters, that.reportParameters);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(incremental, parameters, reportParameters);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(IngestionPipelineDefinitionWorkdayReportParameters.class)
+ .add("incremental", incremental)
+ .add("parameters", parameters)
+ .add("reportParameters", reportParameters)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue.java
new file mode 100755
index 000000000..36272c611
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue.java
@@ -0,0 +1,64 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.pipelines;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+@Generated
+public class IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue {
+ /** Key for the report parameter, can be a column name or other metadata */
+ @JsonProperty("key")
+ private String key;
+
+ /**
+ * Value for the report parameter. Possible values it can take are these sql functions: 1.
+ * coalesce(current_offset(), date("YYYY-MM-DD")) -> if current_offset() is null, then the passed
+ * date, else current_offset() 2. current_date() 3. date_sub(current_date(), x) -> subtract x
+ * (some non-negative integer) days from current date
+ */
+ @JsonProperty("value")
+ private String value;
+
+ public IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue setKey(String key) {
+ this.key = key;
+ return this;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue setValue(String value) {
+ this.value = value;
+ return this;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue that =
+ (IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue) o;
+ return Objects.equals(key, that.key) && Objects.equals(value, that.value);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(key, value);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue.class)
+ .add("key", key)
+ .add("value", value)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/TableSpecificConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/TableSpecificConfig.java
index 9d9d711e0..7626f06c3 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/TableSpecificConfig.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/TableSpecificConfig.java
@@ -55,6 +55,10 @@ public class TableSpecificConfig {
@JsonProperty("sequence_by")
private Collection sequenceBy;
+ /** (Optional) Additional custom parameters for Workday Report */
+ @JsonProperty("workday_report_parameters")
+ private IngestionPipelineDefinitionWorkdayReportParameters workdayReportParameters;
+
public TableSpecificConfig setExcludeColumns(Collection excludeColumns) {
this.excludeColumns = excludeColumns;
return this;
@@ -122,6 +126,16 @@ public Collection getSequenceBy() {
return sequenceBy;
}
+ public TableSpecificConfig setWorkdayReportParameters(
+ IngestionPipelineDefinitionWorkdayReportParameters workdayReportParameters) {
+ this.workdayReportParameters = workdayReportParameters;
+ return this;
+ }
+
+ public IngestionPipelineDefinitionWorkdayReportParameters getWorkdayReportParameters() {
+ return workdayReportParameters;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -133,7 +147,8 @@ public boolean equals(Object o) {
&& Objects.equals(queryBasedConnectorConfig, that.queryBasedConnectorConfig)
&& Objects.equals(salesforceIncludeFormulaFields, that.salesforceIncludeFormulaFields)
&& Objects.equals(scdType, that.scdType)
- && Objects.equals(sequenceBy, that.sequenceBy);
+ && Objects.equals(sequenceBy, that.sequenceBy)
+ && Objects.equals(workdayReportParameters, that.workdayReportParameters);
}
@Override
@@ -145,7 +160,8 @@ public int hashCode() {
queryBasedConnectorConfig,
salesforceIncludeFormulaFields,
scdType,
- sequenceBy);
+ sequenceBy,
+ workdayReportParameters);
}
@Override
@@ -158,6 +174,7 @@ public String toString() {
.add("salesforceIncludeFormulaFields", salesforceIncludeFormulaFields)
.add("scdType", scdType)
.add("sequenceBy", sequenceBy)
+ .add("workdayReportParameters", workdayReportParameters)
.toString();
}
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesAPI.java
index 15d363eb0..a267952fe 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesAPI.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesAPI.java
@@ -14,19 +14,17 @@
* original schema, or provide alternate exposed names.
*/
@Generated
-public class SharesAPI {
+public class SharesAPI extends SharesExtAPI {
private static final Logger LOG = LoggerFactory.getLogger(SharesAPI.class);
- private final SharesService impl;
-
/** Regular-use constructor */
public SharesAPI(ApiClient apiClient) {
- impl = new SharesImpl(apiClient);
+ super(apiClient);
}
/** Constructor for mocks */
public SharesAPI(SharesService mock) {
- impl = mock;
+ super(mock);
}
/**
@@ -58,23 +56,19 @@ public ShareInfo get(GetShareRequest request) {
return impl.get(request);
}
- public Iterable list(String name) {
- return list(new ListSharesRequest().setName(name));
- }
-
/**
* Gets an array of data object shares from the metastore. The caller must be a metastore admin or
* the owner of the share. There is no guarantee of a specific ordering of the elements in the
* array.
*/
- public Iterable list(ListSharesRequest request) {
+ public Iterable listShares(SharesListRequest request) {
if (request.getMaxResults() == null) {
request.setMaxResults(0L);
}
return new Paginator<>(
request,
- impl::list,
+ impl::listShares,
ListSharesResponse::getShares,
response -> {
String token = response.getNextPageToken();
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesExtAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesExtAPI.java
new file mode 100644
index 000000000..0c62ff999
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesExtAPI.java
@@ -0,0 +1,44 @@
+package com.databricks.sdk.service.sharing;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.support.Paginator;
+
+class SharesExtAPI {
+
+ final SharesService impl;
+
+ public SharesExtAPI(ApiClient apiClient) {
+ impl = new SharesImpl(apiClient);
+ }
+
+ public SharesExtAPI(SharesService mock) {
+ impl = mock;
+ }
+
+ public Iterable list(String name) {
+ return list(new ListSharesRequest().setName(name));
+ }
+
+ /**
+ * Gets an array of data object shares from the metastore. The caller must be a metastore admin or
+ * the owner of the share. There is no guarantee of a specific ordering of the elements in the
+ * array.
+ */
+ public Iterable list(ListSharesRequest request) {
+
+ if (request.getMaxResults() == null) {
+ request.setMaxResults(0L);
+ }
+ return new Paginator<>(
+ request,
+ impl::list,
+ ListSharesResponse::getShares,
+ response -> {
+ String token = response.getNextPageToken();
+ if (token == null || token.isEmpty()) {
+ return null;
+ }
+ return request.setPageToken(token);
+ });
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesExtImpl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesExtImpl.java
new file mode 100644
index 000000000..a1ab2be87
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesExtImpl.java
@@ -0,0 +1,27 @@
+package com.databricks.sdk.service.sharing;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.core.DatabricksException;
+import com.databricks.sdk.core.http.Request;
+import java.io.IOException;
+
+class SharesExtImpl implements SharesExtService {
+ final ApiClient apiClient;
+
+ public SharesExtImpl(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ @Override
+ public ListSharesResponse list(ListSharesRequest request) {
+ String path = "/api/2.1/unity-catalog/shares";
+ try {
+ Request req = new Request("GET", path);
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ return apiClient.execute(req, ListSharesResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesExtService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesExtService.java
new file mode 100644
index 000000000..5ed431efe
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesExtService.java
@@ -0,0 +1,10 @@
+package com.databricks.sdk.service.sharing;
+
+interface SharesExtService {
+ /**
+ * Gets an array of data object shares from the metastore. The caller must be a metastore admin or
+ * the owner of the share. There is no guarantee of a specific ordering of the elements in the
+ * array.
+ */
+ ListSharesResponse list(ListSharesRequest listSharesRequest);
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesImpl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesImpl.java
index 716fe7628..6bc4812cf 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesImpl.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesImpl.java
@@ -9,11 +9,9 @@
/** Package-local implementation of Shares */
@Generated
-class SharesImpl implements SharesService {
- private final ApiClient apiClient;
-
+class SharesImpl extends SharesExtImpl implements SharesService {
public SharesImpl(ApiClient apiClient) {
- this.apiClient = apiClient;
+ super(apiClient);
}
@Override
@@ -56,7 +54,7 @@ public ShareInfo get(GetShareRequest request) {
}
@Override
- public ListSharesResponse list(ListSharesRequest request) {
+ public ListSharesResponse listShares(SharesListRequest request) {
String path = "/api/2.1/unity-catalog/shares";
try {
Request req = new Request("GET", path);
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesListRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesListRequest.java
new file mode 100755
index 000000000..b3d076c0c
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesListRequest.java
@@ -0,0 +1,69 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.sharing;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.QueryParam;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.util.Objects;
+
+@Generated
+public class SharesListRequest {
+ /**
+ * Maximum number of shares to return. - when set to 0, the page length is set to a server
+ * configured value (recommended); - when set to a value greater than 0, the page length is the
+ * minimum of this value and a server configured value; - when set to a value less than 0, an
+ * invalid parameter error is returned; - If not set, all valid shares are returned (not
+ * recommended). - Note: The number of returned shares might be less than the specified
+ * max_results size, even zero. The only definitive indication that no further shares can be
+ * fetched is when the next_page_token is unset from the response.
+ */
+ @JsonIgnore
+ @QueryParam("max_results")
+ private Long maxResults;
+
+ /** Opaque pagination token to go to next page based on previous query. */
+ @JsonIgnore
+ @QueryParam("page_token")
+ private String pageToken;
+
+ public SharesListRequest setMaxResults(Long maxResults) {
+ this.maxResults = maxResults;
+ return this;
+ }
+
+ public Long getMaxResults() {
+ return maxResults;
+ }
+
+ public SharesListRequest setPageToken(String pageToken) {
+ this.pageToken = pageToken;
+ return this;
+ }
+
+ public String getPageToken() {
+ return pageToken;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ SharesListRequest that = (SharesListRequest) o;
+ return Objects.equals(maxResults, that.maxResults) && Objects.equals(pageToken, that.pageToken);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(maxResults, pageToken);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(SharesListRequest.class)
+ .add("maxResults", maxResults)
+ .add("pageToken", pageToken)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesService.java
index 7efbc554c..dc111d87d 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesService.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesService.java
@@ -14,7 +14,7 @@
* Evolving: this interface is under development. Method signatures may change.
*/
@Generated
-public interface SharesService {
+public interface SharesService extends SharesExtService {
/**
* Creates a new share for data objects. Data objects can be added after creation with **update**.
* The caller must be a metastore admin or have the **CREATE_SHARE** privilege on the metastore.
@@ -35,7 +35,7 @@ public interface SharesService {
* the owner of the share. There is no guarantee of a specific ordering of the elements in the
* array.
*/
- ListSharesResponse list(ListSharesRequest listSharesRequest);
+ ListSharesResponse listShares(SharesListRequest sharesListRequest);
/**
* Gets the permissions for a data share from the metastore. The caller must be a metastore admin
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/TableInternalAttributesSharedTableType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/TableInternalAttributesSharedTableType.java
index 07f042522..ef6824f6c 100755
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/TableInternalAttributesSharedTableType.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/TableInternalAttributesSharedTableType.java
@@ -12,6 +12,7 @@ public enum TableInternalAttributesSharedTableType {
FOREIGN_ICEBERG_TABLE,
FOREIGN_TABLE,
MATERIALIZED_VIEW,
+ METRIC_VIEW,
STREAMING_TABLE,
VIEW,
}
diff --git a/scripts/cleanup-services.sh b/scripts/cleanup-services.sh
new file mode 100755
index 000000000..647a8c484
--- /dev/null
+++ b/scripts/cleanup-services.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+# Script to clean up generated service directories while preserving specific files
+# This script is configured for the Databricks SDK Java project
+
+set -e
+
+# Configuration
+SERVICE_DIR="databricks-sdk-java/src/main/java/com/databricks/sdk/service"
+
+# Files/directories to exclude from deletion (relative to service directory)
+# Add specific files or directories that should be preserved during cleanup
+EXCLUDES=(
+ "iam"
+ "sharing/SharesExtService.java"
+ "sharing/SharesExtImpl.java"
+ "sharing/SharesExtAPI.java"
+)
+
+echo "🧹 Cleaning service directory: $SERVICE_DIR"
+echo "📋 Exclusions: ${EXCLUDES[*]}"
+
+# Check if service directory exists
+if [[ ! -d "$SERVICE_DIR" ]]; then
+ echo "❌ Service directory not found: $SERVICE_DIR"
+ exit 1
+fi
+
+# Function to check if a file/directory should be excluded
+should_exclude() {
+ local item="$1"
+ local relative_path="${item#$SERVICE_DIR/}"
+ # Remove trailing slash if present
+ relative_path="${relative_path%/}"
+
+ for exclude_pattern in "${EXCLUDES[@]}"; do
+ if [[ -n "$exclude_pattern" ]]; then
+ # Handle directory exclusions (exact match)
+ if [[ "$relative_path" == "$exclude_pattern" ]]; then
+ return 0 # Should exclude
+ fi
+ # Handle file exclusions (check if this item contains the excluded file)
+ if [[ "$exclude_pattern" == *"/"* ]]; then
+ local exclude_dir="${exclude_pattern%%/*}"
+ if [[ "$relative_path" == "$exclude_dir" ]]; then
+ # This is a directory that contains excluded files, handle specially
+ return 2 # Special case: partial exclusion
+ fi
+ fi
+ fi
+ done
+ return 1 # Should not exclude
+}
+
+# Function to selectively clean a directory with file-level exclusions
+selective_clean_directory() {
+ local dir="$1"
+ local dir_name="${dir#$SERVICE_DIR/}"
+ dir_name="${dir_name%/}"
+
+ echo "🔍 Selectively cleaning directory: $dir_name"
+
+ # Find all files in this directory
+ while IFS= read -r -d '' file; do
+ local file_relative="${file#$SERVICE_DIR/}"
+ local should_keep=false
+
+ # Check if this file should be excluded
+ for exclude_pattern in "${EXCLUDES[@]}"; do
+ if [[ "$file_relative" == "$exclude_pattern" ]]; then
+ should_keep=true
+ break
+ fi
+ done
+
+ if $should_keep; then
+ echo "⏭️ Keeping: $file_relative"
+ else
+ echo "🗑️ Deleting: $file_relative"
+ rm -f "$file"
+ fi
+ done < <(find "$dir" -type f -print0)
+
+ # Remove empty subdirectories
+ find "$dir" -type d -empty -delete 2>/dev/null || true
+}
+
+# Find all items in the service directory (1 level deep)
+while IFS= read -r -d '' item; do
+ exclusion_result=$(should_exclude "$item"; echo $?)
+
+ case $exclusion_result in
+ 0) # Full exclusion
+ echo "⏭️ Skipping: ${item#$SERVICE_DIR/}"
+ ;;
+ 2) # Partial exclusion (directory with some excluded files)
+ selective_clean_directory "$item"
+ ;;
+ *) # No exclusion - delete entirely
+ echo "🗑️ Deleting: ${item#$SERVICE_DIR/}"
+ rm -rf "$item"
+ ;;
+ esac
+done < <(find "$SERVICE_DIR" -mindepth 1 -maxdepth 1 -type d -print0)
+
+echo "✅ Service directory cleanup completed"