強化機能フラグ

このAPIバージョンでは強化機能フラグは利用できません。

強化機能フラグとは、 name + labelの一意の組み合わせによって識別されるリソースのことです。 label はオプションです。 ラベルなしで機能フラグを明示的に参照するには、 \0 (URLは %00としてエンコード)を使います。 リスト操作では、 label を省略すると任意のラベルを持つ特徴フラグが一致します。 各操作の詳細を確認してください。

Important

強化機能フラグエンドポイントは 2026-05-01-preview APIバージョンでのみ利用可能です。

歴史的な表現については、「 強化された特徴フラグの改訂」を参照してください。 強化機能フラグに関連するラベルを一覧表示するには 、「ラベル」をご覧ください。

Operations

  • 取得
  • 複数を一覧表示
  • 設定
  • Delete

前提条件

  • すべての HTTP 要求が認証される必要があります。 認証に関するセクションを参照してください。
  • すべての HTTP 要求で、明示的な api-version を指定する必要があります。 バージョン管理に関するセクションを参照してください。

Syntax

フィーチャーフラグ

{
  "etag": [string, optional, read-only],
  "name": [string, read-only],
  "enabled": [boolean],
  "label": [string, optional, read-only],
  "description": [string, optional],
  "conditions": [Conditions, optional],
  "variants": [array<Variant>, optional],
  "allocation": [Allocation, optional],
  "telemetry": [Telemetry, optional],
  "tags": [object<string, string>, optional],
  "last_modified": [datetime ISO 8601, optional, read-only]
}

Conditions

{
  "requirement_type": [string, enum("Any", "All"), optional],
  "filters": [array<FeatureFilter>, optional]
}

FeatureFilter

{
  "name": [string],
  "parameters": [object<string, string>, optional]
}

Variant

{
  "name": [string],
  "value": [string, optional],
  "content_type": [string, optional],
  "status_override": [string, enum("None", "Enabled", "Disabled"), optional]
}

割り当て

{
  "default_when_disabled": [string, optional],
  "default_when_enabled": [string, optional],
  "percentile": [array<PercentileAllocation>, optional],
  "user": [array<UserAllocation>, optional],
  "group": [array<GroupAllocation>, optional],
  "seed": [string, optional]
}

PercentileAllocation

{
  "variant": [string],
  "from": [number, range(0, 100)],
  "to": [number, range(0, 100)]
}

UserAllocation

{
  "variant": [string],
  "users": [array<string>]
}

GroupAllocation

{
  "variant": [string],
  "groups": [array<string>]
}

Telemetry

{
  "enabled": [boolean],
  "metadata": [object<string, string>, optional]
}

機能フラグを取得する

必須: {name}{api-version}

オプション: label (省略するとラベルのない特徴フラグを意味します。)

省略可能: tags (指定しない場合は、タグを意味します)。

namelabelが完全に一致していなければ、追加のフィルタリングに適用tagsありません。 その他のオプションについては、この記事で後述する「フィルター処理」セクションを参照してください。

GET /ff/{name}?label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}

応答:

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"; charset=utf-8
Last-Modified: Fri, 01 May 2026 16:52:32 GMT
ETag: "7XpB48ET4VAlB9068ft6fKMyA3m"
Sync-Token: zAJw6V16=NjotMSM3ODk3NjM=;sn=789763
{
  "etag": "7XpB48ET4VAlB9068ft6fKMyA3m",
  "name": "{name}",
  "enabled": true,
  "label": "{label}",
  "description": "{description}",
  "tags": {
    "t1": "value1"
  },
  "last_modified": "2026-05-01T16:52:32Z"
}

機能フラグが存在しない場合は、以下の回答が返されます:

HTTP/1.1 404 Not Found

取得 (条件付き)

クライアントのキャッシュを向上させるには、 If-Match または If-None-Match の要求ヘッダーを使用します。 etagの議論は特徴フラグ表現の一部です。 両方のヘッダーを省略した場合、その操作は無条件となります。

