interface SubmitFeatureFlags {
    flags?: {
        details: {
            environment: {
                name: string;
                type?: string;
            };
            lastUpdated: string;
            status: {
                defaultValue?: string;
                enabled: boolean;
                rollout?: {
                    percentage?: number;
                    rules?: number;
                    text?: string;
                };
            };
            url: string;
        }[];
        displayName?: string;
        id: string;
        issueKeys: string[];
        key: string;
        schemaVersion?: string;
        summary: {
            lastUpdated: string;
            status: {
                defaultValue?: string;
                enabled: boolean;
                rollout?: {
                    percentage?: number;
                    rules?: number;
                    text?: string;
                };
            };
            url?: string;
        };
        updateSequenceId: number;
    }[];
    properties?: {};
    providerMetadata?: {
        product?: string;
    };
}

Properties

flags?: {
    details: {
        environment: {
            name: string;
            type?: string;
        };
        lastUpdated: string;
        status: {
            defaultValue?: string;
            enabled: boolean;
            rollout?: {
                percentage?: number;
                rules?: number;
                text?: string;
            };
        };
        url: string;
    }[];
    displayName?: string;
    id: string;
    issueKeys: string[];
    key: string;
    schemaVersion?: string;
    summary: {
        lastUpdated: string;
        status: {
            defaultValue?: string;
            enabled: boolean;
            rollout?: {
                percentage?: number;
                rules?: number;
                text?: string;
            };
        };
        url?: string;
    };
    updateSequenceId: number;
}[]

A list of Feature Flags to submit to Jira.

Each Feature Flag may be associated with 1 or more Jira issue keys, and will be associated with any properties included in this request.

Type declaration

  • details: {
        environment: {
            name: string;
            type?: string;
        };
        lastUpdated: string;
        status: {
            defaultValue?: string;
            enabled: boolean;
            rollout?: {
                percentage?: number;
                rules?: number;
                text?: string;
            };
        };
        url: string;
    }[]

    Detail information for this Feature Flag.

    This may be information for each environment the Feature Flag is defined in or a selection of environments made by the user, as appropriate.

  • Optional displayName?: string

    The human-readable name for the Feature Flag. Will be shown in the UI.

    If not provided, will use the ID for display.

  • id: string

    The identifier for the Feature Flag. Must be unique for a given Provider.

  • issueKeys: string[]

    The Jira issue keys to associate the Feature Flag information with.

  • key: string

    The identifier that users would use to reference the Feature Flag in their source code etc.

    Will be made available via the UI for users to copy into their source code etc.

  • Optional schemaVersion?: string

    The FeatureFlagData schema version used for this flag data.

    Placeholder to support potential schema changes in the future.

  • summary: {
        lastUpdated: string;
        status: {
            defaultValue?: string;
            enabled: boolean;
            rollout?: {
                percentage?: number;
                rules?: number;
                text?: string;
            };
        };
        url?: string;
    }

    Summary information for a single Feature Flag.

    Providers may elect to provide information from a specific environment, or they may choose to 'roll up' information from across multiple environments - whatever makes most sense in the Provider system.

    This is the summary information that will be presented to the user on e.g. the Jira issue screen.

    • lastUpdated: string

      The last-updated timestamp to present to the user as a summary of the state of the Feature Flag.

      Providers may choose to supply the last-updated timestamp from a specific environment, or the 'most recent' last-updated timestamp across all environments - whatever makes sense in the Provider system.

      Expected format is an RFC3339 formatted string.

    • status: {
          defaultValue?: string;
          enabled: boolean;
          rollout?: {
              percentage?: number;
              rules?: number;
              text?: string;
          };
      }

      Status information about a single Feature Flag.

      • Optional defaultValue?: string

        The value served by this Feature Flag when it is disabled. This could be the actual value or an alias, as appropriate.

        This value may be presented to the user in the UI.

      • enabled: boolean

        Whether the Feature Flag is enabled in the given environment (or in summary).

        Enabled may imply a partial rollout, which can be described using the 'rollout' field.

      • Optional rollout?: {
            percentage?: number;
            rules?: number;
            text?: string;
        }

        Information about the rollout of a Feature Flag in an environment (or in summary).

        Only one of 'percentage', 'text', or 'rules' should be provided. They will be used in that order if multiple are present.

        This information may be presented to the user in the UI.

        • Optional percentage?: number

          If the Feature Flag rollout is a simple percentage rollout

        • Optional rules?: number

          A count of the number of rules active for this Feature Flag in an environment.

        • Optional text?: string

          A text status to display that represents the rollout. This could be e.g. a named cohort.

    • Optional url?: string

      A URL users can use to link to a summary view of this flag, if appropriate.

      This could be any location that makes sense in the Provider system (e.g. if the summary information comes from a specific environment, it might make sense to link the user to the flag in that environment).

  • updateSequenceId: number

    An ID used to apply an ordering to updates for this Feature Flag in the case of out-of-order receipt of update requests.

    This can be any monotonically increasing number. A suggested implementation is to use epoch millis from the Provider system, but other alternatives are valid (e.g. a Provider could store a counter against each Feature Flag and increment that on each update to Jira).

    Updates for a Feature Flag that are received with an updateSqeuenceId lower than what is currently stored will be ignored.

properties?: {}

Properties assigned to Feature Flag data that can then be used for delete / query operations.

Examples might be an account or user ID that can then be used to clean up data if an account is removed from the Provider system.

Note that these properties will never be returned with Feature Flag data. They are not intended for use as metadata to associate with a Feature Flag. Internally they are stored as a hash so that personal information etc. is never stored within Jira.

Properties are supplied as key/value pairs, a maximum of 5 properties can be supplied, and keys must not contain ':' or start with '_'.

Type declaration

    providerMetadata?: {
        product?: string;
    }

    Information about the provider. This is useful for auditing, logging, debugging, and other internal uses. It is not considered private information. Hence, it may not contain personally identifiable information.

    Type declaration

    • Optional product?: string

      An optional name of the source of the feature flags.