@sap/subaccount-destination-service-provider
Version:
Provide service consumption of SAP subaccount services
103 lines (102 loc) • 2.8 kB
TypeScript
import { Authentication, BaseProviderSystem, Filter, ProviderSystem } from "@sap/service-provider-apis";
export type BusinessObjectType = "BO INTERFACE";
export type CDSType = "CDS VIEW";
export interface BusinessItem {
id: string;
title: string;
type: BusinessObjectType | CDSType;
description: string | null;
}
export interface BusinessItemSpec {
isUI: boolean;
status: string;
sot: string | null;
sotName: string | null;
entities: BusinessItemEntity[];
}
export interface CatalogProviderSystem extends ProviderSystem {
sapClient?: string;
}
export interface ProviderSystemBusiness extends BaseProviderSystem {
product?: string;
sapClient?: string;
getBOs(options?: ProviderOptions): Promise<BusinessItem[]>;
getCDS(options?: ProviderOptions): Promise<BusinessItem[]>;
getSpecBo(boId: string): Promise<BusinessItemSpec>;
getSpecCds(cdsId: string): Promise<BusinessItemSpec>;
}
export interface ProviderOptions {
credentials?: Authentication;
}
export interface BusinessItemsRetriever {
retrieveBusinessItems(destinationName: string, credentials?: Authentication): Promise<BusinessItem[]>;
retrieveSpecBusinessItem(businessItemId: string): Promise<BusinessItemSpec>;
}
export interface BusinessRepositoryRetriever {
retrieveSystemsBusinessItems(filter?: Filter): Promise<ProviderSystemBusiness[]>;
}
export interface RawBusinessItem {
id: string;
name: string;
title: string;
description: string | null;
type: CDSType | BusinessObjectType;
status: string;
sot: string | null;
sotName: string | null;
entities: BusinessItemEntity[];
}
export interface BusinessItemEntity {
id: string;
name: string;
properties: EntityProperty[];
associations: EntityAssosiation[] | null;
actions: EntityAction[] | null;
}
export interface EntityProperty {
name: string;
key: boolean;
type: string;
length: string | null;
label: string | null;
}
export interface EntityAssosiation {
name: string;
assocName: string;
cardinality: string;
}
export interface EntityAction {
name: string;
type: string;
}
export interface AnnotationsMetadata {
id: string;
uri: string;
type: string;
content_type: string;
media_src: string;
}
export interface DeferredUri {
uri: string;
}
export interface AnnotationResult {
__metadata: AnnotationsMetadata;
TechnicalName: string;
Version: string;
Description: string;
MediaType: string;
Services: {
__deferred: DeferredUri;
};
RecommendedSrv: {
__deferred: DeferredUri;
};
ScopedSrv: {
__deferred: DeferredUri;
};
}
export interface RawServiceAnnotationsResults {
d: {
results: AnnotationResult[];
};
}