@@ -17,7 +17,7 @@ export interface ORDDocument {
1717 /**
1818 * Version of the Open Resource Discovery specification that is used to describe this document.
1919 */
20- openResourceDiscovery : "1.0" | "1.1" | "1.2" | "1.3" | "1.4" | "1.5" | "1.6" | "1.7" | "1.8" | "1.9" | "1.10" ;
20+ openResourceDiscovery : "1.0" | "1.1" | "1.2" | "1.3" | "1.4" | "1.5" | "1.6" | "1.7" | "1.8" | "1.9" | "1.10" | "1.11" ;
2121 /**
2222 * Optional description of the ORD document itself.
2323 * Please note that this information is NOT further processed or considered by an ORD aggregator.
@@ -35,7 +35,7 @@ export interface ORDDocument {
3535 * The policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.
3636 *
3737 */
38- policyLevel ?: "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ;
38+ policyLevel ?: ( string | "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ) & string ;
3939 /**
4040 * If the fixed `policyLevel` values need to be extended, an arbitrary `customPolicyLevel` can be provided.
4141 * The policy level is inherited from packages to resources they contain, but can be overwritten at resource level.
@@ -498,7 +498,7 @@ export interface APIResource {
498498 /**
499499 * API Protocol including the protocol version if applicable
500500 */
501- apiProtocol : "odata-v2" | "odata-v4" | "rest" | "graphql" | "delta-sharing" | "soap-inbound" | "soap-outbound" | "websocket" | "sap-rfc" | "sap-sql-api-v1" | "sap-ina-api-v1" ;
501+ apiProtocol : ( string | "odata-v2" | "odata-v4" | "rest" | "graphql" | "delta-sharing" | "soap-inbound" | "soap-outbound" | "websocket" | "sap-rfc" | "sap-sql-api-v1" | "sap-ina-api-v1" ) & string ;
502502 /**
503503 * List of available machine-readable definitions, which describe the resource or capability in detail.
504504 *
@@ -515,7 +515,7 @@ export interface APIResource {
515515 *
516516 * All APIs that share the same implementation standard MAY be treated the same or similar by a consumer client.
517517 */
518- implementationStandard ?: "sap:ord-document-api:v1" | "cff:open-service-broker:v2" | "sap:csn-exposure:v1" | "sap:ape-api:v1" | "sap:cdi-api:v1" | "sap:delta-sharing:v1" | "sap:hana-cloud-sql:v1" | "sap.dp:data-subscription-api:v1" | "custom" ;
518+ implementationStandard ?: ( string | "sap:ord-document-api:v1" | "cff:open-service-broker:v2" | "sap:csn-exposure:v1" | "sap:ape-api:v1" | "sap:cdi-api:v1" | "sap:delta-sharing:v1" | "sap:hana-cloud-sql:v1" | "sap.dp:data-subscription-api:v1" | "custom" ) & string ;
519519 /**
520520 * If the fixed `implementationStandard` values need to be extended, an arbitrary `customImplementationStandard` can be provided.
521521 *
@@ -555,12 +555,20 @@ export interface APIResource {
555555 *
556556 * If no array is defined, it is assumed that this information is not provided.
557557 */
558- supportedUseCases ?: ( "data-federation" | "snapshot" | "incremental" | "streaming" ) [ ] ;
558+ supportedUseCases ?: ( ( string | "data-federation" | "snapshot" | "incremental" | "streaming" ) & string ) [ ] ;
559559 usage ?: Usage ;
560560 /**
561561 * Describes mappings between the API Models of the described resource to the underlying, conceptual entity types.
562562 */
563563 entityTypeMappings ?: EntityTypeMapping [ ] ;
564+ /**
565+ * Optional list of [entity types](#entity-type) that are exposed by the resource.
566+ *
567+ * This replaces `entityTypeMappings`. If both is given, the `exposedEntityTypes` wins.
568+ *
569+ * MUST be a valid reference to an [EntityType](#entity-type) ORD ID.
570+ */
571+ exposedEntityTypes ?: ExposedEntityType [ ] ;
564572 /**
565573 * Links with semantic meaning that are specific to API Resources.
566574 */
@@ -610,7 +618,7 @@ export interface APIResource {
610618 * The policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.
611619 *
612620 */
613- policyLevel ?: "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ;
621+ policyLevel ?: ( string | "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ) & string ;
614622 /**
615623 * If the fixed `policyLevel` values need to be extended, an arbitrary `customPolicyLevel` can be provided.
616624 * The policy level is inherited from packages to resources they contain, but can be overwritten at resource level.
@@ -703,7 +711,7 @@ export interface APIResourceDefinition {
703711 * Type of the API Resource Definition
704712 * If "custom" is chosen, a customType MUST be provided
705713 */
706- type : "openapi-v2" | "openapi-v3" | "raml-v1" | "edmx" | "csdl-json" | "graphql-sdl" | "wsdl-v1" | "wsdl-v2" | "sap-rfc-metadata-v1" | "sap-sql-api-definition-v1" | "sap-csn-interop-effective-v1" | "custom" ;
714+ type : ( string | "openapi-v2" | "openapi-v3" | "raml-v1" | "edmx" | "csdl-json" | "graphql-sdl" | "wsdl-v1" | "wsdl-v2" | "sap-rfc-metadata-v1" | "sap-sql-api-definition-v1" | "sap-csn-interop-effective-v1" | "custom" ) & string ;
707715 /**
708716 * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
709717 *
@@ -749,7 +757,7 @@ export interface AccessStrategy {
749757 /**
750758 * Defines the authentication/authorization strategy through which the referenced `resourceDefinitions` are accessible.
751759 */
752- type : "open" | "sap:oauth-client-credentials:v1" | "sap:cmp-mtls:v1" | "sap.businesshub:basic-auth:v1" | "custom" ;
760+ type : ( string | "open" | "sap:oauth-client-credentials:v1" | "sap:cmp-mtls:v1" | "sap.businesshub:basic-auth:v1" | "custom" ) & string ;
753761 /**
754762 * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
755763 *
@@ -881,6 +889,17 @@ export interface EntityTypeTargetORDID {
881889export interface EntityTypeTargetCorrelationID {
882890 correlationId : string ;
883891}
892+ /**
893+ * Defines which Entity Type is exposed through (via its ORD ID).
894+ */
895+ export interface ExposedEntityType {
896+ /**
897+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
898+ *
899+ * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
900+ */
901+ ordId : string ;
902+ }
884903/**
885904 * Links with specific semantic meaning that are related to API or event resources.
886905 *
@@ -890,7 +909,7 @@ export interface APIAndEventResourceLink {
890909 /**
891910 * See also: [WADG0001 WebAPI type extension](https://webapi-discovery.github.io/rfcs/rfc0001.html#webapiactions)
892911 */
893- type : "api-documentation" | "authentication" | "client-registration" | "console" | "payment" | "service-level-agreement" | "support" | "custom" ;
912+ type : ( string | "api-documentation" | "authentication" | "client-registration" | "console" | "payment" | "service-level-agreement" | "support" | "custom" ) & string ;
894913 /**
895914 * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
896915 *
@@ -1170,7 +1189,7 @@ export interface EventResource {
11701189 *
11711190 * As of now, only custom implementation standards are supported.
11721191 */
1173- implementationStandard ?: "custom" ;
1192+ implementationStandard ?: ( string | "custom" ) & string ;
11741193 /**
11751194 * If the fixed `implementationStandard` values need to be extended, an arbitrary `customImplementationStandard` can be provided.
11761195 *
@@ -1204,6 +1223,14 @@ export interface EventResource {
12041223 * Describes mappings between the API Models of the described resource to the underlying, conceptual entity types.
12051224 */
12061225 entityTypeMappings ?: EntityTypeMapping [ ] ;
1226+ /**
1227+ * Optional list of [entity types](#entity-type) that are exposed by the resource.
1228+ *
1229+ * This replaces `entityTypeMappings`. If both is given, the `exposedEntityTypes` wins.
1230+ *
1231+ * MUST be a valid reference to an [EntityType](#entity-type) ORD ID.
1232+ */
1233+ exposedEntityTypes ?: ExposedEntityType [ ] ;
12071234 /**
12081235 * Links with semantic meaning that are specific to event resources.
12091236 *
@@ -1253,7 +1280,7 @@ export interface EventResource {
12531280 * The policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.
12541281 *
12551282 */
1256- policyLevel ?: "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ;
1283+ policyLevel ?: ( string | "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ) & string ;
12571284 /**
12581285 * If the fixed `policyLevel` values need to be extended, an arbitrary `customPolicyLevel` can be provided.
12591286 * The policy level is inherited from packages to resources they contain, but can be overwritten at resource level.
@@ -1289,7 +1316,7 @@ export interface EventResourceDefinition {
12891316 /**
12901317 * Type of the event resource definition
12911318 */
1292- type : "asyncapi-v2" | "sap-csn-interop-effective-v1" | "custom" ;
1319+ type : ( string | "asyncapi-v2" | "sap-csn-interop-effective-v1" | "custom" ) & string ;
12931320 /**
12941321 * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
12951322 *
@@ -1486,7 +1513,7 @@ export interface EntityType {
14861513 *
14871514 * In Domain-Driven Design, there is a concept of entities and aggregates.
14881515 * There are root entities which may contain further sub entities by composition.
1489- * The complete “ package” is then called an aggregate, which gets its name and identity from the root entity.
1516+ * The complete " package" is then called an aggregate, which gets its name and identity from the root entity.
14901517 * An aggregate is a cluster of domain objects that can be treated as a single unit.
14911518 * The root is the entity that is referenced from outside the aggregate. There must be only one root per aggregate.
14921519 * The root ensures the integrity of the aggregate. A sub entity is any other non-root entity in the aggregate.
@@ -1521,7 +1548,7 @@ export interface EntityType {
15211548 * The policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.
15221549 *
15231550 */
1524- policyLevel ?: "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ;
1551+ policyLevel ?: ( string | "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ) & string ;
15251552 /**
15261553 * If the fixed `policyLevel` values need to be extended, an arbitrary `customPolicyLevel` can be provided.
15271554 * The policy level is inherited from packages to resources they contain, but can be overwritten at resource level.
@@ -1596,7 +1623,7 @@ export interface Capability {
15961623 /**
15971624 * Type of the Capability
15981625 */
1599- type : "custom" | "sap.mdo:mdi-capability:v1" ;
1626+ type : ( string | "sap.mdo:mdi-capability:v1" | "custom" ) & string ;
16001627 /**
16011628 * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
16021629 *
@@ -1706,7 +1733,6 @@ export interface Capability {
17061733 minSystemVersion ?: string ;
17071734 /**
17081735 * Optional list of related EntityType Resources.
1709- *
17101736 * MUST be a valid reference to an [EntityType Resource](#entity-type) ORD ID.
17111737 */
17121738 relatedEntityTypes ?: string [ ] ;
@@ -1751,7 +1777,7 @@ export interface CapabilityDefinition {
17511777 /**
17521778 * Type of the capability resource definition
17531779 */
1754- type : "custom" | "sap.mdo:mdi-capability-definition:v1" ;
1780+ type : ( string | "sap.mdo:mdi-capability-definition:v1" | "custom" ) & string ;
17551781 /**
17561782 * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
17571783 *
@@ -1974,11 +2000,11 @@ export interface DataProduct {
19742000 */
19752001 type : "primary" | "derived" ;
19762002 /**
1977- * Category of the data-set within data product. Based on its definition, a data product is a “ data set” - which can include on the values below.
2003+ * Category of the data-set within data product. Based on its definition, a data product is a " data set" - which can include on the values below.
19782004 * Based on the type some properties of a data product may become optional/mandatory.
19792005 * Consumers might still do analytics on business object like data products.
19802006 */
1981- category : "business-object" | "analytical" | "other" ;
2007+ category : ( string | "business-object" | "analytical" | "other" ) & string ;
19822008 /**
19832009 * Aggregated list of entity types that are at least partially exposed by the data product. Detailed mapping can be found on the output port schema level.
19842010 */
@@ -2057,7 +2083,7 @@ export interface DataProduct {
20572083 * The policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.
20582084 *
20592085 */
2060- policyLevel ?: "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ;
2086+ policyLevel ?: ( string | "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ) & string ;
20612087 /**
20622088 * If the fixed `policyLevel` values need to be extended, an arbitrary `customPolicyLevel` can be provided.
20632089 * The policy level is inherited from packages to resources they contain, but can be overwritten at resource level.
@@ -2119,7 +2145,7 @@ export interface DataProductOutputPort {
21192145 * If a generic [Link](#link) can also be expressed via Data Product Link, the latter MUST be chosen.
21202146 */
21212147export interface DataProductLink {
2122- type : "payment" | "terms-of-use" | "service-level-agreement" | "support" | "custom" ;
2148+ type : ( string | "payment" | "terms-of-use" | "service-level-agreement" | "support" | "custom" ) & string ;
21232149 /**
21242150 * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
21252151 *
@@ -2607,7 +2633,7 @@ export interface Package {
26072633 * The policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.
26082634 *
26092635 */
2610- policyLevel ?: "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ;
2636+ policyLevel ?: ( string | "none" | "sap:base:v1" | "sap:core:v1" | "sap:dp:v1" | "custom" ) & string ;
26112637 /**
26122638 * If the fixed `policyLevel` values need to be extended, an arbitrary `customPolicyLevel` can be provided.
26132639 * The policy level is inherited from packages to resources they contain, but can be overwritten at resource level.
@@ -2695,7 +2721,7 @@ export interface Package {
26952721 /**
26962722 * If provided, all resources that are part of this package can only run on the listed runtime.
26972723 *
2698- * MUST be a valid [System Namespace ](../index.md#system-namespace).
2724+ * MUST be a valid [system namespace ](../index.md#system-namespace).
26992725 */
27002726 runtimeRestriction ?: string ;
27012727 /**
@@ -2714,7 +2740,7 @@ export interface Package {
27142740 * If a generic [Link](#link) can also be expressed via a Package Link, the latter MUST be chosen.
27152741 */
27162742export interface PackageLink {
2717- type : "terms-of-service" | "license" | "client-registration" | "payment" | "sandbox" | "service-level-agreement" | "support" | "custom" ;
2743+ type : ( string | "terms-of-service" | "license" | "client-registration" | "payment" | "sandbox" | "service-level-agreement" | "support" | "custom" ) & string ;
27182744 /**
27192745 * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
27202746 *
@@ -2861,7 +2887,7 @@ export interface CredentialExchangeStrategy {
28612887 /**
28622888 * The type of credential exchange strategy.
28632889 */
2864- type : "custom" ;
2890+ type : ( string | "custom" ) & string ;
28652891 /**
28662892 * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
28672893 *
0 commit comments