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.

187 lines (186 loc) 7.79 kB
export interface SubmitFeatureFlags { /** * 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 '_'. */ properties?: unknown; /** * 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. */ flags?: { /** * 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; }; }; }[]; }[]; /** * 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. */ providerMetadata?: { /** An optional name of the source of the feature flags. */ product?: string; }; }