DevCycle Features v2 API
The Features v2 API from DevCycle — 6 operation(s) for features v2.
The Features v2 API from DevCycle — 6 operation(s) for features v2.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/devcycle-features-v2-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: DevCycle Bucketing Audiences Features v2 API
description: Documents the DevCycle Bucketing API which provides an API interface to User Bucketing and for Server SDKs configured to use Cloud Bucketing.
version: 1.3.0
servers:
- url: https://bucketing-api.devcycle.com/
tags:
- name: Features v2
paths:
/v2/projects/{project}/features/{feature}:
patch:
operationId: FeaturesController_update
summary: Update a Feature
description: Update a Feature by ID or key
parameters:
- name: feature
required: true
in: path
description: A Feature key or ID
schema:
type: string
- name: project
required: true
in: path
description: A Project key or ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFeatureDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Feature'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestErrorResponse'
'401':
description: ''
'403':
description: ''
'404':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
'409':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictErrorResponse'
'412':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PreconditionFailedErrorResponse'
tags:
- Features v2
get:
operationId: FeaturesController_findOne
summary: Get a Feature
description: Get a Feature by ID or key
parameters:
- name: feature
required: true
in: path
description: A Feature key or ID
schema:
type: string
- name: project
required: true
in: path
description: A Project key or ID
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Feature'
'401':
description: ''
'403':
description: ''
'404':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
tags:
- Features v2
/v2/projects/{project}/features:
post:
operationId: FeaturesController_create
summary: Create Feature
description: Create a new Feature
parameters:
- name: project
required: true
in: path
description: A Project key or ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateFeatureDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Feature'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestErrorResponse'
'401':
description: ''
'404':
description: ''
'409':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictErrorResponse'
'412':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PreconditionFailedErrorResponse'
tags:
- Features v2
get:
operationId: FeaturesController_findAll
summary: List Features
description: List Features
parameters:
- name: page
required: false
in: query
schema:
minimum: 1
default: 1
type: number
- name: perPage
required: false
in: query
schema:
minimum: 1
maximum: 1000
default: 100
type: number
- name: sortBy
required: false
in: query
schema:
default: createdAt
enum:
- createdAt
- updatedAt
- name
- key
- propertyKey
type: string
- name: sortOrder
required: false
in: query
schema:
default: desc
enum:
- asc
- desc
type: string
- name: search
required: false
in: query
schema:
minLength: 3
type: string
- name: createdBy
required: false
in: query
schema:
type: string
- name: type
required: false
in: query
schema:
enum:
- release
- experiment
- permission
- ops
type: string
- name: status
required: false
in: query
schema:
enum:
- active
- complete
- archived
type: string
- name: customStatus
required: false
in: query
schema:
type: array
items:
type: string
- name: keys
required: false
in: query
schema:
type: array
items:
type: string
- name: includeLatestUpdate
required: false
in: query
schema:
type: boolean
- name: staleness
required: false
in: query
schema:
enum:
- all
- unused
- released
- unmodified
- notStale
type: string
- name: project
required: true
in: path
description: A Project key or ID
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Feature'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestErrorResponse'
'401':
description: ''
'403':
description: ''
'404':
description: ''
tags:
- Features v2
/v2/projects/{project}/features/{feature}/static-configuration:
get:
operationId: FeaturesController_findStaticConfiguration
summary: Get a Feature's Static Configuration
description: Get a completed Feature's static configuration
parameters:
- name: feature
required: true
in: path
description: A Feature key or ID
schema:
type: string
- name: project
required: true
in: path
description: A Project key or ID
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/StaticConfiguration'
'401':
description: ''
'403':
description: ''
'404':
description: ''
'412':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PreconditionFailedErrorResponse'
tags:
- Features v2
patch:
operationId: FeaturesController_updateStaticConfiguration
summary: Update a Feature's Static Configuration
description: Update a completed Feature's static configuration
parameters:
- name: feature
required: true
in: path
description: A Feature key or ID
schema:
type: string
- name: project
required: true
in: path
description: A Project key or ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateStaticConfigurationDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/StaticConfiguration'
'401':
description: ''
'404':
description: ''
'412':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PreconditionFailedErrorResponse'
tags:
- Features v2
/v2/projects/{project}/features/{feature}/status:
patch:
operationId: FeaturesController_updateStatus
summary: Update a Feature's status
description: Update a Feature's status
parameters:
- name: feature
required: true
in: path
description: A Feature key or ID
schema:
type: string
- name: project
required: true
in: path
description: A Project key or ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFeatureStatusDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Feature'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestErrorResponse'
'401':
description: ''
'403':
description: ''
'404':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
'409':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictErrorResponse'
'412':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PreconditionFailedErrorResponse'
tags:
- Features v2
/v2/projects/{project}/features/{feature}/staleness:
get:
operationId: FeaturesController_getStaleness
summary: Get a Feature's Staleness
description: Get a Feature's Staleness
parameters:
- name: feature
required: true
in: path
description: A Feature key or ID
schema:
type: string
- name: project
required: true
in: path
description: A Project key or ID
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureStalenessEntity'
'401':
description: ''
'403':
description: ''
'404':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
tags:
- Features v2
patch:
operationId: FeaturesController_updateStaleness
summary: Update a Feature's Staleness
description: Update a Feature's Staleness
parameters:
- name: feature
required: true
in: path
description: A Feature key or ID
schema:
type: string
- name: project
required: true
in: path
description: A Project key or ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateStalenessDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureStalenessEntity'
'401':
description: ''
'403':
description: ''
'404':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
'412':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PreconditionFailedErrorResponse'
tags:
- Features v2
/v2/projects/{project}/features/{feature}/summary:
patch:
operationId: FeaturesController_updateSummary
summary: Update a Feature's summary
description: Update a Feature's summary
parameters:
- name: feature
required: true
in: path
description: A Feature key or ID
schema:
type: string
- name: project
required: true
in: path
description: A Project key or ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFeatureSummaryDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureSummary'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestErrorResponse'
'401':
description: ''
'403':
description: ''
'404':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
'412':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PreconditionFailedErrorResponse'
tags:
- Features v2
components:
schemas:
UpdateFeatureSummaryDto:
type: object
properties:
maintainers:
description: Auth0 maintainers of the feature
type: array
items:
type: string
links:
description: Array of links associated with the feature
type: array
items:
$ref: '#/components/schemas/Link'
markdown:
type: string
FeatureCustomStatus:
type: object
properties:
_status:
type: string
description: Custom status ID reference
updatedAt:
format: date-time
type: string
description: Timestamp when the custom status was last updated
TargetDistribution:
type: object
properties:
percentage:
type: number
description: Distribution percentage for the variation
example: 0.0005
minimum: 0
maximum: 1
_variation:
type: string
description: Variation ID or key from `feature.variations`
example: variation-1
required:
- percentage
- _variation
FeatureSummary:
type: object
properties:
maintainers:
description: Auth0 maintainers of this feature
type: array
items:
type: string
links:
type: array
items:
$ref: '#/components/schemas/Link'
markdown:
type: string
required:
- maintainers
- links
- markdown
UpdateStalenessDto:
type: object
properties:
snoozedUntil:
type: string
disabled:
type: boolean
metaData:
type: object
CreateVariableDto:
type: object
properties:
name:
type: string
description: Variable name
example: Show New Dashboard
maxLength: 100
minLength: 1
description:
type: string
description: A description of the Variable
example: A boolean variable that will toggle the new dashboard feature
maxLength: 1000
key:
type: string
description: 'Unique Variable identifier, can be used in the SDK / API to reference by key rather then ID.
Must only contain lower-case characters and `_`, `-` or `.`.'
example: show-new-dashboard
minLength: 1
maxLength: 100
pattern: ^[a-z0-9-_.]+$
_feature:
type: string
description: The ID of the Feature this Variable belongs to
example: 61450f3daec96f5cf4a49947
type:
type: string
description: The type of Variable. Must be one of [String | Boolean | Number | JSON]
example: Boolean
enum:
- String
- Boolean
- Number
- JSON
validationSchema:
description: Validation schema for variable values
allOf:
- $ref: '#/components/schemas/VariableValidationEntity'
tags:
description: Feature tags.
example:
- new
- dashboard
type: array
items:
type: string
required:
- key
- type
FeatureConfig:
type: object
properties:
_feature:
type: string
description: ID of the Feature owning the Configuration
example: 61450f3daec96f5cf4a49946
_environment:
type: string
description: ID of the Environment owning the Configuration
example: 61450f3daec96f5cf4a49946
_createdBy:
type: string
description: User who created the Feature Configuration
status:
description: Status of the Feature Configuration
enum:
- active
- inactive
type: string
startedAt:
format: date-time
type: string
description: Date the Feature Configuration was started
updatedAt:
format: date-time
type: string
description: The date the Feature Configuration was last updated
targets:
description: The targets to evaluate what variation a user should be delivered
type: array
items:
$ref: '#/components/schemas/Target'
readonly:
type: boolean
description: Controls whether the feature configuration is editable for a given user
hasStaticConfig:
type: boolean
description: 'Flag to indicate if the Feature owning the configuration has been marked as complete.
If true, the user targeting rules are ignored and the static variation is always used.'
required:
- _feature
- _environment
- status
- updatedAt
- targets
- readonly
- hasStaticConfig
AuditLogEntity:
type: object
properties:
date:
format: date-time
type: string
a0_user:
type: string
changes:
type: array
items:
type: object
required:
- date
- a0_user
- changes
FeatureSettings:
type: object
properties:
publicName:
type: string
maxLength: 100
minLength: 1
publicDescription:
type: string
maxLength: 1000
optInEnabled:
type: boolean
required:
- publicName
- publicDescription
- optInEnabled
BadRequestErrorResponse:
type: object
properties:
statusCode:
type: number
description: Response status code
example: 400
message:
type: object
description: Error details
example:
- key should not be empty
error:
type: string
description: Error type
example: Bad Request
required:
- statusCode
- message
- error
TargetAudience:
type: object
properties:
name:
type: string
description: Audience display name, must be set for project-level audiences.
example: Android Users
maxLength: 100
minLength: 1
filters:
description: Audience filters, describing logic for segmenting users
allOf:
- $ref: '#/components/schemas/AudienceOperatorWithAudienceMatchFilter'
required:
- filters
UserFilter:
type: object
properties:
subType:
description: Sub type of this filter
example: email
enum:
- user_id
- email
- platform
- deviceModel
type: string
comparator:
description: Comparator to use
example: '!='
enum:
- '='
- '!='
- exist
- '!exist'
- contain
- '!contain'
- startWith
- '!startWith'
- endWith
- '!endWith'
type: string
values:
description: An array of values is required for all filters except when the comparator is 'exist' or '!exist'
example:
- baduser@email.com
type: array
items:
type: string
type:
type: string
description: Filter type of this audience
example: user
default: user
enum:
- user
required:
- subType
- comparator
- type
UpdateFeatureDto:
type: object
properties:
key:
type: string
description: 'Unique key by Project, can be used in the SDK / API to reference by ''key'' rather than _id.
Must only contain lower-case characters and `_`, `-` or `.`.'
example: new-dash
minLength: 1
maxLength: 100
pattern: ^[a-z0-9-_.]+$
name:
type: string
description: Name of the Feature
example: New Dashboard
maxLength: 100
minLength: 1
description:
type: string
description: Feature description.
example: New Dashboard
maxLength: 1000
configurations:
type: object
additionalProperties:
$ref: '#/components/schemas/UpdateFeatureConfigDto'
example:
development:
status: active
targets: []
production:
status: inactive
targets: []
variations:
description: Variation configurations to be used by feature configurations.
type: array
items:
$ref: '#/components/schemas/UpdateVariationDto'
staleness:
type: object
summary:
$ref: '#/components/schemas/UpdateFeatureSummaryDto'
variables:
description: Variable definitions to be referenced in variations
type: array
items:
$ref: '#/components/schemas/CreateVariableDto'
type:
type: string
description: Feature type.
example: release
enum:
- release
- experiment
- permission
- ops
tags:
description: Feature tags.
example:
- new
- dashboard
type: array
items:
type: string
controlVariation:
type: string
description: The key of the variation that is used as the control variation for Metrics
settings:
description: Feature-level settings.
allOf:
- $ref: '#/components/schemas/FeatureSettingsDto'
sdkVisibility:
description: SDK Type Visibilty Settings
allOf:
- $ref: '#/components/schemas/FeatureSDKVisibilityDto'
CreateVariationDto:
type: object
properties:
key:
type: string
description: 'Unique key by Feature, can be used in the SDK / API to reference by ''key'' rather than _id.
Must only contain lower-case characters and `_`, `-` or `.`.'
example: variation-1
minLength: 1
maxLength: 100
pattern: ^[a-z0-9-_.]+$
name:
type: string
description: Variation display name.
example: User's with dashboard access
maxLength: 100
minLength: 1
variables:
type: object
description: A key-value map of variables to their value for this variation
additionalProperties:
anyOf:
- type: string
- type: number
- type: boolean
- type: array
- type: object
example:
show-new-dashboard: true
string-var: hello world
bool-var: true
num-var: 99
json-var:
foo: bar
required:
- key
- name
UserCustomFilter:
type: object
properties:
comparator:
description: Comparator to use
example: '>='
enum:
- '='
- '!='
- '>'
- '>='
- <
- <=
- exist
- '!exist'
- contain
- '!contain'
- startWith
- '!startWith'
- endWith
- '!endWith'
type: string
dataKey:
type: string
description: Data Key used for custom data
example: my_custom_prop
minLength: 1
dataKeyType:
description: Data Key Type used for custom data
example: Number
enum:
- String
- Boolean
- Number
type: string
values:
type: object
description: An array of values is required for all filters except when the comparator is 'exist' or '!exist'
example:
- 0
type:
type: string
description: Filter type of this audience
example: user
default: user
enum:
- user
subType:
type: string
description: Sub type of this filter
example: customData
default: customData
enum:
- customData
required:
- comparator
- dataKey
- dataKeyType
- type
- subType
CreateFeatureDto:
type: object
properties:
key:
type: string
description: 'Unique key by Project, can be used in the SDK / API to reference by ''key'' rather than _id.
Must only contain lower-case characters and `_`, `-` or `.`.'
example: new-dash
minLength: 1
maxLength: 100
pattern: ^[a-z0-9-_.]+$
name:
type: string
description: Name of the Feature
example: New Dashboard
maxLength: 100
minLength: 1
description:
type: string
description: Feature description.
example: New Dashboard
maxLength: 1000
configurations:
type: object
additionalProperties:
$ref: '#/components/schemas/UpdateFeatureConfigDto'
example:
development:
status: active
targets: []
production:
status: inactive
targets: []
type:
type: string
description: Feature type.
example: release
enum:
- release
- experiment
- permission
- ops
tags:
description: Feature tags.
example:
- new
- dashboard
type: array
items:
type: string
variations:
description: Variation configurations to be used by feature configurations.
type: array
items:
$ref: '#/components/schemas/CreateVariationDto'
controlVariation:
type: string
description: The key of the variation that is used as the control variation for Metrics
variables:
description: Variable definitions to be referenced in variations
type: array
items:
$ref: '#/components/schemas/CreateVariableDto'
settings:
description: Feature-level settings.
allOf:
- $ref: '#/components/schemas/FeatureSettingsDto'
sdkVisibility:
description: SDK Type Visibilty Settings
allOf:
- $ref: '#/components/schemas/FeatureSDKVisibilityDto'
required:
- key
- name
- configurations
FeatureStaleness:
type: object
properties: {}
UserCountryFilter:
type: object
properties:
subType:
description: Sub type of this filter
example: country
enum:
- country
type: string
default: country
comparator:
description: Comparator to use
example: '!='
enum:
- '='
- '!='
- exist
- '!exist'
- contain
- '!contain'
- startWith
- '!startWith'
- endWith
- '!endWith'
type: string
values:
description: An array of values is required for all filters except when the comparator is 'exist' or '!exist'
example:
- CA
- US
type: array
items:
type: string
type:
type: string
description: Filter type of this audience
example: user
default: user
enum:
- user
required:
- subType
- comparator
- type
AudienceOperatorWithAudienceMatchFilter:
type: object
properties:
filters:
type: array
description: Filters to apply using the "operator" operation
items:
anyOf:
- $ref: '#/components/schemas/AllFilter'
- $ref: '#/components/schemas/UserFilter'
- $ref: '#/components/schemas/UserCountryFilter'
- $ref: '#/components/schemas/UserAppVersionFilter'
- $ref: '#/components/schemas/UserPlatformVersionFilter'
- $ref: '#/components/schemas/UserCustomFilter'
- $ref: '#/components/schemas/AudienceMatchFilter'
operator:
description: Operator type if this object represents an operator, and not a filter
enum:
- and
- or
type: string
required:
- filters
- operator
UpdateFeatureConfigDto:
type: object
properties:
status:
type: string
description: Status of the Feature Configuration
enum:
- active
- inactive
targets:
description: The targets to evaluate what variation a user should be delivered
type: array
items:
$ref: '#/components/schemas/UpdateTargetDto'
PreconditionFailedErrorResponse:
type: object
properties:
statusCode:
type: number
description: Response status code
example: 412
message:
type: object
description: Error details
example: Variable does not belong to Feature
error:
type: string
description: Error type
example: Precondition Failed
required:
- statusCode
- message
- error
NotFoundErrorResponse:
type: object
properties:
statusCode:
# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/devcycle/refs/heads/main/openapi/devcycle-features-v2-api-openapi.yml