Skip to main content

ORD Configuration

Schema Definitions​

Ord Configuration​

Type: Object($schema, baseUrl, openResourceDiscoveryV1)

PropertyTypeDescription
$schema
OPTIONAL
string
Optional URL to the ORD Configuration schema (defined as JSON Schema).
If given, this enables code intelligence and validation in supported editors (like VSCode) and tools.
JSON Schema Format: uri-reference
Array Item Allowed Values (extensible):
  • Any string of format uri-reference
  • "https://open-resource-discovery.org/spec-v1/interfaces/Configuration.schema.json#"
baseUrl
OPTIONAL
string
Optional base URL that can be used to resolve the relative URLs to the ORD Documents.

The baseUrl MUST NOT contain a trailing slash.

If you do not provide this property, the base URL is assumed to be the URL of the config endpoint without /.well-known/open-resource-discovery suffix.
This implies that either a baseUrl or only absolute URLs MUST be provided when no standardized well-known URI is used.
If both a baseUrl and a well-known URI is provided, the explicit baseUrl takes precedence.
JSON Schema Format: uri
Regex Pattern: ^http[s]?:\/\/[^:\/\s]+\.[^:\/\s\.]+(:\d+)?(\/[a-zA-Z0-9-\._~]+)*$
Example Values:
  • "https://example-sap-system.com"
  • "https://sub.foo.bar.com"
  • "https://sub.foo.bar.com/api/v1"
openResourceDiscoveryV1
MANDATORY
The existence of this version indicates that Open Resource Discovery is supported in Version 1.x

Ord V1 Support​

The existence of this version indicates that Open Resource Discovery is supported in Version 1.x

Type: Object(documents, capabilities)

PropertyTypeDescription
documents
OPTIONAL
List of all ORD documents that can be retrieved.

While it is possible to describe everything in one big ORD document, for bigger services/use cases it might be preferable to split the information into multiple documents.

For more details how to implement this correctly, please refer to the ORD configuration endpoint section and the considerations on the granularity of ORD documents.
capabilities
OPTIONAL
List of capabilities that are supported by the ORD provider.

Ord V1 Document Description​

Describes an ORD Document that is available for pull transport consumption.

Type: Object(url, perspective, accessStrategies)

PropertyTypeDescription
url
MANDATORY
string
URL or relative URL to the ORD document (provided by an ORD document endpoint).

It is RECOMMENDED to provide a relative URL (to baseUrl).
If a baseUrl is given, the relative URLs will be resolved with it.

If the URL is not relative to the system providing this information or no well-known URI is used,
either the baseUrl or a full URL to the document MUST be provided.
JSON Schema Format: uri-reference
Example Values:
  • "/open-resource-discovery/v1/documents/example1"
  • "../../documents/example1"
  • "https://example.com/open-resource-discovery/v1/documents/example1"
perspective
OPTIONAL BETA
string
With ORD it's possible to describe a system from a static or a dynamic perspective (for more details, follow the link).

An ORD provider that describes a system SHOULD publish static metadata using system-type, system-version, or both.
Static ORD documents MUST NOT contain tenant context or tenant-specific customizations.
Providers SHOULD publish version-independent metadata through system-type and metadata that differs between versions through system-version.
Distinct system-version values MUST be used when multiple versions of the same application are deployed at the same time in one environment tier, such as production.
A continuously delivered system MAY instead publish all static metadata through system-type or through system-version with a fixed describedSystemVersion.version.
When using the fixed-version approach, the version MUST remain unchanged so each release replaces the previously published system-version perspective.
Each ORD ID published in a static perspective MUST have a complete representation.
The effective static view looks up an ORD ID in the applicable system-version layer first and then in system-type.
If both contain the ORD ID, the complete system-version representation takes precedence and properties MUST NOT be merged across the layers.

Systems with dynamic metadata MUST be described in a complete system-instance perspective and SHOULD additionally be described in at least one static perspective.

If not provided, this defaults to system-instance, which is the most precise description but also the most costly to replicate.

