detektu
Vercel API changes
Info

Response required property added: variants

openapi:PATCH /v1/projects/{}/feature-flags/flags/{}::response.200.application.json.variants
Product
Vercel API
Source
OpenAPI URL
Change kind
Response Required Property Added
Detected
Last updated

Deterministic evidence

Before / after

Extracted from Vercel's published contract. Shows the schema the change belongs to. Open the source ↗

−750+7431 change

1 / 1
{
{
"oneOf": [
"properties": {
{
"createdAt": {
"properties": {
"type": "number"
"createdAt": {
},
"type": "number"
"createdBy": {
},
"type": "string"
"createdBy": {
},
"type": "string"
"environments": {
},
"additionalProperties": {
"environments": {
"properties": {
"additionalProperties": {
"active": {
"properties": {
"enum": [
"active": {
false,
"enum": [
true
false,
],
true
"type": "boolean"
],
},
"type": "boolean"
"fallthrough": {
},
"oneOf": [
"fallthrough": {
{
"oneOf": [
"properties": {
{
"type": {
"properties": {
"enum": [
"type": {
"variant"
"enum": [
],
"variant"
"type": "string"
],
},
"type": "string"
"variantId": {
},
"type": "string"
"variantId": {
}
"type": "string"
},
}
"required": [
},
"type",
"required": [
"variantId"
"type",
],
"variantId"
"type": "object"
],
},
"type": "object"
{
},
"properties": {
{
"base": {
"properties": {
"properties": {
"base": {
"attribute": {
"properties": {
"type": "string"
"attribute": {
},
"type": "string"
"kind": {
},
"type": "string"
"kind": {
},
"type": "string"
"type": {
},
"enum": [
"type": {
"entity"
"enum": [
],
"entity"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"attribute",
"required": [
"kind",
"attribute",
"type"
"kind",
],
"type"
"type": "object"
],
},
"type": "object"
"defaultVariantId": {
},
"type": "string"
"defaultVariantId": {
},
"type": "string"
"type": {
},
"enum": [
"type": {
"split"
"enum": [
],
"split"
"type": "string"
],
},
"type": "string"
"weights": {
},
"additionalProperties": {
"weights": {
"type": "number"
"additionalProperties": {
},
"type": "number"
"type": "object"
},
}
"type": "object"
},
}
"required": [
},
"base",
"required": [
"defaultVariantId",
"base",
"type",
"defaultVariantId",
"weights"
"type",
],
"weights"
"type": "object"
],
},
"type": "object"
{
},
"properties": {
{
"base": {
"properties": {
"properties": {
"base": {
"attribute": {
"properties": {
"type": "string"
"attribute": {
},
"type": "string"
"kind": {
},
"type": "string"
"kind": {
},
"type": "string"
"type": {
},
"enum": [
"type": {
"entity"
"enum": [
],
"entity"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"attribute",
"required": [
"kind",
"attribute",
"type"
"kind",
],
"type"
"type": "object"
],
},
"type": "object"
"defaultVariantId": {
},
"type": "string"
"defaultVariantId": {
},
"type": "string"
"finalPromille": {
},
"type": "number"
"finalPromille": {
},
"type": "number"
"rollFromVariantId": {
},
"type": "string"
"rollFromVariantId": {
},
"type": "string"
"rollToVariantId": {
},
"type": "string"
"rollToVariantId": {
},
"type": "string"
"slots": {
},
"items": {
"slots": {
"properties": {
"items": {
"durationMs": {
"properties": {
"type": "number"
"durationMs": {
},
"type": "number"
"promille": {
},
"type": "number"
"promille": {
}
"type": "number"
},
}
"required": [
},
"durationMs",
"required": [
"promille"
"durationMs",
],
"promille"
"type": "object"
],
},
"type": "object"
"type": "array"
},
},
"type": "array"
"startTimestamp": {
},
"type": "number"
"startTimestamp": {
},
"type": "number"
"type": {
},
"enum": [
"type": {
"rollout"
"enum": [
],
"rollout"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"base",
"required": [
"defaultVariantId",
"base",
"rollFromVariantId",
"defaultVariantId",
"rollToVariantId",
"rollFromVariantId",
"slots",
"rollToVariantId",
"startTimestamp",
"slots",
"type"
"startTimestamp",
],
"type"
"type": "object"
],
},
"type": "object"
{
},
"properties": {
{
"type": {
"properties": {
"enum": [
"type": {
"experiment"
"enum": [
],
"experiment"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"type"
"required": [
],
"type"
"type": "object"
],
}
"type": "object"
]
}
},
]
"pausedOutcome": {
},
"properties": {
"pausedOutcome": {
"type": {
"properties": {
"enum": [
"type": {
"variant"
"enum": [
],
"variant"
"type": "string"
],
},
"type": "string"
"variantId": {
},
"type": "string"
"variantId": {
}
"type": "string"
},
}
"required": [
},
"type",
"required": [
"variantId"
"type",
],
"variantId"
"type": "object"
],
},
"type": "object"
"reuse": {
},
"properties": {
"reuse": {
"active": {
"properties": {
"enum": [
"active": {
false,
"enum": [
true
false,
],
true
"type": "boolean"
],
},
"type": "boolean"
"environment": {
},
"type": "string"
"environment": {
}
"type": "string"
},
}
"required": [
},
"active",
"required": [
"environment"
"active",
],
"environment"
"type": "object"
],
},
"type": "object"
"revision": {
},
"type": "number"
"revision": {
},
"type": "number"
"rules": {
},
"items": {
"rules": {
"properties": {
"items": {
"conditions": {
"properties": {
"items": {
"conditions": {
"properties": {
"items": {
"cmp": {
"properties": {
"enum": [
"cmp": {
"!contains",
"enum": [
"!endsWith",
"!contains",
"!eq",
"!endsWith",
"!ex",
"!eq",
"!oneOf",
"!ex",
"!regex",
"!oneOf",
"!startsWith",
"!regex",
"after",
"!startsWith",
"before",
"after",
"contains",
"before",
"containsAllOf",
"contains",
"containsAnyOf",
"containsAllOf",
"containsNoneOf",
"containsAnyOf",
"endsWith",
"containsNoneOf",
"eq",
"endsWith",
"ex",
"eq",
"gt",
"ex",
"gte",
"gt",
"lt",
"gte",
"lte",
"lt",
"oneOf",
"lte",
"regex",
"oneOf",
"startsWith"
"regex",
],
"startsWith"
"type": "string"
],
},
"type": "string"
"cmpOptions": {
},
"properties": {
"cmpOptions": {
"ignoreCase": {
"properties": {
"enum": [
"ignoreCase": {
false,
"enum": [
true
false,
],
true
"type": "boolean"
],
}
"type": "boolean"
},
}
"type": "object"
},
},
"type": "object"
"lhs": {
},
"oneOf": [
"lhs": {
{
"oneOf": [
"properties": {
{
"type": {
"properties": {
"enum": [
"type": {
"segment"
"enum": [
],
"segment"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"type"
"required": [
],
"type"
"type": "object"
],
},
"type": "object"
{
},
"properties": {
{
"attribute": {
"properties": {
"type": "string"
"attribute": {
},
"type": "string"
"kind": {
},
"type": "string"
"kind": {
},
"type": "string"
"type": {
},
"enum": [
"type": {
"entity"
"enum": [
],
"entity"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"attribute",
"required": [
"kind",
"attribute",
"type"
"kind",
],
"type"
"type": "object"
],
}
"type": "object"
]
}
},
]
"rhs": {
},
"oneOf": [
"rhs": {
{
"oneOf": [
"type": "string"
{
},
"type": "string"
{
},
"type": "number"
{
},
"type": "number"
{
},
"properties": {
{
"items": {
"properties": {
"items": {
"items": {
"oneOf": [
"items": {
{
"oneOf": [
"properties": {
{
"label": {
"properties": {
"type": "string"
"label": {
},
"type": "string"
"note": {
},
"type": "string"
"note": {
},
"type": "string"
"value": {
},
"type": "number"
"value": {
}
"type": "number"
},
}
"required": [
},
"value"
"required": [
],
"value"
"type": "object"
],
},
"type": "object"
{
},
"properties": {
{
"label": {
"properties": {
"type": "string"
"label": {
},
"type": "string"
"note": {
},
"type": "string"
"note": {
},
"type": "string"
"value": {
},
"type": "string"
"value": {
}
"type": "string"
},
}
"required": [
},
"value"
"required": [
],
"value"
"type": "object"
],
}
"type": "object"
]
}
},
]
"type": "array"
},
},
"type": "array"
"type": {
},
"enum": [
"type": {
"list",
"enum": [
"list/inline"
"list",
],
"list/inline"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"items",
"required": [
"type"
"items",
],
"type"
"type": "object"
],
},
"type": "object"
{
},
"properties": {
{
"flags": {
"properties": {
"type": "string"
"flags": {
},
"type": "string"
"pattern": {
},
"type": "string"
"pattern": {
},
"type": "string"
"type": {
},
"enum": [
"type": {
"regex"
"enum": [
],
"regex"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"flags",
"required": [
"pattern",
"flags",
"type"
"pattern",
],
"type"
"type": "object"
],
},
"type": "object"
{
},
"enum": [
{
false,
"enum": [
true
false,
],
true
"type": "boolean"
],
}
"type": "boolean"
]
}
}
]
},
}
"required": [
},
"cmp",
"required": [
"lhs"
"cmp",
],
"lhs"
"type": "object"
],
},
"type": "object"
"type": "array"
},
},
"type": "array"
"id": {
},
"type": "string"
"id": {
},
"type": "string"
"outcome": {
},
"oneOf": [
"outcome": {
{
"oneOf": [
"properties": {
{
"type": {
"properties": {
"enum": [
"type": {
"variant"
"enum": [
],
"variant"
"type": "string"
],
},
"type": "string"
"variantId": {
},
"type": "string"
"variantId": {
}
"type": "string"
},
}
"required": [
},
"type",
"required": [
"variantId"
"type",
],
"variantId"
"type": "object"
],
},
"type": "object"
{
},
"properties": {
{
"base": {
"properties": {
"properties": {
"base": {
"attribute": {
"properties": {
"type": "string"
"attribute": {
},
"type": "string"
"kind": {
},
"type": "string"
"kind": {
},
"type": "string"
"type": {
},
"enum": [
"type": {
"entity"
"enum": [
],
"entity"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"attribute",
"required": [
"kind",
"attribute",
"type"
"kind",
],
"type"
"type": "object"
],
},
"type": "object"
"defaultVariantId": {
},
"type": "string"
"defaultVariantId": {
},
"type": "string"
"type": {
},
"enum": [
"type": {
"split"
"enum": [
],
"split"
"type": "string"
],
},
"type": "string"
"weights": {
},
"additionalProperties": {
"weights": {
"type": "number"
"additionalProperties": {
},
"type": "number"
"type": "object"
},
}
"type": "object"
},
}
"required": [
},
"base",
"required": [
"defaultVariantId",
"base",
"type",
"defaultVariantId",
"weights"
"type",
],
"weights"
"type": "object"
],
},
"type": "object"
{
},
"properties": {
{
"base": {
"properties": {
"properties": {
"base": {
"attribute": {
"properties": {
"type": "string"
"attribute": {
},
"type": "string"
"kind": {
},
"type": "string"
"kind": {
},
"type": "string"
"type": {
},
"enum": [
"type": {
"entity"
"enum": [
],
"entity"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"attribute",
"required": [
"kind",
"attribute",
"type"
"kind",
],
"type"
"type": "object"
],
},
"type": "object"
"defaultVariantId": {
},
"type": "string"
"defaultVariantId": {
},
"type": "string"
"finalPromille": {
},
"type": "number"
"finalPromille": {
},
"type": "number"
"rollFromVariantId": {
},
"type": "string"
"rollFromVariantId": {
},
"type": "string"
"rollToVariantId": {
},
"type": "string"
"rollToVariantId": {
},
"type": "string"
"slots": {
},
"items": {
"slots": {
"properties": {
"items": {
"durationMs": {
"properties": {
"type": "number"
"durationMs": {
},
"type": "number"
"promille": {
},
"type": "number"
"promille": {
}
"type": "number"
},
}
"required": [
},
"durationMs",
"required": [
"promille"
"durationMs",
],
"promille"
"type": "object"
],
},
"type": "object"
"type": "array"
},
},
"type": "array"
"startTimestamp": {
},
"type": "number"
"startTimestamp": {
},
"type": "number"
"type": {
},
"enum": [
"type": {
"rollout"
"enum": [
],
"rollout"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"base",
"required": [
"defaultVariantId",
"base",
"rollFromVariantId",
"defaultVariantId",
"rollToVariantId",
"rollFromVariantId",
"slots",
"rollToVariantId",
"startTimestamp",
"slots",
"type"
"startTimestamp",
],
"type"
"type": "object"
],
},
"type": "object"
{
},
"properties": {
{
"type": {
"properties": {
"enum": [
"type": {
"experiment"
"enum": [
],
"experiment"
"type": "string"
],
}
"type": "string"
},
}
"required": [
},
"type"
"required": [
],
"type"
"type": "object"
],
}
"type": "object"
]
}
}
]
},
}
"required": [
},
"conditions",
"required": [
"id",
"conditions",
"outcome"
"id",
],
"outcome"
"type": "object"
],
},
"type": "object"
"type": "array"
},
},
"type": "array"
"targets": {
},
"additionalProperties": {
"targets": {
"additionalProperties": {
"additionalProperties": {
"additionalProperties": {
"additionalProperties": {
"items": {
"additionalProperties": {
"properties": {
"items": {
"note": {
"properties": {
"type": "string"
"note": {
},
"type": "string"
"value": {
},
"type": "string"
"value": {
}
"type": "string"
},
}
"required": [
},
"value"
"required": [
],
"value"
"type": "object"
],
},
"type": "object"
"type": "array"
},
},
"type": "array"
"type": "object"
},
},
"type": "object"
"type": "object"
},
},
"type": "object"
"type": "object"
},
}
"type": "object"
},
}
"required": [
},
"active",
"required": [
"fallthrough",
"active",
"pausedOutcome",
"fallthrough",
"rules"
"pausedOutcome",
],
"rules"
"type": "object"
],
},
"type": "object"
"type": "object"
},
},
"type": "object"
"id": {
},
"type": "string"
"id": {
},
"type": "string"
"kind": {
},
"enum": [
"kind": {
"boolean",
"enum": [
"json",
"boolean",
"number",
"json",
"string"
"number",
],
"string"
"type": "string"
],
},
"type": "string"
"maintainerIds": {
},
"items": {
"maintainerIds": {
"type": "string"
"items": {
},
"type": "string"
"type": "array"
},
},
"type": "array"
"ownerId": {
},
"type": "string"
"ownerId": {
},
"type": "string"
"permanent": {
},
"enum": [
"permanent": {
false,
"enum": [
true
false,
],
true
"type": "boolean"
],
},
"type": "boolean"
"projectId": {
},
"type": "string"
"projectId": {
},
"type": "string"
"revision": {
},
"type": "number"
"revision": {
},
"type": "number"
"seed": {
},
"type": "number"
"seed": {
},
"type": "number"
"slug": {
},
"type": "string"
"slug": {
},
"type": "string"
"state": {
},
"enum": [
"state": {
"active",
"enum": [
"archived"
"active",
],
"archived"
"type": "string"
],
},
"type": "string"
"tags": {
},
"items": {
"tags": {
"type": "string"
"items": {
},
"type": "string"
"type": "array"
},
},
"type": "array"
"typeName": {
},
"enum": [
"typeName": {
"flag"
"enum": [
],
"flag"
"type": "string"
],
},
"type": "string"
"updatedAt": {
},
"type": "number"
"updatedAt": {
},
"type": "number"
"updatedBy": {
},
"type": "string"
"updatedBy": {
},
"type": "string"
"variants": {
},
"items": {
"variants": {
"properties": {
"items": {
"id": {
"properties": {
"type": "string"
"id": {
},
"type": "string"
"label": {
},
"type": "string"
"label": {
},
"type": "string"
"value": {
},
"nullable": true,
"value": {
"oneOf": [
"nullable": true,
{
"oneOf": [
"type": "string"
{
},
"type": "string"
{
},
"type": "number"
{
},
"type": "number"
{
},
"additionalProperties": true,
{
"type": "object"
"additionalProperties": true,
},
"type": "object"
{
},
"items": {},
{
"type": "array"
"items": {},
},
"type": "array"
{
},
"enum": [
{
false,
"enum": [
true
false,
],
true
"type": "boolean"
],
}
"type": "boolean"
]
}
}
]
},
}
"required": [
},
"id",
"required": [
"value"
"id",
],
"value"
"type": "object"
],
},
"type": "object"
"type": "array"
},
}
"type": "array"
},
}
"required": [
},
"createdAt",
"required": [
"createdBy",
"createdAt",
"environments",
"createdBy",
"id",
"environments",
"kind",
"id",
"ownerId",
"kind",
"projectId",
"ownerId",
"revision",
"projectId",
"seed",
"revision",
"slug",
"seed",
"state",
"slug",
"typeName",
"state",
"updatedAt",
"typeName",
"variants"
"updatedAt",
],
"variants"
"type": "object"
],
"type": "object"
},
{
"$ref": "#/components/schemas/Flag"
}
]
}
}

Monitored for you

Does this change affect your integration?

Choose the operations and fields your services use. Detektu matches Vercel findings to that declared usage so your team can review the relevant evidence. No agent or repository access required.