Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las banderas de funcionalidad mejorada no están disponibles en esta versión de la API.
Una bandera de característica mejorada es un recurso identificado por la combinación única de name + label.
label es opcional. Para referenciar explícitamente una bandera de característica sin etiqueta, use \0 (URL codificada como %00). Para operaciones de lista, omitir label coincidencias presenta banderas con cualquier etiqueta. Revise los detalles para cada operación.
Importante
Los endpoints de bandera de funcionalidad mejorada solo están disponibles en la 2026-05-01-preview versión de la API.
Para representaciones históricas, véase Revisiones mejoradas de las banderas de características. Para listar etiquetas asociadas a las banderas de características mejoradas, consulte Etiquetas.
Operations
- Obtener
- Enumerar varios
- Establecer
- Eliminar
Prerequisites
- Se deben autenticar todas las solicitudes HTTP. Consulte la sección Autenticación.
- Todas las solicitudes HTTP deben proporcionar parámetros
api-versionexplícitos. Consulte la sección Control de versiones.
Syntax
Marca de características
{
"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]
}
Asignación
{
"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]
}
Obtener la bandera de características
Obligatorio: {name}, {api-version}
Opcional: label (Si se omite, implica una bandera de característica sin etiqueta.)
Opcional: tags (Si no se especifica, implica cualquier etiqueta).
Los name y label deben coincidir exactamente antes tags de aplicarse para filtrar adicionalmente. Para obtener más opciones, consulte la sección "Filtrado" más adelante en este artículo.
GET /ff/{name}?label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}
Respuestas:
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 la bandera de característica no existe, se devuelve la siguiente respuesta:
HTTP/1.1 404 Not Found
Obtención (de manera condicional)
Para mejorar el almacenamiento en caché del cliente, use los encabezados de solicitud If-Match o If-None-Match. El etag argumento forma parte de la representación de la bandera de características. Si se omiten ambos encabezados, la operación es incondicional.
La siguiente solicitud recupera la bandera de característica solo si la representación actual no coincide con la especificada 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}"
Respuestas:
HTTP/1.1 304 Not Modified
o
HTTP/1.1 200 OK
Banderas de características de lista
Opcional: name (Si no se especifica, implica cualquier nombre de bandera de característica.)
Opcional: label (si no se especifica, sugiere cualquier etiqueta).
Opcional: tags (Si no se especifica, implica cualquier etiqueta).
GET /ff?name=Test*&label=*&tags=tag1=value1&tags=tag2=value2&api-version={api-version} HTTP/1.1
Respuesta:
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}"
}
Para obtener más opciones, consulte la sección "Filtrado" más adelante en este artículo.
Listar banderas de características (condicionalmente)
Para mejorar el almacenamiento en caché del cliente, use los encabezados de solicitud If-Match o If-None-Match. El etag argumento forma parte del cuerpo de la respuesta de la lista y del encabezado. Si se omiten ambos encabezados, la operación es incondicional.
La siguiente solicitud recupera las banderas de característica solo si la representación actual coincide con la especificada etag:
GET /ff?name={name}&label={label}&api-version={api-version} HTTP/1.1
If-Match: "{etag}"
Respuestas:
HTTP/1.1 412 Precondition Failed
o
HTTP/1.1 200 OK
La siguiente solicitud solo recibe las banderas de característica si la representación actual no coincide con la especificada etag:
GET /ff?name={name}&label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "{etag}"
Respuestas:
HTTP/1.1 304 Not Modified
o
HTTP/1.1 200 OK
Pagination
El resultado se pagina si el número de elementos devueltos supera el límite de respuesta. Sigue el encabezado de respuesta opcional Link y úsalo rel="next" para navegar. Alternativamente, el contenido proporciona un siguiente enlace en forma de la @nextLink propiedad. El URI vinculado incluye el argumento api-version.
GET /ff?api-version={api-version} HTTP/1.1
Respuesta:
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}"
}
Filtros
Se admite una combinación de name, labely tags el filtrado. Use los parámetros opcionales namede cadena de consulta , labely tags . Se pueden proporcionar varios filtros de etiqueta como parámetros de cadena de consulta en el tagName=tagValue formato . Los filtros de etiqueta deben ser una coincidencia exacta.
GET /ff?name={name}&label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}
Filtros admitidos
| Filtro de nombres | Effect |
|---|---|
se omite name o name=* |
Coincide con cualquier nombre de bandera característica |
name=abc |
Coincide con una bandera principal llamada abc |
name=abc* |
Los combates incluyen nombres de banderas que empiezan por abc |
name=abc,xyz |
Los partidos incluyen nombres de banderas abc o xyz (limitado a 5 CSV) |
| Filtro de etiqueta | Effect |
|---|---|
se omite label o label=* |
Coincide con cualquier etiqueta |
label=%00 |
Los combates presentan banderas sin etiqueta |
label=prod |
Coincide con la etiqueta prod |
label=prod* |
Coincide con las etiquetas que empiezan por prod |
label=prod,test |
Coincide con las etiquetas prod o test (limitado a 5 archivos CSV) |
| Filtro de etiquetas | Effect |
|---|---|
se omite tags o tags= |
Coincide con cualquier etiqueta |
tags=group=app1 |
Las partidas incluyen banderas que llevan una etiqueta con valor groupapp1 |
tags=group=app1&tags=env=prod |
Las coincidencias incluyen banderas que tienen una etiqueta con group valor app1 y otra etiqueta con env valor prod (limitada a 5 filtros de etiquetas) |
tags=tag1=%00 |
Las partidas incluyen banderas que llevan una etiqueta con valor tag1null |
tags=tag1= |
Las partidas presentan banderas que tienen una etiqueta con tag1 un valor vacío |
Caracteres reservados
*, \, ,
Si un carácter reservado forma parte del valor, se debe escapar mediante \{Reserved Character}. Los caracteres no reservados también se pueden escapar.
Validación del filtro
Si se produce un error en la validación del filtro, la respuesta es HTTP 400 con detalles de error:
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
All
GET /ff?api-version={api-version}El nombre de la bandera de la característica comienza por abc e incluye todas las etiquetas
GET /ff?name=abc*&label=*&api-version={api-version}El nombre de la bandera de la característica comienza por abc y la etiqueta es igual a v1 o v2
GET /ff?name=abc*&label=v1,v2&api-version={api-version}
Solicitud de campos específicos
Use el parámetro de cadena de consulta opcional $select y proporcione una lista separada por comas de campos solicitados. Si se omite el parámetro $select, la respuesta contiene el conjunto predeterminado. Los cuerpos soportados son name, enabled, label, conditionsdescription, variants, allocation, telemetry, last_modifiedtagsy etag.
GET /ff?$select=name,enabled,label&api-version={api-version} HTTP/1.1
El $select parámetro se soporta mediante GET solicitudes para una única bandera de característica y colecciones de flags de características.
Acceso basado en el tiempo
Obtenga una representación del resultado tal como era en un momento anterior. Para obtener más información, consulte la sección 2.1.1. Todavía se admite la paginación tal y como se definió anteriormente en este artículo.
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
Establecer la bandera de característica
- Obligatorio:
{name},{api-version} - Opcional:
label(Si no se especifica, olabel=%00, implica una bandera de característica sin etiqueta.)
La enabled propiedad es obligatoria en el cuerpo de la solicitud. Las descriptionpropiedades , conditions, variants, allocation, telemetry, y tags son opcionales. No incluyas name, label, etag, ni last_modified en el cuerpo de la solicitud.
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"
}
}
Respuestas:
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"
}
Establecer la bandera de característica (condicionalmente)
Para evitar condiciones de carrera, use los encabezados de solicitud If-Match o If-None-Match. El etag argumento forma parte de la representación de la bandera de características. Si se omiten ambos encabezados, la operación es incondicional.
La siguiente solicitud establece la bandera de característica solo si la representación actual coincide con la especificada 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 siguiente solicitud establece la bandera de característica solo si la representación actual no coincide con la especificada 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 siguiente solicitud establece la bandera de característica solo si ya existe una representación:
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 siguiente solicitud establece la bandera de característica solo si una representación no existe ya:
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: "*"
Respuestas
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
...
o
HTTP/1.1 412 Precondition Failed
Eliminar
- Obligatorio:
{name},{api-version} - Opcional:
label(Si no se especifica, olabel=%00, implica una bandera de característica sin etiqueta.)
DELETE /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Respuesta: Devuelve la bandera de función eliminada, o ninguna si la bandera de función no existía.
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
...
o
HTTP/1.1 204 No Content
Eliminar la bandera de función (condicionalmente)
Esto es similar a la sección "Establecer bandera de característica (condicionalmente)" anterior en este artículo. La operación de eliminación soporta la cabecera de If-Match la solicitud.
Para información sobre cabeceras de solicitud y respuesta compartidas por las operaciones del plano de datos de App Configuration, véase Cabeceras comunes.