API Docs

REST API for automation of common tasks for debian, rpm, rubygems, and python packages.

Getting Started

Important Info

Before getting started there are a handful of important things to know:

  1. All API requests must be made over HTTPS. There is no plain-text HTTP support.
  2. Most API requests are authenticated using an API token. API tokens are supplied to the API via HTTP basic authentication. Provide your API token as the username and leave the password empty. The APIs which are not authenicated in this way will be marked explicitly as so below.
  3. The API is versioned. This document describes v1 and the URLs start with https://packagecloud.io/api/v1/.
  4. If you have any questions or need help, email us.

HTTP Response Codes

HTTP Response codes returned by the API:

  • 200 OK
    An API request was successfully processed.
  • 201 Created
    An API request was successfully processed and a new resource was created.
  • 401 Unauthorized
    The username and password are incorrect or when the API token used for a request is invalid.
  • 404 Not Found
    The specified API resource was not found.
  • 422 Unprocessable Entity
    A parameter to the API was provided but was unexpected, malformed, not supported, or otherwise invalid. The response will be a JSON object mapping the erroneous field name to error message(s).

Error responses have a JSON body with a human readable string with a more detailed error explanation.

API Client Libraries

Our client libraries are open sourced on our GitHub account. We gladly accept pull requests and appreciate any issues being filed against the GitHub repositories.

Ruby

https://github.com/computology/packagecloud-ruby

Java

https://github.com/computology/io.packagecloud.client

Go

https://github.com/mlafeldt/pkgcloud

https://github.com/edwarnicke/pkgcloud

Other

We're always working on providing API client libraries for other programming languages. If you use a language other than Ruby or Java and need an API client library, we'd love to hear from you! Please email us and let us know.

Pagination

Any endpoint returning a list of things (like the Search, Versions and Packages API) uses the following headers for pagination information:

  • Link: Links for the next, previous and last page, according to the proposed RFC-5988 standard for Web linking. Example:
    Link:
         <https://packagecloud.io/api/v1/repos/julio/test/packages.json?page=5>; rel="last",
         <https://packagecloud.io/api/v1/repos/julio/test/packages.json?page=2>; rel="next"

  • Total: How many items exist in the total collection.
  • Per-Page: How many items are rendered in this response.
  • Max-Per-Page: Maximum number of items that can be returned per page.

Note: pass a ?per_page parameter to restrict how many items are returned per page. Default is 30. Any per_page parameter greater than Max-Per-Page will be ignored and the maximum set of items allowed per page will be returned instead.

API Tokens


In order to interact with the API, you will need to first obtain your access token. If you login, your token will appear on this page.

All API requests must contain a valid API token in the username field of HTTP basic authentication. For example, a request to the distributions endpoint would look like this:

curl https://somevalidapitoken:@packagecloud.io/api/v1/distributions

A request with a missing or invalid API token will result in a 401 Unauthorized response.

This token can also be retrieved programmatically via an API request which must be authenticated with your the email address and password associated with your packagecloud account.

To retrieve your token programmatically, you can make the following API call:

GET https://email:password@packagecloud.io/api/v1/token.json

An example CURL request:

curl "https://hi%40hi.com:Asdd45VvaarT4591@packagecloud.io/api/v1/token.json"

Parameters:

  • email must be your packagecloud account email address.
  • password must be your packagecloud password

Be sure to URL encode your username and password.

Responses

If successful, you will receive 200 OK response and the response body will be JSON hash mapping the key token to your API token.

An example response:

{"token":"f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0"}

You will use this API token for making all other API requests.

If unsuccessful, you will receive 401 Unauthorized and the error response body will be a JSON hash containing the key error whose value is a string describing the error in more detail.

An example error response:

{"error":"Unauthenticated"}

distributions

index

GET /api/v1/distributions

Response:

Hash<String, Distribution> The response will be a JSON hash with the keys "deb", "dsc", and "rpm" whose values will be an array of hashes describing each distribution. This distribution hash will have an key called "versions" whose value is an array of JSON hashes describing each version of a particular Linux distribution which supports the package type.

Example request(s):

curl https://packagecloud.io/api/v1/distributions.json

Example response:

{
  "deb": [
      {
          "display_name": "Ubuntu",
          "index_name": "ubuntu",
          "versions": [
              {
                  "id": 4,
                  "display_name": "5.10 Breezy Badger",
                  "index_name": "breezy"
              },
              {
                  "id": 5,
                  "display_name": "6.06 LTS Dapper Drake",
                  "index_name": "dapper"
              },
              {
                  "id": 6,
                  "display_name": "6.10 Edgy Eft",
                  "index_name": "edgy"
              },
          ]
      },
      {
          "display_name": "Debian",
          "index_name": "debian",
          "versions": [
              {
                  "id": 22,
                  "display_name": "4.0 etch",
                  "index_name": "etch"
              },
              ...
          ]
       },
    ...
  ]
}

gpg_keys

index

List gpg keys for a repository.

GET /api/v1/repos/:user_id/:repo/gpg_keys.json

Response:

Array<GPGKey> An array of GPG key objects that belong to this repository.

Example request(s):

curl https://packagecloud.io/api/v1/repos/username/reponame/gpg_keys.json

Example response:

< HTTP/1.1 200 OK
{
  "gpg_keys" : [
     {
        "self" : "/api/v1/repos/username/reponame/gpg_keys/username-reponame-85D7FBF915DFCBC6.pub.gpg.json",
        "download_url" : "https://packagecloud.io/username/reponame/gpgkey/username-reopname-85D7FBF915DFCBC6.pub.gpg",
        "keytype" : "repo",
        "destroy_url" : "/api/v1/repos/username/reponame/gpg_keys/username-reponame-85D7FBF915DFCBC6.pub.gpg.json",
        "fingerprint" : "26F67F3E5E89BB30DCD7AC6E85D7FBF915DFCBC6",
        "name" : "username-reponame-85D7FBF915DFCBC6.pub.gpg"
     }
  ]
}

create

Create a GPG key.

POST /api/v1/repos/:user_id/:repo/gpg_keys.json

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.
  • gpg_key[keydata] String The GPG key file to use when creating a key.

Response:

GPGKey The newly created GPG key object.

Example request(s):

curl -X POST -F "gpg_key[keydata]=@/path/to/key.gpg" https://packagecloud.io/api/v1/repos/username/reponame/gpg_keys.json

Example response:

{
   "self" : "/api/v1/repos/username/reponame/gpg_keys/username-reopname-85D7FBF915DFCBC6.pub.gpg.json",
   "download_url" : "https://packagecloud.io/username/reponame/gpgkey/username-reopname-85D7FBF915DFCBC6.pub.gpg",
   "fingerprint" : "26F67F3E5E89BB30DCD7AC6E85D7FBF915DFCBC6",
   "keytype" : "package",
   "name" : "username-reponame-85D7FBF915DFCBC6.pub.gpg",
   "destroy_url" : "/api/v1/repos/username/reponame/gpg_keys/username-reponame-85D7FBF915DFCBC6.pub.gpg.json"
}

destroy

Destroy a GPG key

DELETE /api/v1/repos/:user_id/:repo/gpg_keys/:keyname.json

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.
  • :keyname String The GPG Key keyname to delete

Example request(s):

curl -X DELETE https://packagecloud.io/api/v1/repos/username/reponame/gpg_keys/username-reponame-85D7FBF915DFCBC6.pub.gpg.json

Example response:

< HTTP/1.1 204 OK

show

View a single GPG Key

GET /api/v1/repos/:user_id/:repo/gpg_keys/:keyname.json

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.
  • :keyname String The GPG Key keyname.

Response:

<GPGKey> The GPG Key object representing the requested key.

Example request(s):

curl -X GET https://packagecloud.io/api/v1/repos/username/reponame/gpg_keys/username-reponame-85D7FBF915DFCBC6.pub.gpg.json

Example response:

< HTTP/1.1 200 OK
{
   "self" : "/api/v1/repos/username/reponame/gpg_keys/username-reopname-85D7FBF915DFCBC6.pub.gpg.json",
   "download_url" : "https://packagecloud.io/username/reponame/gpgkey/username-reopname-85D7FBF915DFCBC6.pub.gpg",
   "fingerprint" : "26F67F3E5E89BB30DCD7AC6E85D7FBF915DFCBC6",
   "keytype" : "package",
   "name" : "username-reponame-85D7FBF915DFCBC6.pub.gpg",
   "destroy_url" : "/api/v1/repos/username/reponame/gpg_keys/username-reponame-85D7FBF915DFCBC6.pub.gpg.json"
}

licenses

index

STILL IN USE BY GITLAB Retrieve a packagecloud:enterprise license file and GPG signature. Signature can be verified with the packagecloud GPG key: https://packagecloud.io/gpg.key.

GET /api/v1/licenses/:license_key/license.json

URL Params:

  • :license_key String The packagecloud:enterprise license key

Response:

Hash JSON hash containing the license data and GPG signature

Example request(s):

curl https://packagecloud.io/api/v1/licenses/aabbccddeeffaa/license.json

Example response:

< HTTP/1.0 200 OK
{
  "license": "---\n:company_name: company-2\n:company_domain:
  www.domain2.com\n:user_email: joe3@joe.com\n:user_max:
  -1\n:repository_max: -1\n:token_max: -1\n:apt: true\n:yum:
  true\n:rubygem: true\n:start_date: \n:end_date: \n",
  "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG
      v1.4.11
      (GNU/Linux)\n\niQIcBAABAgAGBQJU2DiPAAoJEB/spSUmciijLT4P/0PFZSJigrm8vzEM6xmfo2OD\neS16BgN/neF0UGAoysMmfO0bTETk9l4ow4xn2eKLLQ7h0aXYoX7Rz/GD/YKu67UQ\nHor8j61jabFVHBwiZjWQsmQfoJRFkAW4eG1bAfTy/PeUpVt9crYv/IMe7cLCk/Ki\nQlRZuj/uoAHSMZsl1zsr1gGHCGoEaX3sVwtmYOsn7GvyJ+MnYqNET4qGV9WXxSCj\nwNC2IjPH6KBcUZO6YZ6hUW3wCwxtRKIaq+H6qtVPpQbMYvPRKax1h8jEbzl1NqmL\n6YyAu/Xuf80JZQ19cW6SswaU8eSxpCWdfC8Pnx3ocpQMVnzNhJp/vbSJUKSsLO2V\nGhBW0nPBLJ4LWvt3mqtnrpNntyt5NHNJSMXc8ODEiLMd9oxn68g7yWmKqH28yD2n\nOEG4IhvTg+NruO1tRr5ENGeqR/SsagFbH0qNpTInaYVq/OJj34+9nPO7Br09698D\nWPjvkfoiScyz9k8wH8vpA524ckL1+WMEfpf/84nmwlFUOJR7L7J5jE5UVDkk3px1\nmcZeOlsiNUSK5nn3UURtSxnwF87t7FyJPcTiK78ZqHPje1JTv78y0ZZnyrRNa7D4\n/m5TSCwHwu150ioPHAUXzUwzj1Rx/DVOEUscqtau62usirjmjU3eJkWUXS37tOwt\nMk1Bmnzaij2d8LglcvYV\n=ZmwX\n-----END PGP SIGNATURE-----\n"
}

master_tokens

index

List master tokens for a repo.

GET /api/v1/repos/:user_id/:repo/master_tokens

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.

Response:

Array<MasterToken> An array of master token objects that belong to this repository.

Example request(s):

curl https://packagecloud.io/api/v1/repos/username/reponame/master_tokens

Example response:

< HTTP/1.1 200 OK
[{
   "value" : "e5480f5b38f1f78de2aaa0fa732d1427b1b83113371fd97d",
   "name" : "default",
   "read_tokens" : [
      {
         "value" : "3fe453060fd7f017219e308eb98ccf273b4c3655ba57577a",
         "name" : "app1.someservice.com"
      }
   ],
   "paths" : {
      "self" : "/api/v1/repos/username/reponame/master_tokens/1"
   }
}]

search

Search for master tokens

Note:

Default is 30 per page, see response headers for pagination information.

GET /api/v1/repos/:user_id/:repo/master_tokens/search

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.

Query Params:

  • :q String The name of the MasterToken.

Response:

Array<MasterTokensResult> An array of {MasterTokensResult} objects for this search query.

Example request(s):

curl https://packagecloud.io/api/v1/repos/username/reponame/master_tokens/search?q=prod

Example response:

