@gooddata/sdk-backend-spi 11.40.0-alpha.3 → 11.40.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/index.d.ts CHANGED
@@ -51,6 +51,7 @@ export type { IOrganizationSettingsService } from "./organization/settings/index
51
51
  export type { IOrganizationExportTemplatesService } from "./organization/exportTemplates/index.js";
52
52
  export type { IWorkspaceUserGroupsQuery, IWorkspaceUserGroupsQueryOptions, IWorkspaceUserGroupsQueryResult, } from "./workspace/userGroups/index.js";
53
53
  export type { IWorkspaceAccessControlService } from "./workspace/accessControl/index.js";
54
+ export type { IObjectPermissionsObject, IWorkspaceObjectPermissionsService, } from "./workspace/objectPermissions/index.js";
54
55
  export type { IOrganizationUserService, IOrganizationUsersQuery, IOrganizationUsersQueryResult, IOrganizationUserGroupsQuery, IOrganizationUserGroupsQueryResult, } from "./organization/users/index.js";
55
56
  export type { IOrganizationPermissionService, IPermissionsAssignment, } from "./organization/permissions/index.js";
56
57
  export type { IOrganizationNotificationChannelService } from "./organization/notificationChannels/index.js";
@@ -117,6 +117,7 @@ import { INotificationChannelMetadataObject } from '@gooddata/sdk-model';
117
117
  import { INotificationChannelMetadataObjectDefinition } from '@gooddata/sdk-model';
118
118
  import { INotificationChannelTestResponse } from '@gooddata/sdk-model';
119
119
  import { INullableFilter } from '@gooddata/sdk-model';
120
+ import { IObjectAccessList } from '@gooddata/sdk-model';
120
121
  import type { IObjectCertificationWrite } from '@gooddata/sdk-model';
121
122
  import { IOpenAiConfig } from '@gooddata/sdk-model';
122
123
  import { IOrganizationAssignee } from '@gooddata/sdk-model';
@@ -166,6 +167,7 @@ import { LlmProviderTestResults } from '@gooddata/sdk-model';
166
167
  import type { MemoryItemStrategy } from '@gooddata/sdk-model';
167
168
  import { NotificationChannelDestinationType } from '@gooddata/sdk-model';
168
169
  import { ObjectOrigin } from '@gooddata/sdk-model';
170
+ import { ObjectPermissionsObjectKind } from '@gooddata/sdk-model';
169
171
  import { ObjectType } from '@gooddata/sdk-model';
170
172
  import { ObjRef } from '@gooddata/sdk-model';
171
173
  import { OrganizationPermissionAssignment } from '@gooddata/sdk-model';
