@narrative.io/data-collaboration-sdk-ts 2.95.0-beta.0 → 2.95.0

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.
Files changed (37) hide show
  1. package/build/apps/index.d.ts +0 -7
  2. package/build/apps/index.js +0 -9
  3. package/build/collaboration-policy/core/filter-builder.js +1 -7
  4. package/build/collaboration-policy/core/sql-builder.js +9 -11
  5. package/build/collaboration-policy/core/types.d.ts +10 -81
  6. package/build/collaboration-policy/index.d.ts +4 -5
  7. package/build/collaboration-policy/index.js +3 -4
  8. package/build/collaboration-policy/types/collaboration-policy.d.ts +1370 -0
  9. package/build/collaboration-policy/types/collaboration-policy.js +274 -0
  10. package/build/collaboration-policy/types/index.d.ts +2 -0
  11. package/build/collaboration-policy/types/index.js +1 -0
  12. package/build/collaboration-policy/useCollaborationPolicy.d.ts +4 -13
  13. package/build/collaboration-policy/useCollaborationPolicy.js +1 -23
  14. package/build/collaboration-policy/utils/path-helpers.d.ts +3 -7
  15. package/build/collaboration-policy/utils/path-helpers.js +22 -6
  16. package/build/data-planes/types.d.ts +1 -1
  17. package/build/datasets/index.d.ts +12 -12
  18. package/build/datasets/index.js +18 -13
  19. package/build/datasets/statistics-types.d.ts +81 -0
  20. package/build/datasets/types.d.ts +60 -13
  21. package/build/datasets/types.js +1 -0
  22. package/build/index.d.ts +1 -0
  23. package/build/index.js +1 -0
  24. package/build/jobs/types.d.ts +1 -0
  25. package/package.json +7 -8
  26. package/build/collaboration-policy/core/jsonschema/json-schema-types.d.ts +0 -45
  27. package/build/collaboration-policy/core/jsonschema/policy-branches.d.ts +0 -49
  28. package/build/collaboration-policy/core/jsonschema/policy-branches.js +0 -1
  29. package/build/collaboration-policy/core/jsonschema/policy-evaluator.d.ts +0 -22
  30. package/build/collaboration-policy/core/jsonschema/policy-evaluator.js +0 -260
  31. package/build/collaboration-policy/core/jsonschema/sql-builder.d.ts +0 -79
  32. package/build/collaboration-policy/core/jsonschema/sql-builder.js +0 -305
  33. package/build/collaboration-policy/core/jsonschema/sql-poc.d.ts +0 -79
  34. package/build/collaboration-policy/core/jsonschema/sql-poc.js +0 -305
  35. package/build/nql/SubstraitParser.d.ts +0 -771
  36. package/build/nql/SubstraitParser.js +0 -797
  37. /package/build/{collaboration-policy/core/jsonschema/json-schema-types.js → datasets/statistics-types.js} +0 -0
