云客户?
免费开始>
在MyJFrog中升级>
云的新功能>







概述

需要Enterprise或Enterprise+ license。

任务控制中心公开了一个丰富的REST API,允许对注册的JFrog平台部署(JPDs)进行完全自动化的管理。

这提供了一个方便且最新的自描述API,各种工具可以使用它来自动化管理和配置操作。

基URL

平台REST URL由:

//api/< api - version >

例如

#使用JFrog URL http://myjfrog.acme.org/mc/api/v1 #使用Artifactory服务器主机名和Artifactory路由器端口http://ARTIFACTORY_SERVER_HOSTNAME:8082/mc/api/v1

一个uthentication

任务控制中心的REST API支持认证类型:

类型 描述
访问令牌

用户必须在授权头中使用访问令牌作为承载令牌。

使用承载令牌进行身份验证的示例:

    1. 在JFrog平台UI中创建一个用于任务控制的管理访问令牌。有关更多信息,请参见生成管理令牌

    2. 运行。

      curl http://localhost:8082/mc/api/v1/jpds -H 'Authorization: Bearer '



使用


任务控制REST API可以用任何标准的REST API方式调用。下面以cURL为例介绍如何使用任务控制REST API。

使用旋度

你可以下载旋度在这里。了解如何使用和配置旋度在这里。
—创建JPD

下面的示例演示如何调用create用户REST API。

  • 你有MissionControl在你的本地JPD中运行

  • 您希望创建另一个JPD,名为“us-west”。

  • 您创建了一个文件,其中的站点参数名为createjpd.json

要使用该文件注册这个新的JPD,您可以使用以下命令:

使用cURL和REST API
$ curl -X POST 'http://localhost:8082/mc/api/v1/jpds' -H '授权:承载' -H '内容类型:application/json;charset=UTF-8' -T createjpd.json
文件创建站点。Json将包含以下内容:
{"name": "US -west", "url": "http://somehost", "token": "xxx", "location": {"city_name": "Sunnyvale", "country_code": "US", "latitude": 37.368830, "longitude": -122.036350}}
页面内容






系统

出口

描述:将任务控制数据导出为使用主密钥加密的JSON文件。
自:4.0
用法:/ api / v1 /系统/备份/出口
生产:文本/平原

返回代码:

加密JSON文件创建于JFROG_HOME美元/var/backup/mc/export.json
导出时出现错误


样本输出

PUT /api/v1/backup/export OK

进口

描述:从使用主密钥加密的JSON文件中导入任务控制数据。
自:4.0
用法:/ api / v1 /系统/备份/导入
生产:文本/平原

返回代码:

204 -成功导入JSON文件JFROG_HOME美元/var/backup/mc/export.json进入数据库
400 - JSON文件格式不正确
500 -导入过程中出现错误


样本输出

PUT /api/v1/backup/import OK

系统健康检查

描述:获得任务控制是否正在运行的指示。不需要身份验证。
自:4.0
用法:GET / api / v1 /系统/平
生产:文本/平原
样本输出

GET /api/v1/system/ping OK



詹妮弗


添加詹妮弗

描述:在任务控制中心增加了一个新的JPD。在4。X时,不再需要注册单个服务。注册JPD后,任务控制中心查询安装在JPD中的所有服务。该列表定期更新,还用于获取安装在JPD中的各个服务的状态。位置信息也与JPD相关联。这将取代以前版本中的站点和服务api。
自:4.0
注:要求工厂企业
安全:需要admin用户
用法:帖子/ mc / api / v1 /詹妮弗年代

返回代码:

2011 -创建
400 -日志含义连接JPD失败。请核实所提供的JPD信息是否正确
409 -与现有的JPD (URL,名称)冲突

消耗:application / json


