# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Adding a new metric? We have docs for that!
# https://firefox-source-docs.mozilla.org/toolkit/components/glean/user/new_definitions_file.html

---
$schema: moz://mozilla.org/schemas/glean/metrics/2-0-0
$tags:
  - "Firefox :: Nimbus Desktop Client"

# The `nimbus_targeting_environment` category contains metrics that relate to
# the targeting context, but are not present in it verbatim.
#
# For example, pref values, which are accessed by the `|preferenceValue` filter.
#
# Also included are the metrics used to debug targeting context evaluation:
#
# * `targeting_context_value`
# * `pref_type_errors`
# * `attr_eval_errors`
nimbus_targeting_environment:
  targeting_context_value:
    bugs: &targeting_context_bugs
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1928107
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1937207
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1898394
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1949813
    data_reviews: &targeting_context_data_reviews
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1928107
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1937207
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1898394
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1949813
    notification_emails: &targeting_context_notification_emails
      - beth@mozilla.com
      - project-nimbus@mozilla.com
    expires: &targeting_context_expiry never
    send_in_pings: &targeting_context_pings
      - nimbus-targeting-context
    disabled: true
    description: >
      The entirety of the Nimbus targeting context as a stringified JSON object.

      This is disabled by default and only intended to be enabled via server knobs to debug
      recording failures in individual nimbus_targeting_context metric values.
    data_sensitivity:
      - stored_content
    type: text

  pref_type_errors:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: >
      When a pref in `nimbus_targeting_environment.pref_values` cannot
      be recorded because the type in the metric does not match the type of the
      pref, it is recorded in this metric.
    data_sensitivity:
      - technical
    type: labeled_counter
    labels:
      - "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons"
      - "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features"
      - "browser.newtabpage.activity-stream.feeds.section.highlights"
      - "browser.newtabpage.activity-stream.feeds.section.topstories"
      - "browser.newtabpage.activity-stream.feeds.topsites"
      - "browser.newtabpage.activity-stream.showSearch"
      - "browser.newtabpage.activity-stream.showSponsoredTopSites"
      - "browser.newtabpage.enabled"
      - "browser.shopping.experience2023.autoActivateCount"
      - "browser.shopping.experience2023.optedIn"
      - "browser.toolbars.bookmarks.visibility"
      - "browser.urlbar.quicksuggest.dataCollection.enabled"
      - "browser.urlbar.showSearchSuggestionsFirst"
      - "browser.urlbar.suggest.quicksuggest.sponsored"
      - "media.videocontrols.picture-in-picture.enabled"
      - "media.videocontrols.picture-in-picture.video-toggle.enabled"
      - "media.videocontrols.picture-in-picture.video-toggle.has-used"
      - "messaging-system-action.testday"
      - "network.trr.mode"
      - "nimbus.qa.pref-1"
      - "nimbus.qa.pref-2"
      - "security.sandbox.content.level"
      - "trailhead.firstrun.didSeeAboutWelcome"

  attr_eval_errors:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: >
      When a metric in `nimbus_targeting_context` cannot be recorded because an
      exception was thrown during evaluation of the targeting context attribute
      the name of the attribute is recorded in this metric.
    type: labeled_counter
    labels:
      - "activeExperiments"
      - "activeRollouts"
      - "addressesSaved"
      - "archBits"
      - "attributionData"
      - "browserSettings"
      - "currentDate"
      - "defaultPDFHandler"
      - "distributionId"
      - "doesAppNeedPin"
      - "enrollmentsMap"
      - "firefoxVersion"
      - "hasActiveEnterprisePolicies"
      - "homePageSettings"
      - "isDefaultBrowser"
      - "isDefaultHandler"
      - "isFirstStartup"
      - "isFxAEnabled"
      - "isFxASignedIn"
      - "isMSIX"
      - "locale"
      - "memoryMB"
      - "os"
      - "primaryResolution"
      - "profileAgeCreated"
      - "region"
      - "totalBookmarksCount"
      - "userMonthlyActivity"
      - "userPrefersReducedMotion"
      - "usesFirefoxSync"
      - "version"

  user_set_prefs:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: An array of preferences that are user set.
    data_sensitivity:
      - interaction
    type: object
    structure:
      type: array
      items:
        type: string

  pref_values:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Values of specific preferences we want to target on.
    data_sensitivity:
      - technical
      - interaction
    type: object
    structure:
      type: object
      properties:
        browser__newtabpage__activity_stream__asrouter__userprefs__cfr__addons:
          type: boolean
        browser__newtabpage__activity_stream__asrouter__userprefs__cfr__features:
          type: boolean
        browser__newtabpage__activity_stream__feeds__section__highlights:
          type: boolean
        browser__newtabpage__activity_stream__feeds__section__topstories:
          type: boolean
        browser__newtabpage__activity_stream__feeds__topsites:
          type: boolean
        browser__newtabpage__activity_stream__showSearch:
          type: boolean
        browser__newtabpage__activity_stream__showSponsoredTopSites:
          type: boolean
        browser__newtabpage__enabled:
          type: boolean
        browser__shopping__experience2023__autoActivateCount:
          type: number
        browser__shopping__experience2023__optedIn:
          type: number
        browser__toolbars__bookmarks__visibility:
          type: string
        browser__urlbar__quicksuggest__dataCollection__enabled:
          type: boolean
        browser__urlbar__showSearchSuggestionsFirst:
          type: boolean
        browser__urlbar__suggest__quicksuggest__sponsored:
          type: boolean
        media__videocontrols__picture_in_picture__enabled:
          type: boolean
        media__videocontrols__picture_in_picture__video_toggle__enabled:
          type: boolean
        media__videocontrols__picture_in_picture__video_toggle__has_used:
          type: boolean
        messaging_system_action__testday:
          type: string
        network__trr__mode:
          type: number
        security__sandbox__content__level:
          type: number
        trailhead__firstrun__didSeeAboutWelcome:
          type: boolean

        # Prefs used by Nimbus for QA.
        nimbus__qa__pref_1:
          type: string
        nimbus__qa__pref_2:
          type: string

