@vizzly/api-client 0.0.56 → 0.0.57
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Api } from './Api';
|
|
2
2
|
import { Authentication } from './Authentication';
|
|
3
|
-
import { nVizzlyQueryEngine, Request, extraHeaders, CreateDashboardParams, UpdateDashboardParams, UpdateGlobalLibraryParams, GlobalLibrary, CreateGlobalLibraryParams, GlobalLibraryPermissionFromAPI, RequestParams } from '../types';
|
|
3
|
+
import { nVizzlyQueryEngine, Request, extraHeaders, CreateDashboardParams, UpdateDashboardParams, UpdateGlobalLibraryParams, GlobalLibrary, CreateGlobalLibraryParams, GlobalLibraryPermissionFromAPI, RequestParams, DataOptimiser } from '../types';
|
|
4
4
|
import { nSemanticLayer } from '@vizzly/semantic-layer-public';
|
|
5
5
|
import { SQLSchema } from '@vizzly/sqlbuilder-public';
|
|
6
6
|
export declare class VizzlyQueryEngineApi extends Api {
|
|
@@ -94,6 +94,11 @@ export declare class VizzlyQueryEngineApi extends Api {
|
|
|
94
94
|
buildUpdateQueryEngineUserRequest(params: RequestParams<nVizzlyQueryEngine.UpdateQueryEngineUserParams>): Request<{}>;
|
|
95
95
|
uploadDataToVizzlyCloud(params: RequestParams<nVizzlyQueryEngine.UploadDataToVizzlyCloudParams>): Promise<import("../types").Response<unknown>>;
|
|
96
96
|
buildUploadDataToVizzlyCloudRequest(params: RequestParams<nVizzlyQueryEngine.UploadDataToVizzlyCloudParams>): Request<{}>;
|
|
97
|
+
/**
|
|
98
|
+
* Create snowflake & AWS infrastructure for a new company
|
|
99
|
+
* & return the bucket & role and snowflake connection
|
|
100
|
+
* information.
|
|
101
|
+
* */
|
|
97
102
|
createCompanyInfrastructure(params: RequestParams<{
|
|
98
103
|
companyId: string;
|
|
99
104
|
}>): Promise<import("../types").Response<{
|
|
@@ -110,5 +115,76 @@ export declare class VizzlyQueryEngineApi extends Api {
|
|
|
110
115
|
username: string;
|
|
111
116
|
};
|
|
112
117
|
}>>;
|
|
118
|
+
/** Get the status of a create company infrastructure call */
|
|
119
|
+
getCreateCompanyInfrastructureStatus(params: RequestParams<{
|
|
120
|
+
companyId: string;
|
|
121
|
+
}>): Promise<import("../types").Response<DataOptimiser.StatusResponse<{
|
|
122
|
+
create_database_action: DataOptimiser.ActionStatus<{}>;
|
|
123
|
+
create_aws_infra_action: DataOptimiser.ActionStatus<{}>;
|
|
124
|
+
}>>>;
|
|
113
125
|
private buildCreateCompanyInfrastructureRequest;
|
|
126
|
+
/** Send request to ingest data */
|
|
127
|
+
ingestDatasource(params: RequestParams<{
|
|
128
|
+
dataSourceId: string;
|
|
129
|
+
ingestFields: DataOptimiser.DataSourceFields;
|
|
130
|
+
internalCompanyConnection: DataOptimiser.QueryEngineConnection;
|
|
131
|
+
externalSnowflakeConnection: DataOptimiser.QueryEngineConnection;
|
|
132
|
+
}>): Promise<import("../types").Response<DataOptimiser.ExecuteResponse<{
|
|
133
|
+
setup_export_data_integration: DataOptimiser.ActionResult<{}>;
|
|
134
|
+
ingest_to_s3: DataOptimiser.ActionResult<{
|
|
135
|
+
toBucket: string;
|
|
136
|
+
toPath: string;
|
|
137
|
+
fromSnowflakeTableAddress: string[];
|
|
138
|
+
}>;
|
|
139
|
+
ingest_s3_storage_to_snowflake: DataOptimiser.ActionResult<{
|
|
140
|
+
destinationAddress: string[];
|
|
141
|
+
}>;
|
|
142
|
+
}>>>;
|
|
143
|
+
/** Get the status of a call to ingest data for a data source. */
|
|
144
|
+
getIngestDatasourceStatus(params: RequestParams<{
|
|
145
|
+
dataSourceId: string;
|
|
146
|
+
ingestFields: DataOptimiser.DataSourceFields;
|
|
147
|
+
internalCompanyConnection: DataOptimiser.QueryEngineConnection;
|
|
148
|
+
externalSnowflakeConnection: DataOptimiser.QueryEngineConnection;
|
|
149
|
+
}>): Promise<import("../types").Response<DataOptimiser.StatusResponse<{
|
|
150
|
+
setup_export_data_integration: DataOptimiser.ActionStatus<{}>;
|
|
151
|
+
ingest_to_s3: DataOptimiser.ActionStatus<{
|
|
152
|
+
s3Bucket: {
|
|
153
|
+
path: string;
|
|
154
|
+
bucket: string;
|
|
155
|
+
};
|
|
156
|
+
}>;
|
|
157
|
+
ingest_s3_storage_to_snowflake: DataOptimiser.ActionStatus<{
|
|
158
|
+
destinationAddress: string[];
|
|
159
|
+
destinationFields: DataOptimiser.DataSourceFields;
|
|
160
|
+
}>;
|
|
161
|
+
}>>>;
|
|
162
|
+
private buildIngestDatasourceRequest;
|
|
163
|
+
/** Get the status of a call to ingest data for a data source. */
|
|
164
|
+
getCreateSnapshotStatus(params: RequestParams<{
|
|
165
|
+
ingestDataSourceId: string;
|
|
166
|
+
snapshotDataSourceId: string;
|
|
167
|
+
ingestFields: DataOptimiser.DataSourceFields;
|
|
168
|
+
cascadingInstructions: DataOptimiser.CascadingInstructions;
|
|
169
|
+
internalCompanyConnection: DataOptimiser.QueryEngineConnection;
|
|
170
|
+
primaryDateFieldId?: string | undefined;
|
|
171
|
+
}>): Promise<import("../types").Response<DataOptimiser.StatusResponse<{
|
|
172
|
+
create_snapshot: DataOptimiser.ActionStatus<{
|
|
173
|
+
snapshotDataOptimiser: DataOptimiser.DataSourceFields;
|
|
174
|
+
}>;
|
|
175
|
+
}>>>;
|
|
176
|
+
/** Send request to create a snapshot */
|
|
177
|
+
createSnapshot(params: RequestParams<{
|
|
178
|
+
ingestDataSourceId: string;
|
|
179
|
+
snapshotDataSourceId: string;
|
|
180
|
+
ingestFields: DataOptimiser.DataSourceFields;
|
|
181
|
+
cascadingInstructions: DataOptimiser.CascadingInstructions;
|
|
182
|
+
internalCompanyConnection: DataOptimiser.QueryEngineConnection;
|
|
183
|
+
primaryDateFieldId?: string | undefined;
|
|
184
|
+
}>): Promise<import("../types").Response<DataOptimiser.ExecuteResponse<{
|
|
185
|
+
create_snapshot: DataOptimiser.ActionResult<{
|
|
186
|
+
snapshotFields: DataOptimiser.DataSourceFields;
|
|
187
|
+
}>;
|
|
188
|
+
}>>>;
|
|
189
|
+
private buildCreateSnapshotRequest;
|
|
114
190
|
}
|
|
@@ -16,6 +16,7 @@ const FailedToResolveDataSets_1 = require("../errors/FailedToResolveDataSets");
|
|
|
16
16
|
const FailedToSetupProject_1 = require("../errors/FailedToSetupProject");
|
|
17
17
|
const errors_1 = require("../errors");
|
|
18
18
|
const DashboardRepository_1 = require("./DashboardRepository");
|
|
19
|
+
const Path_1 = require("./Path");
|
|
19
20
|
class VizzlyQueryEngineApi extends Api_1.Api {
|
|
20
21
|
constructor(auth, host, extraHeaders) {
|
|
21
22
|
super(auth, host, extraHeaders);
|
|
@@ -435,14 +436,26 @@ class VizzlyQueryEngineApi extends Api_1.Api {
|
|
|
435
436
|
},
|
|
436
437
|
};
|
|
437
438
|
}
|
|
439
|
+
/**
|
|
440
|
+
* Create snowflake & AWS infrastructure for a new company
|
|
441
|
+
* & return the bucket & role and snowflake connection
|
|
442
|
+
* information.
|
|
443
|
+
* */
|
|
438
444
|
createCompanyInfrastructure(params) {
|
|
439
445
|
return __awaiter(this, void 0, void 0, function* () {
|
|
440
446
|
return yield this.execute(this.buildCreateCompanyInfrastructureRequest(params));
|
|
441
447
|
});
|
|
442
448
|
}
|
|
443
|
-
|
|
449
|
+
/** Get the status of a create company infrastructure call */
|
|
450
|
+
getCreateCompanyInfrastructureStatus(params) {
|
|
451
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
452
|
+
return yield this.execute(this.buildCreateCompanyInfrastructureRequest(params, { statusOnly: true }));
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
buildCreateCompanyInfrastructureRequest(params, options) {
|
|
456
|
+
const maybeStatusRoutePath = (options === null || options === void 0 ? void 0 : options.statusOnly) ? '/status' : '';
|
|
444
457
|
return {
|
|
445
|
-
path: `/api/v1/data-optimiser/company`,
|
|
458
|
+
path: Path_1.Path.buildPath(`/api/v1/data-optimiser/company`, maybeStatusRoutePath),
|
|
446
459
|
method: 'post',
|
|
447
460
|
abortSignal: params.abortSignal,
|
|
448
461
|
body: {
|
|
@@ -451,5 +464,61 @@ class VizzlyQueryEngineApi extends Api_1.Api {
|
|
|
451
464
|
acceptedAuthParams: ['queryEngineApiKey'],
|
|
452
465
|
};
|
|
453
466
|
}
|
|
467
|
+
/** Send request to ingest data */
|
|
468
|
+
ingestDatasource(params) {
|
|
469
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
470
|
+
return yield this.execute(this.buildIngestDatasourceRequest(params, { statusOnly: false }));
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
/** Get the status of a call to ingest data for a data source. */
|
|
474
|
+
getIngestDatasourceStatus(params) {
|
|
475
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
476
|
+
return yield this.execute(this.buildIngestDatasourceRequest(params, { statusOnly: true }));
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
buildIngestDatasourceRequest(params, options) {
|
|
480
|
+
const maybeStatusRoutePath = (options === null || options === void 0 ? void 0 : options.statusOnly) ? '/status' : '';
|
|
481
|
+
return {
|
|
482
|
+
path: Path_1.Path.buildPath(`/api/v1/data-optimiser/ingest`, maybeStatusRoutePath),
|
|
483
|
+
method: 'post',
|
|
484
|
+
abortSignal: params.abortSignal,
|
|
485
|
+
body: {
|
|
486
|
+
dataSourceId: params.dataSourceId,
|
|
487
|
+
ingestFields: params.ingestFields,
|
|
488
|
+
internalCompanyConnection: params.internalCompanyConnection,
|
|
489
|
+
externalSnowflakeConnection: params.externalSnowflakeConnection,
|
|
490
|
+
},
|
|
491
|
+
acceptedAuthParams: ['queryEngineApiKey'],
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
/** Get the status of a call to ingest data for a data source. */
|
|
495
|
+
getCreateSnapshotStatus(params) {
|
|
496
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
497
|
+
return yield this.execute(this.buildCreateSnapshotRequest(params, { statusOnly: true }));
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
/** Send request to create a snapshot */
|
|
501
|
+
createSnapshot(params) {
|
|
502
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
503
|
+
return yield this.execute(this.buildCreateSnapshotRequest(params, { statusOnly: false }));
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
buildCreateSnapshotRequest(params, options) {
|
|
507
|
+
const maybeStatusRoutePath = (options === null || options === void 0 ? void 0 : options.statusOnly) ? '/status' : '';
|
|
508
|
+
return {
|
|
509
|
+
path: Path_1.Path.buildPath(`/api/v1/data-optimiser/snapshot`, maybeStatusRoutePath),
|
|
510
|
+
method: 'post',
|
|
511
|
+
abortSignal: params.abortSignal,
|
|
512
|
+
body: {
|
|
513
|
+
ingestDataSourceId: params.ingestDataSourceId,
|
|
514
|
+
snapshotDataSourceId: params.snapshotDataSourceId,
|
|
515
|
+
ingestFields: params.ingestFields,
|
|
516
|
+
cascadingInstructions: params.cascadingInstructions,
|
|
517
|
+
primaryDateFieldId: params.primaryDateFieldId,
|
|
518
|
+
internalCompanyConnection: params.internalCompanyConnection,
|
|
519
|
+
},
|
|
520
|
+
acceptedAuthParams: ['queryEngineApiKey'],
|
|
521
|
+
};
|
|
522
|
+
}
|
|
454
523
|
}
|
|
455
524
|
exports.VizzlyQueryEngineApi = VizzlyQueryEngineApi;
|
package/dist/types.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from './types/team';
|
|
|
9
9
|
export * from './types/user';
|
|
10
10
|
import { DataAccessConfig } from '@vizzly/auth';
|
|
11
11
|
import { nSemanticLayer, OriginId } from '@vizzly/semantic-layer-public';
|
|
12
|
+
import { SnowflakeConnection } from '@vizzly/sqlbuilder-public';
|
|
12
13
|
export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
13
14
|
export type UpdateDashboardResponseBody = {
|
|
14
15
|
dashboard: DashboardFromAPI;
|
|
@@ -467,3 +468,75 @@ export type GlobalLibraryPermissionFromAPI = {
|
|
|
467
468
|
token: string;
|
|
468
469
|
scope: 'read' | 'read_write';
|
|
469
470
|
};
|
|
471
|
+
export declare namespace DataOptimiser {
|
|
472
|
+
type DataSourceFields = Array<{
|
|
473
|
+
id: string;
|
|
474
|
+
address: string[];
|
|
475
|
+
data_type: string;
|
|
476
|
+
}>;
|
|
477
|
+
type EphemeralDataSourceFields = Array<Omit<DataSourceFields[number], 'id'>>;
|
|
478
|
+
type DimensionFieldsMapping = Array<{
|
|
479
|
+
field_id: string;
|
|
480
|
+
gti_dimension_key: 'brands' | 'regions' | 'media_channels';
|
|
481
|
+
dimension_values_mappings: Array<{
|
|
482
|
+
gti_dimension_value_key: string;
|
|
483
|
+
label_override?: string;
|
|
484
|
+
data_source_original_value: string;
|
|
485
|
+
}>;
|
|
486
|
+
}>;
|
|
487
|
+
/**
|
|
488
|
+
* We can send a list of instructions to the data optimiser, which
|
|
489
|
+
* will combine them depending on their order which signifies their
|
|
490
|
+
* importance.
|
|
491
|
+
*
|
|
492
|
+
* The first set of instructions will be overridden by the next set,
|
|
493
|
+
* if it makes sense.
|
|
494
|
+
*
|
|
495
|
+
* This means that we can send the instructions for the data source &
|
|
496
|
+
* snapshot in the same request without doing any logic, and the data
|
|
497
|
+
* optimiser will pick what it needs.
|
|
498
|
+
*/
|
|
499
|
+
type CascadingInstructions = Array<{
|
|
500
|
+
datasourceDimensionFieldMapping: DimensionFieldsMapping;
|
|
501
|
+
dataStartDate: string | null;
|
|
502
|
+
dataEndDate: string | null;
|
|
503
|
+
}>;
|
|
504
|
+
type ActionResultStatus = 'success' | 'failure' | 'no_action_taken' | 'started_in_background';
|
|
505
|
+
type ActionStatus<PlannedOutcome> = {
|
|
506
|
+
name: string;
|
|
507
|
+
status: ActionResultStatus;
|
|
508
|
+
plannedOutcome: PlannedOutcome;
|
|
509
|
+
};
|
|
510
|
+
type ActionResult<Content> = {
|
|
511
|
+
status: ActionResultStatus;
|
|
512
|
+
content: Content;
|
|
513
|
+
};
|
|
514
|
+
type StatusResponse<Status extends {
|
|
515
|
+
[actionId: string]: {
|
|
516
|
+
name: string;
|
|
517
|
+
status: ActionResultStatus;
|
|
518
|
+
plannedOutcome: any;
|
|
519
|
+
};
|
|
520
|
+
}> = {
|
|
521
|
+
dataConnections: {
|
|
522
|
+
dataTeamSnowflake: boolean | null;
|
|
523
|
+
gtiCommonSnowflake: boolean | null;
|
|
524
|
+
gtiAdminSnowflake: boolean | null;
|
|
525
|
+
};
|
|
526
|
+
status: Status;
|
|
527
|
+
};
|
|
528
|
+
type ExecuteResponse<ActionResult extends {
|
|
529
|
+
[actionId: string]: {
|
|
530
|
+
status: ActionResultStatus;
|
|
531
|
+
content: any;
|
|
532
|
+
};
|
|
533
|
+
}> = {
|
|
534
|
+
actionResults: {
|
|
535
|
+
[actionId: string]: ActionResult;
|
|
536
|
+
};
|
|
537
|
+
};
|
|
538
|
+
type QueryEngineConnection = {
|
|
539
|
+
encryptedCredentials: string;
|
|
540
|
+
unencryptedCredentials?: Partial<SnowflakeConnection>;
|
|
541
|
+
};
|
|
542
|
+
}
|