@open-resource-discovery/specification 1.14.5 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/spec/v1/schemas/Configuration.schema.json +1 -1
- package/dist/generated/spec/v1/schemas/Document.schema.json +390 -16
- package/dist/generated/spec/v1/schemas/OrdOverlay.schema.json +885 -0
- package/dist/generated/spec/v1/types/Document.d.ts +279 -53
- package/dist/generated/spec/v1/types/OrdOverlay.d.ts +553 -0
- package/dist/generated/spec/v1/types/OrdOverlay.js +4 -0
- package/dist/generated/spec/v1/types/index.d.ts +1 -1
- package/dist/generated/spec/v1/types/index.js +2 -2
- package/dist/index.d.ts +5 -1
- package/dist/index.js +8 -3
- package/package.json +15 -13
- package/dist/generated/spec/v1/types/AgentGovernance.d.ts +0 -7
- package/dist/generated/spec/v1/types/AgentGovernance.js +0 -4
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"oneOf": [
|
|
83
83
|
{
|
|
84
84
|
"const": "system-type",
|
|
85
|
-
"description": "Describes a static [system-type](../index.md#
|
|
85
|
+
"description": "Describes a static [system-type](../index.md#system-type) perspective, which is version independent.\n\nIf a system is not versioned (continuous delivery) or resources are not tied to a system, the system-type perspective\nimplies that the information apply, no matter which system version or instance."
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
"const": "system-version",
|
|
@@ -38,10 +38,11 @@
|
|
|
38
38
|
"1.11",
|
|
39
39
|
"1.12",
|
|
40
40
|
"1.13",
|
|
41
|
-
"1.14"
|
|
41
|
+
"1.14",
|
|
42
|
+
"1.15"
|
|
42
43
|
],
|
|
43
44
|
"examples": [
|
|
44
|
-
"1.
|
|
45
|
+
"1.15"
|
|
45
46
|
]
|
|
46
47
|
},
|
|
47
48
|
"description": {
|
|
@@ -60,7 +61,7 @@
|
|
|
60
61
|
"oneOf": [
|
|
61
62
|
{
|
|
62
63
|
"const": "system-type",
|
|
63
|
-
"description": "Describes a static [system-type](../index.md#
|
|
64
|
+
"description": "Describes a static [system-type](../index.md#system-type) perspective, which is version independent.\n\nIf a system is not versioned (continuous delivery) or resources are not tied to a system, the system-type perspective\nimplies that the information apply, no matter which system version or instance."
|
|
64
65
|
},
|
|
65
66
|
{
|
|
66
67
|
"const": "system-version",
|
|
@@ -80,10 +81,6 @@
|
|
|
80
81
|
"system-instance"
|
|
81
82
|
]
|
|
82
83
|
},
|
|
83
|
-
"describedSystemInstance": {
|
|
84
|
-
"$ref": "#/definitions/SystemInstance",
|
|
85
|
-
"description": "Information on the [system-instance](../index.md#system-instance) that this ORD document describes.\n\nWhether this information is required or recommended to add, depends on the requirements of the ORD aggregator."
|
|
86
|
-
},
|
|
87
84
|
"describedSystemType": {
|
|
88
85
|
"$ref": "#/definitions/SystemType",
|
|
89
86
|
"x-introduced-in-version": "1.10.0",
|
|
@@ -94,6 +91,10 @@
|
|
|
94
91
|
"x-introduced-in-version": "1.10.0",
|
|
95
92
|
"description": "Information on the [system version](../index.md#system-version) that this ORD document describes."
|
|
96
93
|
},
|
|
94
|
+
"describedSystemInstance": {
|
|
95
|
+
"$ref": "#/definitions/SystemInstance",
|
|
96
|
+
"description": "Information on the [system-instance](../index.md#system-instance) that this ORD document describes.\n\nWhether this information is required or recommended to add, depends on the requirements of the ORD aggregator."
|
|
97
|
+
},
|
|
97
98
|
"policyLevel": {
|
|
98
99
|
"type": "string",
|
|
99
100
|
"description": "The [policy level](../../spec-extensions/policy-levels/) (aka. compliance level) that the described resources need to be compliant with.\nDepending on the chosen policy level, additional expectations and validations rules will be applied.\n\nThe policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.\n",
|
|
@@ -192,6 +193,15 @@
|
|
|
192
193
|
"$ref": "#/definitions/Agent"
|
|
193
194
|
}
|
|
194
195
|
},
|
|
196
|
+
"overlays": {
|
|
197
|
+
"type": "array",
|
|
198
|
+
"description": "Array of all metadata overlays described in this ORD document.\n\nAn ORD Overlay resource is a standalone, versioned resource that references an overlay document which patches\nresource definitions (e.g. OpenAPI, AsyncAPI, OData CSDL) without modifying the originals.\n\nFor overlays that are tightly coupled to a single API or Event resource, consider attaching them directly\nas a `resourceDefinitions` entry with `type: ord:overlay:v1` instead.",
|
|
199
|
+
"x-introduced-in-version": "1.15.0",
|
|
200
|
+
"x-feature-status": "alpha",
|
|
201
|
+
"items": {
|
|
202
|
+
"$ref": "#/definitions/Overlay"
|
|
203
|
+
}
|
|
204
|
+
},
|
|
195
205
|
"integrationDependencies": {
|
|
196
206
|
"type": "array",
|
|
197
207
|
"description": "Array of all integration dependencies that are described in this ORD document.",
|
|
@@ -1274,7 +1284,7 @@
|
|
|
1274
1284
|
},
|
|
1275
1285
|
"resourceDefinitions": {
|
|
1276
1286
|
"type": "array",
|
|
1277
|
-
"description": "List of available machine-readable definitions, which describe the resource or capability in detail.\nSee also [Resource Definitions](../index.md#resource-definitions) for more context.\n\nEach definition is to be understood as an alternative description format, describing the same resource / capability.\
|
|
1287
|
+
"description": "List of available machine-readable definitions, which describe the resource or capability in detail.\nSee also [Resource Definitions](../index.md#resource-definitions) for more context.\n\nEach definition is to be understood as an alternative description format, describing the same resource / capability.\nThe combination of `type`, `purpose`, and `visibility` MUST be unique within the list.\n\nA definition without a `purpose` is considered the primary/default definition for its type.\nAdditional definitions of the same type MAY be provided if they have a distinct `purpose` (e.g., `ord:ai-enrichment` for AI-optimized definitions).\n\nIt is RECOMMENDED to provide the definitions as they enable machine-readable use cases.\nIf the definitions are added or changed, the `version` MUST be incremented.\nAn ORD aggregator MAY only (re)fetch the definitions again when the `version` was incremented.",
|
|
1278
1288
|
"items": {
|
|
1279
1289
|
"$ref": "#/definitions/ApiResourceDefinition"
|
|
1280
1290
|
}
|
|
@@ -2047,7 +2057,7 @@
|
|
|
2047
2057
|
},
|
|
2048
2058
|
"resourceDefinitions": {
|
|
2049
2059
|
"type": "array",
|
|
2050
|
-
"description": "List of available machine-readable definitions, which describe the resource or capability in detail.\nSee also [Resource Definitions](../index.md#resource-definitions) for more context.\n\nEach definition is to be understood as an alternative description format, describing the same resource / capability.\
|
|
2060
|
+
"description": "List of available machine-readable definitions, which describe the resource or capability in detail.\nSee also [Resource Definitions](../index.md#resource-definitions) for more context.\n\nEach definition is to be understood as an alternative description format, describing the same resource / capability.\nThe combination of `type`, `purpose`, and `visibility` MUST be unique within the list.\n\nA definition without a `purpose` is considered the primary/default definition for its type.\nAdditional definitions of the same type MAY be provided if they have a distinct `purpose` (e.g., `ord:ai-enrichment` for AI-optimized definitions).\n\nIt is RECOMMENDED to provide the definitions as they enable machine-readable use cases.\nIf the definitions are added or changed, the `version` MUST be incremented.\nAn ORD aggregator MAY only (re)fetch the definitions again when the `version` was incremented.",
|
|
2051
2061
|
"items": {
|
|
2052
2062
|
"$ref": "#/definitions/EventResourceDefinition"
|
|
2053
2063
|
}
|
|
@@ -3703,6 +3713,12 @@
|
|
|
3703
3713
|
"description": "[CSN Interop Effective](https://sap.github.io/csn-interop-specification/) is a standardized and interoperable [CSN](https://cap.cloud.sap/docs/cds/csn) export, used to describe [CDS](https://cap.cloud.sap/docs/cds/) models.\nThe `mediaType` MUST be be set to `application/json`.",
|
|
3704
3714
|
"x-introduced-in-version": "1.9.4"
|
|
3705
3715
|
},
|
|
3716
|
+
{
|
|
3717
|
+
"const": "ord:overlay:v1",
|
|
3718
|
+
"x-feature-status": "alpha",
|
|
3719
|
+
"x-introduced-in-version": "1.15.0",
|
|
3720
|
+
"description": "ORD Overlay file for patching referenced resource definition files.\nFor details, see [ORD Overlay](../../spec-v1/interfaces/OrdOverlay).\nThe `mediaType` MUST be set to `application/json`."
|
|
3721
|
+
},
|
|
3706
3722
|
{
|
|
3707
3723
|
"const": "custom",
|
|
3708
3724
|
"description": "If chosen, `customType` MUST be provided."
|
|
@@ -3772,6 +3788,26 @@
|
|
|
3772
3788
|
}
|
|
3773
3789
|
]
|
|
3774
3790
|
]
|
|
3791
|
+
},
|
|
3792
|
+
"purpose": {
|
|
3793
|
+
"type": "string",
|
|
3794
|
+
"x-feature-status": "alpha",
|
|
3795
|
+
"x-introduced-in-version": "1.15.0",
|
|
3796
|
+
"description": "Describes the intended purpose or role of this resource definition.\n\nWhile `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.\nThis allows multiple definitions of the same type to coexist when they serve different purposes.\n\nFor example, an API Resource might have multiple OpenAPI definitions:\none for standard API documentation and another specifically enriched for AI/agent consumption.\n\nMUST be a valid [Concept ID](../index.md#concept-id).",
|
|
3797
|
+
"anyOf": [
|
|
3798
|
+
{
|
|
3799
|
+
"type": "string",
|
|
3800
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+)$",
|
|
3801
|
+
"description": "Any valid [Concept ID](../index.md#concept-id)."
|
|
3802
|
+
},
|
|
3803
|
+
{
|
|
3804
|
+
"const": "ord:ai-enrichment",
|
|
3805
|
+
"description": "The definition is enriched with additional metadata specifically for AI/agent consumption.\nThis may include enhanced descriptions, examples, or semantic annotations that help AI systems\nbetter understand and utilize the API or event resource."
|
|
3806
|
+
}
|
|
3807
|
+
],
|
|
3808
|
+
"examples": [
|
|
3809
|
+
"ord:ai-enrichment"
|
|
3810
|
+
]
|
|
3775
3811
|
}
|
|
3776
3812
|
},
|
|
3777
3813
|
"additionalProperties": false,
|
|
@@ -3804,6 +3840,12 @@
|
|
|
3804
3840
|
"const": "sap-csn-interop-effective-v1",
|
|
3805
3841
|
"description": "[CSN Interop Effective](https://sap.github.io/csn-interop-specification/) is a standardized and interoperable flavor of [CSN](https://cap.cloud.sap/docs/cds/csn).\nCSN is a notation for compact representations of [CDS](https://cap.cloud.sap/docs/cds/) models.\n\nIn CDS based frameworks (like ABAP, CAP), APIs and Events are derived from a CDS Service definition and its constituent entities.\nIn this case the original CDS service definition MAY be attached, as it usually contains more metadata insight than other formats.\n\nWARNING: Only expose the CDS Service definition that effectively is governed by the API contract and stability. Do not expose internal models!\n\nThe `mediaType` MUST be be set to `application/json`."
|
|
3806
3842
|
},
|
|
3843
|
+
{
|
|
3844
|
+
"const": "ord:overlay:v1",
|
|
3845
|
+
"x-feature-status": "alpha",
|
|
3846
|
+
"x-introduced-in-version": "1.15.0",
|
|
3847
|
+
"description": "ORD Overlay file for patching metadata / resource definition files.\nFor details, see [ORD Overlay](../../spec-v1/interfaces/OrdOverlay).\nThe `mediaType` MUST be set to `application/json`."
|
|
3848
|
+
},
|
|
3807
3849
|
{
|
|
3808
3850
|
"const": "custom",
|
|
3809
3851
|
"description": "If chosen, `customType` MUST be provided."
|
|
@@ -3872,6 +3914,26 @@
|
|
|
3872
3914
|
"description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
|
|
3873
3915
|
}
|
|
3874
3916
|
]
|
|
3917
|
+
},
|
|
3918
|
+
"purpose": {
|
|
3919
|
+
"type": "string",
|
|
3920
|
+
"x-feature-status": "alpha",
|
|
3921
|
+
"x-introduced-in-version": "1.15.0",
|
|
3922
|
+
"description": "Describes the intended purpose or role of this resource definition.\n\nWhile `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.\nThis allows multiple definitions of the same type to coexist when they serve different purposes.\n\nFor example, an API Resource might have multiple OpenAPI definitions:\none for standard API documentation and another specifically enriched for AI/agent consumption.\n\nMUST be a valid [Concept ID](../index.md#concept-id).",
|
|
3923
|
+
"anyOf": [
|
|
3924
|
+
{
|
|
3925
|
+
"type": "string",
|
|
3926
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+)$",
|
|
3927
|
+
"description": "Any valid [Concept ID](../index.md#concept-id)."
|
|
3928
|
+
},
|
|
3929
|
+
{
|
|
3930
|
+
"const": "ord:ai-enrichment",
|
|
3931
|
+
"description": "The definition is enriched with additional metadata specifically for AI/agent consumption.\nThis may include enhanced descriptions, examples, or semantic annotations that help AI systems\nbetter understand and utilize the API or event resource."
|
|
3932
|
+
}
|
|
3933
|
+
],
|
|
3934
|
+
"examples": [
|
|
3935
|
+
"ord:ai-enrichment"
|
|
3936
|
+
]
|
|
3875
3937
|
}
|
|
3876
3938
|
},
|
|
3877
3939
|
"additionalProperties": false,
|
|
@@ -4421,6 +4483,277 @@
|
|
|
4421
4483
|
"lastUpdate"
|
|
4422
4484
|
]
|
|
4423
4485
|
},
|
|
4486
|
+
"Overlay": {
|
|
4487
|
+
"type": "object",
|
|
4488
|
+
"title": "Overlay",
|
|
4489
|
+
"x-ums-type": "root",
|
|
4490
|
+
"x-introduced-in-version": "1.15.0",
|
|
4491
|
+
"x-feature-status": "alpha",
|
|
4492
|
+
"description": "An Overlay Resource is a standalone, versioned resource that references a metadata patch file.\nOverlays enrich / patch resource definition files (e.g. OpenAPI) without modifying the originals, e.g. to add AI-optimized descriptions, apply governance annotations, or adapt definitions for a specific audience / purpose.\n\nUse an Overlay Resource for overlays that serve a different concern or audience than the original metadata — such as AI enrichment, governance annotations, or audience-specific adaptations — and are managed independently or applied across multiple resources.\nFor producer-owned overlays that belong to a single resource, they SHOULD instead be attached directly as a `resourceDefinitions` entry with `type: ord:overlay:v1`.",
|
|
4493
|
+
"properties": {
|
|
4494
|
+
"ordId": {
|
|
4495
|
+
"type": "string",
|
|
4496
|
+
"description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
|
|
4497
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(overlay):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
|
4498
|
+
"maxLength": 255,
|
|
4499
|
+
"examples": [
|
|
4500
|
+
"sap.foo:overlay:astronomy-api-ai-enrichment:v1"
|
|
4501
|
+
]
|
|
4502
|
+
},
|
|
4503
|
+
"title": {
|
|
4504
|
+
"type": "string",
|
|
4505
|
+
"description": "Human-readable title.\n\nMUST NOT exceed 255 chars.\nMUST NOT contain line breaks.",
|
|
4506
|
+
"minLength": 1,
|
|
4507
|
+
"maxLength": 255,
|
|
4508
|
+
"examples": [
|
|
4509
|
+
"Astronomy API AI Enrichment Overlay"
|
|
4510
|
+
]
|
|
4511
|
+
},
|
|
4512
|
+
"description": {
|
|
4513
|
+
"type": "string",
|
|
4514
|
+
"minLength": 1,
|
|
4515
|
+
"description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links."
|
|
4516
|
+
},
|
|
4517
|
+
"version": {
|
|
4518
|
+
"type": "string",
|
|
4519
|
+
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.",
|
|
4520
|
+
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
|
|
4521
|
+
"examples": [
|
|
4522
|
+
"1.2.3",
|
|
4523
|
+
"1.0.0-alpha.1"
|
|
4524
|
+
]
|
|
4525
|
+
},
|
|
4526
|
+
"lastUpdate": {
|
|
4527
|
+
"type": "string",
|
|
4528
|
+
"format": "date-time",
|
|
4529
|
+
"x-introduced-in-version": "1.4.0",
|
|
4530
|
+
"description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
|
|
4531
|
+
"examples": [
|
|
4532
|
+
"2022-12-19T15:47:04+00:00"
|
|
4533
|
+
]
|
|
4534
|
+
},
|
|
4535
|
+
"visibility": {
|
|
4536
|
+
"type": "string",
|
|
4537
|
+
"description": "Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.\n\nThis controls who can see that the resource exists and retrieve its metadata level information.\nIt does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.\n\nUse this to prevent exposing internal implementation details to inappropriate consumer audiences.",
|
|
4538
|
+
"oneOf": [
|
|
4539
|
+
{
|
|
4540
|
+
"const": "public",
|
|
4541
|
+
"description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
|
|
4542
|
+
},
|
|
4543
|
+
{
|
|
4544
|
+
"const": "internal",
|
|
4545
|
+
"description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
|
|
4546
|
+
},
|
|
4547
|
+
{
|
|
4548
|
+
"const": "private",
|
|
4549
|
+
"description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
|
|
4550
|
+
}
|
|
4551
|
+
]
|
|
4552
|
+
},
|
|
4553
|
+
"releaseStatus": {
|
|
4554
|
+
"type": "string",
|
|
4555
|
+
"description": "Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).\n\nThis indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk\nof depending on the resource and whether it's suitable for production use.\n\nNote: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.\n\nSee [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.",
|
|
4556
|
+
"oneOf": [
|
|
4557
|
+
{
|
|
4558
|
+
"const": "development",
|
|
4559
|
+
"x-introduced-in-version": "1.14.2",
|
|
4560
|
+
"description": "The resource is unreleased and under active development. The API contract is unstable and subject to\nbreaking changes at any time. Not intended for consumption outside of the development team."
|
|
4561
|
+
},
|
|
4562
|
+
{
|
|
4563
|
+
"const": "beta",
|
|
4564
|
+
"description": "The API contract is released / available to consumers, but has no final stability guarantees.\nBreaking changes may occur at any time without notice or deprecation period.\n\nNot recommended for production use unless you can tolerate breaking changes. Suitable for experimentation, early adopters,\nand feedback gathering. Resources of `beta` `releaseStatus` MAY be changed or removed at the provider's discretion."
|
|
4565
|
+
},
|
|
4566
|
+
{
|
|
4567
|
+
"const": "active",
|
|
4568
|
+
"description": "The API contract is stable and recommended for production use.\n\nBreaking changes will only be introduced through proper deprecation cycles or new major versions,\nfollowing versioning and compatibility policies. Consumers can rely on active resources with confidence."
|
|
4569
|
+
},
|
|
4570
|
+
{
|
|
4571
|
+
"const": "deprecated",
|
|
4572
|
+
"description": "The resource is still functional but scheduled for removal. No new development should depend on it.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\nIf the `releaseStatus` is set to `deprecated`, and the `sunsetDate` is already known, then the `sunsetDate` SHOULD be provided.\n\nIf successor resources exist, they MUST be referenced through `successors`.\n\nA deprecated resource MAY be sunset (decommissioned/removed) in the future through setting a `Tombstone`.\nOnce the resource is sunset, its description MAY be removed from ORD, but could also be kept with `releaseStatus` set to `sunset`."
|
|
4573
|
+
},
|
|
4574
|
+
{
|
|
4575
|
+
"const": "sunset",
|
|
4576
|
+
"description": "The resource has been decommissioned and is no longer available at runtime. This entry exists for historical reference only.\n\nIf the `releaseStatus` is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
|
|
4577
|
+
}
|
|
4578
|
+
],
|
|
4579
|
+
"examples": [
|
|
4580
|
+
"active"
|
|
4581
|
+
]
|
|
4582
|
+
},
|
|
4583
|
+
"relatedApiResources": {
|
|
4584
|
+
"type": "array",
|
|
4585
|
+
"x-introduced-in-version": "1.15.0",
|
|
4586
|
+
"description": "Optional list of API Resources whose definition files this overlay patches.\n\nSHOULD be provided when the target resource is described in an ORD document accessible to the same aggregator,\nas it enables efficient indexing without requiring the aggregator to parse each overlay file.\nUse `relationType: ord:patches` to express the patching relationship.\n\nMay be omitted when the target resource is not described in an accessible ORD document,\nor when the overlay is cross-cutting and patches resources from multiple providers.",
|
|
4587
|
+
"items": {
|
|
4588
|
+
"$ref": "#/definitions/RelatedApiResource"
|
|
4589
|
+
},
|
|
4590
|
+
"examples": [
|
|
4591
|
+
[
|
|
4592
|
+
{
|
|
4593
|
+
"ordId": "sap.s4:apiResource:API_BUSINESS_PARTNER:v1",
|
|
4594
|
+
"relationType": "foo.bar:relationName"
|
|
4595
|
+
}
|
|
4596
|
+
]
|
|
4597
|
+
]
|
|
4598
|
+
},
|
|
4599
|
+
"relatedEventResources": {
|
|
4600
|
+
"type": "array",
|
|
4601
|
+
"x-introduced-in-version": "1.15.0",
|
|
4602
|
+
"description": "Optional list of Event Resources whose definition files this overlay patches.\n\nSHOULD be provided when the target resource is described in an ORD document accessible to the same aggregator,\nas it enables efficient indexing without requiring the aggregator to parse each overlay file.\nUse `relationType: ord:patches` to express the patching relationship.\n\nMay be omitted when the target resource is not described in an accessible ORD document,\nor when the overlay is cross-cutting and patches resources from multiple providers.",
|
|
4603
|
+
"items": {
|
|
4604
|
+
"$ref": "#/definitions/RelatedEventResource"
|
|
4605
|
+
},
|
|
4606
|
+
"examples": [
|
|
4607
|
+
[
|
|
4608
|
+
{
|
|
4609
|
+
"ordId": "sap.s4:eventResource:BusinessPartnerEvents:v1",
|
|
4610
|
+
"relationType": "foo.bar:relationName"
|
|
4611
|
+
}
|
|
4612
|
+
]
|
|
4613
|
+
]
|
|
4614
|
+
},
|
|
4615
|
+
"definitions": {
|
|
4616
|
+
"type": "array",
|
|
4617
|
+
"description": "List of overlay definition files referenced by this ORD Overlay Resource.\nEach entry points to an ORD Overlay document (`type: ord:overlay:v1`) that contains the actual patches.",
|
|
4618
|
+
"items": {
|
|
4619
|
+
"$ref": "#/definitions/OverlayDefinition"
|
|
4620
|
+
}
|
|
4621
|
+
},
|
|
4622
|
+
"tags": {
|
|
4623
|
+
"type": "array",
|
|
4624
|
+
"items": {
|
|
4625
|
+
"type": "string",
|
|
4626
|
+
"pattern": "^[a-zA-Z0-9-_.\\/ ]*$",
|
|
4627
|
+
"minLength": 1
|
|
4628
|
+
},
|
|
4629
|
+
"description": "List of free text style tags.\nNo special characters are allowed except `-`, `_`, `.`, `/` and ` `.\n\nTags that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
|
|
4630
|
+
"examples": [
|
|
4631
|
+
[
|
|
4632
|
+
"storage",
|
|
4633
|
+
"high-availability"
|
|
4634
|
+
]
|
|
4635
|
+
]
|
|
4636
|
+
},
|
|
4637
|
+
"labels": {
|
|
4638
|
+
"$ref": "#/definitions/Labels"
|
|
4639
|
+
}
|
|
4640
|
+
},
|
|
4641
|
+
"additionalProperties": false,
|
|
4642
|
+
"required": [
|
|
4643
|
+
"ordId",
|
|
4644
|
+
"version",
|
|
4645
|
+
"releaseStatus",
|
|
4646
|
+
"visibility"
|
|
4647
|
+
],
|
|
4648
|
+
"x-recommended": [
|
|
4649
|
+
"lastUpdate"
|
|
4650
|
+
]
|
|
4651
|
+
},
|
|
4652
|
+
"OverlayDefinition": {
|
|
4653
|
+
"type": "object",
|
|
4654
|
+
"title": "Overlay Definition",
|
|
4655
|
+
"x-ums-type": "custom",
|
|
4656
|
+
"x-introduced-in-version": "1.15.0",
|
|
4657
|
+
"x-feature-status": "alpha",
|
|
4658
|
+
"description": "Link to a machine-readable [ORD Overlay](../../spec-v1/interfaces/OrdOverlay) document.",
|
|
4659
|
+
"properties": {
|
|
4660
|
+
"type": {
|
|
4661
|
+
"description": "Type of the overlay definition",
|
|
4662
|
+
"type": "string",
|
|
4663
|
+
"anyOf": [
|
|
4664
|
+
{
|
|
4665
|
+
"const": "ord:overlay:v1",
|
|
4666
|
+
"description": "ORD Overlay document (v1). The `mediaType` MUST be set to `application/json`."
|
|
4667
|
+
},
|
|
4668
|
+
{
|
|
4669
|
+
"type": "string",
|
|
4670
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
|
4671
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
|
4672
|
+
}
|
|
4673
|
+
],
|
|
4674
|
+
"examples": [
|
|
4675
|
+
"ord:overlay:v1"
|
|
4676
|
+
]
|
|
4677
|
+
},
|
|
4678
|
+
"mediaType": {
|
|
4679
|
+
"description": "The [Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml) of the definition serialization format.\nA consuming application can use this information to know which file format parser it needs to use.\nFor example, for OpenAPI 3, it's valid to express the same definition in both YAML and JSON.\n\nIf no Media Type is registered for the referenced file,\n`text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.\n",
|
|
4680
|
+
"type": "string",
|
|
4681
|
+
"pattern": "^(application|text)\\/[a-zA-Z0-9][a-zA-Z0-9.+\\-]*$",
|
|
4682
|
+
"examples": [
|
|
4683
|
+
"application/json",
|
|
4684
|
+
"text/plain",
|
|
4685
|
+
"application/xml"
|
|
4686
|
+
]
|
|
4687
|
+
},
|
|
4688
|
+
"url": {
|
|
4689
|
+
"type": "string",
|
|
4690
|
+
"format": "uri-reference",
|
|
4691
|
+
"description": "[URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.\n\nIt is RECOMMENDED to provide a relative URL (to base URL).",
|
|
4692
|
+
"examples": [
|
|
4693
|
+
"/open-resource-discovery/v1/overlays/ai-enrichment.overlay.json"
|
|
4694
|
+
]
|
|
4695
|
+
},
|
|
4696
|
+
"accessStrategies": {
|
|
4697
|
+
"type": "array",
|
|
4698
|
+
"description": "List of supported access strategies for retrieving metadata from the ORD provider.\nAn ORD Consumer/ORD Aggregator MAY choose any of the strategies.\n\nThe access strategies only apply to the metadata access and not the actual API access.\nThe actual access to the APIs for clients is described via Consumption Bundles.\n\nIf this property is not provided, the definition URL will be available through the same access strategy as this ORD document.\nIt is RECOMMENDED anyway that the attached metadata definitions are available with the same access strategies, to simplify the aggregator crawling process.",
|
|
4699
|
+
"items": {
|
|
4700
|
+
"$ref": "#/definitions/AccessStrategy"
|
|
4701
|
+
},
|
|
4702
|
+
"minItems": 1,
|
|
4703
|
+
"examples": [
|
|
4704
|
+
[
|
|
4705
|
+
{
|
|
4706
|
+
"type": "open"
|
|
4707
|
+
}
|
|
4708
|
+
]
|
|
4709
|
+
]
|
|
4710
|
+
},
|
|
4711
|
+
"visibility": {
|
|
4712
|
+
"type": "string",
|
|
4713
|
+
"description": "The visibility states who is allowed to \"see\" and access the resource definition, in case it differs from the resource visibility.\n\nIf not given, the resource definition has the same visibility as the resource it describes.\nThe visibility of a resource definition MUST be lower (more restrictive) than the visibility of the resource it describes.\nE.g. a public resource can have metadata definitions that are internal only. An internal resource can't declare to have a public metadata definition.\n\nThis makes it also possible to provide both a public and an internal metadata description of the resource,\nin case that some metadata must only be made accessible to internal consumers.",
|
|
4714
|
+
"oneOf": [
|
|
4715
|
+
{
|
|
4716
|
+
"const": "public",
|
|
4717
|
+
"description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
|
|
4718
|
+
},
|
|
4719
|
+
{
|
|
4720
|
+
"const": "internal",
|
|
4721
|
+
"description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
|
|
4722
|
+
},
|
|
4723
|
+
{
|
|
4724
|
+
"const": "private",
|
|
4725
|
+
"description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
|
|
4726
|
+
}
|
|
4727
|
+
]
|
|
4728
|
+
},
|
|
4729
|
+
"purpose": {
|
|
4730
|
+
"type": "string",
|
|
4731
|
+
"x-feature-status": "alpha",
|
|
4732
|
+
"x-introduced-in-version": "1.15.0",
|
|
4733
|
+
"description": "Describes the intended purpose or role of this resource definition.\n\nWhile `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.\nThis allows multiple definitions of the same type to coexist when they serve different purposes.\n\nFor example, an API Resource might have multiple OpenAPI definitions:\none for standard API documentation and another specifically enriched for AI/agent consumption.\n\nMUST be a valid [Concept ID](../index.md#concept-id).",
|
|
4734
|
+
"anyOf": [
|
|
4735
|
+
{
|
|
4736
|
+
"type": "string",
|
|
4737
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+)$",
|
|
4738
|
+
"description": "Any valid [Concept ID](../index.md#concept-id)."
|
|
4739
|
+
},
|
|
4740
|
+
{
|
|
4741
|
+
"const": "ord:ai-enrichment",
|
|
4742
|
+
"description": "The definition is enriched with additional metadata specifically for AI/agent consumption.\nThis may include enhanced descriptions, examples, or semantic annotations that help AI systems\nbetter understand and utilize the API or event resource."
|
|
4743
|
+
}
|
|
4744
|
+
],
|
|
4745
|
+
"examples": [
|
|
4746
|
+
"ord:ai-enrichment"
|
|
4747
|
+
]
|
|
4748
|
+
}
|
|
4749
|
+
},
|
|
4750
|
+
"additionalProperties": false,
|
|
4751
|
+
"required": [
|
|
4752
|
+
"type",
|
|
4753
|
+
"mediaType",
|
|
4754
|
+
"url"
|
|
4755
|
+
]
|
|
4756
|
+
},
|
|
4424
4757
|
"Product": {
|
|
4425
4758
|
"type": "object",
|
|
4426
4759
|
"title": "Product",
|
|
@@ -4793,7 +5126,7 @@
|
|
|
4793
5126
|
},
|
|
4794
5127
|
"definitions": {
|
|
4795
5128
|
"type": "array",
|
|
4796
|
-
"description": "List of available machine-readable definitions, which describe the resource or capability in detail.\nSee also [Resource Definitions](../index.md#resource-definitions) for more context.\n\nEach definition is to be understood as an alternative description format, describing the same resource / capability.\
|
|
5129
|
+
"description": "List of available machine-readable definitions, which describe the resource or capability in detail.\nSee also [Resource Definitions](../index.md#resource-definitions) for more context.\n\nEach definition is to be understood as an alternative description format, describing the same resource / capability.\nThe combination of `type`, `purpose`, and `visibility` MUST be unique within the list.\n\nA definition without a `purpose` is considered the primary/default definition for its type.\nAdditional definitions of the same type MAY be provided if they have a distinct `purpose` (e.g., `ord:ai-enrichment` for AI-optimized definitions).\n\nIt is RECOMMENDED to provide the definitions as they enable machine-readable use cases.\nIf the definitions are added or changed, the `version` MUST be incremented.\nAn ORD aggregator MAY only (re)fetch the definitions again when the `version` was incremented.",
|
|
4797
5130
|
"items": {
|
|
4798
5131
|
"$ref": "#/definitions/CapabilityDefinition"
|
|
4799
5132
|
}
|
|
@@ -4939,6 +5272,26 @@
|
|
|
4939
5272
|
"description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
|
|
4940
5273
|
}
|
|
4941
5274
|
]
|
|
5275
|
+
},
|
|
5276
|
+
"purpose": {
|
|
5277
|
+
"type": "string",
|
|
5278
|
+
"x-feature-status": "alpha",
|
|
5279
|
+
"x-introduced-in-version": "1.15.0",
|
|
5280
|
+
"description": "Describes the intended purpose or role of this resource definition.\n\nWhile `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.\nThis allows multiple definitions of the same type to coexist when they serve different purposes.\n\nFor example, an API Resource might have multiple OpenAPI definitions:\none for standard API documentation and another specifically enriched for AI/agent consumption.\n\nMUST be a valid [Concept ID](../index.md#concept-id).",
|
|
5281
|
+
"anyOf": [
|
|
5282
|
+
{
|
|
5283
|
+
"type": "string",
|
|
5284
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+)$",
|
|
5285
|
+
"description": "Any valid [Concept ID](../index.md#concept-id)."
|
|
5286
|
+
},
|
|
5287
|
+
{
|
|
5288
|
+
"const": "ord:ai-enrichment",
|
|
5289
|
+
"description": "The definition is enriched with additional metadata specifically for AI/agent consumption.\nThis may include enhanced descriptions, examples, or semantic annotations that help AI systems\nbetter understand and utilize the API or event resource."
|
|
5290
|
+
}
|
|
5291
|
+
],
|
|
5292
|
+
"examples": [
|
|
5293
|
+
"ord:ai-enrichment"
|
|
5294
|
+
]
|
|
4942
5295
|
}
|
|
4943
5296
|
},
|
|
4944
5297
|
"additionalProperties": false,
|
|
@@ -6395,12 +6748,23 @@
|
|
|
6395
6748
|
"properties": {
|
|
6396
6749
|
"supported": {
|
|
6397
6750
|
"type": "string",
|
|
6398
|
-
"
|
|
6399
|
-
|
|
6400
|
-
|
|
6401
|
-
|
|
6402
|
-
|
|
6403
|
-
|
|
6751
|
+
"title": "Extensibility Support Level",
|
|
6752
|
+
"x-ums-type": "ignore",
|
|
6753
|
+
"description": "Defines whether and how the resource can be extended with custom fields.",
|
|
6754
|
+
"oneOf": [
|
|
6755
|
+
{
|
|
6756
|
+
"const": "no",
|
|
6757
|
+
"description": "Not extensible.\n\nThe data model of the resource (API or event) cannot be extended with custom fields."
|
|
6758
|
+
},
|
|
6759
|
+
{
|
|
6760
|
+
"const": "manual",
|
|
6761
|
+
"description": "Manually extensible.\n\nIn addition to defining a custom field, manual activities are required to include the field\nin the data model of the resource (API or event).\nExamples: using a specific mapping tool or selecting the resource in a data model extension tool."
|
|
6762
|
+
},
|
|
6763
|
+
{
|
|
6764
|
+
"const": "automatic",
|
|
6765
|
+
"description": "Automatically extensible.\n\nAfter defining a custom field in the local domain model, the resource (API or event)\nis automatically extended as part of the default extension field definition."
|
|
6766
|
+
}
|
|
6767
|
+
]
|
|
6404
6768
|
},
|
|
6405
6769
|
"description": {
|
|
6406
6770
|
"type": "string",
|
|
@@ -6758,6 +7122,11 @@
|
|
|
6758
7122
|
"type": "string",
|
|
6759
7123
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+)$",
|
|
6760
7124
|
"description": "Any valid [Concept ID](../index.md#concept-id)."
|
|
7125
|
+
},
|
|
7126
|
+
{
|
|
7127
|
+
"const": "ord:patches",
|
|
7128
|
+
"x-introduced-in-version": "1.15.0",
|
|
7129
|
+
"description": "The source resource patches one or more definition files of the target resource.\nUsed on [ORD Overlay Resources](#ord-overlay-resource) to declare which API or Event resource they patch."
|
|
6761
7130
|
}
|
|
6762
7131
|
],
|
|
6763
7132
|
"examples": [
|
|
@@ -6797,6 +7166,11 @@
|
|
|
6797
7166
|
"type": "string",
|
|
6798
7167
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+)$",
|
|
6799
7168
|
"description": "Any valid [Concept ID](../index.md#concept-id)."
|
|
7169
|
+
},
|
|
7170
|
+
{
|
|
7171
|
+
"const": "ord:patches",
|
|
7172
|
+
"x-introduced-in-version": "1.15.0",
|
|
7173
|
+
"description": "The source resource patches one or more definition files of the target resource.\nUsed on [ORD Overlay Resources](#ord-overlay-resource) to declare which API or Event resource they patch."
|
|
6800
7174
|
}
|
|
6801
7175
|
],
|
|
6802
7176
|
"examples": [
|