{+ "name": "",+ "url": "", // JPD基础url + "token": "", // JPD连接键+ "location": {+ "city_name": "<城市名称>",+ "country_code": "<国家代码>",+ "latitude": < latitude >, + "longitude": < longitude >}, - "tags": ["", ""]}



+ =强制性;- =可选

示例使用


POST /api/v1/jpds {"name": "dev-west", "url": "https://artifactory-west.acme.com", "token": "", "location": {"city_name": "San Francisco", "country_code": "US", "latitude": 37.7749, "longitude": 122.4194}, "tags": ["prod", "dev"]}

添加遗留JPD (Artifactory 6.x)

POST /api/v1/jpds {+ "name": "", + "url": "", // JPD基础url + "username": "", + "password": "", + "location": {+ "city_name": "<城市名称>",+ "country_code": "<国家代码>",+ "latitude": < latitude >, + "longitude": < longitude >}, - "tags": ["", ""]}


更新詹妮弗


描述:更新JPD给出它的id。

自:4.0
注:要求工厂企业
安全:需要admin用户
用法:把/ mc / api / v1 /詹妮弗/ {id}

返回代码:

204 -无内容
400 -日志含义连接JPD失败。请核实所提供的JPD信息是否正确
409 -与现有的JPD (URL,名称)冲突
消耗:application / json


{+ "name": "",+ "url": "", // JPD基础url - "token": "", // JPD连接键+ "location": {+ "city_name": "<城市名称>",+ "country_code": "<国家代码>",+ "latitude": < latitude >, + "longitude": < longitude >}, - "tags": ["", ""]}

+ =强制性;- =可选


示例使用

把/ api / v1 /詹妮弗JPD-3{“名称”:“new_name”,“url”:“http://new-jpd-url: 8080 /詹妮弗。test", "location" : { "city_name" : "Toulouse", "country_code" : "FR", "latitude" : 43.6043, "longitude" : 1.4437 } }

获取JPD列表

描述:获取所有jpd的列表,可根据标签、名称、url或状态过滤它们。这些过滤器可以包含通配符*。

自:4.0
注:要求工厂企业
安全:需要admin用户
用法:GET / mc / api / v1 /詹妮弗?[name = {some_name}][标签= {some_tag}] [url = {some_url}][&地位={在线|离线部分| |未经授权}]
生产:application / json
返回代码:
200 -成功


示例用法:

GET /api/v1/jpds [{"id": "JPD-1", "licenses": [{"expired": false, "license_hash": "2c2ef96d8a90ea2bb91287258dc8ab72a6b0f749", "licensed_to": "m.si-fil.com", "type": "ENTERPRISE_PLUS_TRIAL", "valid_through": "2020-02-14"}], "location": {"city_name": "Nuuk", "country_code": "GL", "latitude": 64.18347, "longitude": -51.72157}, "name": "HOME", "services": [{"status": {"code": "ONLINE"}, "type": "ARTIFACTORY"}, {"status": {"code": "ONLINE"}, "type": "JFMC"}], "status": {"code": "ONLINE"}, "type": "JFMC"}], "status": {"code": "ONLINE"}。“在线”、“消息”:“所有服务在线”、“警告 ": [] }, " 标签:[],“url”:“http://jpd。本地/"}]

通过id获取JPD

描述:获取给定id的JPD

自:4.0
注:要求工厂企业

安全:需要admin用户
用法:/mc/api/v1/jpds/{id}

消耗:application / json

返回代码:
200 -成功

例子:


示例用法:

GET /api/v1/jpds/JPD-1 {"id": "JPD-1", "licenses": [{"expired": false, "license_hash": "2c2ef96d8a90ea2bb91287258dc8ab72a6b0f749", "licensed_to": "m.si-fil.com", "type": "ENTERPRISE_PLUS_TRIAL", "valid_through": "2020-02-14"}], "location": {"city_name": "Nuuk", "country_code": "GL", "latitude": 64.18347, "longitude": -51.72157}, "name": "HOME", "services": [{"status": {"code": "ONLINE"}, "type": "ARTIFACTORY"}, {"status": {"code": "ONLINE"}, "type": "JFMC"}], "status": {"code": "ONLINE"}, "type": "JFMC"}], "status": {"code": "ONLINE"}, "status": {"code": "ONLINE"}, "type": "JFMC"}], "status": {"code": "ONLINE"}, "status": {"code": "ONLINE"}, "status": {"code": "ONLINE"}, "status": {"code": "ONLINE"}, "status": {"code": "ONLINE"}, "status": {"code": "ONLINE"}, "status": {"code": "code": "code": "code": "code": "JFMC"}], "status": {"code": "code":“在线”、“消息”:“所有服务在线”、“警告 ": [] }, " 标签:[],“url”:“http://jpd。本地/ "}



删除詹妮弗

描述:从任务控制中移除JPD

自:4.0
注:要求工厂企业
安全:需要admin用户
用法:删除/ mc / api / v1 /詹妮弗/ {id}
返回代码:

200 -成功
204 -无内容
404 -未找到

示例用法:

删除/ api / v1 /詹妮弗/詹妮弗- 321

访问联合会

获取单个jpa的访问联合配置

描述:获取特定jpa的Access Federation配置。返回为提供的JPD配置的Federation目标。

自:4.0
注:

  • 需要Artifactory Enterprise+
  • 覆盖接入配置文件中Access Federation的手动配置。

安全:需要admin用户

用法:GET /mc/api/v1/federation/{JPD ID}
返回代码:

200 -成功
JPD不是有效的Access Federation候选者。
404 -没有找到JPD。
消耗:application / json

示例用法:

GET /api/v1/mc/api/v1/federation/JPD-1 {"entities": ["GROUPS", "USERS"], "targets": [{"name": "JFP-2", "code": "access2JPDId", "url": "http://localhost:37837/access"}]}



获取所有jpd的访问联邦配置

描述:获取所有jpd的Access Federation配置。

自:4.0
注:需要Artifactory Enterprise+
安全:需要admin用户

用法:GET / mc / api / v1 /詹妮弗/联盟吗?includeNonConfiguredJPDs = false
返回代码:

200 -成功

生产:application / json


示例用法:

GET / api / v1 / mc / api / v1 /联盟吗?include_non_configured=false [{"source": "artifactory1", "entities": ["GROUPS", "USERS"], "targets": [{"name": "JPD-2", "code": "access2JPDId", "url": "url2"}]}]


在JPD上配置Access Federation

描述:为特定的jpa配置Access Federation。作为先决条件,源和目标必须基于Access Federation正确配置
自:4.0
注:需要Artifactory Enterprise+
安全:需要admin用户
用法:PUT /mc/api/v1/federation/{JPD ID}

返回代码:
200 -成功
400,422 -无效的输入
404 - JPD未找到或没有工件


示例用法:

PUT /api/v1/federation/ {"entities": ["USERS", "GROUPS"], "targets": [{"name": "artifactory2", "url": "http://localhost:8080/access"}]}

样品反应:

[{"label": "获取artifactory1的配置","status": "OK"}, {"label": "从artifactory1获取访问令牌","status": "OK"}, {"label": "检查artifactory2是否信任artifactory1", "status": "OK"}, {"label": "将配置发送给artifactory1", "status": "OK"}, {"label": "将目标artifactory2添加到artifactory1", "status": "OK"}]

获取访问联盟候选人

描述:获取Access Federation候选项。
自:4.0
注:需要Artifactory Enterprise+
安全:需要admin用户
用法:GET / mc / api / v1 /联盟的候选人
返回代码:
200 -成功

示例用法:

GET / api / v1 / mc / api / v1 /联合会/候选人



创建网格

描述:创建一个网格拓扑。作为先决条件,源和目标必须基于Access Federation正确配置

自:4.0
注:需要Artifactory Enterprise+
安全:需要admin用户
用法:POST / mc / api / v1 /联合会/ create_mesh
返回代码:

200 -成功
400,422 -无效的输入
404 - JPD未找到或没有工件

请求示例:

POST /api/v1/federation/create_mesh {"jpd_ids": ["JPD-12", "JPD-13"], "entities": ["USERS", "GROUPS", "PERMISSIONS", "TOKENS"]}

反应的例子:

[{"label": " success ", "status": "OK"}]


支持

创建支持包

描述:创建一个新的支持包。
自:4.0
安全:需要admin用户
笔记:所有包项都是可选的。
使用: POST /mc/api/v1/system/support/bundle

返回代码:
202 -支持包正在创建中,很快就会发布
400 -无效的选项值
403 -未经授权

示例使用

POST /api/v1/system/support/bundle {"name": "JFMC support bundle", "description": " support bundle generated because of issue with XYZ", "parameters": {"configuration": true, "system": true, "thread_dump": {"count": 1, "interval": 0}, "logs": {"include": true, "start_date": "2018-12-25", "end_date": "2019-01-07"}}

示例输出:

HTTP/1.1 202接受内容-类型:application/json服务器:mission-control/SNAPSHOT严格- transport - security: max-age=31536000;inclesubdomains Content-Length: 247 {"id": "SUPP20180912154413548991", "artifactory": {"service_id": "jfrt@4754684682741", "bundle_url": "http://artifactory.m.si-fil.com/artifactory/jfrog-support-bundle/SUPP20180912154413548991/jfmc/test_JPD}}

获取支持包列表

描述:获取可用的支持包列表。
自:4.0
安全:需要admin用户
使用: GET /mc/api/v1/system/support/bundles

返回代码:
200 -成功
403 -未经授权


示例用法:

GET / mc / api / v1 /系统/支持/包{“计数”:2,“包”:[{“名称”:“一”,“描述”:“aaa级”、“id”:“1”,“创建”:“2018 - 10 - 01 - t09:50:11z”},{“名称”:“B”、“id”:“2”,“创建”:“2018 - 10 - 01 - t09:50:11z”}]}



获取支持包的详细信息

描述:获取特定支持包的详细信息。
自:4.0
安全:需要admin用户
使用: GET /mc/api/v1/system/support/bundle/{id}

返回代码:
200 -成功
403 -未经授权
404 -提供的ID没有指向现有的支持包


示例用法:


GET / mc / api / v1 /系统/支持/包/ SUPP20180912154413548991{“名称”:“问题# 1234”,“描述”:“支持包创建的问题# 1234调查”、“artifactory”:{“service_id”:“jfrt@4754684682741”、“bundle_url”:“http://artifactory.m.si-fil.com/artifactory/jfrog-admin-supportbundle/SUPP20180912154413548991/jfmc/01c7b8rg70nrqr1cck7k4x0yp7”},“参数”:{“配置”:真的,“系统”:真的,“日志”:{“包括”:真的,“start_date”:“2018-09-30”,“end_date”:"2018-10-01"}, "thread_dump": {"count":1, "interval": 0}}, "available":5, "created": "2018-10-01 t09:50:10 z "}



下载支持包

描述:以ZIP文件的形式下载支持包。
自:4.0
安全:需要admin用户。您需要在Artifactory上启用“下载文件夹”权限。
使用: GET /mc/api/v1/system/support/bundle/{id}/archive

返回代码:
200 -成功
403 -未授权(可能是“下载文件夹”选项未在身份验证提供程序工件上启用)
404 -提供的ID没有引用现有的支持包,或者无法在身份验证提供程序人工存储库中找到ZIP

示例用法:

GET / mc / api / v1 /系统/支持/包/ SUPP20180912154413548991 /存档



删除支持包

描述删除支持包,以及Artifactory中的ZIP文件。
自:4.0
安全:需要admin用户
使用命令:DELETE /mc/api/v1/system/support/bundle/{id}

返回代码:
204 -成功
403 -未经授权
404 -提供的ID没有指向现有的支持包

示例用法:


删除/ mc / api / v1 /系统/支持/包/ SUPP20180912154413548991


许可证桶



把水桶


描述:检索系统中所有的license桶。
自:4.0
注:要求工厂企业
安全:需要admin用户
用法:得到/ mc / api / v1 /桶

返回代码:

200 -成功
生产:application / json
样品反应:


[{"identifier": "<桶id>", "name": "<桶名>","size": <桶内license数>,"license_type": ""}]

示例用法:

GET /mc/api/v1/buckets [{"id": "12345", "name": "bucket-test-1", "size": 10, "license_type": "ENTERPRISE"}, {"id": "1234567", "name": "bucket-test-2", "size": 5, "license_type": "EDGE"}]




创建桶


描述:创建一个新的License Bucket。
自:4.0
注:要求工厂企业
安全:需要admin用户
用法:POST / mc / api / v1 /桶

返回代码:

2011 -创建
409 -名称“<桶名>”已经存在
409 - Url“<桶Url >”已经存在

消耗:application / json

示例用法:


POST /api/v1/buckets {"name": "main-bucket", "url": "https://bintray.m.si-fil.com/license-buckets/test_m.si-fil.com/12345678/12345678.json?expiry=1528199600307&id=ABCDEFGhiJkLmNoPQR", "key": "16629dbf7fefc9d179b36ba005685c2dd8376aad3278178e735da1633c6bd3c6"}


样品反应:


{"subject": "JFrog", "product_name": "Artifactory", "product_id": 6, "license_type": "HA", "issued_date": "2018-04-12T16:02:55.549+03:00", "valid_date": "2019-04-12T16:02:54.759+03:00", "quantity": 10, "signature": "06307c34405e6ab70c5d249a7ba7cffd81947d5f", "name": "main-bucket", "used":0, "url": "https://bintray.m.si-fil.com/license-buckets/test_m.si-fil.com/12345678/12345678.json?expiry=1528199600307&id=ABCDEFGhiJkLmNoPQR"}

上传桶

描述:上传并创建新的License Bucket。
自:4.0
注:要求工厂企业
安全:需要admin用户
用法:POST / mc / api / v1 /桶
内容类型:多部分/格式

返回代码:
2011 -创建
400 -您的桶文件无法使用。请验证文件是否正确,密钥是否有效。
409 -名称“<桶名>”已经存在

消耗:application / json

name |任务控制文件中的桶名|桶文件路径key |解密桶使用的密钥

生产:application / json

示例用法:

curl -X POST 'http://localhost:8082/mc/api/v1/buckets' -H 'Authorization: Bearer ' -H 'Content-Type: multipart/form-data' -F 'file=@/tmp/728939433.json;type=application/ ocet -stream' -F 'key=d18fc5bc05dc3b6419ab6cd127f16cf6b57d7650ea0ef03cde130918f6f25487' -F 'name=mybucket'

样品反应:

{"subject": "JFrog", "product_name": "Artifactory", "product_id": 6, "license_type": "HA", "issued_date": "2016-04-12T16:02:55.549+03:00", "valid_date": "2017-04-12T16:02:54.759+03:00", "quantity": 10, "identifier": "bucket-test-1", "signature": "06307c34405e6ab70c5d249a7ba7cffd81947d5f", "name": "Test-bucket-name", "used":0}

删除桶

描述:删除桶。
自:4.0
注:要求工厂企业
安全:需要admin用户
用法:删除/ mc / api / v1 /桶/{名称}
返回代码:204 -成功

示例用法:


DELETE /api/v1/buckets/main-bucket 204无内容

获取桶状态

描述:获取指定桶的报告。
自:4.0
注:要求工厂企业
安全:需要admin用户
用法:GET / api / v1 /桶/{标识符}/报告
生产:application / json

响应格式:

{"identifier": "<桶ID>", "name": "<桶名>","size": "<桶中的许可证总数>","valid_through": "<有效期到日期>","issued": "<签发日期>","type": "<许可证类型>","licenses": {"used": "<正在使用的许可证数量>","available": "<可用的许可证数量>","max_used": "<曾经同时使用的最大许可证数量>"},"jpds": [{"name": "","license_count":"<此JPD使用的许可证数量>"}],"split_buckets": [{"name": "<分割桶名称>","identifier": "<分割桶标识符>","issued": "<发行日期>","license_count": "<许可证数量>"}],"unknown_uses": [{"name": "<未知用法的自由标签>","license_count": "<使用的许可证数量>"}],"pipelines": {"execution_nodes": "<管道的执行节点数量>"}}

返回代码:

200 -成功

示例用法:


示例输出
GET /api/v1/buckets/415921223/report {"identifier": "266200796", "name": "edge-bucket", "size": 10, "valid_through": "2020-02-14T00:00:00.000Z", " published ": "2019-02-14T14:27:29.584Z", "type": "EDGE_TRIAL", "licenses": {"used": 0, "available": 10, "max_used": 0}}



附加许可


描述:将桶中的许可证附加到指定的JPD。
自:4.0
注:需要人工企业。要申请Artifactory Pro的许可,请使用Artifactory API
安全:需要admin用户
用法:POST / mc / api / v1 /桶/{名称}/部署
消耗:application / json


生产:application / json
返回代码:

200 -成功

未找到id 的JPD。

500 - "无法从桶部署许可证到"

示例用法:


attachlicense.json
POST /api/v1/buckets/mybucket/deploy {"jpd_id": "JPD-12", "license_count": 1}


样品反应:


示例输出
{"success": true, "message": "从bucket bucket-test-1分配1个license给JPD-12."}


获得许可证

描述:从桶中获取一个或多个许可证并返回它或它们。这些许可证在桶报告的“未知用法”部分下被标记为已使用。
自:4.0
注:要求工厂企业
安全:需要admin用户
用法:POST / mc / api / v1 /桶/{名称}/收购
消耗:application / json

{"name": "<一个免费的文本标签>","license_count": <需要获得的许可证数量>}

生产:application / json
返回代码:

200 -成功

没有找到标识符为“<不存在的桶Id>”的实体“LicenseBucket”。

示例用法:

acquirelicense.json
POST /api/v1/buckets/mybucket/acquire {"name": "team-A-license", "license_count": 1}


样品反应:


示例输出
{"license_keys": [""]}


发布许可证

描述:给定“获取”调用之前使用的JPD id或标签,从桶中释放许可证。
自:4.0
注:要求工厂企业
安全:需要admin用户
用法:POST / mc / api / v1 /桶/{名称}/释放
消耗:application / json

{"name": "< JPD id或自由文本标签>"}

生产:application / json
返回代码:

204 -无内容
没有找到标识符为“<不存在的桶Id>”的实体“LicenseBucket”。
409 -“Jpd必须离线才能分离其许可证”
409 -“没有许可释放桶:<桶id>,实例名:

示例用法:

acquirelicense.json
POST /api/v1/buckets/mybucket/release {"name": "team-A-license"}



  • 没有标签
版权所有©2023 JFrog Ltd.