@cap-js/ord

中文文档
1.10.2发布于 2026/10/21Apache-2.0CommonJS构建来源已验证近 30 天下载 4602

CAP Plugin for generating ORD document.

原始使用文档
文档目录12 节
  1. About this project
  2. AI Coding Agent Skills
  3. Requirements and Setup
  4. Installation
  5. Authentication
  6. Usage
  7. Customizing ORD Document
  8. How to setup dev environment and run xmpl locally
  9. Support, Feedback, Contributing
  10. Security / Disclosure
  11. Code of Conduct
  12. Licensing

REUSE status

CDS Plugin for ORD

About this project

This plugin adds support for the Open Resource Discovery (ORD) protocol for CAP based applications. When you add the ORD plugin, your application gains a single entry point, which allows to discover and gather machine-readable information or metadata about the application. You can use this information to construct a static metadata catalog or to perform a detailed runtime inspection of your actual system instances / system landscapes.

For more information, have a look at the Open Resource Discovery page.

⚠ By installing this plugin, the metadata describing your CAP application will be made openly accessible. If you want to secure your CAP application's metadata, configure basic authentication by setting the environment variables or updating the .cdsrc.json file. The plugin prioritizes environment variables, then checks .cdsrc.json. If neither is configured, metadata remains publicly accessible.

AI Coding Agent Skills

This project ships two Claude Code skills under .skills/ that AI coding agents can use to assist with common tasks:

SkillDescription
integrate-ord-pluginStep-by-step guide for integrating @cap-js/ord into a CAP Node.js project — installation, .cdsrc.json configuration, authentication, and verification.
custom-ord-annotationsReference for all @ORD.Extensions.* CDS annotations — title, description, version, visibility, consumption bundles, and more.

Requirements and Setup

Installation

npm install @cap-js/ord

Note: @cap-js/openapi and @cap-js/asyncapi packages have been migrated from peerDependencies to dependencies in package.json. As a result, using globally installed packages may lead to conflicts. If conflicts arises do npm uninstall -g @cap-js/openapi @cap-js/asyncapi and then npm install in your project directory.

Authentication

The ORD Plugin supports multiple authentication strategies that can be configured through environment variables or .cdsrc.json. Authentication types are automatically detected based on the presence of their configuration - no explicit types array is needed.

Supported Authentication Methods:

  • Open: No authentication (default when no other auth is configured)
  • Basic: HTTP Basic Authentication with bcrypt-hashed passwords
  • CF mTLS: Cloud Foundry mutual TLS authentication
  • DwC mTLS: Data Warehouse Cloud mutual TLS authentication

Multiple Authentication Strategies: You can configure multiple authentication methods simultaneously (e.g., both basic and cf-mtls). The plugin implements an Express-like middleware pattern that tries each configured strategy in order until one succeeds.

Note: When any secure authentication method is configured, open authentication is automatically disabled to ensure security. The ORD document will reflect all active authentication strategies.

Open

The open authentication type is the default and bypasses authentication checks. It is automatically used when no other authentication is configured.

Basic Authentication

Configure Basic Authentication using environment variables or .cdsrc.json:

Option 1: Environment Variable

BASIC_AUTH='{"admin":"$2y$05$..."}'

Option 2: Configuration File

Add to your .cdsrc.json:

{
    "cds": {
        "ord": {
            "authentication": {
                "basic": {
                    "credentials": {
                        "admin": "$2y$05$..."
                    }
                }
            }
        }
    }
}

To generate bcrypt hashes, use the htpasswd utility:

htpasswd -Bnb <user> <password>

This will output something like admin:$2y$05$... - use only the hash part (starting with $2y$) in your BASIC_AUTH JSON.

[!IMPORTANT] Make sure to use strong passwords and handle the BASIC_AUTH environment variable securely. Never commit real credentials or .env files to version control.

