Composer API

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: JihuLab.com, 私有化部署

这是Composer 软件包的 API 文档。

此 API 由 Composer 软件包管理器客户端使用,通常不用于手动使用。

有关如何从极狐GitLab软件包注册表上传和安装 Composer 软件包的说明,请参阅 Composer 软件包注册表文档

这些端点不遵循标准的 API 身份验证方法。有关支持的头和令牌类型的详细信息,请参阅 [Composer 软件包注册表文档](../../user/packages/composer_repository/_index.md)。未记录的身份验证方法可能在未来被移除。

基础库请求#

返回用于请求单个软件包的库 URL 模板:

plaintext
GET group/:id/-/packages/composer/packages
属性类型必需描述
idstringyes群组的 ID 或完整路径。
shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/packages"

示例响应:

json
1{ 2 "packages": [], 3 "metadata-url": "/api/v4/group/1/-/packages/composer/p2/%package%.json", 4 "provider-includes": { 5 "p/%hash%.json": { 6 "sha256": "082df4a5035f8725a12i4a3d2da5e6aaa966d06843d0a5c6d499313810427bd6" 7 } 8 }, 9 "providers-url": "/api/v4/group/1/-/packages/composer/%package%$%hash%.json" 10}

此端点由 Composer V1 和 V2 使用。要查看 V2 特定的响应,请包含 Composer User-Agent 头。推荐使用 Composer V2 而不是 V1。

shell
curl --user <username>:<personal_access_token> \ --header "User-Agent: Composer/2" \ "https://gitlab.example.com/api/v4/group/1/-/packages/composer/packages"

示例响应:

json
{ "packages": [], "metadata-url": "/api/v4/group/1/-/packages/composer/p2/%package%.json" }

V1 软件包列表#

给定 V1 提供者 SHA,返回库中的软件包列表。推荐使用 Composer V2 而不是 V1。

plaintext
GET group/:id/-/packages/composer/p/:sha
属性类型必需描述
idstringyes群组的 ID 或完整路径。
shastringyes由 Composer 基础请求 提供的提供者 SHA。
shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/p/082df4a5035f8725a12i4a3d2da5e6aaa966d06843d0a5c6d499313810427bd6"

示例响应:

json
1{ 2 "providers": { 3 "my-org/my-composer-package": { 4 "sha256": "5c873497cdaa82eda35af5de24b789be92dfb6510baf117c42f03899c166b6e7" 5 } 6 } 7}

V1 软件包元数据#

返回给定软件包的版本和元数据列表。推荐使用 Composer V2 而不是 V1。

plaintext
GET group/:id/-/packages/composer/:package_name$:sha

注意 URL 中的 $ 符号。发起请求时,您可能需要该符号的 URL 编码版本 %24。请参阅表格后的示例:

属性类型必需描述
idstringyes群组的 ID 或完整路径。
package_namestringyes软件包的名称。
shastringyesV1 软件包列表 提供的软件包的 SHA 摘要。
shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/my-org/my-composer-package%245c873497cdaa82eda35af5de24b789be92dfb6510baf117c42f03899c166b6e7"

示例响应:

json
1{ 2 "packages": { 3 "my-org/my-composer-package": { 4 "1.0.0": { 5 "name": "my-org/my-composer-package", 6 "type": "library", 7 "license": "GPL-3.0-only", 8 "version": "1.0.0", 9 "dist": { 10 "type": "zip", 11 "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab", 12 "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab", 13 "shasum": "" 14 }, 15 "source": { 16 "type": "git", 17 "url": "https://gitlab.example.com/my-org/my-composer-package.git", 18 "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab" 19 }, 20 "uid": 1234567 21 }, 22 "2.0.0": { 23 "name": "my-org/my-composer-package", 24 "type": "library", 25 "license": "GPL-3.0-only", 26 "version": "2.0.0", 27 "dist": { 28 "type": "zip", 29 "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=445394f85a55fe3c0eb45df7bd2fa9d95a1601ab", 30 "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab", 31 "shasum": "" 32 }, 33 "source": { 34 "type": "git", 35 "url": "https://gitlab.example.com/my-org/my-composer-package.git", 36 "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab" 37 }, 38 "uid": 1234567 39 } 40 } 41 } 42}

V2 软件包元数据#

返回给定软件包的版本和元数据列表:

plaintext
GET group/:id/-/packages/composer/p2/:package_name
属性类型必需描述
idstringyes群组的 ID 或完整路径。
package_namestringyes软件包的名称。
shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/p2/my-org/my-composer-package"

示例响应:

json
1{ 2 "packages": { 3 "my-org/my-composer-package": { 4 "1.0.0": { 5 "name": "my-org/my-composer-package", 6 "type": "library", 7 "license": "GPL-3.0-only", 8 "version": "1.0.0", 9 "dist": { 10 "type": "zip", 11 "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab", 12 "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab", 13 "shasum": "" 14 }, 15 "source": { 16 "type": "git", 17 "url": "https://gitlab.example.com/my-org/my-composer-package.git", 18 "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab" 19 }, 20 "uid": 1234567 21 }, 22 "2.0.0": { 23 "name": "my-org/my-composer-package", 24 "type": "library", 25 "license": "GPL-3.0-only", 26 "version": "2.0.0", 27 "dist": { 28 "type": "zip", 29 "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=445394f85a55fe3c0eb45df7bd2fa9d95a1601ab", 30 "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab", 31 "shasum": "" 32 }, 33 "source": { 34 "type": "git", 35 "url": "https://gitlab.example.com/my-org/my-composer-package.git", 36 "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab" 37 }, 38 "uid": 1234567 39 } 40 } 41 } 42}

创建软件包#

从 Git 标签或分支创建 Composer 软件包:

plaintext
POST projects/:id/packages/composer
属性类型必需描述
idstringyes群组的 ID 或完整路径。
tagstringno要作为软件包目标的标签名称。
branchstringno要作为软件包目标的分支名称。
shell
curl --request POST --user <username>:<personal_access_token> \ --data tag=v1.0.0 "https://gitlab.example.com/api/v4/projects/1/packages/composer"

示例响应:

json
{ "message": "201 Created" }

下载软件包归档#

下载 Composer 软件包。此 URL 在 v1v2 软件包元数据 响应中提供。请求中必须包含 .zip 文件扩展名。

plaintext
GET projects/:id/packages/composer/archives/:package_name
属性类型必需描述
idstringyes群组的 ID 或完整路径。
package_namestringyes软件包的名称。
shastringyes请求的软件包版本的目标 SHA。
shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab"

将输出写入文件:

shell
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab" >> package.tar.gz

这会将下载的文件写入当前目录中的 package.tar.gz