@@ -722,6 +724,11 @@ export declare interface IAnalyticalWorkspace {
722
724
  * Returns service that can be used to manage access control records for the workspace.
723
725
  */
724
726
  accessControl(): IWorkspaceAccessControlService;
727
+ /**
728
+ * Returns service that manages per-object access for catalog attributes, facts and labels.
729
+ * @alpha
730
+ */
731
+ objectPermissions(): IWorkspaceObjectPermissionsService;
725
732
  /**
726
733
  * Returns service that operates over attribute hierarchies
727
734
  * @alpha
@@ -5102,6 +5109,17 @@ export declare interface IObjectExpressionToken {
5102
5109
  ref: ObjRef;
5103
5110
  }
5104
5111
 
5112
+ /**
5113
+ * Identifies an object whose access is being managed. The `kind` lets the backend
5114
+ * route to the right endpoint without an extra lookup to resolve the ref.
5115
+ *
5116
+ * @alpha
5117
+ */
5118
+ export declare interface IObjectPermissionsObject {
5119
+ readonly kind: ObjectPermissionsObjectKind;
5120
+ readonly ref: ObjRef;
5121
+ }
5122
+
5105
5123
  /**
5106
5124
  * Represents an organization that services analytical workspaces.
5107
5125
  *
@@ -8565,6 +8583,38 @@ export declare interface IWorkspaceMeasuresService {
8565
8583
  getConnectedAttributes(definition: IMeasure, auxMeasures?: IMeasure[]): Promise<ObjRef[]>;
8566
8584
  }
8567
8585
 
8586
+ /**
8587
+ * Reads and updates who has access to a single catalog object. The grantee
8588
+ * types are shared with the dashboard share service so the same UI primitives
8589
+ * work for both flows.
8590
+ *
8591
+ * @alpha
8592
+ */
8593
+ export declare interface IWorkspaceObjectPermissionsService {
8594
+ /**
8595
+ * Returns the current list of grants for the given object.
8596
+ *
8597
+ * @param target - the object whose access to read
8598
+ */
8599
+ getAccessList(target: IObjectPermissionsObject): Promise<IObjectAccessList>;
8600
+ /**
8601
+ * Applies the given grants. Grantees not included in `grantees` are left
8602
+ * unchanged; a grantee with an empty `permissions` array is removed.
8603
+ *
8604
+ * @param target - the object whose access to change
8605
+ * @param grantees - grants to apply
8606
+ */
8607
+ manageObjectPermissions(target: IObjectPermissionsObject, grantees: IGranularAccessGrantee[]): Promise<void>;
8608
+ /**
8609
+ * Returns the users and groups in the workspace that can be granted access.
8610
+ * Excludes the current user. Whether organization admins are excluded
8611
+ * depends on the backend.
8612
+ *
8613
+ * @param target - the object to find available assignees for
8614
+ */
8615
+ getAvailableAssignees(target: IObjectPermissionsObject): Promise<IAvailableAccessGrantee[]>;
8616
+ }
8617
+
8568
8618
  /**
8569
8619
  * Service for querying additional parameter data.
8570
8620
  *
@@ -16,6 +16,7 @@ import { type IWorkspaceCatalogFactory } from "./ldm/catalog.js";
16
16
  import { type IWorkspaceDatasetsService } from "./ldm/datasets.js";
17
17
  import { type IWorkspaceLogicalModelService } from "./ldm/model.js";
18
18
  import { type IWorkspaceMeasuresService } from "./measures/index.js";
19
+ import { type IWorkspaceObjectPermissionsService } from "./objectPermissions/index.js";
19
20
  import { type IWorkspaceParametersService } from "./parameters/index.js";
20
21
  import { type IWorkspacePermissionsService } from "./permissions/index.js";
21
22
  import { type IReferencesService } from "./references/index.js";
@@ -128,6 +129,11 @@ export interface IAnalyticalWorkspace {
128
129
  * Returns service that can be used to manage access control records for the workspace.
129
130
  */
130
131
  accessControl(): IWorkspaceAccessControlService;
132
+ /**
133
+ * Returns service that manages per-object access for catalog attributes, facts and labels.
134
+ * @alpha
135
+ */
136
+ objectPermissions(): IWorkspaceObjectPermissionsService;
131
137
  /**
132
138
  * Returns service that operates over attribute hierarchies
133
139
  * @alpha
@@ -0,0 +1,42 @@
1
+ import { type IAvailableAccessGrantee, type IGranularAccessGrantee, type IObjectAccessList, type ObjRef, type ObjectPermissionsObjectKind } from "@gooddata/sdk-model";
2
+ /**
3
+ * Identifies an object whose access is being managed. The `kind` lets the backend
4
+ * route to the right endpoint without an extra lookup to resolve the ref.
5
+ *
6
+ * @alpha
7
+ */
8
+ export interface IObjectPermissionsObject {
9
+ readonly kind: ObjectPermissionsObjectKind;
10
+ readonly ref: ObjRef;
11
+ }
12
+ /**
13
+ * Reads and updates who has access to a single catalog object. The grantee
14
+ * types are shared with the dashboard share service so the same UI primitives
15
+ * work for both flows.
16
+ *
17
+ * @alpha
18
+ */
19
+ export interface IWorkspaceObjectPermissionsService {
20
+ /**
21
+ * Returns the current list of grants for the given object.
22
+ *
23
+ * @param target - the object whose access to read
24
+ */
25
+ getAccessList(target: IObjectPermissionsObject): Promise<IObjectAccessList>;
26
+ /**
27
+ * Applies the given grants. Grantees not included in `grantees` are left
28
+ * unchanged; a grantee with an empty `permissions` array is removed.
29
+ *
30
+ * @param target - the object whose access to change
31
+ * @param grantees - grants to apply
32
+ */
33
+ manageObjectPermissions(target: IObjectPermissionsObject, grantees: IGranularAccessGrantee[]): Promise<void>;
34
+ /**
35
+ * Returns the users and groups in the workspace that can be granted access.
36
+ * Excludes the current user. Whether organization admins are excluded
37
+ * depends on the backend.
38
+ *
39
+ * @param target - the object to find available assignees for
40
+ */
41
+ getAvailableAssignees(target: IObjectPermissionsObject): Promise<IAvailableAccessGrantee[]>;
42
+ }
@@ -0,0 +1,2 @@
1
+ // (C) 2026 GoodData Corporation
2
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-backend-spi",
3
- "version": "11.40.0-alpha.3",
3
+ "version": "11.40.0-alpha.4",
4
4
  "description": "GoodData Backend SPI abstraction interfaces",
5
5
  "license": "MIT",
6
6
  "author": "GoodData",
@@ -24,7 +24,7 @@
24
24
  "lodash-es": "^4.17.23",
25
25
  "ts-invariant": "0.10.3",
26
26
  "tslib": "2.8.1",
27
- "@gooddata/sdk-model": "11.40.0-alpha.3"
27
+ "@gooddata/sdk-model": "11.40.0-alpha.4"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@microsoft/api-documenter": "^7.17.0",
@@ -43,13 +43,13 @@
43
43
  "eslint-plugin-no-barrel-files": "1.2.2",
44
44
  "eslint-plugin-sonarjs": "3.0.6",
45
45
  "npm-run-all": "^4.1.5",
46
- "oxfmt": "0.45.0",
47
- "oxlint": "^1.43.0",
48
- "oxlint-tsgolint": "0.11.4",
46
+ "oxfmt": "0.52.0",
47
+ "oxlint": "1.51.0",
48
+ "oxlint-tsgolint": "0.15.0",
49
49
  "typescript": "5.9.3",
50
- "vitest": "4.1.0",
51
- "@gooddata/oxlint-config": "11.40.0-alpha.3",
52
- "@gooddata/eslint-config": "11.40.0-alpha.3"
50
+ "vitest": "4.1.8",
51
+ "@gooddata/oxlint-config": "11.40.0-alpha.4",
52
+ "@gooddata/eslint-config": "11.40.0-alpha.4"
53
53
  },
54
54
  "scripts": {
55
55
  "_phase:build": "npm run build",