IBM Cloud Docs
设置 API

设置 API

您可以使用 IBM Cloud® Schematics API 来自动执行 IBM Cloud中的 Schematics 功能。 要使用 CLI,请参阅 准备使用 CLI

要查找受支持的 IBM Cloud® Schematics APIs,API 端点以及必需的 API 头和主体信息的概述,请参阅 Schematics API 文档

使用 Schematics API

了解如何使用 IBM Cloud® Schematics API 通过 Identity and Access Management 令牌进行认证。

要使用 IBM Cloud Schematics API,必须提供使用 IBM Cloud 凭证生成的 IBM Cloud® Identity and Access Management (IAM) 令牌。 根据您向 IBM Cloud 进行认证的方式,可以在下列选项之间进行选择,以自动创建 IBM Cloud IAM 令牌。

标识类型和选项
认证选项 描述
IBM Cloud 用户名和密码 您可以按照本主题中的步骤完全自动创建 IBM Cloud IAM 访问令牌。 如果使用 MFA 向 IBM Cloud 进行认证,那么无法完全自动创建 IBM Cloud IAM 令牌,因为 MFA 需要与 Web 浏览器进行手动交互。 要完全自动创建 IBM Cloud IAM 令牌,必须使用 IBM Cloud API 密钥。
IBM Cloud API 密钥 作为使用 IBM Cloud 用户名和密码的替代方法,您可以 使用 IBM Cloud API 密钥。IBM Cloud API 密钥特定于为其生成的 IBM Cloud 帐户。 要访问在 IBM Cloud API 密钥所基于的帐户以外的其他帐户中创建的工作空间,必须为该帐户生成 API 密钥。
  1. 创建 IBM Cloud IAM 访问令牌。

API 令牌请求的请求主体取决于 IBM Cloud 认证方法。

您可以在 API 输出的 access_token 字段中找到 IBM Cloud IAM 令牌。 请记下 IBM Cloud IAM 令牌以在后续步骤中用于检索更多头信息。

POST `https://iam.cloud.ibm.com/identity/token`
输入参数
: Content-Type: application/x-www-form-urlencoded :授权: 基本 [Yng6Yng=^]
Yng6Yng= 等于用户名 bx 和密码 bxURL授权。
IBM Cloud 用户名和密码的主体 :grant_type: password:response_type: cloud_iam uaa:username: 您的 IBM Cloud username.:password: 您的 IBM Cloud password.:uaa_client_id: cf:uaa_client_secret:
添加未指定值的 uaa_client_secret 密钥。
IBM Cloud API 密钥的主体 :grant_type: urn:ibm:params:oauth:grant-type:apikey:response_type: cloud_iam uaa:apikey: IBM Cloud API 密钥:uaa_client_id: cf:uaa_client_secret:
添加未指定值的 uaa_client_secret 密钥。
IBM Cloud 一次性通行码的主体 :grant_type:urn:ibm:params:oauth:grant-type:passcode:response_type: cloud_iam uaa:passcode: 您的 IBM Cloud 一次性密码。 运行 ibmcloud login --sso 并遵循 CLI 输出中的指示信息,以使用 Web browser.:uaa_client_id: cf:uaa_client_secret:
添加未指定值的 uaa_client_secret 密钥。

示例输出

{
"access_token": "<iam_access_token>",
"refresh_token": "<iam_refresh_token>",
"uaa_token": "<uaa_token>",
"uaa_refresh_token": "<uaa_refresh_token>",
"token_type": "Bearer",
"expires_in": 3600,
"expiration": 1493747503
"scope": "ibm openid"
}
  1. 检索您正在使用的令牌的帐户标识。

<iam_access_token> 替换为上一步中从 API 输出的 access_token 字段中获取的 IAM 令牌。 在 API 输出中,您可以在 resources.metadata.guid 字段中找到 IBM Cloud 账户的 ID。

GET https://accounts.cloud.ibm.com/coe/v2/accounts
输入参数以获取 IBM Cloud 帐户 ID。
输入参数
:Content-Type: application/json:Authorization: bearer <iam_access_token>:Accept: application/json

示例输出

{
    "next_url": null,
    "total_results": 5,
    "resources": [
        {
            "metadata": {
                "guid": "<account_ID>",
                "url": "/coe/v2/accounts/<account_ID>",
                "created_at": "2020-09-29T02:49:41.842Z",
                "updated_at": "2020-08-16T18:56:00.442Z",
                "anonymousId": "1111a1aa1a1111a1aa11aa11111a1111"
            },
            "entity": {
                "name": "<account_name>",
            }
        }
        ]
}
  1. 生成新的 IBM Cloud IAM 令牌,该令牌包含您的 IBM Cloud 凭证和要使用的帐户标识。

如果使用的是 IBM Cloud API 密钥,那么必须使用为其创建 API 密钥的 IBM Cloud 帐户标识。 要访问 Schematics 帐户中的工作空间或操作 B,请登录到帐户 B 并创建基于帐户 B 的 IBM Cloud API 密钥。