< HTTP/1.1 200 OK
[{
   "name" : "production",
   "value" : "e5480f5b38f1f78de2aaa0fa732d1427b1b83113371fd97d",
   "self_url": "/api/v1/repos/username/reponame/master_tokens/1"
   "read_tokens_url" : "/api/v1/repos/username/reponame/master_tokens/1/read_tokens"
}]

show

Show a master token.

GET /api/v1/repos/:user_id/:repo/master_tokens/:id

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.
  • :id Integer The id or value of the MasterToken.

Response:

Array The name and value of the master token and API path for associated Read Tokens

Example request(s):

curl https://packagecloud.io/api/v1/repos/username/reponame/master_tokens/1

Example response:

< HTTP/1.1 200 OK
[{
   "value" : "e5480f5b38f1f78de2aaa0fa732d1427b1b83113371fd97d",
   "name" : "default",
   "read_tokens_url" : "/api/v1/repos/username/reponame/master_tokens/1/read_tokens"
}]

create

Create a master token.

POST /api/v1/repos/:user_id/:repo/master_tokens

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.
  • master_token[name] String The name of the token to create.

Response:

MasterToken The newly created master token

Example request(s):

curl -X POST -F "master_token[name]=app_servers" https://packagecloud.io/api/v1/repos/username/reponame/master_tokens

Example response:

< HTTP/1.1 201 Created
{
    "value" : "1f3311f78de2aaa0fa732d1427b1b83113371fd97d",
    "name" : "app_servers",
    "paths" : {
        "self" : "/api/v1/repos/username/reponame/master_tokens/1"
    }
}

destroy

Destroy a master token and all of its read token children.

NOTE: Default tokens have their token value rotated when used with this API. All private repositories must have default master tokens.

DELETE /api/v1/repos/:user_id/:repo/master_tokens/:id

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.
  • :id Integer The id of the master token to be destroyed.

Example request(s):

curl -X DELETE https://packagecloud.io/api/v1/repos/username/reponame/master_tokens/1

Example response:

< HTTP/1.1 204 OK

packages

contents

Inspect the contents of a debian source package.

POST /api/v1/repos/:user_id/:repo/packages/contents.json

URL Params:

  • package[distro_version_id] Integer The id of the DistroVersion to push this package to. Get this from the distributions endpoint.
  • package[package_file] File The `.dsc` file to inspect the contents of.

Response:

PackageContents A JSON object with a `files` key containing an array of files referenced in this source package.

Example request(s):

curl -X POST                                                  \
     -F "package[distro_version_id]=17"                       \
     -F "package[package_file]=@path/to/jake_1.0-7.dsc"             \
        "https://packagecloud.io/api/v1/repos/test_user/test_repo/packages/contents.json"

Example response:

< HTTP/1.1 200 OK
{
  "files": [
    {
      "filename": "jake_1.0.orig.tar.bz2",
      "size": 1108,
      "md5sum": "a7a309b55424198ee98abcb8092d7be0"
    },
    {
      "filename": "jake_1.0-7.debian.tar.gz",
      "size": 1571,
      "md5sum": "0fa5395e95ddf846b419e96575ce8044"
    }
  ]
}

create

Push a package.

NOTE: that for Deban .dsc packages, you must upload each of the files contained in the .dsc. You can use the package_contents API to determine the filename, md5sum, and size of the files referenced by the DSC. All other package types (debian, rpm, python, and java) need only specify the distro_version_id and package_file parameters.

POST /api/v1/repos/:user_id/:repo/packages.json

URL Params:

  • package[distro_version_id] Integer The id of the DistroVersion to push this package to. Get this from the distributions endpoint. Not required for rubygems.
  • package[package_file] File The package file.
  • package[source_files][] Array<File> For debian source packages only: the source files that are specified in the .dsc.
  • package[coordinates] String For Maven/Java/Android packages only: the coordinates of this artifact if they cannot be computed from metadata within the package.

Response:

PackageDetails A JSON object representing the package.

Example request(s):

curl -X POST https://packagecloud.io/api/v1/repos/test_user/test_repo/packages.json \
     -F "package[distro_version_id]=48"     \
     -F "package[package_file]=@path/to/jake-1.0-1.el6.x86_64.rpm"

Example response:

< HTTP/1.1 201 Created
{
  "name": "jake",
  "distro_version": "fedora/22",
  "architecture": "x86_64",
  "repository": "test_repo",
  "size": "3712",
  "summary": "jake douglas is a very nice young man.",
  "filename": "jake-1.0-1.el6.x86_64.rpm",
  "description": "as it so happens, jake douglas is a very nice young man.",
  "dependencies": [
    {
      "context": "requires",
      "dependencies": [
        "libc.so.6(GLIBC_2.2.5)(64bit)",
        "rtld(GNU_HASH)"
      ]
    }
  ],
  "md5sum": "5abe922fc4bbf5bbdac9b85173371892",
  "sha1sum": "062fd41ecf96587309ec9a3ae2035cc44c348b8f",
  "sha256sum": "070da5370a96ba3ae679e7d02d7de6309e4d159340d9f3b555d6d5b4b7cf260a",
  "sha512sum": "406fa288d5dfff194ec2b119b798c4658375a5d07b34f2d6350885cdf6b620f3fdeee45427fef8bcd37e6624049fba0c633b5b4030b79bf96028db6b4f01de87",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-13T02:49:29.000Z",
  "licenses": [
    "GPL"
  ],
  "version": "1.0",
  "release": "1.el6",
  "epoch": 0,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm/download",
  "package_html_url": "/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm",
  "self_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json"
}

Example request(s):

curl -X POST \
     -F "package[distro_version_id]=17"     \
     -F "package[package_file]=@path/to/jake_1.0-7.dsc"  \
     -F "package[source_files][]=@path/to/jake_1.0-7.debian.tar.gz" \
     -F "package[source_files][]=@path/to/jake_1.0.orig.tar.bz2" \
        "https://packagecloud.io/api/v1/repos/test_user/test_repo/packages.json"

Example response:

< HTTP/1.1 201 Created
{
  "name": "jake",
  "distro_version": "ubuntu/xenial",
  "architecture": "i386 amd64 all",
  "repository": "test_repo",
  "size": "3732.0",
  "summary": null,
  "filename": "jake_1.0-7.dsc",
  "description": null,
  "dependencies": [
    {
      "context": "build-depends",
      "dependencies": [
        "pkg-config",
        "quilt"
      ]
    },
    {
      "context": "build-depends-indep",
      "dependencies": [
        "debhelper (>= 2.0.40)",
        "gettext",
        "bzip2",
        "cpio"
      ]
    }
  ],
  "md5sum": null,
  "sha1sum": null,
  "sha256sum": null,
  "sha512sum": null,
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-14T14:35:33.598Z",
  "licenses": [],
  "version": "1.0",
  "release": "7",
  "epoch": 0,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7.dsc/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/ubuntu/xenial/jake_1.0-7.dsc/download",
  "package_html_url": "/test_user/test_repo/packages/ubuntu/xenial/jake_1.0-7.dsc",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7.dsc",
  "self_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7.json"
}

Example request(s):

curl -X POST \
     -F "package[distro_version_id]=17"     \
     -F "package[package_file]=@../packages/java/mylibrary.jar"  \
     -F "package[coordinates]=com.packagecloud:mylibrary:1.0" \
        "https://packagecloud.io/api/v1/repos/user/repo/packages.json"

Example response:

< HTTP/1.1 201 Created
{
  "package": {
    "version": "1.0",
    "filename": mylibrary-1.0.jar,
    "size": 100.0,
    "distro_version_id": 22,
    "created_at": "2016-01-07T19:12:48.346Z"
  }
}

promote

Promote a package.

POST /api/v1/repos/:user_id/:repo/:distro/:version/:package/promote.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :distro String The name of the distribution the package is in. (i.e. ubuntu)
  • :version String The version name of the distribution the package is in. (i.e. precise)
  • :package String The full name of the package.
  • :destination String The fully qualified repository name (e.g., "user/repo") to move the package.

Query Params:

  • :scope String The scope of the Node.JS package to promote. Only required if the package to promote is scoped. Include the escaped '@' (i.e. ?scope=%40example).

Response:

PackageDetails A JSON object representing the package.

Example request(s):

Notes:

This API is similar to a move operation. Once this API call completes successfull, the package being promoted will only exist in the destination.

Upon successful completion of this API, download statistics for the package being moved will be cleared.

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

For jake-1.0-3.el6.x86_64.rpm on Enterprise Linux 7,

from user/example-repo to julio/testrepo:

curl -X POST                                \
     -F "destination=julio/testrepo"        \
     "https://packagecloud.io/api/v1/repos/user/example-repo/el/7/jake-1.0-3.el6.x86_64.rpm/promote.json"

Example response:

RPM Package

< HTTP/1.1 200 OK
{
  "name": "jake",
  "distro_version": "fedora/22",
  "architecture": "x86_64",
  "repository": "test_repo",
  "size": "3712",
  "summary": "jake douglas is a very nice young man.",
  "filename": "jake-1.0-1.el6.x86_64.rpm",
  "description": "as it so happens, jake douglas is a very nice young man.",
  "dependencies": [
    {
      "context": "requires",
      "dependencies": [
        "libc.so.6(GLIBC_2.2.5)(64bit)",
        "rtld(GNU_HASH)"
      ]
    }
  ],
  "md5sum": "5abe922fc4bbf5bbdac9b85173371892",
  "sha1sum": "062fd41ecf96587309ec9a3ae2035cc44c348b8f",
  "sha256sum": "070da5370a96ba3ae679e7d02d7de6309e4d159340d9f3b555d6d5b4b7cf260a",
  "sha512sum": "406fa288d5dfff194ec2b119b798c4658375a5d07b34f2d6350885cdf6b620f3fdeee45427fef8bcd37e6624049fba0c633b5b4030b79bf96028db6b4f01de87",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-13T02:49:29.000Z",
  "licenses": [
    "GPL"
  ],
  "version": "1.0",
  "release": "1.el6",
  "epoch": 0,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm/download",
  "package_html_url": "/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm",
  "self_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json"
}

Note:

The dependencies array for Debian packages will list dependencies for the following contexts: depends, recommends, suggests, enhances, pre-depends

Example request(s):

Deb Package

For packagecloud-test1.1-2amd64.deb on Ubuntu

Xenial, from testuser/testrepo to armando/promote_test:

curl -X POST                                \
     -F "destination=armando/promote_test"          \
     "https://packagecloud.io/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7_amd64.deb/promote.json"

Example response:

Deb Package

< HTTP/1.1 200 OK
{
  "name": "jake",
  "distro_version": "ubuntu/xenial",
  "architecture": "amd64",
  "repository": "test_repo",
  "size": "3290",
  "summary": null,
  "filename": "jake_1.0-7_amd64.deb",
  "description": "На берегу пустынных волн",
  "dependencies": [
    {
      "context": "depends",
      "dependencies": [
        "dpkg (>= 1.15.4) | install-info",
        "libc6 (>= 2.4)"
      ]
    },
    {
      "context": "suggests",
      "dependencies": [
        "indent"
      ]
    }
  ],
  "md5sum": "8d47647f97d78e6bd4428afa93e67d76",
  "sha1sum": "ce1c52b7d1a4abc44e54a3f4bab28b9f92b5bc06",
  "sha256sum": "84ce72ad3627539f15176f16004f6ed95bed4efcbe5f591bf3e0c50031826892",
  "sha512sum": "f4c99e53490bd98ee3cd57224a5d0a3bf351d1ddc160cff56d1736a06db80c40d28ac104009cc76dbdaab7beb65a07cb6b712ad3d8bb3471d8bd289fd3d5570e",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-13T23:55:14.000Z",
  "licenses": [],
  "version": "1.0",
  "release": "7",
  "epoch": 0,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7_amd64.deb/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/ubuntu/xenial/jake_1.0-7_amd64.deb/download",
  "package_html_url": "/test_user/test_repo/packages/ubuntu/xenial/jake_1.0-7_amd64.deb",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7_amd64.deb",
  "self_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7.json"
}

Note:

The dependencies array for Debian Source packages (DSC) will list dependencies for the following contexts: build-depends and build-depends-indep

Example request(s):

DSC Package

For jake_1.0-7.dsc on Ubuntu

Trusty, from testrepo/testrepo to armando/promote_test:

curl -X POST                                \
     -F "destination=armando/promote_test"          \
     "https://packagecloud.io/api/v1/repos/test_user/test_repo/ubuntu/trusty/jake_1.0-7.dsc/promote.json"

Example response:

DSC Package

