Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les drapeaux de fonctionnalités améliorées ne sont pas disponibles dans cette version de l’API.
Un drapeau de caractéristique amélioré est une ressource identifiée par la combinaison unique de name + label.
label est facultatif. Pour référencer explicitement un drapeau de caractéristique sans étiquette, utilisez \0 (URL encodée sous le %00nom ). Pour les opérations de liste, les label omissions de correspondances comportent des drapeaux avec n’importe quelle étiquette. Consultez les détails de chaque opération.
Important
Les points de terminaison de feature banners améliorés ne sont disponibles que dans la 2026-05-01-preview version API.
Pour des représentations historiques, voir Révisions améliorées des drapeaux de fonctionnalités. Pour lister les étiquettes associées aux drapeaux de fonctionnalités améliorées, voir Étiquettes.
Operations
- Obtenir
- Liste multiple
- Définissez
- Delete
Prerequisites
- Toutes les requêtes HTTP doivent être authentifiées. Consultez la section Authentification.
- Toutes les requêtes HTTP doivent fournir des
api-versionexplicites. Consultez la section Contrôle de version.
Syntax
Indicateur de fonctionnalité
{
"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]
}
Répartition
{
"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]
}
Obtenir le drapeau de fonctionnalité
Obligatoire : {name}, {api-version}
Optionnel : label (Si c’est omis, cela implique un drapeau de caractéristique sans étiquette.)
Facultatif : tags (S’il n’est pas spécifié, cela implique des balises.)
Les name et label doivent correspondre exactement avant tags d’être appliqués pour un filtrage supplémentaire. Pour plus d’options, consultez la section « Filtrage » plus loin dans cet article.
GET /ff/{name}?label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}
Réponses :
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"
}
Si le drapeau de caractéristique n’existe pas, la réponse suivante est renvoyée :
HTTP/1.1 404 Not Found
Obtenir (de manière conditionnelle)
Pour améliorer la mise en cache du client, utilisez les en-têtes de demande If-Match ou If-None-Match. L’argument etag fait partie de la représentation du drapeau de caractéristiques. Si les deux en-têtes sont omis, l’opération est inconditionnelle.
La requête suivante ne récupère le drapeau de caractéristique que si la représentation actuelle ne correspond pas à celle spécifiée 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}"
Réponses :
HTTP/1.1 304 Not Modified
ou
HTTP/1.1 200 OK
Drapeaux de caractéristiques de liste
Optionnel : name (Si ce n’est pas spécifié, cela implique n’importe quel nom de drapeau de caractéristique.)
Facultatif : label (Si non spécifié, cela implique n’importe quelle étiquette.)
Facultatif : tags (S’il n’est pas spécifié, cela implique des balises.)
GET /ff?name=Test*&label=*&tags=tag1=value1&tags=tag2=value2&api-version={api-version} HTTP/1.1
Réponse :
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}"
}
Pour plus d’options, consultez la section « Filtrage » plus loin dans cet article.
Liste des indicateurs de caractéristiques (conditionnellement)
Pour améliorer la mise en cache du client, utilisez les en-têtes de demande If-Match ou If-None-Match. L’argument etag fait partie du corps de la réponse et de l’en-tête de la liste. Si les deux en-têtes sont omis, l’opération est inconditionnelle.
La requête suivante récupère les indicateurs de caractéristiques uniquement si la représentation actuelle correspond à la spécifiée etag:
GET /ff?name={name}&label={label}&api-version={api-version} HTTP/1.1
If-Match: "{etag}"
Réponses :
HTTP/1.1 412 Precondition Failed
ou
HTTP/1.1 200 OK
La requête suivante ne reçoit les indicateurs de caractéristiques que si la représentation actuelle ne correspond pas à la spécifiée etag:
GET /ff?name={name}&label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "{etag}"
Réponses :
HTTP/1.1 304 Not Modified
ou
HTTP/1.1 200 OK
Pagination
Le résultat est paginé si le nombre d’éléments retournés dépasse le nombre limite de réponses. Suivez l’en-tête de réponse optionnel Link et utilisez-le rel="next" pour la navigation. Alternativement, le contenu fournit un lien suivant sous la forme de la @nextLink propriété. L’URI lié comprend l’argument api-version.
GET /ff?api-version={api-version} HTTP/1.1
Réponse :
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}"
}
Filtrage
Une combinaison de name, labelet tags de filtrage est prise en charge. Utilisez les paramètres de chaîne de requête facultatifs namelabelet tags facultatifs. Plusieurs filtres d’étiquettes peuvent être fournis en tant que paramètres de chaîne de requête au tagName=tagValue format. Les filtres d’étiquettes doivent correspondre exactement.
GET /ff?name={name}&label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}
Filtres pris en charge
| Filtre de nom | Effect |
|---|---|
name est omis ou name=* |
Correspond à n’importe quel nom de drapeau principal |
name=abc |
Correspond à un drapeau principal nommé abc |
name=abc* |
Les matchs comportent des noms de drapeaux qui commencent par abc |
name=abc,xyz |
Les matchs comportent les noms des drapeaux abc ou xyz (limités à 5 CSV) |
| Filtre d’étiquette | Effect |
|---|---|
label est omis ou label=* |
Correspond à toute étiquette |
label=%00 |
Les matchs comportent des drapeaux sans étiquette |
label=prod |
Correspond à l’étiquette prod |
label=prod* |
Correspond aux étiquettes qui commencent par prod |
label=prod,test |
Correspond aux étiquettes prod ou test (limité à 5 CSV) |
| Filtre d’étiquettes | Effect |
|---|---|
tags est omis ou tags= |
Correspond à n’importe quelle balise |
tags=group=app1 |
Les matchs comportent des drapeaux portant un tag nommé group avec valeur app1 |
tags=group=app1&tags=env=prod |
Les correspondances comportent des drapeaux portant un tag nommé group avec valeur app1 et un tag nommé env avec valeur prod (limité à 5 filtres de tags) |
tags=tag1=%00 |
Les matchs comportent des drapeaux portant un tag nommé tag1 avec valeur null |
tags=tag1= |
Les matchs comportent des drapeaux portant un tag nommé tag1 avec une valeur vide |
Caractères réservés
*, \, ,
Si un caractère réservé fait partie de la valeur, il doit être placé dans une séquence d’échappement à l’aide de \{Reserved Character}. Les caractères non réservés peuvent également être placés dans une séquence d’échappement.
Validation de filtre
Si la validation du filtre échoue, la réponse est HTTP 400 avec des détails d’erreur :
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
Tous
GET /ff?api-version={api-version}Le nom du drapeau de la feature commence par abc et inclut tous les labels
GET /ff?name=abc*&label=*&api-version={api-version}Le nom du drapeau de la caractéristique commence par abc et l’étiquette est égal à v1 ou v2
GET /ff?name=abc*&label=v1,v2&api-version={api-version}
Champs spécifiques de la demande
Utilisez le paramètre de chaîne de requête facultatif $select et fournissez une liste séparée par des virgules des champs demandés. Si le paramètre $select est omis, la réponse contient l’ensemble par défaut. Les corps soutenus sont name, enabled, label, descriptionconditionsvariants, , allocation, telemetry, tags, , last_modified, et etag.
GET /ff?$select=name,enabled,label&api-version={api-version} HTTP/1.1
Le $select paramètre est supporté par GET des requêtes pour un seul drapeau de caractéristique et des collections de drapeaux de caractéristiques.
Accès basé sur le temps
Obtenez une représentation du résultat tel qu’il était à un moment passé. Pour plus d’informations, voir la section 2.1.1. La pagination est toujours prise en charge, comme défini précédemment dans cet article.
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
Définir le drapeau de fonctionnalité
- Obligatoire :
{name},{api-version} - Optionnel :
label(Si ce n’est pas spécifié, oulabel=%00, cela implique un drapeau de caractéristique sans étiquette.)
Le enabled bien est requis dans le corps de la demande. Les descriptionpropriétés , conditions, variants, allocation, telemetry, et tags sont optionnelles. N’incluez namepas , label, etag, ni last_modified dans le corps de la demande.
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"
}
}
Réponses :
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"
}
Définir le drapeau de caractéristique (conditionnellement)
Pour éviter les conditions de concurrence, utilisez les en-têtes de demande If-Match ou If-None-Match. L’argument etag fait partie de la représentation du drapeau de caractéristiques. Si les deux en-têtes sont omis, l’opération est inconditionnelle.
La requête suivante ne définit le drapeau de caractéristique que si la représentation actuelle correspond à la spécifiée 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}"
La requête suivante ne définit le drapeau de caractéristique que si la représentation actuelle ne correspond pas à la spécifiée 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}"
La requête suivante ne définit le drapeau de caractéristique que si une représentation existe déjà :
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: "*"
La requête suivante ne définit le feature flag que si une représentation n’existe pas déjà :
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: "*"
Réponses
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
...
ou
HTTP/1.1 412 Precondition Failed
Delete
- Obligatoire :
{name},{api-version} - Optionnel :
label(Si ce n’est pas spécifié, oulabel=%00, cela implique un drapeau de caractéristique sans étiquette.)
DELETE /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Réponse : Retournez le drapeau de fonctionnalité supprimée, ou aucun si le drapeau de fonctionnalité n’existait pas.
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
...
ou
HTTP/1.1 204 No Content
Drapeau de suppression de la fonction (conditionnellement)
C’est similaire à la section « Définir le drapeau de caractéristique (conditionnellement) » plus tôt dans cet article. L’opération de suppression prend en charge l’en-tête If-Match de requête.
Pour des informations sur les en-têtes requête et réponse partagés par les opérations du plan de données App Configuration, voir En-têtes communs.