以下のリクエストは、現在の表現が指定された etagと一致しない場合のみ特徴フラグを取得します。

GET /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Accept: application/json; profile="https://azconfig.io/mime-profiles/ff"
If-None-Match: "{etag}"

応答:

HTTP/1.1 304 Not Modified

または

HTTP/1.1 200 OK

リストの特徴フラグ

オプション: name (指定しなければ、任意の特徴フラグ名を意味します。)

省略可能: label (指定されていない場合は、すべてのラベルを意味します。)

省略可能: tags (指定しない場合は、タグを意味します)。

GET /ff?name=Test*&label=*&tags=tag1=value1&tags=tag2=value2&api-version={api-version} HTTP/1.1

応答:

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ffset"; charset=utf-8
ETag: "1PlB48ET4VAlB9068ft6fKMyA3m"
Sync-Token: zAJw6V16=NjotMSM3ODk3NjM=;sn=789763
{
  "items": [
    {
      "etag": "7XpB48ET4VAlB9068ft6fKMyA3m",
      "name": "{name}",
      "enabled": true,
      "label": "{label}",
      "tags": {
        "t1": "value1"
      },
      "last_modified": "2026-05-01T16:52:32Z"
    }
  ],
  "etag": "1PlB48ET4VAlB9068ft6fKMyA3m",
  "@nextLink": "{relative uri}"
}

その他のオプションについては、この記事で後述する「フィルター処理」セクションを参照してください。

特徴フラグ一覧(条件付き)

クライアントのキャッシュを向上させるには、 If-Match または If-None-Match の要求ヘッダーを使用します。 etagの引数はリスト応答本文とヘッダーの一部です。 両方のヘッダーを省略した場合、その操作は無条件となります。

以下のリクエストは、現在の表現が指定された etagと一致する場合のみ特徴フラグを取得します。

GET /ff?name={name}&label={label}&api-version={api-version} HTTP/1.1
If-Match: "{etag}"

応答:

HTTP/1.1 412 Precondition Failed

または

HTTP/1.1 200 OK

以下のリクエストは、現在の表現が指定された etagと一致しない場合のみ機能フラグを取得します。

GET /ff?name={name}&label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "{etag}"

応答:

HTTP/1.1 304 Not Modified

または

HTTP/1.1 200 OK

ページネーション

返された項目の数が応答の制限を超えている場合、結果は改ページされます。 オプションの Link response ヘッダーに従い、ナビゲーションには rel="next" を使ってください。 あるいは、コンテンツが @nextLink プロパティの形で次のリンクを提供します。 リンクされた URI には、api-version 引数が含まれます。

GET /ff?api-version={api-version} HTTP/1.1

応答:

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ffset"; charset=utf-8
Link: <{relative uri}>; rel="next"
{
  "items": [
    ...
  ],
  "@nextLink": "{relative uri}"
}

フィルター

namelabel、およびtagsフィルター処理の組み合わせがサポートされています。 省略可能な namelabel、およびクエリ文字列パラメーター tags 使用します。 tagName=tagValue形式のクエリ文字列パラメーターとして、複数のタグ フィルターを指定できます。 タグ フィルターは完全に一致する必要があります。

GET /ff?name={name}&label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}

サポートされているフィルター

名前フィルター Effect
name を省略 (または name=*) 任意の特徴フラグ名に一致します
name=abc 特徴旗「abc」と一致します
name=abc* 試合の旗名はabcで始まる
name=abc,xyz 試合名は abc または xyz (CSVは5枚まで)で表示されます。
ラベル フィルター Effect
label を省略 (または label=*) すべてのラベルに一致します
label=%00 試合にはラベルのない旗が使われます
label=prod prod というラベルに一致します
label=prod* prod で始まるラベルに一致します
label=prod,test prod または test というラベルに一致します (CSV の上限は 5 つ)
タグ フィルター Effect
tags を省略 (または tags=) any タグと一致します
tags=group=app1 マッチには、 group という値付きのタグが付いたフラグが特徴です app1
tags=group=app1&tags=env=prod マッチには、値app1groupと値prodenvというタグ(タグは5つのタグフィルターまで)を持つフラグが特徴です。
tags=tag1=%00 マッチには、 tag1 という値付きのタグが付いたフラグが特徴です null
tags=tag1= マッチには、空の値のタグが tag1 と名付けられたフラグが特徴です

