Composer API

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

caution
この API はComposer パッケージマネージャークライアントが使用するもので、一般的に手動で使用するものではありません。

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

note
これらのエンドポイントは、標準の API 認証方式には準拠していません。どのヘッダやトークンの型がサポートされているかについての詳細はComposer パッケージレジストリのドキュメントを参照ください。文書化されていない認証方法は、将来削除される可能性があります。

ベースリポジトリのリクエスト

個々のパッケージをリクエストするためのリポジトリ URL テンプレートを返します:

GET group/:id/-/packages/composer/packages
属性種類必須説明
id文字列です。yesグループのIDまたはフルパス。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/packages"

応答例

{
  "packages": [],
  "metadata-url": "/api/v4/group/1/-/packages/composer/p2/%package%.json",
  "provider-includes": {
    "p/%hash%.json": {
      "sha256": "082df4a5035f8725a12i4a3d2da5e6aaa966d06843d0a5c6d499313810427bd6"
    }
  },
  "providers-url": "/api/v4/group/1/-/packages/composer/%package%$%hash%.json"
}

このエンドポイントは Composer V1 と V2 で使用されます。V2固有のレスポンスを見るには、ComposerUser-Agent ヘッダーを含めます。V1よりもComposer V2の使用を推奨します。

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

応答例

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

V1 パッケージリスト

V1 プロバイダーの SHA を指定すると、リポジトリにあるパッケージの一覧を返します。V1 よりも Composer V2 の使用を推奨します。

GET group/:id/-/packages/composer/p/:sha
属性種類必須説明
id文字列です。yesグループのIDまたはフルパス。
sha文字列です。yesComposerベースリクエストで提供されるプロバイダの SHA。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/p/082df4a5035f8725a12i4a3d2da5e6aaa966d06843d0a5c6d499313810427bd6"

応答例

{
  "providers": {
    "my-org/my-composer-package": {
      "sha256": "5c873497cdaa82eda35af5de24b789be92dfb6510baf117c42f03899c166b6e7"
    }
  }
}

V1 パッケージメタデータ

指定されたパッケージのバージョンとメタデータのリストを返します。V1 よりも Composer V2 の使用を推奨します。

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

URL の$ シンボルに注意してください。リクエストの際には、URLエンコード版のシンボル%24が必要になるかもしれません。表の後の例を参照してください:

属性種類必須説明
id文字列です。yesグループのIDまたはフルパス。
package_name文字列です。yesパッケージ名。
sha文字列です。yes V1 packages list が提供するパッケージの SHA ダイジェスト。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/my-org/my-composer-package%245c873497cdaa82eda35af5de24b789be92dfb6510baf117c42f03899c166b6e7"

応答例

{
  "packages": {
    "my-org/my-composer-package": {
      "1.0.0": {
        "name": "my-org/my-composer-package",
        "type": "library",
        "license": "GPL-3.0-only",
        "version": "1.0.0",
        "dist": {
          "type": "zip",
          "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "shasum": ""
        },
        "source": {
          "type": "git",
          "url": "https://gitlab.example.com/my-org/my-composer-package.git",
          "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab"
        },
        "uid": 1234567
      },
      "2.0.0": {
        "name": "my-org/my-composer-package",
        "type": "library",
        "license": "GPL-3.0-only",
        "version": "2.0.0",
        "dist": {
          "type": "zip",
          "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=445394f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "shasum": ""
        },
        "source": {
          "type": "git",
          "url": "https://gitlab.example.com/my-org/my-composer-package.git",
          "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab"
        },
        "uid": 1234567
      }
    }
  }
}

V2 パッケージメタデータ

指定したパッケージのバージョンとメタデータの一覧を返します:

GET group/:id/-/packages/composer/p2/:package_name
属性種類必須説明
id文字列です。yesグループのIDまたはフルパス。
package_name文字列です。yesパッケージ名。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/group/1/-/packages/composer/p2/my-org/my-composer-package"

応答例

{
  "packages": {
    "my-org/my-composer-package": {
      "1.0.0": {
        "name": "my-org/my-composer-package",
        "type": "library",
        "license": "GPL-3.0-only",
        "version": "1.0.0",
        "dist": {
          "type": "zip",
          "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "shasum": ""
        },
        "source": {
          "type": "git",
          "url": "https://gitlab.example.com/my-org/my-composer-package.git",
          "reference": "673594f85a55fe3c0eb45df7bd2fa9d95a1601ab"
        },
        "uid": 1234567
      },
      "2.0.0": {
        "name": "my-org/my-composer-package",
        "type": "library",
        "license": "GPL-3.0-only",
        "version": "2.0.0",
        "dist": {
          "type": "zip",
          "url": "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=445394f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab",
          "shasum": ""
        },
        "source": {
          "type": "git",
          "url": "https://gitlab.example.com/my-org/my-composer-package.git",
          "reference": "445394f85a55fe3c0eb45df7bd2fa9d95a1601ab"
        },
        "uid": 1234567
      }
    }
  }
}

パッケージの作成

GitタグまたはブランチからComposerパッケージを作成します:

POST projects/:id/packages/composer
属性種類必須説明
id文字列です。yesグループのIDまたはフルパス。
tag文字列です。いいえパッケージの対象となるタグの名前。
branch文字列です。いいえパッケージの対象となるブランチの名前。
curl --request POST --user <username>:<personal_access_token> \
     --data tag=v1.0.0 "https://gitlab.example.com/api/v4/projects/1/packages/composer"

応答例

{
  "message": "201 Created"
}

パッケージアーカイブのダウンロード

このエンドポイントの作成者は GitLab 14.10 で導入されました。

Composer パッケージをダウンロードしてください。このURLはv1またはv2パッケージのメタデータレスポンスで提供されます。リクエストには.zip ファイル拡張子が必要です。

GET projects/:id/packages/composer/archives/:package_name
属性種類必須説明
id文字列です。yesグループのIDまたはフルパス。
package_name文字列です。yesパッケージ名。
sha文字列です。yes要求されたパッケージバージョンのターゲットSHA。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/composer/archives/my-org/my-composer-package.zip?sha=673594f85a55fe3c0eb45df7bd2fa9d95a1601ab"

出力をファイルに書き込みます:

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

ダウンロードしたファイルをカレントディレクトリのpackage.tar.gz に書き込みます。

note
このエンドポイントはGitLab 14.10以降では作成者の認証が必要です。GitLab 14.9以前では公開されていました。