From 19fa86d1a1cfe93d5f084a0a7953a04cd8fee955 Mon Sep 17 00:00:00 2001 From: MichalKinas <113341662+MichalKinas@users.noreply.github.com> Date: Wed, 22 May 2024 23:14:01 +0200 Subject: [PATCH] [ACS-8025] Add new service and API for predictions (#9714) * [ACS-8025] Add new service and API for predictions * [ACS-8025] Fix update type --- .../src/lib/prediction/index.ts | 18 +++++++ .../src/lib/prediction/public-api.ts | 18 +++++++ .../src/lib/prediction/services/index.ts | 18 +++++++ .../services/prediction.service.spec.ts | 47 +++++++++++++++++++ .../prediction/services/prediction.service.ts | 43 +++++++++++++++++ lib/content-services/src/public-api.ts | 1 + lib/js-api/index.ts | 1 + lib/js-api/src/alfrescoApi.ts | 13 +++++ .../src/api/hxi-connector-api/README.md | 19 ++++++++ .../src/api/hxi-connector-api/api/base.api.ts | 25 ++++++++++ .../src/api/hxi-connector-api/api/index.ts | 18 +++++++ .../hxi-connector-api/api/predictions.api.ts | 42 +++++++++++++++++ .../api/hxi-connector-api/docs/Prediction.md | 14 ++++++ .../hxi-connector-api/docs/PredictionEntry.md | 8 ++++ .../docs/PredictionPaging.md | 8 ++++ .../docs/PredictionPagingList.md | 9 ++++ .../hxi-connector-api/docs/PredictionsApi.md | 23 +++++++++ lib/js-api/src/api/hxi-connector-api/index.ts | 19 ++++++++ .../src/api/hxi-connector-api/model/index.ts | 21 +++++++++ .../api/hxi-connector-api/model/prediction.ts | 45 ++++++++++++++++++ .../model/predictionEntry.ts | 29 ++++++++++++ .../model/predictionPaging.ts | 29 ++++++++++++ .../model/predictionPagingList.ts | 34 ++++++++++++++ lib/js-api/src/index.ts | 1 + .../src/to-deprecate/alfresco-api-type.ts | 1 + 25 files changed, 504 insertions(+) create mode 100644 lib/content-services/src/lib/prediction/index.ts create mode 100644 lib/content-services/src/lib/prediction/public-api.ts create mode 100644 lib/content-services/src/lib/prediction/services/index.ts create mode 100644 lib/content-services/src/lib/prediction/services/prediction.service.spec.ts create mode 100644 lib/content-services/src/lib/prediction/services/prediction.service.ts create mode 100644 lib/js-api/src/api/hxi-connector-api/README.md create mode 100644 lib/js-api/src/api/hxi-connector-api/api/base.api.ts create mode 100644 lib/js-api/src/api/hxi-connector-api/api/index.ts create mode 100644 lib/js-api/src/api/hxi-connector-api/api/predictions.api.ts create mode 100644 lib/js-api/src/api/hxi-connector-api/docs/Prediction.md create mode 100644 lib/js-api/src/api/hxi-connector-api/docs/PredictionEntry.md create mode 100644 lib/js-api/src/api/hxi-connector-api/docs/PredictionPaging.md create mode 100644 lib/js-api/src/api/hxi-connector-api/docs/PredictionPagingList.md create mode 100644 lib/js-api/src/api/hxi-connector-api/docs/PredictionsApi.md create mode 100644 lib/js-api/src/api/hxi-connector-api/index.ts create mode 100644 lib/js-api/src/api/hxi-connector-api/model/index.ts create mode 100644 lib/js-api/src/api/hxi-connector-api/model/prediction.ts create mode 100644 lib/js-api/src/api/hxi-connector-api/model/predictionEntry.ts create mode 100644 lib/js-api/src/api/hxi-connector-api/model/predictionPaging.ts create mode 100644 lib/js-api/src/api/hxi-connector-api/model/predictionPagingList.ts diff --git a/lib/content-services/src/lib/prediction/index.ts b/lib/content-services/src/lib/prediction/index.ts new file mode 100644 index 0000000000..54beb1a252 --- /dev/null +++ b/lib/content-services/src/lib/prediction/index.ts @@ -0,0 +1,18 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './public-api'; diff --git a/lib/content-services/src/lib/prediction/public-api.ts b/lib/content-services/src/lib/prediction/public-api.ts new file mode 100644 index 0000000000..fda9d52bde --- /dev/null +++ b/lib/content-services/src/lib/prediction/public-api.ts @@ -0,0 +1,18 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './services'; diff --git a/lib/content-services/src/lib/prediction/services/index.ts b/lib/content-services/src/lib/prediction/services/index.ts new file mode 100644 index 0000000000..9865a98eb7 --- /dev/null +++ b/lib/content-services/src/lib/prediction/services/index.ts @@ -0,0 +1,18 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './prediction.service'; diff --git a/lib/content-services/src/lib/prediction/services/prediction.service.spec.ts b/lib/content-services/src/lib/prediction/services/prediction.service.spec.ts new file mode 100644 index 0000000000..0cd9707e74 --- /dev/null +++ b/lib/content-services/src/lib/prediction/services/prediction.service.spec.ts @@ -0,0 +1,47 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { PredictionService } from './prediction.service'; +import { TestBed } from '@angular/core/testing'; +import { ContentTestingModule } from '../../testing/content.testing.module'; +import { Prediction, PredictionEntry, PredictionPaging, PredictionPagingList } from '@alfresco/js-api'; + +describe('PredictionService', () => { + let service: PredictionService; + + const mockPredictionPaging = (): PredictionPaging => { + const prediction = new Prediction(); + prediction.id = 'test id'; + const predictionEntry = new PredictionEntry({ entry: prediction }); + const predictionPagingList = new PredictionPagingList({ entries: [predictionEntry] }); + return new PredictionPaging({ list: predictionPagingList }); + }; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ContentTestingModule] + }); + service = TestBed.inject(PredictionService); + }); + + it('should call getPredictions on PredictionsApi with nodeId', () => { + spyOn(service.predictionsApi, 'getPredictions').and.returnValue(Promise.resolve(mockPredictionPaging())); + + service.getPredictions('test id'); + expect(service.predictionsApi.getPredictions).toHaveBeenCalledWith('test id'); + }); +}); diff --git a/lib/content-services/src/lib/prediction/services/prediction.service.ts b/lib/content-services/src/lib/prediction/services/prediction.service.ts new file mode 100644 index 0000000000..7900927d2c --- /dev/null +++ b/lib/content-services/src/lib/prediction/services/prediction.service.ts @@ -0,0 +1,43 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Injectable } from '@angular/core'; +import { AlfrescoApiService } from '@alfresco/adf-core'; +import { PredictionsApi, PredictionPaging } from '@alfresco/js-api'; +import { from, Observable } from 'rxjs'; + +@Injectable({ providedIn: 'root' }) +export class PredictionService { + private _predictionsApi: PredictionsApi; + + get predictionsApi(): PredictionsApi { + this._predictionsApi = this._predictionsApi ?? new PredictionsApi(this.apiService.getInstance()); + return this._predictionsApi; + } + + constructor(private apiService: AlfrescoApiService) {} + + /** + * Get predictions for a given node + * + * @param nodeId The identifier of node. + * @returns Observable + */ + getPredictions(nodeId: string): Observable { + return from(this.predictionsApi.getPredictions(nodeId)); + } +} diff --git a/lib/content-services/src/public-api.ts b/lib/content-services/src/public-api.ts index 18548422b6..7a8de43f2d 100644 --- a/lib/content-services/src/public-api.ts +++ b/lib/content-services/src/public-api.ts @@ -44,5 +44,6 @@ export * from './lib/category/index'; export * from './lib/viewer/index'; export * from './lib/security/index'; export * from './lib/infinite-scroll-datasource'; +export * from './lib/prediction/index'; export * from './lib/content.module'; diff --git a/lib/js-api/index.ts b/lib/js-api/index.ts index 91779220e6..c447218ebe 100644 --- a/lib/js-api/index.ts +++ b/lib/js-api/index.ts @@ -24,6 +24,7 @@ export * from './src/api/auth-rest-api/index'; export * from './src/api/activiti-rest-api/index'; export * from './src/api/search-rest-api/index'; export * from './src/api/model-rest-api/index'; +export * from './src/api/hxi-connector-api/index'; export * from './src/api/content-custom-api/api/content.api'; export * from './src/authentication/contentAuth'; diff --git a/lib/js-api/src/alfrescoApi.ts b/lib/js-api/src/alfrescoApi.ts index f3a4e3e30b..c50a6e605f 100644 --- a/lib/js-api/src/alfrescoApi.ts +++ b/lib/js-api/src/alfrescoApi.ts @@ -38,6 +38,7 @@ export class AlfrescoApi implements Emitter, AlfrescoApiType { discoveryClient: ContentClient; gsClient: ContentClient; authClient: ContentClient; + hxiConnectorClient: ContentClient; oauth2Auth: Oauth2Auth; processAuth: ProcessAuth; contentAuth: ContentAuth; @@ -164,6 +165,12 @@ export class AlfrescoApi implements Emitter, AlfrescoApiType { } else { this.processClient.setConfig(this.config); } + + if (!this.hxiConnectorClient) { + this.hxiConnectorClient = new ContentClient(this.config, `/api/${this.config.tenant}/private/hxi/versions/1`, this.httpClient); + } else { + this.hxiConnectorClient.setConfig(this.config, `/api/${this.config.tenant}/private/hxi/versions/1`); + } } /**@private? */ @@ -175,6 +182,7 @@ export class AlfrescoApi implements Emitter, AlfrescoApiType { this.searchClient.off('error', () => {}); this.discoveryClient.off('error', () => {}); this.gsClient.off('error', () => {}); + this.hxiConnectorClient.off('error', () => {}); this.contentClient.on('error', (error: any) => { this.errorHandler(error); @@ -203,6 +211,10 @@ export class AlfrescoApi implements Emitter, AlfrescoApiType { this.gsClient.on('error', (error: any) => { this.errorHandler(error); }); + + this.hxiConnectorClient.on('error', (error: any) => { + this.errorHandler(error); + }); } /**@private? */ @@ -312,6 +324,7 @@ export class AlfrescoApi implements Emitter, AlfrescoApiType { this.searchClient.setAuthentications(authECM); this.discoveryClient.setAuthentications(authECM); this.gsClient.setAuthentications(authECM); + this.hxiConnectorClient.setAuthentications(authECM); } /** diff --git a/lib/js-api/src/api/hxi-connector-api/README.md b/lib/js-api/src/api/hxi-connector-api/README.md new file mode 100644 index 0000000000..f02f3a70dd --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/README.md @@ -0,0 +1,19 @@ +**HX Insights Connector API** + +Provides access to the HX Insights connector API endpoints. + +## Documentation for API Endpoints + +All URIs are relative to *https://localhost/alfresco/api/-default-/private/hxi/versions/1* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*.PredictionsApi* | [**getPredictions**](docs/PredictionsApi.md#getPredictions) | **GET** /nodes/{nodeId}/predictions | Get predictions for a node. + +## Documentation for Models + + - [PredicitonsApi](docs/PredictionsApi.md) + - [Prediciton](docs/Prediction.md) + - [PredicitonEntry](docs/PredictionEntry.md) + - [PredicitonPagingList](docs/PredictionPagingList.md) + - [PredicitonPaging](docs/PredictionPaging.md) diff --git a/lib/js-api/src/api/hxi-connector-api/api/base.api.ts b/lib/js-api/src/api/hxi-connector-api/api/base.api.ts new file mode 100644 index 0000000000..fb1f56f2ee --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/api/base.api.ts @@ -0,0 +1,25 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ApiClient } from '../../../api-clients/api-client'; +import { LegacyHttpClient } from '../../../api-clients/http-client.interface'; + +export abstract class BaseApi extends ApiClient { + override get apiClient(): LegacyHttpClient { + return this.alfrescoApi.hxiConnectorClient; + } +} diff --git a/lib/js-api/src/api/hxi-connector-api/api/index.ts b/lib/js-api/src/api/hxi-connector-api/api/index.ts new file mode 100644 index 0000000000..6b8252ada7 --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/api/index.ts @@ -0,0 +1,18 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './predictions.api'; diff --git a/lib/js-api/src/api/hxi-connector-api/api/predictions.api.ts b/lib/js-api/src/api/hxi-connector-api/api/predictions.api.ts new file mode 100644 index 0000000000..1f57dfdf56 --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/api/predictions.api.ts @@ -0,0 +1,42 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BaseApi } from './base.api'; +import { throwIfNotDefined } from '../../../assert'; +import { PredictionPaging } from '../model'; + +export class PredictionsApi extends BaseApi { + /** + * List of predictions for a node + * + * @param nodeId The identifier of a node. + * @returns Promise + */ + getPredictions(nodeId: string): Promise { + throwIfNotDefined(nodeId, 'nodeId'); + + const pathParams = { + nodeId + }; + + return this.get({ + path: '/nodes/{nodeId}/predictions', + pathParams, + returnType: PredictionPaging + }); + } +} diff --git a/lib/js-api/src/api/hxi-connector-api/docs/Prediction.md b/lib/js-api/src/api/hxi-connector-api/docs/Prediction.md new file mode 100644 index 0000000000..64945cf9ce --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/docs/Prediction.md @@ -0,0 +1,14 @@ +# Prediction + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **string** | Identifier of a prediction | +**modelId** | **string** | Identifier of a model that made the prediction | +**confidenceLevel** | **number** | Prediction confidence level | +**predictionDateTime** | **Date** | Prediction creation date | +**property** | **string** | Name of the property that prediction was made for | +**previousValue** | any | Previous property value | +**predictionValue** | any | Predicted value | +**updateType** | [**UpdateType**](../model/prediction.ts) | Update type | +**reviewStatus** | [**ReviewStatus**](../model/prediction.ts) | Prediction review status | diff --git a/lib/js-api/src/api/hxi-connector-api/docs/PredictionEntry.md b/lib/js-api/src/api/hxi-connector-api/docs/PredictionEntry.md new file mode 100644 index 0000000000..c4acba3b1a --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/docs/PredictionEntry.md @@ -0,0 +1,8 @@ +# PredictionEntry + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**entry** | [**Prediction**](Prediction.md) | | + + diff --git a/lib/js-api/src/api/hxi-connector-api/docs/PredictionPaging.md b/lib/js-api/src/api/hxi-connector-api/docs/PredictionPaging.md new file mode 100644 index 0000000000..9d6e9a6b48 --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/docs/PredictionPaging.md @@ -0,0 +1,8 @@ +# PredictionPaging + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**list** | [**PredictionPagingList**](PredictionPagingList.md) | | + + diff --git a/lib/js-api/src/api/hxi-connector-api/docs/PredictionPagingList.md b/lib/js-api/src/api/hxi-connector-api/docs/PredictionPagingList.md new file mode 100644 index 0000000000..060f83e488 --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/docs/PredictionPagingList.md @@ -0,0 +1,9 @@ +# PredictionPagingList + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**pagination** | [**Pagination**](../../content-rest-api/docs/Pagination.md) | | +**entries** | [**PredictionEntry[]**](PredictionEntry.md) | | + + diff --git a/lib/js-api/src/api/hxi-connector-api/docs/PredictionsApi.md b/lib/js-api/src/api/hxi-connector-api/docs/PredictionsApi.md new file mode 100644 index 0000000000..f4ce759cd2 --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/docs/PredictionsApi.md @@ -0,0 +1,23 @@ +# PredictionsApi + +All URIs are relative to *https://localhost/alfresco/api/-default-/private/hxi/versions/1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**getPredictions**](PredictionsApi.md#getPredictions) | **GET** /nodes/{nodeId}/predictions | Get predictions for node. + + +# **getPredictions** +> PredictionPaging getPredictions(nodeId) + +Get predictions for a node. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **nodeId** | **string**| The identifier of a node. | + +### Return type + +[**PredictionPaging**](PredictionPaging.md) diff --git a/lib/js-api/src/api/hxi-connector-api/index.ts b/lib/js-api/src/api/hxi-connector-api/index.ts new file mode 100644 index 0000000000..2d6a86306e --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/index.ts @@ -0,0 +1,19 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './api'; +export * from './model'; diff --git a/lib/js-api/src/api/hxi-connector-api/model/index.ts b/lib/js-api/src/api/hxi-connector-api/model/index.ts new file mode 100644 index 0000000000..a2b4ff8924 --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/model/index.ts @@ -0,0 +1,21 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './prediction'; +export * from './predictionEntry'; +export * from './predictionPaging'; +export * from './predictionPagingList'; diff --git a/lib/js-api/src/api/hxi-connector-api/model/prediction.ts b/lib/js-api/src/api/hxi-connector-api/model/prediction.ts new file mode 100644 index 0000000000..4a2c611d85 --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/model/prediction.ts @@ -0,0 +1,45 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DateAlfresco } from '../../content-custom-api'; + +export class Prediction { + id: string; + modelId: string; + confidenceLevel: number; + predictionDateTime: Date; + property: string; + previousValue: any; + predictionValue: any; + updateType: UpdateType; + reviewStatus: ReviewStatus; + + constructor(input?: Partial) { + if (input) { + Object.assign(this, input); + this.predictionDateTime = input.predictionDateTime ? DateAlfresco.parseDate(input.predictionDateTime) : undefined; + } + } +} + +export type UpdateType = 'AUTOFILL' | 'AUTOCORRECT'; + +export enum ReviewStatus { + UNREVIEWED = 'UNREVIEWED', + CONFIRMED = 'CONFIRMED', + REJECTED = 'REJECTED' +} diff --git a/lib/js-api/src/api/hxi-connector-api/model/predictionEntry.ts b/lib/js-api/src/api/hxi-connector-api/model/predictionEntry.ts new file mode 100644 index 0000000000..c657f7f6ee --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/model/predictionEntry.ts @@ -0,0 +1,29 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Prediction } from './prediction'; + +export class PredictionEntry { + entry: Prediction; + + constructor(input?: Partial) { + if (input) { + Object.assign(this, input); + this.entry = input.entry ? new Prediction(input.entry) : undefined; + } + } +} diff --git a/lib/js-api/src/api/hxi-connector-api/model/predictionPaging.ts b/lib/js-api/src/api/hxi-connector-api/model/predictionPaging.ts new file mode 100644 index 0000000000..befef26786 --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/model/predictionPaging.ts @@ -0,0 +1,29 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { PredictionPagingList } from './predictionPagingList'; + +export class PredictionPaging { + list?: PredictionPagingList; + + constructor(input?: Partial) { + if (input) { + Object.assign(this, input); + this.list = input.list ? new PredictionPagingList(input.list) : undefined; + } + } +} diff --git a/lib/js-api/src/api/hxi-connector-api/model/predictionPagingList.ts b/lib/js-api/src/api/hxi-connector-api/model/predictionPagingList.ts new file mode 100644 index 0000000000..4f4d85d748 --- /dev/null +++ b/lib/js-api/src/api/hxi-connector-api/model/predictionPagingList.ts @@ -0,0 +1,34 @@ +/*! + * @license + * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Pagination } from '../../content-rest-api/model/pagination'; +import { PredictionEntry } from './predictionEntry'; + +export class PredictionPagingList { + pagination?: Pagination; + entries?: PredictionEntry[]; + + constructor(input?: Partial) { + if (input) { + Object.assign(this, input); + this.pagination = input.pagination ? new Pagination(input.pagination) : undefined; + if (input.entries) { + this.entries = input.entries.map((item) => new PredictionEntry(item)); + } + } + } +} diff --git a/lib/js-api/src/index.ts b/lib/js-api/src/index.ts index 702cb0aa4a..568ba99356 100644 --- a/lib/js-api/src/index.ts +++ b/lib/js-api/src/index.ts @@ -24,6 +24,7 @@ export * from './api/auth-rest-api'; export * from './api/activiti-rest-api'; export * from './api/search-rest-api'; export * from './api/model-rest-api'; +export * from './api/hxi-connector-api'; export * from './api/content-custom-api/api/content.api'; export * from './authentication/contentAuth'; diff --git a/lib/js-api/src/to-deprecate/alfresco-api-type.ts b/lib/js-api/src/to-deprecate/alfresco-api-type.ts index 8346a461ab..8071cc4b74 100644 --- a/lib/js-api/src/to-deprecate/alfresco-api-type.ts +++ b/lib/js-api/src/to-deprecate/alfresco-api-type.ts @@ -34,6 +34,7 @@ export interface AlfrescoApiType { gsClient: LegacyHttpClient; authClient: LegacyHttpClient; processAuth: LegacyHttpClient; + hxiConnectorClient: LegacyHttpClient; setConfig(config: AlfrescoApiConfig): void; changeWithCredentialsConfig(withCredentials: boolean): void;