予約文字

*\,

予約文字が値の一部である場合は、\{Reserved Character} を使用してエスケープする必要があります。 予約されていない文字もエスケープできます。

フィルター検証

フィルターの検証が失敗した場合、応答は HTTP 400 で、エラーの詳細が表示されます。

HTTP/1.1 400 Bad Request
Content-Type: application/problem+json; charset=utf-8
{
  "type": "https://azconfig.io/errors/invalid-argument",
  "title": "Invalid request parameter '{filter}'",
  "name": "{filter}",
  "detail": "{filter}(2): Invalid character",
  "status": 400
}

Examples

  • 全て

    GET /ff?api-version={api-version}
    
  • フィーチャーフラグ名は abc で始まり、すべてのラベルを含みます

    GET /ff?name=abc*&label=*&api-version={api-version}
    
  • フィーチャーフラグ名はabcで始まり、ラベルはv1またはv2に等しいです

    GET /ff?name=abc*&label=v1,v2&api-version={api-version}
    

特定のフィールドの要求

省略可能な $select クエリ文字列パラメーターを使用して、要求するフィールドのコンマ区切りリストを指定します。 $select パラメーターを省略した場合、応答には既定のセットが含まれます。 支持フィールドは nameenabledlabeldescriptionconditionsvariantsallocationtelemetrytagslast_modifiedetagです。

GET /ff?$select=name,enabled,label&api-version={api-version} HTTP/1.1

$selectパラメータは、単一の機能フラグおよび機能フラグコレクションのGETリクエストによってサポートされています。

時間ベースのアクセス

過去の時間のものとして結果の表現を取得します。 詳細については、セクション 2.1.1 を参照してください。 この記事で既に定義したように、改ページ位置の自動修正は引き続きサポートされます。

GET /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Accept-Datetime: Sat, 01 Aug 2026 02:10:00 GMT
GET /ff?api-version={api-version} HTTP/1.1
Accept-Datetime: Sat, 01 Aug 2026 02:10:00 GMT

Set Feature flag

  • 必須: {name}{api-version}
  • オプション: label (指定されていない、または label=%00の場合、ラベルのない特徴フラグを含意します。)

enabledプロパティはリクエストボディで必要です。 descriptionconditionsvariantsallocationtelemetrytagsのプロパティは任意です。 リクエスト文には namelabeletaglast_modified を含めないでください。

PUT /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"
{
  "enabled": true,
  "description": "{description}",
  "conditions": {
    "requirement_type": "All",
    "filters": [
      {
        "name": "Microsoft.Targeting",
        "parameters": {
          "Audience": "{\"Users\":[\"User1\",\"User2\"],\"Groups\":[{\"Name\":\"Ring0\",\"RolloutPercentage\":100}],\"DefaultRolloutPercentage\":20,\"Exclusion\":{\"Users\":[\"ExcludedUser\"],\"Groups\":[\"Ring1\"]}}"
        }
      }
    ]
  },
  "variants": [
    {
      "name": "On",
      "value": "true",
      "content_type": "application/json",
      "status_override": "None"
    },
    {
      "name": "Off",
      "value": "false",
      "content_type": "application/json",
      "status_override": "Disabled"
    }
  ],
  "allocation": {
    "default_when_disabled": "Off",
    "default_when_enabled": "On",
    "percentile": [
      {
        "variant": "On",
        "from": 0,
        "to": 80
      },
      {
        "variant": "Off",
        "from": 80,
        "to": 100
      }
    ],
    "seed": "{name}"
  },
  "telemetry": {
    "enabled": true,
    "metadata": {
      "Tags.Environment": "production"
    }
  },
  "tags": {
    "t1": "value1"
  }
}

