Verbeterde functievlaggen

Verbeterde feature-vlaggen zijn niet beschikbaar in deze API-versie.

Een enhanced feature-vlag is een bron die wordt geïdentificeerd door de unieke combinatie van name + label. label is een optie. Om expliciet naar een feature-vlag zonder label te verwijzen, gebruik \0 (URL gecodeerd als %00). Voor lijstoperaties worden feature-vlaggen met elk label overeengelaten met het weglaten label van overeenkomsten. Zie de details voor elke bewerking.

Important

Enhanced feature flag endpoints zijn alleen beschikbaar in de 2026-05-01-preview API-versie.

Voor historische weergaven, zie Verbeterde feature-vlagrevisies. Om labels te vermelden die gekoppeld zijn aan verbeterde feature-vlaggen, zie Labels.

Operations

  • Ophalen
  • Meerdere lijsten weergeven
  • Set
  • Delete

Prerequisites

Syntax

Functievlag

{
  "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]
}

Toewijzing

{
  "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]
}

Krijg feature-vlag

Vereist: {name}, {api-version}

Optioneel: label (Als het wordt weggelaten, impliceert dit een feature-vlag zonder label.)

Optioneel: tags (Als dit niet is opgegeven, impliceert dit tags.)

De name en label moeten exact overeenkomen voordat tags ze worden toegepast voor extra filtering. Zie de sectie Filteren verderop in dit artikel voor meer opties.

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

Reacties:

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"
}

Als de feature-vlag niet bestaat, wordt het volgende antwoord teruggegeven:

HTTP/1.1 404 Not Found

Ophalen (voorwaardelijk)

Gebruik of If-Match aanvraagheaders om de cache van If-None-Match clients te verbeteren. Het etag argument maakt deel uit van de feature flag-representatie. Als beide headers worden weggelaten, is de bewerking onvoorwaardelijk.

Het volgende verzoek haalt de feature-vlag alleen op als de huidige representatie niet overeenkomt met de gespecificeerde 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}"

Reacties:

HTTP/1.1 304 Not Modified

or

HTTP/1.1 200 OK

Lijst met feature-vlaggen

Optioneel: name (Indien niet gespecificeerd, impliceert het een functie vlagnaam.)

Optioneel: label (Als dit niet is opgegeven, impliceert dit een label.)

Optioneel: tags (Als dit niet is opgegeven, impliceert dit tags.)

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

Antwoord:

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}"
}

Zie de sectie Filteren verderop in dit artikel voor meer opties.

Lijst feature-vlaggen (voorwaardelijk)

Gebruik of If-Match aanvraagheaders om de cache van If-None-Match clients te verbeteren. Het etag argument maakt deel uit van de tekstrespons en kop. Als beide headers worden weggelaten, is de bewerking onvoorwaardelijk.

Het volgende verzoek haalt feature-vlaggen alleen op als de huidige representatie overeenkomt met de gespecificeerde etag:

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

Reacties:

HTTP/1.1 412 Precondition Failed

or

HTTP/1.1 200 OK

Het volgende verzoek krijgt de feature-vlaggen alleen als de huidige representatie niet overeenkomt met de gespecificeerde etag:

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

Reacties:

HTTP/1.1 304 Not Modified

or

HTTP/1.1 200 OK

Pagina-indeling

Het resultaat wordt gepagineerd als het aantal geretourneerde items de antwoordlimiet overschrijdt. Volg de optionele Link responsheader en gebruik rel="next" deze voor navigatie. Als alternatief biedt de inhoud een volgende link in de vorm van de @nextLink eigendom. De gekoppelde URI bevat het api-version argument.

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

Antwoord:

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}"
}

Filteren

Een combinatie van name, labelen tags filteren wordt ondersteund. Gebruik de optionele nameparameters en labeltagsqueryreeksparameters. Er kunnen meerdere tagfilters worden opgegeven als queryreeksparameters in de tagName=tagValue indeling. Tagfilters moeten een exacte overeenkomst zijn.

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

Ondersteunde filters

