プロジェクトのスニペット

スニペットの可視レベル

GitLabのスニペットには、非公開、内部、公開のいずれかがあります。スニペット内のvisibility フィールドで設定できます。

スニペットの表示レベルの定数は以下の通りです:

  • 非公開:スニペットはプロジェクトメンバーにのみ表示されます。
  • 内部:スニペットは、外部ユーザーを除く、認証されたすべてのユーザーに表示されます。
  • 公開:スニペットには認証なしでアクセスできます。
note
2019年7月より、Internal GitLab.comの新規プロジェクト、グループ、スニペットに対して可視性設定が無効に Internalなります。可視性設定をInternal 使用している既存のプロジェクト、グループ、スニペットでは Internal、この設定が維持されます。この変更についての詳細は関連イシューをご覧ください。

スニペット一覧

プロジェクトのスニペット一覧を取得します。

GET /projects/:id/snippets

パラメータを指定します:

属性種類必須説明
id整数または文字列。yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス

単一のスニペット

単一のプロジェクトスニペットを取得します。

GET /projects/:id/snippets/:snippet_id

パラメータを指定します:

属性種類必須説明
id整数または文字列。yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
snippet_id整数。yesプロジェクトのスニペットのID。
{
  "id": 1,
  "title": "test",
  "file_name": "add.rb",
  "description": "Ruby test snippet",
  "author": {
    "id": 1,
    "username": "john_smith",
    "email": "john@example.com",
    "name": "John Smith",
    "state": "active",
    "created_at": "2012-05-23T08:00:58Z"
  },
  "updated_at": "2012-06-28T10:52:04Z",
  "created_at": "2012-06-28T10:52:04Z",
  "project_id": 1,
  "web_url": "http://example.com/example/example/snippets/1",
  "raw_url": "http://example.com/example/example/snippets/1/raw"
}

新しいスニペットの作成

新しいプロジェクトスニペットを作成します。ユーザーには新しいスニペットを作成する権限が必要です。

POST /projects/:id/snippets

パラメータを指定します:

属性種類必須説明
id整数または文字列。yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
files:content文字列です。yesスニペットファイルの内容。
files:file_path文字列です。yesスニペットファイルのファイルパス。
title文字列です。yesスニペットのタイトル。
content文字列です。いいえ非推奨:代わりにfiles 。スニペットの内容。
description文字列です。いいえスニペットの説明。
file_name文字列です。いいえ非推奨:代わりにfiles 。スニペットファイルの名前。
filesハッシュの配列いいえスニペットファイルの配列。
visibility文字列です。いいえスニペットの可視性

リクエストの例

curl --request POST "https://gitlab.com/api/v4/projects/:id/snippets" \
     --header "PRIVATE-TOKEN: <your access token>" \
     --header "Content-Type: application/json" \
     -d @snippet.json

snippet.json 上記のリクエスト例で使用されています:

{
  "title" : "Example Snippet Title",
  "description" : "More verbose snippet description",
  "visibility" : "private",
  "files": [
    {
      "file_path": "example.txt",
      "content" : "source code \n with multiple lines\n"
    }
  ]
}

スニペットの更新

既存のプロジェクトスニペットを更新します。ユーザーには既存のスニペットを変更する権限が必要です。

複数のファイルを持つスニペットへの更新は、files 属性を使用する必要があります。

PUT /projects/:id/snippets/:snippet_id

パラメータを指定します:

属性種類必須説明
id整数または文字列。yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
files:action文字列です。yesファイルに対して実行するアクションの種類。以下のいずれか:create update,delete,move.
snippet_id整数。yesプロジェクトのスニペットのID。
content文字列です。いいえ非推奨:代わりにfiles 。スニペットの内容。
description文字列です。いいえスニペットの説明。
filesハッシュの配列いいえスニペットファイルの配列。
files:content文字列です。いいえスニペットファイルの内容。
files:file_path文字列です。いいえスニペットファイルのファイルパス。
file_name文字列です。いいえ非推奨:代わりにfiles 。スニペットファイルの名前。
files:previous_path文字列です。いいえスニペットファイルの前のパス。
title文字列です。いいえスニペットのタイトル。
visibility文字列です。いいえスニペットの可視性

リクエストの例

curl --request PUT "https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id" \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     -d @snippet.json

snippet.json 上記のリクエスト例で使用されています:

{
  "title" : "Updated Snippet Title",
  "description" : "More verbose snippet description",
  "visibility" : "private",
  "files": [
    {
      "action": "update",
      "file_path": "example.txt",
      "content" : "updated source code \n with multiple lines\n"
    }
  ]
}

スニペットの削除

既存のプロジェクト・スニペットを削除します。オペレーションに成功した場合は204 No Content 、リソースが見つからなかった場合は404 のステータスコードを返します。

DELETE /projects/:id/snippets/:snippet_id

パラメータを指定します:

属性種類必須説明
id整数または文字列。yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
snippet_id整数。yesプロジェクトのスニペットのID。

リクエストの例

curl --request DELETE "https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id" \
     --header "PRIVATE-TOKEN: <your_access_token>"

スニペットコンテンツ

生のプロジェクトスニペットをプレーンテキストで返します。

GET /projects/:id/snippets/:snippet_id/raw

パラメータを指定します:

属性種類必須説明
id整数または文字列。yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
snippet_id整数。yesプロジェクトのスニペットのID。

リクエストの例

curl "https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id/raw" \
     --header "PRIVATE-TOKEN: <your_access_token>"

スニペットリポジトリファイルの内容

ファイルの内容をプレーンテキストで返します。

GET /projects/:id/snippets/:snippet_id/files/:ref/:file_path/raw

パラメータを指定します:

属性種類必須説明
id整数または文字列。yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
file_path文字列です。yesファイルへの URL エンコードされたパス、例えばsnippet%2Erb
ref文字列です。yesブランチ、タグ、コミットの名前。たとえばmain
snippet_id整数。yesプロジェクトのスニペットのID。

リクエストの例

curl "https://gitlab.com/api/v4/projects/1/snippets/2/files/master/snippet%2Erb/raw" \
     --header "PRIVATE-TOKEN: <your_access_token>"

ユーザーエージェントの詳細の取得

管理者権限を持つユーザーのみ利用可能です。

GET /projects/:id/snippets/:snippet_id/user_agent_detail
属性種類必須説明
id整数または文字列。yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
snippet_id整数yesスニペットのID。

リクエストの例

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/snippets/2/user_agent_detail"

応答例

{
  "user_agent": "AppleWebKit/537.36",
  "ip_address": "127.0.0.1",
  "akismet_submitted": false
}