# The nimbus_targeting_context category contains metrics that directly
# correspond to individual fields in the targeting context.
#
# The fields may be transformed in some way (e.g., by converting dates to ISO
# 8601 strings) so that they can be recorded by Glean.
nimbus_targeting_context:
  active_experiments:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: The slugs of the actively enrolled experiments
    data_sensitivity:
      - interaction
    type: object
    structure:
      type: array
      items:
        type: string

  active_rollouts:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: The slugs of the actively enrolled rollouts
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    data_sensitivity:
      - interaction
    type: object
    structure:
      type: array
      items:
        type: string

  addresses_saved:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: The number of addresses the user has saved.
    data_sensitivity:
      - interaction
    type: quantity
    unit: addresses

  arch_bits:
    no_lint:
      - UNIT_IN_NAME # metric name must match the targeting context attribute
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: The architecture of the user's CPU (32-bit or 64-bit)
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    data_sensitivity:
      - technical
    type: quantity
    unit: bits

  attribution_data:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: >
      Attribution data.
    data_sensitivity:
      - interaction
    type: object
    structure:
      type: object
      properties:
        medium:
          type: string
        source:
          type: string
        ua:
          type: string

  browser_settings:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Information about the browser's update channel.
    data_sensitivity:
      - technical
    type: object
    structure:
      type: object
      properties:
        update:
          type: object
          properties:
            channel:
              type: string

  current_date:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: >
      The current date, as an ISO-8601 string.
    data_sensitivity:
      - technical
    type: string

  default_pdf_handler:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: >
      Information about the system's default PDF handler.
    data_sensitivity:
      - interaction
    type: object
    structure:
      type: object
      properties:
        # Is the system default PDF handler a known browser?
        knownBrowser:
          type: boolean
        # Is there a system default PDF handler registered?
        registered:
          type: boolean

  distribution_id:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: >
      The installation's distribution ID.
    data_sensitivity:
      - technical
    type: string

  does_app_need_pin:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Does the app need pinning (i.e., is the app not pinned).
    data_sensitivity:
      - interaction
    type: boolean

  enrollments_map:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: >
      Information about historic enrollments, including the branches enrolled.
    data_sensitivity:
      - technical
    type: object
    structure:
      type: array
      items:
        type: object
        properties:
          experimentSlug:
            type: string
          branchSlug:
            type: string

  firefox_version:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: The Firefox major version number.
    data_sensitivity:
      - technical
    type: quantity
    unit: major version

  has_active_enterprise_policies:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Whether the profile has any active enterprise policies.
    data_sensitivity:
      - technical
    type: boolean

  home_page_settings:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Information about the user's home page settings.
    data_sensitivity:
      - interaction
    type: object
    structure:
      type: object
      properties:
        # Is the user's home page a custom URL?
        isCustomUrl:
          type: boolean
        # Is the user's home page the default?
        isDefault:
          type: boolean
        # Is the user's home page locked?
        isLocked:
          type: boolean
        # Is the user's home page a web extension URL?
        isWebExt:
          type: boolean

  is_default_browser:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Whether the current browser is the default browser.
    data_sensitivity:
      - interaction
    type: boolean

  is_default_handler:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: >
      Whether the current browser is registered as the default handler for various
      filetypes.
    data_sensitivity:
      - interaction
    type: object
    structure:
      type: object
      properties:
        html:
          type: boolean
        pdf:
          type: boolean

  is_first_startup:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: >
      Is this the first startup of the browser on this install? (NB: Must have been
      explicitly launched with the --first-startup commandline flag.)
    data_sensitivity:
      - technical
    type: boolean

  is_fx_a_enabled:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Whether Firefox Accounts and Sync are enabled.
    data_sensitivity:
      - interaction
    type: boolean

  is_fx_a_signed_in:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Whether the user is logged in to Firefox Accounts.
    data_sensitivity:
      - interaction
    type: boolean

  is_msix:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Is this copy of Firefox installed from an MSIX installer?
    data_sensitivity:
      - technical
    type: boolean

  locale:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: What is the active locale of the browser?
    data_sensitivity:
      - technical
    type: string

  memory_mb:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: The amount of system memory, in mebibytes (MiB).
    data_sensitivity:
      - technical
    type: quantity
    unit: MiB

  os:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Information about the operating system.
    data_sensitivity:
      - technical
    type: object
    structure:
      type: object
      properties:
        isLinux:
          type: boolean
        isMac:
          type: boolean
        isWindows:
          type: boolean
        windowsBuildNumber:
          type: number
        windowsVersion:
          type: number

  primary_resolution:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: The resolution of the primary display.
    data_sensitivity:
      - technical
    type: object
    structure:
      type: object
      properties:
        height:
          type: number
        width:
          type: number

  profile_age_created:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: The UNIX timestamp of when the profile was created.
    data_sensitivity:
      - technical
    type: quantity
    unit: seconds since UNIX epoch

  region:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: What region is the browser located in?
    data_sensitivity:
      - technical
    type: string

  total_bookmarks_count:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: The number of bookmarks.
    data_sensitivity:
      - technical
    type: quantity
    unit: bookmarks

  user_monthly_activity:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Information about the user's activity over the last 28 days.
    data_sensitivity:
      - interaction
    type: object
    structure:
      type: array
      items:
        type: object
        properties:
          numberOfURLsVisited:
            type: number
          date:
            type: string

  user_prefers_reduced_motion:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Whether the user prefers reduced motion.
    data_sensitivity:
      - interaction
    type: boolean

  uses_firefox_sync:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: Whether the user uses Firefox Sync.
    data_sensitivity:
      - interaction
    type: boolean

  version:
    bugs: *targeting_context_bugs
    data_reviews: *targeting_context_data_reviews
    expires: *targeting_context_expiry
    notification_emails: *targeting_context_notification_emails
    send_in_pings: *targeting_context_pings
    description: The full Firefox version string.
    data_sensitivity:
      - technical
    type: string

