[ACS-8025] Add new service and API for predictions (#9714)

* [ACS-8025] Add new service and API for predictions

* [ACS-8025] Fix update type
This commit is contained in:
MichalKinas
2024-05-22 23:14:01 +02:00
committed by GitHub
parent b8c8e5ce35
commit 19fa86d1a1
25 changed files with 504 additions and 0 deletions

View File

@@ -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';

View File

@@ -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);
}
/**

View File

@@ -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)

View File

@@ -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;
}
}

View File

@@ -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';

View File

@@ -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<PredictionPaging>
*/
getPredictions(nodeId: string): Promise<PredictionPaging> {
throwIfNotDefined(nodeId, 'nodeId');
const pathParams = {
nodeId
};
return this.get({
path: '/nodes/{nodeId}/predictions',
pathParams,
returnType: PredictionPaging
});
}
}

View File

@@ -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 |

View File

@@ -0,0 +1,8 @@
# PredictionEntry
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**entry** | [**Prediction**](Prediction.md) | |

View File

@@ -0,0 +1,8 @@
# PredictionPaging
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**list** | [**PredictionPagingList**](PredictionPagingList.md) | |

View File

@@ -0,0 +1,9 @@
# PredictionPagingList
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**pagination** | [**Pagination**](../../content-rest-api/docs/Pagination.md) | |
**entries** | [**PredictionEntry[]**](PredictionEntry.md) | |

View File

@@ -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.
<a name="getPredictions"></a>
# **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)

View File

@@ -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';

View File

@@ -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';

View File

@@ -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<Prediction>) {
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'
}

View File

@@ -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<PredictionEntry>) {
if (input) {
Object.assign(this, input);
this.entry = input.entry ? new Prediction(input.entry) : undefined;
}
}
}

View File

@@ -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<PredictionPaging>) {
if (input) {
Object.assign(this, input);
this.list = input.list ? new PredictionPagingList(input.list) : undefined;
}
}
}

View File

@@ -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<PredictionPagingList>) {
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));
}
}
}
}

View File

@@ -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';

View File

@@ -34,6 +34,7 @@ export interface AlfrescoApiType {
gsClient: LegacyHttpClient;
authClient: LegacyHttpClient;
processAuth: LegacyHttpClient;
hxiConnectorClient: LegacyHttpClient;
setConfig(config: AlfrescoApiConfig): void;
changeWithCredentialsConfig(withCredentials: boolean): void;