Please read the article on perspectives for more explanations.
Default Value: system-instance
Allowed Values:
  • "system-type": Describes a static system-type perspective, which is version independent.

    If a system is not versioned (continuous delivery) or resources are not tied to a system version, the system-type perspective
    implies that the information applies, no matter which system version or instance.

  • "system-version": Describes the static system-version perspective, usually known at deploy-time.

    If chosen, describedSystemVersion.version MUST be provided, too.

    This perspective describes how a system of a particular type and version generally look like.
    When no specific version is requested, the greatest published stable system-version MUST be selected (see static perspective resolution).
    The selected system-version is the first lookup layer.
    If it omits an ORD ID, the version-independent system-type layer MUST be looked up next.
    If both contain the ORD ID, the complete system-version representation takes precedence without property merging.
    Automatic latest selection MUST exclude Semantic Versioning prereleases, which may still be selected for an exact-version lookup, including when it is the known version of a tenant.
    Providers MUST NOT publish multiple system-version perspectives whose versions have equal Semantic Versioning precedence and differ only in build metadata.

  • "system-instance": Describes the complete dynamic system-instance (tenant) perspective as known at run-time.
    This allows to also reflect tenant specific extensions, customizations and runtime configuration.

    All documents published for one tenant MUST collectively form that tenant's complete system-instance perspective.
    If published for a tenant, it completely replaces the effective static view when metadata about that system instance is requested.
    Whether a complete valid perspective is published MUST be determined independently for each tenant.
    A resource omitted from the complete system-instance perspective MUST NOT be inherited from a static perspective.

  • "system-independent": Describes content that is independent of system-versions or system-instances.
    This content is always static and has independent visibility and lifecycle from the systems in a particular landscape.
    It MUST NOT contain system or tenant context or system-specific or tenant-specific customizations.
    The "system-independent" content MUST NOT be overridden via system-version or system-instance perspective metadata.

    Examples are: Vendors, products, globally aligned entity types, groups and group types (taxonomy), which are usually shared by multiple systems.
    For the distinction between system-independent content and system-scoped shared publications, see Shared Taxonomy, Resources and Contracts.


Introduced in Version: 1.12.0
Example Values:
  • "system-instance"
accessStrategies
MANDATORY
List of supported access strategies for retrieving the metadata from the ORD provider.

An ORD Consumer/ORD Aggregator MAY freely choose any of the listed strategies.
Array Constraint: MUST have at least 1 items

Ord V1 Capabilities​

List of capabilities that are supported by the ORD provider.

Type: Object(selector)

PropertyTypeDescription
selector
OPTIONAL
boolean
Whether the ORD provider supports the optional select parameter (select parameter) for retrieving the ORD config and ORD documents.
Default Value: false

Ord V1 Document Access Strategy​

Defines the access strategy for accessing the ORD documents from the ORD provider.

Type: Object(type, customType, customDescription)

PropertyTypeDescription
type
MANDATORY
string
Defines the authentication/authorization strategy through which the referenced ORD Documents can be accessed.
Array Item Allowed Values (extensible):
  • Any string: Any valid Specification ID.
    If chosen, customDescription SHOULD be provided.
  • "open": The resource definitions are openly accessible and not protected via authentication or authorization.
    Please find a more detailed documentation here.
  • "basic-auth": The resource definitions are protected via generic basic auth.
    Please find a more detailed documentation here.
  • "custom": If chosen, customType MUST be provided.
    If chosen, customDescription SHOULD be provided.

Example Values:
  • "open"
customType
OPTIONAL
string
If the fixed type enum values need to be extended, an arbitrary customType can be provided.

MUST be a valid Specification ID.

MUST only be provided if type is set to custom.
Regex Pattern: ^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\-]+):v([0-9]+)$
Maximum Length: 255
Example Values:
  • "sap.xref:open-local-tenant-id:v1"
customDescription
OPTIONAL
string
Human-readable description about how the access is set up, notated in CommonMark (Markdown).

MUST only be provided if type is set to custom.
Minimum Length: 1
Example Values:
  • "To set up the access to OData APIs, please refer to the [SAP Cloud for Customer OData API](https://help.sap.com/viewer/1364b70b9cbb417ea5e2d80e966d4f49/CLOUD/en-US) help pages."
Example Values:​
{
"type": "open"
}
{
"type": "custom",
"customType": "sap.xref:open-local-tenant-id:v1",
"customDescription": "Custom description how to use custom access strategy"
}