nimbus_events:
  enrollment:
    type: event
    description: >
      Recorded when a user has met the conditions and is first bucketed into an
      experiment (i.e. targeting matched and they were randomized into a bucket
      and branch of the experiment). Expected a maximum of once per experiment
      per user.
    extra_keys:
      experiment:
        type: string
        description: The slug/unique identifier of the experiment
      branch:
        type: string
        description: The branch slug/identifier that was randomly chosen
      experiment_type:
        type: string
        description: Indicates whether this is an experiment or rollout
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1773563
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1773563
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
    data_sensitivity:
      - technical
    notification_emails:
      - tlong@mozilla.com
      - nimbus-team@mozilla.com
    expires: never
    send_in_pings:
      - background-update
      - events
  enroll_failed:
    type: event
    description: >
      Recorded when an enrollment fails, including the reason for the failure.
    extra_keys:
      experiment:
        type: string
        description: The slug/unique identifier of the experiment
      reason:
        type: string
        description: The reason for the enrollment failure
      branch:
        type: string
        description: If reason == "invalid-branch", this is the invalid branch.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1773563
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1773563
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
    data_sensitivity:
      - technical
    notification_emails:
      - tlong@mozilla.com
      - nimbus-team@mozilla.com
    expires: never
    send_in_pings:
      - background-update
      - events
  unenrollment:
    type: event
    description: >
      Recorded when either telemetry is disabled, or the experiment has run
      for its designed duration (i.e. it is no longer present in the Nimbus
      Remote Settings collection)
    extra_keys:
      experiment:
        type: string
        description: The slug/unique identifier of the experiment
      branch:
        type: string
        description: The branch slug/identifier that was randomly chosen
      reason:
        type: string
        description: The reason for the unenrollment
      changed_pref:
        type: string
        description: >
          If reason == "changed-pref", then this contains the name of the pref
          that changed that caused the unenrollment.
      conflicting_slug:
        type: string
        description: >
          If reason == "prefFlips-conflict", the slug of the conflicting
          experiment that caused the unenrollment.
      pref_name:
        type: string
        description: >
          If reason == "prefFlips-failed", the name of the pref that failed to set.
      pref_type:
        type: string
        description: >
          If reason == "prefFlips-failed", The type of the existing pref value
          (one of "bool", "string", "int", or "invalid").
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1773563
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1843126
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1896718
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1907649
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1773563
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1843126
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1896718
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1907649
    data_sensitivity:
      - technical
    notification_emails:
      - tlong@mozilla.com
      - nimbus-team@mozilla.com
    expires: never
    send_in_pings:
      - background-update
      - events
  unenroll_failed:
    type: event
    description: >
      Recorded when an unenrollment fails, including the reason for the failure.
    extra_keys:
      experiment:
        type: string
        description: The slug/unique identifier of the experiment
      reason:
        type: string
        description: The reason for the unenrollment failure
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1773563
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1773563
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
    data_sensitivity:
      - technical
    notification_emails:
      - tlong@mozilla.com
      - nimbus-team@mozilla.com
    expires: never
    send_in_pings:
      - background-update
      - events
  exposure:
    type: event
    description: >
      Recorded when a user actually observes an experimental treatment, or
      would have observed an experimental treatment if they had been in a
      branch that would have shown one.
    extra_keys:
      experiment:
        type: string
        description: The slug/unique identifier of the experiment
      branch:
        type: string
        description: The branch slug/identifier that was randomly chosen
      feature_id:
        type: string
        description: A unique identifier for the feature that was exposed
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1773563
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1773563
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
    data_sensitivity:
      - technical
    notification_emails:
      - tlong@mozilla.com
      - nimbus-team@mozilla.com
    expires: never
    send_in_pings:
      - background-update
      - events
  validation_failed:
    type: event
    description: >
      This records when validation of a recipe fails.
    extra_keys:
      experiment:
        type: string
        description: The slug/unique identifier of the experiment
      reason:
        type: string
        description: >
          Why validation failed (one of "invalid-recipe", "invalid-branch",
          "invalid-reason", "missing-locale", or "missing-l10n-entry").
      branch:
        type: string
        description: >
          If reason == invalid-branch, the branch that failed validation.
      feature:
        type: string
        description: If reason == invalid-feature, the invalid feature ID.
      locale:
        type: string
        description: >
          If reason == missing-locale, the locale that was missing from the
          localization table.
          If reason == missing-l10n-entry, the locale that was missing the
          localization entries.
      l10n_ids:
        type: string
        description: >
          If reason == missing-l10n-entry, a comma-sparated list of missing
          localization entries.

    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1762652
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1821092
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1762652
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1781953
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1821092
    data_sensitivity:
      - technical
    notification_emails:
      - beth@mozilla.com
    expires: never
    send_in_pings:
      - background-update
      - events

  is_ready:
    type: event
    description: >
      An event sent when Nimbus is ready — sent upon completion of each update of the recipes.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1875510
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1875510
    data_sensitivity:
      - technical
    notification_emails:
      - chumphreys@mozilla.com
      - project-nimbus@mozilla.com
    expires: 180

  enrollment_status:
    type: event
    description: >
      Recorded for each enrollment status each time the SDK completes application of pending experiments.
    extra_keys:
      slug:
        type: string
        description: The slug/unique identifier of the experiment
      status:
        type: string
        description: The status of this enrollment
      reason:
        type: string
        description: The reason the client is in the noted status
      branch:
        type: string
        description: The branch slug/identifier that was randomly chosen (if the client is enrolled)
      error_string:
        type: string
        description: If the enrollment resulted in an error, the associated error string
      conflict_slug:
        type: string
        description: If the enrollment hit a feature conflict, the slug of the conflicting experiment/rollout
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1817481
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1817481
    data_sensitivity:
      - technical
    notification_emails:
      - chumphreys@mozilla.com
      - project-nimbus@mozilla.com
    expires: never
    disabled: true

  migration:
    type: event
    description: >
      Triggered whenever a Nimbus migration is attempted, whether or not it succeeds.
    extra_keys:
      migration_id:
        type: string
        description: >
          The name of the migration that ran.

      success:
        type: boolean
        description: Whether or not the migration succeeded.

      error_reason:
        type: string
        description: >
          A string describing the error that occurred.

          Reasons include:

          - "unknown": an unknown exception occurred.

      enrollments:
        type: string
        description: >
          An optional string that includes any enrollments triggered by this relation
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1937169
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1937169
    data_sensitivity:
      - technical
    notification_emails:
      - beth@mozilla.com
      - project-nimbus@mozilla.com
    expires: never

normandy:
  expose_nimbus_experiment:
    type: event
    description: >
      This records an event at the moment the user is exposed to an
      experiment treatment. The event is triggered either by the code
      checking that a certain experiment feature is enabled or when that
      feature value is used. This is different from enrollment or
      experiment activation because it registers when a user actually gets
      exposed to the experiment feature.
      This event was generated to correspond to the Legacy Telemetry event
      normandy.expose#nimbus_experiment.
    bugs:
      - https://bugzil.la/1675104
    data_reviews:
      - https://bugzil.la/1675104
    notification_emails:
      - ujet@mozilla.com
    expires: never
    extra_keys:
      value:
        description: >
          The `value` of the event. Mirrors to the Legacy Telemetry
          event's `value` parameter.
          The experiment slug.
        type: string
      branchSlug:
        description: >
          The slug for the branch the user is enrolled in.
        type: string
      featureId:
        description: >
          The type of experiment variant the user was enrolled into.
        type: string
    telemetry_mirror: Normandy_Expose_NimbusExperiment
