Packages API
The packages API endpoint lets you create and manage packages in a registry.
Publish a package
The following type of curl
syntax for publishing to registries will work across all package ecosystems supported by Buildkite Package Registries, with the file
form-field modified accordingly.
curl -H "Authorization: Bearer $TOKEN" \
-X POST "https://api.buildkite.com/v2/packages/organizations/{org.slug}/registries/{registry.slug}/packages" \
-F 'file=@path/to/debian/package/banana_1.1-2_amd64.deb
However, this type of REST API call is just recommended for:
- Alpine (apk) packages
- Debian/Ubuntu (deb) packages
- Files (generic)
- Helm (Standard) charts
- Python (PyPI) packages
- Red Hat (RPM) packages
- Terraform modules
For other supported package ecosystems, it is recommended that you use their native tools to publish to registries in your Buildkite Package Registries organization. These ecosystems' native tools are for:
- Container (Docker) images
- Helm (OCI) charts
- Java (Maven or Gradle) packages
- JavaScript (npm) packages
- Ruby (RubyGems) packages
The following type of response is returned by Buildkite upon a successful curl
publishing event.
{
"id": "0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"url": "https://api.buildkite.com/v2/packages/organizations/my_great_org/registries/my-registry/packages/0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"web_url": "https://buildkite.com/organizations/my_great_org/packages/registries/my-registry/packages/0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"name": "banana",
"organization": {
"id": "0190e784-eeb7-4ce4-9d2d-87f7aba85433",
"slug": "my_great_org",
"url": "https://api.buildkite.com/v2/organizations/my_great_org",
"web_url": "https://buildkite.com/my_great_org"
},
"registry": {
"id": "0191e238-e0a3-7b0b-bb34-beea0035a39d",
"graphql_id": "UmVnaXN0cnktLS0wMTkxZTIzOC1lMGEzLTdiMGItYmIzNC1iZWVhMDAzNWEzOWQ=",
"slug": "my-registry",
"url": "https://api.buildkite.com/v2/packages/organizations/my_great_org/registries/my-registry",
"web_url": "https://buildkite.com/organizations/my_great_org/packages/registries/my-registry"
}
}
Required request form-field content:
file |
Path to the package. Example: "file=@path/to/debian/package/banana_1.1-2_amd64.deb" . |
---|
Required scope: write_packages
Success response: 200 OK
List all packages
Returns a paginated list of all packages in a registry. Packages are listed in the order they were created (newest first).
curl -H "Authorization: Bearer $TOKEN" \
-X GET "https://api.buildkite.com/v2/packages/organizations/{org.slug}/registries/{registry.slug}/packages"
{
"items": [
{
"id": "0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"url": "https://api.buildkite.com/v2/packages/organizations/my_great_org/registries/my-registry/packages/0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"web_url": "https://buildkite.com/organizations/my_great_org/packages/registries/my-registry/packages/0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"name": "banana",
"created_at": "2024-08-22T06:24:53Z",
"version": "1.0"
},
{
"id": "019178c2-6b08-7d66-a1db-b79b8ba83151",
"url": "https://api.buildkite.com/v2/packages/organizations/my_great_org/registries/my-registry/packages/019178c2-6b08-7d66-a1db-b79b8ba83151",
"web_url": "https://buildkite.com/organizations/my_great_org/packages/registries/my-registry/packages/019178c2-6b08-7d66-a1db-b79b8ba83151",
"name": "grapes",
"created_at": "2024-08-21T06:24:53Z",
"version": "2.8.3"
}
],
"links": {
"self": "https://api.buildkite.localhost/v2/packages/organizations/my_great_org/registries/my-registry/packages",
}
}
Optional query string parameters:
name |
Filters the results by the package name. Example: ?name=banana . |
---|
Required scope: read_packages
Success response: 200 OK
Get a package
Returns the details for a single package.
curl -H "Authorization: Bearer $TOKEN" \
-X GET "https://api.buildkite.com/v2/packages/organizations/{org.slug}/registries/{registry.slug}/packages/{id}"
{
"id": "0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"url": "https://api.buildkite.com/v2/packages/organizations/my_great_org/registries/my-registry/packages/0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"web_url": "https://buildkite.com/organizations/my_great_org/packages/registries/my-registry/packages/0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"name": "banana",
"organization": {
"id": "0190e784-eeb7-4ce4-9d2d-87f7aba85433",
"slug": "my_great_org",
"url": "https://api.buildkite.com/v2/organizations/my_great_org",
"web_url": "https://buildkite.com/my_great_org"
},
"registry": {
"id": "0191e238-e0a3-7b0b-bb34-beea0035a39d",
"graphql_id": "UmVnaXN0cnktLS0wMTkxZTIzOC1lMGEzLTdiMGItYmIzNC1iZWVhMDAzNWEzOWQ=",
"slug": "my-registry",
"url": "https://api.buildkite.com/v2/packages/organizations/my_great_org/registries/my-registry",
"web_url": "https://buildkite.com/organizations/my_great_org/packages/registries/my-registry"
}
}
Required scope: read_packages
Success response: 200 OK
Copy a package
For some supported package ecosystems, copies a package from a source registry to a destination registry.
curl -H "Authorization: Bearer $TOKEN" \
-X POST "https://api.buildkite.com/v2/packages/organizations/{org.slug}/registries/{source_registry.slug}/packages/{package.id}/copy?to={destination_registry.slug}"
-H "Content-Type: application/json"
Currently, this REST API call only supports package types belonging to the following package ecosystems:
- Alpine (apk)
- Debian/Ubuntu (deb)
- Files (generic)
- JavaScript (npm)
- Python (PyPI)
- Red Hat (RPM)
- Ruby (RubyGems)
If you wish this feature to be available for package types belonging to other package ecosystems, please contact support.
The following type of response is returned by Buildkite upon a successful curl
copying event.
{
"id": "0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"url": "https://api.buildkite.com/v2/packages/organizations/my_great_org/registries/my-registry/packages/0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"web_url": "https://buildkite.com/organizations/my_great_org/packages/registries/my-registry/packages/0191e23a-4bc8-7683-bfa4-5f73bc9b7c44",
"name": "banana",
"organization": {
"id": "0190e784-eeb7-4ce4-9d2d-87f7aba85433",
"slug": "my_great_org",
"url": "https://api.buildkite.com/v2/organizations/my_great_org",
"web_url": "https://buildkite.com/my_great_org"
},
"registry": {
"id": "0191e238-e0a3-7b0b-bb34-beea0035a39d",
"graphql_id": "UmVnaXN0cnktLS0wMTkxZTIzOC1lMGEzLTdiMGItYmIzNC1iZWVhMDAzNWEzOWQ=",
"slug": "my-registry",
"url": "https://api.buildkite.com/v2/packages/organizations/my_great_org/registries/my-registry",
"web_url": "https://buildkite.com/organizations/my_great_org/packages/registries/my-registry"
}
}
Required query string parameters:
to |
Destination registry slug. Example: "to=my-registry" . |
---|
Required scopes: read_packages, write_packages
Success response: 200 OK
Delete a package
curl -H "Authorization: Bearer $TOKEN" \
-X DELETE "https://api.buildkite.com/v2/packages/organizations/{org.slug}/registries/{registry.slug}/packages/{id}"
Required scope: delete_packages
Success response: 200 OK