Skip to main content

API

Port'sAPI 是一个通用接口,用于为软件目录建模、摄取数据、调用操作、查询记分卡等。

💡 通用Port API Usage

由于 Port API 是一个通用接口,因此任何可以通过 Port 实现的功能都可以通过 API 实现,例如

  • 被用于脚本更新软件目录;
  • 从 CSV 文件导入现有资产目录;
  • 将 Port 与您自定义的 CI/CD 集成;
  • 报告正在运行的 **CI 作业的状态;
  • 微服务更新有关新构建版本**的软件目录;
  • 从软件目录中获取现有数据。

获取应用程序接口令牌

要与应用程序接口交互,您需要一个应用程序接口令牌。

获取 API 令牌需要两个步骤:

  1. 查找 Port API 证书;
  2. 提出 API 请求以生成有效令牌。

查找您的 Port 凭据

To get your Port API credentials go to your Port application, click on the ... button in the top right corner, and select Credentials. Here you can view and copy your CLIENT_ID and CLIENT_SECRET:

生成应用程序接口令牌

下面是一些代码示例,展示了如何用各种编程语言生成 API 令牌:

# Dependencies to install:
# $ python -m pip install requests

import requests

CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'

API_URL = 'https://api.getport.io/v1'

credentials = {'clientId': CLIENT_ID, 'clientSecret': CLIENT_SECRET}

token_response = requests.post(f'{API_URL}/auth/access_token', json=credentials)

access_token = token_response.json()['accessToken']

# You can now use the value in access_token when making further requests

通过应用程序接口获取数据

由于 Port 以 API 为先,因此可以使用简单的 REST 调用从您使用的任何平台创建和更新实体。

设置

要被用于 Port 的 REST API,您需要执行以下步骤:

  1. 查找您的Port credentials
  2. 将它们保存为 secrets 或以其他相同方式保存,以便在代码或 CI/CD 流程中引用;
  3. 确保你有一个支持 HTTP 的客户端。 1.例如: cURL、使用请求包的 python、使用 fetch/axios 的 nodejs 等。

Usage

由于您直接引用的是 Provider 的 REST API,因此 API 提供的任何方法都可以使用。

我们将重点关注三个具体的被用于案例:

  • 获取目录实体--可通过 HTTP GET 向https://api.getport.io/v1/blueprints/{blueprint_identifier}/entities/{entity_identifier}提出请求,接收现有实体的标识符并将其引用到 CI 中;
  • 创建/更新目录实体--可通过 HTTP POST 向 https://api.getport.io/v1/blueprints/{blueprint_identifier}/entities/ 提出请求,接收新实体或需要更新的实体的标识符和其他属性;
  • 删除目录实体--可通过向 https://api.getport.io/v1/blueprints/{blueprint_identifier}/entities/{entity_identifier} 发送 HTTP DELETE 请求来实现,接收现有实体的标识符并将其删除。
# Dependencies to install:
# $ python -m pip install requests

import requests

CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'

API_URL = 'https://api.getport.io/v1'

credentials = {'clientId': CLIENT_ID, 'clientSecret': CLIENT_SECRET}

token_response = requests.post(f'{API_URL}/auth/access_token', json=credentials)

access_token = token_response.json()['accessToken']

# You can now use the value in access_token when making further requests

headers = {
'Authorization': f'Bearer {access_token}'
}

blueprint_id = 'MY_BLUEPRINT'
entity_id = 'MY_ENTITY_IDENTIFIER'

response = requests.get(f'{API_URL}/blueprints/{blueprint_id}/entities/{entity_id}', headers=headers)

# response.json() contains the content of the resulting entity