応答:

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"; charset=utf-8
Last-Modified: Fri, 01 May 2026 16:52:32 GMT
ETag: "7XpB48ET4VAlB9068ft6fKMyA3m"
Sync-Token: zAJw6V16=NjotMSM3ODk3NjM=;sn=789763
{
  "etag": "7XpB48ET4VAlB9068ft6fKMyA3m",
  "name": "{name}",
  "enabled": true,
  "label": "{label}",
  "description": "{description}",
  "conditions": {
    "requirement_type": "All",
    "filters": [
      {
        "name": "Microsoft.Targeting",
        "parameters": {
          "Audience": "{\"Users\":[\"User1\",\"User2\"],\"Groups\":[{\"Name\":\"Ring0\",\"RolloutPercentage\":100}],\"DefaultRolloutPercentage\":20,\"Exclusion\":{\"Users\":[\"ExcludedUser\"],\"Groups\":[\"Ring1\"]}}"
        }
      }
    ]
  },
  "variants": [
    {
      "name": "On",
      "value": "true",
      "content_type": "application/json",
      "status_override": "None"
    },
    {
      "name": "Off",
      "value": "false",
      "content_type": "application/json",
      "status_override": "Disabled"
    }
  ],
  "allocation": {
    "default_when_disabled": "Off",
    "default_when_enabled": "On",
    "percentile": [
      {
        "variant": "On",
        "from": 0,
        "to": 80
      },
      {
        "variant": "Off",
        "from": 80,
        "to": 100
      }
    ],
    "seed": "{name}"
  },
  "telemetry": {
    "enabled": true,
    "metadata": {
      "Tags.Environment": "production"
    }
  },
  "tags": {
    "t1": "value1"
  },
  "last_modified": "2026-05-01T16:52:32Z"
}

特徴フラグの設定(条件付き)

競合状態を回避するには、If-Match または If-None-Match 要求ヘッダーを使用します。 etagの議論は特徴フラグ表現の一部です。 両方のヘッダーを省略した場合、その操作は無条件となります。

以下のリクエストは、現在の表現が指定された etagと一致する場合のみ特徴フラグを設定します。

PUT /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"
If-Match: "{etag}"

以下のリクエストは、現在の表現が指定された etagと一致しない場合のみ機能フラグを設定します。

PUT /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"
If-None-Match: "{etag}"

以下のリクエストは、すでに表現が存在する場合にのみ特徴フラグを設定します。

PUT /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"
If-Match: "*"

以下のリクエストは、すでに表現が存在しない場合に限り、機能フラグを設定します。

PUT /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"
If-None-Match: "*"

応答

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"; charset=utf-8
Last-Modified: Fri, 01 May 2026 16:52:32 GMT
ETag: "7XpB48ET4VAlB9068ft6fKMyA3m"
Sync-Token: zAJw6V16=NjotMSM3ODk3NjM=;sn=789763
...

または

HTTP/1.1 412 Precondition Failed

Delete

  • 必須: {name}{api-version}
  • オプション: label (指定されていない、または label=%00の場合、ラベルのない特徴フラグを含意します。)
DELETE /ff/{name}?label={label}&api-version={api-version} HTTP/1.1

回答: 削除された機能フラグを返すか、機能フラグが存在しなければそのままに戻してください。

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"; charset=utf-8
Last-Modified: Fri, 01 May 2026 16:52:32 GMT
ETag: "7XpB48ET4VAlB9068ft6fKMyA3m"
Sync-Token: zAJw6V16=NjotMSM3ODk3NjM=;sn=789763
...

または

HTTP/1.1 204 No Content

機能フラグの削除(条件付き)

これはこの記事の前半の「特徴フラグを条件付けて設定する」セクションに似ています。 削除操作は If-Match リクエストヘッダーをサポートしています。

App Configurationのデータプレーン操作で共有されるリクエストおよびレスポンスヘッダーに関する情報は、 共通ヘッダーを参照してください。