Composer API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

이 문서는 Composer Packages에 대한 API 문서입니다.

경고: 이 API는 Composer package manager client에서 사용되며 일반적으로 수동으로 사용하도록 설계되지 않았습니다.

GitLab 패키지 레지스트리에서 Composer 패키지를 업로드하고 설치하는 방법에 대한 지침은 Composer package registry documentation을 참조하세요.

참고: 이 엔드포인트는 표준 API 인증 방법을 준수하지 않습니다. 사용 가능한 헤더 및 토큰 유형에 대한 자세한 내용은 Composer Package Registry documentation을 참조하세요. 문서화되지 않은 인증 방법은 앞으로 제거될 수 있습니다.

기본 저장소 요청

개별 패키지를 요청하는 데 사용되는 저장소 URL 템플릿을 반환합니다.

GET group/:id/-/packages/composer/packages
속성 유형 필수 설명
id string 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 특정 응답을 보려면 Composer User-Agent 헤더를 포함하세요. 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가 제공된 경우, 저장소의 패키지 목록을 반환합니다. Composer V2 사용을 권장합니다.

GET group/:id/-/packages/composer/p/:sha
속성 유형 필수 설명
id string yes 그룹의 ID 또는 전체 경로.
sha string yes Composer 기본 요청에서 제공된 제공자 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 패키지 메타데이터

특정 패키지의 버전 및 메타데이터 목록을 반환합니다. Composer V2 사용을 권장합니다.

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

URL에 있는 $ 기호에 주목하세요. 요청할 때는 기호의 URL 인코딩된 버전 %24가 필요할 수 있습니다. 표 다음의 예시를 참조하세요.

속성 유형 필수 설명
id string yes 그룹의 ID 또는 전체 경로.
package_name string yes 패키지의 이름.
sha string yes V1 패키지 목록에서 제공된 패키지 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 string yes 그룹의 ID 또는 전체 경로입니다.
package_name string 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 string yes 그룹의 ID 또는 전체 경로입니다.
tag string no 패키지를 위해 대상으로 지정할 태그의 이름입니다.
branch string no 패키지를 위해 대상으로 지정할 브랜치의 이름입니다.
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"
}

패키지 아카이브 다운로드

Composer 패키지를 다운로드합니다. 이 URL은 v1 또는 v2 package metadata 응답에서 제공됩니다. 요청에는 .zip 파일 확장자가 있어야 합니다.

GET projects/:id/packages/composer/archives/:package_name
속성 유형 필수 설명
id string yes 그룹의 ID 또는 전체 경로입니다.
package_name string yes 패키지의 이름입니다.
sha string 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로 작성합니다.