Skip to content

Commit 5995602

Browse files
committed
ORD 1.11.0 release
1 parent 876be99 commit 5995602

40 files changed

Lines changed: 2266 additions & 2460 deletions

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,19 @@ For a roadmap including expected timeline, please refer to [ROADMAP.md](./ROADMA
1010

1111
## [unreleased]
1212

13+
## [1.11.0]
14+
15+
### Added
16+
17+
- Added simplified `exposedEntityTypes` to API and event resource, in favor of now deprecated `entityTypeMappings`
18+
- Added optional ORD Provider API `?select` parameter to reduce result set of ORD aggregation run
19+
- Support of the select subset of the select parameter is indicated through ORD Config `capabilities.select`.
20+
1321
### Changed
1422

23+
- Deprecated `entityTypeMappings` in favor of simplified `exposedEntityTypes`
24+
- Changed most enums to be "extensible" by default, usually by allowing strings, following a Spec ID regexp pattern
25+
- This will lead to less need to update the validator and could deprecate `custom` types
1526
- Changed the structure of the ORD page
1627
- Details section removed, merged content either into spec itself (concepts) or new help area
1728
- Moved FAQ into help, some detail article became FAQ articles

dist/types/v1/Configuration.d.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88
export interface ORDConfiguration {
99
/**
10-
* Optional URL to the ORD document schema (defined as JSON Schema).
10+
* Optional URL to the ORD Configuration schema (defined as JSON Schema).
1111
* If given, this enables code intelligence and validation in supported editors (like VSCode) and tools.
1212
*/
1313
$schema?: (string | "https://open-resource-discovery.github.io/specification/spec-v1/interfaces/Configuration.schema.json#") & string;
@@ -35,6 +35,7 @@ export interface ORDV1Support {
3535
* For more details how to implement this correctly, please refer to the [ORD configuration endpoint](../index.md#ord-configuration-endpoint) section and the [considerations on the granularity of ORD documents](../index.md#considerations-on-the-granularity-of-ord-documents).
3636
*/
3737
documents?: ORDV1DocumentDescription[];
38+
capabilities?: ORDV1Capabilities;
3839
}
3940
/**
4041
* Describes an [ORD Document](../index.md#ord-document) that is available for pull transport consumption.
@@ -102,3 +103,13 @@ export interface AccessStrategy {
102103
*/
103104
customDescription?: string;
104105
}
106+
/**
107+
* List of capabilities that are supported by the ORD provider.
108+
*/
109+
export interface ORDV1Capabilities {
110+
/**
111+
* Whether the ORD provider supports the optional [select parameter](../index.md#select-parameter) for retrieving the ORD config and ORD documents.
112+
*/
113+
selector?: boolean;
114+
[k: string]: any | undefined;
115+
}

dist/types/v1/Document.d.ts

Lines changed: 51 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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 {
881889
export 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
*/
21212147
export 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
*/
27162742
export 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
*

docs/spec-v1/diagrams/configuration.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ See [OpenResourceDiscoveryV1 interface](../interfaces/configuration.md#ord-v1-su
77
class OpenResourceDiscoveryV1
88
style OpenResourceDiscoveryV1 stroke:#333,stroke-width:3px
99
OpenResourceDiscoveryV1 *-- "0..*" V1DocumentDescription : documents
10+
OpenResourceDiscoveryV1 *-- "0..1" V1Capabilities : capabilities
1011
click OpenResourceDiscoveryV1 href "#openresourcediscoveryv1" "Go to OpenResourceDiscoveryV1"
1112
click V1DocumentDescription href "#v1documentdescription" "Go to V1DocumentDescription"
13+
click V1Capabilities href "#v1capabilities" "Go to V1Capabilities"
1214
```
1315

1416

@@ -26,6 +28,17 @@ See [V1DocumentDescription interface](../interfaces/configuration.md#ord-v1-docu
2628
```
2729

2830

31+
## V1Capabilities
32+
See [V1Capabilities interface](../interfaces/configuration.md#ord-v1-capabilities).
33+
```mermaid
34+
classDiagram
35+
class V1Capabilities
36+
style V1Capabilities stroke:#333,stroke-width:3px
37+
OpenResourceDiscoveryV1 *-- "0..1" V1Capabilities : capabilities
38+
click OpenResourceDiscoveryV1 href "#openresourcediscoveryv1" "Go to OpenResourceDiscoveryV1"
39+
```
40+
41+
2942
## AccessStrategy
3043
See [AccessStrategy interface](../interfaces/configuration.md#access-strategy).
3144
```mermaid

0 commit comments

Comments
 (0)