# Returns a Feature Flag

Returns details such as Variation name, identifier etc for the given Feature Flag

Endpoint: GET /cf/admin/features/{identifier}
Version: 1.0
Security: x-api-key

## Path parameters:

  - `identifier` (string, required)
    Unique identifier for the object in the API.

## Query parameters:

  - `accountIdentifier` (string, required)
    Account Identifier

  - `orgIdentifier` (string, required)
    Organization Identifier

  - `projectIdentifier` (string, required)
    The Project identifier

  - `environmentIdentifier` (string)
    Environment

  - `archived` (boolean)
    Status of the feature flag

## Response 200 fields (application/json):

  - `archived` (boolean)
    Indicates if the flag has been archived and is no longer used

  - `createdAt` (integer, required)
    The date the flag was created in milliseconds

  - `defaultOffVariation` (string, required)
    The default value returned when a flag is off
    Example: true

  - `defaultOnVariation` (string, required)
    The default value returned when a flag is on
    Example: true

  - `description` (string)
    A description for this flag
    Example: "A flag to control a new feature in production"

  - `envProperties` (object)
    The Feature Flag rules for a given environment

  - `envProperties.ccm` (object)
    CCM Details for environment

  - `envProperties.ccm.anomalies` (array)
    List of anomalies detected

  - `envProperties.ccm.anomalies.acknowledgedAt` (integer)
    The timestamp when the anomaly was acknowledged

  - `envProperties.ccm.anomalies.anomalyId` (string, required)
    The Id of the anomaly
    Example: "123456"

  - `envProperties.ccm.anomalies.costDifference` (integer)
    The difference value for the anomaly
    Example: 123

  - `envProperties.ccm.anomalies.createdAt` (integer, required)
    The creation timestamp of the anomaly record

  - `envProperties.ccm.anomalies.foundAt` (integer)
    The timestamp when the anomaly was found

  - `envProperties.ccm.anomalies.isAcknowledged` (boolean, required)
    Flag to indicate if the anomaly is acknowledged

  - `envProperties.ccm.anomalies.status` (string, required)
    The current status of the anomaly
    Example: "found"

  - `envProperties.ccm.perspectiveIdentifier` (string, required)
    Example: "123456"

  - `envProperties.ccm.perspectiveName` (string, required)
    Example: "myCluster"

  - `envProperties.defaultServe` (object, required)
    Describe the distribution rule and the variation that should be served to the target

  - `envProperties.defaultServe.distribution` (object)
    Describes a distribution rule

  - `envProperties.defaultServe.distribution.bucketBy` (string, required)
    The attribute to use when distributing targets across buckets

  - `envProperties.defaultServe.distribution.variations` (array, required)
    A list of variations and the weight that should be given to each

  - `envProperties.defaultServe.distribution.variations.variation` (string, required)
    The variation identifier
    Example: "off-variation"

  - `envProperties.defaultServe.distribution.variations.weight` (integer, required)
    The weight to be given to the variation in percent
    Example: 50

  - `envProperties.defaultServe.variation` (string)

  - `envProperties.environment` (string, required)
    The environment identifier

  - `envProperties.jiraEnabled` (boolean)
    Indicates whether jira functionality is enabled for the given account, project, org, and environment

  - `envProperties.jiraIssues` (array)
    An array of Jira Issues linked to this Feature. Returns empty if none exist

  - `envProperties.jiraIssues.issueKey` (string, required)
    The Jira Issue key
    Example: "FFM-7777"

  - `envProperties.jiraIssues.issueURL` (string, required)
    The jira issue URL
    Example: "https://harness-dev1.atlassian.net"

  - `envProperties.modifiedAt` (integer)
    The last time the flag was modified in this environment

  - `envProperties.offVariation` (string, required)
    The variation to serve for this flag in this environment when the flag is off

  - `envProperties.pipelineConfigured` (boolean, required)

  - `envProperties.pipelineDetails` (object)
    A pipeline configured to update a feature

  - `envProperties.pipelineDetails.createdAt` (integer)
    creation date in milliseconds

  - `envProperties.pipelineDetails.description` (string)
    The description of the pipeline

  - `envProperties.pipelineDetails.identifier` (string, required)
    The identifier of the pipeline

  - `envProperties.pipelineDetails.lastUpdatedAt` (integer)
    last updated date in milliseconds

  - `envProperties.pipelineDetails.name` (string, required)
    The name of the pipeline

  - `envProperties.pipelineErrorReason` (string)

  - `envProperties.pipelineErrorState` (boolean)

  - `envProperties.rules` (array)
    A list of rules to use when evaluating this flag in this environment

  - `envProperties.rules.clauses` (array, required)
    A list of clauses to use in the rule

  - `envProperties.rules.clauses.attribute` (string, required)
    The attribute to use in the clause.  This can be any target attribute
    Example: "identifier"

  - `envProperties.rules.clauses.id` (string)
    The unique ID for the clause
    Example: 32434243

  - `envProperties.rules.clauses.negate` (boolean, required)
    Is the operation negated?

  - `envProperties.rules.clauses.op` (string, required)
    The type of operation such as equals, starts_with, contains
    Example: "starts_with"

  - `envProperties.rules.clauses.values` (array, required)
    The values that are compared against the operator

  - `envProperties.rules.priority` (integer, required)
    The rules priority relative to other rules.  The rules are evaluated in order with 1 being the highest
    Example: 1

  - `envProperties.rules.ruleId` (string)
    The unique identifier for this rule

  - `envProperties.rules.serve` (object, required)
    Describe the distribution rule and the variation that should be served to the target

  - `envProperties.state` (string, required)
    The state of a flag either off or on
    Enum: "on", "off"

  - `envProperties.variationMap` (array)
    A list of the variations that will be served to specific targets or target groups in an environment.

  - `envProperties.variationMap.targetSegments` (array)
    A list of target groups (segments)

  - `envProperties.variationMap.targets` (array)
    A list of target mappings

  - `envProperties.variationMap.targets.identifier` (string, required)
    The identifier for the target

  - `envProperties.variationMap.targets.name` (string, required)
    The name of the target

  - `envProperties.variationMap.variation` (string, required)
    The variation identifier
    Example: "off-variation"

  - `envProperties.version` (integer)
    The version of the flag.  This is incremented each time it is changed

  - `evaluation` (string)
    The value that the flag will return for the current user
    Example: true

  - `evaluationIdentifier` (string)
    The identifier for the returned evaluation
    Example: "on-variation"

  - `identifier` (string, required)
    The Feature Flag identifier
    Example: "bool-flag"

  - `kind` (string, required)
    The type of Feature flag
    Enum: "boolean", "int", "string", "json"

  - `modifiedAt` (integer)
    The date the flag was last modified in milliseconds

  - `name` (string, required)
    The name of the Feature Flag
    Example: "My Boolean Flag"

  - `owner` (array)
    The user who created the flag
    Example: "johndoe"

  - `permanent` (boolean)
    Indicates if this is a permanent flag, or one that should expire
    Example: true

  - `prerequisites` (array)

  - `prerequisites.feature` (string, required)
    The feature identifier that is the prerequisite

  - `prerequisites.variations` (array, required)
    A list of variations that must be met

  - `project` (string, required)
    The project this Feature belongs to
    Example: "test-project"

  - `results` (array)
    The results shows which variations have been evaluated, and how many times each of these have been evaluated.

  - `results.count` (integer, required)
    The number of times this variation has been returned in a evaluation

  - `results.variationIdentifier` (string, required)
    The unique variation identifier
    Example: "defaultOnVariation"

  - `results.variationName` (string, required)
    The user friendly variation name
    Example: "Default On Variation"

  - `services` (array)
    A list of services linked to this Feature Flag

  - `services.identifier` (string, required)
    The identifier of the service

  - `services.name` (string, required)
    The name of the service

  - `stale` (boolean)
    Whether the flag is stale or not

  - `staleReason` (string)
    The reason that the flag was marked as stale
    Example: "matched-criteria"

  - `tags` (array)
    A list of tags for this Feature Flag

  - `tags.identifier` (string, required)
    The identifier of the tag
    Example: "feature-flag-tag-1"

  - `tags.name` (string, required)
    The name of the tag
    Example: "feature-flag-tag-1"

  - `variations` (array, required)
    The variations that can be returned for this flag

  - `variations.description` (string)
    A description of the variation

  - `variations.identifier` (string, required)
    The unique identifier for the variation
    Example: "off-variation"

  - `variations.name` (string)
    The user friendly name of the variation
    Example: "Off VAriation"

  - `variations.value` (string, required)
    The variation value to serve such as true or false for a boolean flag
    Example: "true"

## Response 401 fields (application/json):

  - `code` (string, required)
    The http error code
    Example: 404

  - `details` (object)
    Additional details about the error

  - `message` (string, required)
    The reason the request failed
    Example: "Error retrieving projects, organization 'default_org' does not exist"


