UNPKG

@esm-js/jira.js

Version:

A comprehensive JavaScript/TypeScript library designed for both Node.JS and browsers, facilitating seamless interaction with the Atlassian Jira API.

158 lines (157 loc) 6.3 kB
/** Data related to a single Feature Flag, across any Environment that the flag is present in.* */ export interface GetFeatureFlagById { /** * The FeatureFlagData schema version used for this flag data. * * Placeholder to support potential schema changes in the future. */ schemaVersion?: '1.0' | string; /** The identifier for the Feature Flag. Must be unique for a given Provider. */ id: 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. */ key: string; /** * 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. */ updateSequenceId: number; /** * The human-readable name for the Feature Flag. Will be shown in the UI. * * If not provided, will use the ID for display. */ displayName?: string; /** The Jira issue keys to associate the Feature Flag information with. */ issueKeys: 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. */ summary: { /** * 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). */ url?: string; /** Status information about a single Feature Flag. */ status: { /** * 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. */ enabled: boolean; /** * 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. */ defaultValue?: 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. */ rollout?: { /** If the Feature Flag rollout is a simple percentage rollout */ percentage?: number; /** A text status to display that represents the rollout. This could be e.g. a named cohort. */ text?: string; /** A count of the number of rules active for this Feature Flag in an environment. */ rules?: number; }; }; /** * 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. */ lastUpdated: 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. */ details: { /** A URL users can use to link to this Feature Flag, in this environment. */ url: string; /** * The last-updated timestamp for this Feature Flag, in this environment. * * Expected format is an RFC3339 formatted string. */ lastUpdated: string; /** * Details of a single environment. * * At the simplest this must be the name of the environment. * * Ideally there is also type information which may be used to group data from multiple Feature Flags and other * entities for visualisation in the UI. */ environment: { /** The name of the environment. */ name: string; /** The 'type' or 'category' of environment this environment belongs to. */ type?: 'development' | 'testing' | 'staging' | 'production' | string; }; /** Status information about a single Feature Flag. */ status: { /** * 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. */ enabled: boolean; /** * 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. */ defaultValue?: 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. */ rollout?: { /** If the Feature Flag rollout is a simple percentage rollout */ percentage?: number; /** A text status to display that represents the rollout. This could be e.g. a named cohort. */ text?: string; /** A count of the number of rules active for this Feature Flag in an environment. */ rules?: number; }; }; }[]; }