< HTTP/1.1 200 OK
{
  "name": "jake",
  "distro_version": "ubuntu/xenial",
  "architecture": "amd64",
  "repository": "test_repo",
  "size": "3290",
  "summary": null,
  "filename": "jake_1.0-7_amd64.deb",
  "description": "На берегу пустынных волн",
  "dependencies": [
    {
      "context": "depends",
      "dependencies": [
        "dpkg (>= 1.15.4) | install-info",
        "libc6 (>= 2.4)"
      ]
    },
    {
      "context": "suggests",
      "dependencies": [
        "indent"
      ]
    }
  ],
  "md5sum": "8d47647f97d78e6bd4428afa93e67d76",
  "sha1sum": "ce1c52b7d1a4abc44e54a3f4bab28b9f92b5bc06",
  "sha256sum": "84ce72ad3627539f15176f16004f6ed95bed4efcbe5f591bf3e0c50031826892",
  "sha512sum": "f4c99e53490bd98ee3cd57224a5d0a3bf351d1ddc160cff56d1736a06db80c40d28ac104009cc76dbdaab7beb65a07cb6b712ad3d8bb3471d8bd289fd3d5570e",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-13T23:55:14.000Z",
  "licenses": [],
  "version": "1.0",
  "release": "7",
  "epoch": 0,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7_amd64.deb/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/ubuntu/xenial/jake_1.0-7_amd64.deb/download",
  "package_html_url": "/test_user/test_repo/packages/ubuntu/xenial/jake_1.0-7_amd64.deb",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7_amd64.deb",
  "self_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7.json"
}

Note:

The dependencies array for Node.js packages will list dependencies for the following contexts: dependencies, devDependencies, optionalDependencies, bundleDependencies, and peerDependencies.

Example request(s):

Node.js package

For packagecloud-test-1.1.1.tgz, from testuser/testrepo to armando/promote_test:
curl -X POST
     -F "destination=armando/promote_test"
     "https://packagecloud.io/api/v1/repos/test_user/test_repo/node/1/packagecloud-test-1.1.1.tgz/promote.json"

Example response:

Node.js package

< HTTP/1.1 200 OK
{
   "destroy_url" : "/api/v1/repos/armando/promote_test/node/1/packagecloud-test-1.1.1.tgz",
   "filename" : "packagecloud-test-1.1.1.tgz",
   "md5sum" : "06ecacb6acb089c7880069197b24a3fd",
   "promote_url" : "/api/v1/repos/armando/promote_test/node/1/packagecloud-test-1.1.1.tgz/promote.json",
   "sha256sum" : "69f75883d3b46afde2d4d6f1385115f85ddbe36e3c0c6947ffe3c1b642e527f7",
   "package_url" : "/api/v1/repos/armando/promote_test/package/node/packagecloud-test/1.1.1.json",
   "epoch" : null,
   "downloads_detail_url" : "/api/v1/repos/armando/promote_test/package/node/packagecloud-test/1.1.1/stats/downloads/detail.json",
   "repository" : "test_repo",
   "repository_url" : "/api/v1/repos/armando/promote_test",
   "repository_html_url" : "/armando/promote_test",
   "private" : false,
   "version" : "1.0.0",
   "versions_url" : "/api/v1/repos/armando/promote_test/package/node/packagecloud-test/versions.json",
   "summary" : null,
   "downloads_count_url" : "/api/v1/repos/armando/promote_test/package/node/packagecloud-test/1.1.1/stats/downloads/count.json",
   "indexed" : false,
   "self_url" : "/api/v1/repos/armando/promote_test/package/node/packagecloud-test/1.1.1.json",
   "created_at" : "2017-12-22T16:54:01.000Z",
   "licenses" : null,
   "size" : "385",
   "description" : "A test package for testing",
   "uploader_name" : "joe",
   "release" : null,
   "distro_version" : "node/1",
   "package_html_url" : "/armando/promote_test/packages/node/packagecloud-test-1.1.1.tgz",
   "sha1sum" : "a19643dcfa74fde00f02c00bc77c77db0a30b4d5",
   "downloads_series_url" : "/api/v1/repos/armando/promote_test/package/node/packagecloud-test/1.1.1/stats/downloads/series/daily.json",
   "name" : "packagecloud-test",
   "total_downloads_count" : 0,
   "dependencies" : [],
   "sha512sum" : "95cf2124ee4aa2d45e9ace6558b2ccd9875a6400ed557cbff4bd88669aa5b301ecdcabc45654b754d8c1fcaafac938683f600b3dd4802398a96399edf18612ee",
   "scope" : null,
   "download_url" : "https://packagecloud.io/armando/promote_test/packages/node/packagecloud-test-1.1.1.tgz/download",
   "architecture" : null
}

Note:

The dependencies array for Node.js packages will list dependencies for the following contexts: dependencies, devDependencies, optionalDependencies, bundleDependencies, and peerDependencies.

Example request(s):

Scoped Node.js package

For @scope/packagecloud-test-1.1.1.tgz, from testuser/testrepo to armando/promote_test:
curl -X POST
     -F "destination=armando/promote_test"
     "https://packagecloud.io/api/v1/repos/test_user/test_repo/node/1/packagecloud-test-1.1.1.tgz/promote.json?scope=%40scope"

Example response:

Node.js package

< HTTP/1.1 200 OK
{
   "destroy_url" : "/api/v1/repos/armando/promote_test/node/1/packagecloud-test-1.1.1.tgz?scope=%40scope",
   "filename" : "packagecloud-test-1.1.1.tgz",
   "md5sum" : "06ecacb6acb089c7880069197b24a3fd",
   "promote_url" : "/api/v1/repos/armando/promote_test/node/1/packagecloud-test-1.1.1.tgz/promote.json?scope=%40scope",
   "sha256sum" : "69f75883d3b46afde2d4d6f1385115f85ddbe36e3c0c6947ffe3c1b642e527f7",
   "package_url" : "/api/v1/repos/armando/promote_test/package/node/@scope%2fpackagecloud-test/1.1.1.json",
   "epoch" : null,
   "downloads_detail_url" : "/api/v1/repos/armando/promote_test/package/node/@scope%2fpackagecloud-test/1.1.1/stats/downloads/detail.json",
   "repository" : "test_repo",
   "repository_url" : "/api/v1/repos/armando/promote_test",
   "repository_html_url" : "/armando/promote_test",
   "private" : false,
   "version" : "1.0.0",
   "versions_url" : "/api/v1/repos/armando/promote_test/package/node/@scope%2fpackagecloud-test/versions.json",
   "summary" : null,
   "downloads_count_url" : "/api/v1/repos/armando/promote_test/package/node/@scope%2fpackagecloud-test/1.1.1/stats/downloads/count.json",
   "indexed" : false,
   "self_url" : "/api/v1/repos/armando/promote_test/package/node/@scope%2fpackagecloud-test/1.1.1.json",
   "created_at" : "2017-12-22T16:54:01.000Z",
   "licenses" : null,
   "size" : "385",
   "description" : "A test package for testing",
   "uploader_name" : "joe",
   "release" : null,
   "distro_version" : "node/1",
   "package_html_url" : "/armando/promote_test/packages/node/packagecloud-test-1.1.1.tgz?scope=%40scope",
   "sha1sum" : "a19643dcfa74fde00f02c00bc77c77db0a30b4d5",
   "downloads_series_url" : "/api/v1/repos/armando/promote_test/package/node/@scope%2fpackagecloud-test/1.1.1/stats/downloads/series/daily.json",
   "name" : "packagecloud-test",
   "total_downloads_count" : 0,
   "dependencies" : [],
   "sha512sum" : "95cf2124ee4aa2d45e9ace6558b2ccd9875a6400ed557cbff4bd88669aa5b301ecdcabc45654b754d8c1fcaafac938683f600b3dd4802398a96399edf18612ee",
   "scope" : null,
   "download_url" : "https://packagecloud.io/armando/promote_test/packages/node/packagecloud-test-1.1.1.tgz/download?scope=%40scope",
   "architecture" : null
}

show

Show Package

GET /api/v1/repos/:user_id/:repo/package/:type/:distro/:version/:package/:arch/:package_version/:release.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :type String The type of package it is, "rpm" or "deb".
  • :distro String The name of the distribution the package is in. (i.e. ubuntu)
  • :version String The version name of the distribution the package is in. (i.e. precise)
  • :package String The name of the package.
  • :arch String The architecture of the package. (note: debs use amd64 while rpms use x86_64 for arch)
  • :package_version String The version (without epoch) of the package.

Query Params:

  • :release String The release, if the package contains one.

Response:

PackageDetails A JSON object representing the package.

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

For jake-1.0-3.el6.x86_64.rpm on Enterprise Linux 7:
curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json"

Example response:

RPM Package

< HTTP/1.1 200 OK
{
  "name": "jake",
  "distro_version": "fedora/22",
  "architecture": "x86_64",
  "repository": "test_repo",
  "size": "3712",
  "summary": "jake douglas is a very nice young man.",
  "filename": "jake-1.0-1.el6.x86_64.rpm",
  "description": "as it so happens, jake douglas is a very nice young man.",
  "dependencies": [
    {
      "context": "requires",
      "dependencies": [
        "libc.so.6(GLIBC_2.2.5)(64bit)",
        "rtld(GNU_HASH)"
      ]
    }
  ],
  "md5sum": "5abe922fc4bbf5bbdac9b85173371892",
  "sha1sum": "062fd41ecf96587309ec9a3ae2035cc44c348b8f",
  "sha256sum": "070da5370a96ba3ae679e7d02d7de6309e4d159340d9f3b555d6d5b4b7cf260a",
  "sha512sum": "406fa288d5dfff194ec2b119b798c4658375a5d07b34f2d6350885cdf6b620f3fdeee45427fef8bcd37e6624049fba0c633b5b4030b79bf96028db6b4f01de87",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-13T02:49:29.000Z",
  "licenses": [
    "GPL"
  ],
  "version": "1.0",
  "release": "1.el6",
  "epoch": 0,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm/download",
  "package_html_url": "/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm",
  "self_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json"
}

Note:

The dependencies array for RPM packages will list all Requires and PreReq values under the context requires

Example request(s):

Deb Package

curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7.json"

Example response:

Deb Package

< HTTP/1.1 200 OK
{
  "name": "jake",
  "distro_version": "ubuntu/xenial",
  "architecture": "amd64",
  "repository": "test_repo",
  "size": "3290",
  "summary": null,
  "filename": "jake_1.0-7_amd64.deb",
  "description": "На берегу пустынных волн",
  "dependencies": [
    {
      "context": "depends",
      "dependencies": [
        "dpkg (>= 1.15.4) | install-info",
        "libc6 (>= 2.4)"
      ]
    },
    {
      "context": "suggests",
      "dependencies": [
        "indent"
      ]
    }
  ],
  "md5sum": "8d47647f97d78e6bd4428afa93e67d76",
  "sha1sum": "ce1c52b7d1a4abc44e54a3f4bab28b9f92b5bc06",
  "sha256sum": "84ce72ad3627539f15176f16004f6ed95bed4efcbe5f591bf3e0c50031826892",
  "sha512sum": "f4c99e53490bd98ee3cd57224a5d0a3bf351d1ddc160cff56d1736a06db80c40d28ac104009cc76dbdaab7beb65a07cb6b712ad3d8bb3471d8bd289fd3d5570e",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-13T23:55:14.000Z",
  "licenses": [],
  "version": "1.0",
  "release": "7",
  "epoch": 0,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7_amd64.deb/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/ubuntu/xenial/jake_1.0-7_amd64.deb/download",
  "package_html_url": "/test_user/test_repo/packages/ubuntu/xenial/jake_1.0-7_amd64.deb",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7_amd64.deb",
  "self_url": "/api/v1/repos/test_user/test_repo/package/deb/ubuntu/xenial/jake/amd64/1.0-7.json"
 }

Note:

The dependencies array for Debian packages will list dependencies for the following contexts: depends, recommends, suggests, enhances, pre-depends

Example request(s):

DSC Package

curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7.json"

Example response:

DSC Package