@@ -0,0 +1,274 @@
1
+ import * as z from "zod/v4";
2
+ /** Branded types */
3
+ const CollaborationPolicyIdentifier = z
4
+ .string()
5
+ .regex(/^[a-zA-Z0-9_-]+$/)
6
+ .brand("CollaborationPolicyId")
7
+ .meta({
8
+ id: "collaboration_policy_identifier",
9
+ });
10
+ /**
11
+ * Refresh Schedule Schema
12
+ *
13
+ * Specifies how often the destination should be refreshed to ensure data doesn't expire.
14
+ * This is the maximum time interval allowed between destination updates. Waiting longer
15
+ * than this duration may result in the destination expiring data that should be retained.
16
+ *
17
+ * Uses ISO 8601 duration format (e.g., "PT1H" for 1 hour, "P1D" for 1 day).
18
+ * Supported values:
19
+ * - PT1H: Hourly (1 hour)
20
+ * - P1D: Daily (1 day)
21
+ * - P7D: Weekly (7 days)
22
+ * - P1M: Monthly (1 month)
23
+ * - P0D: Once (no recurring refresh)
24
+ * - Custom ISO 8601 duration strings (e.g., "PT30M" for 30 minutes, "P2W" for 2 weeks)
25
+ */
26
+ const RefreshScheduleSchema = z
27
+ .object({
28
+ max: z
29
+ .string()
30
+ .regex(/^P(?!$)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?$/, "Invalid ISO 8601 duration format. Expected format like 'PT1H' (1 hour), 'P1D' (1 day), 'P7D' (7 days), 'P1M' (1 month), or 'P0D' (once)"),
31
+ })
32
+ .strict()
33
+ .meta({
34
+ id: "refresh_schedule",
35
+ });
36
+ const CollaborationPolicyDefinitionMetadataSchema = z
37
+ .object({
38
+ tags: z.array(z.string().regex(/^[a-zA-Z0-9_-]+$/)).optional(),
39
+ refresh_schedule: RefreshScheduleSchema.optional(),
40
+ })
41
+ .meta({ id: "metadata" });
42
+ const JsonPointerSchema = z
43
+ .string()
44
+ .regex(/^(#\/|\/).+/, 'JSON Pointer must start with "/" or "#/".')
45
+ .meta({ id: "json-pointer" });
46
+ /** Path can be dot-style or JSON Pointer */
47
+ const PathSchema = z
48
+ .union([
49
+ z
50
+ .object({
51
+ dot: z.string().min(1, "Dot path cannot be empty"),
52
+ })
53
+ .strict(),
54
+ z
55
+ .object({
56
+ pointer: JsonPointerSchema,
57
+ })
58
+ .strict(),
59
+ ])
60
+ .meta({ id: "path" });
61
+ /** ---------------------------
62
+ * Base + contextual variants
63
+ * --------------------------*/
64
+ /**
65
+ * BaseAttributeRef:
66
+ * - supports either `attribute_name` (by name) OR `attribute` (by pointer), not both
67
+ * - includes both `additional_required_properties` and `path` (context will prune)
68
+ */
69
+ const BaseAttributeRef = z
70
+ .object({
71
+ type: z.literal("attribute").meta({ id: "field_type" }),
72
+ // Choose ONE of these identifiers:
73
+ attribute_name: z.string().meta({ id: "attribute_name" }),
74
+ // Context-specific fields (trim in the derived schemas):
75
+ additional_required_properties: z
76
+ .array(PathSchema)
77
+ .optional()
78
+ .meta({ id: "additional_required_properties" }),
79
+ path: PathSchema.optional(),
80
+ })
81
+ .strict()
82
+ .meta({ id: "attribute_reference" });
83
+ /**
84
+ * StructureAttributeRef:
85
+ * - used in your “structure” (the logical tree)
86
+ * - allows: attribute_name + additional_required_properties
87
+ * - forbids: path, attribute (pointer)
88
+ * Example target:
89
+ * field: {
90
+ * type: "attribute",
91
+ * attribute_name: "sha256_hashed_email",
92
+ * additional_required_properties: [{ dot: "type" }],
93
+ * }
94
+ */
95
+ const StructureAttributeRef = BaseAttributeRef.omit({
96
+ path: true,
97
+ }).meta({ id: "structure_attribute_reference" });
98
+ /**
99
+ * FilterAttributeRef:
100
+ * - used inside filters
101
+ * - allows: attribute (pointer) + optional path
102
+ * - forbids: additional_required_properties, attribute_name
103
+ * Example target:
104
+ * left: {
105
+ * type: "attribute",
106
+ * attribute: "https://api.narrative.io/attributes/iso_3166_1_country",
107
+ * path: { dot: "value" },
108
+ * }
109
+ */
110
+ const FilterAttributeRef = BaseAttributeRef.omit({
111
+ additional_required_properties: true,
112
+ }).meta({ id: "filter_attribute_reference" });
113
+ // Now Expression can reference Filter without a lazy;
114
+ // the recursive bits inside Filter are handled by getters.
115
+ const Expression = z
116
+ .union([
117
+ z
118
+ .string()
119
+ .refine((s) => !s.startsWith("https://api.narrative.io/attributes/"), "String expression cannot be a JSON pointer; use { type:'attribute', attribute: ... }"),
120
+ z.number(),
121
+ z.boolean(),
122
+ FilterAttributeRef,
123
+ ])
124
+ .meta({ id: "expression" });
125
+ const FilterAndOr = z
126
+ .object({
127
+ op: z.enum(["and", "or"]),
128
+ stage: z.literal("generation").default("generation"),
129
+ name: z.string().optional(),
130
+ required: z.boolean().default(true),
131
+ get args() {
132
+ return z.array(Expression).min(2);
133
+ },
134
+ })
135
+ .strict();
136
+ const FilterNot = z
137
+ .object({
138
+ op: z.literal("not"),
139
+ stage: z.literal("generation").default("generation"),
140
+ name: z.string().optional(),
141
+ required: z.boolean().default(true),
142
+ get args() {
143
+ return z.array(Expression).length(1);
144
+ },
145
+ })
146
+ .strict();
147
+ const FilterIsNull = z
148
+ .object({
149
+ op: z.enum(["is_null", "is_not_null"]),
150
+ stage: z.literal("generation").default("generation"),
151
+ name: z.string().optional(),
152
+ required: z.boolean().default(true),
153
+ get left() {
154
+ return Expression;
155
+ },
156
+ })
157
+ .strict();
158
+ const FilterIn = z
159
+ .object({
160
+ op: z.enum(["in", "not in"]),
161
+ stage: z.literal("generation").default("generation"),
162
+ name: z.string().optional(),
163
+ required: z.boolean().default(true),
164
+ get left() {
165
+ return Expression;
166
+ },
167
+ get right() {
168
+ return z.array(Expression).min(1);
169
+ },
170
+ })
171
+ .strict();
172
+ const FilterCompare = z
173
+ .object({
174
+ op: z.enum(["=", "<>", ">", ">=", "<", "<=", "like", "not like"]),
175
+ stage: z.literal("generation").default("generation"),
176
+ name: z.string().optional(),
177
+ required: z.boolean().default(true),
178
+ get left() {
179
+ return Expression;
180
+ },
181
+ get right() {
182
+ return Expression;
183
+ },
184
+ })
185
+ .strict();
186
+ const FilterBetween = z
187
+ .object({
188
+ op: z.literal("between"),
189
+ stage: z.literal("generation").default("generation"),
190
+ name: z.string().optional(),
191
+ required: z.boolean().default(true),
192
+ get operand() {
193
+ return Expression;
194
+ },
195
+ get lower() {
196
+ return Expression;
197
+ },
198
+ get upper() {
199
+ return Expression;
200
+ },
201
+ })
202
+ .strict();
203
+ const Filter = z
204
+ .union([
205
+ FilterAndOr,
206
+ FilterNot,
207
+ FilterIsNull,
208
+ FilterIn,
209
+ FilterCompare,
210
+ FilterBetween,
211
+ ])
212
+ .meta({ id: "filter" });
213
+ const logicalTree = (leaf) => {
214
+ const NodeSchema = z.lazy(() => z
215
+ .union([
216
+ z
217
+ .object({
218
+ anyOf: z
219
+ .array(z.union([leaf, NodeSchema]))
220
+ .min(1)
221
+ .meta({ id: "any_of" }),
222
+ })
223
+ .strict()
224
+ .meta({ id: "any_of_object" }),
225
+ z
226
+ .object({
227
+ allOf: z
228
+ .array(z.union([leaf, NodeSchema]))
229
+ .min(1)
230
+ .meta({ id: "all_of" }),
231
+ })
232
+ .strict()
233
+ .meta({ id: "all_of_object" }),
234
+ ])
235
+ .meta({ id: "logical_node" }));
236
+ // Top-level can be a leaf T or a logical node.
237
+ return z.union([leaf, NodeSchema]).meta({ id: "logical_tree" });
238
+ };
239
+ const ExtendedAttribute = z
240
+ .object({
241
+ field: StructureAttributeRef,
242
+ filters: z.array(Filter).optional(),
243
+ })
244
+ .meta({ id: "extended_attribute" });
245
+ const CollaborationPolicyDefinitionShape = z
246
+ .object({
247
+ id: CollaborationPolicyIdentifier,
248
+ structure: logicalTree(ExtendedAttribute).meta({ id: "structure" }),
249
+ filters: z.array(Filter).optional(),
250
+ })
251
+ .meta({ id: "shape" });
252
+ const CollaborationPolicyDefinition = z
253
+ .object({
254
+ metadata: CollaborationPolicyDefinitionMetadataSchema,
255
+ definition: CollaborationPolicyDefinitionShape,
256
+ })
257
+ .meta({ id: "policy_definition" });
258
+ const CollaborationPolicy = z
259
+ .object({
260
+ name: CollaborationPolicyIdentifier,
261
+ description: z.string().max(2000).optional(),
262
+ display_name: z.string().max(255),
263
+ policy: CollaborationPolicyDefinition,
264
+ })
265
+ .meta({ id: "policy" });
266
+ // Export the schema for validation
267
+ export { CollaborationPolicy };
268
+ export function buildCollaborationPolicyJsonSchema(options = {}) {
269
+ const override = (options ?? {});
270
+ return z.toJSONSchema(CollaborationPolicy, {
271
+ reused: "ref",
272
+ ...override,
273
+ });
274
+ }
@@ -0,0 +1,2 @@
1
+ export type { CollaborationPolicyInput, CollaborationPolicyType, } from "./collaboration-policy";
2
+ export { buildCollaborationPolicyJsonSchema, CollaborationPolicy, } from "./collaboration-policy";
@@ -0,0 +1 @@
1
+ export { buildCollaborationPolicyJsonSchema, CollaborationPolicy, } from "./collaboration-policy";
@@ -1,17 +1,8 @@
1
1
  import type { Attribute } from "../attributes/types";
2
2
  import type { Dataset } from "../datasets/types";
3
- import type { JsonSchemaConnectorPolicy } from "./core/jsonschema/json-schema-types";
4
- import type { PolicyMatchResult, PolicySqlFragments } from "./core/types";
5
- /**
6
- * Hook-style wrapper that exposes collaboration policy helpers.
7
- *
8
- * Public API surface:
9
- * - categorizePolicies
10
- * - buildPolicySql
11
- * - buildPolicySqlWithValidation
12
- */
3
+ import type { PolicySqlFragments } from "./core/types";
4
+ import type { CollaborationPolicyType } from "./types";
13
5
  export default function useCollaborationPolicy(): {
14
- getEligibleConnectorsPolicies: (dataset: Dataset, policies: JsonSchemaConnectorPolicy[], attributes: Attribute[]) => JsonSchemaConnectorPolicy[];
15
- buildPolicySqlFragments: (dataset: Dataset, policies: JsonSchemaConnectorPolicy[], attributes: Attribute[]) => PolicySqlFragments;
16
- buildPolicySqlWithValidationJsonSchema: (dataset: Dataset, policies: JsonSchemaConnectorPolicy[], attributes: Attribute[]) => PolicyMatchResult;
6
+ getEligibleConnectorsPolicies: (dataset: Dataset, policies: CollaborationPolicyType[], attributes: Attribute[]) => CollaborationPolicyType[];
7
+ buildPolicySqlFragments: (dataset: Dataset, policies: CollaborationPolicyType[], attributes: Attribute[]) => PolicySqlFragments;
17
8
  };
@@ -1,36 +1,14 @@
1
- import { buildPolicySql, buildPolicySqlWithValidation, categorizePolicies, } from "./core/jsonschema/sql-builder";
2
- /**
3
- * Hook-style wrapper that exposes collaboration policy helpers.
4
- *
5
- * Public API surface:
6
- * - categorizePolicies
7
- * - buildPolicySql
8
- * - buildPolicySqlWithValidation
9
- */
1
+ import { buildPolicySql, categorizePolicies } from "./core/sql-builder";
10
2
  export default function useCollaborationPolicy() {
11
- /**
12
- * Get policies that are compatible with a dataset using the JSON-Schema policy system.
13
- */
14
3
  const getEligibleConnectorsPolicies = (dataset, policies, attributes) => {
15
4
  const { matching } = categorizePolicies(policies, dataset, attributes);
16
5
  return matching;
17
6
  };
18
- /**
19
- * Build SQL fragments using JSON-Schema policies, without per-policy validation.
20
- */
21
7
  const buildPolicySqlFragments = (dataset, policies, attributes) => {
22
8
  return buildPolicySql(dataset, policies, attributes);
23
9
  };
24
- /**
25
- * Validate each JSON-Schema policy against the dataset and build SQL
26
- * plus metadata (appliedPolicies, skippedPolicies, etc.).
27
- */
28
- const buildPolicySqlWithValidationJsonSchema = (dataset, policies, attributes) => {
29
- return buildPolicySqlWithValidation(dataset, policies, attributes);
30
- };
31
10
  return {
32
11
  getEligibleConnectorsPolicies,
33
12
  buildPolicySqlFragments,
34
- buildPolicySqlWithValidationJsonSchema,
35
13
  };
36
14
  }
@@ -1,8 +1,4 @@
1
- import type { PathValue } from "../core/types";
2
- /**
3
- * Normalizes a PathValue (dot notation or JSON pointer) into a simple dot-notation string.
4
- *
5
- * @param path - A PathValue with either `{ dot: "..." }` or `{ pointer: "..." }` format.
6
- * @returns Normalized dot-notation string, or empty string for undefined/null.
7
- */
1
+ import type { Attribute } from "../../attributes/types";
2
+ import type { AttributePathIndex, PathValue } from "../core/types";
3
+ export declare function markAttributePath(index: AttributePathIndex, attribute: Attribute, path: string): void;
8
4
  export declare function normalizePathValue(path?: PathValue): string;
@@ -1,9 +1,25 @@
1
- /**
2
- * Normalizes a PathValue (dot notation or JSON pointer) into a simple dot-notation string.
3
- *
4
- * @param path - A PathValue with either `{ dot: "..." }` or `{ pointer: "..." }` format.
5
- * @returns Normalized dot-notation string, or empty string for undefined/null.
6
- */
1
+ export function markAttributePath(index, attribute, path) {
2
+ const attributePaths = index.get(attribute.name) ?? new Set();
3
+ // Use the provided path, even if it's an empty string (which represents the root attribute)
4
+ const normalized = path !== undefined && path !== null
5
+ ? path
6
+ : determineDefaultPath(attribute);
7
+ attributePaths.add(normalized);
8
+ index.set(attribute.name, attributePaths);
9
+ }
10
+ function determineDefaultPath(attribute) {
11
+ if (attribute.type === "object" && "properties" in attribute) {
12
+ const properties = attribute.properties ?? {};
13
+ if ("value" in properties) {
14
+ return "value";
15
+ }
16
+ const [firstKey] = Object.keys(properties);
17
+ if (firstKey) {
18
+ return firstKey;
19
+ }
20
+ }
21
+ return "";
22
+ }
7
23
  export function normalizePathValue(path) {
8
24
  if (!path) {
9
25
  return "";
@@ -15,7 +15,7 @@ export interface DataPlanePlatform {
15
15
  region: DataPlanePlatformRegion;
16
16
  }
17
17
  export interface DataPlaneCollaborators {
18
- use: Participants;
18
+ participants: Participants;
19
19
  }
20
20
  export interface DataPlane {
21
21
  type: DataPlaneType;
@@ -1,8 +1,10 @@
1
1
  import type { UnknownJob } from "src/jobs/types";
2
2
  import { BaseApi } from "../base-api";
3
3
  import type { ApiRecords } from "../types";
4
- import type { AdvancedStatistics, AdvancedStatisticsMetadata, BasicStatistics, ColumnStatistics, ColumnSummary, Columns, Configuration, CreateDatasetRefreshScheduleRequest, CreateDatasetRequest, Dataset, DatasetInterfaceValidation, DatasetStatus, DatasetTableSummary, DatasetTableSummaryAPIResponse, DatasetWriteMode, FilePerSnapshotResponse, Histogram, IngestDatasetFileRequest, RecalculationInfo, RetentionPolicy, Schema, SchemaArrayItems, SchemaArrayItemsArray, SchemaArrayItemsObject, SchemaArrayItemsPrimitive, SchemaArrayProperty, SchemaFileConfig, SchemaFileConfigType, SchemaObjectProperty, SchemaPrimitiveProperty, SchemaProperties, SchemaPropertiesType, SchemaProperty, SnapshotRange, UpdateDatasetRefreshScheduleRequest, UpdateDatasetRequest, Value } from "./types";
5
- export type { FilePerSnapshotResponse, Dataset, RetentionPolicy, DatasetTableSummaryAPIResponse, ColumnStatistics, UpdateDatasetRequest, SchemaFileConfigType, SchemaPropertiesType, DatasetStatus, DatasetWriteMode, SchemaFileConfig, SchemaProperties, SchemaProperty, SchemaPrimitiveProperty, SchemaObjectProperty, SchemaArrayProperty, SchemaArrayItems, SchemaArrayItemsPrimitive, SchemaArrayItemsObject, SchemaArrayItemsArray, Schema, AdvancedStatisticsMetadata, SnapshotRange, Configuration, Columns, ColumnSummary, BasicStatistics, AdvancedStatistics, Histogram, Value, CreateDatasetRequest, UpdateDatasetRefreshScheduleRequest, CreateDatasetRefreshScheduleRequest, DatasetInterfaceValidation, };
4
+ import type { DatasetStatisticsConfiguration, StatisticsConfigurationResponse } from "./statistics-types";
5
+ import type { AdvancedStatistics, AdvancedStatisticsMetadata, BasicStatistics, ColumnStatistics, ColumnSummary, Columns, Configuration, CreateDatasetRefreshScheduleRequest, CreateDatasetRequest, Dataset, DatasetStatus, DatasetTableSummary, DatasetTableSummaryAPIResponse, DatasetWriteMode, FilePerSnapshotResponse, Histogram, IngestDatasetFileRequest, RecalculationInfo, RetentionPolicy, RetentionScheduleConfig, RowClock, RowTTLPolicy, Schema, SchemaArrayItems, SchemaArrayItemsArray, SchemaArrayItemsObject, SchemaArrayItemsPrimitive, SchemaArrayProperty, SchemaFileConfig, SchemaFileConfigType, SchemaObjectProperty, SchemaPrimitiveProperty, SchemaProperties, SchemaPropertiesType, SchemaProperty, SnapshotAgeExpression, SnapshotRange, SnapshotTTLPolicy, TableClock, TableClockKind, TableTTLPolicy, TTLPolicy, TTLPolicyKind, UpdateDatasetRefreshScheduleRequest, UpdateDatasetRequest, UpsertRetentionPoliciesRequest, Value } from "./types";
6
+ export type { FilePerSnapshotResponse, Dataset, RetentionPolicy, RetentionScheduleConfig, RowClock, RowTTLPolicy, SnapshotAgeExpression, SnapshotTTLPolicy, TTLPolicy, TTLPolicyKind, TableClock, TableClockKind, TableTTLPolicy, UpsertRetentionPoliciesRequest, DatasetTableSummaryAPIResponse, ColumnStatistics, UpdateDatasetRequest, SchemaFileConfigType, SchemaPropertiesType, DatasetStatus, DatasetWriteMode, SchemaFileConfig, SchemaProperties, SchemaProperty, SchemaPrimitiveProperty, SchemaObjectProperty, SchemaArrayProperty, SchemaArrayItems, SchemaArrayItemsPrimitive, SchemaArrayItemsObject, SchemaArrayItemsArray, Schema, AdvancedStatisticsMetadata, SnapshotRange, Configuration, Columns, ColumnSummary, BasicStatistics, AdvancedStatistics, Histogram, Value, CreateDatasetRequest, UpdateDatasetRefreshScheduleRequest, CreateDatasetRefreshScheduleRequest, };
7
+ export type { CronRefresh, DatasetFieldConfig, DatasetFieldNamespace, DatasetStatisticsConfiguration, HistogramOptions, HistogramOverflow, ManualRefresh, NestedNodeConfig, NestedPropertyConfig, NonPrimitiveNodeConfig, OnUpdateRefresh, PrimitiveNodeConfig, RefreshTrigger, RosettaStoneFieldConfig, RosettaStoneFieldNamespace, StatConfig, StatisticsConfigurationResponse, StatName, StatOptions, } from "./statistics-types";
6
8
  /**
7
9
  * @module DatasetApi
8
10
  * @description This module provides methods for fetching datasets.
@@ -166,6 +168,8 @@ export declare class DatasetApi extends BaseApi {
166
168
  * @public
167
169
  */
168
170
  updateRetentionPolicy(datasetId: number, policy: RetentionPolicy): Promise<Dataset>;
171
+ upsertRetentionPolicies(datasetId: number, request: UpsertRetentionPoliciesRequest): Promise<Dataset>;
172
+ disableDatasetRetentionPolicy(datasetId: number, policy: TTLPolicy): Promise<Dataset>;
169
173
  /**
170
174
  * Configures the statistics for a specific dataset column.
171
175
  * This method sends a PUT request to the specified endpoint to update the statistics configuration.
@@ -190,7 +194,9 @@ export declare class DatasetApi extends BaseApi {
190
194
  * @throws {Error} If there is an issue with the request or the response.
191
195
  * @memberof DatasetApi
192
196
  */
193
- requestDatasetSample(datasetId: number): Promise<{
197
+ requestDatasetSample(datasetId: number, request?: {
198
+ compute_pool_id?: string;
199
+ }): Promise<{
194
200
  job_id: string;
195
201
  }>;
196
202
  /**
@@ -215,13 +221,7 @@ export declare class DatasetApi extends BaseApi {
215
221
  createDatasetRefreshSchedule(datasetId: number, refreshSchedule: CreateDatasetRefreshScheduleRequest): Promise<void>;
216
222
  updateDatasetRefreshSchedule(datasetId: number, refreshSchedule: UpdateDatasetRefreshScheduleRequest): Promise<void>;
217
223
  deleteDatasetRefreshSchedule(datasetId: number): Promise<void>;
218
- /**
219
- * Validate which connector interfaces are compatible with a dataset.
220
- * Filtered by the user's installed apps and optionally by tags.
221
- *
222
- * @param {number} datasetId - The ID of the dataset to validate interfaces against.
223
- * @param {string[]} [tags] - Optional tags to filter interfaces (e.g. ["audience_delivery"]).
224
- * @returns {Promise<DatasetInterfaceValidation>} - Accepted interface IDs and per-interface validation errors.
225
- */
226
- getDatasetInterfaces(datasetId: number, tags?: string[]): Promise<DatasetInterfaceValidation>;
224
+ putStatisticsConfiguration(datasetId: number, configuration: DatasetStatisticsConfiguration): Promise<StatisticsConfigurationResponse>;
225
+ getStatisticsConfiguration(datasetId: number): Promise<StatisticsConfigurationResponse>;
226
+ deleteStatisticsConfiguration(datasetId: number): Promise<StatisticsConfigurationResponse>;
227
227
  }
@@ -221,6 +221,14 @@ export class DatasetApi extends BaseApi {
221
221
  async updateRetentionPolicy(datasetId, policy) {
222
222
  return await this.put(`${resourceName}/${datasetId}/retention-policy`, policy);
223
223
  }
224
+ async upsertRetentionPolicies(datasetId, request) {
225
+ return await this.put(`${resourceName}/${datasetId}/retention-policy`, request);
226
+ }
227
+ async disableDatasetRetentionPolicy(datasetId, policy) {
228
+ return await this.upsertRetentionPolicies(datasetId, {
229
+ policies: [{ ...policy, enabled: false }],
230
+ });
231
+ }
224
232
  /**
225
233
  * Configures the statistics for a specific dataset column.
226
234
  * This method sends a PUT request to the specified endpoint to update the statistics configuration.
@@ -249,8 +257,8 @@ export class DatasetApi extends BaseApi {
249
257
  * @throws {Error} If there is an issue with the request or the response.
250
258
  * @memberof DatasetApi
251
259
  */
252
- async requestDatasetSample(datasetId) {
253
- return await this.post(`${resourceName}/${datasetId}/request-sample`);
260
+ async requestDatasetSample(datasetId, request) {
261
+ return await this.post(`${resourceName}/${datasetId}/request-sample`, request);
254
262
  }
255
263
  /**
256
264
  * Deletes a sample of a specified dataset by its ID.
@@ -287,16 +295,13 @@ export class DatasetApi extends BaseApi {
287
295
  async deleteDatasetRefreshSchedule(datasetId) {
288
296
  await this.delete(`${resourceName}/${datasetId}/refresh-schedule`);
289
297
  }
290
- /**
291
- * Validate which connector interfaces are compatible with a dataset.
292
- * Filtered by the user's installed apps and optionally by tags.
293
- *
294
- * @param {number} datasetId - The ID of the dataset to validate interfaces against.
295
- * @param {string[]} [tags] - Optional tags to filter interfaces (e.g. ["audience_delivery"]).
296
- * @returns {Promise<DatasetInterfaceValidation>} - Accepted interface IDs and per-interface validation errors.
297
- */
298
- async getDatasetInterfaces(datasetId, tags) {
299
- const queryString = this.constructQueryString(tags != null ? { tags } : undefined);
300
- return await this.get(`${resourceName}/${datasetId}/interfaces${queryString}`);
298
+ async putStatisticsConfiguration(datasetId, configuration) {
299
+ return await this.put(`${resourceName}/${datasetId}/statistics-configuration`, configuration);
300
+ }
301
+ async getStatisticsConfiguration(datasetId) {
302
+ return await this.get(`${resourceName}/${datasetId}/statistics-configuration`);
303
+ }
304
+ async deleteStatisticsConfiguration(datasetId) {
305
+ return await this.base_api.delete(`${resourceName}/${datasetId}/statistics-configuration`);
301
306
  }
302
307
  }
@@ -0,0 +1,81 @@
1
+ export type StatName = "value_count" | "null_value_count" | "nan_value_count" | "lower_bound" | "upper_bound" | "approx_count_distinct" | "count_distinct" | "histogram" | "mean" | "standard_deviation" | "completeness";
2
+ export type HistogramOverflow = "none" | "truncate";
3
+ export interface HistogramOptions {
4
+ max_bins?: number;
5
+ overflow?: HistogramOverflow;
6
+ }
7
+ export interface StatOptions {
8
+ histogram?: HistogramOptions;
9
+ }
10
+ export type StatConfig = {
11
+ enabled_stats: StatName[];
12
+ stat_options?: StatOptions;
13
+ } | {
14
+ enabled_stats?: StatName[];
15
+ stat_options: StatOptions;
16
+ } | {
17
+ enabled_stats: StatName[];
18
+ stat_options: StatOptions;
19
+ };
20
+ export interface CronRefresh {
21
+ trigger: "cron";
22
+ cron_expression: string;
23
+ }
24
+ export interface OnUpdateRefresh {
25
+ trigger: "on_update";
26
+ }
27
+ export interface ManualRefresh {
28
+ trigger: "manual";
29
+ }
30
+ export type RefreshTrigger = CronRefresh | OnUpdateRefresh | ManualRefresh;
31
+ export interface PrimitiveNodeConfig {
32
+ enabled_stats?: StatName[];
33
+ stat_options?: StatOptions;
34
+ }
35
+ export interface NonPrimitiveNodeConfig {
36
+ self?: StatConfig;
37
+ properties?: NestedPropertyConfig[];
38
+ items?: NestedNodeConfig;
39
+ }
40
+ export type NestedNodeConfig = PrimitiveNodeConfig | NonPrimitiveNodeConfig;
41
+ export type NestedPropertyConfig = (PrimitiveNodeConfig & {
42
+ path: string;
43
+ }) | (NonPrimitiveNodeConfig & {
44
+ path: string;
45
+ });
46
+ export type DatasetFieldConfig = (PrimitiveNodeConfig & {
47
+ field_name: string;
48
+ }) | (NonPrimitiveNodeConfig & {
49
+ field_name: string;
50
+ }) | {
51
+ field_name: string;
52
+ };
53
+ export type RosettaStoneFieldConfig = (PrimitiveNodeConfig & {
54
+ attribute_name: string;
55
+ }) | (NonPrimitiveNodeConfig & {
56
+ attribute_name: string;
57
+ }) | {
58
+ attribute_name: string;
59
+ };
60
+ export interface DatasetFieldNamespace {
61
+ scope?: StatConfig;
62
+ fields?: DatasetFieldConfig[];
63
+ }
64
+ export interface RosettaStoneFieldNamespace {
65
+ scope?: StatConfig;
66
+ fields?: RosettaStoneFieldConfig[];
67
+ }
68
+ export interface DatasetStatisticsConfiguration {
69
+ defaults: StatConfig;
70
+ refresh: RefreshTrigger;
71
+ dataset?: DatasetFieldNamespace;
72
+ rosetta_stone?: RosettaStoneFieldNamespace;
73
+ }
74
+ export interface StatisticsConfigurationResponse {
75
+ id: string;
76
+ dataset_id: number;
77
+ version: number;
78
+ created_at: string;
79
+ created_by: number;
80
+ configuration: DatasetStatisticsConfiguration;
81
+ }