Using htpasswd in your environment
  • Platform independent:

    Prerequisite is to have NodeJS installed on the machine.

    npm install -g htpasswd
    

    After installing package globally, command htpasswd should be available in the Terminal.

  • macOS:

    Installation of any additional packages is not required. Utility htpasswd is available in Terminal by default.

  • Linux:

    Install apache2-utils package:

    # Debian/Ubuntu
    sudo apt-get install apache2-utils
    
    # RHEL/CentOS
    sudo yum install httpd-tools
    

CF mTLS Authentication

Configure Cloud Foundry mutual TLS authentication for SAP BTP Cloud Foundry environments. Possible values include 'sap:cmp-mtls:v1' and 'sap.businesshub:mtls:v1'.

Production Configuration with UCL (Recommended)

For SAP UCL (Unified Customer Landscape) integration, enable mTLS in .cdsrc.json and configure UCL endpoints via environment variable:

{
    "ord": {
        "authentication": {
            "cfMtls": true
        }
    }
}
# Example configuration of the CF_MTLS_TRUSTED_CERTS environment variable
export CF_MTLS_TRUSTED_CERTS='{
  "configEndpoints": ["https://your-ucl-endpoint/v1/info"],
  "rootCaDn": ["CN=SAP Cloud Root CA,O=SAP SE,L=Walldorf,C=DE"],
  "accessStrategies": ["sap:cmp-mtls:v1", "sap.businesshub:mtls:v1"]
}'

Production Configuration with Custom Certificates

For custom certificates without UCL:

# Example configuration of the CF_MTLS_TRUSTED_CERTS environment variable
export CF_MTLS_TRUSTED_CERTS='{
  "certs": [{"issuer": "CN=My CA,O=MyOrg", "subject": "CN=my-service,O=MyOrg"}],
  "rootCaDn": ["CN=My Root CA,O=MyOrg"],
  "accessStrategies": ["sap:cmp-mtls:v1", "sap.businesshub:mtls:v1"]
}'

Development Configuration

For local development, configure the full mTLS settings directly in .cdsrc.json:

{
    "ord": {
        "authentication": {
            "cfMtls": {
                "rootCaDn": ["CN=Test Root CA,O=MyOrg,C=DE"],
                "accessStrategies": ["sap:cmp-mtls:v1","sap.businesshub:mtls:v1"],
                "certs": [
                    {
                        "issuer": "CN=Test CA,O=MyOrg,C=DE",
                        "subject": "CN=test-client,O=MyOrg,C=DE"
                    }
                ]
            }
        }
    }
}

Note: For detailed CF mTLS configuration options, see the documentation.

DwC mTLS Authentication

Configure DwC mTLS when a gateway forwards the verified client certificate in the DwC-Forwarded-Client-Cert header. Its configuration has the same certs, rootCaDn, configEndpoints, and optional accessStrategies fields as CF mTLS; use dwcMtls and DWC_MTLS_TRUSTED_CERTS instead. See the DwC mTLS documentation for an example.

Multiple Authentication Strategies

You can configure multiple authentication methods simultaneously to support different client types. Authentication types are detected automatically based on configuration presence:

Configuration in .cdsrc.json:

{
  "cds": {
    "ord": {
      "authentication": {
        "basic": {
          "credentials": {
            "admin": "$2y$05$..."
          }
        },
        "cfMtls": {
          "certs": [...],
          "rootCaDn": [...]
        }
      }
    }
  }
}

How it works:

  • Authentication types are detected based on what you configure (no types array needed)
  • The plugin tries each configured authentication strategy in order
  • The first strategy that successfully authenticates the request is used
  • If a request includes Basic auth headers, Basic authentication is attempted
  • If a request includes mTLS certificate headers, CF mTLS authentication is attempted
  • The ORD document automatically includes all configured authentication methods in its accessStrategies

Example scenarios:

  • Basic + CF mTLS: Supports both API clients using Basic auth and services using mTLS certificates
  • Basic only: Only clients with valid Basic auth credentials can access
  • CF mTLS only: Only clients with trusted certificates can access