< HTTP/1.1 200 OK
{
  "name": "jake",
  "distro_version": "ubuntu/xenial",
  "architecture": "i386 amd64 all",
  "repository": "test_repo",
  "size": "3732.0",
  "summary": null,
  "filename": "jake_1.0-7.dsc",
  "description": null,
  "dependencies": [
    {
      "context": "build-depends",
      "dependencies": [
        "pkg-config",
        "quilt"
      ]
    },
    {
      "context": "build-depends-indep",
      "dependencies": [
        "debhelper (>= 2.0.40)",
        "gettext",
        "bzip2",
        "cpio"
      ]
    }
  ],
  "md5sum": null,
  "sha1sum": null,
  "sha256sum": null,
  "sha512sum": null,
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-14T14:35:33.598Z",
  "licenses": [],
  "version": "1.0",
  "release": "7",
  "epoch": 0,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7.dsc/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/ubuntu/xenial/jake_1.0-7.dsc/download",
  "package_html_url": "/test_user/test_repo/packages/ubuntu/xenial/jake_1.0-7.dsc",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/ubuntu/xenial/jake_1.0-7.dsc",
  "self_url": "/api/v1/repos/test_user/test_repo/package/dsc/ubuntu/xenial/jake/i386%20amd64%20all/1.0-7.json"
}

Note:

The dependencies array for Debian Source packages (DSC) will list dependencies for the following contexts: build-depends and build-depends-indep

anyfile_show

Show Anyfile Package

GET /api/v1/repos/:user_id/:repo/package/anyfile/:package/:version.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :package String The name of the package.
  • :version String The version of the package.

Response:

PackageDetails A JSON object representing the package

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

For packagecloud-test-0.1.asc:
curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/anyfile/hello/0.0.6.json"

Example response:

< HTTP/1.1 200 OK
{
  "name": "hello",
  "distro_version": "anyfile/1",
  "architecture": null,
  "repository": "test_repo",
  "size": "659",
  "summary": null,
  "filename": "hello-0.0.6.asc",
  "description": "null",
  "dependencies": null,
  "md5sum": "63f15a3efcf982d610b0376aae0a40fe",
  "sha1sum": "0080db94bb9b3fbfae2ae2c9a720d5cf7a724bbc",
  "sha256sum": "f101e1f32d7e4863c3e983b3709fe1755a34a8f45184ef507868267c23f76f0e",
  "sha512sum": "b50259b470eb609688fd99b30db7e6664e5bf3e47e43266a34e321b928b8c687dc11e9d461d4eb980697a17bb96a8cde197ea755396e25a831d78deeab696061",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-14T15:58:49.000Z",
  "licenses": null,
  "version": "0.0.6",
  "release": null,
  "epoch": null,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/anyfile/hello/0.0.6.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/anyfile/hello/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/anyfile/1/hello-0.0.6.asc/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/anyfile/hello-0.0.6.asc/download?distro_version_id=129",
  "package_html_url": "/test_user/test_repo/packages/anyfile/hello-0.0.6.asc",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/anyfile/hello/0.0.6/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/anyfile/anyfile/hello/0.0.6/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/anyfile/hello/0.0.6/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/anyfile/1/hello-0.0.6.asc",
  "self_url": "/api/v1/repos/test_user/test_repo/package/anyfile/hello/0.0.6.json"
}

gem_show

Show RubyGem Package

GET /api/v1/repos/:user_id/:repo/package/gem/:package/:version.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :package String The name of the package.
  • :version String The version of the package.

Response:

PackageDetails A JSON object representing the package

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

For jakedotrb-0.0.1.gem:
curl "https://packagecloud.io/api/v1/repos/julio/testrepo/package/gem/jakedotrb/0.0.1.json"

Example response:

< HTTP/1.1 200 OK
{
  "name": "jakedotrb",
  "distro_version": "RubyGem",
  "architecture": null,
  "repository": "test_repo",
  "size": "3072",
  "summary": "helping people learn about my friend jake douglas.",
  "filename": "jakedotrb-0.0.1.gem",
  "description": "helping people learn about my friend jake douglas.",
  "dependencies": null,
  "md5sum": "448024a4ac0b6244659c707cfa070df6",
  "sha1sum": "c4365658774d8c259885471acb6cc659caca16b9",
  "sha256sum": "1897be32375d4fc3337df00930ab94afbdfeb26545492127bdbe7fe05e7e1e9d",
  "sha512sum": "27f6286aa047a5c1dd5c7c80e1cf1eccc8ca9c8a61a17cc552277d0d6d745275523fa6cdac610d6a6abb9091509241de447b673e84ead83947f3378641e11217",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-14T14:31:16.000Z",
  "licenses": [
    "MIT"
  ],
  "version": "0.0.1",
  "release": null,
  "epoch": null,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/gems/jakedotrb-0.0.1.gem/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/gems/jakedotrb-0.0.1.gem/download",
  "package_html_url": "/test_user/test_repo/packages/gems/jakedotrb-0.0.1.gem",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/gems/jakedotrb-0.0.1.gem",
  "self_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1.json"
}

Note:

The dependencies array for RubyGem packages will list dependencies for the following contexts: runtime and development

python_show

Show Python Package

GET /api/v1/repos/:user_id/:repo/package/python/:package/:version.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :package String The name of the package.
  • :version String The version of the package.

Response:

PackageDetails A JSON object representing the package

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

For jake-1.2-py3-none-any.whl:
curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/0.9.7b1.json"

Example response:

< HTTP/1.1 200 OK
{
  "name": "packagecloud-test",
  "distro_version": "python",
  "architecture": null,
  "repository": "test_repo",
  "size": "3128",
  "summary": "A sample Python project",
  "filename": "packagecloud_test-0.9.7b1-py2.py3-none-any.whl",
  "description": "A sample Python project for pushing to packagecloud",
  "dependencies": null,
  "md5sum": "a47e28fef7602f51f296a533eb081fff",
  "sha1sum": "25416aa58f9a5e7a6be23e084c6cbfdd392ab3b2",
  "sha256sum": "f114202a20cacaf3a0de65752a3ae9da963047567323ce2fedaeb8a5b0f7fe63",
  "sha512sum": "592aecff82aaf416eed0c038b83c71c9e9f85a2300437636dec0a4ffcf813a3b82eb1c0cbcbbbc61f1d784da6ad3609de4e313c2bbcff46b2b6eaf29197d1fe7",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-14T15:58:49.000Z",
  "licenses": null,
  "version": "0.9.7b1",
  "release": null,
  "epoch": null,
  "indexed": false,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/0.9.7b1.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/python/1/packagecloud_test-0.9.7b1-py2.py3-none-any.whl/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/python/packagecloud_test-0.9.7b1-py2.py3-none-any.whl/download",
  "package_html_url": "/test_user/test_repo/packages/python/packagecloud_test-0.9.7b1-py2.py3-none-any.whl",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/0.9.7b1/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/0.9.7b1/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/0.9.7b1/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/python/1/packagecloud_test-0.9.7b1-py2.py3-none-any.whl",
  "self_url": "/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/0.9.7b1.json"
}

Note:

The dependencies array for Python packages will list dependencies for the following contexts: requires, requires-dist, requires-external, requires-extra, and requires-python

java_show

Show Java Package

GET /api/v1/repos/:user_id/:repo/package/java/maven2/:package/:version.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :package String The name of the package.
  • :version String The version of the package.

Response:

PackageDetails A JSON object representing the package

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

For jake-2.3.jar:
curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/java/maven2/io.packagecloud/jake/2.3.json"

Example response:

< HTTP/1.1 200 OK
{
  "name": "jake",
  "distro_version": "java/maven2",
  "architecture": null,
  "repository": "test_repo",
  "size": "2404",
  "summary": null,
  "filename": "jake-2.3.jar",
  "description": null,
  "dependencies": [
    {
      "context": "test",
      "dependencies": [
        "junit.junit 3.8.1"
      ]
    }
  ],
  "md5sum": null,
  "sha1sum": null,
  "sha256sum": null,
  "sha512sum": null,
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-13T23:54:48.000Z",
  "licenses": null,
  "version": "2.3",
  "release": null,
  "epoch": null,
  "indexed": true,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/java/maven2/io.packagecloud/jake/2.3.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/java/maven2/io.packagecloud/jake/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/java/maven2/io.packagecloud/jake-2.3.jar/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/java/jake-2.3.jar/artifacts/jake-2.3.jar/download"
  "package_html_url": "/test_user/test_repo/packages/java/jake-2.3.jar",
  "downloads_detail_url": "N/A",
  "downloads_series_url": "N/A",
  "downloads_count_url": "N/A",
  "destroy_url": "/api/v1/repos/test_user/test_repo/java/maven2/io.packagecloud/jake-2.3.jar",
  "self_url": "/api/v1/repos/test_user/test_repo/package/java/maven2/io.packagecloud/jake/2.3.json"
}

helm_show

Show Helm Package

GET /api/v1/repos/:user_id/:repo/package/helm/:index_name/:package/:version.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :index_name String The version of helm index
  • :package String The name of the package.
  • :version String The version of the package.

Response:

PackageDetails A JSON object representing the package

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

For hello-kubernetes-2.0.0.tgz:
curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/helm/v1/hello-kubernetes/2.0.0.json"

Example response:

< HTTP/1.1 200 OK
{
  "name": "hello-kubernetes",
  "distro_version": "helm/v1",
  "architecture": null,
  "repository": "test_repo",
  "size": "1877",
  "summary": "A sample Helm chart",
  "filename": "hello-kubernetes-2.0.0.tgz.",
  "description": "A sample Helm chart",
  "dependencies": [],
  "md5sum": "797df36c5c713768cf660b6d29895ca6",
  "sha1sum": "4f6bab7bd2f6da189506f2e11032b46945dd74b0",
  "sha256sum": "52d7800b708cb3c96493accf9b15e8bceba9ac31a3fbbe6fde9f176e503bddbe",
  "sha512sum": "dbfe5a1bdf9d7fb4b9cfbff373526fc840d68cce19b17000d751223af21f3a1de1d6230458b14d57eb96eb19a9ab1390542f9081849b0f606870984a7a5fb06c",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-14T15:58:49.000Z",
  "licenses": null,
  "version": "2.0.0",
  "release": null,
  "epoch": null,
  "indexed": true,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/helm/v1/hello-kubernetes/2.0.0.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/helm/v1/hello-kubernetes/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/helm/v1/hello-kubernetes-2.0.0.tgz/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/helm/v1/hello-kubernetes-2.0.0.tgz/download?distro_version_id=140",
  "package_html_url": "/test_user/test_repo/packages/helm/v1/hello-kubernetes-2.0.0.tgz",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/helm/v1/hello-kubernetes/2.0.0/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/helm/v1/hello-kubernetes/2.0.0/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/helm/v1/hello-kubernetes/2.0.0/stats/downloads/count.jsom",
  "destroy_url": "/api/v1/repos/test_user/test_repo/helm/v1/hello-kubernetes-2.0.0.tgz",
  "self_url": "/api/v1/repos/test_user/test_repo/package/helm/v1/hello-kubernetes/2.0.0.json"
}

versions

List Package Versions

GET /api/v1/repos/:user_id/:repo/package/:type/:distro/:version/:package/:arch/versions.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :type String The type of package it is, "rpm" or "deb".
  • :distro String The name of the distribution the package is in. (i.e. ubuntu)
  • :version String The version name of the distribution the package is in. (i.e. precise)
  • :package String The name of the package.
  • :arch String The architecture of the package. (note: debs use amd64 while rpms use x86_64 for arch)

Response:

PackageFragment A JSON array of all the versions for this package

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/versions.json"

Example response:

< HTTP/1.1 200 OK
[
  {
    "name": "jake",
    "distro_version": "fedora/22",
    "created_at": "2017-03-13T02:49:29.000Z",
    "version": "1.0",
    "release": "1.el6",
    "epoch": 0,
    "private": false,
    "type": "rpm",
    "filename": "jake-1.0-1.el6.x86_64.rpm",
    "uploader_name": "test_user",
    "indexed": false,
    "repository_html_url": "/test_user/test_repo",
    "package_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json",
    "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/detail.json",
    "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/series/daily.json",
    "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/count.json",
    "package_html_url": "/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm",
    "download_url": "https://packagecloud.io/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm/download",
    "promote_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm/promote.json",
    "destroy_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm"
  }
]

gem_versions

List RubyGem Package Versions

GET /api/v1/repos/:user_id/:repo/package/gem/:package/versions.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :package String The name of the package.

Response:

PackageFragment A JSON array of all the versions for this package.

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/versions.json"

Example response:

