Conan API

This is the API documentation for Conan Packages.

caution
This API is used by the Conan package manager client and is generally not meant for manual consumption.

For instructions on how to upload and install Conan packages from the GitLab package registry, see the Conan package registry documentation.

note
These endpoints do not adhere to the standard API authentication methods. See each route for details on how credentials are expected to be passed.

Route prefix

There are two sets of identical routes that each make requests in different scopes:

  • Use the instance-level prefix to make requests in the entire GitLab instance’s scope.
  • Use the project-level prefix to make requests in a single project’s scope.

The examples in this document all use the instance-level prefix.

Instance-level

/packages/conan/v1

When using the instance-level routes, be aware that there is a naming restriction for Conan recipes.

Project-level

 /projects/:id/packages/conan/v1`
Attribute Type Required Description
id string yes The project ID or full project path.

Ping

Introduced in GitLab 12.2.

Ping the GitLab Conan repository to verify availability:

GET <route-prefix>/ping
curl "https://gitlab.example.com/api/v4/packages/conan/v1/ping"

Example response:

""

Introduced in GitLab 12.4.

Search the instance for Conan packages by name:

GET <route-prefix>/conans/search
Attribute Type Required Description
q string yes Search query. You can use * as a wildcard.
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/packages/conan/v1/conans/search?q=Hello*"

Example response:

{
  "results": [
    "Hello/0.1@foo+conan_test_prod/beta",
    "Hello/0.1@foo+conan_test_prod/stable",
    "Hello/0.2@foo+conan_test_prod/beta",
    "Hello/0.3@foo+conan_test_prod/beta",
    "Hello/0.1@foo+conan-reference-test/stable",
    "HelloWorld/0.1@baz+conan-reference-test/beta"
    "hello-world/0.4@buz+conan-test/alpha"
  ]
}

Authenticate

Introduced in GitLab 12.2.

Returns a JWT to be used for Conan requests in a Bearer header:

"Authorization: Bearer <token>

The Conan package manager client automatically uses this token.

GET <route-prefix>/users/authenticate
curl --user <username>:<personal_access_token> "https://gitlab.example.com/packages/conan/v1/users/authenticate

Example response:

eyJhbGciOiJIUzI1NiIiheR5cCI6IkpXVCJ9.eyJhY2Nlc3NfdG9rZW4iOjMyMTQyMzAsqaVzZXJfaWQiOjQwNTkyNTQsImp0aSI6IjdlNzBiZTNjLWFlNWQtNDEyOC1hMmIyLWZiOThhZWM0MWM2OSIsImlhd3r1MTYxNjYyMzQzNSwibmJmIjoxNjE2NjIzNDMwLCJleHAiOjE2MTY2MjcwMzV9.QF0Q3ZIB2GW5zNKyMSIe0HIFOITjEsZEioR-27Rtu7E

Check Credentials

Introduced in GitLab 12.4.

Checks the validity of Basic Auth credentials or a Conan JWT generated from /authenticate.

GET <route-prefix>/users/check_credentials
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/users/check_credentials

Example response:

ok

Recipe Snapshot

Introduced in GitLab 12.5.

This returns the snapshot of the recipe files for the specified Conan recipe. The snapshot is a list of filenames with their associated md5 hash.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel
Attribute Type Required Description
package_name string yes Name of a package.
package_version string yes Version of a package.
package_username string yes Conan username of a package. This is the +-separated full path of your project.
package_channel string yes Channel of a package.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable"

Example response:

{
  "conan_sources.tgz": "eadf19b33f4c3c7e113faabf26e76277",
  "conanfile.py": "25e55b96a28f81a14ba8e8a8c99eeace",
  "conanmanifest.txt": "5b6fd77a2ba14303ce4cdb08c87e82ab"
}

Package Snapshot

Introduced in GitLab 12.5.

This returns the snapshot of the package files for the specified Conan recipe with the specified Conan reference. The snapshot is a list of filenames with their associated md5 hash.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference
Attribute Type Required Description
package_name string yes Name of a package.
package_version string yes Version of a package.
package_username string yes Conan username of a package. This is the +-separated full path of your project.
package_channel string yes Channel of a package.
conan_package_reference string yes Reference hash of a Conan package. Conan generates this value.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f"

Example response:

{
  "conan_package.tgz": "749b29bdf72587081ca03ec033ee59dc",
  "conaninfo.txt": "32859d737fe84e6a7ccfa4d64dc0d1f2",
  "conanmanifest.txt": "a86b398e813bd9aa111485a9054a2301"
}

Recipe Manifest

Introduced in GitLab 12.5.

The manifest is a list of recipe filenames with their associated download URLs.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/digest
Attribute Type Required Description
package_name string yes Name of a package.
package_version string yes Version of a package.
package_username string yes Conan username of a package. This is the +-separated full path of your project.
package_channel string yes Channel of a package.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/digest"

Example response:

{
  "conan_sources.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conan_sources.tgz",
  "conanfile.py": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanmanifest.txt"
}

The URLs in the response have the same route prefix used to request them. If you request them with the project-level route, the returned URLs contain /projects/:id.

Package Manifest

Introduced in GitLab 12.5.

The manifest is a list of package filenames with their associated download URLs.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/digest
Attribute Type Required Description
package_name string yes Name of a package.
package_version string yes Version of a package.
package_username string yes Conan username of a package. This is the +-separated full path of your project.
package_channel string yes Channel of a package.
conan_package_reference string yes Reference hash of a Conan package. Conan generates this value.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/digest"

Example response:

{
  "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz",
  "conaninfo.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conanmanifest.txt"
}

The URLs in the response have the same route prefix used to request them. If you request them with the project-level route, the returned URLs contain /projects/:id.

Recipe Download URLs

Introduced in GitLab 12.5.

Returns a list of recipe filenames with their associated download URLs. This is the same payload as the recipe manifest endpoint.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/download_urls
Attribute Type Required Description
package_name string yes Name of a package.
package_version string yes Version of a package.
package_username string yes Conan username of a package. This is the +-separated full path of your project.
package_channel string yes Channel of a package.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/digest"

Example response:

{
  "conan_sources.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conan_sources.tgz",
  "conanfile.py": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanmanifest.txt"
}

The URLs in the response have the same route prefix used to request them. If you request them with the project-level route, the returned URLs contain /projects/:id.

Package Download URLs

Introduced in GitLab 12.5.

Returns a list of package filenames with their associated download URLs. This is the same payload as the package manifest endpoint.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/download_urls
Attribute Type Required Description
package_name string yes Name of a package.