oda-sid-model
Version:
ODA SID Model Library for TMF APIs
920 lines (884 loc) • 24.7 kB
text/typescript
import { AxiosInstance } from 'axios';
interface IResponse {
code?: string;
body?: object;
statusCode?: number;
xTotalCount?: number;
xTotalResultCount?: number;
}
type IResponseWithArrayBody<T> = Omit<IResponse, "body"> & {
data?: Array<T>;
};
interface IRequest {
id?: string;
code?: string;
body?: string;
method?: string;
to?: string;
}
/**
* file này là file service dùng chung, định nghĩa logic của các phương thúc cần phải có
* từ file repository
* của 1 file service ở đối tượng cụ thể
* các phần mở rộng (ở trong constructor):
* @accesToken
* @refreshToken
* @prefix : domain url path (ví dụ : /TMFC007/TMF641/v5/CancelServiceOrder
* @domain : trường hợp cần đổi port ( ví dụ : http://localhost:4000 )
*/
declare class GenericService<TRequest extends IRequest, TResponse> implements GenericServiceRepository<TRequest, TResponse> {
protected readonly axiosInstance: AxiosInstance;
constructor({ accessToken, refreshToken, prefix, domain }: {
accessToken?: string;
refreshToken?: string;
prefix: string;
/**
* chỗ này sau viết lại thành path,
* @todo: tối ưu thêm cho phần này
*/
domain?: string;
});
/**
* hàm tạo đối tượng
* @param data
*/
create(data: TRequest): Promise<TResponse>;
createList(data: TRequest): Promise<TResponse>;
/**
* hàm này nhận vào là query dạng object , rồi từ object đó mới chuyển sang
* dạng string theo cặp key-value
* @param query object param đầu vào
*
* ------------------------
*
* # response
* @data data trả về từ be
* @statusCode mã code của response (belike 200,401,500,501)
* @xTotalCount số lượng item tất cả
* @xTotalResultCount: phần tử hiện tại
*/
findByQuery(query: Record<string, any>): Promise<IResponseWithArrayBody<TResponse>>;
/**
* tìm kiếm theo id
* @param id
*/
findById(id: string): Promise<any>;
/**
* cập nhật dữ liệu theo id và trả về dữ liệu đã được cập nhật
* @param id mã định danh
* @param data dữ liệu cần gửi lên
*/
patch(id: string, data: TRequest): Promise<TResponse>;
put(id: string, data: TRequest): Promise<TResponse>;
/**
* xoá dữ liệu theo id
* @param id
*/
delete(id: string): Promise<void>;
}
/**
* generic class, file này để định nghĩa các phương thức ban đầu cho
* file generic service
*/
declare abstract class GenericServiceRepository<TRequest extends IRequest, TResponse> {
abstract create(data: TRequest): Promise<TResponse>;
abstract createList(data: TRequest): Promise<any>;
abstract findByQuery(query: Record<string, any>): Promise<IResponseWithArrayBody<TResponse>>;
abstract findById(id: string): Promise<TResponse>;
abstract patch(id: string, data: TRequest): Promise<TResponse>;
abstract put(id: string, data: TRequest): Promise<TResponse>;
abstract delete(id: string): Promise<void>;
}
declare const UriConstant: {
URI_TMF620: string;
URI_TMF723: string;
URI_TMF671: string;
URI_TMF806: string;
URI_TMF807: string;
URI_TMF808: string;
URI_TMF809: string;
URI_TMF622: string;
URI_TMF648: string;
URI_TMF663: string;
URI_TMF679: string;
URI_TMF760: string;
URI_TMF637: string;
URI_TMF633: string;
URI_TMF657: string;
URI_TMF641: string;
URI_TMF638: string;
URI_TMF645: string;
URI_TMF634: string;
URI_TMF652: string;
URI_TMF639: string;
URI_TMF685: string;
URI_TMF697: string;
URI_TMF713: string;
URI_TMF714: string;
URI_TMF646: string;
URI_TMF802: string;
URI_TMF803: string;
URI_TMF804: string;
URI_TMF805: string;
URI_TMF701: string;
URI_TMF666: string;
URI_TMF664: string;
URI_TMF669: string;
URI_TMF673: string;
URI_TMF674: string;
URI_TMF675: string;
URI_TMF629: string;
URI_TMF678: string;
URI_TMF683: string;
URI_TMF687: string;
URI_TMF662: string;
URI_TMF699: string;
URI_TMF632: string;
URI_TMF651: string;
URI_TMF676: string;
URI_TMF716: string;
URI_TMF801: string;
DynamicForm: string;
};
declare const UriEntity: {
ProductCatalog: string;
ProductOffering: string;
ProductOfferingPrice: string;
ProductOfferingPriceMatrix: string;
ProductSpecification: string;
Category: string;
Promotion: string;
PolicyAction: string;
PolicyCondition: string;
PolicyEvent: string;
PolicyRule: string;
PolicyVariable: string;
PolicyVariableSet: string;
ActionType: string;
Criteria: string;
CriteriaSet: string;
Association: string;
AssociationSpecification: string;
WorkIssue: string;
WorkFlow: string;
WorkProject: string;
ProductGroup: string;
ProductProperty: string;
PropertySpecification: string;
Community: string;
CommunityGroup: string;
OfferInstance: string;
DecisionTableSpecification: string;
CancelProductOrder: string;
ProductOrder: string;
Quote: string;
ShoppingCart: string;
ProcessFlow: string;
TaskFlow: string;
Product: string;
ServiceCatalog: string;
ServiceCategory: string;
ServiceCandidate: string;
ServiceSpecification: string;
ServiceLevelObjective: string;
ServiceLevelSpecification: string;
CancelServiceOrder: string;
ServiceOrder: string;
Service: string;
ResourceFacingService: string;
CustomerFacingService: string;
CheckServiceQualification: string;
QueryServiceQualification: string;
ResourceCatalog: string;
ResourceCategory: string;
ResourceCandidate: string;
ResourceSpecification: string;
LogicalResourceSpecification: string;
PhysicalResourceSpecification: string;
ResourceFunctionSpecification: string;
CheckProductOfferingQualification: string;
QueryProductOfferingQualification: string;
CheckProductConfiguration: string;
QueryProductConfiguration: string;
CancelResourceOrder: string;
ResourceOrder: string;
Resource: string;
CapacitySpecification: string;
ResourcePool: string;
ResourcePoolSpecification: string;
Picklist: string;
CharacteristicCatalog: string;
CharacteristicCategory: string;
CharacteristicSpecification: string;
Proposal: string;
ProposalGroup: string;
ProposalSpecification: string;
Work: string;
WorkSpecification: string;
CheckWorkQualification: string;
QueryWorkQualification: string;
CancelWorkOrder: string;
WorkOrder: string;
Appointment: string;
SearchTimeSlot: string;
DynamicForm: string;
};
/**
* hàm lấy ra đuôi url domain path theo key
* @param entityName key ở trong danh sách các path ở trên
*/
declare function getApiUrlPath(entityName: keyof typeof UriEntity): string;
declare class ProductSpecificationFactory extends GenericService<IProductSpecificationRequest, IProductSpecificationResponse> {
constructor();
}
interface IProductSpecificationResponse {
id: string;
href: string;
name: string;
code: string;
isBundle: boolean;
productSpecCharacteristic: ProductSpecCharacteristic$1[];
lifecycleStatus: string;
description: string;
relatedParty: RelatedParty$3[];
version: string;
lastUpdate: string;
'@type': string;
'@baseType': string;
'@schemaLocation': string;
bundledProductSpecification?: any[];
validFor?: ValidFor2$1;
serviceSpecification?: ServiceSpecification$1[];
resourceSpecification?: ServiceSpecification$1[];
productNumber?: string;
}
interface ServiceSpecification$1 {
id: string;
href: string;
name: string;
'@type': string;
'@schemaLocation': string;
'@referredType': string;
}
interface ValidFor2$1 {
startDateTime: string;
endDateTime: string;
}
interface RelatedParty$3 {
role: string;
partyOrPartyRole: PartyOrPartyRole$1;
'@type': string;
}
interface PartyOrPartyRole$1 {
id: string;
name: string;
'@type': string;
'@referredType': string;
}
interface ProductSpecCharacteristic$1 {
id: string;
name: string;
code: string;
description: string;
valueType: string;
configurable: boolean;
isUnique: boolean;
extensible: boolean;
regex: string;
characteristicValueSpecification: CharacteristicValueSpecification$1[];
validFor: ValidFor$1;
'@type': string;
'@baseType': string;
}
interface CharacteristicValueSpecification$1 {
isDefault: boolean;
value: string;
validFor: ValidFor$1;
valueType: string;
'@type': string;
'@baseType': string;
}
interface ValidFor$1 {
}
interface IProductSpecificationRequest {
id?: string;
href: string;
name: string;
code: string;
isBundle: boolean;
productSpecCharacteristic: ProductSpecCharacteristic[];
lifecycleStatus: string;
description: string;
relatedParty: RelatedParty$2[];
version: string;
lastUpdate: string;
'@type': string;
'@baseType': string;
'@schemaLocation': string;
bundledProductSpecification?: any[];
validFor?: ValidFor2;
serviceSpecification?: ServiceSpecification[];
resourceSpecification?: ServiceSpecification[];
productNumber?: string;
}
interface ServiceSpecification {
id: string;
href: string;
name: string;
'@type': string;
'@schemaLocation': string;
'@referredType': string;
}
interface ValidFor2 {
startDateTime: string;
endDateTime: string;
}
interface RelatedParty$2 {
role: string;
partyOrPartyRole: PartyOrPartyRole;
'@type': string;
}
interface PartyOrPartyRole {
id: string;
name: string;
'@type': string;
'@referredType': string;
}
interface ProductSpecCharacteristic {
id: string;
name: string;
code: string;
description: string;
valueType: string;
configurable: boolean;
isUnique: boolean;
extensible: boolean;
regex: string;
characteristicValueSpecification: CharacteristicValueSpecification[];
validFor: ValidFor;
'@type': string;
'@baseType': string;
}
interface CharacteristicValueSpecification {
isDefault: boolean;
value: string;
validFor: ValidFor;
valueType: string;
'@type': string;
'@baseType': string;
}
interface ValidFor {
}
interface AbstractEntity {
id?: string;
href?: string;
name?: string;
"@type"?: string;
"@baseType"?: string;
"@schemaLocation"?: string;
"@referredType"?: string;
}
interface EntityRef {
id?: string;
href?: string;
name?: string;
code?: string;
refDescription?: string;
"@type"?: string;
"@baseType"?: string;
"@schemaLocation"?: string;
"@referredType"?: string;
entity?: AbstractEntity;
}
interface TimePeriod$6 {
startDateTime: Date;
endDateTime: Date;
}
interface Catalog extends AbstractEntity {
code: string;
catalogType: string;
lifecycleStatus: string;
validFor: TimePeriod$6;
lastUpdate: Date;
description: string;
relatedParty: RelatedPartyRefOrPartyRoleRef[];
version: string;
}
interface RelatedPartyRefOrPartyRoleRef extends EntityRef {
role: string;
partyOrPartyRole: PartyRefOrPartyRoleRef;
}
interface PartyRefOrPartyRoleRef extends EntityRef {
partyId: string;
partyName: string;
}
interface IProductCatalogRequest extends Catalog {
}
interface IProductCatalogResponse extends Catalog {
}
declare class ProductCatalogFactory extends GenericService<IProductCatalogRequest, IProductCatalogResponse> {
constructor();
}
interface Layout {
code: string;
title: string;
dataType: string;
ctlType: string;
unitCtlType: string;
unitExtraInfo: any;
extraInfo: any;
validateRules: string[];
}
interface ICriteriaModel extends AbstractEntity {
code?: string;
dataType: string;
operator?: string[];
layout?: Layout;
parent?: EntityRef;
version?: string;
lifecycleStatus?: string;
validFor?: TimePeriod$6;
}
interface ICriteriaEntity extends AbstractEntity {
code?: string;
dataType: string;
operator?: string[];
layout?: Layout;
parent?: EntityRef;
version?: string;
lifecycleStatus?: string;
validFor?: TimePeriod$6;
}
declare class CriteriaFactory extends GenericService<ICriteriaModel, ICriteriaEntity> {
constructor();
}
declare class ProductGroupFactory extends GenericService<IProductGroupRequest, IProductGroupResponse> {
constructor();
}
interface IProductGroupResponse {
id: string;
href: string;
name: string;
code: string;
description: string;
lifecycleStatus: string;
"@type": string;
"@baseType": string;
}
interface IProductGroupRequest {
id: string;
href: string;
name: string;
code: string;
description: string;
lifecycleStatus: string;
"@type": string;
"@baseType": string;
}
interface IPolicyActionResponse extends AbstractEntity {
code: string;
note: Note$5[];
policyAction: PolicyAction$1[];
actionCondition: EntityRef[];
actionStrategy: string;
actionType: string;
validFor: TimePeriod$5;
description: string;
actionSequence: number;
creationDate: Date;
version: string;
alarm: Alarm$1;
filter: string;
path: string;
fields: string;
operation: string;
actionValue: PolicyActionValue$1;
event: Event;
}
interface Note$5 extends AbstractEntity {
code: string;
author: string;
date: Date;
text: string;
}
interface TimePeriod$5 {
startDateTime: Date;
endDateTime: Date;
}
interface PolicyActionValue$1 extends AbstractEntity {
code: string;
dataType: string;
value: any;
}
interface Alarm$1 extends AbstractEntity {
ackState: string;
ackSystemId: string;
ackUserId: string;
alarmChangedTime: Date;
alarmClearedTime: Date;
alarmDetails: string;
alarmEscalation: boolean;
alarmRaisedTime: Date;
alarmReportingTime: Date;
alarmType: string;
alarmedObjectType: string;
clearSystemId: string;
clearUserId: string;
externalAlarmId: string;
isRootCause: boolean;
perceivedSeverity: string;
plannedOutageIndicator: string;
probableCause: string;
proposedRepairedActions: string;
reportingSystemId: string;
serviceAffecting: boolean;
sourceSystemId: string;
specificProblem: string;
state: string;
affectedService: AffectedService$1[];
alarmedObject: AlarmedObject$1;
comment: Comment[];
correlatedAlarm: EntityRef[];
crossedThresholdInformation: CrossedThresholdInformation$1;
parentAlarm: EntityRef[];
place: EntityRef[];
}
interface AffectedService$1 extends AbstractEntity {
code: string;
}
interface AlarmedObject$1 extends AbstractEntity {
code: string;
}
interface CrossedThresholdInformation$1 extends AbstractEntity {
direction: string;
granularity: string;
indicatorName: string;
indicatorUnit: string;
observedValue: string;
thresholdCrossingDescription: string;
threshold: EntityRef;
code: string;
}
interface PolicyAction$1 extends AbstractEntity {
code: string;
note: Note$5[];
policyAction: PolicyAction$1[];
actionCondition: EntityRef[];
actionStrategy: string;
actionType: string;
validFor: TimePeriod$5;
description: string;
actionSequence: number;
creationDate: Date;
version: string;
alarm: Alarm$1;
filter: string;
path: string;
fields: string;
operation: string;
actionValue: PolicyActionValue$1;
event: Event;
}
interface IPolicyActionRequest extends AbstractEntity {
code: string;
note: Note$4[];
policyAction: PolicyAction[];
actionCondition: EntityRef[];
actionStrategy: string;
actionType: string;
validFor: TimePeriod$4;
description: string;
actionSequence: number;
creationDate: Date;
version: string;
alarm: Alarm;
filter: string;
path: string;
fields: string;
operation: string;
actionValue: PolicyActionValue;
event: Event;
}
interface Note$4 extends AbstractEntity {
code: string;
author: string;
date: Date;
text: string;
}
interface TimePeriod$4 {
startDateTime: Date;
endDateTime: Date;
}
interface PolicyActionValue extends AbstractEntity {
code: string;
dataType: string;
value: any;
}
interface Alarm extends AbstractEntity {
ackState: string;
ackSystemId: string;
ackUserId: string;
alarmChangedTime: Date;
alarmClearedTime: Date;
alarmDetails: string;
alarmEscalation: boolean;
alarmRaisedTime: Date;
alarmReportingTime: Date;
alarmType: string;
alarmedObjectType: string;
clearSystemId: string;
clearUserId: string;
externalAlarmId: string;
isRootCause: boolean;
perceivedSeverity: string;
plannedOutageIndicator: string;
probableCause: string;
proposedRepairedActions: string;
reportingSystemId: string;
serviceAffecting: boolean;
sourceSystemId: string;
specificProblem: string;
state: string;
affectedService: AffectedService[];
alarmedObject: AlarmedObject;
comment: Comment[];
correlatedAlarm: EntityRef[];
crossedThresholdInformation: CrossedThresholdInformation;
parentAlarm: EntityRef[];
place: EntityRef[];
}
interface AffectedService extends AbstractEntity {
code: string;
}
interface AlarmedObject extends AbstractEntity {
code: string;
}
interface CrossedThresholdInformation extends AbstractEntity {
direction: string;
granularity: string;
indicatorName: string;
indicatorUnit: string;
observedValue: string;
thresholdCrossingDescription: string;
threshold: EntityRef;
code: string;
}
interface PolicyAction extends AbstractEntity {
code: string;
note: Note$4[];
policyAction: PolicyAction[];
actionCondition: EntityRef[];
actionStrategy: string;
actionType: string;
validFor: TimePeriod$4;
description: string;
actionSequence: number;
creationDate: Date;
version: string;
alarm: Alarm;
filter: string;
path: string;
fields: string;
operation: string;
actionValue: PolicyActionValue;
event: Event;
}
declare class PolicyActionFactory extends GenericService<IPolicyActionRequest, IPolicyActionResponse> {
constructor();
}
interface IPolicyConditionResponse extends AbstractEntity {
code: string;
note: Note$3[];
policyConditionStatement: PolicyConditionStatement$1[];
validFor: TimePeriod$3;
policyCondition: PolicyCondition$1[];
isConjustiveNormalForm: boolean;
description: string;
creationDate: Date;
policyConditionStrategy: string;
version: string;
}
interface PolicyConditionStatement$1 extends AbstractEntity {
code: string;
opType: string;
description: string;
policyConditionValue: PolicyConditionValue$1[];
policyConditionVariable: PolicyConditionVariable$1;
}
interface PolicyConditionValue$1 extends AbstractEntity {
code: string;
value: any;
dataType: string;
}
interface PolicyConditionVariable$1 extends AbstractEntity {
code: string;
fields: string;
filter: string;
path: string;
dataType: string;
variableType: string;
}
interface TimePeriod$3 {
startDateTime: Date;
endDateTime: Date;
}
interface PolicyCondition$1 extends AbstractEntity {
code: string;
note: Note$3[];
policyConditionStatement: PolicyConditionStatement$1[];
validFor: TimePeriod$3;
policyCondition: PolicyCondition$1[];
isConjustiveNormalForm: boolean;
description: string;
creationDate: Date;
policyConditionStrategy: string;
version: string;
}
interface Note$3 extends AbstractEntity {
code: string;
author: string;
date: Date;
text: string;
}
interface IPolicyConditionRequest extends AbstractEntity {
code: string;
note: Note$2[];
policyConditionStatement: PolicyConditionStatement[];
validFor: TimePeriod$2;
policyCondition: PolicyCondition[];
isConjustiveNormalForm: boolean;
description: string;
creationDate: Date;
policyConditionStrategy: string;
version: string;
}
interface PolicyConditionStatement extends AbstractEntity {
code: string;
opType: string;
description: string;
policyConditionValue: PolicyConditionValue[];
policyConditionVariable: PolicyConditionVariable;
}
interface PolicyConditionValue extends AbstractEntity {
code: string;
value: any;
dataType: string;
}
interface PolicyConditionVariable extends AbstractEntity {
code: string;
fields: string;
filter: string;
path: string;
dataType: string;
variableType: string;
}
interface TimePeriod$2 {
startDateTime: Date;
endDateTime: Date;
}
interface PolicyCondition extends AbstractEntity {
code: string;
note: Note$2[];
policyConditionStatement: PolicyConditionStatement[];
validFor: TimePeriod$2;
policyCondition: PolicyCondition[];
isConjustiveNormalForm: boolean;
description: string;
creationDate: Date;
policyConditionStrategy: string;
version: string;
}
interface Note$2 extends AbstractEntity {
code: string;
author: string;
date: Date;
text: string;
}
declare class PolicyConditionFactory extends GenericService<IPolicyConditionRequest, IPolicyConditionResponse> {
constructor();
}
interface IPolicyEventResponse extends AbstractEntity {
code: string;
description: string;
creationDate: Date;
event: EntityRef[];
query: string;
eventType: string;
}
interface IPolicyEventRequest extends AbstractEntity {
code: string;
description: string;
creationDate: Date;
event: EntityRef[];
query: string;
eventType: string;
}
declare class PolicyEventFactory extends GenericService<IPolicyEventRequest, IPolicyEventResponse> {
constructor();
}
interface IPolicyRuleResponse extends AbstractEntity {
code: string;
note: Note$1[];
policyAction: EntityRef[];
policyCondition: EntityRef;
isConjustiveNormalForm: boolean;
description: string;
sequencedAction: number;
creationDate: Date;
relatedParty: RelatedParty$1[];
version: string;
policyEvent: EntityRef;
sequencedValue: number;
policyDomain: EntityRef[];
executionStrategy: string;
state: string;
}
interface RelatedParty$1 extends AbstractEntity {
validFor: TimePeriod$1;
partyRole: string;
}
interface TimePeriod$1 {
startDateTime: Date;
endDateTime: Date;
}
interface Note$1 extends AbstractEntity {
code: string;
author: string;
date: Date;
text: string;
}
interface IPolicyRuleRequest extends AbstractEntity {
code: string;
note: Note[];
policyAction: EntityRef[];
policyCondition: EntityRef;
isConjustiveNormalForm: boolean;
description: string;
sequencedAction: number;
creationDate: Date;
relatedParty: RelatedParty[];
version: string;
policyEvent: EntityRef;
sequencedValue: number;
policyDomain: EntityRef[];
executionStrategy: string;
state: string;
}
interface RelatedParty extends AbstractEntity {
validFor: TimePeriod;
partyRole: string;
}
interface TimePeriod {
startDateTime: Date;
endDateTime: Date;
}
interface Note extends AbstractEntity {
code: string;
author: string;
date: Date;
text: string;
}
declare class PolicyRuleFactory extends GenericService<IPolicyRuleRequest, IPolicyRuleResponse> {
constructor();
}
export { CriteriaFactory, GenericService, GenericServiceRepository, type ICriteriaEntity, type ICriteriaModel, type IPolicyActionRequest, type IPolicyActionResponse, type IPolicyConditionRequest, type IPolicyConditionResponse, type IPolicyEventRequest, type IPolicyEventResponse, type IPolicyRuleRequest, type IPolicyRuleResponse, type IProductCatalogRequest, type IProductCatalogResponse, type IProductGroupRequest, type IProductGroupResponse, type IProductSpecificationRequest, type IProductSpecificationResponse, type IRequest, type IResponse, type IResponseWithArrayBody, PolicyActionFactory, PolicyConditionFactory, PolicyEventFactory, PolicyRuleFactory, ProductCatalogFactory, ProductGroupFactory, ProductSpecificationFactory, UriConstant, UriEntity, getApiUrlPath };