< HTTP/1.1 200 OK
[
  {
    "name": "jakedotrb",
    "distro_version": "RubyGem",
    "created_at": "2017-03-14T14:31:16.000Z",
    "version": "0.0.1",
    "release": null,
    "epoch": null,
    "private": false,
    "type": "gem",
    "filename": "jakedotrb-0.0.1.gem",
    "uploader_name": "test_user",
    "indexed": false,
    "repository_html_url": "/test_user/test_repo",
    "package_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1.json",
    "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1/stats/downloads/detail.json",
    "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1/stats/downloads/series/daily.json",
    "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1/stats/downloads/count.json",
    "package_html_url": "/test_user/test_repo/packages/gems/jakedotrb-0.0.1.gem",
    "download_url": "https://packagecloud.io/test_user/test_repo/packages/gems/jakedotrb-0.0.1.gem/download",
    "promote_url": "/api/v1/repos/test_user/test_repo/gems/jakedotrb-0.0.1.gem/promote.json",
    "destroy_url": "/api/v1/repos/test_user/test_repo/gems/jakedotrb-0.0.1.gem"
  }
]

node_show

Show Node.js Package

GET /api/v1/repos/:user_id/:repo/package/node/:package/:version.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :package String The name of the package. If this is a scoped package, the name should include an @ and an escaped '/' (e.g., @scope%2Fpkg-name).
  • :version String The version of the package.

Response:

PackageDetails A JSON object representing the package

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

For test-pkg-1.3.1.tgz:
curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/node/test-pkg/1.3.1.json"

Example response:

< HTTP/1.1 200 OK
{
  "name": "test-pkg",
  "distro_version": "node/1",
  "architecture": null,
  "repository": "test_repo",
  "size": "691",
  "summary": null,
  "filename": "test-pkg-1.3.1.tgz",
  "description": "test description",
  "dependencies": [
    {
      "context": "dependency",
      "dependencies": [
        "express"
      ]
    },
    {
      "context": "peerDependency",
      "dependencies": [
        "tea"
      ]
    }
  ],
  "md5sum": "b7037cbf8a54d73eeef32f9e73d2139e",
  "sha1sum": "6be6783461d5d3a57d56a0c87388bf42c04c1b55",
  "sha256sum": "d71e85ca552011c6f811bc176e799bd777f4608c6a5f268b326ab95613145eeb",
  "sha512sum": "3e9f904bedeaa3c4dd461570f7c788e3a53783176c39ca16f2f40852777fad24980bcda567ea142f731a4def2bc659d6f021526c08aed76e512194515c2af829",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-12-19T03:11:21.000Z",
  "licenses": null,
  "version": "1.3.1",
  "release": null,
  "epoch": null,
  "indexed": true,
  "scope": null,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/node/test-pkg/1.3.1.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/node/test-pkg/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/node/1/test-pkg-1.3.1.tgz/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/node/test-pkg-1.3.1.tgz/download",
  "package_html_url": "/test_user/test_repo/packages/node/test-pkg-1.3.1.tgz",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/node/test-pkg/1.3.1/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/node/test-pkg/1.3.1/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/node/test-pkg/1.3.1/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/node/1/test-pkg-1.3.1.tgz",
  "self_url": "/api/v1/repos/test_user/test_repo/package/node/test-pkg/1.3.1.json"
}

Note:

The dependencies array for Node.js packages will list dependencies for the following contexts: dependencies, devDependencies, optionalDependencies, bundleDependencies, and peerDependencies.

node_versions

List Node.js Package Versions

GET /api/v1/repos/:user_id/:repo/package/node/:package/versions.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :package String The name of the package. If this is a scoped package, the name should include an @ and an escaped '/' (e.g., @scope%2Fpkg-name).

Response:

PackageFragment A JSON array of all the versions for this package.

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/node/test-pkg/versions.json"

Example response:

< HTTP/1.1 200 OK
[
  {
    "name": "test-pkg",
    "distro_version": "node/1",
    "created_at": "2017-12-19T03:11:21.000Z",
    "version": "1.3.1",
    "release": null,
    "epoch": null,
    "scope": null,
    "private": false,
    "type": "node",
    "filename": "test-pkg-1.3.1.tgz",
    "uploader_name": "test_user",
    "indexed": true,
    "repository_html_url": "/test_user/test_repo",
    "package_url": "/api/v1/repos/test_user/test_repo/package/node/test-pkg/1.3.1.json",
    "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/node/test-pkg/1.3.1/stats/downloads/detail.json",
    "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/node/test-pkg/1.3.1/stats/downloads/series/daily.json",
    "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/node/test-pkg/1.3.1/stats/downloads/count.json",
    "package_html_url": "/test_user/test_repo/packages/node/test-pkg-1.3.1.tgz",
    "download_url": "https://packagecloud.io/test_user/test_repo/packages/node/test-pkg-1.3.1.tgz/download",
    "promote_url": "/api/v1/repos/test_user/test_repo/node/1/test-pkg-1.3.1.tgz/promote.json",
    "destroy_url": "/api/v1/repos/test_user/test_repo/node/1/test-pkg-1.3.1.tgz"
  }
]

python_versions

List Python Package Versions

GET /api/v1/repos/:user_id/:repo/package/python/:package/versions.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :package String The name of the package.

Response:

PackageFragment A JSON array of all the versions for this package.

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/versions.json"

Example response:

< HTTP/1.1 200 OK
[
  {
    "name": "packagecloud-test",
    "distro_version": "python",
    "created_at": "2017-03-14T15:58:49.000Z",
    "version": "0.9.7b1",
    "release": null,
    "epoch": null,
    "private": false,
    "type": "python",
    "filename": "packagecloud_test-0.9.7b1-py2.py3-none-any.whl",
    "uploader_name": "test_user",
    "indexed": false,
    "repository_html_url": "/test_user/test_repo",
    "package_url": "/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/0.9.7b1.json",
    "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/0.9.7b1/stats/downloads/detail.json",
    "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/0.9.7b1/stats/downloads/series/daily.json",
    "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/python/packagecloud-test/0.9.7b1/stats/downloads/count.json",
    "package_html_url": "/test_user/test_repo/packages/python/packagecloud_test-0.9.7b1-py2.py3-none-any.whl",
    "download_url": "https://packagecloud.io/test_user/test_repo/packages/python/packagecloud_test-0.9.7b1-py2.py3-none-any.whl/download",
    "promote_url": "/api/v1/repos/test_user/test_repo/python/1/packagecloud_test-0.9.7b1-py2.py3-none-any.whl/promote.json",
    "destroy_url": "/api/v1/repos/test_user/test_repo/python/1/packagecloud_test-0.9.7b1-py2.py3-none-any.whl"
  }
]

java_versions

List Java Package Versions

GET /api/v1/repos/:user_id/:repo/package/java/maven2/:group/:package/versions.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :group String The group of the package.
  • :package String The name of the package.

Response:

PackageFragment A JSON array of all the versions for this package.

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/java/maven2/io.packagecloud/jake/versions.json"

Example response:

< HTTP/1.1 200 OK
[
  {
    "name": "jake",
    "distro_version": "java/maven2",
    "created_at": "2017-03-13T23:54:48.000Z",
    "version": "2.3",
    "release": null,
    "epoch": null,
    "private": false,
    "type": "java",
    "filename": "jake-2.3.jar",
    "uploader_name": "test_user",
    "indexed": true,
    "repository_html_url": "/test_user/test_repo",
    "package_url": "/api/v1/repos/test_user/test_repo/package/java/maven2/io.packagecloud/jake/2.3.json",
    "downloads_detail_url": "N/A",
    "downloads_series_url": "N/A",
    "downloads_count_url": "N/A",
    "package_html_url": "/test_user/test_repo/packages/java/jake-2.3.jar",
    "download_url": "https://packagecloud.io/test_user/test_repo/packages/java/io.packagecloud/jake-2.3.jar/artifacts/jake-2.3.jar/download",
    "promote_url": "/api/v1/repos/test_user/test_repo/java/maven2/io.packagecloud/jake-2.3.jar/promote.json",
    "destroy_url": "/api/v1/repos/test_user/test_repo/java/maven2/io.packagecloud/jake-2.3.jar"
  }
]

anyfile_versions

List Anyfile Package Versions

GET /api/v1/repos/:user_id/:repo/package/anyfile/:package/versions.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :package String The name of the package.

Response:

PackageFragment A JSON array of all the versions for this package.

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/package/anyfile/hello/versions.json"

Example response:

< HTTP/1.1 200 OK
[
  {
    "name": "hello",
    "distro_version": "anyfile/1",
    "created_at": "2017-03-13T23:54:48.000Z",
    "version": "0.0.4",
    "release": null,
    "epoch": null,
    "private": false,
    "type": "anyfile",
    "filename": "hello-0.0.4.asc",
    "uploader_name": "test_user",
    "indexed": false,
    "sha256sum": "f101e1f32d7e4863c3e983b3709fe1755a34a8f45184ef507868267c23f76f0e",
    "repository_html_url": "/test_user/test_repo",
    "package_url": "/api/v1/repos/test_user/test_repo/package/anyfile/hello/0.0.4.json
    "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/anyfile/hello/0.0.4/stats/downloads/detail.json",
    "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/anyfile/hello/0.0.4/stats/downloads/series/daily.json",
    "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/anyfile/hello/0.0.4/stats/downloads/count.json",
    "package_html_url": "/test_user/test_repo/packages/anyfile/hello-0.0.4.asc",
    "download_url": "https://packagecloud.io/test_user/test_repo/packages/anyfile/hello-0.0.4.asc/download?distro_version_id=129",
    "promote_url": "/api/v1/repos/test_user/test_repo/anyfile/1/hello-0.0.4.asc/promote.json",
    "destroy_url": "/api/v1/repos/test_user/test_repo/anyfile/1/hello-0.0.4.asc"
  }
]

index

List Packages by type, distribution, version, and architecture, grouped by package version

GET /api/v1/repos/:user_id/:repo/packages/:type/:distro/:version/:arch.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.
  • :type String The type of package it is, "rpm" or "deb".
  • :distro String The name of the distribution the package is in. (i.e. ubuntu)
  • :version String The version name of the distribution the package is in. (i.e. precise)

Query Params:

  • :arch String The architecture to search for.

Response:

PackageVersion A JSON array of all packages that match the criteria.

Example request(s):

 curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/packages/rpm.json"

Example response:

< HTTP/1.1 200 OK
[
  {
    "name": "jake",
    "versions_count": 1,
    "versions_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/versions.json",
    "repository_url": "/api/v1/repos/test_user/test_repo",
    "repository_html_url": "/test_user/test_repo"
  }
]

Example request(s):

 curl "https://packagecloud.io/api/v1/repos/julio/testrepo/packages/rpm/el.json"

Example request(s):

 curl "https://packagecloud.io/api/v1/repos/julio/testrepo/packages/gem.json"

Example request(s):

 curl "https://packagecloud.io/api/v1/repos/julio/testrepo/packages/python.json"

Example request(s):

 curl "https://packagecloud.io/api/v1/repos/julio/testrepo/packages/node.json"

Example request(s):

 curl "https://packagecloud.io/api/v1/repos/julio/testrepo/packages/deb/ubuntu/precise.json"

Example request(s):

 curl "https://packagecloud.io/api/v1/repos/julio/testrepo/packages/deb/ubuntu/precise.json"

Example request(s):

 curl "https://packagecloud.io/api/v1/repos/julio/testrepo/packages/deb/ubuntu/precise/amd64.json"

Example request(s):

 curl "https://packagecloud.io/api/v1/repos/julio/testrepo/packages/deb/*/*/amd64.json"

all

List All Packages (not grouped by package version)

GET /api/v1/repos/:user_id/:repo/packages.json

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of the repository.

Response:

PackageFragment A JSON array of PackageFragment objects.

Example request(s):

curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/packages.json"

Example response:

< HTTP/1.1 200 OK
[
  {
    "name": "jake",
    "distro_version": "fedora/22",
    "created_at": "2017-03-13T02:49:29.000Z",
    "version": "1.0",
    "release": "1.el6",
    "epoch": 0,
    "private": false,
    "type": "rpm",
    "filename": "jake-1.0-1.el6.x86_64.rpm",
    "uploader_name": "test_user",
    "indexed": false,
    "repository_html_url": "/test_user/test_repo",
    "package_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json",
    "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/detail.json",
    "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/series/daily.json",
    "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/count.json",
    "package_html_url": "/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm",
    "download_url": "https://packagecloud.io/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm/download",
    "promote_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm/promote.json",
    "destroy_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm"
  },
  {
    "name": "jake",
    "distro_version": "java/maven2",
    "created_at": "2017-03-13T23:54:48.000Z",
    "version": "2.3",
    "release": null,
    "epoch": null,
    "private": false,
    "type": "java",
    "filename": "jake-2.3.jar",
    "uploader_name": "test_user",
    "indexed": true,
    "repository_html_url": "/test_user/test_repo",
    "package_url": "/api/v1/repos/test_user/test_repo/package/java/maven2/io.packagecloud/jake/2.3.json",
    "downloads_detail_url": "N/A",
    "downloads_series_url": "N/A",
    "downloads_count_url": "N/A",
    "package_html_url": "/test_user/test_repo/packages/java/jake-2.3.jar",
    "download_url": "https://packagecloud.io/test_user/test_repo/packages/java/io.packagecloud/jake-2.3.jar/artifacts/jake-2.3.jar/download",
    "promote_url": "/api/v1/repos/test_user/test_repo/java/maven2/io.packagecloud/jake-2.3.jar/promote.json",
    "destroy_url": "/api/v1/repos/test_user/test_repo/java/maven2/io.packagecloud/jake-2.3.jar"
  },
  ...
]

