Application Research · JSON Structure

Open Resource Discovery Structure

The [ORD Document](../index.md#ord-document) object serves as a wrapper for the **ORD resources** and **ORD taxonomy** and adds further top-level information that are specific to the document/the service it describes. The constraints and considerations on [ORD Documents](../index.md#ord-document) MUST be followed. This JSON Schema describes the [ORD document interface](https://open-resource-discovery.org/spec-v1/interfaces/Document) of the [ORD specification](https://open-resource-discovery.org/).

Type: object Properties: 23
Application DependenciesCloud NativeIntegrationResearchSpecificationsWorkload Specifications

Ord Document is a JSON Structure definition published by Application Research, describing 23 properties. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.

Properties

$schema openResourceDiscovery description perspective describedSystemInstance describedSystemType describedSystemVersion policyLevel customPolicyLevel policyLevels apiResources eventResources entityTypes capabilities dataProducts integrationDependencies vendors products packages consumptionBundles groups groupTypes tombstones

Meta-schema: https://json-structure.org/meta/core/v0/#

JSON Structure

Raw ↑
{
  "$schema": "https://json-structure.org/meta/core/v0/#",
  "name": "Ord Document",
  "description": "The [ORD Document](../index.md#ord-document) object serves as a wrapper for the **ORD resources** and **ORD taxonomy** and adds further top-level information\nthat are specific to the document/the service it describes.\n\nThe constraints and considerations on [ORD Documents](../index.md#ord-document) MUST be followed.\n\nThis JSON Schema describes the [ORD document interface](https://open-resource-discovery.org/spec-v1/interfaces/Document) of the [ORD specification](https://open-resource-discovery.org/).",
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string",
      "format": "uri-reference",
      "description": "Optional [URL](https://tools.ietf.org/html/rfc3986) to the Open Resource Discovery document schema (defined as a JSON Schema).\nIf provided, this enables code intelligence and validation in supported editors (like VSCode) and tools.",
      "anyOf": [
        {
          "type": "string",
          "format": "uri-reference"
        },
        {
          "const": "https://open-resource-discovery.org/spec-v1/interfaces/Document.schema.json#"
        }
      ]
    },
    "openResourceDiscovery": {
      "type": "string",
      "description": "Version of the Open Resource Discovery specification that is used to describe this document.",
      "enum": [
        "1.0",
        "1.1",
        "1.2",
        "1.3",
        "1.4",
        "1.5",
        "1.6",
        "1.7",
        "1.8",
        "1.9",
        "1.10",
        "1.11",
        "1.12"
      ],
      "examples": [
        "1.12"
      ]
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "description": "Optional description of the ORD document itself.\nPlease note that this information is NOT further processed or considered by an ORD aggregator.\n\nNotated in [CommonMark](https://spec.commonmark.org/) (Markdown).",
      "examples": [
        "This ORD document contains all APIs that are system instance aware and have APIs that\ncan change their behavior at runtime.\n"
      ]
    },
    "perspective": {
      "type": "string",
      "x-introduced-in-version": "1.12.0",
      "x-feature-status": "beta",
      "description": "With ORD it's possible to describe a system from a static or a dynamic [perspective](../index.md#perspectives) (for more details, follow the link).\n\nIt is strongly RECOMMENDED to mark all static ORD documents with perspective `system-version`.\n\nIt is RECOMMENDED to describe dynamic metadata in both static system-version perspective and additionally describe the system-instance perspective where it diverges from the static metadata.\n\nIf not provided, this defaults to `system-instance`, which is the most precise description but also the most costly to replicate.\n\nPlease read the [article on perspectives](../concepts/perspectives) for more explanations.",
      "oneOf": [
        {
          "const": "system-version",
          "description": "Describes the static [system-version](../index.md#def-system-version) perspective, usually known at deploy-time.\n\nIf chosen, `describedSystemVersion`.`version` MUST be provided, too.\n\nThis perspective describes how a system of a particular type and version generally look like.\nThe latest system-version MAY also be interpreted as the [system-type](../index.md#def-system-type) perspective."
        },
        {
          "const": "system-instance",
          "description": "Describes the complete dynamic [system-instance](../index.md#def-system-instance) (tenant) perspective as known at run-time.\nThis allows to also reflect tenant specific extensions, customizations and runtime configuration.\n\nIf provided, it will completely override the static system-version perspective when metadata about system instances is requested."
        },
        {
          "const": "system-independent",
          "description": "Describes content that is independent of [system-versions](../index.md#def-system-version) or [system-instances](../index.md#def-system-instance).\nThis content is always static and has independent visibility and lifecycle from the systems in a particular landscape.\nThe \"system-independent\" content MUST NOT be overridden via system-version or system-instance perspective metadata.\n\nExamples are: Vendors, products, globally aligned entity types, groups and group types (taxonomy), which are usually shared by multiple systems."
        }
      ],
      "default": "system instance",
      "examples": [
        "system-instance"
      ]
    },
    "describedSystemInstance": {
      "$ref": "#/definitions/SystemInstance",
      "description": "Information on the [system-instance](../index.md#def-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."
    },
    "describedSystemType": {
      "$ref": "#/definitions/SystemType",
      "x-introduced-in-version": "1.10.0",
      "description": "Information on the [system type](../index.md#def-system-type) that this ORD document describes."
    },
    "describedSystemVersion": {
      "$ref": "#/definitions/SystemVersion",
      "x-introduced-in-version": "1.10.0",
      "description": "Information on the [system version](../index.md#def-system-version) that this ORD document describes."
    },
    "policyLevel": {
      "type": "string",
      "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",
      "anyOf": [
        {
          "type": "string",
          "pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
          "description": "Any valid [Specification ID](../index.md#specification-id)."
        },
        {
          "const": "none",
          "description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
        },
        {
          "const": "custom",
          "description": "Custom policy level.\nFurther validation MAY be defined and implemented by the policy-level owner.\nThis level MAY be chosen by 3rd party or customer solutions.\nIf chosen, `customPolicyLevel` MUST be provided."
        }
      ],
      "default": "none",
      "x-introduced-in-version": "1.3.0",
      "examples": [
        "sap:core:v1"
      ]
    },
    "customPolicyLevel": {
      "type": "string",
      "description": "If the fixed `policyLevel` values need to be extended, an arbitrary `customPolicyLevel` can be provided.\nThe policy level is inherited from packages to resources they contain, but can be overwritten at resource level.\n\nMUST only be provided if `policyLevel` is set to `custom`.\nMUST be a valid [Specification ID](../index.md#specification-id).",
      "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
      "maxLength": 255,
      "x-introduced-in-version": "1.3.0",
      "examples": [
        "sap.xref:customPolicy:v1"
      ]
    },
    "policyLevels": {
      "type": "array",
      "description": "A list of [policy levels](../../spec-extensions/policy-levels/) that the described resources need to be compliant with.\nFor each chosen policy level, additional expectations and validations rules will be applied.\n\nPolicy levels can be defined on ORD Document level, but also be overwritten on an individual package or resource level.\n\nA policy level MUST be a valid [Specification ID](../index.md#specification-id).",
      "x-introduced-in-version": "1.9.9",
      "items": {
        "type": "string",
        "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
        "maxLength": 255,
        "examples": [
          "sap:core:v1"
        ]
      }
    },
    "apiResources": {
      "type": "array",
      "description": "Array of all API Resources that are described in this ORD document.",
      "items": {
        "$ref": "#/definitions/ApiResource"
      }
    },
    "eventResources": {
      "type": "array",
      "description": "Array of all event resources that are described in this ORD document.",
      "items": {
        "$ref": "#/definitions/EventResource"
      }
    },
    "entityTypes": {
      "type": "array",
      "description": "Array of all entity types that are described in this ORD document.",
      "x-introduced-in-version": "1.6.0",
      "items": {
        "$ref": "#/definitions/EntityType"
      }
    },
    "capabilities": {
      "type": "array",
      "description": "Array of all capabilities that are described in this ORD document.",
      "x-introduced-in-version": "1.4.0",
      "items": {
        "$ref": "#/definitions/Capability"
      }
    },
    "dataProducts": {
      "type": "array",
      "description": "Array of all data products that are described in this ORD document.",
      "x-introduced-in-version": "1.8.0",
      "items": {
        "$ref": "#/definitions/DataProduct"
      }
    },
    "integrationDependencies": {
      "type": "array",
      "description": "Array of all integration dependencies that are described in this ORD document.",
      "x-introduced-in-version": "1.7.0",
      "items": {
        "$ref": "#/definitions/IntegrationDependency"
      }
    },
    "vendors": {
      "type": "array",
      "description": "Array of all Vendors that are described in this ORD document.",
      "items": {
        "$ref": "#/definitions/Vendor"
      }
    },
    "products": {
      "type": "array",
      "description": "Array of all Products that are described in this ORD document.",
      "items": {
        "$ref": "#/definitions/Product"
      }
    },
    "packages": {
      "type": "array",
      "description": "Array of all Packages that are described in this ORD document.",
      "items": {
        "$ref": "#/definitions/Package"
      }
    },
    "consumptionBundles": {
      "type": "array",
      "description": "Array of all Consumption Bundles that are described in this ORD document.",
      "items": {
        "$ref": "#/definitions/ConsumptionBundle"
      }
    },
    "groups": {
      "type": "array",
      "description": "Array of all Groups that are described in this ORD document.",
      "x-introduced-in-version": "1.9.0",
      "items": {
        "$ref": "#/definitions/Group"
      }
    },
    "groupTypes": {
      "type": "array",
      "description": "Array of all Group Types that are described in this ORD document.",
      "x-introduced-in-version": "1.9.0",
      "items": {
        "$ref": "#/definitions/GroupType"
      }
    },
    "tombstones": {
      "type": "array",
      "description": "List of ORD information (resources or taxonomy) that have been \"tombstoned\", indicating removal or archival.\nThis MUST be indicated explicitly, just removing the ORD information itself is not sufficient.\n\nA tombstone entry MAY be removed after a grace period of 31 days.",
      "items": {
        "$ref": "#/definitions/Tombstone"
      }
    }
  }
}