Naamfilter Effect
name wordt weggelaten of name=* Komt overeen met elke naam van een feature-vlag
name=abc Komt overeen met een feature-vlag genaamd abc
name=abc* Wedstrijden bevatten vlagtitels die beginnen met abc
name=abc,xyz Wedstrijden bevatten vlagnamen abc of xyz (beperkt tot 5 CSV)
Labelfilter Effect
label wordt weggelaten of label=* Komt overeen met elk label
label=%00 Wedstrijden bevatten vlaggen zonder label
label=prod Komt overeen met het label prod
label=prod* Komt overeen met labels die beginnen met prod
label=prod,test Komt overeen met labels prod of test (beperkt tot 5 CSV)
Tagsfilter Effect
tags wordt weggelaten of tags= Komt overeen met een tag
tags=group=app1 Matches bevatten vlaggen met een tag die met waarde is benoemd groupapp1
tags=group=app1&tags=env=prod Matches bevatten vlaggen met een tag met een naam met group waarde app1 en een tag met een naam met env een waarde prod (beperkt tot 5 tagfilters)
tags=tag1=%00 Matches bevatten vlaggen met een tag die met waarde is benoemd tag1null
tags=tag1= Matches bevatten vlaggen met een tag die een lege waarde heeft genoemd tag1

Gereserveerde tekens

*, \, ,

Als een gereserveerd teken deel uitmaakt van de waarde, moet deze worden ontsnapt met behulp van \{Reserved Character}. Niet-gereserveerde tekens kunnen ook worden ontsnapt.

Filtervalidatie

Als de filtervalidatie mislukt, is het antwoord HTTP 400 met foutdetails:

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}
    
  • De naam van de feature-vlag begint met abc en bevat alle labels

    GET /ff?name=abc*&label=*&api-version={api-version}
    
  • De naam van de feature-vlag begint met abc en het label is gelijk aan v1 of v2

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

Specifieke velden aanvragen

Gebruik de optionele $select queryreeksparameter en geef een door komma's gescheiden lijst met aangevraagde velden op. Als de $select parameter wordt weggelaten, bevat het antwoord de standaardset. Ondersteunde velden zijn name, enabled, label, description, conditions, variants, allocation, telemetry, , tags, , last_modifieden etag.

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

De $select parameter wordt ondersteund door GET verzoeken om één feature-vlag en feature-vlagverzamelingen.

Toegang op basis van tijd

Verkrijg een weergave van het resultaat zoals het in het verleden was. Zie sectie 2.1.1 voor meer informatie. Paginering wordt nog steeds ondersteund zoals eerder in dit artikel is gedefinieerd.

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-vlag

  • Vereist: {name}, {api-version}
  • Optioneel: label (Als niet gespecificeerd, of label=%00, impliceert dit een feature-vlag zonder label.)

De enabled eigendom is vereist in het verzoekschrift. De descriptioneigenschappen , conditions, variants, , allocation, telemetryen tags zijn optioneel. Voeg , label, etag, niet toe nameaan last_modified de verzoektekst.

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"
  }
}

Reacties:

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"
}

Stel feature-vlag in (voorwaardelijk)

Gebruik of If-Match aanvraagheaders om racevoorwaarden If-None-Match te voorkomen. Het etag argument maakt deel uit van de feature flag-representatie. Als beide headers worden weggelaten, is de bewerking onvoorwaardelijk.

Het volgende verzoek stelt de feature-vlag alleen in als de huidige representatie overeenkomt met de gespecificeerde 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}"

Het volgende verzoek stelt de feature-vlag alleen in als de huidige representatie niet overeenkomt met de gespecificeerde 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}"

Het volgende verzoek stelt de feature-vlag alleen in als er al een representatie bestaat:

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: "*"

Het volgende verzoek stelt de feature-vlag alleen in als er nog geen representatie bestaat:

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: "*"

Reacties

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
...

or

HTTP/1.1 412 Precondition Failed

Delete

  • Vereist: {name}, {api-version}
  • Optioneel: label (Als niet gespecificeerd, of label=%00, impliceert dit een feature-vlag zonder label.)
DELETE /ff/{name}?label={label}&api-version={api-version} HTTP/1.1

Reactie: Stuur de verwijderde feature-vlag terug, of geen enkele als de feature-vlag niet bestond.

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
...

or

HTTP/1.1 204 No Content

Verwijder functie-vlag (voorwaardelijk)

Dit lijkt op de sectie "Set feature flag (conditionally)" eerder in dit artikel. De verwijderingsoperatie ondersteunt de If-Match requestheader.

Voor informatie over request- en response-headers die gedeeld worden door App Configuration data-plane operaties, zie Common headers.