destroy_gem

DELETE /api/v1/repos/:user_id/:repo/gems/:package.gem

URL Params:

  • :user_id String The owner of the repo.
  • :repo String The name of the repo.
  • :package String The name of the package to be yanked.

Response:

Empty An empty JSON hash.

Example request(s):

curl -X DELETE "https://packagecloud.io/api/v1/repos/cooluser/mystuff/gems/jake-1.0.0.gem"

Example response:

< HTTP/1.1 200 OK
{}

destroy_java

DELETE /api/v1/repos/:user_id/:repo/java/maven2/:group/:filename

URL Params:

  • :user_id String The owner of the repo.
  • :repo String The name of the repo.
  • :group String The name of the group this package belongs to.
  • :filename String The filename of the package to be yanked.

Response:

Empty An empty JSON hash.

Example request(s):

curl -X DELETE "https://packagecloud.io/api/v1/repos/test_user/test_repo/java/maven2/io.packagecloud/jake-2.3.jar"

Example response:

< HTTP/1.1 200 OK
{}

destroy

DELETE /api/v1/repos/:user_id/:repo/:distro/:version/:package.:ext

URL Params:

  • :user_id String The owner of the repo.
  • :repo String The name of the repo.
  • :distro String The name of the distribution the package is in. (i.e. ubuntu)
  • :version String The version name of the distribution the package is in. (i.e. precise)
  • :package String The name of the package to be yanked.
  • :ext String The file extension of the package to be yanked.

Query Params:

  • :scope String The package scope. Required if deleting a scoped Node.JS package. Include the escaped '@', (i.e. ?scope=%40example).

Response:

Empty An empty JSON hash.

Example request(s):

Deleting an Ubuntu Precise package
curl -X DELETE "https://packagecloud.io/api/v1/repos/cooluser/mystuff/ubuntu/precise/jake_1.0-7.dsc"
Deleting an Enterprise Linux 6.0 package:
curl -X DELETE "https://packagecloud.io/api/v1/repos/cooluser/mystuff/el/6/jake-1.0-2.el6.x86_64.rpm"
Deleting a Python package:
curl -X DELETE "https://packagecloud.io/api/v1/repos/cooluser/mystuff/pypi/1/packagecloud_test-0.9.7b1.zip"
Deleting a Java package:
curl -X DELETE "https://packagecloud.io/api/v1/repos/cooluser/mystuff/java/maven2/jake-2.3.jar"
Deleting an unscoped Node.JS package:
curl -X DELETE "https://packagecloud.io/api/v1/repos/cooluser/mystuff/node/1/packagecloud-test-1.0.0.tgz"
Deleting a scoped Node.JS package:
curl -X DELETE "https://packagecloud.io/api/v1/repos/cooluser/mystuff/node/1/packagecloud-test-1.0.0.tgz?scope=%40example"

Example response:

< HTTP/1.1 200 OK
{}

search

GET /api/v1/repos/:user_id/:repo/search.json

Query Params:

  • :q String The query string to search for package filename. If empty string is passed, all packages are returned
  • :filter String Search by package type (RPMs, Debs, DSCs, Gem, Python, Node) - Ignored when [:dist] is present.
  • :dist String The name of the distribution the package is in. (i.e. ubuntu, el/6) - Overrides [:filter]
  • :arch String The architecture of the packages. (i.e. x86_64, arm64, amd64) - Alpine/RPM/Debian only.
  • :per_page String The number of packages to return from the results set. If nothing passed, default is 30

Response:

PackageFragment A JSON array of PackageFragment objects hat match the query parameters.

Example request(s):

Note:

Pass pagination information using the following headers listed here:

API Pagination

curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/search?q="
curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/search?filter=rpms&per_page=1"
curl "https://packagecloud.io/api/v1/repos/test_user/test_repo/search?q=jake&dist=ubuntu&per_page=1"

Example response:

< HTTP/1.1 200 OK
[
  {
    "name": "jakedotrb",
    "distro_version": "RubyGem",
    "created_at": "2017-03-14T14:31:16.000Z",
    "version": "0.0.1",
    "release": null,
    "epoch": null,
    "private": false,
    "type": "gem",
    "filename": "jakedotrb-0.0.1.gem",
    "uploader_name": "test_user",
    "indexed": false,
    "repository_html_url": "/test_user/test_repo",
    "package_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1.json",
    "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1/stats/downloads/detail.json",
    "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1/stats/downloads/series/daily.json",
    "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/gem/jakedotrb/0.0.1/stats/downloads/count.json",
    "package_html_url": "/test_user/test_repo/packages/gems/jakedotrb-0.0.1.gem",
    "download_url": "https://packagecloud.io/test_user/test_repo/packages/gems/jakedotrb-0.0.1.gem/download",
    "promote_url": "/api/v1/repos/test_user/test_repo/gems/jakedotrb-0.0.1.gem/promote.json",
    "destroy_url": "/api/v1/repos/test_user/test_repo/gems/jakedotrb-0.0.1.gem"
  },
  {
    "name": "jake",
    "distro_version": "fedora/22",
    "created_at": "2017-03-13T02:49:29.000Z",
    "version": "1.0",
    "release": "1.el6",
    "epoch": 0,
    "private": false,
    "type": "rpm",
    "filename": "jake-1.0-1.el6.x86_64.rpm",
    "uploader_name": "test_user",
    "indexed": false,
    "repository_html_url": "/test_user/test_repo",
    "package_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json",
    "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/detail.json",
    "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/series/daily.json",
    "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/count.json",
    "package_html_url": "/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm",
    "download_url": "https://packagecloud.io/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm/download",
    "promote_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm/promote.json",
    "destroy_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm"
  },
  ...
]

read_tokens

index

List read tokens for a master token.

GET /api/v1/repos/:user_id/:repo/master_tokens/:master_token/read_tokens.json

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.
  • :master_token String The value or id of the master_token.

Response:

Array<ReadToken> An array of read token objects that belong to this repository.

Example request(s):

curl https://packagecloud.io/api/v1/repos/username/reponame/master_tokens/123/read_tokens.json

Example response:

< HTTP/1.1 200 OK
{
   "read_tokens" : [
      {
         "id" : 1234,
         "value" : "3fe453060fd7f017219e308eb98ccf273b4c3655ba57577a",
         "name" : "app1.someservice.com"
      }
   ]
}

create

Create a read token.

POST /api/v1/repos/:user_id/:repo/master_tokens/:master_token/read_tokens.json

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.
  • :master_token String The value or id of the master_token.
  • read_token[name] String The name of the token to create.

Response:

ReadToken The newly created read token object.

Example request(s):

curl -X POST -F "read_token[name]=tokename" https://packagecloud.io/api/v1/repos/username/reponame/master_tokens/123/read_tokens.json

Example response:

< HTTP/1.1 201 Created
{"name":"tokenname","value":"ea6eef3f26bdcaa5a10ed32b5f8262dbad233900b2571a1c"}

destroy

Destroy a read token

DELETE /api/v1/repos/:user_id/:repo/master_tokens/:master_token/read_tokens/:id

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.
  • :master_token String The value or id of the master_token.
  • :id Integer The id of the read token to be destroyed.

Example request(s):

curl -X DELETE https://packagecloud.io/api/v1/repos/username/reponame/master_tokens/123/read_tokens/33

Example response:

< HTTP/1.1 204 OK

show

View a single read token

GET /api/v1/repos/:user_id/:repo/master_tokens/:master_token/read_tokens/:id

URL Params:

  • :user_id String The username to which the repo belongs.
  • :repo String The name of the repo.
  • :master_token String The value or id of the master_token.
  • :id Integer The id of the read token to view

Example request(s):

curl -X GET https://packagecloud.io/api/v1/repos/username/reponame/master_tokens/123/read_tokens/33

Example response:

< HTTP/1.1 200 OK
{
   "id" : 1234,
   "value" : "3fe453060fd7f017219e308eb98ccf273b4c3655ba57577a",
   "name" : "app1.someservice.com"
}

stats

downloads_count

Retrieve the number of times a particular package has been downloaded given a particular criteria. This is specific to a single package inside a repository.

Note:

Default date range is 7 days ago.

debian/redhat
GET /api/v1/repos/:user_id/:repo/package/:type/:distro/:version/:package/:arch/:package_version/:release/stats/downloads/count.json
gem
GET /api/v1/repos/:user_id/:repo/package/gem/:package/:version/stats/downloads/count.json
python
GET /api/v1/repos/:user_id/:repo/package/python/:package/:version/stats/downloads/count.json
node.js
GET /api/v1/repos/:user_id/:repo/package/node/:package/:version/stats/downloads/count.json

Permissions:

Everyone for public repositories, Owners & Collaborators for private repositories.

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of this repository.
  • :package String The name of the package. If the package is a scoped Node.JS package include the scope and an escaped '/' (e.g. @scope%2Fname).

Query Params:

  • :start_date String The ISO8601 starting date (e.g., 20160231Z).
  • :end_date String The ISO8601 ending date (e.g., 20160231Z).
  • :master_token String The master_token name or id to filter downloads by.
  • :read_token String The read_token name or id to filter downloads by (:master_token required).
  • :user_agent String The user_agent to filter downloads by.
  • :source String The source to filter downloads by, must be "web" or "cli"

Response:

CountValue JSON object containing the value of the result.

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

Gem Downloads Count for my-gem-1.2.0.gem:
/api/v1/repos/julio/test_repo/package/gem/my-gem/1.2.0/stats/downloads/count.json
Python Downloads Count for packagecloud_test-1.2.1-py2.7.egg:
/api/v1/repos/julio/test_repo/package/python/packagecloud-test/1.2.1/stats/downloads/count.json
RPM Downloads Count for jake-1.0-2.x86_64.rpm on Fedora 18:
/api/v1/repos/julio/test_repo/package/rpm/fedora/18/jake/x86_64/1.0/2/stats/downloads/count.json
Debian Downloads Count for jake1.0-7amd64.deb on Ubuntu Hardy:
/api/v1/repos/julio/test_repo/package/deb/ubuntu/hardy/jake/amd64/1.0-7/stats/downloads/count.json
Debian Downloads Count for jake1.0-7amd64.deb on Ubuntu Hardy for User Agent "MyClient1":
/api/v1/repos/julio/test_repo/package/deb/ubuntu/hardy/jake/amd64/1.0-7/stats/downloads/count.json?user_agent=MyClient1
Debian Downloads Count for jake1.0-7amd64.deb on Ubuntu Hardy and Read Token "database":
/api/v1/repos/julio/test_repo/package/deb/ubuntu/hardy/jake/amd64/1.0-7/stats/downloads/count.json?read_token=database
Gem Downloads Count for my-gem-1.2.0.gem for all time:
/api/v1/repos/julio/test_repo/package/gem/my-gem/1.2.0/stats/downloads/count.json?start_date=19700101Z
Gem Downloads Count for my-gem-1.2.0.gem for all time CLI downloads:
/api/v1/repos/julio/test_repo/package/gem/my-gem/1.2.0/stats/downloads/count.json?start_date=19700101Z&source=cli
Node.js Downloads Count for test-pkg-1.3.1.tgz for all time:
/api/v1/repos/julio/test_repo/package/node/test-pkg/1.3.1/stats/downloads/count.json?start_date=19700101Z&source=cli
Node.js Downloads Count for scoped package @scope/test-pkg-1.3.1.tgz for all time:
/api/v1/repos/julio/test_repo/package/node/@scope%2Ftest-pkg/1.3.1/stats/downloads/count.json?start_date=19700101Z&source=cli

Example response:

< HTTP/1.0 200 OK
{
  "value": 5135
}

downloads_detail

Retrieve the details of all the downloads for a particular package given a particular criteria. This is specific to a single package inside a repository.

Note:

Default date range is 7 days ago. See response headers for pagination information.

debian/redhat
GET /api/v1/repos/:user_id/:repo/package/:type/:distro/:version/:package/:arch/:package_version/:release/stats/downloads/detail.json
gem
GET /api/v1/repos/:user_id/:repo/package/gem/:package/:version/stats/downloads/detail.json
python
GET /api/v1/repos/:user_id/:repo/package/python/:package/:version/stats/downloads/detail.json
node.js
GET /api/v1/repos/:user_id/:repo/package/node/:package/:version/stats/downloads/detail.json

Permissions:

Repository owners only

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of this repository.
  • :package String The name of the package. If the package is a scoped Node.JS package include the scope and an escaped '/' (e.g. @scope%2Fname).
  • :version String The version number of the package.

Query Params:

  • :start_date String An ISO8601 starting date (e.g., 20160231Z).
  • :end_date String An ISO8601 ending date (e.g., 20160231Z).
  • :master_token String The master_token name or id to filter downloads by.
  • :read_token String The read_token name or id to filter downloads by (:master_token required).
  • :user_agent String The user_agent to filter downloads by.
  • :source String The source to filter downloads by, must be "web" or "cli."

Response:

PackageDownloads JSON object containing details of all downloads

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

Gem Downloads Details for my-gem-1.2.0.gem:
/api/v1/repos/julio/test_repo/package/gem/my-gem/1.2.0/stats/downloads/detail.json
Python Downloads Details for packagecloud_test-1.2.1-py2.7.egg:
/api/v1/repos/julio/test_repo/package/python/packagecloud-test/1.2.1/stats/downloads/detail.json
RPM Downloads Details for jake-1.0-2.x86_64.rpm on Fedora 18:
/api/v1/repos/julio/test_repo/package/rpm/fedora/18/jake/x86_64/1.0/2/stats/downloads/detail.json
Debian Downloads Details for jake1.0-7amd64.deb on Ubuntu Hardy:
/api/v1/repos/julio/test_repo/package/deb/ubuntu/hardy/jake/amd64/1.0-7/stats/downloads/detail.json
Debian Downloads Details for jake1.0-7amd64.deb on Ubuntu Hardy for User Agent "MyClient1":
/api/v1/repos/julio/test_repo/package/deb/ubuntu/hardy/jake/amd64/1.0-7/stats/downloads/detail.json?user_agent=MyClient1
Debian Downloads Details for jake1.0-7amd64.deb on Ubuntu Hardy and Read Token "database":
/api/v1/repos/julio/test_repo/package/deb/ubuntu/hardy/jake/amd64/1.0-7/stats/downloads/detail.json?read_token=database
Gem Downloads Details for my-gem-1.2.0.gem for all time:
/api/v1/repos/julio/test_repo/package/gem/my-gem/1.2.0/stats/downloads/detail.json?start_date=19700101Z
Gem Downloads Details for my-gem-1.2.0.gem for all time CLI downloads:
/api/v1/repos/julio/test_repo/package/gem/my-gem/1.2.0/stats/downloads/detail.json?start_date=19700101Z&source=cli
Node.js Downloads Details for test-pkg-1.3.1.tgz for all time:
/api/v1/repos/julio/test_repo/package/node/test-pkg/1.3.1/stats/downloads/detail.json?start_date=19700101Z
Node.js Downloads Details for scoped package @scope/test-pkg-1.3.1.tgz for all time:
/api/v1/repos/julio/test_repo/package/node/@scope%2Ftest-pkg/1.3.1/stats/downloads/detail.json?start_date=19700101Z

Example response:

< HTTP/1.0 200 OK
{
  "downloaded_at": 2015-04-12T05:36:53.000Z,
  "ip_address": "12.51.22.21",
  "user_agent": "Ruby",
  "source": "cli",
  "read_token": "ubuntu-51.2.aws.com"
}

downloads_series

Retrieve a time series of all the downloads for a particular package given a particular criteria. This is specific to a single package inside a repository.

Note:

Default date range is 7 days ago. See response headers for pagination information.

debian/redhat
GET /api/v1/repos/:user_id/:repo/package/:type/:distro/:version/:package/:arch/:package_version/:release/stats/downloads/series/:interval.json
gem
GET /api/v1/repos/:user_id/:repo/package/gem/:package/:version/stats/downloads/series/:interval.json
python
GET /api/v1/repos/:user_id/:repo/package/python/:package/:version/stats/downloads/series/:interval.json
node.js
GET /api/v1/repos/:user_id/:repo/package/node/:package/:version/stats/downloads/series/:interval.json

Permissions:

Everyone for public repositories, Owners & Collaborators for private repositories.

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of this repository.
  • :package String The name of the package. If the package is a scoped Node.JS package include the scope and an escaped '/' (e.g. @scope%2Fname).
  • :version String The version number of the package.

Query Params:

  • :start_date String An ISO8601 starting date (e.g., 20160231Z).
  • :end_date String An ISO8601 end date (e.g., 20160231Z).
  • :master_token String The master_token name or id to filter downloads by.
  • :read_token String The read_token name or id to filter downloads by (:master_token required).
  • :user_agent String The user_agent to filter downloads by.
  • :source String The source to filter downloads by, must be "web" or "cli"

Response:

SeriesValue JSON object containing details of all downloads

Example request(s):

Note:

Instead of constructing these URLs by hand, you should use the generated versions returned from any of these API's, which are guaranteed to be correct for all supported package types:

Gem Downloads Series for my-gem-1.2.0.gem:
/api/v1/repos/julio/test_repo/package/gem/my-gem/1.2.0/stats/downloads/series/daily.json
Python Downloads Series for packagecloud_test-1.2.1-py2.7.egg:
/api/v1/repos/julio/test_repo/package/python/packagecloud-test/1.2.1/stats/downloads/series/daily.json
RPM Downloads Series for jake-1.0-2.x86_64.rpm on Fedora 18:
/api/v1/repos/julio/test_repo/package/rpm/fedora/18/jake/x86_64/1.0/2/stats/downloads/series/daily.json
Debian Downloads Series for jake1.0-7amd64.deb on Ubuntu Hardy:
/api/v1/repos/julio/test_repo/package/deb/ubuntu/hardy/jake/amd64/1.0-7/stats/downloads/series/daily.json
Debian Downloads Series for jake1.0-7amd64.deb on Ubuntu Hardy for User Agent "MyClient1":
/api/v1/repos/julio/test_repo/package/deb/ubuntu/hardy/jake/amd64/1.0-7/stats/downloads/series/daily.json?user_agent=MyClient1
Debian Downloads Series for jake1.0-7amd64.deb on Ubuntu Hardy and Read Token "database":
/api/v1/repos/julio/test_repo/package/deb/ubuntu/hardy/jake/amd64/1.0-7/stats/downloads/series/daily.json?read_token=database
Gem Downloads Series for my-gem-1.2.0.gem for all time:
/api/v1/repos/julio/test_repo/package/gem/my-gem/1.2.0/stats/downloads/series/daily.json?start_date=19700101Z
Gem Downloads Series for my-gem-1.2.0.gem for all time CLI downloads:
/api/v1/repos/julio/test_repo/package/gem/my-gem/1.2.0/stats/downloads/series/daily.json?start_date=19700101Z&source=cli
Node.js Downloads Series for test-pkg-1.3.1.tgz for all time:
/api/v1/repos/julio/test_repo/package/node/test-pkg/1.3.1/stats/downloads/series/daily.json?start_date=19700101Z
Node.js Downloads Series for scoped package @scope/test-pkg-1.3.1.tgz for all time:
/api/v1/repos/julio/test_repo/package/node/@scope%2Ftest-pkg/1.3.1/stats/downloads/series/daily.json?start_date=19700101Z

Example response:

< HTTP/1.0 200 OK
{
 "20160221Z": 22,
 "20160222Z": 21,
 "20160223Z": 29,
 "20160224Z": 19,
 "20160225Z": 30,
 "20160226Z": 38,
 "20160227Z": 40
}

installs_count

Retrieve the number of times a particular repository has been installed given a particular criteria. This is specific to a single repository.

Note:

Default date range is 7 days ago.

all
GET /api/v1/repos/:user_id/:repo/stats/installs/count.json
by distro
GET /api/v1/repos/:user_id/:repo/stats/installs/:distro/count.json
by distro and version
GET /api/v1/repos/:user_id/:repo/stats/installs/:distro/:version/count.json

Permissions:

Everyone for public repositories, Owners & Collaborators for private repositories.

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of this repository.
  • :distro String The name of the distribution to filter repository installs by (i.e. ubuntu)
  • :version String The version name of the distribution to filter repository installs by (i.e. precise)

Query Params:

  • :start_date String ISO8601 starting date, like 20160231Z.
  • :end_date String ISO8601 ending date, like 20160231Z.
  • :master_token String The master_token name or id to filter repository installs by.
  • :user_agent String The user_agent to filter repository installs by.

Response:

CountValue JSON object containing the value of the result.

Example request(s):

Repository Installs Count for testuser/testrepo across all operating systems and distributions:
/api/v1/repos/julio/test_repo/stats/installs/count.json
Repository Installs Count for testuser/testrepo across all Ubuntu distributions:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/count.json
Repository Installs Count for testuser/testrepo specifically for Ubuntu Precise Pangolin:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/precise/count.json
Repository Installs Count for testuser/testrepo specifically for Ubuntu Precise Pangolin for all time:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/precise/count.json?start_date=19700101Z
Repository Installs Count for testuser/testrepo across all Ubuntu distributions matching a specific token:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/count.json?master_token=datacenter-2

Example response:

< HTTP/1.0 200 OK
{
  "value": 5135
}

installs_detail

Retrieve the details of all repository installations that match a particular criteria. This is specific to a single repository.

Note:

Default date range is 7 days ago. See response headers for pagination information.

all
GET /api/v1/repos/:user_id/:repo/stats/installs/detail.json
by distro
GET /api/v1/repos/:user_id/:repo/stats/installs/:distro/detail.json
by distro and version
GET /api/v1/repos/:user_id/:repo/stats/installs/:distro/:version/detail.json

Permissions:

Repository owners only

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of this repository.
  • :distro String The name of the distribution to filter repository installs by (i.e. ubuntu)
  • :version String The version name of the distribution to filter repository installs by (i.e. precise)

Query Params:

  • :start_date String ISO8601 starting date, like 20160231Z.
  • :end_date String ISO8601 ending date, like 20160231Z.
  • :master_token String The master_token name or id to filter repository installs by.
  • :user_agent String The user_agent to filter repository installs by.

Response:

RepositoryInstalls JSON object containing the details of repository installs.

Example request(s):

Repository Installs Details for testuser/testrepo across all operating systems and distributions:
/api/v1/repos/julio/test_repo/stats/installs/detail.json
Repository Installs Details for testuser/testrepo across all Ubuntu distributions:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/detail.json
Repository Installs Details for testuser/testrepo specifically for Ubuntu Precise Pangolin:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/precise/detail.json
Repository Installs Details for testuser/testrepo specifically for Ubuntu Precise Pangolin for all time:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/precise/detail.json?start_date=19700101Z
Repository Installs Details for testuser/testrepo across all Ubuntu distributions matching a specific token:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/detail.json?master_token=datacenter-2

Example response:

< HTTP/1.0 200 OK
{
  "installed_at": 2015-04-12T05:36:53.000Z,
  "ip_address": "12.51.22.21",
  "hostname": "localhost.localdomain",
  "user_agent": "Ruby",
  "master_token": "default",
  "distro_version": "ubuntu/precise"
}

installs_series

Retrieve a time series of all the repository installs that match a particular criteria for a give time period. This is specific to a single repository.

Note:

Default date range is 7 days ago. See response headers for pagination information.

all
GET /api/v1/repos/:user_id/:repo/stats/installs/series/:interval.json
by distro
GET /api/v1/repos/:user_id/:repo/stats/installs/:distro/series/:interval.json
by distro and version
GET /api/v1/repos/:user_id/:repo/stats/installs/:distro/:version/series/:interval.json

Permissions:

Everyone for public repositories, Owners & Collaborators for private repositories.

URL Params:

  • :user_id String The user this repo belongs to.
  • :repo String The name of this repository.
  • :distro String The name of the distribution to filter repository installs by (i.e. ubuntu)
  • :version String The version name of the distribution to filter repository installs by (i.e. precise)
  • :interval String The version name of the distribution to filter repository installs by (i.e. precise)