Usage

Programmatic API

const cds = require("@sap/cds");
require("@cap-js/ord");
const csn = cds.context?.model || cds.model;
const ord = cds.compile.to.ord(csn);

Command Line

Build all ord related documents, including ordDocument and services resources files:

Supported Options
  1. workers:
    • Description: Max number of workers to use during execution
    • Supported Values:
      • workers=N - max number of N (int) workers (e.g. 2 workers => workers=2)
      • workers=NC - max N (int/float) workers per CPU core (e.g. max 5 workers on a 2 core machine, max 10 workers on a 4 core machine => workers=2.5C)
    • Default Value: max 1 worker per every 2 CPU cores => workers=0.5C
    • Usage Examples:
      • cds build --for ord --opts 'workers=2'
      • cds build --for ord --opts 'workers=2.5C'
      • cds build --for ord --opts 'workers=0.5C' (equivalent to cds build --for ord)
cds build --for ord

# By default, it will be generated in /gen/ord dir, e.g.:
# done > wrote output to:
#    gen/ord/ord-document.json
#    gen/ord/sap.sample:apiResource:AdminService:v1/AdminService.edmx
#    gen/ord/sap.sample:apiResource:AdminService:v1/AdminService.oas3.json

Only compile ord document:

cds compile <path to srv folder> --to ord [-o] [destinationFilePath]
Sample Application Demo

ORD Endpoints

  1. Run cds watch in the application's root.
  2. Check the following relative paths for ORD information - /.well-known/open-resource-discovery , /ord/v1/documents/ord-document.
Sample Application Demo

Customizing ORD Document

You can find more information, such as how to customize the ORD Document, in this document.

How to setup dev environment and run xmpl locally

  1. Install dependency

    npm i
    
  2. Run xmpl application

    cd xmpl/
    
    # watch xmpl application
    cds watch
    
    # build resources files
    cds build --for ord
    

Support, Feedback, Contributing

This project is open to feature requests/suggestions, bug reports etc. via GitHub issues. Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our Contribution Guidelines.

Security / Disclosure

If you find any bug that may be a security problem, please follow our instructions at in our security policy on how to report it. Please do not create GitHub issues for security-related doubts or problems.

At the current state, the plugin will expose static metadata with open access. This means that the CAP resources are described and documented openly, but it does not imply that the resources themselves can be accessed.

If you have a need to protect your metadata, please refrain from installing this plugin until we support metadata protection.

Code of Conduct

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its Code of Conduct at all times.

Licensing

Copyright 2024 SAP SE or an SAP affiliate company and cds-plugin-for-ord contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.

版本与发布记录

@cap-js/ord 共发布 38 个版本,首次发布于 2024/07/12;过去 12 个月发布了 19 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.10.2latest2026/10/2118 天前
1.10.12026/10/1326 天前
1.10.02026/09/301 个月前
1.9.32026/08/312 个月前
1.9.22026/07/163 个月前
1.9.12026/06/264 个月前

关于 @cap-js/ord 的常见问题

@cap-js/ord 是什么?

CAP Plugin for generating ORD document.

如何安装 @cap-js/ord?

在项目目录运行 npm install @cap-js/ord,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@sap/cds(>=8.9.4)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@cap-js/ord 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/cap-js__ord 是否存在。

@cap-js/ord 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@cap-js/ord 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20 <25。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cap-js/ord 可以商用吗?

@cap-js/ord 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cap-js/ord 的下载量有多少?

根据 npm 官方下载统计,@cap-js/ord 在 2026/10/09 – 2026/11/07 这 30 天内被下载 4,602 次,日均约 153 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cap-js/ord 还在维护吗?

最新版本 1.10.2 发布于 2026/10/21(18 天前);至今共发布 38 个版本,其中过去 12 个月发布了 19 个;首次发布于 2024/07/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。