POST https://iam.cloud.ibm.com/identity/token
用于获取 IAM 令牌的输入参数。
输入参数
:Content-Type: application/x-www-form-urlencoded:Authorization: Basic Yng6Yng=[^]
Yng6Yng= 等于 -编码的用户名 和密码 的授权。URL bx bx
IBM Cloud 用户名和密码的主体 :grant_type: password:response_type: cloud_iam uaa:username: 您的 IBM Cloud 用户名。:password: 您的 IBM Cloud 密码。:uaa_client_ID: cf:uaa_client_secret:
添加未指定任何值的 uaa_client_secret 密钥 specified.:bss_account: 您在上一步中检索到的 IBM Cloud 帐户标识。
IBM Cloud API 密钥的主体 :grant_type: urn:ibm:params:oauth:grant-type:apikey:response_type: cloud_iam uaa:apikey: 您的 IBM Cloud API key.:uaa_client_ID: cf:uaa_client_secret:
添加没有值的 uaa_client_secret 密钥 specified.:bss_account: 您在上一步中检索到的 IBM Cloud 帐户标识。
IBM Cloud 一次性通行码的主体 :grant_type:urn:ibm:params:oauth:grant-type:passcode:response_type: cloud_iam uaa:passcode: 您的 IBM Cloud 密码。:uaa_client_ID: cf:uaa_client_secret:
添加未指定值的 uaa_client_secret 键。:bss_account: 您在上一步中检索到的 IBM Cloud 帐户标识。

Example output

{
    "access_token": "<iam_token>",
    "refresh_token": "<iam_refresh_token>",
    "token_type": "Bearer",
    "expires_in": 3600,
    "expiration": 1493747503
}

您可以在 API 输出的 access_token 中找到 IBM Cloud IAM 令牌,在 refresh_token 字段中找到刷新令牌。

  1. 使用 Schematics API 列出帐户中的所有工作空间。

用于列出所有工作空间的语法

    GET https://schematics.cloud.ibm.com/v1/workspaces/
| Input parameters | Values |
| ----- |  --- |
| Header | `Authorization: bearer <iam_token>`|
{: caption="Input parameters to work with the IBM Cloud Schematics API." caption-side="top"}

用于检索有关特定工作空间的信息的语法:

GET https://schematics.cloud.ibm.com/v1/workspaces/{id}
输入参数以使用 IBM Cloud Schematics API。
输入参数
Authorization: bearer <iam_token>: 您的 IBM Cloud IAM 访问令牌。
路径 id <workspace_ID>:工作区的 ID。 要检索工作空间标识,请运行 ibmcloud schematics workspace list
  1. 查看 IBM Cloud Schematics API 文档 以获取受支持 APIs 的列表。

刷新 IBM Cloud IAM 访问令牌并使用 API 获取新令牌

IBM Cloud® Identity and Access Management (IAM) 访问令牌将在 1 小时后到期。 必须定期刷新访问令牌才可确保对 IBM Cloud API 的访问权。 您可以使用相同的步骤获取新的令牌。

在开始之前,请确保您有一个有效的 IBM Cloud IAM 刷新令牌或 IBM Cloud API 密钥,可以用来请求新的访问令牌。

  • 刷新令牌: 请按照 IBM Cloud API 自动执行工作区创建和管理流程 中的说明进行操作。
  • API 密钥: 获取您的 IBM Cloud API 密钥。
    1. 在菜单栏中,单击**管理 ** > 访问权 (IAM)
    2. 单击用户页面,然后选择您自己。
    3. API 密钥窗格中,单击创建 IBM Cloud API 密钥
    4. 输入 API 密钥的名称描述,然后单击创建
    5. 单击显示以查看生成的 API 密钥。
    6. 复制 API 密钥,以便可以将其用于检索新的 IBM Cloud IAM 访问令牌。

如果要创建 IBM Cloud IAM 令牌或要获取新的刷新令牌,请执行以下步骤。

  1. 使用刷新令牌或 IBM Cloud API 密钥来生成新的 IBM Cloud IAM 访问令牌。
POST https://iam.cloud.ibm.com/identity/token
新的 IBM Cloud IAM 令牌的输入参数。
输入参数
:Content-Type: application/x-www-form-urlencoded:Authorization: Basic Yng6Yng=

Yng6Yng= 等于 -编码的用户名 和密码 的授权。URL bx bx
使用刷新令牌时的主体 :grant_type: refresh_token:response_type: cloud_iam uaa:refresh_token: IBM Cloud IAM 刷新令牌。:uaa_client_ID: cf:uaa_client_secret::bss_account: 您的 IBM Cloud 帐户标识。

添加 uaa_client_secret 关键字,但不指定值。
使用 IBM Cloud API 密钥时的主体 :grant_type: urn:ibm:params:oauth:grant-type:apikey:response_type: cloud_iam uaa:apikey: 您的 IBM Cloud API 密钥。:uaa_client_ID: cf:uaa_client_secret: 添加未指定值的 uaa_client_secret 键。

示例 API 输出

{
    "access_token": "<iam_token>",
    "refresh_token": "<iam_refresh_token>",
    "uaa_token": "<uaa_token>",
    "uaa_refresh_token": "<uaa_refresh_token>",
    "token_type": "Bearer",
    "expires_in": 3600,
    "expiration": 1493747503
}

您可以在 access_token 中找到新的 IBM Cloud IAM 令牌,并在 API 输出的 refresh_token 字段中找到刷新令牌。

  1. 使用上一步中的令牌继续使用 IBM Cloud Schematics API 文档