Query Params:

  • :start_date String ISO8601 starting date, like 20160231Z.
  • :end_date String ISO8601 ending date, like 20160231Z.
  • :master_token String The master_token name or id to filter repository installs by.
  • :user_agent String The user_agent to filter repository installs by.

Response:

RepositoryInstalls JSON object containing the details of repository installs.

Example request(s):

Repository Installs Series for testuser/testrepo across all operating systems and distributions:
/api/v1/repos/julio/test_repo/stats/installs/series/weekly.json
Repository Installs Series for testuser/testrepo across all Ubuntu distributions:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/series/weekly.json
Repository Installs Series for testuser/testrepo specifically for Ubuntu Precise Pangolin:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/precise/series/weekly.json
Repository Installs Series for testuser/testrepo specifically for Ubuntu Precise Pangolin for all time:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/precise/series/weekly.json?start_date=19700101Z
Repository Installs Series for testuser/testrepo across all Ubuntu distributions matching a specific token:
/api/v1/repos/julio/test_repo/stats/installs/ubuntu/series/weekly.json?master_token=datacenter-2

Example response:

< HTTP/1.0 200 OK
{
 "20160221Z": 22,
 "20160222Z": 21,
 "20160223Z": 29,
 "20160224Z": 19,
 "20160225Z": 30,
 "20160226Z": 38,
 "20160227Z": 40
}

CountValue

Fields:

  • value The value of the result

Example:

{
   "value": 12312,
}

See Also:

The docs Package Downloads count API

The docs Repository Installs count API

GPGKey

Fields:

  • name The name of the GPG key.
  • fingerprint The GPG key's fingerprint.
  • keytype The GPG key type ('repo' for repository signing keys or 'package' for package signing keys).
  • self The URL for this object.
  • destroy_url The URL that can be used to delete this GPG key.
  • download_url The URL that can be used to download the GPG public key data.

Example:

{
  "name" : "user-repo-99A35B3F55E8EB3B.pub.gpg",
  "fingerprint" : "99A35B3F55E8EB3B",
  "keytype": "repo",
  "self": "/api/v1/repos/user/repo/gpg_keys/user-repo-99A35B3F55E8EB3B.pub.gpg.json",
  "destroy_url" : "/api/v1/repos/user/repo/gpg_keys/user-repo-99A35B3F55E8EB3B.pub.gpg.json",
  "download_url": "https://packagecloud.io/user/repo/gpgkey"
}

See Also:

The docs on GPG keys.

MasterToken

Fields:

  • name The name of the master token.
  • value The value of the master token, for use in the read token API.
  • paths[self] A URI for this master token. Can be used to destroy one.
  • read_tokens An array of {ReadToken} objects that belong to this master token.

Example:

{
   "value" : "e5480f5b38f1f78de2aaa0fa732d1427b1b83113371fd97d",
   "name" : "default",
   "read_tokens" : [
      {
         "value" : "3fe453060fd7f017219e308eb98ccf273b4c3655ba57577a",
         "name" : "app1.somewhere.com"
      }
   ],
   "paths" : {
      "self" : "/api/v1/repos/somewhere/production/master_tokens/1"
   }
}

See Also:

The docs on master tokens.

MasterTokenReadTokens

Fields:

  • name The name of the master token.
  • value The value of the master token, for use in the read token API.
  • paths[self] A URI for this master tokens read tokens.
  • read_tokens_url a URI to get all of the read tokens for this master token.

Example:

{
   "name" : "default",
   "value" : "e5480f5b38f1f78de2aaa0fa732d1427b1b83113371fd97d",
   "paths" : {
      "self" : "/api/v1/repos/somewhere/production/master_tokens/1"
   },
   "read_tokens_url" : "/api/v1/repos/somewhere/production/master_tokens/1/read_tokens"
}

See Also:

The docs on master tokens.

MasterTokensResult

Fields:

  • name The name of the master token.
  • value The value of the master token, for use in the read token API.
  • self_url A URI for this master token. Can be used to destroy one.
  • read_tokens_url a URI to get all of the read tokens for this master token.

Example:

{
   "name" : "default",
   "value" : "e5480f5b38f1f78de2aaa0fa732d1427b1b83113371fd97d",
   "self_url" : "/api/v1/repos/somewhere/production/master_tokens/1",
   "read_tokens_url" : "/api/v1/repos/somewhere/production/master_tokens/1"
}

See Also:

The docs on master tokens.

PackageDetails

{
  "name": "jake",
  "distro_version": "fedora/22",
  "architecture": "x86_64",
  "repository": "test_repo",
  "size": "3712",
  "summary": "jake douglas is a very nice young man.",
  "filename": "jake-1.0-1.el6.x86_64.rpm",
  "description": "as it so happens, jake douglas is a very nice young man.",
  "dependencies": [
    {
      "context": "requires",
      "dependencies": [
        "libc.so.6(GLIBC_2.2.5)(64bit)",
        "rtld(GNU_HASH)"
      ]
    }
  ],
  "md5sum": "5abe922fc4bbf5bbdac9b85173371892",
  "sha1sum": "062fd41ecf96587309ec9a3ae2035cc44c348b8f",
  "sha256sum": "070da5370a96ba3ae679e7d02d7de6309e4d159340d9f3b555d6d5b4b7cf260a",
  "sha512sum": "406fa288d5dfff194ec2b119b798c4658375a5d07b34f2d6350885cdf6b620f3fdeee45427fef8bcd37e6624049fba0c633b5b4030b79bf96028db6b4f01de87",
  "private": false,
  "uploader_name": "test_user",
  "created_at": "2017-03-13T02:49:29.000Z",
  "licenses": [
    "GPL"
  ],
  "version": "1.0",
  "release": "1.el6",
  "epoch": 0,
  "indexed": false,
  "scope": null,
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json",
  "versions_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/versions.json",
  "promote_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm/promote.json",
  "total_downloads_count": 0,
  "download_url": "https://packagecloud.io/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm/download",
  "package_html_url": "/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/count.json",
  "destroy_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm",
  "self_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json"
}

Fields:

  • name The name of the package.
  • distro_version The distro_version for the package.
  • architecture The architecture of the package.
  • repository The name of the repository for the package.
  • size The size (in bytes) of the package. Returned as a String for JavaScript support.
  • summary The summary of the package (if available).
  • filename The filename of the package.
  • description The description of the package (if available).
  • md5sum The MD5 checksum for the package (if available).
  • sha1sum The SHA1 checksum for the package (if available).
  • sha256sum The SHA256 checksum for the package (if available).
  • sha512sum The SHA512 checksum for the package (if available).
  • private Whether or not the package is in a private repository.
  • uploader_name The name of the uploader for the package.
  • created_at When the package was uploaded.
  • licenses Array of licenses for this package (if available).
  • version The version of the package.
  • release The release of the package (if available).
  • epoch The epoch of the package (if available).
  • indexed Whether or not this package has been indexed.
  • scope The scope of the package (if available).
  • repository_html_url The HTML url of the repository.
  • versions_url The API url of other versions of this package.
  • promote_url The API url that can be used to promote this package.
  • total_downloads_count The number of times this package has been downloaded.
  • download_url The url to download this package.
  • package_html_url The HTML url for this package.
  • downloads_detail_url The url to get access log details for package downloads.
  • downloads_series_url The url to get time series data for package downloads.
  • downloads_count_url The url to get the total number of package downloads.
  • destroy_url The url for the HTTP DELETE request to destroy this package.
  • self_url The API url for this response.

Example:

See Also:

The docs on the Package show API.

The docs on the Rubygem show API.

PackageDownloads

Fields:

  • downloaded_at The date this package was downloaded (UTC)
  • ip_address The ip address of this package download
  • user_agent The user agent of the client which downloaded the package
  • source The source of the package download ("web" or "cli")
  • read_token The name of the read token (for private repositories)

Example:

{
   "downloaded_at": 2015-04-12T05:36:53.000Z,
   "ip_address": "12.51.22.21",
   "user_agent": "Ruby",
   "source": "cli",
   "read_token": "ubuntu-51.2.aws.com"
}

See Also:

The docs on the Package Download details API.

PackageFragment

Fields:

  • name The name of the package.
  • created_at When the package was uploaded.
  • distro_version The distro_version for the package.
  • version The version of the package.
  • release The release of the package (if available).
  • architecture The architecture of the package (if available).
  • epoch The epoch of the package (if available).
  • scope The scope of the package (if available).
  • private Whether or not the package is in a private repository.
  • type The type of package ("deb", "gem", or "rpm").
  • filename The filename of the package.
  • uploader_name The name of the uploader for the package.
  • indexed Whether or not this package has been indexed.
  • repository_html_url The HTML url of the repository.
  • package_url The API url for this package.
  • package_html_url The HTML url for this package.
  • downloads_detail_url The url to get access log details for package downloads.
  • downloads_series_url The url to get time series data for package downloads.
  • downloads_count_url The url to get the total number of package downloads.
  • promote_url The url for promoting this to another repository.
  • destroy_url The url for the HTTP DELETE request to destroy this package.

Example:

{
  "name": "jake",
  "distro_version": "fedora/22",
  "created_at": "2017-03-13T02:49:29.000Z",
  "version": "1.0",
  "release": "1.el6",
  "epoch": 0,
  "scope": null,
  "private": false,
  "type": "rpm",
  "filename": "jake-1.0-1.el6.x86_64.rpm",
  "uploader_name": "test_user",
  "indexed": false,
  "repository_html_url": "/test_user/test_repo",
  "package_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json",
  "downloads_detail_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/detail.json",
  "downloads_series_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/series/daily.json",
  "downloads_count_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/count.json",
  "package_html_url": "/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm",
  "promote_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm/promote.json",
  "delete_url": "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm"
}

See Also:

The docs on the Packages List All API.

The docs on the Package List/Filter API.

PackageVersion

Fields:

  • name The name of the package.
  • versions_count How many versions this package has.
  • versions_url The API url of all versions of this package.
  • repository_url The API url of the repository.
  • repository_html_url The HTML url of the repository.

Example:

{
  "name": "jake",
  "versions_count": 1,
  "versions_url": "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/versions.json",
  "repository_url": "/api/v1/repos/test_user/test_repo",
  "repository_html_url": "/test_user/test_repo"
}

See Also:

The docs on the Packages Versions API.

The docs on the RubyGem Versions API.

ReadToken

Fields:

  • name The name of the token. Probably the FQDN of the node that owns it.
  • value The value of the token. This is the value to use in the actual connection string to the repo.

Example:

{
  "id"   : 231,
  "value" : "3fe453060fd7f017219e308eb98ccf273b4c3655ba57577a",
  "name" : "app1.someservice.com"
}

See Also:

The docs on read tokens.

Repository

Fields:

  • name The name of the repo.
  • created_at A timestamp of when the repo was created.
  • url The packagecloud URL for the repo.
  • last_push_human A human readable string describing the number of packages in the repo.
  • private A boolean value indicating whether or not the repo is private.
  • total_installs_count The number of times this repository has been installed.
  • fqname A string value of the fully qualified name (owner/reponame) for this repo. i.e. computology/public

Example:

{
    "name": "myrepo",
    "created_at": "2014-02-26T00:03:28.000Z",
    "url": "https://packagecloud.io/cooluser/myrepo",
    "last_push_human": "3 days ago",
    "package_count_human": "17 packages",
    "private": false,
    "total_installs_count": 1231,
    "fqname": "cooluser/myrepo"
}

See Also:

The docs on repos.

RepositoryInstalls

Fields:

  • installed_at The date this repository was installed (UTC)
  • ip_address The ip address of this repository install
  • user_agent The user agent of the client which installed this repository
  • master_token The master token associated with this repository install
  • distro_version The distribution version this repository was installed for

Example:

{
   "installed_at": 2015-04-12T05:36:53.000Z,
   "ip_address": "12.51.22.21",
   "hostname": "localhost.localdomain",
   "user_agent": "Ruby",
   "master_token": "default",
   "distro_version": "ubuntu/precise"
}

See Also:

The docs on the Repository Installs details API.

SeriesValue

Fields:

  • A JSON hash of Dates and values

Example:

{
   "20160221Z": 22,
   "20160222Z": 21,
   "20160223Z": 29,
   "20160224Z": 19,
   "20160225Z": 30,
   "20160226Z": 38,
   "20160227Z": 40
}

See Also:

The docs Package Downloads series API

The docs Repository Installs series API