コナンAPI

Conan PackagesのAPIドキュメントです。

caution
このAPIはConanパッケージマネージャクライアントによって使用され、一般的に手動で使用することは意図されていません。

GitLabパッケージレジストリからConanパッケージをアップロードしてインストールする方法については、Conanパッケージレジストリのドキュメントを参照してください。

note
これらのエンドポイントは、API の標準的な認証方式には準拠していません。認証情報の受け渡し方法の詳細については、それぞれのルートを参照ください。文書化されていない認証方法は、将来削除されるかもしれません。
note
Conan レジストリは FIPS に準拠しておらず、FIPS モードが有効な場合は無効になります。これらのエンドポイントはすべて 404 Not Found を返します。

ルートプレフィックス

それぞれが異なるスコープでリクエストを行う、同じルートが2セットあります:

  • GitLab インスタンス全体のスコープでリクエストを行うには、インスタンスレベルのプレフィックスを使います。
  • プロジェクトレベルの接頭辞は、単一のプロジェクトのスコープにリクエストするときに使います。

このドキュメントの例では、すべてインスタンスレベルのプレフィックスを使用しています。

インスタンスレベル

/packages/conan/v1

インスタンスレベルのルートを使用する場合、コナンレシピには命名制限があることに注意してください。

プロジェクトレベル

 /projects/:id/packages/conan/v1`
属性種類必須説明
id文字列です。yesプロジェクトIDまたはプロジェクトのフルパス。

Ping

GitLab 12.2で導入されました。

GitLab Conan リポジトリに Ping を打ち、可用性を確認します:

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

応答例

""

GitLab 12.4から導入されました。

インスタンスから Conan パッケージを名前で検索します:

GET <route-prefix>/conans/search
属性種類必須説明
q文字列です。yes検索クエリ。ワイルドカードとして* を使用できます。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/packages/conan/v1/conans/search?q=Hello*"

応答例

{
  "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"
  ]
}

認証

GitLab 12.2で導入されました。

Bearer ヘッダで Conan リクエストに使用する JWT を返します:

"Authorization: Bearer <token>

Conan パッケージマネージャークライアントは自動的にこのトークンを使用します。

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

応答例

eyJhbGciOiJIUzI1NiIiheR5cCI6IkpXVCJ9.eyJhY2Nlc3NfdG9rZW4iOjMyMTQyMzAsqaVzZXJfaWQiOjQwNTkyNTQsImp0aSI6IjdlNzBiZTNjLWFlNWQtNDEyOC1hMmIyLWZiOThhZWM0MWM2OSIsImlhd3r1MTYxNjYyMzQzNSwibmJmIjoxNjE2NjIzNDMwLCJleHAiOjE2MTY2MjcwMzV9.QF0Q3ZIB2GW5zNKyMSIe0HIFOITjEsZEioR-27Rtu7E

認証情報の確認

GitLab 12.4から導入されました。

Basic Auth 認証情報または/authenticateから生成された Conan JWT の有効性をチェックします。

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

応答例

ok

レシピスナップショット

GitLab 12.5で導入されました。

指定した Conan レシピのレシピファイルのスナップショットを返します。スナップショットはファイル名と関連するmd5ハッシュのリストです。

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
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"

応答例

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

パッケージスナップショット

GitLab 12.5で導入されました。

指定された Conan レシピのパッケージファイルのスナップショットを、指定された Conan リファレンスで返します。スナップショットはファイル名と関連するmd5ハッシュのリストです。

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
conan_package_reference文字列です。yesコナンパッケージの参照ハッシュ。Conan はこの値を生成します。
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"

応答例

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

レシピ・マニフェスト

GitLab 12.5で導入されました。

マニフェストは、レシピファイル名と関連するダウンロードURLのリストです。

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/digest
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
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"

応答例

{
  "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"
}

レスポンスの例: レスポンスの URL は、リクエストに使われたのと同じルート接頭辞を持ちます。プロジェクトレベルのルートでリクエストした場合、返される URL には/projects/:id.

パッケージ・マニフェスト

GitLab 12.5で導入されました。

マニフェストはパッケージファイル名と関連するダウンロードURLのリストです。

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/digest
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
conan_package_reference文字列です。yesコナンパッケージの参照ハッシュ。Conan はこの値を生成します。
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"

応答例

{
  "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"
}

レスポンスの例: レスポンスの URL は、リクエストに使われたのと同じルート接頭辞を持ちます。プロジェクトレベルのルートでリクエストした場合、返される URL には/projects/:id.

レシピのダウンロード URL

GitLab 12.5で導入されました。

レシピダウンロードURLは、レシピファイル名と関連するダウンロードURLのリストを返します。この属性はレシピマニフェストエンドポイントと同じペイロードです。

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/download_urls
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
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"

応答例

{
  "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"
}

レスポンスの例: レスポンスの URL は、リクエストに使われたのと同じルート接頭辞を持ちます。プロジェクトレベルのルートでリクエストした場合、返される URL には/projects/:id.

パッケージのダウンロード URL

GitLab 12.5で導入されました。

パッケージダウンロードURLは、パッケージファイル名と関連するダウンロードURLのリストを返します。この URL はパッケージマニフェストエンドポイントと同じペイロードです。

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/download_urls
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
conan_package_reference文字列です。yesコナンパッケージの参照ハッシュ。Conan はこの値を生成します。
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/download_urls"

応答例

{
  "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"
}

レスポンスの例: レスポンスの URL は、リクエストに使われたのと同じルート接頭辞を持ちます。プロジェクトレベルのルートでリクエストした場合、返される URL には/projects/:id.

レシピのアップロード URL

GitLab 12.5で導入されました。

レシピのファイル名とファイルサイズのリストを与えると、それぞれのファイルをアップロードするための URL のリストを返します。

POST <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/upload_urls
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。

リクエストJSONペイロードの例:

{
  "conanfile.py": 410,
  "conanmanifest.txt": 130
}
curl --request POST \
     --header "Authorization: Bearer <authenticate_token>" \
     --header "Content-Type: application/json" \
     --data '{"conanfile.py":410,"conanmanifest.txt":130}' \
     "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/upload_urls"

応答例

{
  "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"
}

レスポンスの例: レスポンスの URL は、リクエストに使われたのと同じルート接頭辞を持ちます。プロジェクトレベルのルートでリクエストした場合、返される URL には/projects/:id.

パッケージのアップロード URL

GitLab 12.5で導入されました。

パッケージのファイル名とファイルサイズのリストを与えると、それぞれのファイルをアップロードするための URL のリストを返します。

POST <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/upload_urls
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
conan_package_reference文字列です。yesコナンパッケージの参照ハッシュ。Conan はこの値を生成します。

リクエストJSONペイロードの例:

{
  "conan_package.tgz": 5412,
  "conanmanifest.txt": 130,
  "conaninfo.txt": 210
  }
curl --request POST \
     --header "Authorization: Bearer <authenticate_token>" \
     --header "Content-Type: application/json" \
     --data '{"conan_package.tgz":5412,"conanmanifest.txt":130,"conaninfo.txt":210}'
     "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/upload_urls"

応答例

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

レスポンスの例: レスポンスの URL は、リクエストに使われたのと同じルート接頭辞を持ちます。プロジェクトレベルのルートでリクエストした場合、返される URL には/projects/:id.

レシピファイルのダウンロード

GitLab 12.6 で導入されました。

レシピファイルをパッケージレジストリにダウンロードします。レシピのダウンロードURLエンドポイントが返すダウンロードURLを使用する必要があります。

GET packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/export/:file_name
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
recipe_revision文字列です。yesレシピのリビジョン。GitLabはまだConanのリビジョンをサポートしていないので、デフォルトの0
file_name文字列です。yes要求されたファイルの名前と拡張子。
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py"

出力をファイルに書き出すこともできます:

curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py" >> conanfile.py

この例では、カレントディレクトリのconanfile.py

レシピファイルのアップロード

GitLab 12.6 で導入されました。

レシピファイルをパッケージレジストリにアップロードします。レシピアップロードURLエンドポイントが返すアップロードURLを使う必要があります。

PUT packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/export/:file_name
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
recipe_revision文字列です。yesレシピのリビジョン。GitLabはまだConanのリビジョンをサポートしていないので、デフォルトの0
file_name文字列です。yes要求されたファイルの名前と拡張子。

リクエストボディにファイルコンテキストを指定します:

curl --request PUT \
     --user <username>:<personal_access_token> \
     --upload-file path/to/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"

パッケージファイルのダウンロード

GitLab 12.6 で導入されました。

パッケージファイルをパッケージレジストリにダウンロードします。パッケージダウンロードURLエンドポイントが返したダウンロードURLを使用する必要があります。

GET packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/package/:conan_package_reference/:package_revision/:file_name
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
recipe_revision文字列です。yesレシピのリビジョン。GitLabはまだConanのリビジョンをサポートしていないので、デフォルトの0
conan_package_reference文字列です。yesコナンパッケージの参照ハッシュ。Conan はこの値を生成します。
package_revision文字列です。yesパッケージのリビジョン。GitLabはまだConanリビジョンをサポートしていないので、デフォルト値の0
file_name文字列です。yes要求されたファイルの名前と拡張子。
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt"

出力をファイルに書き出すこともできます:

curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt" >> conaninfo.txt

この例では、カレントディレクトリのconaninfo.txt

パッケージファイルのアップロード

GitLab 12.6 で導入されました。

パッケージファイルをパッケージレジストリにアップロードします。パッケージアップロードURLエンドポイントが返すアップロードURLを使う必要があります。

PUT packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/package/:conan_package_reference/:package_revision/:file_name
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
recipe_revision文字列です。yesレシピのリビジョン。GitLabはまだConanのリビジョンをサポートしていないので、デフォルトの0
conan_package_reference文字列です。yesコナンパッケージの参照ハッシュ。Conan はこの値を生成します。
package_revision文字列です。yesパッケージのリビジョン。GitLabはまだConanリビジョンをサポートしていないので、デフォルト値の0
file_name文字列です。yes要求されたファイルの名前と拡張子。

リクエストボディにファイルコンテキストを指定します:

curl --request PUT \
     --user <username>:<personal_access_token> \
     --upload-file path/to/conaninfo.txt \
     "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt"

パッケージの削除(Conanレシピの削除)

GitLab 12.5で導入されました。

レジストリから Conan レシピとパッケージファイルを削除します:

DELETE <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel
属性種類必須説明
package_name文字列です。yesパッケージの名前。
package_version文字列です。yesパッケージのバージョン。
package_username文字列です。yesパッケージの Conan ユーザー名。この属性は+ で区切られたプロジェクトのフルパスです。
package_channel文字列です。yesパッケージのチャンネル。
curl --request DELETE --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable"

応答例

{
  "id": 1,
  "project_id": 123,
  "created_at": "2020-08-19T13:17:28.655Z",
  "updated_at": "2020-08-19T13:17:28.655Z",
  "name": "my-package",
  "version": "1.0",
  "package_type": "conan",
  "creator_id": null,
  "status": "default"
}